Недавно, в попытках разобраться с nlp, мне пришла идея написать простого telegram бота, который будет разговаривать, как дерзкий гопник. То есть:
давать ответ по слову-триггеру, как "хочу", "короче", "нет" и т.д.;
отвечать дерзким вопросом на вопрос;
отвечать нецензурной рифмой;
если ничего не подходит и бот в замешательстве, отвечать злой фразой.
Для имплементации был выбран JavaScript с ES6 и Flow. Возможно, Python подошёл бы лучше, так как под него существует больше стабильных и проверенных библиотек для nlp. Но для JS есть Az.js, которого вполне хватило.
Недавно я познакомился с интересным языком — clojure. Мне сразу понравились ленивые и иммутабельные коллекции, stm, макросы, обилие скобочек и dsl на все случаи жизни.
И я решил попробовать сделать web-приложение, используя только clojure.
Приложение
Было задумано создать простую искалку субтитров, которая:
каждые 5 минут индексирует новые субтитры на addicted, notabenoid и других сервисах;
имеет одностраничный web-интерфейс с поиском без перезагрузки страницы;
показывает в web-интерфейсе количество проиндексированных субтитров и меняет его при появлении новых;
В прошлом году я собрал роборуку, написал для неё «драйвер» для linux, научил держать разные предметы. И как-то забыл про неё. Но вчера мне доставили leap motion и придумалась новая идея — научиться управлять роборукой по средством движений своих рук.
Всегда приятно иметь статистику о состоянии технической части (кода) проекта, этим занимается coviolations.io. Но для его использования нужно какое-то ci-решение. Не каждому захочется поднимать jenkins/travis/etc на своём сервере, а будет проще прибегнуть к использованию облачных сервисов. Мы рассмотрим два наиболее популярных: travis-ci и drone.io.
Как «жертву» будем использовать обычный django проект — сам coviolations. Для проектов на ror/nodejs/flask/etc всё будет почти аналогично. Как результат мы получим пачку статистики и графиков.
После поста про смотрелку сериалов пришло пожелание добавить subliminal для загрузки субтитров. Увидев его зависимости, из которых в репозитории присутствуют только два пакета, и то не подходящих версий. Я понял, что жизнь боль и мне придётся создать пять debian/control, сделать пять changelog'ов и создать 20 тасков в jenkins.
Но зачем тратить на всё это целых два часа, если можно потратить всего несколько дней на автоматизацию этого процесса. В результате появился pytoppa, он:
формирует changelog из истории между изменениями version в setup.py;
Я, как и большинство, смотрю много сериалов. И, чтобы не ждать перевода, смотрю в оригинале с субтитрами. Из-за этого скачивание серии иногда превращается в приключение. Мне захотелось оптимизировать этот процесс. Web-приложение я делать как-то не рискнул, поэтому встречайте series_list. Оно:
После просмотра курса Programming Languages и прочтения Functional JavaScript захотелось повторить все эти крутые штуки в python. Часть вещей получилось сделать красиво и легко, остальное вышло страшным и непригодным для использования.
В больших проектах уже довольно давно привык к плюшкам ci: прогону тестов, отчётам и автоматическому деплою. При разработке небольших проектов этого не хватает. 1 и 3 покрывает travis-ci (ну или drone.io), но вот визуализации результата нет никакой.
Многим уже надоело лазить по куче сайтов и скачивать js библиотеки и плагины. Да и таскать когда-то скачанные, но уже давно протухшие версии не очень круто. Эти проблемы решает bower.
Но с ним тоже многое нужно делать вручную: следить за components каждого проекта, руками дёргать bower install. После pip с requirements.txt это делать даже как-то лень.
Поэтому представляю вам django-bower, который берёт на себя установку и обновление bower пакетов по списку из settings и прозрачную работу с staticfiles.
Сложный асинхронный обработчик в tornado иногда расползается на десятки callback функций, из-за чего становится трудно воспринимать и модифицировать код. Поэтому существует модуль tornado.gen, позволяющий писать обработчик как генератор. Но много yield gen.Task(...) тоже выглядит не очень. Поэтому в порыве бреда я написал упрощающий запись декоратор:
Наверное, каждый, кому когда-нибудь приходилось следить одновременно за большим количеством окошек с логами, подумывал о переносе некоторых из них на экран планшета или телефона.
А, находясь далеко от компьютера, следить за выхлопом недавно запущенного большого и страшного сервиса?
Конечно, можно поставить ssh клиент на телефон, но это не особо удобно.
Поэтому я решил сделать мини-сервис упрощающий «удалённый» просмотр логов.
В unity очень удобные линзы, в ВКонтакте много видео, а flash в новой ubuntu превращает все фильмы в аватар. Поэтому я сделал линзу для поиска видео в ВКонтакте, открывающую их в totem.
Начитавшись в интернете про новые, простые, быстрые и масштабируемые технологии, захотелось их всех попробовать. Вдруг они окажутся лучше уже привычной мне связки postgresql + django + json-rpc.
Идея проекта
Так как никакой идеи не было, но был свободный домен uglyrater.org — пришлось делать рейтинг.
Суть проста: есть список пользователей, которым можно расставить + и -. Новые пользователи в рейтинг добавляются по адресу страницы ВКонтакте.
Недавно мне захотелось поработать с «Яндекс Музыкой» не через браузер. Как выяснилось, у них нет открытого api, и дело оказалось не тривиальным. Да и ничего готового найти не удалось.
Те, кому лень читать, могут сразу перейти к результату — python-yamusic.
Решил тут написать о своей небольшой программке, дабы увеличить её популярность, и так начнём.
debman — фронтенд для apt'а с синтаксисом pacman'а (пакетного менеджера в Arch linux). Сейчас он поддерживает все deb-based дистрибутивы, а так же rpm-based с apt (проверено на ALT linux'е).
Мне было влом гемороиться со скриптами acpi, да и на ноутбуке 2 пользователя, использующих разный набор программ, поэтому я решил написать простой скрипт
В свежеустановленной ubuntu у счастливых^Wпользователей проприетарного драйвера от ati(catalyst), при включенных эффектах, очень долго разворачивается окно. Для исправления нужно поставить «иксы» с патчем nobackflill(отключается инициализация фона). Это легко сделать:
В /etc/apt/sources.list добавить: deb ppa.launchpad.net/launchpad-weyland/xserver-nobackfill/ubuntu karmic main