User's collector

Внимание!   Данная опция будет доступна только после того, как вы авторизуетесь.
   запомнить меня 
15 мая 2010

Релиз Grails 1.3

На днях вышла новая версия фреймворка для построения веб-приложений Grails 1.3. Сами авторы Grails называют это обновление важным (major). Вот что есть новенького:

  • переход на Groovy 1.7;
  • поддержка JUnit 4;
  • поддержка Maven-репозитария для Grails-плагинов;
  • декларативное указание зависимостей между различными плагинами;
  • dirty checking в GORM (проверка доменного объекта на наличие измененных, но еще не сохраненных свойств);
  • поддержка именованных выборок в доменных объектах. Кроме того, к именованной выборке можно применять еще несколько (именованных или динамических) выборок;
  • глобальный для всего приложения лейаут, который будут использовать все GSP-странички, у которых он не задан явно.

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

Ну и напоследок я хотел бы сказать, что этот небольшой релиз своим примером показывает, насколько opensource сообщества могут грамотно и слаженно работать над одним проектом, реализуя действительно важные вещи, вместо того, чтобы украшать продукт ленточками и бантиками для того, чтобы отчет о проекте выглядел привлекательно в глазах руководства, забивая при этом большущий болт на имеющиеся проблемы и недостатки.

Комментариев нет

Теги:

Статья о том, как добавить в JetBrains Intellij IDEA 9 проверку русской орфографии. Кроме того, она окажется полезной и для других IDEA-based сред разработки: MPS, RubyMine, WebStorm, PyCharm, PhpStorm.

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

Комментариев нет

Теги:

Помните, я обращался к вам с просьбой поддержать своим голосом баг-репорт в Adobe Jira? Так вот, у этой истории есть продолжение.

В настоящий момент за баг проголосовало 58 человек. Спустя 1 год 2 месяца и 27 дней после создания баг-репорта один из разработчиков Flash Player под Linux — некто Xiaowei Lin — опубликовал следующие два комментария:

Thank you for reporting this issue to us, we’re investigating this.

и

mail to submitter for further information.

После этого статус баг-репорта был сменен на «Waiting on Info». Оперативно работаем, Adobe! Я уж думал, что раньше следующего февраля не возьмутся за него, поскольку Linux все таки не самая приоритетная платформа для Adobe. Но к счастью, мои предположения не оправдались. Теперь еще осталось дождаться когда баг пофиксят.

Спасибо всем проголосовавшим товарищам. Теперь при примерно представляем себе критическую массу голосов, которые нужно отдать за таск, чтобы за него наконец взялись разработчики: что-то около 50-60. :)

Комментариев нет

Теги:
26 апреля 2010

Flex in a Week

Новость скорее всего не нова, но тем не менее она заслуживает внимания.

В Flex Developer Center появилась серия видео-уроков под общим названием «Flex in a Week». Благодаря этим урокам за пять дней (два выходных дня в расчет не берутся) вы можете получить общее представление об основных концепциях Flex Framework и после этого использовать полученные знания на практике.

Я всегда был сторонником видео-обучения, поскольку подобный вид подачи материала позволяет в краткой и — что важно — наглядной форме изложить основные моменты. В общем, для начинающих изучать Flex 4 крайне рекомендую — «Flex in a Week».

Комментариев нет

Теги:
22 марта 2010

Вышел Adobe Flash Builder 4

Сегодня на сайте Adobe.com появилась релизная версия Adobe Flash Builder 4, а следовательно и Adobe Flex 4 SDK.

Я этот момент уже достаточно давно поджидаю, поскольку Flex 4 SDK beta2, при помощи которой я до этого времени компилировал разрабатываемое приложение, была нестабильна. В общем, ура, товарищи! :)

11 комментариев

Теги:

Linux — хорошая система для разработчика. В ней есть много «полезностей», которых нет под другими платформами. Но вот с разработкой Flash/Flex-приложений в ней есть определенные трудности. Это связанно с тем, что Debug Flash Player под Linux-ом завершает дебаг-сессию через 2-60 секунд после ее запуска. Согласитесь, что не очень удобно разрабатывать приложения, не имея возможности толком их продебажить.

Больше года назад (а конкретнее 2 февраля 2009 года) в Adobe Jira был создан таск с описанием этого бага. С тех пор разработчики Flash Player не сделали в этом направлении ни-че-го. Поэтому я обращаюсь ко всем, кого заботит этот вопрос. Давайте дружно проголосуем за этот баг и попытаемся таким образом общими усилиями собрать сто тыщ мильонов хотя бы сотню голосов, чтобы разработчики наконец-то обратили свое внимание на него, изменили его приоритет с «None» на «Normal» и взялись за его исправление.

Заранее спасибо всем поддержавшим.

8 комментариев

