sharifulin's posterous http://sharifulin.posterous.com use Perl or die; posterous.com Wed, 23 May 2012 07:17:00 -0700 Perl Mova и YAPC::Russia "May Perl" 2012 http://sharifulin.posterous.com/perl-mova-yapcrussia-may-perl-2012 http://sharifulin.posterous.com/perl-mova-yapcrussia-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).

 

 

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1382112/639dd93c1ccc456d80c93e0f6e200996_7.jpg http://posterous.com/users/hckydMIyty4qK Анатолий Шарифулин sharifulin Анатолий Шарифулин
Tue, 24 Apr 2012 06:06:00 -0700 Am I or Perl alive? :) http://sharifulin.posterous.com/am-i-or-perl-alive http://sharifulin.posterous.com/am-i-or-perl-alive

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

$list = [
grep {
my $what;
$what->{retweet} = !!$_->{retweeted_status};
$what->{reply } = !!$_->{in_reply_to_user_id_str};
$what->{tweet } = !$what->{retweet} && !$what->{reply};

warn qq(It's tweet "$what->{tweet}", reply "$what->{reply}", retweet "$what->{retweet}": $_->{text}\n);

my $yes;
if (grep { $task->{$_} } qw(only_tweet only_reply only_retweet)) {
$yes += $task->{only_tweet } && $what->{tweet } ? 1 : 0;
$yes += $task->{only_reply } && $what->{reply } ? 1 : 0;
$yes += $task->{only_retweet} && $what->{retweet} ? 1 : 0;
}
else {
$yes++;
}

$yes;
}
@$list
];

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

 

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

 

use Perl or die;

 

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1382112/639dd93c1ccc456d80c93e0f6e200996_7.jpg http://posterous.com/users/hckydMIyty4qK Анатолий Шарифулин sharifulin Анатолий Шарифулин
Wed, 29 Feb 2012 01:09:00 -0800 Mojolicious::Plugin::Mail 0.93 и Travis CI http://sharifulin.posterous.com/mojoliciouspluginmail-093-travis-ci http://sharifulin.posterous.com/mojoliciouspluginmail-093-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

 

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1382112/639dd93c1ccc456d80c93e0f6e200996_7.jpg http://posterous.com/users/hckydMIyty4qK Анатолий Шарифулин sharifulin Анатолий Шарифулин
Mon, 28 Nov 2011 05:28:00 -0800 Perl, который не даёт покоя многим http://sharifulin.posterous.com/perl-14105 http://sharifulin.posterous.com/perl-14105

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

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

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

 

use Perl or die;

 

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1382112/639dd93c1ccc456d80c93e0f6e200996_7.jpg http://posterous.com/users/hckydMIyty4qK Анатолий Шарифулин sharifulin Анатолий Шарифулин
Sat, 22 Oct 2011 15:03:00 -0700 Perl 5.16 и далее http://sharifulin.posterous.com/perl-516 http://sharifulin.posterous.com/perl-516 Perl 5.16 and beyond by Jesse Vincent (Русская версия)
Оригинальная презентация и видео http://yapcasia.org/2011/talk/96
use Perl or die;

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1382112/639dd93c1ccc456d80c93e0f6e200996_7.jpg http://posterous.com/users/hckydMIyty4qK Анатолий Шарифулин sharifulin Анатолий Шарифулин
Thu, 20 Oct 2011 00:15:00 -0700 DBD::mysql и асинхронные запросы http://sharifulin.posterous.com/dbdmysql http://sharifulin.posterous.com/dbdmysql

Оказывается, в августе в 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;

 

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1382112/639dd93c1ccc456d80c93e0f6e200996_7.jpg http://posterous.com/users/hckydMIyty4qK Анатолий Шарифулин sharifulin Анатолий Шарифулин
Tue, 18 Oct 2011 07:21:00 -0700 Acme::XSS http://sharifulin.posterous.com/acmexss http://sharifulin.posterous.com/acmexss

Забавный модуль появился на CPAN — Acme::XSS, чисто for fun и для браузера :-)

http://search.cpan.org/~tokuhirom/Acme-XSS-0.01/lib/Acme/XSS.pm

<script>alert("all your codes are belongs to us");</script>

__2011-10-18__18

 

