<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    <title>FLEXible блог - Программирование</title>
    <link>http://www.baron.su/</link>
    <description>Жизнь. Берсерк. Работа. Дневник программиста</description>
    <dc:language>ru</dc:language>
    <generator>Serendipity 1.3 - http://www.s9y.org/</generator>
    <pubDate>Fri, 27 Jan 2012 07:17:36 GMT</pubDate>

    <image>
        <url>http://www.baron.su/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: FLEXible блог - Программирование - Жизнь. Берсерк. Работа. Дневник программиста</title>
        <link>http://www.baron.su/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>Крокодил не ловится? Непонятный NullPointerException в локальном maven?</title>
    <link>http://www.baron.su/archives/358-Krokodil_ne_lovitsJa_NeponJatnyj_NullPointerException_v_lokalnom_maven.html</link>
            <category>Программирование</category>
    
    <comments>http://www.baron.su/archives/358-Krokodil_ne_lovitsJa_NeponJatnyj_NullPointerException_v_lokalnom_maven.html#comments</comments>
    <wfw:comment>http://www.baron.su/wfwcomment.php?cid=358</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.baron.su/rss.php?version=2.0&amp;type=comments&amp;cid=358</wfw:commentRss>
    

    <author>nospam@example.com (Балькин Руслан)</author>
    <content:encoded>
    &lt;p&gt;Напоролся сегодня на такой Exception. Его генерирует Grape. Причину не знаю, но знаю решение:&lt;/p&gt;  &lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;:::: WARNINGS
        problem while listing resources in file:C:/Users/R/.m2/repository/org/codehaus/groovy/
modules/http-builder/http-builder/ with localm2:

          java.lang.NullPointerException null

        problem while listing resources in file:C:/Users/R/.m2/repository/org/codehaus/groovy/
modules/http-builder/http-builder/ with localm2:

          java.lang.NullPointerException null

        problem while listing resources in file:C:/Users/R/.m2/repository/org/codehaus/groovy/
groovy/ with localm2:

          java.lang.NullPointerException null

        problem while listing resources in file:C:/Users/R/.m2/repository/org/codehaus/groovy/
groovy/ with localm2:

          java.lang.NullPointerException null

                [NOT FOUND  ] commons-collections#commons-collections;3.2.1!commons-collections.jar (2ms)

        ==== localm2: tried

          file:C:\Users\R/.m2/repository/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar
:: USE VERBOSE OR DEBUG MESSAGE LEVEL FOR MORE DETAILS&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Правильное решение скрыто во тьме веков, а быстрое решение - скачать файл, например, &lt;a href=&quot;http://www.baron.su/exit.php?url_id=912&amp;amp;entry_id=358&quot; title=&quot;http://mirrors.ibiblio.org/pub/mirrors/maven2/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar&quot;  onmouseover=&quot;window.status=&#039;http://mirrors.ibiblio.org/pub/mirrors/maven2/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;отсюда&lt;/a&gt; и положить его к вам в локальный репозитарий m2, в моём случае путь к файлу &lt;tt&gt;~/.m2/repository/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar&lt;/tt&gt;. Мне этот файл был нужен для поддержки HttpBuilder в Groovy. Такие дела.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 24 Jan 2012 16:30:00 +0400</pubDate>
    <guid isPermaLink="false">http://www.baron.su/archives/358-guid.html</guid>
    <category>grape</category>
<category>groovy</category>
<category>m2</category>
<category>maven</category>

</item>
<item>
    <title>Web-разработка в Windows: Redis</title>
    <link>http://www.baron.su/archives/357-Web-razrabotka_v_Windows_Redis.html</link>
            <category>Программирование</category>
    
    <comments>http://www.baron.su/archives/357-Web-razrabotka_v_Windows_Redis.html#comments</comments>
    <wfw:comment>http://www.baron.su/wfwcomment.php?cid=357</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.baron.su/rss.php?version=2.0&amp;type=comments&amp;cid=357</wfw:commentRss>
    

    <author>nospam@example.com (Балькин Руслан)</author>
    <content:encoded>
    &lt;p&gt;Есть очень много людей, убеждённых в том, что Windows не лучшая среда для веб-разработки. Да, возможно, отчасти это на самом деле так. Чем ближе ко всевозможным скриптовым языкам вроде Python, тем это сильнее так. Или можно взять node.js, выпущенный для Windows, но без менеджера дополнений.&lt;/p&gt;  &lt;p&gt;Однако, слава высшим силам, мы используем в разработке Java и JVM языки. Их поддержка в Windows, как и в любой другой системе, хороша. Юзать можно хоть через консоль, хоть воспользоваться средствами, встроенными в IDEA.&lt;/p&gt;  &lt;p&gt;Но сейчас я про другое, я про NoSQL сервер &lt;strong&gt;Redis&lt;/strong&gt;.&lt;/p&gt;   &lt;br /&gt;&lt;a href=&quot;http://www.baron.su/archives/357-Web-razrabotka_v_Windows_Redis.html#extended&quot;&gt;Продолжить чтение &quot;Web-разработка в Windows: Redis&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 12 Jan 2012 13:00:14 +0400</pubDate>
    <guid isPermaLink="false">http://www.baron.su/archives/357-guid.html</guid>
    <category>development</category>
