суббота, 25 июля 2009 г.

Mercurial для сисадмина

Я уже пол-года как спрыгнул с Subversion и использую Mercurial для разработки, оказывается что эта чудесная система контроля версий может быть использована не только программистами, но и сисадминами. Очень удобно ( и полезно) положить конфиг - файлы в Mercurial. К примеру, мне приходится править конфиг файл для Cruise Control, и хочется иметь возможность отслеживать историю изменений файла. Задача решается просто. Заходим в папку где лежит конфиг файл для Cruise Control

hg init // создаем репозиторий
hg add config.xml // добавляем в репозиторий конфиг файл для Cruise Control
hg ci -m 'initial commit' // коммитим конфиг файл

Теперь наш конфиг файл в репозитории Mercurial

Допустим, я (или другой человек) внес измненения в конфиг файл.

Делаем hg ci -m 'Added e-mail notification for nighty build'

Новая версия файла попадает в репозиторий.

Чтобы посмотреть историю изменений в файле набираеем hg log


Можно трекать изменения в папке /etc

cd /etc
sudo hg init // создаем репозиторий для папки etc
cd X11
sudo hg add xorg.conf // трекаем изменения в файле xorg.conf
sudo hg ci -m 'initial commit'

В этом случае я использую Mercurial как своеобразное расширение функциональности файловой системы которое позволяет трекать историю изменения файлов в папке.

Еще одна причина почему Linux рулит

Я занимался разработкой на Java под Linux два года на моем прошлом месте работы, в октябре 2008 года перешел в другой проект, cменив OS на Windows. Поработав пару месяцев я понял что на Windows мне работается хуже чем на Linux, не потому что Windows плохой а Linux хороший, а потому что я принадлежу к Unix culture, и мне многие вещи быстрее и проще делать в командной строке. Поэтому я поставил себе Ubuntu и вроде бы все хорошо, но free -m
показывает что в системе только 3.2 гигабайта RAM, хотя физически установлено 2 модуля по 2 GB, тоесть 800 MB не доступно.
Оказывается что обычный kernel в 32- разрядном ядре, которое инсталируется при установке Ubuntu, не может адресовать больше чем 3.2 GB, но можно (и нужно) поставить server kernel который скомпилирован таким образом что видит больше чем 3.2 GB памяти. Теперь 32- разрядное ядро Ubuntu видит 4 GB памяти и все в порядке :)

пятница, 17 июля 2009 г.

Практическое применение Ubuntu One в разработке

Ubuntu One это бесплатный online storage service который предоставляет Сanonical. После инсталляции клиента на Убунту у вас появляется папка содержимое которой синхронизируется с сервером. Бесплатно дают 2 GB. Также есть доступ к файлам через web интерфейс. В Википедии написано что Ubuntu One использует Amazone S3. Это очень удобная вещь если вы работаете с разных компьютеров над одним проектом. Мне часто приходится переключаться с ноутбука на workstation и обратно (на обоих стоит Ubuntu), поэтому я храню конфиг файлы для приложений в папке которая синхронизируется с сервером. Например, я работаю над web application которое читает конфиги из папки ${CATALINA_HOME}/data. Есть папка ${HOME}/Cloud_Storage на воркстейшене и ноутбуке которая шарится через Ubuntu One.

На воркстейшене делаю

mv ${CATALINA_HOME}/data ${HOME}/Cloud_Storage
ln -s ${HOME}/Cloud_Storage/data  {CATALINA_HOME}/data

теперь кликаю мышей на меню "сonnect" Ubuntu One, файлы записываются на сервер

на ноутбуке
ln -s ${HOME}/Cloud_Storage/data  ${CATALINA_HOME}/data


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

воскресенье, 5 июля 2009 г.

Билдим Flex используя Maven

Год назад я начал работать над RIA, клиент - flex, сервер - java. Решил использовать maven для билда, java билдилась без проблем, а вот с flex пришлось повозиться. Тогда я нашел единственный maven плагин для flex, Israfil Mojo. С ним были проблемы, потому что плагин не поддерживает все опции для компилятора, поэтому часть опций я вынес в конфиг файл, и указал плагину что нужно использовать конфиг файл. Вторая задача которую нужно было решать - это запаковать flex приложение в war. Задача решилась просто, Israfil Mojo позволяет копировать flex-артефакты из репозитория maven в указанную папку.

Месяц назад случайно нашел еще один maven плагин для flex, mvnflexplugin. Этот плагин мне нравится намного больше, потому что он поддерживает больше опций компилятора и поддерживает rsl, поэтому я перевел мой проект на этот плагин. Mvnflexplugin не копирует flex-артефакты из репозитория в war, но эта задача решается с помощью maven-dependency-plugin.

суббота, 4 июля 2009 г.

Вышел Review Board 1.0

Недавно вышел Review Board 1.0. Это замечательный code review tool, я использую на работе beta версию и очень доволен. Рекомендую всем кто хочет улучшить code review процесс. Review Board намного лучше чем Codestriker о котором я писал раньше.