понедельник, сентября 28, 2009

GAE

Чуствую GAE меня добъёт. Таких чудес насмотрелся - что на всю жизнь хватит. Надо будет поплотнее сесть, чтобы разобраться. Из последнего: в базе один основной объект с кучкой owned и unowned объектов (разных классов). Так вот через query без фильтров он возвращается как надо, а через getObjectById возвращается без child'ов. Как такое получается пока понять не смог. Из полезного - обнаружил что есть усечённая админ панель для локальной разработки, что облегчает жизнь ощутимо: http://localhost:8080/_ah/admin (в последних билдах http://localhost:8888/_ah/admin ) .

Update: разгадка-решение к чудесам - (defaultFetchGroup="true") . Расписывать не буду - гуглиться в соответствующих гуглогруппах и не только там.

понедельник, августа 03, 2009

Тестирование в GWT

Прочитал занимательную статью про тестирование GWT приложений: http://code.google.com/webtoolkit/articles/testing_methodologies_using_gwt.html. Интересный подход с MVP и EasyMock, но на мой взгляд слишком затратный в плане оверхеда. Т.е. для небольших проектов вряд ли стоит такое воротить. Также полезная ссылка о том как тестировать RPC в GWT: http://code.google.com/docreader/#p=google-web-toolkit-doc-1-5&s=google-web-toolkit-doc-1-5&t=DevGuideJUnitAsync.

воскресенье, июля 19, 2009

Про GAE и GWT

Недавно я решил плотно пощупать Google App Engine (GAE), а также подтянуть скилы по GWT. Надо сказать что с появлением Google плагина для Eclipse жизнь заметно упростилась и пропали например баги с RPC которые были относительно недавно и даже побудили меня переносить проект под нетбинс. Вобщем для того чтобы собрать и выкатить проект на GWT+GAE (на яве) никаких шаманств мне пока совершать не пришлось. Никаких глюков пока тоже не заметил.

Когда начал писать проект в первые пару дней показалось вот оно счастье - настолько всё удобно и продуманно. Удобно отлаживать когда серверный и клиентский код доступен в одном дебагере и написан на одном языке, удобно выкатывать приложение(нажал кнопку и оно уже там). Но потом нашлись некоторые минусы. Например интернационализация. Я выбрал наиболее правильный на мой взгляд метод - с помощью статических строк(static string internationalization). Но на серверной стороне его использовать невозможно(потому что нужно использовать GWT.create) и возникает проблема когда например надо кинуть исключение на серверной стороне RPC с локализованным текстом. Пока ничего умнее как создание специального класса исключения с enum'ом всех типов исключений, и класса который на клиентской стороне производит получение нужного текста по типу исключения с учётом текущей локали я не придумал. Вобщем пустячок а неприятно - усложняет слегка жизнь. Второе разочарование постигло когда выяснилось что в GAE Datastore не предусмотрено создание unique ограничений. Но в целом пока впечатление сильно положительное, буду смотреть что там дальше будет при более глубоком погружении.

P.S. Да чуть не забыл - отсутствие какого-либо GUI редактора/просмотрщика данных для datastore очень огорчает.

среда, января 28, 2009

Темы GWT. фичобаг

Если вы делаете достаточно сложный с точки зрения вёрстки проект, и что-то у вас результат не всегда соответствует тому что вы хотите, и сильно отличается в браузерах, то советую вам взглянуть на магическую незакомментированную строчку в вашем XXX.gwt.xml файле: <inherits name="'com.google.gwt.user.theme.standard.Standard'/">

Наверное они хотели как лучше, а получилось что получилось. Я конечно понимаю что новичкам возможность выбрать одну из предустановленных тем понравится наверное, но зачем делать стандартную тему которая мешает втыкать gwt кусок в большую сложную страницу со своим css - это для меня загадка. Вобщем закомментировав указанную выше строчку вы обретёте счастье.