<category>nosql</category>
<category>redis</category>
<category>windows</category>
<category>разработка</category>

</item>
<item>
    <title>Atmosphere 0.8 (Comet для Java)</title>
    <link>http://www.baron.su/archives/349-Atmosphere_0.8_Comet_dlJa_Java.html</link>
            <category>Программирование</category>
    
    <comments>http://www.baron.su/archives/349-Atmosphere_0.8_Comet_dlJa_Java.html#comments</comments>
    <wfw:comment>http://www.baron.su/wfwcomment.php?cid=349</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.baron.su/rss.php?version=2.0&amp;type=comments&amp;cid=349</wfw:commentRss>
    

    <author>nospam@example.com (Балькин Руслан)</author>
    <content:encoded>
    &lt;p&gt;Проект &lt;a href=&quot;http://www.baron.su/exit.php?url_id=897&amp;amp;entry_id=349&quot; title=&quot;http://atmosphere.java.net&quot;  onmouseover=&quot;window.status=&#039;http://atmosphere.java.net&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; target=&quot;_blank&quot;&gt;Atmosphere&lt;/a&gt; (используется для т.н. Comet соединений) выпустил наконец-то новый релиз. Точнее, даже 2 — вслед за 0.8, через сутки вышла версия 0.8.1. У нас успешно использовалась версия 0.7.2, вскорости рассчитываю использовать уже 0.8.1 версию в нашем проекте.&lt;/p&gt;  &lt;p&gt;Релиз выглядит многообещающим: универсальный код для поддержки WebSocket выглядит читаемым (жаль, пока ещё не работает полноценно с GlassFish 3.1.1); в плагине для JQuery сделали поддержку CORS; поддержку запуска приложений в нескольких вкладках одного браузера.&lt;/p&gt;  &lt;p&gt;Поддержка socket.io будет только в 0.9 версии, судя по всему. Либо в 0.8.х в виде плагина (пока непонятно, какова будет схема выпуска плагинов для Atmosphere, лично я проголосовал за независимый выпуск плагинов уже начиная с 0.8 версии).&lt;/p&gt;  &lt;br /&gt;&lt;a href=&quot;http://www.baron.su/archives/349-Atmosphere_0.8_Comet_dlJa_Java.html#extended&quot;&gt;Продолжить чтение &quot;Atmosphere 0.8 (Comet для Java)&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sat, 26 Nov 2011 00:30:57 +0400</pubDate>
    <guid isPermaLink="false">http://www.baron.su/archives/349-guid.html</guid>
    <category>atmosphere</category>
<category>comet</category>
<category>java</category>
<category>socket.io</category>
<category>websocket</category>
<category>вебсокет</category>
<category>программирование</category>

</item>
<item>
    <title>Grails console: импорт доменных классов</title>
    <link>http://www.baron.su/archives/348-Grails_console_import_domennyh_klassov.html</link>
            <category>Программирование</category>
    
    <comments>http://www.baron.su/archives/348-Grails_console_import_domennyh_klassov.html#comments</comments>
    <wfw:comment>http://www.baron.su/wfwcomment.php?cid=348</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.baron.su/rss.php?version=2.0&amp;type=comments&amp;cid=348</wfw:commentRss>
    

    <author>nospam@example.com (Балькин Руслан)</author>
    <content:encoded>
    &lt;p&gt;Для Grails есть замечательный плагин &lt;strong&gt;console&lt;/strong&gt;. Один минус у него: при структуре проекта чуть сложнее Hello World, когда в проекте десятки или сотни пакейджей, например — надо обязательно осуществлять импорт доменных классов вручную. А это — лишнее время, причём тратится оно не разово, а раз в рестарт сервера.&lt;/p&gt;  &lt;p&gt;К сожалению, добраться до GroovyShell, в котором выполняется введённый пользователем код — кажется, нереально, Хотя силён и могуч Groovy, но вроде бы там даже кложеров не используется, которые было бы можно заменить. Тогда я пошёл другим путём, через фильтры.&lt;/p&gt;  &lt;br /&gt;&lt;a href=&quot;http://www.baron.su/archives/348-Grails_console_import_domennyh_klassov.html#extended&quot;&gt;Продолжить чтение &quot;Grails console: импорт доменных классов&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 21 Nov 2011 14:41:07 +0400</pubDate>
    <guid isPermaLink="false">http://www.baron.su/archives/348-guid.html</guid>
    <category>console</category>
