воскресенье, 4 октября 2009 г.

Чак Норрис и Continuos Integration

Что общего может быть у Чака Норриса и Continuos Integration ?
Я тоже думал что ничего общего нет, пока не открыл для себя Hudson. Hudson - это open source continuos integration and build management server, аналог Cruise Control и Apache Continuum. Для него написано много плагинов, один из них - Чак Норрис плагин. Этот плагин рисует Чака Норриса в разных эмоциональных состояниях в зависимости от статуса билда. Если билд прошел - то Чак улыбается, иначе Чак стоит в боевой стойке готов надавать звиздюлей тому, кто поломал билд.



До Гудзона я работал с CruiseControl и Apache Continuum. Cruise Control это наверное самый популярный CI Server, если его правильно настроить то работает как часы. Я был разочарован Apache Continuum, это сырой продукт, версия 1.2.3 по качеству скорее beta чем release, хотя можно его настроить и тоже будет работать.

Я считаю что Hudson лучший из этой тройки потому что:
  • удобный GUI интерфейс для администрирования
  • система аутентификации пользователей может использовать как свою базу данных ролей и юзеров, так и аккаунты Linux или Windows
  • Можно создать кластер и распределять билды по нодам
  • Много разных плагинов
  • Уникальная фича - можно по артефакту найти номер билда в котором он был создан
  • Инкрементальный билд для многомодульных билдов Maven'а
  • Hudson отслеживает выход новых версий (в том числе плагинов) и сам предлагает обновиться через GUI
  • Распространяется как war
  • Чак Норрис плагин :)

четверг, 17 сентября 2009 г.

Новая фича в Apache Maven - инкрементальный билд

В новой версии 2.2.1 Мавена появилась возможность делать инкрементальный билд. Инкрементальный билд - это когда при изменении одного модуля мы пересобираем не весь проект, а только те модули, которые используют код измененного модуля.

Например, зависимости выглядят так:

A
/ \
B C
/ \
D E

Модуль A зависит от B и С, а B зависит от D и E.

Допустим, в код модуля D внесли изменения.

набираем mvn -amd -pl D сlean install

В результате будут пересобраны три модуля - D, B и A. Модули C и E не будут собраны потому что они не зависят от D напрямую или косвенно.

пятница, 11 сентября 2009 г.

Теперь и у меня есть сервер на Amazon Elastic Cloud

Я давно хотел завести себе сервер в интернете для различных экспериментов. Одно дело когда ты пишешь веб прогу которую запускаешь через loopback интерфейс 127.0.0.1, и совершенно другие ощущения когда у тебя настоящий веб сервер в инете. Когда я узнал про Аmazon Elastic Cloud, то сразу понял что это то что мне нужно. Итак, я завел себе аккаунт и решил создать инстанс. Первая идея которая пришла в голову - создать инстанс на основе имиджа Fedora 8 который доступен среди "Amazon Instances", то есть Amazon официально предлагает именно этот имидж пользователям. Когда я создал сервер и законектился к нему, то понял что Fedora 8 уже устарела. Мне нужен был Postgresql 8.3, а Fedora 8 предлагала пакет версии 8.2. Почему Fedora 10 не предоставляется Amazon, не понятно. Кроме официальных имиджей есть огромное количество Community имиджей, я выбрал Ubuntu 9.04 Server Edition , создал новый инстанс Ubuntu и удалил инстанс Fedora 8.

Первым делом я залогинился на мой новый сервер и установил пакет ec2-ami-tools который содержит скрипты для создания имиджа с работающего сервера.
sudo apt-get install ec2-ami-tools

Java SDK от Sun поставился с пол-пинка, установил его в папку /opt/java/jdk, пришлось проинсталлировать пару зависимостей из репозитория используя apt-get install.

Я регулярно делаю снэпшоты моего сервера чтобы можно было восстановить инстанс в случае поломки.
Пока что мне нет надобности чтобы сервер работал круглосутчно, поэтому я создаю имидж и останавливаю сервер когда он мне не нужен чтобы меньше платить. Я выбрал small instance, цена $0.11 в час за 150 гигабайт дискового пространства и 1.7 гигабайт памяти. В августе я заплатил 2 доллара, в сентябре уже нащелкало 8 долларов на 11 сентября. Мне очень нравится что можно быстро добавить сервер в кластер из имиджа. Я полностью доволен моим хостингом :)

понедельник, 7 сентября 2009 г.

Marillion "Kayleigh"

Сегодня я продолжаю выкладывать музыку. Британская рок-банда под названием "Marillion" навсегда вошла в историю с песней "Kayleigh" в 1985 году. Выкладываю оригинал и две аранжировки.





четверг, 27 августа 2009 г.

Локальный SMTP и POP3 сервер для development mode

Сейчас я работаю над системой одной из функций которой является рассылка пользователям e-mail'ов (aka мыла), серверную часть мы пишем на java. Когда система работает в production mode, она отсылает мыло на реальные адреса пользователей. В процессе разработки мы все запускаем наш java сервер на воркстейшенах, и конечно, нужен SMTP сервер на который система отсылала бы мыло в development mode, и нужен POP3 cервер чтобы читать это мыло. К счастью, в Ubuntu Jaunty появился новый пакет - dovecot-postfix. Он содержит POP3 и SMTP сервер. При инсталляции спрашивает тип установки - я выбрал local. После установки на воркстейшене появляются SMTP и POP3 серверы готовые к использованию. В настройках java сервера указываю что SMTP сервер находится на localhost. Теперь нужно поправить конфиг файл для SMTP сервера (Postfix) чтобы он редиректил всю почту на мой аккаунт на локальном POP3 сервере. Для этого нужно прописать в файле /etc/postfix/virtual-regexp правило
# Rewrite all addresses to sgr@localhost
/.+@.+/ sgr@localhost

и добавить в /etc/postfix/main.cf строку
virtual_maps = regexp:/etc/postfix/virtual-regexp

Готово. Перезапускаем Postfix чтобы он перечитал конфиг файл.
Теперь вся почта, которая посылается java сервером, редиректится на мой аккаунт. Осталось настроить почтовый клиент ( я использую evolution) чтобы он забирал почту с локального аккаунта на POP3 сервере, логин и пароль тот же что и для входа в Ubuntu.