<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-139235838835518841</id><updated>2011-04-22T06:42:47.591+04:00</updated><category term='grails'/><title type='text'>Sergey Nebolsin's Blog</title><subtitle type='html'>Groovy on Grails и не только</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://snebolsin.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/139235838835518841/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://snebolsin.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Sergey Nebolsin</name><uri>http://www.blogger.com/profile/04858935754904262708</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_mXxw0VS2UAU/TI4JzomcmoI/AAAAAAAABV0/UzgAyFkMuHY/S220/DSC07385.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>3</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-139235838835518841.post-6430921881942976229</id><published>2007-05-01T21:41:00.000+04:00</published><updated>2007-05-01T21:55:30.772+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='grails'/><title type='text'>Выпущен Grails 0.5</title><content type='html'>Результатом напряжённой работы команды Grails-разработчиков стал сегодняшний выпуск 0.5 версии популярного веб-фреймворка &lt;a href="http://grails.codehaus.org"&gt;Grails&lt;/a&gt;, совпавший с выходом нового релиза &lt;a href="http://groovy.codehaus.org"&gt;Groovy 1.1-beta1&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Скачать новый релиз можно здесь: &lt;a href="http://grails.org/Download"&gt;http://grails.org/Download&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Этот релиз включает в себя следующие основные улучшения:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Пользовательские URL Mappings&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Командные объекты / проверка форм&lt;/li&gt;&lt;br /&gt;&lt;li&gt;List &amp; Map поддержка в GORM&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Поддержка композиций в доменных классах (Hibernate "components")&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Base64 кодек&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Отслеживание зависимостей библиотек с помощью Ivy&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Метаданные проекта и поддержка версий&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Механизм событий в скриптах&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Автоматическое добавление объекта 'log' ко всем артефактам&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Новое Artefact API доступно для плагинов&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Полное описание релиза, собранное разработчиком Grails Марком Палмером, можно прочитать тут:&lt;br /&gt;&lt;a href="http://docs.codehaus.org/display/GRAILS/0.5+Release+Notes"&gt;http://docs.codehaus.org/display/GRAILS/0.5+Release+Notes&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;JIRA change log можно посмотреть здесь:&lt;br /&gt;&lt;a href="http://jira.codehaus.org/browse/GRAILS?report=com.atlassian.jira.plugin.system.project:changelog-panel"&gt;http://jira.codehaus.org/browse/GRAILS?report=com.atlassian.jira.plugin.system.project:changelog-panel&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Этот релиз собран с помощью Groovy 1.1 beta и включает все новые функции и улучшения последнего релиза Groovy:&lt;br /&gt;&lt;a href="http://docs.codehaus.org/display/GROOVY/2007/04/30/Groovy+1.1-beta-1+with+annotation+support"&gt;http://docs.codehaus.org/display/GROOVY/2007/04/30/Groovy+1.1-beta-1+with+annotation+support&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/139235838835518841-6430921881942976229?l=snebolsin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://snebolsin.blogspot.com/feeds/6430921881942976229/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=139235838835518841&amp;postID=6430921881942976229' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/139235838835518841/posts/default/6430921881942976229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/139235838835518841/posts/default/6430921881942976229'/><link rel='alternate' type='text/html' href='http://snebolsin.blogspot.com/2007/05/grails-05.html' title='Выпущен Grails 0.5'/><author><name>Sergey Nebolsin</name><uri>http://www.blogger.com/profile/04858935754904262708</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_mXxw0VS2UAU/TI4JzomcmoI/AAAAAAAABV0/UzgAyFkMuHY/S220/DSC07385.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-139235838835518841.post-8534765681842428695</id><published>2007-04-24T20:13:00.000+04:00</published><updated>2007-04-24T20:29:45.091+04:00</updated><title type='text'>Grails 0.5 RC1</title><content type='html'>Мы опубликовали пререлиз 0.5 версии Grails.&lt;br /&gt;&lt;br /&gt;Сейчас самое подходящее время чтобы испробовать его, и если возникнут замечания, отразить их в Jira. Тогда исправления будут включены в финальный релиз 0.5&lt;br /&gt;&lt;br /&gt;Скачать 0.5-RC1 можно здесь: &lt;a href="http://grails.org/Download"&gt;http://grails.org/Download&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;При переходе на 0.5 необходимо сделать backup вашего приложения, а затем выполнить:&lt;br /&gt;&lt;code&gt;grails clean&lt;/code&gt;&lt;br /&gt;&lt;code&gt;grails upgrade&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/139235838835518841-8534765681842428695?l=snebolsin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://snebolsin.blogspot.com/feeds/8534765681842428695/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=139235838835518841&amp;postID=8534765681842428695' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/139235838835518841/posts/default/8534765681842428695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/139235838835518841/posts/default/8534765681842428695'/><link rel='alternate' type='text/html' href='http://snebolsin.blogspot.com/2007/04/grails-05-rc1.html' title='Grails 0.5 RC1'/><author><name>Sergey Nebolsin</name><uri>http://www.blogger.com/profile/04858935754904262708</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_mXxw0VS2UAU/TI4JzomcmoI/AAAAAAAABV0/UzgAyFkMuHY/S220/DSC07385.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-139235838835518841.post-8107326063433008334</id><published>2007-03-19T00:52:00.000+03:00</published><updated>2007-03-19T19:56:47.957+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='grails'/><title type='text'>Несколько новых функций в Grails</title><content type='html'>На этой неделе я добавил несколько новых функций в 0.5 snapshot &lt;a href="http://grails.org/"&gt;Grails&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Во-первых, теперь можно задать "область уникальности" для &lt;a href="http://grails.codehaus.org/Validation+Reference#ValidationReference-unique"&gt;unique constraint&lt;/a&gt;. Допустим, я разрабатываю приложение для работы с сотрудниками. Каждый сотрудник имеет собственный логин, также сотрудники разбиты на группы, а группы в свою очередь входят в подразделения. Предположим также, что специфика моего приложения диктует мне следующие ограничения доменной модели:  не может быть двух сотрудников с одинаковыми логинами в одной группе одного подразделения, и не может быть двух групп с одним именем в пределах одного подразделения. С новым функционалом подобные ограничения легко могут быть отображены в доменном классе:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;class Employee {&lt;br /&gt;   String login&lt;br /&gt;   String group&lt;br /&gt;   String department&lt;br /&gt;&lt;br /&gt;   static constraints = {&lt;br /&gt;       login(unique:['group','department'])&lt;br /&gt;       group(unique:'department')&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Вот и все. Очень просто, не правда ли? Просто указываем в качестве параметра к unique constraint имя другого поля того же класса (или список таких имён) - и в процессе валидации будет произведена проверка, что совокупность значений полей будет уникальна.&lt;br /&gt;&lt;br /&gt;Другое изменение - это новый динамический метод '&lt;a href="http://grails.codehaus.org/DomainClass+Dynamic+Methods#DomainClassDynamicMethods-getAll"&gt;getAll&lt;/a&gt;' у доменных классов. Метод принимает список идентификаторов объектов в качестве аргумента и возвращает список соответствующих сущностей в том же порядке. Если объекты для каких-либо идентификаторов не найдены, то на соответствующем месте результирующего списка будет null. При вызове без параметров метод возвращает список всех объектов.&lt;br /&gt;&lt;br /&gt;И последнее изменение - возможность использования именованных HQL параметров в динамических методах '&lt;a href="http://grails.codehaus.org/DomainClass+Dynamic+Methods#DomainClassDynamicMethods-find"&gt;find&lt;/a&gt;', '&lt;a href="http://grails.codehaus.org/DomainClass+Dynamic+Methods#DomainClassDynamicMethods-findAll"&gt;findAll&lt;/a&gt;' и '&lt;a href="http://grails.codehaus.org/DomainClass+Dynamic+Methods#DomainClassDynamicMethods-executeQuery"&gt;executeQuery&lt;/a&gt;'. Теперь эти методы могут принимать в качестве аргумента не только List позиционных параметров, но и Map именованных параметров в формате [имя:значение]. Примеры использования можно посмотреть в документации по приведённым ссылкам.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/139235838835518841-8107326063433008334?l=snebolsin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://snebolsin.blogspot.com/feeds/8107326063433008334/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=139235838835518841&amp;postID=8107326063433008334' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/139235838835518841/posts/default/8107326063433008334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/139235838835518841/posts/default/8107326063433008334'/><link rel='alternate' type='text/html' href='http://snebolsin.blogspot.com/2007/03/grails.html' title='Несколько новых функций в Grails'/><author><name>Sergey Nebolsin</name><uri>http://www.blogger.com/profile/04858935754904262708</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_mXxw0VS2UAU/TI4JzomcmoI/AAAAAAAABV0/UzgAyFkMuHY/S220/DSC07385.JPG'/></author><thr:total>0</thr:total></entry></feed>