Теги:

Недавно столкнулся со следующей задачей: на одном веб-сервере под управлением Windows Server 2003 необходимо было установить несколько экземпляров Apache Tomcat 6 для того, чтобы в каждом из них «крутилось» свое собственное приложение. Установить нужно было таким образом, чтобы каждый из этих сервлет-контейнеров являлся в системе обособленным сервисом со своей конфигурацией, параметрами автозапуска, отдельным пунктом в списке установленных программ системы, ну и, в качестве бонуса, собственной иконкой в трее. :)

Windows Server 2003 tray

Посмотрев решения подобной задачи в интернете, обнаружил, что, пожалуй, единственным способом ее решения будет самостоятельная правка реестра системы. Это связано с тем, что стандартный инсталлятор Apache Tomcat 6 не поддерживает возможности его установки в виде нескольких сервисов и не позволяет разнести настройки каждого из экземпляров по отдельным веткам реестра.

Здесь я хочу сделать важное предупреждение. Описываемая в статье техника является работоспособной и проверенной мной на собственном опыте и на реальном рабочем сервере. Она даже не является хаком, поскольку, будь инсталлятор немного более грамотным, он бы выполнял ее автоматически. Я не проверял, но скорее всего эта техника будет работать и на Windows Server 2008. Выполняемые процедуры не затрагивают никаких других настроек и веток реестра, кроме тех, которые непосредственно относятся к каждому отдельному сервису Apache Tomcat. Однако я не несу никакой ответственности за возможный ущерб, связанный с непосредственным, а так же с неосторожным или неправильным применением этой техники. Используйте ее на свой страх и риск. И не забудьте сделать резервную копию важных данных перед началом процедуры. :)

Итак, поехали.

  1. Установите первый экземпляр Apache Tomcat в отдельную директорию, например, в C:\Tomcat6_1. На последнем шаге мастера установки нужно убрать галочку Run Tomcat.
  2. Откройте редактор реестра regedit: StartRun…regedit → нажмите Enter.
  3. Переместитесь к ветке реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tomcat6 и переименуйте ее из Tomcat6 в Tomcat6_1.
  4. Здесь же измените значение свойства DisplayName с Apache Tomcat на Apache Tomcat 6 (1). Именно под этим именем теперь будет отображаться сервис в списке локальных служб системы. Чтобы посмотреть список служб вашей системы выполните следующую последовательность действий: кнопка StartRun…services.msc → клавиша Enter.
  5. System services

  6. Теперь измените часть значения свойства ImagePath с …//RS//Tomcat6 на …//RS//Tomcat6_1. Именно с этим именем будет запускаться экземпляр службы. Это значение понадобится нам в шаге 9.
  7. Далее переходим к ветке HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\Tomcat6 и переименовываем ее в Tomcat6_1. В дальнейшем это позволит нам установить новый экземпляр Apache Tomcat без перезаписи настроек устанавливаемого в настоящий момент экземпляра.
  8. По тем же самым причинам меняем название ветки HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Tomcat\6.0 на 6.0_1.
  9. Теперь переходим к ветке HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run и меняем имя ключа с ApacheTomcatMonitor на ApacheTomcatMonitor_1. Это имя приложения по управлению службой. Его изменение позволяет нам избежать перезаписи этого ключа при установке следующих экземпляров Tomcat и управлять каждым из сервисов при помощи отдельного окна приложения.
  10. Service monitor

  11. Теперь изменим завершающую часть значения этого ключа с …Tomcat6 на …Tomcat6_1. Внимание: это значение должно совпадать с тем, которое мы присвоили ключу ImagePath в шаге 5.
  12. Для того, чтобы иметь возможность потом деинсталлировать по отдельности каждый из установленных экземпляров Tomcat, мы должны перейти в ветку реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Apache Tomcat 6.0 и изменить ее название на Apache Tomcat 6.0_1. Это позволит нам избежать перезаписи данных, необходимых для деинсталляции приложения, во время установки последующих экземпляров Apache Tomcat. Здесь же можно изменить значение ключа DisplayName на Apache Tomcat 6.0 (1).
  13. Installed applications

  14. Перезагрузите систему, чтобы изменения вступили в силу.
  15. Для того чтобы распределить установленные экземпляры Tomcat по разным локальным портам, мы должны правильно сконфигурировать каждый из них. Открываем файл C:\Tomcat6_1\conf\server.xml и меняем значения следующих узлов:
    1. <Server port="8005" shutdown="SHUTDOWN"> на 8001 (для каждого из последующих сервлет-контейнеров мы будем использовать порты 8002, 8003 и т.д.).
    2. <Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000" redirectPort="8443" /> на 8081 (далее будем использовать 8082, 8083 и т.д.).
  16. Выполните инструкции с 1 по 12 для каждого из последующих экземпляров Apache Tomcat, используя для разделения каждого из них увеличенное значение индекса. Допустим, второй экземпляр должен быть установлен в папку C:\Tomcat6_2, ветка реестра из шага 3 должна быть переименована в Tomcat_2, а ключ DisplayName в шаге 4 изменен на Apache Tomcat (2) и т.п.
  17. Перезагрузите систему, чтобы удостовериться в том, что разные экземпляры Tomcat нормально запускаются во время старта Windows.