ЗЫ: А ещё вышел Mojolicious 2.0 :-)

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1382112/639dd93c1ccc456d80c93e0f6e200996_7.jpg http://posterous.com/users/hckydMIyty4qK Анатолий Шарифулин sharifulin Анатолий Шарифулин
Tue, 11 Oct 2011 07:18:00 -0700 Печальный HTML::JQuery http://sharifulin.posterous.com/htmljquery http://sharifulin.posterous.com/htmljquery

Как же печально, когда видишь вот такую aхинею:

The aim is simple: More Perl, less Javascript.

http://search.cpan.org/~bradh/HTML-JQuery-0.12/lib/HTML/JQuery.pm

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1382112/639dd93c1ccc456d80c93e0f6e200996_7.jpg http://posterous.com/users/hckydMIyty4qK Анатолий Шарифулин sharifulin Анатолий Шарифулин
Mon, 12 Sep 2011 11:03:00 -0700 Mojolicious и Dancer http://sharifulin.posterous.com/mojolicious-dancer http://sharifulin.posterous.com/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
 

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

 

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1382112/639dd93c1ccc456d80c93e0f6e200996_7.jpg http://posterous.com/users/hckydMIyty4qK Анатолий Шарифулин sharifulin Анатолий Шарифулин
Mon, 22 Aug 2011 13:32:00 -0700 Posterous, Perl, социальная активность среди разработчиков http://sharifulin.posterous.com/posterous-perl http://sharifulin.posterous.com/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

 

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1382112/639dd93c1ccc456d80c93e0f6e200996_7.jpg http://posterous.com/users/hckydMIyty4qK Анатолий Шарифулин sharifulin Анатолий Шарифулин
Mon, 08 Aug 2011 02:09:00 -0700 Экспорт записей с LiveJournal, переход на Posterous http://sharifulin.posterous.com/livejournal-posterous http://sharifulin.posterous.com/livejournal-posterous

Posterous умеет на автомате экспортировать записи из различных блог-движков, кроме LiveJournal, что странно (хотя может быть из-за "хорошей" работы последнего они этого не сделали).

Я написал скрипт на Mojolicious и MongoDB, который забекапил все записи с моего ЖЖ (236 записей).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#!/usr/bin/env perl
use common::sense;

use Mojo::IOLoop;
use Mojo::UserAgent;

use MongoDB;
use Data::Dumper;

my $ua = Mojo::UserAgent->new;
my $t = Mojo::IOLoop->trigger;

$ua->ioloop->connect_timeout(180);
$t ->ioloop->connect_timeout(180);

my $conn = MongoDB::Connection->new(host => 'localhost', port => 27017);
my $mdb = $conn->blog;

$mdb->posts->drop;

my($i, $count);
for (0..23) {
  $t->begin;
  
  my $skip = $_ * 10;
  $ua->get("http://sharifulin.livejournal.com/?skip=$skip" => sub {
    my $tx = pop;
    my $from = $tx->req->url->to_string;
    warn ++$i . " $from\n";
    
    my $post;
    my $page = $i;
    for ( $tx->res->dom->at('#alpha-inner')->find('.entry')->each ) {
      my $link = $_->at('.permalink')->attrs->{href};
      my $hash = {
        from => $from,
        link => $link,
        title => $_->at('.subj-link')->text,
        tags => $_->at('.ljtags') ? [ map { $_->text } $_->at('.ljtags')->find('a')->each ] : [],
        text => do {
          my $t = $_->at('.entry-body')->content_xml;
          $t =~ s{\s*<div class="ljtags">.*?</div>\s*}{}s;
          $t;
        },
      };
      
      $t->begin;
      $ua->get($link => sub {
        warn $page . ' ' . ++$post . " $link\n";
        my $page = pop->res->dom->at('#content-wrapper');
        
        # fuck LJ html!
        $hash->{date} = do {
          my $t = $page->at('font')->all_text;
          $t =~ s/^@\s+//;
          $t =~ s/ - /-/sg;
          $t;
        };
        $hash->{text} = do {
          my $t = $page->at('div[style="margin-left: 30px"]')->content_xml;
          $t =~ s{^.*?</b></i></font><br />}{}s;
          $t =~ s/^\s*|\s*$//s;
          $t;
        };
        
        $count++ if $mdb->posts->insert($hash, {safe => 1});
        
        $t->end;
      });
    }
    
    $t->end;
  });
}

