суббота, 21 октября 2017 г.

О строителях

Сегодня речь пойдет о шаблоне проектирования Builder, или же по русски, строитель.
Начнем с определения и выясним для чего он нужен.

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

суббота, 15 июля 2017 г.

Генерирование классов во время выполнения

dynamic

Иногда требуется создать класс с определенным поведением во время работы программы. К сожалению, Java не обладает динамизмом, присущем таким языками как Python, Javascript, Groovy. Но все же, возможность такая существует, и есть несколько способов это сделать. Например, сгенерировать напрямую байткод. Но такой способ, довольно сложен. Мы же, в данной статье, напишем исходный код и затем скомпилируем его.

суббота, 17 июня 2017 г.

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

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

  • создать скрипт для управления жизненным циклом программы
  • назначить необходимые права на файл
  • зарегистрировать созданный скрипт как сервис
  • разрешить автозапуск сервиса

Как видим, шагов не так уж и много. И так начнем:

вторник, 21 марта 2017 г.

Задача о корректности расстановки скобок

Хочется рассказать о такой задаче, как определение корректности расстановки скобок. Она так же известна, как balanced parenthesis problem. Суть ее в следующем: дана строка, содержащая открывающиеся и закрывающиеся скобки, и какие то другие символы. Нужно узнать правильно ли расставлены скобки. Т.е. для каждой открывающейся скобки должна быть закрывающаяся. Например, строки вида (()) или (()()) содержат корректную расстановку, а (()() и )()( уже нет.

воскресенье, 7 августа 2016 г.

Визуализация join запросов

Your browser does not support canvas =[

В продолжении статьи о join запросах, сделал генератор.

Структура таблиц:

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

Что такое DevOps?

DevOps - термин обозначает группу идей, которые в большинстве своем не новы. Эти идеи уже повсеместно проникли и быстро распространились в техническом сообществе. Как и для любого нового и популярного термина, люди часто испытывают трудности и противоречивые чувства, когда пытаются понять что же это. Сейчас попробуем определить, чем DevOps может быть нам полезен.

DevOps схема

Определение DevOps

DevOps - новое понятие, являющееся объединением двух последних значимых трендов. Первый, так называемый "Agile в системном администрировании". Он поощряет применение практик Agile и Lean в области администрирования. Второй тренд - очень широкое для понимания значение, которое включает в себя взаимодействие между командой администрирования и программистами на всех стадиях разработки - от создания до обслуживания.
Другое определения дал Jez Hubmle :

DevOps - группа практик для изучения таких предметов, как создания, выполнения и администрирования быстроизменяющихся масштабируемых систем.

воскресенье, 20 марта 2016 г.

JVM параметры для тонкой настройки сборщика мусора

Совсем недавно столкнулся с необходимостью уменьшения паузы "stop world" во время сборки мусора. Во время копания в данном вопросе, открыл для себя множество интересных параметров jvm. Чтобы знания не потерялись, решил зафиксировать их в табличку.