Posterous theme by Cory Watilo

Filed under: perl

Perl Mova и YAPC::Russia "May Perl" 2012

12—13 мая в Киеве прошла конференция Perl Mova и YAPC::Russia «May Perl» 2012.

Очень классная и интересная конференция по Perl, одна из лучших для меня (и не только потому, что социальная часть удалась :).

На сайте зарегалось 217 человек, пришло в первый день более 100. Приехали все, почти все, кого я хотел увидеть: vti, yko, miyagawa, rafl, ribasushi, szabo, yuripats, AS_Pushkin, Ali, nordicdyno, neyasov и т.д.

Я выступал с 20-минутным докладом «Создание приложений со знанием Perl». Презентация на английском, рассказывал на русском.

Презентация на русском языке, видео.
А также я рассказал два блиц-доклада:
  1. Guitar Hero, Wikipedia, VK, Perl, Like it! (русская версия, видео)
  2. Thank you @miyagawa (русская версия, видео)

Последний блиц про Миягаву был очень смешным, я неожидал, что его так воспримут :)

Спасибо организаторам за прекрасную конференцию, спонсорам за спонсорство и социализацию :), а также всем, кто пришёл на мероприятие. Ура!

В заключение немного фотографий с конференции и Киева.

Остальные можно посмотреть здесь.

 

use Perl or die;

И да, новая тема: Just F*cking Talk about It (JFTI).

 

 

Am I or Perl alive? :)

Всегда мечтал использовать секретные операторы (с) Karasik, вот оно:

Если кайф получить либо true, либо false (при условии, что может быть ref и другая фигня в переменных), то 5-6 строка ваще чёткая.

 

ЗЫ: Тернарный опертатор вместо !! — не айс :-)

 

use Perl or die;

 

Mojolicious::Plugin::Mail 0.93 и Travis CI

Давно я не писал в блог :)

Сегодня 29 февраля и не грех выпустить апдейт для Mojolicious::Plugin::Mail — добавлена поддержка простого изменения типа mail-сообщения (спасибо @ProtoPlex за идею и патч).

А также решил попробовать новый сервис для разработчиков — Travis CI, автоматическое тестирование комитов с github.com. И вот результат — http://travis-ci.org/#!/sharifulin/mojolicious-plugin-mail/builds/764265

 

use Perl or die;

JFDI

 

Perl, который не даёт покоя многим

Мне нравятся личности, у которых есть своё мнение, которое может даже в корне не совпадать с моим. Они любят троллить и быть троллимы :)

Или уважаемый господин слоник только может производить кучи говна пропорционально выбранному ник-нейму?

http://slonik-v-domene.livejournal.com/106083.html

 

use Perl or die;

 

DBD::mysql и асинхронные запросы

Оказывается, в августе в DBD::mysql была добавлена поддержка асинхронной работы в prepare. За что спасибо Робу Хоельцу (Rob Hoelz). Теперь с версии 4.019 можно пользоваться этой фичей.

Пример асинхронной работы с mysql в Perl, используя DBD::mysql и AnyEvent http://hoelz.ro/blog/asynchronous-mysql-queries-in-perl-using-dbdmysql-and-anyevent.

В комментах я увидел, что Рокко Капутто, некогда мной любимый, жив и предлагает свои варианты на POE и Reflex. POE, привет! :-)

Это прекрасно, интересно теперь проверить стабильность работы данного решения.

 

use Perl or die;

 

Mojolicious и Dancer

Если честно, то наболело. Хочу положить конец дискуссии про Mojolicious и Dancer.

Сравнивать эти два фреймворка вообще бессмысленно, поэтому я умышленно не написал в название vs.

  1. Mojolicious — это не микро-фреймворк, в отличии Dancer, а инструмент для написания современных веб-приложений и не только (хотя автор всё-таки ориентируется на веб).
  2. Если всё-таки хочется сравнить процесс (особенности) написания небольших веб-приложения, то стоит сравнивать Mojolicious::Lite и Dancer. Но это такое же сравнение, как iPhone и Android, Mac OS X и Windows, Playstation и Xbox соответственно. Любое соперничество идёт на пользу каждому участнику состязания.
  3. Mojolicious::Lite — это всего лишь вершина айсберга, обёртка над фреймворком Mojolicious. Предназначен для написания небольших простых веб-приложений, а также для обучения Mojolicious и Perl (другими словами — снижает порог вхождения).
  4. Mojolicious — это одновременно название дистрибутива и название фреймворка, стОит отличать это в контексте разговора.
  5. Поэтому Mojolicious (дистрибутив, "веб в коробке") — это

    — набор компонент и иструментов, основные из них: Mojo::Base (создание объектов), Mojo::Log (логирование), Mojo::UserAgent (полноценный HTTP и websocket клиент), Mojo::DOM (работа с DOM), Mojo::JSON (работа с JSON), Mojo::Template (шаблонизатор), Mojo::Util (вспомогательные функции), Mojo::IOLoop (событийная машина), Mojo::Server (CGI, FastCGI, PSGI, HTTP и websocket сервер) и Test::Mojo (автоматизация тестирования),

    — три фреймворка: Mojo (HTTP запрос-ответ сервер), Mojolicious (mVC веб-фреймворк, идея позаимствована у RoR) и Mojolicious::Lite (простой веб-фреймворк, идея позаимствована у sinatra).

  6. Фреймворк Mojolicious — полноценный веб-фреймворк, с богатым и гибким функционалом (роутеры, хелперы, плагины), подходящий для решения сложных веб-проектов.
  7. Кроме того, Mojolicious (инструмент, продукт):

    — без зависимостей (действительно, без зависимостей, всё, что нужно для запуска есть в CORE-библиотеках Perl),

    — стабильная версия ядра (тут многие могут поспорить, приведя кучу примеров того, что в недавних версиях сломалась совместимость c Mojo::IOLoop, но я повторюсь — основной акцент всё-таки был на веб, и чтобы код был впредь лучше, автор пошёл на конфликты с предыдущими версиями, а код веб-проектов, написанных год назад, работают на последней версии Mojolicious),

    — есть хорошая документация и вики,

    — живое и достаточно большое сообщество ("ты совсем не одинок, когда сталкиваешься с проблемой"),

    — красивый современный сайт, красивый — ключевое слово, меня и большинство сильно отпугивают "страшные" сайты, которые пытаются продвигать какой-либо продукт (я серьёзно, меня просто раздражает дефолтные стили и авто-генерируемые страницы Dancer, серый фон "попахивает" 90ми).

    — понятные и опять же красивые скринкасты Mojocast (я сравниваю со скринкастом от Габора Жабо про блог, это ужас),

    — и так далее.

Оценив популярность и тенденции в сообществе языка Perl, могу сделать вывод, что:

  1. Dancer выбирают программисты:

    — за 35 лет (если нет, то выглядят на такой возраст),
    — сидевшие очень долго под mod_perl или CGI,
    — делают совсем небольшое количество проектов, где фреймворком был либо CGI::Application, либо свой велосипед (который уже стал таким крутым, что с ним жалко расставаться и что-либо сделать на нём новое очень сложно или невозможно),
    — совсем не могут избавиться от Template Toolkit,
    — им кажется, что вот наконец-таки можно избавиться от копипаста в виде my $self = shift; и везде в коде писать DSL (params, database, ..),
    — не парятся по поводу серого фона и синих ссылок на своих проектах,
    — не видят смысла в социализации интернета и своих разработок,
    — думают, что умеют танцевать, но это совсем не так,
    — и, наконец, те, кто ненавидят Mojolicious, автора и/или sharifulin :-)

  2. Mojolicious выбирают:

    — молодые и активные разработчики (если нет, то считающие себя в душе таковыми),
    — нет желания (нет времени) сейчас писать свой собственный шаблонизатор, роутер, событийную машины и/или фреймворк,
    — попробовавшие раз, и не пытавшиеся обновить на работающем Mojo-проекте дистрибутив Mojolicious, хотя они знали, что не безопасно использовать внутреннее API (например, Mojo::IOLoop, который сильно внутри поменялся несколько месяцев назад),
    — доверяющие мнению тех, кто про Mojolicious рассказывает или подписанные на новости sharifulin :-)

  3. С Catalyst очень сложно слезть, хотя у некоторых получается :-)