$t->start;

say "Total: $count";

И затем написал скрипт, который используя Posterous API (кстати, очень красиво сделали интерфейс API, сразу можно послать запрос и получить ответ, удобно), загрузил все записи. Я только забыл про автоматический постинг в социальные сети и мои друзья словили 236 сообщений в Twitter и Facebook :-)

Posterous API иногда прглючивало, возращало вместо кода ответа 201 — 404, но запись создавалась, получались дубли, пришлось разобраться с удалением и созданием заново всех постов. Поэтому отсылку постов пришлось делать пачками.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#!/usr/bin/env perl
use common::sense;

# BEGIN { $ENV{MOJO_USERAGENT_DEBUG}++ };

use Mojo::IOLoop;
use Mojo::UserAgent;
use Mojo::Util 'b64_encode';

use MongoDB;
use Data::Dumper;

my $ua = Mojo::UserAgent->new;
my $t = Mojo::IOLoop->trigger;

$ua->ioloop->connect_timeout(180);
$t ->ioloop->connect_timeout(180);

my $conn = MongoDB::Connection->new(host => 'localhost', port => 27017);
my $mdb = $conn->blog;

my $conf = {
  api_token => '*********',
  site_id => '3355080',
  username => 'sharifulin@gmail.com',
  password => '********',
};

my $auth = 'Basic ' . b64_encode( "$conf->{username}:$conf->{password}", '' );

my $limit = 20;
my $max = $mdb->posts->count;

my($i, $count);
while ($count <= $max) {
  my $posts = $mdb->posts->find({post_id => { '$exists' => 0 }})->sort({date => -1})->limit($limit, $limit*$i++);
  
  while (my $p = $posts->next) {
    warn "$p->{link}\n";
  
    $t->begin;
  
    $ua->post_form(
      "http://posterous.com/api/2/sites/$conf->{site_id}/posts",
      {
        api_token => $conf->{api_token},
        'post[title]' => $p->{title},
        'post[body]' => qq($p->{text}<br/>\nOriginal post <a href="$p->{link}">$p->{link}</a>\n),
        'post[tags]' => $p->{tags } ? join(', ', @{$p->{tags}}) : '',
        'post[display_date]' => $p->{date },
        'post[source]' => $p->{link },
        'post[autopost]' => 0,
        # 'post[is_private]' => 1,
      },
      { Authorization => $auth },
      sub {
        my $res = pop->res;
        my $post_id = 0;
        
        if ($res->code == 201) {
          my $body = $res->body;
          $post_id = [ $body =~ /"id":(\d+)/ ]->[0];
          
        }
        else {
          warn 'ERROR ' . $res->code . "\n";
        }
        
        $mdb->posts->update({ _id => $p->{_id} }, { '$set' => {post_id => $post_id} }, { safe => 1 });
        $count++;
        
        $t->end;
      }
    );
  };
  
  $t->start;
  
  warn "$count\n";
}

 

use Perl or die;

JFDI

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1382112/639dd93c1ccc456d80c93e0f6e200996_7.jpg http://posterous.com/users/hckydMIyty4qK Анатолий Шарифулин sharifulin Анатолий Шарифулин
Wed, 03 Aug 2011 14:17:00 -0700 Hello world! http://sharifulin.posterous.com/63768658 http://sharifulin.posterous.com/63768658

Привет, Posterous!

Здесь начинается новая точка отсчёта.

ЖЖ полностью надоел, его я закрываю.

Все посты и новости теперь здесь.

use Perl or die;

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1382112/639dd93c1ccc456d80c93e0f6e200996_7.jpg http://posterous.com/users/hckydMIyty4qK Анатолий Шарифулин sharifulin Анатолий Шарифулин
Thu, 09 Jun 2011 13:30:00 -0700 Mojolicious::Lite параметры для start http://sharifulin.posterous.com/-mojoliciouslite-start http://sharifulin.posterous.com/-mojoliciouslite-start

Интуитивно не догадался, как в Mojolicious::Lite приложении указать параметры запуска daemon в методе start.
Потребовалось 15 минут и несколько вариантов перебрал:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# сходу написал так, но завелось только на 3000 (дефолтном порту)
app->start('daemon', '--listen http://*:5000');
 
# затем так
app->start('daemon', listen => 'http://*:5000');

# посмотрел Mojo::Server::Daemon
app->start('daemon', listen => ['http://*:5000']);

# и даже так попробовал
app->start('daemon --listen http://*:5000');

# после открыл Mojo::Command, проследил код, нашел вызов Mojolicious::Server::Daemon и понял,
# что используется параметры как @ARGV
app->start('daemon', '--listen', 'http://*:5000');

Последний вариант рабочий.

Original post http://sharifulin.livejournal.com/65048.html

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1382112/639dd93c1ccc456d80c93e0f6e200996_7.jpg http://posterous.com/users/hckydMIyty4qK Анатолий Шарифулин sharifulin Анатолий Шарифулин
Mon, 23 May 2011 22:21:00 -0700 YAPC::Russia 2011 http://sharifulin.posterous.com/yapcrussia-2011 http://sharifulin.posterous.com/yapcrussia-2011 14–15 мая 2011 года прошла конференция YAPC::Russia 2011 в Москве.
В этом году было меньше посетителей, чем в прошлом, зато место проведения было круче – Digital October.
Мы не были готовы к вещанию презентаций через камеру (вторая половина первого дня) и расшариванию экрана через Skype (второй день), зато было весело и интересно как всегда :-)

5 мая (5.14) вышел Perl 5.14, как раз в этот день Андрей Шитов рассказал про новшества в Perl 5.14.
Вячеслав Матюхив рассказал про "Поиск по блогам Яндекса", оказывается, команда – 8 Perl-программистов и до "пиздариков" в Я. Perl еще далеко.

В первый день прошла серия блиц-докладов, мне запомнились два блиц-доклада: Облачные хостинги (почти про зло) и Мой Modern Perl.

Во второй день хороший доклад был про no threads; Ничего нового, но всё по полочкам разложено. Основная мысль: Coro и AnyEvent (или any event) – стОит использовать.

Ну и конечно доклад про Mojolicious – "Почему Mojolicious?" :-)


Все прошло быстро, на одном дыхание, большое количество кулуарных разговоров про Perl, Mojolicious, booking.com, Perl 6 и, конечно, YAPC::Europe 2011, куда большинство собирается поехать (я в том числе) :-)

К сожалению, у меня ни фото, ни видео нет, только воспоминания.


use Perl or die;

JFDI
Original post http://sharifulin.livejournal.com/64845.html

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1382112/639dd93c1ccc456d80c93e0f6e200996_7.jpg http://posterous.com/users/hckydMIyty4qK Анатолий Шарифулин sharifulin Анатолий Шарифулин
Tue, 10 May 2011 19:27:00 -0700 Perl. YAPC::Russia 2011. MojoX::Loader http://sharifulin.posterous.com/perl-yapcrussia-2011-mojoxloader http://sharifulin.posterous.com/perl-yapcrussia-2011-mojoxloader Начинаю готовиться к конференции YAPC::Russia 2011, на которой я буду выступать с тремя докладами :)

Сегодня сделал то, что давно хотел – модуль MojoX::Loader, который позволяет загрузить в скрипт Mojolicious-контроллер и использовать все методы, хелперы из контроллера, а также рендеринг шаблонов. Просто и удобно при автоматизации работы веб-проекта: создание e-mail рассылок, построение графиков и прочая работа с базой, точнее с веб-приложением, написанном на Mojolicious.


Original post http://sharifulin.livejournal.com/64530.html

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1382112/639dd93c1ccc456d80c93e0f6e200996_7.jpg http://posterous.com/users/hckydMIyty4qK Анатолий Шарифулин sharifulin Анатолий Шарифулин
Mon, 18 Apr 2011 13:53:00 -0700 Perl. Подкаст и ВКонтакте группа http://sharifulin.posterous.com/perl http://sharifulin.posterous.com/perl Всем привет!

На днях с парнями из Воронеж.pm записали подкаст про Mojolicious и Perl.

habrahabr.ru/blogs/perl/117665/

ЗЫ: [info]slonik_v_domene прости, конечно же, Андрей Шетухин, а не Алексей.

ЗЫ2: Вконтакте группа Perl получила красивый адрес vkontakte.ru/perl5


