Архив за месяц: Июль 2009

Подарок на 15 июля

Вчера, наконец, почта довезла до Виолатора, а потом и он до меня подарок на мой прошедший день рождения! Это мега-подарок! :) Спасибо, чувак! :)
Фотка второго тома на сайте не соответствует действительности!

Рили симпл

Очень удобный аддон для Фаерфокса, о котором мне поведал simpson: Really Simple Sticky. Например, когда нужно постоянно держать перед глазами небольшой todo-лист. Одно жаль — нет горячей клавиши, чтобы его быстро показать… В остальном — очень рекомендую.

Vim, подстройка

Уже наверное, года четыре постоянно приходится пользоваться Vim для редактирования файлов на серверах. Всегда знал, что настроить его можно, периодически встречал некоторые настройки, но никогда не обременял себя тем, чтобы взяться и отключить-таки этот злосчастный word-wrap или выставить-таки табуляцию нормальную. А сегодня просматривал Хабра-ленту и встретил, кажется, аж три поста, посвященный Vim’у. В общем, руки зачесались. Во-первых, чтобы где-то хранились настройки для редактора, надо создать файл .vimrc в вашей домашней директории, у меня это /home/decoder/.
Открываем его и вбиваем самое главное:

syntax on
set tabstop=4
set shiftwidth=4
set smarttab
set expandtab
set smartindent
set nowrap

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

Тест Джоэла

