DBIx::Class Best Practices #1
Все выборки с условиями оформляйте в виде отдельных методов на ResultSet'e. Позже поможет с рефаторингом и позволит много кода использовать повторно.
Чтобы писать собственные методы в резалтсет, нужно в описании схемы указать, какой класс использовать для резалтсета:
__PACKAGE__->resultset_class( 'ItIs::Schema::DoIt::ResultSet' );
Ну а потом в этом классе пишем свои методы:
package ItIs::Schema::DoIt::ResultSet;
use strict;
use warnings;
use base qw/DBIx::Class::ResultSet/;
sub active {
return shift->search( { completed_at => \"IS NULL" } );
}
1;
Про воркшоп
Мы наконец то открыли сайт воркшопа по перлу, который будет проходить во Владивостоке 13 сентября.
Я планирую сделать большой доклад про Git и что-нибудь интересное про сам Perl, но пока не определился. Приходите, будет интересно.
Делаем сайты за футболку
На выходных 12-13 апреля поучаствовали в хакфесте Рамблера по созданию стартапа за 24 часа. Команда состояла из 3 человек из нашей перловой юзергруппы. Немного впечатлений.Процесс
Собрались в 6 часов, приготовили доску для рисования, настроили инет на машинах, стали ждать часа X — 7 вечера. Время как-то незаметно подошло и организаторы прислали нам 2 темы: мобильный коммуникационный сервис и информационно-справочный сервис с UGC (user generated content, как нам любезно подсказал гугл). Первую тему сразу отбросили, т.к. никаких wml и прочих специфичных штук мы не знали и опыта разработки сайтов под мобильники небыло. По второй теме родились 2 идеи: сайт с инфой о железяках для великов с рейтингами, отзывами и тд. и сайт рецептов, главной фишкой которого был бы поиск по продуктам: мы пишем, что у нас в холодильнике, а наша умная машина определяет, что из этого можно сделать. В итоге остановились на рецептах.
Илья пишет письмо организаторам, мы с Ромой рисуем схему БД на доске. Сделали, начинаем кодить. Тут вылазит баг с каталистом, который попортил нам не мало крови: помимо того, что мы потратили время на его поиск, так мы потом из-за него не смогли нормально код задеплоить на сервер. Каталист неправильно определял путь до проекта. В процессе разработки мы просто встроили путь руками в тестовом серваке. Так проходит несколько часов. Около 3 ночи начал писать AJAX, который в процессе ввода рецепта долбится на сервер и пытается определить продукты, используемые в рецепте. В целом нам эта фишка удалась, только нужно было добавить больше вариантов склонений/спряжений продуктов в БД. BTW кто-нить знает открытый словарь склонений/спряжений слов?
В районе 7 утра пошли прогулятся, чтобы провентелировать мозги и отдохнуть от компов и непрерывного сидения. Вернулись и запостили в коммунити хакфеста тизер с анонсом проекта. Для этого была найдена клевая картинка, ссылки на скачивание ее в большом разрешении вели на deviantart, но автор арта решил его уничтожить по какой-то причине и нам пришлось юзать превьюшку. Что из этого вышло, можете посмотреть в коммунити. Все участники восприняли это как призыв покушать, но наша рекламная кампания в новомодном стиле, когда не понятно, что рекламируют, удалась :) Мы хоть повеселились.
После бессонной ночи пришло время тупняка и мы стали продвигаться вперед довольно медленно. После обеда оживились и стали работать по активнее. Самая высокая продуктивность началась около 6 часов. Илья вносит финальные правки в дизайн, я фиксю регистрацию, делаю тупое голосование за рецепты. Рома пытается задеплоить код на сервере, но вылазит опять чертов баг с неправильным путем. Решаем задеплоить версию для организаторов через тестовый перловый сервак, отчего и поплатились — во время проверки сайтов жюри, наш сервак упал и многие члены жюри просто не смогли оценить наш проект. В последние минуты доводим до ума голосование, коммитим. В принципе до последней секунды мы не бились, минут за 5 до конца уже не напрягались. Отдыхаем :)
Впечатления
Сам процесс написания проекта и т.п. понравился. Не понравились приколы организаторов, с переносом оглашения результатов на сутки. Также разочаровали некоторые участники. Одни за неприятный им комментарий заддосили проект других участников, другие стали поливать говном организаторов и участников. Третьи стали в нелицеприятном виде защищаться и говорить, что они мол молодцы, а все остальные идут на ***. Граждане, будьте терпимей, мы же во всем этом для удовольствия участвуем, а не для разборок и взаимных н абросов на ветилятор.
Инструменты
Писали мы все на перле с использованием фрэймворка Каталист. Код на JavaScript написан с помощью Prototype.js. Нарекания у нас возникли только с каталистом.
Мне жутко не понравился ORM DBIx::Class, который в каталисте по дефолту рекомендуют юзать. Абсолютно жуткая штука ИМХО, проще писать SQL руками. Вообще сложилось впечатление, что для перла нет нормальных ORM'ов.
Потом уже озвученная трабла с каталистом. Причину мы так и не нашли, другие каталистовы проекты на тех же машинах чудесно работают. Мистика, нужен шаман с бубном.
В остальном к нему нареканий нет.Вообще мероприятие понравилось, надо и в следующем году поучаствовать. Ссылка на проект будет позже, когда мы его доработаем и нормально развернем на сервере. Фотографии выложил в галерею.
P.S. Команда 43 и Vladivostok.PM — это как раз мы.
Про коммунити
Организуем Vladivostok Perl User Group. Скоро будет лист рассылки и сайт. Недели через 2 планируется первая встреча. Подробности позже.
One more presentation
Why Perl sucks — Хорошая презентацию на тему того, что в перле реализовано не очень хорошо и как это исправить.
Vim и немного инфы с YAPC
Vim
Если вы хотите использовать vim, но не знаете как, то
- vimtutor из терминала
- Vi Reference Card — Небольшая сводка информации о базовом использовании редактора
- Efficient Editing With vim — Тоже самое, но с более подробными объяснениями
- Graphical vi-vim Cheat Sheet and Tutorial — Большая страшная таблица клавиатурных сокращений
- Mastering the VI editor — В принципее все тоже самое, но может изложение тут вам больше понравится
YAPC::Europe '07

YAPC — это Yet Another Perl Conference, если кто не знает. На сайте доступен список докладов, так же достпна презентация по Moose — это такое интересное расширении OO модели Perl 5 до возможностей Perl 6. Очень красивый (по сравнению с Perl 5) подход. Рекомендую ознакомиться. Также доступна презентация Scaling with Memcached.