Мои проекты

Я часто пишу всякие программы, которые помогают мне решать некоторые задачи.  Пишу обычно от отчаяния, когда не могу найти готовое решение.  Поэтому результаты обычно выкладываю в свободный доступ.  Здесь собрано описание таких проектов.

Активные проекты

То, над чем я работаю или что я поддерживаю по сей день.

ardj

Программный комплекс для организации вещания интерактивного интернет-радио на базе любой UNIX-образной ОС.  Написан на языке Python, для вещание использует Icecast2 и Ezstream (или ices0).  Поддерживает интерактивное управление вещанием, в том числе со стороны слушателей, которые могут голосовать за песни и влиять таким образом на содержимое эфира.

Эту штуку я писал для Тоже мне радио.  Использовали активно, хорошо, но радио загнулось после моего переезда в деервню.  Сейчас использую для небольшого домашнего радио.

Подробности есть на отдельной странице.

Зелёные страницы

Каталог сайтов и страниц на тему сельской жизни, экопоселений, пермакультуры, лесоводства и всего с этим связанного.  По сути это директория, не слишком навороченная.  Есть комментарии от Disqus, есть привязка к координатам (карты пока нет).  PHP, MySQL.

Адрес: dir.umonkey.net.

Файловый хостинг

Несложный собственный файловый хостинг.  В основном нацелен на фотографии, во вторую очередь — видео.  Другие типы файлов поддерживает кое-как, по мере необходимости.  Фотографии умеет масштабировать и кадрировать по заранее определённым правилам.  Есть метки, поиск по дате, заголовки и подписи.  Показывает код для встраивания файлов в HTML и Markdown.

Главная функция этой штуки — приём файлов и генерация уменьшенных версий разного размера, для встраивания в другие сайты.  Примерно как это делает Flickr.  Доступ только для зарегистрированных пользователей.  Фоновая очередь обработки запросов.  PHP, MySQL.

Я использую, например, для хостинга фотографий, которые публикую в нашем семейном блоге и на сайте поселения.  Веб-интерфейс сам по себе для доступа широкой общественности не предназначен.

Ссылки: исходники, пример в действии.

Static Website Editor

Редактор статических сайтов.  Почти все мои информационные (неинтерактивные) сайты статические, я их всегда редактировал в текстовом редакторе (vim), компилировал и выгружал на хостинг с помощью rsync.  Это простой подход, но есть несколько минусов: сложно дать кому-то ещё доступ к наполнению сайта, нет наглядности.

Редактор представляет из себя простой веб-интерфейс, который позволяет редактировать исходники страниц (Markdown), создавать новые по шаблонам (блог, видео, статья), сам всё это коммитит в репозиторий и пересобирает сайт.  Доступ по паролю, поддержка разных репозиториев на разных хостах (одна инсталляция обслуживает несколько сайтов).  Доступ есть только к файлам .md; править внешний вид нужно таки руками в репозитории, файлы загружать — в отдельное файловое хранилище (см выше).  PHP, без базы данных.

Ссылки: исходники.

PHP Framework

Простой каркас для создания сайтов на PHP.  Без претензий и даже без названия.  Умеет читать конфигурационный файл, есть автозагрузчик классов, базовый класс для моделей, курсор для экономичного доступа к ним, маршрутизатор запросов, http range, очередь для фонового выполнения задач, консольный интерфейс.  Главное — скрипты для заворачивания всего приложения в один PHAR архив, удобно выкатывать и переключать версии, в каком-то смысле atomic.

В коробке шаблонизация через Twig, минификаторы JS и CSS.  Никакого композёра, всё включено.

Ссылки: исходники.

Заброшенные проекты

TaskWarrior Indicator

Простой графический интерфейс для органайзера TaskWarrior.  Позволял выполнять простые операции над задачами, искать их по описаниям и показывает время работы над текущей задачей.

Страница проекта

TaskWarrior использует собственный текстовый формат базы данных, который не очень-то удобен для работы, при параллельном вызове часто база слетала.  Я несколько раз терял базу задач.  Написал разработчикам, что можно легко переключить это дело на SQLite, но они категорически отказались, сказав, что текущего формата достаточно.  Пришлось этот проект забросить.  Написал собственный менеджер задач — tasker.

Free Music Hub

Это была база данных по музыкантам, предоставляющим свою музыку под открытой лицензией, или просто музыки, которая легально распространяется безвозмездно.  Не обязательно под свободной лицензией, главное — чтобы можно было легально бесплатно скачать.

Сначала это был сайт на Google App Engine, более-менее универсальный движок чего-то вроде Dmoz, но затем и сама платформа, и подход многоуровневой таксономии перестали быть интересны.  Потом это был статический сайт, который генерировался из базы данных, описанной в формате YAML.  Забросил, т.к. никому больше это не было нужно, а мне стало неинтересно.

Сайт работал по адресу www.freemusichub.net, который я также перестал поддерживать.

Dead Channel

Это был питерский коллектив, занимавшийся организацией концертов и музыкальных вечеринок индустриальной направленности (тяжёлая электронная музыка).

Памятник по адресу www.deadchannel.ru.

Участие в других проектах

  • Fossil SCM (самодостаточная DVCS на C): исправил проблему с вызовом веб-хуков по http.
  • empathy (jabber-клиент на C): исправил проблему с отправкой сообщений отключенным пользователям.
  • freetalk (jabber-клиент на Scheme): добавил функцию автоматического подключения к серверу при обрыве связи.
  • gajim: перевод интерфейса на русский язык.
  • gpodder (подкаст-клиент на Python): множество доработок, включая перевод с Pickle на SQLite.
  • hal: добавил несколько форматов файлов для одной версии iPod.
  • poole: множество доработок, используемых на своих сайтах.
  • xmpppy (jabber-клиент на Python): исправил порядок использования SRV-записей в DNS.
  • BugWarrior: добавил поддержку TeamLab, Megaplan, RedMine, Fossil SCM.

Проекты, не связанные с программированием

  • Ферма, на которую мы с женой переехали в начале 2012 года и где живём с тех пор постоянно.  Об этом у нас есть отдельный блог о жизни в деревне (хотя это не совсем деревня — скорее, место посреди лесов).  На ферме сейчас разрабатывается несколько внутренних проектов:
    • Пасека производительность несколько сотен кг мёда в год.
    • Питомник производительностью несколько тысяч саженцев в год, для превращения ближайших берёзово-ольховых лесов в липовые дубравы.
    • Небольшой туристический комплекс. -