Как я говорил, читаю Спольски. В первой его книге «Джоэл о программировании» есть тест качества бригады разработчиков ПО. Решил вот опубликовать его результаты для компании, в которой сейчас работаю.

  1. Пользуетесь ли вы системой управления версиями исходного кода?

    Нет. Эта компания — вторая, в которой я работаю php-программистом. По какой-то непонятной мне причине ни в ней, ни в предыдущей не использовались такие системы, что очень печально. Насколько меньше стало бы проблем. Кстати, сам Джоэл советует в этом случае программисту самому начинать использовать CVS и постараться приобщить к этому остальных разработчиков.

  2. Можете ли вы выполнить сборку продукта за один шаг?

    Нет, не могу. Хотя для некоторых проектов существуют скрипты для автоматического разворачивания веб-приложения на production-сервере. Но это только для нескольких новых проектов.

  3. Выполняете ли вы ежедневную компиляцию?

    Ну, нет. К сожалению, не знаю, как работает команда Java-программистов.

  4. Ведете ли вы базу данных ошибок в программе?

    Нет.

  5. Исправляете ли вы ошибки, прежде чем писать новый код?

    Нет. Часто ошибки обнаруживаются уже на этапе «промышленной эксплуатации». И чаще всего исправление ошибок поручается совсем другим людям, которые до того никакого отношения к проекту не имели. Очень печальная ситуация.

  6. Есть ли у вас актуальный график работы?

    Хаха. Да, есть какая-то ерунда, которая забита в календарь в эксчендж-сервере, но актуальной ее точно не назвать. А также нет детализации графика, которой «требует» Джоэл.

  7. Есть ли у вас спецификации?

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

  8. Создали ли вы спокойные условия для работы программистов?

    Этот пункт меня расстраивает больше всех других, наверное. Нет, нет и нет. Рядом с программистами сидят менеджеры, вечно звенят телефоны, кто-то ходит, разговаривает. У половины программистов отвратительные кресла, через час сидения на которых задница становится квадратной. В общем, я бы сказал, что условия отвратительные.

  9. Стараетесь ли вы использовать для работы лучшие из существующих инструментов?

    Допустим, что да. То есть должен сказать, что у нас есть разные программисты. И разные приложения пишутся на разных языках (C#, Java, PHP, Perl) и используют разные базы данных (Oracle, MySQL, PostgreSQL). Правда, не знаю, кто и чем руководствуется при выборе языков, инструментов и технологий.

  10. Привлекаете ли вы к работе тестеров?

    Нет. Тоже момент ужасный. Все тестируют сами программисты. Потом еще может менеджер немного потестить.

  11. Предлагаете ли вы соискателям рабочих мест написать во время собеседования код?

    Ну, когда меня собеседовали, то вторая часть была — выполнение тестовых заданий. Задания были очень простые, вряд ли могли меня как-то оценить. Все, что можно было по ним сказать, что да, я хотя бы книжку «PHP за 24 часа» прочитал. Спольски сам советует проверять немного другое. Но зачтем.

  12. Проводите ли вы проверку «юзабилити» на случайных людях?

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

Итого три балла. Что по этому поводу пишет Джоэл: «В идеале вы должны набрать 12 очков. 11 очков — терпимое количество, а 10 или менее указывают на серьезные проблемы. Фактически большинство софтверных организаций работает, имея лишь два или три очка, и они нуждаются в серьезных улучшениях, потому что такие компании, как Microsoft, постоянно держать 12 баллов.»

А как у вас?

Вечные поиски и моя лень

Для меня просто постоянная проблема — выбрать себе редактор. Есть много просто замечательных, вроде TextMate. Но у него есть существенные минусы:

  1. Он не работает с windows-1251 (а у меня есть проекты, которые все еще в этой кодировке).
  2. У него нет по умолчанию автозавершения (а так как я очень ленивый, то мне это надо).
  3. Он стоит денег (помимо того, что я ленивый, я еще и бедный :)
  4. Он существует только для MacOS. Есть, конечно, E (for Windows) и какие-то аналоги для Linux, но E снова стоит денег. Получается, снова платить? Это (версии для всех платформ) важно потому, что дома у меня MacOS, а на работе Windows. Весьма вероятно, что скоро буду работать и на каких-нибудь никсах.

Я также пробовал Eclipse, но у него обнаружилась своя проблема. На работе есть один проект. К сожалению, использовать системы контроля версий тут не принято. Для проекта используются сервер для разработчиков и production-сервер (как же оно по-русски — все время забываю?). На самом деле пока что и тот, и тот — для разработчиков, production-сервер — это терминал, на котором в действительности приходится тестировать работу приложения. В Эклипсе я долго-долго правил код (будто на сервере для разработчиков), потом скопировал на продакшн. Начинаю тестить на терминале, но получается какая-то раньше, как будто код старый… Смотрю, а он действительно старый. Причем и на продакшене, и на девелоперском. И только в самом Эклипсе он новый. Это ужасно, это какой-то бред. Ведь до того, чтобы проверить файлы не через проект в программе, я дошел совсем не сразу. Короче, ну его к чертям этот Эклипс. Не просто так, судя по всему, я никогда не рвался работать в нем.

В общем, я в очередной раз вернулся к бесплатному Komodo Edit. Который почти всем хорош. Раздражают только мелкие детали. Например, когда пишешь код (вылезает подсказка), понимаешь, что что-то не так написал, и удаляешь несколько символов. Такие IDE как Zend Studio при этом показывают новую подсказку (варианты), а Komodo замолкает до тех пор, пока не дойдешь до момента, где он врубится-таки в ситуацию. Например, наберешь название функции до конца и он покажет какие там аргументы. Но я-то чаще эти подсказки использую, чтобы как раз-таки вспомнить, что там это за функция. Ну да ладно, наверное, придется с этим мирится.

А к чему я это вообще начал-то? По какой-то причине Komodo Edit часто некорректно распознает кодировку файла. Я все про ту же windows-1251. Открываешь файл, и он думает, что это Latin-1 (на Windows) или MacCyrillic (в MacOS). Для того, чтоб его поправить приходится сделать последовательность кликов: Edit -> Current File Settings… -> Encoding: Cyrillic (CP-1251). Кажется, будто быстро. Но я же говорил, что я ленивый. Меня жутко напрягает все это делать каждый раз при открытии файла, а бывает, что последовательно открываешь по пятнадцать файлов подряд в поисках чего-то.

Я начал искать пути ее решения. Сначала поискал расширения и плагины, но ничего такого не нашел. Потом осведомился, нет ли у Komodo каких-то «директив», которые можно прописать прямо в файле, как это можно сделать в Vim для определения настроек табов (отступов) в конкретном файле. Тоже ничего.

Тогда стал думать на тему макросов. Для них можно использовать два языка Python и JavaScript. Пайтоном я интересуюсь и пытаюсь даже изучать постепенно, но пока не готов на нем что-то делать (слишком большие промежутки между «уроками» и требуется много времени, чтоб вспомнить, как там и что).

В общем, стал искать варианты для JavaScript. И хотел было реализовать вариант с «директивами». Для поиска их нет никаких преград — простейшей регуляркой я достаю указанную мной кодировку, но вот что с ней дальше делать — вопрос. Вопрос, на который я так и не нашел никакого ответа. Просмотрел Komodo Javascript API, но и там про кодировку файла ничего не говорится. Поэтому я расстроен. Может, у кого-то есть мысли на эту тему?

В общем, пока что-то конкретное не сделал, решил хоть как-то уменьшить эту цепочку кликов. И сделал макрос, который просто открывает сразу диалог «Current File Settings…». Это просто:

komodo.assertMacroVersion(2);
komodo.doCommand(‘cmd_editPrefsCurrent’);

И повесил его на сочетание клавиш Ctrl + Alt + P.
Этот же пост публикую на Хабре. Может, кто знает ответ там?