Programming Groovy: Dynamic Productivity for the Java Developer

Рубрика: Development, Groovy, Книги | 24 April 2008, 12:44 | Vadim Voituk

“As moves the world, to move in tune with
changing times and ways is wisdom”
— Thiruvalluvar, Poet and Philosopher, 31 B.C

Наконец-то мне попала в руки PDF-версия книги “Programming Groovy: Dynamic Productivity for the Java Developer” (ISBN 10: 1-934356-09-3 | ISBN 13: 9781934356098) из серии “The Pragmatic Programmers”.

Предисловие к книге написал Guillaume Laforge (руководитель проекта Groovy), а приведенная выше цитата, написанная на Тамилском языке, навевает на мысль о причасности к авторству всеми любимых индийских программистов :)

В отличии от книги “Groovy in Action” издательства Manning, состоящей из 700 страниц, в этой всего – 300, что уже само по себе не может не радовать. Да и размер страницы немного меньше.

Также в отличии от GINA, рассматривается более современная версия Groovy из ветки 1.5.*, которая уже поддерживает все возмжности Java 5, и имеет ряд улучшений в API (особенно что касается Builder-ов).

Книга содержит инструкции по установке и настройке Groovy для различных ОС и IDE (Eclipse, Idea, TextMate, …), огромное количество примеров кода, демонстрирующих синтаксические возможности,  готовые примеры решения популярных задач (работа с XML, RDBMS, Ant), а также подробное описание возможностей Groovy MOP, возможностей DSL и Groovy-расширения JDK – GDK.

Конечно же в “Programming Groovy: Dynamic Productivity for the Java Developer” материал излагается не столь фундаметально как в “Groovy in Action”, но как по мне это неплохой компромис для тех, кто хочет быстро вникнуть в основы Groovy.  Для более детального понимания того, как устроен Groovy внутри советую все-таки прочесть (или хотя-бы вдумчиво пролистать:) “Groovy in Action”.
Книга пестрит примерами кода, и пропагандирует исключительно практический подод к изучению, – потому во время чтения не возникает ситуации “ниасилил многа букф” :)

А исходя из того, что Groovy неразрывно связан с Java, и самостоятельным языком для JVM станет ещё не скоро – книга все-таки расчитана больше на Java-разработчиков, чем на новичков, желающих вникнуть в достаточно новый и популярный язык Groovy.

P.S. Осталось ещё где-то  раздобыть Groovy Recipes: Greasing the Wheels of Java.

Groovy packages for Fedora/RHEL/CentOS

Рубрика: Groovy | 20 April 2008, 21:27 | Vadim Voituk

3 дня назад некий Federico Pedemonte опубликовал rpm-пакеты Groovy для Red Hat-овских дистрибутивов Fedora, RHEL и CentOS, тем самым поневоле став их maintainer-ом :)

Теперь Groovy доступен в виде пакетов для таких Linux-дистрибутивов Fedora/RHEL/CentOS, Ubuntu/Debian,  openSUSE 10.2/10.3.
Все пакеты доступны для загрузки с официального сайта Groovy.

На моем продуктивном RHEL 5.1 установка прошла гладко (ещё бы, зависимостей то у пакета нет :), а вот для запуска Groovy прийшлось отдельно установить переменную окружения GROOVY_HOME:
$ export GROOVY_HOME=/usr/share/java/groovy
$ groovy -version
Groovy Version: 1.5.5 JVM: 10.0-b19

History meme

Рубрика: Блоггинг | 20 April 2008, 19:31 | Vadim Voituk

Не очень то я люблю всякие блого-провокации из серии напиши у себя и передай другому (“5 фактов обо мне…”,  “5 инструментов…” и тд.).
Но вот последняя штука “History meme” – really fun :P
Посему мой вариант:
$ history 1000 | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head
113 cd
63 ls
57 vim
51 svn
24 screen
20 wget
20 rm
19 mc
18 grep
10 find

Передавать эстафету, как это принято, не буду.
Напротив приведу несколько побудивших меня меня к участию заметок:
Макс Ищенко, блог компании Reactr

P.S. А вообще порою поражаюсь как быстро подобные вирусные штуки распостраняются в сети.
И себе что-ли что-то подобное придумать?

P.S.S. Кстати ссылка в первом абзаце – хороший способ найти неплохие девелоперские блоги.

JavaEE interview questions

Рубрика: Development, Java, Работа | 15 April 2008, 09:38 | Vadim Voituk

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