<category>domain class</category>
<category>filter</category>
<category>filters</category>
<category>grails</category>
<category>groovy</category>
<category>import</category>
<category>model</category>
<category>plugin</category>
<category>импорт</category>
<category>модель</category>

</item>
<item>
    <title>Пробуем достичь сверхскорости: Quercus + Wordpress</title>
    <link>http://www.baron.su/archives/339-Probuem_dostich_sverhskorosti_Quercus_+_Wordpress.html</link>
            <category>Архитектура</category>
    
    <comments>http://www.baron.su/archives/339-Probuem_dostich_sverhskorosti_Quercus_+_Wordpress.html#comments</comments>
    <wfw:comment>http://www.baron.su/wfwcomment.php?cid=339</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.baron.su/rss.php?version=2.0&amp;type=comments&amp;cid=339</wfw:commentRss>
    

    <author>nospam@example.com (Балькин Руслан)</author>
    <content:encoded>
    &lt;p&gt;Давным-давно ещё натыкался на штуковину под названием Quercus в J2EE-сервере Resin. Сейчас решил попытаться на своём сервере сэкономить немножко памяти посредством её использования. Сервер – недорогой двухъядерный AMD x64 Athlon 5600+, ОС Debian, 4GB RAM. Дополнительно: ядро 2.6.32-5-amd64, java version &amp;quot;1.6.0_26&amp;quot;, PHP 5.3.8-1~dotdeb.2 with Suhosin-Patch, nginx: nginx version: nginx/1.0.9. Congratulations! Quercus™ Pro 4.0.7 is compiling PHP pages. Have fun! MySQL держит 150 одновременных подключений, nginx – имеет 2 воркера по 1000 подключений каждый, а вот пул php-fpm – имеет всего лишь 50 воркеров (50 воркеров по 64 Мб съедают почти всю память системы, а ведь некоторым задачам в &lt;a title=&quot;Все о блогах на движке WordPress&quot; href=&quot;http://www.baron.su/exit.php?url_id=884&amp;amp;entry_id=339&quot;  onmouseover=&quot;window.status=&#039;http://cms.baron.su/categories/2-Wordpress&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; target=&quot;_blank&quot;&gt;wordpress&lt;/a&gt; уже надо по 128 Мб, именно из-за этого я и посмотрел в сторону Quercus). jetty был запущен с ограничением в 1 Гбайт под heap.&lt;/p&gt;  &lt;p&gt;Мистическим образом для тестов ко мне попала standalone PRO версия Quercus (умеет компилировать PHP в сервлеты, за счёт чего работает быстрее). Версия эта была для 2х 8-ядерных процессоров, так что ресурсы сервера были задействованы по максимуму.&lt;/p&gt;  &lt;p&gt;Были взяты два пустых Wordpress’а, во избежание возможного кэширования запросы к ним выглядели как ?a=b. Первый работал на php-fpm из dotdeb, второй работал на ProQuercusServlet. Прогревание — было, несколько раз порефрешил страницу из браузера (в браузере без ?a=b).&lt;/p&gt;  &lt;p&gt;Работой по HTTP занимались с одной стороны — nginx, с другой стороны — jetty 7.4.2.&lt;/p&gt;  &lt;p&gt;Итак, что мы видим:&lt;/p&gt;  &lt;br /&gt;&lt;a href=&quot;http://www.baron.su/archives/339-Probuem_dostich_sverhskorosti_Quercus_+_Wordpress.html#extended&quot;&gt;Продолжить чтение &quot;Пробуем достичь сверхскорости: Quercus + Wordpress&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sun, 06 Nov 2011 03:18:45 +0400</pubDate>
    <guid isPermaLink="false">http://www.baron.su/archives/339-guid.html</guid>
    <category>ab</category>
<category>benchmark</category>
<category>fpm</category>
<category>performance</category>
<category>php</category>
<category>quercus</category>
<category>siege</category>
<category>wordpress</category>
<category>нагрузочное</category>
<category>производительнось</category>
<category>тестирование</category>

</item>
<item>
    <title>MySQL и автоматическое обновление таймстампов</title>
    <link>http://www.baron.su/archives/329-MySQL_i_avtomaticheskoe_obnovlenie_tajmstampov.html</link>
            <category>Программирование</category>
    
    <comments>http://www.baron.su/archives/329-MySQL_i_avtomaticheskoe_obnovlenie_tajmstampov.html#comments</comments>
    <wfw:comment>http://www.baron.su/wfwcomment.php?cid=329</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.baron.su/rss.php?version=2.0&amp;type=comments&amp;cid=329</wfw:commentRss>
    

    <author>nospam@example.com (Балькин Руслан)</author>
    <content:encoded>
    &lt;p&gt;Несмотря на то, что сейчас такие вещи, как последнее обновление записи, модно делать с помощью ORM, — в том случае, если вы можете быть платформенно-зависимы (всю жизнь с MySQL, или готовы переписать триггеры в случае перехода на другую БД вроде PostgreSQL), возможно, есть смысл воспользоваться триггерами.&lt;/p&gt;  &lt;p&gt;MySQL позволяет сделать один автообновляемый таймстамп, например таким образом:&lt;/p&gt;  &lt;br /&gt;&lt;a href=&quot;http://www.baron.su/archives/329-MySQL_i_avtomaticheskoe_obnovlenie_tajmstampov.html#extended&quot;&gt;Продолжить чтение &quot;MySQL и автоматическое обновление таймстампов&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 20 Sep 2011 23:49:35 +0400</pubDate>
    <guid isPermaLink="false">http://www.baron.su/archives/329-guid.html</guid>
    <category>database</category>
<category>mysql</category>
<category>timestamp</category>
<category>triggers</category>
<category>автоматизация</category>
<category>обновление</category>
<category>триггеры</category>

</item>
<item>
    <title>Оптимизируем производительность фреймворка Grails</title>
    <link>http://www.baron.su/archives/330-Optimiziruem_proizvoditelnost_frejmvorka_Grails.html</link>
            <category>Программирование</category>
    
    <comments>http://www.baron.su/archives/330-Optimiziruem_proizvoditelnost_frejmvorka_Grails.html#comments</comments>
    <wfw:comment>http://www.baron.su/wfwcomment.php?cid=330</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.baron.su/rss.php?version=2.0&amp;type=comments&amp;cid=330</wfw:commentRss>
    

    <author>nospam@example.com (Балькин Руслан)</author>
    <content:encoded>
    &lt;h2&gt;Производительность Grails&lt;/h2&gt;  &lt;p&gt;Рано или поздно, любой программист слышит, что производительность инструмента, который он использует или инструмента, который он сделал — невысока. Будь то какой-нибудь синтетический бенчмарк, или сложные распределённые вычисления. Будь то работа с базой данных или с файлами.&lt;/p&gt;  &lt;p&gt;Все хотят максимальной производительности! Всегда! Немедленно!&lt;/p&gt;  &lt;p&gt;Как известно, часто максимальная производительность достигается путём жертв. Пожертвовать удобством, настраиваемостью, масштабируемостью, поддерживаемостью — то и другое, и третье и четвёртое — можно принести на алтарь производительности.&lt;/p&gt;  &lt;p&gt;Но насколько серьёзны потери? Насколько их можно избежать? Как можно выжать из проекта побольше производительности? Давайте посмотрим на примере &lt;strong&gt;Grails&lt;/strong&gt;.&lt;/p&gt;  &lt;br /&gt;&lt;a href=&quot;http://www.baron.su/archives/330-Optimiziruem_proizvoditelnost_frejmvorka_Grails.html#extended&quot;&gt;Продолжить чтение &quot;Оптимизируем производительность фреймворка Grails&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 23 Sep 2011 22:41:11 +0400</pubDate>
    <guid isPermaLink="false">http://www.baron.su/archives/330-guid.html</guid>
    <category>bottleneck</category>
<category>grails</category>
<category>groovy</category>
<category>groovy++</category>
<category>оптимизация</category>
<category>производительность</category>
<category>профайлер</category>
<category>профайлинг</category>

</item>
<item>
    <title>Компонент Tree во Flex. Скажем &quot;нет&quot; XML dataProvider'ам.</title>
    <link>http://www.baron.su/archives/38-Komponent_Tree_vo_Flex._SkaZhem_net_XML_dataProvideram..html</link>
            <category>FLEX</category>
    
    <comments>http://www.baron.su/archives/38-Komponent_Tree_vo_Flex._SkaZhem_net_XML_dataProvideram..html#comments</comments>
    <wfw:comment>http://www.baron.su/wfwcomment.php?cid=38</wfw:comment>

    <slash:comments>11</slash:comments>
    <wfw:commentRss>http://www.baron.su/rss.php?version=2.0&amp;type=comments&amp;cid=38</wfw:commentRss>
    

    <author>nospam@example.com (Балькин Руслан)</author>
    <content:encoded>
    &lt;p&gt;Документация по &lt;b&gt;Flex&lt;/b&gt;, равно как и почти весь интернет, усеяны примерами, как наполнить &lt;b&gt;Tree&lt;/b&gt;, используя &lt;b&gt;XML &lt;/b&gt;документ. Все, конечно, замечательно - но это так ужасно - каждый раз парсить одни и те же элементы. А между тем, у нас всегда есть замечательный способ - работа с массивами и объектами.&lt;/p&gt;&lt;p&gt;&amp;quot;Под катом&amp;quot; - исходный код, используемый во flash клиенте &lt;b&gt;игры Берсерк Онлайн&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Дано: Список комнат игрового мира.&lt;/p&gt;&lt;p&gt;Требуется: Отобразить его древовидную структуру, по клику разрешить менять комнату.&lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://www.baron.su/archives/38-Komponent_Tree_vo_Flex._SkaZhem_net_XML_dataProvideram..html#extended&quot;&gt;Продолжить чтение &quot;Компонент Tree во Flex. Скажем &amp;quot;нет&amp;quot; XML dataProvider&#039;ам.&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 08 Nov 2007 04:24:25 +0300</pubDate>
    <guid isPermaLink="false">http://www.baron.su/archives/38-guid.html</guid>
    <category>actionscript</category>
<category>flex</category>
<category>room</category>
<category>tree</category>

</item>
<item>
    <title>Grails и коварный метод count()</title>
    <link>http://www.baron.su/archives/328-Grails_i_kovarnyj_metod_count.html</link>
            <category>Архитектура</category>
    
    <comments>http://www.baron.su/archives/328-Grails_i_kovarnyj_metod_count.html#comments</comments>
    <wfw:comment>http://www.baron.su/wfwcomment.php?cid=328</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.baron.su/rss.php?version=2.0&amp;type=comments&amp;cid=328</wfw:commentRss>
    

    <author>nospam@example.com (Балькин Руслан)</author>
    <content:encoded>
    &lt;p&gt;Иной раз казалось бы, вполне себе невинный и очень даже простой метод count() может стать серьёзной проблемой для производительности.&lt;/p&gt;  &lt;p&gt;Предположим, что у нас есть два доменных класса: &lt;strong&gt;Игрок&lt;/strong&gt; и &lt;strong&gt;Предмет&lt;/strong&gt;. Имеем реляцию: &lt;strong&gt;Игрок&lt;/strong&gt; hasMany &lt;strong&gt;Предмет&lt;/strong&gt;. Классы будут называться: &lt;tt&gt;Player&lt;/tt&gt;, &lt;tt&gt;Item&lt;/tt&gt;. Поле с коллекцией предметов — &lt;tt&gt;items&lt;/tt&gt;. Коллекция предметов нужна нечасто, поэтому для её подгрузки используется &lt;tt&gt;lazy-loading&lt;/tt&gt;.&lt;/p&gt;  &lt;p&gt;В случае, если нам необходимо просто подсчитать количество предметов, мы могли бы использовать такой код:&lt;/p&gt;  &lt;pre class=&quot;java&quot;&gt;&lt;code class=&quot;java&quot;&gt;player.items.count()&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Но гораздо быстрее будет работать код&lt;/p&gt;&lt;pre class=&quot;java&quot;&gt;&lt;code class=&quot;java&quot;&gt;Item.countByPlayer(player)&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Попробуем разобраться, что же происходит?&lt;/p&gt;&lt;br /&gt;
 &lt;br /&gt;&lt;a href=&quot;http://www.baron.su/archives/328-Grails_i_kovarnyj_metod_count.html#extended&quot;&gt;Продолжить чтение &quot;Grails и коварный метод count()&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 19 Sep 2011 01:01:36 +0400</pubDate>
    <guid isPermaLink="false">http://www.baron.su/archives/328-guid.html</guid>
    <category>countby</category>
<category>grails</category>
<category>lazy loading</category>
<category>lazy-loading</category>
<category>коллекции</category>
<category>оптимизация</category>
<category>подсчёт</category>

</item>
<item>
    <title>Почему Groovy один из лучших языков программирования</title>
    <link>http://www.baron.su/archives/321-Pochemu_Groovy_odin_iz_luchshih_Jazykov_programmirovaniJa.html</link>
            <category>Программирование</category>
    
    <comments>http://www.baron.su/archives/321-Pochemu_Groovy_odin_iz_luchshih_Jazykov_programmirovaniJa.html#comments</comments>
    <wfw:comment>http://www.baron.su/wfwcomment.php?cid=321</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.baron.su/rss.php?version=2.0&amp;type=comments&amp;cid=321</wfw:commentRss>
    

    <author>nospam@example.com (Балькин Руслан)</author>
    <content:encoded>
    &lt;p&gt;Моё первое знакомство с &lt;strong&gt;Groovy&lt;/strong&gt; было не вполне удачным. Так, обнаружилась достаточно невысокая производительность, тормоза при использовании статической типизации, и отсутствие масштабных плюсов по сравнению с &lt;strong&gt;Java&lt;/strong&gt;. В тот момент единственное, что я был готов отдать на откуп Groovy, была отладочная консоль сервера. Например, у нас в сервере используется JavaScript от Mozilla (Rhino), ещё с тех пор, когда его не было в JRE.&lt;/p&gt;  &lt;p&gt;Однако позднее пришлось «допиливать» проект, написанный на Groovy с использованием фреймворка Grails, и тогда в этот язык я влюбился.&lt;/p&gt;  &lt;p&gt;Я могу часами (ну ладно, не часами — минутами) придумывать, как сделать рефакторинг Java кода, чтобы он стал более читаемым, более производительным, более грамотно организованным. Но на Groovy можно зайти ещё дальше. В сети есть интересный пример, как программу на Java (конечно же, являющуюся и валидной программой на Groovy), можно переписать.&lt;/p&gt;  &lt;p&gt;Кстати, самое первое и очень важное преимущество Groovy заключается в том, что &lt;strong&gt;программа на Java — это программа на Groovy&lt;/strong&gt;. Вовсе необязательно переписывать код! То, что все библиотеки Java, написанные за последние ≈15 лет, можно использовать и в Groovy — и так понятно. Но этот факт тоже не стоит недооценивать. Ну да ладно, вернёмся к рефакторингу:&lt;/p&gt;  &lt;br /&gt;&lt;a href=&quot;http://www.baron.su/archives/321-Pochemu_Groovy_odin_iz_luchshih_Jazykov_programmirovaniJa.html#extended&quot;&gt;Продолжить чтение &quot;Почему Groovy один из лучших языков программирования&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 16 Aug 2011 22:01:38 +0400</pubDate>
    <guid isPermaLink="false">http://www.baron.su/archives/321-guid.html</guid>
    <category>groovy</category>
<category>java</category>
<category>jvm</category>
<category>perl</category>
<category>регэкспы</category>
<category>рефакторинг</category>

</item>
<item>
    <title>Ещё немножко Groovy магии</title>
    <link>http://www.baron.su/archives/322-Ewjo_nemnoZhko_Groovy_magii.html</link>
            <category>Программирование</category>
    
    <comments>http://www.baron.su/archives/322-Ewjo_nemnoZhko_Groovy_magii.html#comments</comments>
    <wfw:comment>http://www.baron.su/wfwcomment.php?cid=322</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.baron.su/rss.php?version=2.0&amp;type=comments&amp;cid=322</wfw:commentRss>
    

    <author>nospam@example.com (Балькин Руслан)</author>
    <content:encoded>
    &lt;p&gt;Я уже &lt;a href=&quot;http://www.baron.su/exit.php?url_id=849&amp;amp;entry_id=322&quot;  onmouseover=&quot;window.status=&#039;http://baron.su/archives/321-Pochemu_Groovy_odin_iz_luchshih_Jazykov_programmirovaniJa.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; target=&quot;_blank&quot; title=&quot;Groovy: пожалуй, один из лучших языков программирования&quot;&gt;писал, что считаю Groovy одним из самых перспективных языков программирования и даже приводил тому примеры&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Но этот разговор не имеет ни начала ни конца, и интересные примеры всегда могут придумываться «по ходу дела». Так, например, подвернулся такой код на &lt;strong&gt;Groovy&lt;/strong&gt;:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;groovy&quot;&gt;string = &#039;hippopotamus&#039;
assert string - &#039;hippo&#039; - &#039;mus&#039; + &#039;to&#039; == &#039;potato&#039;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;p&gt;Считаю, что это просто гениально :) Когда-то давным-давно, когда я ещё учился в школе и ничего толком программировать не умел, я ушёл с &lt;strong&gt;Basic&lt;/strong&gt; к &lt;strong&gt;Pascal&lt;/strong&gt; из-за более качественной работы со строками. Ах, если бы в то время существовали такие прикольные штуки, как &lt;strong&gt;Groovy&lt;/strong&gt; или хотя бы &lt;strong&gt;Java&lt;/strong&gt;!&lt;/p&gt;&lt;br /&gt;
 &lt;br /&gt;&lt;a href=&quot;http://www.baron.su/archives/322-Ewjo_nemnoZhko_Groovy_magii.html#extended&quot;&gt;Продолжить чтение &quot;Ещё немножко Groovy магии&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 16 Aug 2011 22:27:07 +0400</pubDate>
    <guid isPermaLink="false">http://www.baron.su/archives/322-guid.html</guid>
    <category>basic</category>
<category>code</category>
<category>groovy</category>
<category>newify</category>
<category>pascal</category>
<category>python</category>
<category>syntax sugard</category>
<category>код</category>
<category>синтаксис</category>

</item>
<item>
    <title>Groovy и повседневные скрипты</title>
    <link>http://www.baron.su/archives/320-Groovy_i_povsednevnye_skripty.html</link>
            <category>Программирование</category>
    
    <comments>http://www.baron.su/archives/320-Groovy_i_povsednevnye_skripty.html#comments</comments>
    <wfw:comment>http://www.baron.su/wfwcomment.php?cid=320</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.baron.su/rss.php?version=2.0&amp;type=comments&amp;cid=320</wfw:commentRss>
    

    <author>nospam@example.com (Балькин Руслан)</author>
    <content:encoded>
    &lt;p&gt;Традиционно, уже много-много лет, ещё с 1999 года, кажется, для повседневных мелких задач по экстракции или обработке данных я использую Perl. Не сказать, что я за это время стал мега-супер-гуру, но могу написать такой скрипт, от прочтения которого у непосвящённого человека снесёт кукушечку.&lt;/p&gt;  &lt;p&gt;Именно благодаря Perl, не сносит кукушечку у меня, в общем-то Java’иста, когда я смотрю на чьи-то творения на JavaScript, или того хуже, на каких-нибудь Erlang или Scala. Perl вообще подходящий язык для того, чтобы тренировать кукушечку, я считаю. Тем более, если им заниматься 12 лет.&lt;/p&gt;  &lt;p&gt;Сегодня решил-таки сделать скриптец на Groovy. Причём именно что такой скриптец, который почти идеально смотрелся бы на perl.&lt;/p&gt;  &lt;br /&gt;&lt;a href=&quot;http://www.baron.su/archives/320-Groovy_i_povsednevnye_skripty.html#extended&quot;&gt;Продолжить чтение &quot;Groovy и повседневные скрипты&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 11 Aug 2011 17:13:20 +0400</pubDate>
    <guid isPermaLink="false">http://www.baron.su/archives/320-guid.html</guid>
    <category>groovy</category>
<category>regexp</category>
<category>script</category>
<category>паттерн</category>
<category>регэксп</category>
<category>скрипт</category>

</item>
<item>
    <title>Делаем быстренько проект на Hibernate</title>
    <link>http://www.baron.su/archives/310-Delaem_bystrenko_proekt_na_Hibernate.html</link>
            <category>Архитектура</category>
    
    <comments>http://www.baron.su/archives/310-Delaem_bystrenko_proekt_na_Hibernate.html#comments</comments>
    <wfw:comment>http://www.baron.su/wfwcomment.php?cid=310</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://www.baron.su/rss.php?version=2.0&amp;type=comments&amp;cid=310</wfw:commentRss>
    

    <author>nospam@example.com (Балькин Руслан)</author>
    <content:encoded>
    &lt;p&gt;Сначала создадим проект в Мейвене: &lt;tt&gt;mvn archetype:create -DarchetypeGroupId=org.apache.maven.archetypes -DgroupId=ru.bytexgames.test -DartifactId=server&lt;/tt&gt;&lt;/p&gt;  &lt;p&gt;Редактируем pom.xml. Нам нужно добавить наркотическую зависимость проекта от Hibernate, для чего мы идём на &lt;a href=&quot;http://www.baron.su/exit.php?url_id=837&amp;amp;entry_id=310&quot; title=&quot;http://mvnrepository.com/&quot;  onmouseover=&quot;window.status=&#039;http://mvnrepository.com/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;http://mvnrepository.com/&lt;/a&gt; и находим там параметры для зависимости hibernate:&lt;/p&gt;  &lt;p&gt;&lt;code style=&quot;width: 718px; height: 131px&quot; class=&quot;xml&quot;&gt;&amp;lt;dependency&amp;gt;      &lt;br /&gt;&amp;lt;groupId&amp;gt;org.hibernate&amp;lt;/groupId&amp;gt;       &lt;br /&gt;&amp;lt;artifactId&amp;gt;hibernate-core&amp;lt;/artifactId&amp;gt;       &lt;br /&gt;&amp;lt;version&amp;gt;3.6.4.Final&amp;lt;/version&amp;gt;       &lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;/code&gt;&lt;/p&gt;  &lt;br /&gt;&lt;a href=&quot;http://www.baron.su/archives/310-Delaem_bystrenko_proekt_na_Hibernate.html#extended&quot;&gt;Продолжить чтение &quot;Делаем быстренько проект на Hibernate&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 26 May 2011 16:26:14 +0400</pubDate>
    <guid isPermaLink="false">http://www.baron.su/archives/310-guid.html</guid>
    <category>continous integration</category>
<category>hibernate</category>
<category>maven</category>
<category>pom</category>
<category>teamcity</category>

</item>
<item>
    <title>О пользе наследования</title>
    <link>http://www.baron.su/archives/289-O_polze_nasledovaniJa.html</link>
            <category>Программирование</category>
    
    <comments>http://www.baron.su/archives/289-O_polze_nasledovaniJa.html#comments</comments>
    <wfw:comment>http://www.baron.su/wfwcomment.php?cid=289</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.baron.su/rss.php?version=2.0&amp;type=comments&amp;cid=289</wfw:commentRss>
    

    <author>nospam@example.com (Балькин Руслан)</author>
    <content:encoded>
    &lt;p&gt;Уже настолько вжился в наши мегабайты кода, что забыл, что где-то существует что-то еще. Пишу простенькое приложение, параллельно изучая Griffon (млять, уже часов 7 пишу, фигасебе простенькое). Большую часть времени потратил на то, чтобы создать собственный плагин, аналог плагина GlazedLists.&lt;/p&gt;&lt;p&gt;Про то, что можно унаследоваться от нужного класса, сообразил лишь к двум часам ночи. К трем сообразил, что унаследоваться не получится, но можно скопировать класс целиком и немножко поменять фабрику.&lt;/p&gt;&lt;br /&gt;
 &lt;br /&gt;&lt;a href=&quot;http://www.baron.su/archives/289-O_polze_nasledovaniJa.html#extended&quot;&gt;Продолжить чтение &quot;О пользе наследования&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 03 Jan 2011 04:30:50 +0300</pubDate>
    <guid isPermaLink="false">http://www.baron.su/archives/289-guid.html</guid>
    
</item>
<item>
    <title>О прошлом и будущем</title>
    <link>http://www.baron.su/archives/280-O_proshlom_i_buduwem.html</link>
            <category>Программирование</category>
    
    <comments>http://www.baron.su/archives/280-O_proshlom_i_buduwem.html#comments</comments>
    <wfw:comment>http://www.baron.su/wfwcomment.php?cid=280</wfw:comment>

    <slash:comments>3</slash:comments>
    <wfw:commentRss>http://www.baron.su/rss.php?version=2.0&amp;type=comments&amp;cid=280</wfw:commentRss>
    

    <author>nospam@example.com (Балькин Руслан)</author>
    <content:encoded>
    &lt;p&gt;Так сложились звёзды, что меня потянуло в сторону &lt;strong&gt;Enterprise Java&lt;/strong&gt;. Спринги, Хибернейты, серверы приложений - всякая такая фигня. Словом, жизнь цикличная. Так и вспоминаются старые деньки, когда я впервые столкнулся с этой областью программирования. У меня в то время был Duron 900 Mhz и 512Mb оперативки (впрочем, пришлось скрепя сердце, докупить еще 512 - и всё равно тормозило).&lt;/p&gt;&lt;p&gt;Поковырявшись в последнем Spring, могу заметить, что он стал лучше. Для небольших проектов - очень удобна настройка без бешеной кучи XML, например.&lt;/p&gt;&lt;p&gt;А будущее… оно, конечно, может и не наступить, но всё же:&lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://www.baron.su/archives/280-O_proshlom_i_buduwem.html#extended&quot;&gt;Продолжить чтение &quot;О прошлом и будущем&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 28 Oct 2010 23:56:38 +0400</pubDate>
    <guid isPermaLink="false">http://www.baron.su/archives/280-guid.html</guid>
    <category>gorm</category>
<category>grails</category>
<category>groovy</category>
<category>hibernate</category>
<category>java</category>
<category>orm</category>
<category>play</category>
<category>roo</category>
<category>scala</category>
<category>spring</category>
<category>spring roo</category>
<category>будущее</category>
<category>фреймворк</category>
<category>эффективность</category>
<category>я</category>

</item>
<item>
    <title>Выполнение простых SQL запросов из Grails</title>
    <link>http://www.baron.su/archives/278-Vypolnenie_prostyh_SQL_zaprosov_iz_Grails.html</link>
            <category>Программирование</category>
    
    <comments>http://www.baron.su/archives/278-Vypolnenie_prostyh_SQL_zaprosov_iz_Grails.html#comments</comments>
    <wfw:comment>http://www.baron.su/wfwcomment.php?cid=278</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.baron.su/rss.php?version=2.0&amp;type=comments&amp;cid=278</wfw:commentRss>
    

    <author>nospam@example.com (Балькин Руслан)</author>
    <content:encoded>
    &lt;p&gt;Невероятно, но факт! Помимо &lt;strong&gt;GORM&lt;/strong&gt;, в &lt;strong&gt;Grails&lt;/strong&gt; есть и обычные SQL запросы (сарказм!). И, соответственно, обновление базы частенько приходится делать именно через них. До этого момента базу я обновлял через командную строку psql. Но совсем недавно подумал “Какого чёрта? Есть же &lt;strong&gt;Groovy Console&lt;/strong&gt;” (это такой полезный плагин для Grails, который позволяет выполнять любые Groovy скрипты на вашем сервере).&lt;/p&gt;&lt;p&gt;Для начала установим плагин console:&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;grails install-plugin console&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Зайдя на ваш сервер &lt;tt&gt;http://localhost:8080/console/&lt;/tt&gt;, мы увидим консоль Grails. В этой консоли можно просто ввести небольшой скрипт, который всё сделает за вас.&lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://www.baron.su/archives/278-Vypolnenie_prostyh_SQL_zaprosov_iz_Grails.html#extended&quot;&gt;Продолжить чтение &quot;Выполнение простых SQL запросов из Grails&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 15 Oct 2010 16:14:35 +0400</pubDate>
    <guid isPermaLink="false">http://www.baron.su/archives/278-guid.html</guid>
    <category>console</category>
<category>grails</category>
<category>sql</category>
<category>выполнение</category>
<category>консоль</category>

</item>

</channel>
</rss>
