izebit

izebit

From time to time I code and publish posts about it on my web blog

Что такое DevOps?

DevOps — термин обозначает группу идей, которые в большинстве своем не новы. Эти идеи уже повсеместно проникли и быстро распространились в техническом сообществе. Как и для любого нового и популярного термина, люди часто испытывают трудности и противоречивые чувства, когда пытаются понять что же это. Сейчас попробуем определить, чем DevOps может быть нам полезен. Определение DevOps — новое понятие, являющееся объединением двух последних значимых трендов. Первый, так называемый «Agile в системном администрировании«. Он поощряет применение практик Agile и Lean в области…

0
Read More

Collect своими руками

После выхода java 8 появилась возможность писать в pipeline стиле. Т.е. создавать последовательность операций которые будут обрабатывать элементы из некоторого источника, будь то коллекция, бесконечная и конечная генерирующая функция, строки из файла и пр. Это тема достаточно обширная и она не будет освещена в данном топике. Расскажу про collector’ы. Это такие объекты с помощью которых, можно привести результат обработки элементов к определенному виду. Существует несколько встроенных, в классе java.util.stream.Collectors. Например, там есть toList, он создает список из элементов потока. Есть…

0
Read More

Исправляем конфликт зависимостей

Однажды при деплои на тестовый стенд обнаружилась такая ошибка NoSuchMethodException. Просмотр логов дал следующую информацию: Довольно странное исключение, если учесть, что локально, все работало прекрасно. Наиболее вероятной причиной возникновения данной ошибки — разные версии библиотек. Судя по всему, в проекте оказалось несколько версий одного и того же класса. Как это можно решить?

0
Read More

О строителях

Сегодня речь пойдет о шаблоне проектирования Builder, или же по русски, строитель. Начнем с определения и выясним для чего он нужен. Строитель относится к порождающим шаблонам, а значит, с его помощью создаются объекты. Он позволяет конструировать объект по частям. Приведу пример, как выглядит типичный Builder. Допустим у нас есть класс Person

0
Read More

Создание сервиса в Linux

Иногда требуется не просто запустить программу, но и обеспечить ее работу, после перезагрузки, либо случайного падения. Можно в ручную следить за этим, но можно нужно, переложить эти заботы на откуп операционной системы. Для того чтобы сделать свою программу сервисом в Linux с использованием update-rc.d, достаточно выполнить следующее: создать скрипт для управления жизненным циклом программы назначить необходимые права на файл зарегистрировать созданный скрипт как сервис разрешить автозапуск сервиса Как видим, шагов не так уж и много. И так начнем:

0
Read More

Заставляем дружить CDATA и JAXB

Всем добрый день, сегодня будем говорить о JAXB. Данная технология преобразования объектов в xml файл в java существует достаточно давно и не представляет особой сложности, но как и везде, существует ряд нюансов. Они появляются когда вы хотите сделать, что «нестандартное». В моем случае, требовалось заключить некоторые поля в блок CDATA, а содержимое оставить без изменений.

0
Read More

Контракты для equals

Как известно, метод equals() определен в классе java.lang.Object. Его реализация в данном классе, это простое сравнение ссылок, и если ссылки разные, то метод возвращает false. Если Вы хотите переопределить данный метод, не стоит забывать о контракте с методом hashCode(). Согласно данному контракту, если equals() возвращает true, то значение hashCode() для этих объектов будет одинаково, но выполнение обратного необязательно. Есть еще один контракт, о котором стоит помнить при написании своего собственного метода equals() :

0
Read More

Кое-что о ссылках в java

Сегодня поговорим о том, какие бывают ссылки в языке java. Их всего четыре вида: Strong, Weak, Phantom и Soft. Чтобы воспользоваться ими, за исключением первой, нужно использовать соответствующие классы из пакета java.lang.refs Чем же они различаются и какими суперспособностями обладает каждая из них? Различия в основном связаны с поведением сборщика мусора, в тот момент когда он их обрабатывает.

0
Read More

Принципы GRASP

Сегодня поговорим о более абстрактных вещам, а именно о GRASP. Что же это такое и для чего это нужно? Давайте попробуем разобраться. GRASP (General Responsibility Assignment Software Principles) — общие принципы распределения обязанностей, иногда их называют GRASP шаблоны. Название «шаблоны», мне не нравятся и кажется,что «принципы» будет более подходящее определение. Т.к. GRASP не несет в себе каких то строгих структур, это скорее набор неких правил примененимых к ООП, принципов проверенных временем. В первые, они были упомянуты в книге Крейга Лармана…

0
Read More