Например не так давно Юра опубковал свой список вопросов на JSE девелопера, а до того и я нашел в сети 30 вопросов к соискателю на должность Java-разработчика.

Продолжая начатую тему, представляю ещё один небольшой список вопросов на JEE-разработчика.
По неподтвержденным данным большинство данных вопросов задаются соискателям в Sun Microsystems. Вопросы собрал и сгруппировал мой бывший коллега Павел Яцюк. [Далее...]

Java + Groovy on Google AppSpot

Рубрика: Google, Groovy, Java | 14 April 2008, 09:07 | Vadim Voituk

Надеюсь что рассказывать что такое Google App Engine никому не нужно, но все же в двух словах напомню:
Google App Engine – это платформа для хостинга различных приложений на оборудовании (как не сложно догадаться) Google. Такой себе следующий шаг после генератора домашних страничек на Google Pages.
К сожалению среди языков программирования пока поддерживается только Python, но активно обсуждается и дальнейшая поддержка других языков.

Будучи приверженцем Groovy, а также ввиду того, что последнюю программу на Python я написал лет так 6-7 назад, прошу всех, кому это читает проголосовать за внедрение поддержки Java (а с ним и Groovy) в Google App Engine.
Для этого нужно всего-то зайти а баг-трекинг проекта по адресу http://code.google.com/p/googleappengine/issues/list, найти тикет с номером 1 и кликните рядом с ним звездочку.
Получится где-то так:

Также желательно, но не обязательно, написать в комментариях к тикету что-то вроде “очень хочется Java + Groovy” :)

Всем заранее спасибо!

Если бы самолеты строили ИТ-шники

Рубрика: Development, Юмор | 13 April 2008, 21:24 | Vadim Voituk

В блоге Макса Тульева набрел на старый-добрый видеоролик, наглядно демонстрирующий то, как бы выглядло свременной авиастроительство, если бы работало по принципам принятым в ИТ

А опубликовал я его тут не просто так, а дабы подискутировать по поводу отсутсвия ответственности разработчиков за свои проекты. [Далее...]

Не так давно стала задача арендовать средненький сервер в одном из европейских датацентров.
Причем самым важным критерием выбора была скорость доступа из стран центральной и западной Европы.

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

1. GIGA International
Сайт: http://www.giga-international.com
2 собственных датацентра находятся в Мюнхене и во Франкфурте.
Скорость доступа сильно колебается в зависимости от страны Европы.
За 89 евро можно арендовать неплохую “рабочу лошадку” 2 x Core 2 Duo 2.13GHz / 3GB RAM / 400 GB HDD без лимита трафика. Есть варианты и подешевле и подороже.
А вот отзывов от клиентов в сети найти не удалось.

2. KeyWeb
Сайт: http://keyweb.de/
Датацентр находится в Эрфурте (Германия).
Скорость доступа из Европы самая высокая среди тех, которые я пробовал.
В сети достаточно положительных отзывов.
Среди минусов – очень медленные в бюрократических процедурах.
Цены процентов на 10 выше чем у GIGA-International

3. NetDirekt
Сайт: http://netdirekt.net/
Наверное самый древний и именитый датацентр в Европе, единственный, о каком хоть что-то слышал до того как начал искать. Датацентр находится во Франкфурте. Скорости по Европе нормальные. Большинстов отзывов в сети – положительные.
Минус – достаточно высокие цены, особенно на Core 2 Duo решения.

Был ещё вариант какого-то именитого датацентра в Голандии (название забыл уже) – но его “отмели” из соображений териториального расположения.

Свой выбор остановил на компромисном с точки зрения скорости доступа и цены KeyWeb.
Счет на оплату высылали неделю, да и то прийшлось им напомнить. Сервер ставили ещё неделю.
Зато пока работает – не жалуюсь.
Может кто-то тоже подскажет нормальные и не шибко-дорогие датаценты в Европе?

Также в процесе поисков наткнулся на полезный сервис мониторинга доступности web-сайтов HostTracker.

Превращаем Java Enums в Groovy Ranges

Рубрика: Groovy, Java | 7 April 2008, 15:09 | Vadim Voituk

Идея заметки не моя, но очень мне понравилась.
Оригинал тут: Turning Java enums into Groovy ranges

Предположим что у нас есть простой Java Enum:
[java]

public enum Season {
  WINTER, SPRING, SUMMER, FALL
}

[/java]

Так как enum-ы реализуют интерфейс Comparable, то в них есть метод compareTo().
Тем не менее их значения нельзя использовать с операторами < и >.
Потому такой Java-код даже не скомпилируется
[java]if (Season.WINTER > Season.FALL) { … }[/java]

