Google Analytics

суббота, 26 ноября 2011 г.

Jenkins: The Definitive Guide


Эта заметка не будет рассказывать об использовании CI-сервера Jenkins. В ней не будет технических деталей, в отличие от большинства постов в блоге. Вместо этого я хочу рассказать о книге, которая наполнена таковыми. Это книга Jenkins: The Definitive Guide.

Без сомнения это не книга из ряда фундаментальных по Computer Science. Но это очень добротное последовательное описание практики Continuous Integration с применением Jenkins. Книга поможет построить целостную картину при наличии разрозненных знаний по применению Jenkins, либо сформировать таковую при отсутствие их вообще.

воскресенье, 18 сентября 2011 г.

Использование Spring в OSGi-контейнере

Вряд ли найдётся Java разработчик, который не знает что такое Spring Framework. Одними из базовых технологий данного фреймворка являются IoC контейнер и поддержка AOP. Эти технологии позволяют успешно разбивать архитектуру приложения на обособленные слои, как на уровне классов, так и на уровне компоновки объектов во время выполнения. Казалось бы, что приложение отлично структурировано на элементы/слои, но по своей сути оно остаётся монолитным. Монолитным во время выполнения (runtime)! Только в рамках данного фреймворка не существует универсальных решений этой проблемы. Чуть меньшее количество Java разработчиков слышало об OSGi. Это спецификация модульных систем для Java платформы. Использование конкретной реализации данной спецификации в качестве основы приложения позволяет сделать его модульным, как во время выполнения, так и на физическом уровне (уровне файлов). О синергии этих технологий и пойдёт речь в этой статье.

среда, 20 июля 2011 г.

Особенности паттернов параллельного программирования для бизнес приложений [PoEAA]

Параллельное программирование давно уже перестало быть уделом матёрых гуру. Трудно представить современное приложение, реализация которого игнорировала бы этот вопрос. Аналогично трудно представить прикладного программиста, который бы не держал на вооружении паттернов корпоративных приложений от Фаулера с компанией. Собственно об особенностях присущих этим паттернам и пойдёт речь в этом посте. Материал представленный далее почти не коррелирует с технологиями реализации, поэтому может быть интересен любым прикладным программистам не смотря на то, что примеры базируются на Java и PostgreSQL. И ещё одно замечание, чтобы не вносить путаницу с названиями паттернов, я буду использовать их оригинальные названия на английском языке.

суббота, 11 июня 2011 г.

Конкурентный доступ к реляционным базам данных

Вопросы параллелизма в компьютерных вычислениях очень сложны! Если вы готовы с эти поспорить, то я отвечу: "Вы либо гений, либо не достаточно разбираетесь в вопросе". Причинами большой сложности являются огромное количество деталей, которые нужно учитывать при разработке параллельных программ. В программирование и без того существует большое количество деталей, которые создают почву для ошибок, параллелизм же, добавляет ещё.

Вопросы конкурентного доступа к реляционным базам данных встают практически перед любыми разработчиками прикладного программного обеспечения и не только перед ними. Результатом такой востребованности этой области является наличие большого количества созданных архитектурных паттернов. Это позволяет успешно справляться с большой сложностью разработки таких программ. Ниже пойдёт речь о таких рецептах, а также механизмах на которых базируется их реализация. Повествование будет иллюстрироваться примерами кода на Java, но большинство материала не привязано к языку. Цель статьи - описать проблемы конкурентного доступа к реляционным базам данных, в качестве введения в предмет, а не полноценного охвата темы.

понедельник, 9 мая 2011 г.

Spring 3 или Java EE 6




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

воскресенье, 24 апреля 2011 г.

Управление ресурсами с помощью cgroups

Cgroups(Control Groups) - обеспечивают механизм для агрегирования множества задач и их будущих потомков в иерархические группы с определенным поведением. Так начинается документация посвященная cgroups поставляемая с ядром Linux. Собственно это и есть достаточно ёмкое описание технологии. Но конечно же его недостаточно.

воскресенье, 6 марта 2011 г.

Anemic Domain Model и JPA сущности

В этой заметке я хочу поговорить о проблеме, которая вставала перед большинством Java разработчиков задумывающихся об архитектуре ПО. Как можно понять из названия, это проблема анемичности классов сущностей JPA. Для тех кто не знаком с термином "Anemic Domain Model" сразу отсылаю к Martin Fowler. Коротко суть этого антипатерна в вырождении класса инкапсулирующего данные и логику в класс инкапсулирующий только данные. Таким образом подрывается одна из основ ООП: класс инкапсулирует данные и логику обработки этих данных. Вроде все просто и вывод напрашивается сам собой: поместить логику в класс сущностей JPA. Но стоп! Не все так просто. Попробую объяснить почему.