Virtualization with vagrant

I was recently invited to 2011 Pycon.UA conference to give a talk about speeding up development with help of virtualized dev environments, VagrantUp and Fabric. Slides available on slideshare and below.

Continue to the post ...

Automatically update project version info in sphinx documentation

From time to time I need to get project version information and use it somewhere - in project documentation, in About box or include it in website footer.

I use git for my projects, and find it very convenient to let git to provide version info instead of hardcoding it into the source code. There are several possible ways to ask git for version information, including keyword expansion - and some of them are described in this stackoverflow post. For me, git describe works best, since it doesn’t modify sources on checkout (comparing to keyword expansion) and provides version information in format that could be used in other git commands such as git diff.

Continue to the post ...

Замена фонта консоли Windows на более подходящий

Одна из вещей, которая раздражает в Windows - ограниченность настроек консоли aka cmd.exe. В частности, выбор шрифтов сводится к Consolas, Lucida Console и невнятным “Raster Fonts”. Этот пост о том, как добавить поддержку дополнительных шрифтов в консоли.

Существует большое количество шрифтов, которые более подходят для задач программирования и администрирования. Неплохой список можно найти в этой статье или тут, лично я же предпочитаю использовать Inconsolanta.

Inconsolata

Как оказалось, подключить ваш любимый фонт к консоли можно, хотя это требует некоторых действий с реестром, за подсказки спасибо Scott Hanselman.

Continue to the post ...

Использование github для хранения персональных настроек

Проблема унификации персональных настроек среды знакома каждому, кто работает на нескольких компьютерах. При работе в *nix/linux у каждого довольно быстро появляется свой любимый набор aliases, bash functions, prompts и переменных среды, которые облегчают работу. Не стоит забывать и о настройках других программ, таких, как vim, emacs или git.

По счастью, большая часть настроек хранится на *nix-системах в простых текстовых файлах и может быть легко скопирована на новый сервер. Однако, при росте количества серверов вы неизбежно сталкиваетесь с ограничениями такого подхода. Какую версию считать основной мастер-копией? Что, если в вашем парке несколько операционных систем и настройки разнятся от одной системы к другой? Что делать, наконец, если мастер-копию настроек возможно быстро скачать не на все сервера - скажем, она лежит на вашей основной рабочей машине в офисе компании за файрволлом?

Continue to the post ...

Настройка bash completion для git под Mac OS

В последнее время я часто использую git для разных проектов и хочу поделиться несколькими советами, как сделать работу с ним удобнее.

Одним из преимуществ git являются дешевые бранчи. Поскольку бранч -это просто файл в .git/refs/heads, который содержит id последнего коммита в этом бранче, создание нового бранча выполняется за очень небольшое время. При таких возможностях разумно использовать бранчи, что называется, “на все деньги”, что большинство программистов и делает.

Независимо от выбранной модели использования бранчей, рано или поздно наступает момент, когда можно забыть, в каком бранче вы находитесь в данный момент и закоммитить код не туда. Хотя это некритично и ошибку можно легко исправить, но таких ситуаций по возможности хотелось бы избегать. К счастью, информацию о имени бранча и прочие сведения довольно легко добавить в bash prompt, которая постоянно перед глазами.

Continue to the post ...

Bit counting, обзор методов

Одна из классических задач в программировании (по крайней мере, о способах ее решения упоминает Дональд Кнут в своем классическом труде) - подсчет выставленных в “1” бит в числе.

Почему эта задача важна? Во-первых, она интересна сама по себе - есть несколько способов решения, которые кардинально отличаются производительностью и выбор правильной реализации может значительно ускорить ваш код. Во-вторых, у нее много практических применений -например, в протоколах маршрутизации или поиска. И, в-третьих, она встречается на собеседованиях в крупных компаниях, так что будет не лишним немного освежить свои знания. Поиск в сети даст достаточно подробностей, здесь же я хочу привести краткую сводку фактов.

Методы подсчета можно условно разделить на три области - shifting, algebraic logic и table lookup.

Continue to the post ...