понедельник, 29 марта 2010 г.

Тестирование: начало

Итак, тестирование в жизни программиста.

Все знают что такое тестирование... или, по крайней мере, так думают :) Написано довольно много книг и статей об этом, выдуманы методологии и практики (ну например TDD) и даже заложены базовые механизмы в "недра Java". И во всех книгах\статьях\презентациях наперебой утверждают что это круто (в смысле unit тестирование), что это жизненно необходимо, и вооще - JUnit спасет мир.

Во как!
И что?!

воскресенье, 28 марта 2010 г.

Подсветка синтаксиса

Вот захотелось получить 2 вещи:
1. Автоматическое экранирование угловых скобок
2. Красивое отображение кода

Первый пункт пока победить не удалось, а вот второй оказался очень даже не сложноый...

Итак, есть вот такая библиотека.
В двух словах о том, как это работает: с помощью JavaScript в коде страницы ищутся теги с определенными признаками (например <pre> с определенным классом), текст в этих тегах рассматривается как фрагмент исходника, со всеми вытекающими. Т.е. этот текст можно раскрасить и добавить всяких рюшичек (номера строк, выделенные нечетные строки и т.д.). Получается довольно симпатишно:)

Почитать как "это" подключить можно здесь, почитать про дополнительные настройки и стили здесь и здесь. Тем, кому не нравится тег <pre> будет интересно прочитать вот это.

Ну и если очень хочется, можно почитать про подобные "плагины" ( например здесь).

понедельник, 15 марта 2010 г.

Что поправить в свежем Eclipse-е

Каждый раз при настройке Eclipse требуются определенные шаги, для приведения его в "рабочее состояние". Причем эти шаги всегда почти одинаковые. Так что решил перенести свой файлик eclipse.txt в более доступное место.

Шаг 1. Плагины

JD-Eclipse - декомпиляторб замена jadclipse
http://java.decompiler.free.fr/jd-eclipse/update
http://mchr3k-eclipse.appspot.com

regex-util - отладка regex
http://regex-util.sourceforge.net/update/

Spring IDE - работа со Spring
http://dist.springframework.org/release/IDE

Subclipse - SVN клиент

http://subclipse.tigris.org/update_1.6.x - для SVN v1.5 или 1.6
http://subclipse.tigris.org/update_1.8.x - для SVN v1.7
http://subclipse.tigris.org/update_1.10.x - для SVN v1.7 - 1.8
Для Linux и Winx64 также смотри Wiki: JavaHL

EGit - Git клиент
http://download.eclipse.org/egit/updates

p4-wsad (Eclipse 3.6) - Perforce клиент
http://www.perforce.com/downloads/http/p4-eclipse/install/3.6 - для Eclipse 3.6
http://www.perforce.com/downloads/http/p4-eclipse/install/3.7 - для Eclipse 3.7

m2eclipse Core Update Site - работа с Maven проектами
Похоже что проект переместили на:
http://download.eclipse.org/technology/m2e/releases
Старое: http://m2eclipse.sonatype.org/sites/m2e
Возможно еще http://m2eclipse.sonatype.org/sites/m2e-extras

Eeclipse Color Theme - Для любителей нестандартных цветовых схем
http://eclipse-color-theme.github.com/update

CheckStyle - CheckStyle плагин
http://eclipse-cs.sf.net/update/

eCobertura - Cobertura плагин
http://ecobertura.johoop.de/update/

FindBugs - FindBugs плагин
http://findbugs.cs.umd.edu/eclipse

PMD - PMD плагин
http://pmd.sf.net/eclipse

JDepend4Eclipse - JDepend плагин
http://andrei.gmxhome.de/eclipse/


Шаг 2. Базовая настройка

JRE для запуска

Указание пути к java.exe, с помощью которого будет запущен Eclipse (может пригодится для запуска на JDK отличной от дефолтной в системме)
Файл eclipse.ini в начало добавить 2 строчки:
-vm
ПУТЬ_К_JAVA.EXE
Например:
-vm
d:/dev/java/jdk1.6.0_21/bin/javaw.exe 

Побольше памяти

-Xms400M
-Xmx1524M
-XX:+CMSClassUnloadingEnabled
-XX:+UseCompressedOops
-XX:+UseConcMarkSweepGC

суббота, 13 марта 2010 г.

Как мы “бадались” с CXF

Недавно на проекте попробовали перевести веб сервисы с XFire на CXF.
Нь дя... впечатлений получилось много:) Сейчас попробую вкратце описать их.

воскресенье, 7 марта 2010 г.

Как быстро просмотреть используемые порты?

Иногда возникает необходимость узнать кто (какие процессы) и что (какие порты) используют для «общения с внешним миром».

Подготовка состояния объекта после десериализауции

Не часто, но всетаки бывают, случаи, когда требуется сериализовать объект с несериализуемыми полями (ну например, у нас есть log4j логгер). В таких случаях возникают 2 проблемы: