Anything


22
Oct 11

Virtualization with vagrant @ PyCon Ukraine 2011

I attended PyCon Ukraine 2011 today, and gave a brief talk about usage of VMs in development. Although presentation itself was based on my previous one made for CQG, it was significantly reworked for wide audience.

Let me know if I missed anything.



And here is screencast of demo project deployment with help of Vagrant and Fabric.


10
Jun 11

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

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

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

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

  • Откройте HKLM/Software/Microsoft/Windows NT/CurrentVersion/Console/TrueTypeFont. Вы увидите несколько значений, соответствующим Lucida и Consolas.
  • Создайте новый String Value. Название должно состоять из нолей и быть на один символ длиннее предыдущего подобного названия. Так, в моем случае имя ключа – “000″.
  • Значение ключа – название фонта. Вообще на фонты накладываются некоторые ограничения, подробнее о них вы можете прочесть в MS Knowledge Base.
  • Reboot. Без этого шрифты не подхватятся.

Все. После перезагрузки новый фонт можно настроить в качестве фонта по умолчанию и ваша консоль станет удобнее.

Хорошая альтернатива танцам с бубном вокруг реестра – open-source проект Console2. Как пишут авторы:

Console is a Windows console window enhancement. Console features include: multiple tabs, text editor-like text selection, different background types, alpha and color-key transparency, configurable font, different window styles.

Console2 недавно поднялся до второй версии, и выглядит довольно-таки неплохо, с успехом заменяя стандартные средства.


27
Mar 11

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

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

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

Появление distributed version control systems, таких, как git и mercurial, вкупе с возможностью хостить свои персональные репозитории в облаках позволяет значительно уменьшить эти проблемы. Я воспользовался публичным хостингом на github, однако, если вы не хотите давать доступ к вашим настройкам – есть и другие варианты (например, unfuddle предлагает бесплатный приватный хостинг git и svn репо).

Continue reading →


18
Mar 11

Введение в git

Выложил в публичный доступ мою презентацию “Introduction to git”. В первую очередь она рассчитана на разработчиков (а на кого же еще?), речь идет не только о том, как git использовать, но и о дизайне, предпросылках для создания git, внутренней структуре репо и многом другом.




17
Mar 11

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

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

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

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

Continue reading →


20
Aug 10

Рассказ о марафоне #soft24, часть 1

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

Но сначала – спасибо всем, кто принимал участие. Ребята, с вами было интересно общаться и работать над идеями и кодом, я с удовольствием приму участие и в следующих “забегах”. И, конечно, отдельное большое спасибо организаторам (и в первую очередь Тимофею Евграшину).

Угнать за 80 секунд

Вкратце об идее: участники собираются вместе (в буквальном смысле, удаленная работа отпадает) и создают законченный продукт за ограниченное время. В Украине уже проходило несколько подобных мероприятий, на которых люди создавали фильмы и журналы за 24 часа. Мы же собрались под одной крышей, чтобы создать софт.

Все вышло как нельзя лучше, и в качестве бонуса мы получили массу удовольствия от самого процесса. Но обо всем по порядку.

Continue reading →


22
Apr 10

Pin font и svn-клиенты под Mac OS

Pinfont

На досуге немного поигрался с django + python, вспомнил молодость. Получился своего рода полный цикл разработки веб-приложения, со скетчами, с несколькими итерациями кода, системой контроля версий (svn) и, в финале, выкатка рабочей версии на “production” хостинг.

pins

pinfont text generator v0.1images by garnenka.

Далее о выборе svn-клиента, Mac OS и удобстве пользователя.

Continue reading →


11
Apr 10

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

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

Зачем?

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

Поиск в сети даст достаточно подробностей, здесь же я хочу привести краткую сводку фактов.

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

Continue reading →


16
Mar 10

Умеют ли программисты программировать?

English version of this post here.

Как вы, возможно, знаете, наша компания проводит программу интерншипа в нескольких странах, включая и Украину. В Киеве мы проводим обучение второй год подряд, и весьма довольны результатами, которые мы получили в 2009.

Так вот, время от времени, чтобы держать студентов в форме да и просто с целью получить удовольствие, вместо запланированной лекции мы предлагаем ребятам заняться программированием. Hack hour.

В прошлую пятницу мы предложили написать программу, которая

  • читает текст из stdin
  • разбивает его на слова (слово определяется как непрерывная последовательность [A-Za-z0-9])
  • … и выводит в stdout отсортированный по алфавиту список слов (lowercased), вместе со списком строк, на которых слово встречается

Довольно просто, не так ли? Так как я хотел быть уверен, что знаю, как решать задачу и примерно представляю, с какими трудностями можно столкнуться, перед занятием я запустил студию и набросал решение на чистом C++, без оптимизаций – просто как proof of concept. Заняло 30 минут чистого времени. В общем, мы ожидали, что студенты справятся с задачей примерно за час и у нас еще останется время, чтобы дать им материал лекции.

Как бы не так.

Continue reading →


16
Mar 10

Why can’t programmers.. program?

Русская версия этого поста здесь.

As you may already know, our company is running internship programs for young developers in Ukraine (as well as in Russia and Armenia). This is a second year in a row we do it in Kiev, and we are quite happy with the results we achieved in 2009.

From time to time, to keep students low-fat and for pure entertainment, we replace random lecture with coding exercises. Hack hours.

Last time we decided that it’s time to ask our students to create a small program, that will

  • read text from stdin
  • split it into words (word is defined as a sequence of [A-Za-z0-9] characters)
  • .. and print out A-Z sorted list ow lowercased words along with lines these words were met on

Pretty and simple, huh? Since I want to be sure that this task has no hidden pitfalls and that I can answer common questions that may arise, I also solved this problem in pure C++ style. Took 25 minutes or so. Thus, we expected to see most students do this assignment in a hour, so we can get back to the lecture for the second hour.

Well, life brings surprises.

Continue reading →