Напротив, в Groovy же, для любого класса, который реализует Comparable можно использовать операторы < и >. Потому такой Groovy-код, работает как и ожидается:
[java]assert Season.FALL > Season.WINTER[/java]

Так как enum уже реализует Comparable, то для того, чтоб превратить его в Groovy Range, осталось добавить только методы next() и previous().
Вот один из способов сделать это, используя метод ordinal() enum-а:

[java]

public enum Season {
    WINTER, SPRING, SUMMER, FALL;

    Season next() {
        Season[] vals = Season.values();
        return vals[(this.ordinal() + 1) % vals.length];
    }

    Season previous() {
        Season[] vals = Season.values();
        return vals[(this.ordinal() - 1 + vals.length) % vals.length];
    }
}

[/java]

Теперь в Groovy можно написать так:
[java]

(Season.WINTER..Season.FALL).each {
    println it
}
// ...
for (s in Season.values()) {
    println (s++)
}
// ...
for (s in Season.values()) {
    println (s--)
}

[/java]

Налицо использование, принятой в Groovy, концепции Duck Typing, когда нас не обязуют декларировать реализацию интерфейся для использования с языковыми операторами (в данном случае “больше-меньше”). Достаточно только реализовать необходимые методы, без указания какого-либо дополнительного implements в сигнатуре класса.

Кстати в Java есть метод EnumSet.range(), который возвращает коллекцию значений enum-а, которая в свою очередь может быть использована в Java5 for-each цикле:
[java]for (Season s : EnumSet.range(Season.WINTER, Season.FALL) { … }[/java]
Но в в таком случае использование операторов < и > все равно не допускается.

Just for Fun фриланс 3 – Payoneer Mastercard

Рубрика: Development, Работа | 2 April 2008, 07:44 | Vadim Voituk

И снова пару слов о том, как я несколько дней был фрилансером на GetAFreelancer.com
(начало “Just for Fun фриланс Part1“, продолжение “Just for Fun фриланс Part 2“)

Спустя полтора месяца, со второй попытки мне таки удалось получить платежную карточку Payoneer MasterCard для вывода заработанных средств из системы.

Немного удивило качество исполнения карты – я ожидал что-то больше похожее на временную дисконтную карту “Линия Кино” или “Сильпо”. Оказался вполне себе приличный “пластик”, брендированный под GetAFreelancer.com, с тиснением, голограммой и сроком действия 2 года. (См. фото)

Следующим этапом неободимо активировать карту на сайте, и выполнить перевод средств из системы.

При этом в целях безопасности первый вывод средств система задерживает на 15 дней.
Будем ждать 15 дней :)

Совет для тех кто будет заказывать карту Payoneer: ОБЯЗАТЕЛЬНО указывайте ПРАВИЛЬНЫЙ почтовый индекс.
Я в свое время поленился и указал банальный 01000 (а че? раньше везде прокатывало!), – в результате по прошествии 3х недель, прийшлось заказывать карту повторно.

Первоапрельские шутки популярных сайтов

Рубрика: Юмор | 1 April 2008, 16:09 | Vadim Voituk

Никого уже не удивишь тематическим изображением, посвященным 1-апреля, на главной странице Google.  Или же запущенным к празднику дураков web-будильником от того же Google.

А вот на просторах СНГ подобное – редкость.

Из того, что удалось заметить мне:

1. bash.org.ru запустил акцию по борьбе с неграмотностью населения. Теперь вместо привычных цитат-пиколов посетители наблюдают что-то вроде:
Стилистическая правка рассматриваемых конструкций достигается различного рода заменами. Для этой цели используется: а) придаточное предложение, например: «Мы не смогли вовремя уехать вследствие неполучения необходимых документов» – …так как не получили необходимые документы;
б) оборот с союзом чтобы, например: «В рукопись внесены исправления для устранения повторений и улучшения её стиля» – …чтобы устранить повторения и улучшить её стиль;
в) деепричастный оборот, например: «Необходимо углубить знания и закрепить навыки студентов за счет привлечения добавочного материала» – …привлекая добавочный материал.

 

2. Яндекс тоже не остался в стороне.
Теперь его кнопка-индикатор рейтинга среди блогов показывает каждому, что его блог первый:

Вроде пока первоапрельских шуток от отечественных сайтах больше не видел.
Если кто знает об аналогичных “шутках” – welcome  в комменты.