use Perl or die;

JFDI

Original post http://sharifulin.livejournal.com/64353.html

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1382112/639dd93c1ccc456d80c93e0f6e200996_7.jpg http://posterous.com/users/hckydMIyty4qK Анатолий Шарифулин sharifulin Анатолий Шарифулин
Wed, 06 Apr 2011 21:25:00 -0700 Perl. Любители фреймворков http://sharifulin.posterous.com/perl http://sharifulin.posterous.com/perl Так сложилось, что каждый Perl-программист в своей жизни должен сделать три вещи:
  1. Написать свой фреймворк
  2. Написать свой шаблонизатор
  3. Написать свою событийную машину
На сегодняшний день вопрос с фреймворками в Perl особо животрепещущий.
Если раньше было полтора фреймворка: Catalyst и Jifty, то сейчас их целых три: Catalyst, Mojolicious и Dancer.
Последние два – пользуются особой популярность среди разработчиков, т. к. впитали всё (почти всё) самое лучшее из фреймворков на языках Ruby и Python.

Соответственно, появились многочисленные холивары среди Perl-программистов.
Последний холивар  – в сообществе ru_perl .

На самом деле, меня это радует и пусть фреймворков будет ещё больше (с появлением PSGI и Plack к этому всё и идёт).
Не зря же TIMTOWTDI :)


use Mojolicious or die;

use Perl or die;

JFDI

ЗЫ: Мой выбор очевиден)


Original post http://sharifulin.livejournal.com/64249.html

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1382112/639dd93c1ccc456d80c93e0f6e200996_7.jpg http://posterous.com/users/hckydMIyty4qK Анатолий Шарифулин sharifulin Анатолий Шарифулин
Tue, 29 Mar 2011 22:22:00 -0700 YAPP – они делают то, что мне всегда хотелось, но было лень http://sharifulin.posterous.com/yapp http://sharifulin.posterous.com/yapp YAPP – Yet Another Perl Podcast – два программиста из Воронежа делают то, что мне всегда хотелось, но было лень, а именно – обзор новостей по/про/на Perl в виде подкаста на русском языке. 

Блог на perl.org – http://blogs.perl.org/users/perl_demon/2011/03/yet-another-perl-podcast-2.html
На Хабре – habrahabr.ru/tag/yapp/
В rpode – yapp.rpod.ru/

Ну что сказать, респект, так держать!

ЗЫ: Жду интервью со мной :)


use Perl or die;

JFDI

Original post http://sharifulin.livejournal.com/63951.html

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1382112/639dd93c1ccc456d80c93e0f6e200996_7.jpg http://posterous.com/users/hckydMIyty4qK Анатолий Шарифулин sharifulin Анатолий Шарифулин
Mon, 21 Mar 2011 23:55:00 -0700 Я счастливый Perl-программист http://sharifulin.posterous.com/perl http://sharifulin.posterous.com/perl Я счастливый Perl-программист!

Спасибо Андрею Шитову, что напомнил (23 минута). Это действительно так :)

ЗЫ: Возобновляю Iron Man в своём блоге. Либо раз в 10 дней, либо по понедельникам в вашем RSS-фиде или ленте "Can haz Perl?" или "use Perl or die;" от "счастливого программиста".


use Perl or die;

JFDI
Original post http://sharifulin.livejournal.com/63731.html

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1382112/639dd93c1ccc456d80c93e0f6e200996_7.jpg http://posterous.com/users/hckydMIyty4qK Анатолий Шарифулин sharifulin Анатолий Шарифулин
Mon, 24 Jan 2011 22:41:00 -0800 Perl. Моя самая популярная ошибка http://sharifulin.posterous.com/perl http://sharifulin.posterous.com/perl Наверня-ка, у каждого программиста есть ошибка, которую он допускает в своем коде чаще всего.

Лично я при быстром редактирование кода не ставлю в конце строки точку с запятой, хотя ниже есть ещё код.
Постоянно :)

А у тебя какая?
Original post http://sharifulin.livejournal.com/63439.html

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1382112/639dd93c1ccc456d80c93e0f6e200996_7.jpg http://posterous.com/users/hckydMIyty4qK Анатолий Шарифулин sharifulin Анатолий Шарифулин