Служу России!


Пришло время отдать долг Родине. Университет позади и ближайший год я буду развлекать себя выполняя роль рядового Российской армии. Надеюсь время пролетит не заметно и я не успею забыть как писать Hello world!

Как разделить модульные и интеграционные тесты с помощью Maven


В теории, модульные тесты не должны зависеть от окружения. Для проверки работоспособности системы в приближенных к реальности условиях, пишутся интеграционные тесты. Для них в maven предусмотрена отдельная фаза сборки проекта.

В этой статье хотелось бы поделиться опытом ее использования.

JUnit, параметризованные тесты и Spring IoC


Чтобы не подымать руками контекст Spring-а в каждом модульном тесте на JUnit, был придуман SpringJUnit4ClassRunner. Но его использование делает невозможным применение еще одного очень плезного запускальщика тестов: Parameterized. И тут возникает проблема, как усидеть на двух стульях сразу: писать параметризованные тесты и пользоваться Spring.

Интеллектуальные системы. Алгоритм поиска оптимального хода в игре Крестики-нолики

Уверен, многие успели насладиться великолепным квестом  Machinarium. Вы наверняка помните того робота, которого надо было обыграть в баре, чтобы получить необходимые болтики. Так вот, игра, в которую его надо было обыграть, очень похожа на  крестики-нолики, но имеет поле 10 на 10 и продолжается, пока один из игроков не выстроит ряд из пяти фигурок.

Продолжая тему интеллектуальных систем, предлагаю написать алгоритм для игры в крестики-нолики по правилам, предложенным в Machinarium.

Сыграть!

Mylyn. Подключаемся к Bitbcaket Issues

Не стану рассказывать зачем нужны и почему удобны системы отслеживания ошибок. О том, что такое Mylyn и почему это хорошо, можно почитать на хабре. В статье я лишь расскажу как подружить между собой mylyn и сервис Issues с Bitbucket.org

Компонент JGraphTree

Компонент JGraphTree позволяет отрисовывать деревья, представленные стандартным интерфейсом TreeModel, в виде графа. Компонент писался под собственные нужды и на идеальное исполнение не претендует. Архив с исходным кодом, документацией и библиотекой с компонентом можно взять тут. Под катом пример использования компонента и небольшие пояснения к его устройству.

Maven. Плагины для сборки простых проектов

При сборке простых десктопных проектов или библиотек с помощью maven, возникают распространенные задачи, вроде конфигурирования компилятора, создания jar-файла и файла манифеста, копирования ресурсов и им подобные. Все эти задачи, естественно, легко решаются в maven с помощью плагинов. В статье дается беглое описание и простые примеры использования плагинов, для решения наиболее популярных задач, встречающиеся при сборке проектов.

Как построить дерево в виде графа

Древовидный граф - распространенная структура данных в программировании и часто применяемая в алгоритмах. Содержимое этой структуры тяжело поддается исследованию во время отладки, в силу того, что практически всегда описывается одним узлом ссылающимся на своих потомков. Т.е. чтобы получить значение некоторого узла, приходится выполнять нетривиальный обход дерева. И тут на помощь может придти визуальное представление такого графа. Построение графа в виде компактного и легко воспринимаемого дерева, задача нетривиальная и имеет безусловно множество решений. В статье хотелось бы поделиться собственным "колесом" для решения этой задачи.

Разбор аргументов командной строки в Java


Графический интерфейс не всегда бывает наиболее удобным способом взаимодействия с программой. Зачастую приложение, запускаемое в командной строке с некоторым набором команд, гораздо удобнее в эксплуатации. При разработке такой программы, встает задача разбора аргументов ее запуска, что само по себе не всегда бывает тривиальной задачей. К счастью, как и большинство других распространенных задач, задача разбора аргументов командной строки уже решена во множестве библиотек. В этой статье я кратко опишу две популярные библиотеки, в основе которых лежат два, несколько отличающихся, подхода к решению этой задачи.

Как сохранить вкладки в Gnome terminal


Привык держать открытыми несколько вкладок терминала с определенными рабочими директориями. Открывать вкладки и переходить в нужные директории каждый раз после перезапуска терминала утомительно. К счастью, gnome-terminal позволяет настроить, сколько и каких вкладок надо открыть при запуске. К несчастью, настройка не самая предсказуемая (лично мне пришлось покопаться, пока дошел до решения).