четверг, 23 августа 2012 г.

lifeline vs. deadline

Выражение "дэдлайн" (deadline) прочно вошло в it сленг. Означающее буквально "мёртвая линия", в сленге его значение превратилось в "крайний срок" - дату релиза, выпуска продукта, завершения проекта.
Также это выражение закрепилось и в сфере управления временем/задачами/жизнью. Используете to do list - и для перечисленных дел указываете крайний срок, когда дело должно быть сделано? Вот он, крайний срок, к которому задача должна быть решена и вычеркнута. Вычёркивание задач из списка дел в конечном итоге завершится вычёркиванием всей вашей жизни - самым крайним и неоспоримым дэдлайном.
Может, стоит мыслить по-другому - "не deadline и не конец, а lifeline и начало"? Мыслить в терминах нового дня, новой недели и нового старта.
Возможно, от перемены слов суть не изменится. Но ведь "назовёшь его корытом, так оно и поплывёт"! Так что пусть будет lifeline, хотя бы иногда.

пятница, 17 августа 2012 г.

liquibase servlet listener: пример и настройка

liquibase может быть запущен (среди прочих способов) с помощью servlet listener. А значит, можно автоматизировать запуск liquibase и приурочить проверку/обновление БД к моменту деплоя приложения. Далее в посте рассматривается пример того, как "подружить" liquibase и сервер приложений jboss, настроить эту связку и сделать так, чтобы миграция выполнялась при запуске приложения.

четверг, 16 августа 2012 г.

Работа с liquibase

Программы и приложения обладают одним интересным свойством склонностью к эволюционированию: появляются новые возможности, старые и ненужные фичи исчезают, меняются внешние интерфейсы и внутренние взаимосвязи. И если программа или приложение использует базу данных, то этот процесс неизменно сопровождается развитием и БД.
Для разработчиков развитие БД выливается в задачи по рефакторингу модели данных, отслеживанию изменений, синхронному обновлению баз и поддержанию совместимости версий; особенно это касается "боевых" приложений, для которых ошибка может стоит дорого. Как решать возникающие задачи? Можно полагаться на память. Можно связаться с текстовыми файлами, чтобы помечать в них, когда и какие поля в БД были изменены, и что нужно сделать на сервере БД заказчика, чтобы обновление версии программы прошло без проблем.
Механизмом для оптимизации этого сложного, но неизбежного процесса является инструмент liquibase, лозунг которого "Database Change Management" управление изменениями баз данных. Полное описание функциональности можно получить на сайте проекта; далее же в посте описываются некоторые конкретные возможности и процедуры использования данного инструмента с небольшими примерами.

пятница, 10 августа 2012 г.

Hyperic Sigar: мониторинг ресурсов в java

Иногда важно собирать информацию об использовании приложением системных ресурсов. Например, для сбора требуемой статистики. Или для обязательного совмещения с профилем нагрузки при нагрузочном тестировании. Или потому, что просто интересно :)
SIGAR (http://support.hyperic.com/display/SIGAR/Home) предоставляет переносимый интерфейс для сбора информации о системе и потреблении системных ресурсов:
* системная память, размер swap-файла, загруженность cpu, продолжительность работы;
* потребление памяти и cpu, а также состояние, окружение, параметры и используемые файлы по отдельным процессам;
* данные по файловой системе, очереди на запись/чтение, количество write/read байт, размеры дискового пространства;
* данные по сетевому интерфейсу, его конфигурации;
* таблица tcp/udp соединений, для них локальные/удалённые адреса, очереди на чтение/запись;
* таблица сетевых маршрутов и пр., и пр.

четверг, 2 августа 2012 г.

Joda time

Joda-time - наиболее известная и активно поддерживаемая/используемая библиотека проекта joda. Как гордо говорится на её странице, это "де-факто стандартная библиотека для работы с датами и временем в java". Реализация как Date, так и Calendar в java core имеют серьёзные недостатки, из-за чего joda-time и стала такой популярной. В качестве подтверждения популярности и качества библиотеки можно рассматривать предложения о включении её в состав jdk 7 (правда, эти ожидания так и не оправдались, зато появились новые - о включении в jdk 8).

Вот несколько причин, по которым joda-time появилась и стала востребованной: простота в использовании, лёгкая расширяемость, большой перечень возможностей, 100% совместимость со стандартными классами jdk, улучшенные характеристики производительности, поддержка нескольких (в настоящее время - 8) календарей, хорошее тестовое покрытие, полная документация, зрелость, открытый исходный код. Подробнее обо всём этом можно почитать прямо на главной странице проекта. Далее в этом посте - инфо, примеры использования joda-time и полезные ссылки.