February 2011
1 post
1 tag
Мой блог переехал на http://blog.pirx.ru/
Мой блог переехал в мой домен: http://blog.pirx.ru/. Теперь он статически генерируемый, так что я смогу вводить новые вещи или оформление по желанию. В новом блоге будут материалы двух видов: Красивые фотографии (северная природа, искусство) Заметки по разработке ПО и технологиям Пожалуйста, подпишитесь на новую новостную ленту!
Feb 9th
3 notes
January 2011
1 post
3 tags
Jan 6th
December 2010
1 post
1 tag
Dec 25th
November 2010
2 posts
4 tags
Nov 30th
5 tags
Моноид в категории эндофункторов
Монада является моноидом, если заменить декартово произведение множеств композицией функторов (монада является функтором), умножение — функцией join, а единицу — pure. Законы моноида при этом выполняются. Mac Lane S. Categories for the Working Mathematician. — Springer, 1998: A monad T = < T, η, μ > in a category X consists of a functor T: X → X and two natural transformations η:...
Nov 23rd
1 note
September 2010
5 posts
3 tags
Sep 14th
1 note
3 tags
Разбор аргументов командной строки в opster
Попробовал библиотеку @asolovyov для разбора аргументов командной строки в Python, которая называется opster (вот доки, исходники). Это ещё одна библиотека, решающая те же задачи, что и стандартные getopt, optparse и argparse. Впечатления приятные. Кода действительно надо писать меньше. Самая главная идея — отделить код обработки опций от кода функции, которой они нужны как аргументы. То есть...
Sep 11th
5 notes
3 tags
Sep 6th
1 note
3 tags
Популярные лекции Фейнмана по квантовой механике
Рекомендую интересные лекции Фейнмана по квантовой механике, рассчитанные на широкий круг слушателей. В них он популярно объясняет основные понятия квантовой механики (точнее, её развития по состоянию на 1978 г.). Что интересно, он приводит много практических примеров, объясняет повседневные явления, причём делает это намного лучше, чем в сейчас в школах. Сейчас до сих пор в школах рассказывают...
Sep 3rd
1 note
2 tags
“f x = x. I don’t do very much but at least I’m unique.”
– James Chapman (via annayudi)
Sep 1st
6 notes
August 2010
3 posts
2 tags
Правила краткого кода
Есть известные правила программирования в Unix. Мы решили обратить внимание на схожие правила, помогающие создавать краткий программный код: Код должен быть читаемым текстом, но не на естественном языке Абстракции должны браться из спеки, а не из воздуха Плохо абстрагировать пост-фактум повторяющиеся куски Много строк — плохо, но много обозначений — тоже плохо Зло кроется в особых случаях ...
Aug 31st
5 tags
Aug 29th
2 tags
“I admire people who understand complicated programs or whatever. But I’m...”
– Burial
Aug 28th
2 notes
July 2010
2 posts
2 tags
Jul 25th
2 notes
3 tags
Jul 3rd
May 2010
4 posts
2 tags
May 25th
4 tags
Отчёт о DevConf
2010-05-17 в Москве прошла конференция DevConf. Я на ней выступал с докладом Внешние языки DSL на funcparserlib (см. интервью со мной). Я хочу поделиться впечатлениями о потоке Python этой конференции. Я также собрал немного ссылок по конференции, привожу их в конце поста. Мы ехали в Москву из Петербурга в компании с @andreypopp, @hdima и @dimasmz. Приехали вечером в воскресенье, остановились...
May 24th
3 tags
May 21st
5 tags
Интервью со мной перед DevConf
Я выступлю с докладом об использовании внешних языков DSL и моей библиотеке funcparserlib на DevConf в секции Python. Конференция пройдёт в Москве 2010-05-17. Перед конференцией организаторы взяли у меня небольшое интервью. В нём я упоминаю мои текущие проекты, рассказываю о теме предстоящего доклада.
May 11th
April 2010
4 posts
3 tags
Apr 29th
1 note
2 tags
Parallel vs Concurrent
Сейчас многие интересуются языками, поддерживающими несколько взаимодействующих потоков управления (Erlang, Clojure, Go). В них зелёные нити используются, в основном, для организации многозадачности (concurrency). В качестве моделей многозадачности используются CSP или Actor model. То есть программа строится из объектов-акторов, имеющих свою зелёную нить и обменивающихся сообщениями (синхронно или...
Apr 26th
2 tags
Apr 4th
3 tags
Python Future Imports
Импортирование нововведений из модуля будущего __future__ — интересная особенность языка Python. Языковые нововведения, которые появятся только в будущих версиях, уже можно импортировать и использовать. Какие нововведения вы можете использовать в вашей версии интерпретатора? # -*- coding: utf-8 -*- from __future__ import print_function, unicode_literals import sys def future_features(): ...
Apr 2nd
March 2010
1 post
3 tags
Mar 30th
1 note
February 2010
5 posts
3 tags
Интернет-радио в стиле Unix
Приятный интерфейс по HTTP к ресурсам Интернет-радиостанции verdure_station. Можно в стиле Unix получать: Список аудио-потоков Аудио-поток радиовещания Расписание эфира Ссылку на аудио-поток можно получить через промежуточный ресурс со списком доступных потоков в формате INI: $ curl -s http://air.verdure.ru:8881/listen.pls [playlist] NumberOfEntries=1 File1=http://air.verdure.ru:8881/ Сам...
Feb 20th
2 tags
Feb 16th
5 tags
Скорость "Hello World" на разных языках
В Unix приветствуется создание небольших взаимодействующих программ, каждая из которых решает одну задачу. В частности, именно за счёт процессов ОС решаются проблемы параллелизации и многозадачности. Поэтому важно, чтобы программа стартовала быстро и не выполняла того, о чём её не просит программист. Недавно я заинтересовался языком Clojure, который исповедует монолитный подход к параллельности....
Feb 10th
3 tags
Feb 5th
3 tags
Feb 1st
January 2010
4 posts
3 tags
hg-git
hg-git — хорошее расширение Mercurial для работы с репозиториями Git. Оно позволяет делать hg push и hg pull по схемам URL git и git+ssh. При этом остальная работа с локальным репозиторием Mercurial ведётся как обычно. Добавляются только закладки (Mercurial bookmarks) с ветками Git. Расширение можно использовать для доступа к проектам на GitHub без необходимости сползать на git(1). Вообще...
Jan 30th
1 tag
Jan 18th
2 tags
Jan 10th
4 tags
Критика Actor Thinking
Недавно натолкнулся на пост Actor Thinking об использовании акторов в стиле Erlang для «естественной» реализации параллельности. В посте поясняются уже знакомые слова Joe Armstrong об аналогии между акторами и объектами ООП. Мне кажется, в этих рассуждениях в очередной раз допускается ошибка классического объектно-ориентированного подхода, будто почти все задачи естественно решать в стиле...
Jan 10th
December 2009
18 posts
4 tags
Dec 30th
1 tag
“One of my most productive days was throwing away 1000 lines of code.”
– Ken Thompson
Dec 24th
4 tags
iterpipes 0.3
Я выпустил библиотеку iterpipes 0.3 для запуска конвейеров команд в Python с использованием синтаксиса shell. С её помощью может стать удобнее писать многие скрипты на Python, чем на bash. Несколько дней назад я писал об автомонтировании накопителей USB в Linux. В том посте был приведён простой скрипт на shell для определения текущего пользователя: #!/bin/bash uids () { users | tr " " "\n"...
Dec 23rd
4 tags
Dec 22nd
3 tags
Dec 21st
2 tags
Dec 20th
4 tags
Dec 18th
1 tag
1000 баллов на Stack Overflow
Как-то незаметно перевалил за 1000 баллов на Stack Overflow:
Dec 16th
3 tags
Dec 14th
4 tags
Описание библиотеки для конвейеров команд в Python
Многие скриптовые задачи удобнее решать на Python, чем на Bash. Но если в скрипте много конвейеров, то такой скрипт удобнее писать на Bash благодаря удобному и лаконичному конвейерному синтаксису. Этому пора положить предел. Я хочу показать пример использования библиотеки конвейеров команд на Python, которую я пишу и чуть позже выложу. В прошлом посте я разместил вспомогательный скрипт...
Dec 11th
3 tags
Dec 10th
2 notes
4 tags
Автомонтирование через udev
На днях настроил автомонтирование накопителей USB через udev в Arch Linux и Ubuntu. Ниже я буду описывать детали для Arch Linux и udev версии 146. В каждом дистрибутиве немного свои правила /etc/udev/rules.d, а в версиях udev менялись названия утилит и опций. Сначала я расскажу о том, как работает udev, а затем приведу мои файлы конфигов и программки для монтирования накопителей USB. Вкратце...
Dec 9th
4 notes
1 tag
“There are two ways of constructing a software design. One is to make it so...”
– C. A. R. Hoare
Dec 8th
3 tags
Dec 7th
3 tags
Псевдонимы в конфиге Mercurial
В конфиге Mercurial hgrc(5) можно объявлять псевдонимы команд, чтобы не набирать по десять раз сложные опции. Сейчас в моём ~/.hgrc прописаны такие псевдонимы: [alias] qstatus = status --rev qparent:qtip glog = log -G --template '{rev}:{node|short} {tags} [{author|user}] {desc|firstline}\n' slog = log --template '{rev}:{node|short} {date|age}\t{author|person}\t{desc|firstline} {tags}\n' ...
Dec 5th
1 tag
“z → z. This transformation is closed, so something persists, and the observer...”
– W. Ross Ashby, “An Introduction to Cybernetics”
Dec 4th
2 tags
Dec 3rd