На этом все на сегодня. Буду надеяться, что заметка окажется вам полезной. Удачного вам дня! :)

Комментариев нет

Теги:

В этом посте каждый может задать вопрос, каким-либо образом относящийся к среде разработки Intellij IDEA, и получить на него вразумительный ответ. На русском. Развернуто и актуально. :)

Если вы уже давно присматриваетесь к этой среде разработки, либо даже пробовали перевести свой рабочий процесс на разработку в ней, но что-то у вас не получалось, не выходило, не настраивалось, вызывало недоумение, приводило в шок; и в результате чего вы так и не смогли взять этот неприступный бастион, этот редут интеллекта, этот ларец, доверху наполненный изумрудами программерской мудрости, и вынуждены были отказаться от использования среды на долгие месяцы и годы, то «вэлкам» внутрь поста. Попробуем вместе решить вашу проблему.

Со временем, если накопится достаточное количество вопросов, то на их основе будет создан Intellij IDEA FAQ, который, я думаю, окажется небесполезным многим разработчикам.

Ну а для начала, всем интересующимся этой темой я рекомендую ознакомиться вот с этим PDF-документом, полным цветных картинок и изумительных комментариев к ним (правда на английском). Ну и не забывайте задавать свои вопросы. :)

37 комментариев

Теги:

Хорошие люди попросили разместить объявление, что я и сделал. :)

В компанию «Датэк» для работы над проектом «COMDI» требуются хорошие программисты:

Flex/Flash программист

  • Хорошее знание ActionScript3, Flex.
  • Опыт разработки полноценных веб-приложений
  • Желателен опыт работы с медиа серверами (FMS, Wowza).

JAVA программист

  • Опыт разработки апплетов, работа с изображениями.
  • Желательно, опыт работы с JNI.
  • Необходимо представление о работе WinAPI, cетевых протоколах, желательно P2P.
  • Придется разрабатывать системы скриншаринга, удаленного управления рабочим столом, работа с веб-камерами, p2p соединения и т.д.

Работа постоянная в современном офисе, в районе ВДНХ. Уровень ЗП – 70,000-100,000.
Резюме присылайте на egor.voronin@gmail.com

Комментариев нет

Теги:

Все мы знаем, о таком замечательном методе, как toString(), имеющемся у любого объекта в языках, подобных Java и ActionScript. При попытке работы объектом, как со строкой, будет использовано возвращаемое именно этим методом значение. Поэтому мы можем в своих классах переопределять поведение метода, имеющееся у объекта по умолчанию, и возвращать свои собственные специализированные значения.

В этом отношении язык Groovy не стал исключением — в нем тоже все объекты имеют метод toString(), логику которого можно переопределять, как в собственных классах пользователя, так и в любом другом из уже имеющихся классов и объектов программы, при помощи свойства metaClass. Однако Groovy шагнул дальше — он позволяет нам похожим образом приводить объекты и к булеву значению, и, кроме того, к любому другому типу объектов в приложении.

Рассмотрим для начала ситуацию приведения объекта к булеву значению. Все просто — берете и переопределяете в своем классе (или посредством поля metaClass в объекте или классе, доступа к исходному коду которого у вас нет) метод asBoolean():

GROOVY:
  1. class User {
  2.     String username
  3.     Boolean active
  4.  
  5.     Boolean asBoolean() {
  6.         active
  7.     }
  8. }
  9. assert new User(username: 'mrFreeman', active: true)
  10. assert !new User(username: 'mrFreeman', active: false)
  11.  
  12. // Переопределяем метод в существующем классе посредством свойства metaClass.
  13. String.metaClass.asBoolean = {
  14.     delegate == /groovy/
  15. }
  16. assert !'true'
  17. assert 'groovy'

Ну и, как вы уже могли догадаться, аналогичным способом мы переопределяем метод asType(), чтобы тем самым сделать возможным приведение нашего объекта к любому нужному нам типу:

GROOVY:
  1. String.metaClass.asType = {Class type ->
  2.     if(type == User)
  3.     {
  4.         return new User(username: delegate)
  5.     }
  6.     null
  7. }
  8. assertEquals 'test', ('true' as User).username

Вот такие очень гибкие возможности предоставляет нам Groovy.

Комментариев нет

Теги: