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 позволяет настроить, сколько и каких вкладок надо открыть при запуске. К несчастью, настройка не самая предсказуемая (лично мне пришлось покопаться, пока дошел до решения). |
Управление зависимостями в eclipse с помощью Maven.
В крупных проектах, где количество сторонних библиотек растет едва ли не быстрее количества написанных строк кода, управление зависимостями и поддержание их перечня в актуальном состоянии у всех членов группы разработчиков становится весьма сложной задачей. И здесь, как нельзя кстати, на помощь приходит Maven. |
Взаимодействие из Java с IBM Websphere MQ 6
Я уже рассказывал о том, как получать и отправлять сообщения с помощью JMS. Но мой рассказ строился на том, что JNDI контекст уже получен, хотя его получение достаточно нетривиальная задача. Сегодня я постараюсь восполнить этот пробел. |
Как в Java сравнить содержимое двух директорий
| Возникла необходимость сравнить две директории по содержимому. Готового решения гугл не подсказал, пришлось городить собственное решение. Исходный код
|
Установка IBM Websphere MQ 6.0 на Ubuntu 10.04
| Сложность задачи заключается в том, что в качестве дистрибутива linux, IBM рекомендует RHEL или SLES. Оба дистрибутива используют пакеты в формате rpm. Делюсь опытом установки Websphere MQ 6.0 (C8472ML.tar.gz), fix pack (6.0.2-WS-MQ-LinuxIA32-FP0010.tar.gz) на Ubuntu 10.04. |
Настраиваем eclipse для работы с tomcat под ubuntu
Чтобы настроить Eclipse на работу с сервером Tomcat, ему необходимо указать директорию с сервером (installation directory). Проблема в том, что если устанавливать Tomcat из репозитория Ubuntu, то он размазывается по системе, в частности, директории CATALINA_HOME и CATALINA_BASE оказываются разнесены в /usr/share/tomcat6 и /var/lib/tomcat6 соответственно. При указании eclipse директории CATALINA_HOME, он начинает искать директорию conf в ней и, естественно, не находит, т.к. она находится в CATALINA_BASE. Для решения этой проблемы есть несколько путей. |
Коротко о том, что такое Ajax
Http в Java. Часть 2.5 - Простой web server.
Предыдущая статья оказалась достаточно объемной и в то же время не законченной. Привести пример HTTP клиента и не показать простейшего HTTP сервера, это как сказать "а" и забыть про "б". Пришло время все исправить. |
Libre Office. Math
Для генерирования формул, в состав офисного пакета Libre Office, входит приложение Math. Это средство интегрировано в остальные пакеты и позволяет наибрать формулы не покидая Writer или Impress. Принцип построения формул в LibreMath похож на то, что предлагает TeX, но обладает собственным синтаксисом и главное, позволяет сразу видеть конечный вариант набираемой формулы. Поверьте, это просто "небо и земля" по сравнению с "мышкотырканьем", предлагаемым MathType! |
Libre Office. Альтернативный способ создания библиографического списка
Указанный мной, в конце статьи, недостаток предложенного метода, на практике может обернуться серьезной проблемой (приведите пару раз в порядок список из over9000 источников и наткнитесь на необходимость его автоматического обновления, и вы поймете всю глубину проблемы). Тем не менее, ручное создание списка тоже не выход, если вы ссылаетесь на источники в тексте. Стоит возникнуть необходимости в переупорядочивании списка, и головная боль, в попытке сохранить целостность ссылок, вам обеспечена. На самом деле, было бы здорово иметь возможность ссылаться на числовой порядковый идентификатор библиографической записи, способный автоматически обновляться при переупорядочивании списка. Предлагаемый мной альтернативный способ заключается в реализации именно такого подхода. |
Libre Office. Оформление списка использованных источников
В этой статье я поделюсь своим скромным опытом оформления списка использованных источников в курсовых/дипломных работах, выполненных в LibreOffice (OpenOffice) 3. Подход "в лоб", к решению данной проблемы, может показаться нудным и ужасно муторным, но грамотное решение оказывается чертовски простым делом! |
Интегрируем меню Eclipse в Ubuntu
Eclipse отличное IDE. Но к сожалению, на меленьких мониторах он не шибко удобен в силу размашистого интерфейса. Проблема с интеграцией его меню в Ubuntu ощутимо усугубляет дело. Но к счастью проблема поправима. Решение с глобальным меню для эклипса нашел на соседнем блоге и оно гениально! Оказывается, eclipse тупо добавлен в черный список. Достаточно его оттуда убрать и будет счастье! |
Шпаргалка по JUnit 4
JUnit | Краткий перечень аннотаций, используемых в библиотеке модульного тестирования JUnit 4. |
Интеллектуальные системы. Алгоритм A* и игра "Пятнашки"
Повседневная работа современного программиста редко открывает простор для развития творческого мышления. Чаще всего, для решения задач нам достаточно применить проверенное временем решение: паттерн или библиотеку. Знание общепризнанных подходов и практик, библиотек и фреймворков, вот что сегодня является признаком квалификации программиста. Между тем, красота и волшебство программирования для многих (я уверен, что не одинок в этом) в полной мере раскрывается в решении сложных алгоритмических задач, так редко встречающихся в повседневной практике. И раз уж "гора не идет к Магомету", то Магомет придумает себе задачку самостоятельно! |
Что такое Unix way?
Статья состоит из двух частей: развлекательной - краткой истории Unix и изложения основ философии Unix, и практической. Практические примеры далеки от идеала, и призваны показать направление решения, а не предоставить готовый 100% ответ. В целом статья носит обзорный характер и не претендует на полноту освещения затронутых вопросов, что, впрочем, должно позволить не уснуть читателю до последнего абзаца. И так...
Http в Java. Часть вторая - HTTP.
HTTP (HyperText Transfer Protocol - протокол передачи гипертекста)честно следует своему названию, и заключается в спецификации обмена сообщениями определенного текстового формата. Клиент и сервер обмениваются текстовыми сообщениями состоящими из заголовка сообщения и его тела. В заголовке указывается необходимая для взаимодействия информация.
Http в java. Часть первая - TCP.
Современные фреймворки достаточно хорошо абстрагированы от низкоуровневых деталей собственной реализации. С одной стороны это хорошо - упрощает нам жизнь, но с другой стороны не дает нам лишнего повода узнать фундаментальные вещи. Это справедливо для огромного количества вопросов и областей информационных технологий, но в этом цикле статей речь пойдет о протоколе http (часто скрываемом за JSP, JSF и др.) и способах его использования в Java.
Священная война за скобки в коде
Когда я еще писал на C#, у меня выработалась привычка расставлять открывающие блок кода скобки на новой строке. Тогда иной подход, при котором скобка оставалась на той же строке, что и оператор, казался совершенно неудобным.
Сегодня я пишу на Java и стараюсь не нарушать общепринятую конвенцию. Со сменой языка пришли и перемены в привычках. И теперь, исходя из собственного опыта, я могу твердо говорить о том, что расстановка скобок - не более чем привычка.
И тем не менее, информация о том, откуда вообще родились различные способы решения этого "фундаментального" вопроса, может оказаться интересной.
Наиболее полно эта тема раскрыта в книге Ричарда Хэзфилда "Искусство программирования на C". Да простит меня автор за копирование, но ниже я приведу выдержку из его работы, касающуюся способов расстановки скобок.
Сегодня я пишу на Java и стараюсь не нарушать общепринятую конвенцию. Со сменой языка пришли и перемены в привычках. И теперь, исходя из собственного опыта, я могу твердо говорить о том, что расстановка скобок - не более чем привычка.
И тем не менее, информация о том, откуда вообще родились различные способы решения этого "фундаментального" вопроса, может оказаться интересной.
Наиболее полно эта тема раскрыта в книге Ричарда Хэзфилда "Искусство программирования на C". Да простит меня автор за копирование, но ниже я приведу выдержку из его работы, касающуюся способов расстановки скобок.
Пишем модульное приложение на .Net Framework
Современные тенденции в разработке информационных систем требуют от проектировщиков закладывать в архитектуру систем возможность динамического расширения их функционала. И не смотря на существование огромного количества наработок в этом направлении, единого решения структуры модульного приложения нет. Использование же готового решения не всегда возможно в силу специфики языка программирования или разрабатываемой системы. Так же, готовые решения модульных систем не всегда доступны для изучения, а иногда излишне сложны.
Модули в разных системах, зачастую, имеют разные границы функциональности. В системе могут быть выделены некоторые, строго определенные точки расширения – некоторый функционал, дополняемый сторонними разработчиками. Или система может представлять собой лишь механизм управления модулями, а весь ее функционал реализуется отдельными модулями.
Вперые опубликовано на habrahabr.ru
Виды информационных угроз и способы борьбы с ними
Информационные системы стали неотъемлемой частью нашей жизни. Важность сохранения безопасности собственных данных очень велика, а уровень компетенции, даже среди IT специалистов, далек от совершенства. Чтобы знать как защитить свои данные, следует прежде всего понять как они могут быть повреждены. Из собственного опыта работы в сфере IT пришло понимание в необходимости систематизированного подхода к изучению информационных угроз.
Под катом приведена выдержка из курса Современные веб-технологии интернет университета Intuit с перечнем наиболее распространенных информационных уязвимостей, их описанием, примерами и способами борьбы.
Подписаться на:
Сообщения (Atom)