SYStem EXclusive

Я тут пешу - чего же боле…

Архив за месяц March, 2008

NIИ - Ghosts I-IV

Saturday, March 22, 2008

Вот что сообщила мне компьютерра - Trent Reznor записал новых музык, и, согласно новомодным тенденциям даёт скачать своё творчество. Бесплатно - девять композиций, за пять баксов - все тридцать шесть. Есть ещё дороже опции - супер бокс-сет и супер-пупер бокс-сет. Зная творческую плодовитость Трента, я не удивился.

Я обрадовался и полез качать. Скачал бесплатный сет. Происходит это так - ввести емайл, капчу и вам приходит одноразовая ссылка, по которой скачивается архив. А в архиве - мать моя мамочка - кроме девяти треков обнаружился pdf с сочными фотками, и папочка extras c картинками (wallpapers-standart, wallpapers-widescreen, web graphics(!)). Всё подобрано и оформлено исключительно толково. Да-да, картинка вверху именно из web graphics и сделано это всё для того, чтобы вот так вот лепили кто ни попадя их себе на страницки. Отличный пендосский маркетинг!

Что бы там ни говорили звукозаписывающие компании, хнычущие о том, что они теряют деньги из-за композиций, скачиваемых через интернет - фигня всё это и полный lame. Radiohead наварил бабла на онлайновом самиздате. И NIN наварит, я уверен, ибо талантище агромадный. Ознакомившись с бесплатным сетом, я готов (да что там, заранее готов был) купить полный сет за пять баксов, думаю, что минима девятьсот тысяч человек по всему миру со мной солидарны. Но вот проблема. Как это сделать из России, не имея нормального пластика?

В общем - ма-ла-ца. Fuck yourself, Trent! Типа, спасибо.

Генератор кода для Cairngorm

Monday, March 3, 2008

Приступив к очередному (не буду умничать - ко второму) проекту с участием Cairngorm, представил сколько однотипного кода придётся написать ручками. На прошлом (читай - первом) проекте с участием Cairngorm был полный хэндмейд. Это дало мне возможность научиться произносить название фреймворка покопаться в кишочках архитектуры и досконально разобраться что к чему, но теперь - совсем другое дело. Нужно создать дерево классов максимально быстро и эффективно, посему свой взор обратил я в сторону генераторов кода.

Поиск был начат с гугла, ничего подходящего под мои задачи найдено не было.
Найденные генераторы были негибкими и генерировали весь код для клиента и сервера (какой-либо одной платформы, например, Ruby или Java), либо выглядели кривыми поделками.
Было решено написать свой (ну конечно же, это так актуально :), простой и быстрый (в написании).

Формализация требований к сему генератору выглядела так:

  1. Должен быть максимально гибким в переконфигурации.
  2. Не привязываться к какой-то конкретной IDE.
  3. Обеспечивать генерацию кода как для клиента (Flex/Cairngorm), так и для сервера (AMFPHP, .NET).
  4. Использовать для описания классов VO данные из какого-нибудь общего ресурса, будь то UML, структура БД или чорта лысого, лишь бы было удобно парсить.
  5. Использовать по-минимуму внешних ресурсов для генератора кода.

С учётом того, что, собственно, сам генератор кода будет запускаться не так уж часто, потратить минимальное время на его реализацию.

Также я согласен с тем, что он будет работать только на моей Windows XP, то есть никакой задачи кроссплатформенности на ставилось, однако, было бы неплохо, чтобы при необходимости его можно было бы портировать без особых заморочек.

Мне понравилась идея брать данные для VO из структуры базы данных, а не описывать их вручную. Вручную, конечно, получается гораздо лучше и ближе к истине, потому что, конечно же, структура БД никогда не совпадает с моделью данных приложения. Но при добавлении сущности в БД, делать каждый раз ту же процедуру руками для генератора, мне показалось неоправданной тратой моего личного и рабочего времени. Пусть это будет не так универсально, но автоматически, подумал я. А нестыковки модели БД и данных приложения можно править руками. Да, в конце концов, в любом случае, сгенерированый код придётся прочёсывать вручную и просматривать (вглазную, хехе), так что чевоужтам.

Неплохо было бы входные данные получать в XML или преобразовывать в него, чтобы для дальнейшей генерации кода применять шаблоны XSL-трансформаций. Люблю я их за чрезвычайную гибкость и универсальность. В генераторе я использовал MSXSL, оболочку командной строки для процессора MSXML.
Скачать её можно забесплатно с сайта Microsoft (25k)

Таким образом, суть генератора кода свелась к пакетному файлу, паре скриптов и шаблонам трансформации.
Процедура работы описана в batch-файле, который так же, как и всё остальное находится в репозитории проекта на гуглокоде.

Слава нанотехнологиям!

UPD: http://www.tylerbeck.com/CairngormCreator/   Щщикарно!

UPD2: http://nsdevaraj.wordpress.com/2008/08/07/flex-code-generator-flex-php/  Здесь ссылка на AIR-приложение. Отучаемся писАть в консоли, приучаемся кликать мышкой по гую.