Прочитав этот список, можно сделать вывод, что начать писать на Dancer сложнее, т.к. больше требований.

Два замечания про скорость и альтернативу в виде Plack.

  1. В сети есть несколько тестов, где приведены результаты бенчмарков "Hello world"-конструкций, и Mojolicious часто на последних местах. Да это так, но это ничего не меняет:

    — Mojolicious::Lite — это обёртка над Mojolicious, а тот в свою очередь над Mojo, поэтому в таких тестах Dancer будет выигрывать,

    — Встроенный в Mojolicious HTTP-сервер (хоть и асинхронный, но однопоточный) написан на Perl и не претендует на высокие показатели производительности или отказоустойчивое решение при больших нагрузках.

    — Сама суть Mojolicious — в удобстве, скорости разработки и поддержки кода (прикладные задачи), но не подумайте, что на производительность забили, это не так.

    — Не меняя код, Mojolicious-приложение можно запустить под FastCGI и/или PSGI (starman, starlet) и вы забываете про то, что именно ядро Mojolicious может быть медленным, т.к. вся проблема сводиться к логике, которую вы реализуете.

    — Любой достаточно популярный сайт, веб-сервис или стартап можно написать на Mojolicious и проблем с производительностью не будет (если, конечно, это не Rambler-почта).

  2. Plack/PSGI — отличный инструмент/протокол, который позволил Perl "омолодиться", стать удобным в использование языком. Но это всё-таки кирпичики, из которых самому можно собрать свой фреймворк, который будет заточен под ряд шаблонных задач, работать быстро. Можно попытаться написать пародию на фреймворк Mojolicious или Mojolicious::Lite, получить от этого фан, сделать свой ("правильный") open-source продукт и создать конкуренцию Mojolicious. Это всё хорошо и я рад наличию такой альтернативы.

    Но здесь так же не стОит сравнить Plack с Mojolicious, это разные вещи. Наоборот, Plack (Plack::Middleware) могут дополнять приложения Mojolicious, запущенные под PSGI интерфейсом (понятно, что можно придраться к двойному парсингу запроса, но это не суть).

Если вкратце, то это всё.


use Mojolicious or die;

use Perl or die;

JFDI
 

ЗЫ: Когда я решил написать этот пост, в голове были только жёсткие высказывания и ненормативная лексика, рад что пост получился не таким :-)

 

Posterous, Perl, социальная активность среди разработчиков

Все у меня спрашивали, почему я переехал именно на Posterous? Странно, что это было не очевидно.

Ну во-первых, это модно :-)

Во-вторых, посещения Perl-постов (которые мигрировали с ЖЖ) резко выросли:

__2011-08-23__0

В-третьих, на Posterous появляется много блогов разных известных и/или крутых дядек. Так сходу вспомню только: kraihcoderwall, dotcloud и др.

В-четвертых, красивый интерфейс API, в который сразу влюбляешься.

И наконец-таки, что-то глючит, не работает, нельзя подключить домен с зоны ru (vs. Tumblr) и я это понимаю, сам же разработчик :-)

 

Сегодня хотел написать про апдейты своих модулей, про что-то еще, связанное с Perl, про то, как я не поехал на YAPC::Europe 2011, которое явно удалось, про опыт с MongoDB и Mojolicious + Plack::Middleware. Но решил, что это неинтересно, вот что интересно:

https://metacpan.org/author/SHARIFULN

http://coderwall.com/sharifulin (пока 5 ачивментов)

http://www.github-meets-cpan.com/ (на 82м месте)

Если я когда-то любил CPAN TS и мерился со всеми (сейчас этот сервис как-то не работает и совсем несовременный), то сейчас обращаю пристальное внимание к Github и социальным играм для разработчиков :)

 

use Perl or die;

JFDI