<?xml version='1.0' encoding='utf-8' ?>
<!--  If you are running a bot please visit this policy page outlining rules you must respect. http://www.livejournal.com/bots/  -->
<rss version='2.0' xmlns:lj='http://www.livejournal.org/rss/lj/1.0/' xmlns:media='http://search.yahoo.com/mrss/' xmlns:atom10='http://www.w3.org/2005/Atom'>
<channel>
  <title>Анатолий Шарифулин</title>
  <link>http://sharifulin.livejournal.com/</link>
  <description>Анатолий Шарифулин - LiveJournal.com</description>
  <lastBuildDate>Tue, 10 Nov 2009 18:15:49 GMT</lastBuildDate>
  <generator>LiveJournal / LiveJournal.com</generator>
  <lj:journal>sharifulin</lj:journal>
  <lj:journalid>12079499</lj:journalid>
  <lj:journaltype>personal</lj:journaltype>
  <atom10:link rel='hub' href='http://pubsubhubbub.appspot.com/' />
  <image>
    <url>http://l-userpic.livejournal.com/79386876/12079499</url>
    <title>Анатолий Шарифулин</title>
    <link>http://sharifulin.livejournal.com/</link>
    <width>100</width>
    <height>100</height>
  </image>

<item>
  <guid isPermaLink='true'>http://sharifulin.livejournal.com/52634.html</guid>
  <pubDate>Tue, 10 Nov 2009 18:15:49 GMT</pubDate>
  <title>Perl. Форматирование чисел</title>
  <link>http://sharifulin.livejournal.com/52634.html</link>
  <description>Сегодня потребовалось написать функцию по форматированию чисел, приведение к читаемому виду: &lt;em&gt;1234567 =&amp;gt; 1 234 567&lt;/em&gt;.&lt;br /&gt;Написал следующую короткую и красивую функцию:&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;sub&lt;font color=&quot;#ff0000&quot;&gt; D&lt;/font&gt;(&lt;/strong&gt;&lt;font color=&quot;#2040a0&quot;&gt;$)&lt;/font&gt; &lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;
	&lt;strong&gt;for&lt;/strong&gt; &lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color=&quot;#a52a2a&quot;&gt;&lt;strong&gt;scalar&lt;/strong&gt;&lt;/font&gt; &lt;font color=&quot;#a52a2a&quot;&gt;&lt;strong&gt;reverse&lt;/strong&gt;&lt;/font&gt; &lt;font color=&quot;#a52a2a&quot;&gt;&lt;strong&gt;shift&lt;/strong&gt;&lt;/font&gt;&lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;
		&lt;font color=&quot;#b000d0&quot;&gt;s/(\d{3})(?=\d)/$1 /g&lt;/font&gt;;
		&lt;strong&gt;return&lt;/strong&gt; &lt;font color=&quot;#a52a2a&quot;&gt;&lt;strong&gt;scalar&lt;/strong&gt;&lt;/font&gt; &lt;font color=&quot;#a52a2a&quot;&gt;&lt;strong&gt;reverse&lt;/strong&gt;&lt;/font&gt;;
	&lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;
&lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;

&lt;strong&gt;say&lt;/strong&gt; D 12345;
&lt;strong&gt;say&lt;/strong&gt; D 123456;
&lt;strong&gt;say&lt;/strong&gt; D 1234.56;&lt;/pre&gt;Спасибо &lt;span class=&apos;ljuser  ljuser-name_pavel_kudinov&apos; lj:user=&apos;pavel_kudinov&apos; style=&apos;white-space: nowrap;&apos;&gt;&lt;a href=&apos;http://pavel-kudinov.livejournal.com/profile&apos;&gt;&lt;img src=&apos;http://l-stat.livejournal.com/img/userinfo.gif&apos; alt=&apos;[info]&apos; width=&apos;17&apos; height=&apos;17&apos; style=&apos;vertical-align: bottom; border: 0; padding-right: 1px;&apos; /&gt;&lt;/a&gt;&lt;a href=&apos;http://pavel-kudinov.livejournal.com/&apos;&gt;&lt;b&gt;pavel_kudinov&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; за подсказку использовать&lt;strong&gt; (?=pattern)&lt;/strong&gt; &lt;em&gt;positive look-ahead assertion&lt;/em&gt; (&lt;a href=&quot;http://perldoc.perl.org/perlre.html&quot;&gt;perlre&lt;/a&gt;).&lt;br /&gt;Вместо этого у меня была вторая простая регекспа, которая удаляла лишний символ с конца.&lt;br /&gt;&lt;br /&gt;Функция умеет работать и с флоатом, где количество знаков после запятой максимум 3, опять же благодаря &lt;em&gt;(?=\d)&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;&lt;font color=&quot;#a52a2a&quot;&gt;&lt;strong&gt;scalar&lt;/strong&gt;&lt;/font&gt; &lt;font color=&quot;#a52a2a&quot;&gt;&lt;strong&gt;reverse &lt;/strong&gt;&lt;/font&gt;&lt;span style=&quot;font-family: Arial,Verdana,sans-serif;&quot;&gt; &lt;span style=&quot;font-family: monospace;&quot;&gt;&amp;ndash;&lt;/span&gt;&lt;/span&gt; заставляет работать &lt;em&gt;reverse&lt;/em&gt; в скалярном котексте при использовании в списковом контексте :) &lt;br /&gt;&lt;br /&gt; По-моему, очень красиво получилось ))) &lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt; &lt;/span&gt;&lt;a href=&quot;http://gist.github.com/231091&quot;&gt;Исходник&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ЗЫ: С Павлом Кудиновым сошлись на мнении, что наверня-ка на &lt;a href=&quot;http://search.cpan.org/&quot;&gt;CPAN&lt;/a&gt; есть модуль на несколько экранов с похожим функционалом :) &lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;br /&gt;use Perl or die;&lt;br /&gt;&lt;br /&gt;JFDI&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;</description>
  <comments>http://sharifulin.livejournal.com/52634.html</comments>
  <category>ironman</category>
  <category>perl</category>
  <category>pretty</category>
  <lj:security>public</lj:security>
  <lj:reply-count>18</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://sharifulin.livejournal.com/52225.html</guid>
  <pubDate>Mon, 02 Nov 2009 20:27:23 GMT</pubDate>
  <title>South Perl – сегодня ровно год :)</title>
  <link>http://sharifulin.livejournal.com/52225.html</link>
  <description>2 ноября 2008 года в Ростове-на-Дону прошел третий Российский Perl-воркшоп &amp;quot;&lt;strong&gt;South Perl&lt;/strong&gt;&amp;quot;.&lt;br /&gt; Было в первый раз, было круто, было интересно :)&lt;br /&gt; &lt;br /&gt; Сайт &lt;a href=&quot;http://rpw2008.perlrussia.ru/&quot;&gt;http://rpw2008.perlrussia.ru/&lt;/a&gt;&lt;br clear=&quot;all&quot; /&gt;Выступления &lt;a href=&quot;http://event.perlrussia.ru/rpw2008/talks&quot;&gt;http://event.perlrussia.ru/rpw2008/talks&lt;/a&gt;&lt;br /&gt;ЖЖ &lt;a href=&quot;http://sharifulin.livejournal.com/tag/southperl&quot;&gt;http://sharifulin.livejournal.com/tag/southperl&lt;/a&gt;&lt;br /&gt;Фото &lt;a href=&quot;http://www.flickr.com/photos/sharifulin/sets/72157608365664301/show/&quot;&gt;http://www.flickr.com/photos/sharifulin/sets/72157608365664301/show/&lt;/a&gt;&lt;br /&gt;Видео:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://russia.ru/video/use_perl_or_die/&quot;&gt;http://russia.ru/video/use_perl_or_die/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://yapc.tv/2008/rpw/&quot;&gt;http://yapc.tv/2008/rpw/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://www.youtube.com/watch?v=KhgjOb7g8p4&quot;&gt;http://www.youtube.com/watch?&lt;wbr&gt;&lt;/wbr&gt;v=KhgjOb7g8p4&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://www.youtube.com/watch?v=o_r9fydhIS8&quot;&gt;http://www.youtube.com/watch?&lt;wbr&gt;&lt;/wbr&gt;v=o_r9fydhIS8&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Just fun! :)&lt;br /&gt;&lt;br /&gt;Меня все больше посещают мысли провести South Perl &amp;ndash; 2.&lt;br /&gt;Варианты Ростов-на-Дону, Ставрополь (о.О), Волгоград (на парад Победы), Краснодар (Krasnodar.pm жив?!), Сочи (это вообще пи**ец :).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;use Perl or die;&lt;br /&gt;&lt;br /&gt;JFDI&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;</description>
  <comments>http://sharifulin.livejournal.com/52225.html</comments>
  <category>ironman</category>
  <category>southperl</category>
  <category>perl</category>
  <lj:security>public</lj:security>
  <lj:reply-count>1</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://sharifulin.livejournal.com/52071.html</guid>
  <pubDate>Mon, 26 Oct 2009 20:40:30 GMT</pubDate>
  <title>BY Perl Too Too</title>
  <link>http://sharifulin.livejournal.com/52071.html</link>
  <description>Минский воркшоп BY Perl Too, о котором я недавно &lt;a href=&quot;http://sharifulin.livejournal.com/51890.html&quot;&gt;писал&lt;/a&gt;, прошел успешно.&lt;br /&gt;Мне очень понравилось как в &lt;a href=&quot;http://cs1436.vkontakte.ru/u197019/10707055/x_e496c27e.jpg&quot;&gt;Минске&lt;/a&gt;, так и на самом мероприятие (и, конечно, социальная часть :)&lt;br /&gt;&lt;br /&gt;В поезде я все-таки успел подготовить 2 доклада, выступал под вечер, когда все почти устали, но слушали внимательно :)&lt;br /&gt;&lt;br /&gt;Первый доклад про &lt;strong&gt;Mojo&lt;/strong&gt;.&lt;br /&gt;Получилось много слайдов, но я не обо всем рассказал, расширю доклад в следующий раз.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;width: 425px; text-align: left;&quot;&gt;&lt;a title=&quot;Mojo. Веб в коробке!&quot; href=&quot;http://www.slideshare.net/sharifulin/mojo-2256498&quot; style=&quot;margin: 12px 0pt 3px; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; display: block; text-decoration: underline;&quot;&gt;Mojo. Веб в коробке!&lt;/a&gt;&lt;lj-embed id=&quot;48&quot; /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Блиц-доклад про &lt;strong&gt;CPAN&lt;/strong&gt;.&lt;br /&gt;Очередная версия доклада про CPAN и про сервис &lt;a href=&quot;http://cpan.perlrussia.ru&quot;&gt;http://cpan.perlrussia.ru&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;width: 425px; text-align: left;&quot;&gt;&lt;a title=&quot;CPAN: модули, авторы и документация&quot; href=&quot;http://www.slideshare.net/sharifulin/cpan-2261308&quot; style=&quot;margin: 12px 0pt 3px; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; display: block; text-decoration: underline;&quot;&gt;CPAN: модули, авторы и документация&lt;/a&gt;&lt;lj-embed id=&quot;49&quot; /&gt;&lt;/div&gt;&lt;div style=&quot;font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;&quot;&gt;View more &lt;a href=&quot;http://www.slideshare.net/&quot; style=&quot;text-decoration: underline;&quot;&gt;documents&lt;/a&gt; from &lt;a href=&quot;http://www.slideshare.net/sharifulin&quot; style=&quot;text-decoration: underline;&quot;&gt;Anatoly Sharifulin&lt;/a&gt;.&lt;br /&gt;&amp;nbsp;&lt;/div&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;Организатор(ы) позаботились о wifi и некоторые доклады я транслировал в интернет через &lt;a href=&quot;http://twitcam.com/user/sharifulin&quot;&gt;twitcam.com&lt;/a&gt;.&lt;br /&gt;Надеюсь, скоро все выступления появятся на &lt;a href=&quot;http://yapc.tv&quot;&gt;yapc.tv&lt;/a&gt; (да, &lt;a href=&quot;http://onperl.ru/onperl/&quot;&gt;Андрей&lt;/a&gt;?)&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;use Perl or die;&lt;br /&gt;&lt;br /&gt;JFDI&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name=&quot;cutid1&quot;&gt;&lt;/a&gt;&lt;strong&gt;ЗЫ: Твиттер лента про воркшоп:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;status-body&quot;&gt;&lt;span class=&quot;entry-content&quot;&gt;Еду в Минск на пёрл-воркшоп &lt;a href=&quot;http://event.perlbelarus.org/minsk2009/&quot; class=&quot;tweet-url web&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://event.perlbelarus.or...&lt;/a&gt; :) Ща буду доклады готовить )))&lt;/span&gt;&lt;span class=&quot;meta entry-meta&quot;&gt;&lt;a href=&quot;http://twitter.com/sharifulin/status/4896595727&quot; class=&quot;entry-date&quot; rel=&quot;bookmark&quot;&gt;&lt;span class=&quot;published timestamp&quot;&gt;11:34 PM Oct 15th&lt;/span&gt;&lt;/a&gt; &lt;span&gt;from &lt;a href=&quot;http://echofon.com/&quot; rel=&quot;nofollow&quot;&gt;Echofon&lt;/a&gt;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;status-body&quot;&gt;&lt;span class=&quot;entry-content&quot;&gt;Подготовил блиц, батареи осталось на полтора часа, нашел рабочую розетку в 6 вагоне, заряжаю :) Еще большой доклад надо подготовить&lt;/span&gt;&lt;span class=&quot;meta entry-meta&quot;&gt;&lt;a href=&quot;http://twitter.com/sharifulin/status/4911021516&quot; class=&quot;entry-date&quot; rel=&quot;bookmark&quot;&gt;&lt;span class=&quot;published timestamp&quot;&gt;11:48 AM Oct 16th&lt;/span&gt;&lt;/a&gt; &lt;span&gt;from &lt;a href=&quot;http://m.twitter.com/&quot; rel=&quot;nofollow&quot;&gt;mobile web&lt;/a&gt;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;status-body&quot;&gt;&lt;span class=&quot;entry-content&quot;&gt;@&lt;a class=&quot;tweet-url username&quot; href=&quot;http://twitter.com/vtivti&quot;&gt;vtivti&lt;/a&gt; : &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;status-body&quot;&gt;&lt;span class=&quot;entry-content&quot;&gt;@&lt;a class=&quot;tweet-url username&quot; href=&quot;http://twitter.com/sharifulin&quot;&gt;sharifulin&lt;/a&gt; Готовить доклад в поезде -- это очень дальновидно ;)&lt;/span&gt;&lt;span class=&quot;meta entry-meta&quot;&gt;&lt;a href=&quot;http://twitter.com/vtivti/status/4911100895&quot; class=&quot;entry-date&quot; rel=&quot;bookmark&quot;&gt;&lt;span class=&quot;published timestamp&quot;&gt;11:56 AM Oct 16th&lt;/span&gt;&lt;/a&gt; &lt;span&gt;from &lt;a href=&quot;http://www.process-one.net/&quot; rel=&quot;nofollow&quot;&gt;XMPP Gateway&lt;/a&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;status-body&quot;&gt;&lt;span class=&quot;entry-content&quot;&gt;@&lt;a class=&quot;tweet-url username&quot; href=&quot;http://twitter.com/vtivti&quot;&gt;vtivti&lt;/a&gt; а билет покупать за 5 часов? :-)&lt;/span&gt;&lt;span class=&quot;meta entry-meta&quot;&gt;&lt;a href=&quot;http://twitter.com/sharifulin/status/4911371195&quot; class=&quot;entry-date&quot; rel=&quot;bookmark&quot;&gt;&lt;span class=&quot;published timestamp&quot;&gt;12:20 PM Oct 16th&lt;/span&gt;&lt;/a&gt; &lt;span&gt;from &lt;a href=&quot;http://m.twitter.com/&quot; rel=&quot;nofollow&quot;&gt;mobile web&lt;/a&gt;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;status-body&quot;&gt;&lt;span class=&quot;entry-content&quot;&gt;Я на BY Perl Too 2009 в Минске! :) Доклады готовы, выступаю в 15:50 и в конце в сессии блиц-докладах &lt;a href=&quot;http://tinyurl.com/ygkfbjm&quot; class=&quot;tweet-url web&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://tinyurl.com/ygkfbjm&lt;/a&gt;&lt;/span&gt;&lt;span class=&quot;meta entry-meta&quot;&gt;&lt;a href=&quot;http://twitter.com/sharifulin/status/4939498454&quot; class=&quot;entry-date&quot; rel=&quot;bookmark&quot;&gt;&lt;span class=&quot;published timestamp&quot;&gt;2:05 PM Oct 17th&lt;/span&gt;&lt;/a&gt; &lt;span&gt;from &lt;a href=&quot;http://echofon.com/&quot; rel=&quot;nofollow&quot;&gt;Echofon&lt;/a&gt;&lt;/span&gt; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;status-body&quot;&gt;&lt;span class=&quot;meta entry-meta&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;status-body&quot;&gt;&lt;span class=&quot;entry-content&quot;&gt;&lt;a href=&quot;http://twitcam.com/425t&quot; class=&quot;tweet-url web&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://twitcam.com/425t&lt;/a&gt; - BY Perl Too here! Really :)&lt;/span&gt;&lt;span class=&quot;meta entry-meta&quot;&gt;&lt;a href=&quot;http://twitter.com/sharifulin/status/4940561899&quot; class=&quot;entry-date&quot; rel=&quot;bookmark&quot;&gt;&lt;span class=&quot;published timestamp&quot;&gt;3:51 PM Oct 17th&lt;/span&gt;&lt;/a&gt; &lt;span&gt;from &lt;a href=&quot;http://apiwiki.twitter.com/&quot; rel=&quot;nofollow&quot;&gt;API&lt;/a&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;status-body&quot;&gt;&lt;span class=&quot;entry-content&quot;&gt;&lt;a href=&quot;http://twitcam.com/426v&quot; class=&quot;tweet-url web&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://twitcam.com/426v&lt;/a&gt; - Perl6::Pod &lt;a href=&quot;http://twitter.com/search?q=%23byperl2009&quot; title=&quot;#byperl2009&quot; class=&quot;tweet-url hashtag&quot;&gt;#byperl2009&lt;/a&gt;&lt;/span&gt;&lt;span class=&quot;meta entry-meta&quot;&gt;&lt;a href=&quot;http://twitter.com/sharifulin/status/4941534908&quot; class=&quot;entry-date&quot; rel=&quot;bookmark&quot;&gt;&lt;span class=&quot;published timestamp&quot;&gt;5:08 PM Oct 17th&lt;/span&gt;&lt;/a&gt; &lt;span&gt;from &lt;a href=&quot;http://apiwiki.twitter.com/&quot; rel=&quot;nofollow&quot;&gt;API&lt;/a&gt;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;status-body&quot;&gt;&lt;span class=&quot;entry-content&quot;&gt;&lt;a href=&quot;http://twitcam.com/427j&quot; class=&quot;tweet-url web&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://twitcam.com/427j&lt;/a&gt; - dbix::class &lt;a href=&quot;http://twitter.com/search?q=%23byperl2009&quot; title=&quot;#byperl2009&quot; class=&quot;tweet-url hashtag&quot;&gt;#byperl2009&lt;/a&gt;&lt;/span&gt;&lt;span class=&quot;meta entry-meta&quot;&gt;&lt;a href=&quot;http://twitter.com/sharifulin/status/4942206559&quot; class=&quot;entry-date&quot; rel=&quot;bookmark&quot;&gt;&lt;span class=&quot;published timestamp&quot;&gt;5:52 PM Oct 17th&lt;/span&gt;&lt;/a&gt; &lt;span&gt;from &lt;a href=&quot;http://apiwiki.twitter.com/&quot; rel=&quot;nofollow&quot;&gt;API&lt;/a&gt;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;status-body&quot;&gt;&lt;span class=&quot;entry-content&quot;&gt;@&lt;a class=&quot;tweet-url username&quot; href=&quot;http://twitter.com/vtivti&quot;&gt;vtivti&lt;/a&gt; : &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;status-body&quot;&gt;&lt;span class=&quot;entry-content&quot;&gt;@&lt;a class=&quot;tweet-url username&quot; href=&quot;http://twitter.com/sharifulin&quot;&gt;sharifulin&lt;/a&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;status-body&quot;&gt;&lt;span class=&quot;meta entry-meta&quot;&gt;К сожалению информация немного устаревшая. В последних коммитах много нового.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;status-body&quot;&gt;&lt;span class=&quot;entry-content&quot;&gt;@&lt;a class=&quot;tweet-url username&quot; href=&quot;http://twitter.com/vtivti&quot;&gt;vtivti&lt;/a&gt; да-да, я сам офигел, когда начал делать доклад, ну надо было хоть что-то сделать :) Тем более в поезде нет инета )))&lt;/span&gt;&lt;span class=&quot;meta entry-meta&quot;&gt;&lt;a href=&quot;http://twitter.com/sharifulin/status/4945051791&quot; class=&quot;entry-date&quot; rel=&quot;bookmark&quot;&gt;&lt;span class=&quot;published timestamp&quot;&gt;8:19 PM Oct 17th&lt;/span&gt;&lt;/a&gt; &lt;span&gt;from &lt;a href=&quot;http://echofon.com/&quot; rel=&quot;nofollow&quot;&gt;Echofon&lt;/a&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;@arthur_pokesh: Бля Толя ты крутой, не могу больше это слушать ) (@sharifulin live on http://twitcam.com/42ay)&lt;br /&gt;&lt;span class=&quot;status-body&quot;&gt;&lt;span class=&quot;entry-content&quot;&gt;@&lt;a class=&quot;tweet-url username&quot; href=&quot;http://twitter.com/vtivti&quot;&gt;vtivti&lt;/a&gt; : &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;status-body&quot;&gt;&lt;span class=&quot;entry-content&quot;&gt;@&lt;a class=&quot;tweet-url username&quot; href=&quot;http://twitter.com/sharifulin&quot;&gt;sharifulin&lt;/a&gt; Хорошо рассказал, жаль только я про себя ничего не услышал, отвалилась твоя трансляция на слове bootylicious :D&lt;/span&gt;&lt;span class=&quot;meta entry-meta&quot;&gt;&lt;a href=&quot;http://twitter.com/vtivti/status/4945121518&quot; class=&quot;entry-date&quot; rel=&quot;bookmark&quot;&gt;&lt;span class=&quot;published timestamp&quot;&gt;8:22 PM Oct 17th&lt;/span&gt;&lt;/a&gt; &lt;span&gt;from &lt;a href=&quot;http://www.process-one.net/&quot; rel=&quot;nofollow&quot;&gt;XMPP Gateway&lt;/a&gt;&lt;/span&gt; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;@soko1: @Sharifulin во мне вызвал желание изучить MOJO (фреймворк). Благодарю за отличную лекцию!&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;status-body&quot;&gt;&lt;span class=&quot;entry-content&quot;&gt;&lt;a href=&quot;http://twitcam.com/42gr&quot; class=&quot;tweet-url web&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://twitcam.com/42gr&lt;/a&gt; - LT &lt;a href=&quot;http://twitter.com/search?q=%23byperl2009&quot; title=&quot;#byperl2009&quot; class=&quot;tweet-url hashtag&quot;&gt;#byperl2009&lt;/a&gt;&lt;/span&gt;&lt;span class=&quot;meta entry-meta&quot;&gt;&lt;a href=&quot;http://twitter.com/sharifulin/status/4945580372&quot; class=&quot;entry-date&quot; rel=&quot;bookmark&quot;&gt;&lt;span class=&quot;published timestamp&quot;&gt;8:43 PM Oct 17th&lt;/span&gt;&lt;/a&gt; &lt;span&gt;from &lt;a href=&quot;http://apiwiki.twitter.com/&quot; rel=&quot;nofollow&quot;&gt;API&lt;/a&gt;&lt;/span&gt; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;status-body&quot;&gt;&lt;span class=&quot;entry-content&quot;&gt;&lt;a href=&quot;http://twitcam.com/42hh&quot; class=&quot;tweet-url web&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://twitcam.com/42hh&lt;/a&gt; - qqq&lt;/span&gt;&lt;span class=&quot;meta entry-meta&quot;&gt;&lt;a href=&quot;http://twitter.com/sharifulin/status/4945939619&quot; class=&quot;entry-date&quot; rel=&quot;bookmark&quot;&gt;&lt;span class=&quot;published timestamp&quot;&gt;9:00 PM Oct 17th&lt;/span&gt;&lt;/a&gt; &lt;span&gt;from &lt;a href=&quot;http://apiwiki.twitter.com/&quot; rel=&quot;nofollow&quot;&gt;API&lt;/a&gt;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;status-body&quot;&gt;&lt;span class=&quot;entry-content&quot;&gt;Вчера ел вкусные мозги, свиные ушки и был в реальном кабаке :) Социальная часть &lt;a href=&quot;http://twitter.com/search?q=%23byperl2009&quot; title=&quot;#byperl2009&quot; class=&quot;tweet-url hashtag&quot;&gt;#byperl2009&lt;/a&gt; удалась. Мне в Минске нравится )&lt;/span&gt;&lt;span class=&quot;meta entry-meta&quot;&gt;&lt;a href=&quot;http://twitter.com/sharifulin/status/4963581789&quot; class=&quot;entry-date&quot; rel=&quot;bookmark&quot;&gt;&lt;span class=&quot;published timestamp&quot;&gt;1:07 PM Oct 18th&lt;/span&gt;&lt;/a&gt; &lt;span&gt;from &lt;a href=&quot;http://echofon.com/&quot; rel=&quot;nofollow&quot;&gt;Echofon&lt;/a&gt;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;status-body&quot;&gt;&lt;span class=&quot;entry-content&quot;&gt;@&lt;a class=&quot;tweet-url username&quot; href=&quot;http://twitter.com/kraih&quot;&gt;kraih&lt;/a&gt;: @&lt;a class=&quot;tweet-url username&quot; href=&quot;http://twitter.com/sharifulin&quot;&gt;sharifulin&lt;/a&gt; Great presentation (at least the parts i could understand). :)&lt;/span&gt;&lt;span class=&quot;meta entry-meta&quot;&gt;&lt;a href=&quot;http://twitter.com/sharifulin/status/4963586419&quot; class=&quot;entry-date&quot; rel=&quot;bookmark&quot;&gt;&lt;span class=&quot;published timestamp&quot;&gt;1:08 PM Oct 18th&lt;/span&gt;&lt;/a&gt; &lt;span&gt;from &lt;a href=&quot;http://echofon.com/&quot; rel=&quot;nofollow&quot;&gt;Echofon&lt;/a&gt;&lt;/span&gt; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;status-body&quot;&gt;&lt;span class=&quot;meta entry-meta&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;@babi4: @sharifulin посмотрел) круто) хотел бы послушать что будешь рассказывать)&lt;br /&gt;&lt;span class=&quot;status-body&quot;&gt;&lt;span class=&quot;entry-content&quot;&gt;@&lt;a class=&quot;tweet-url username&quot; href=&quot;http://twitter.com/babi4&quot;&gt;babi4&lt;/a&gt; надеюсь видео не заставит нас ждать (yapc.tv), онлайн трансляция поломалась, twitcam.com подвел&lt;/span&gt;&lt;span class=&quot;meta entry-meta&quot;&gt;&lt;a href=&quot;http://twitter.com/sharifulin/status/4967603586&quot; class=&quot;entry-date&quot; rel=&quot;bookmark&quot;&gt;&lt;span class=&quot;published timestamp&quot;&gt;7:15 PM Oct 18th&lt;/span&gt;&lt;/a&gt; &lt;span&gt;from &lt;a href=&quot;http://echofon.com/&quot; rel=&quot;nofollow&quot;&gt;Echofon&lt;/a&gt;&lt;/span&gt; &lt;a href=&quot;http://twitter.com/babi4/status/4964816465&quot;&gt;in reply to babi4&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;status-body&quot;&gt;&lt;span class=&quot;entry-content&quot;&gt;Купил белорусских чипсов, еду на вокзал. В Минске круто, но очень хочется домой :) Всем спасибо: гостинице Турыст, гиду Юре и &lt;a href=&quot;http://twitter.com/search?q=%23byperl2009&quot; title=&quot;#byperl2009&quot; class=&quot;tweet-url hashtag&quot;&gt;#byperl2009&lt;/a&gt;!&lt;/span&gt;&lt;span class=&quot;meta entry-meta&quot;&gt;&lt;a href=&quot;http://twitter.com/sharifulin/status/4967720872&quot; class=&quot;entry-date&quot; rel=&quot;bookmark&quot;&gt;&lt;span class=&quot;published timestamp&quot;&gt;7:22 PM Oct 18th&lt;/span&gt;&lt;/a&gt; &lt;span&gt;from &lt;a href=&quot;http://echofon.com/&quot; rel=&quot;nofollow&quot;&gt;Echofon&lt;/a&gt;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;status-body&quot;&gt;&lt;span class=&quot;entry-content&quot;&gt;В Минске ел борщ по-могилевски (сладкий с вкусной колбаской 10 см) и драники в горшочке. Очень вкусно и дешево :)&lt;/span&gt;&lt;span class=&quot;meta entry-meta&quot;&gt;&lt;a href=&quot;http://twitter.com/sharifulin/status/5001061550&quot; class=&quot;entry-date&quot; rel=&quot;bookmark&quot;&gt;&lt;span class=&quot;published timestamp&quot;&gt;1:30 AM Oct 20th&lt;/span&gt;&lt;/a&gt; &lt;span&gt;from &lt;a href=&quot;http://echofon.com/&quot; rel=&quot;nofollow&quot;&gt;Echofon&lt;/a&gt;&lt;/span&gt; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;status-body&quot;&gt;&lt;span class=&quot;meta entry-meta&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;status-body&quot;&gt;&lt;span class=&quot;entry-content&quot;&gt;Я дома, в Минске хорошо, воркшоп &lt;a href=&quot;http://twitter.com/search?q=%23byperl2009&quot; title=&quot;#byperl2009&quot; class=&quot;tweet-url hashtag&quot;&gt;#byperl2009&lt;/a&gt; удался. Всем привет! :)&lt;/span&gt;&lt;span class=&quot;meta entry-meta&quot;&gt;&lt;a href=&quot;http://twitter.com/sharifulin/status/5001028960&quot; class=&quot;entry-date&quot; rel=&quot;bookmark&quot;&gt;&lt;span class=&quot;published timestamp&quot;&gt;1:29 AM Oct 20th&lt;/span&gt;&lt;/a&gt; &lt;span&gt;from &lt;a href=&quot;http://echofon.com/&quot; rel=&quot;nofollow&quot;&gt;Echofon&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;status-body&quot;&gt;&lt;span class=&quot;meta entry-meta&quot;&gt; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;status-body&quot;&gt;&lt;span class=&quot;meta entry-meta&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;</description>
  <comments>http://sharifulin.livejournal.com/52071.html</comments>
  <category>ironman</category>
  <category>perl</category>
  <category>byperl2009</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://sharifulin.livejournal.com/51890.html</guid>
  <pubDate>Thu, 15 Oct 2009 19:47:32 GMT</pubDate>
  <title>BY Perl Too</title>
  <link>http://sharifulin.livejournal.com/51890.html</link>
  <description>В субботу 17 октября 2009 года в Минске пройдет второй пёрл-воркшоп &amp;quot;BY Perl Too&amp;quot;. Подробная информация о мероприятие &lt;a href=&quot;http://2009.perlbelarus.org/&quot;&gt;тут&lt;/a&gt;.&lt;br /&gt;&lt;a href=&quot;http://event.perlbelarus.org/minsk2009/user/3632&quot;&gt;&lt;br /&gt;Я&lt;/a&gt;, кстати, еду, сейчас собираю вещи и буду готовить доклады, впереди сутки в поезде, надеюсь успеть всё сделать и поспать :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&amp;quot;Минск&amp;quot;, use Perl, JFDI or die;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;:)&lt;br /&gt;&lt;br /&gt;</description>
  <comments>http://sharifulin.livejournal.com/51890.html</comments>
  <category>ironman</category>
  <category>perl</category>
  <category>byperl2009</category>
  <category>минск</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://sharifulin.livejournal.com/51624.html</guid>
  <pubDate>Thu, 08 Oct 2009 17:46:02 GMT</pubDate>
  <title>Continuity и Squatting. Чат?!</title>
  <link>http://sharifulin.livejournal.com/51624.html</link>
  <description>&lt;br /&gt;Попробовал &lt;a href=&quot;http://search.cpan.org/~awwaiid/Continuity-1.01/&quot;&gt;Continuity&lt;/a&gt; и микро-фреймворк &lt;a href=&quot;http://search.cpan.org/~beppu/Squatting-0.70/&quot;&gt;Squatting&lt;/a&gt; на примере чата, где сервер &amp;ndash; &lt;a href=&quot;http://en.wikipedia.org/wiki/Push_technology&quot;&gt;Push&lt;/a&gt;, клиент &amp;ndash; &lt;a href=&quot;http://en.wikipedia.org/wiki/Push_technology#Long_polling&quot;&gt;long-polling&lt;/a&gt;.&lt;br /&gt;Я разочаровался, нагрузку ни чистый Continuity, ни Squatting::On::Continuity не держат. Уже при 4-5 одновременных клиентах, которые постоянно пишут, сервер сильно тормозит :(&lt;br /&gt;&lt;br /&gt;Пример чата на Continuity и Squatting можно найти в дистрибутиве модулей, в примерах.&lt;br /&gt;Пример чата на Squatting + AnyEvent на &lt;a href=&quot;http://github.com/beppu/mad-scientists-lab/tree/master/chat/&quot;&gt;Github.com&lt;/a&gt; (также тормозит).&lt;br /&gt;&lt;br /&gt;Вообще, Squatting злая штука :)&lt;br /&gt;&lt;br /&gt;Попробовал для реализации чата: &lt;a href=&quot;http://www.ape-project.org/&quot;&gt;APE&lt;/a&gt; (сложная штука на Си, клиент на мутулс, вообще не понравилась), &lt;a href=&quot;http://meteorserver.org/&quot;&gt;Meteord&lt;/a&gt; (не сразу завелся, не очень), &lt;a href=&quot;http://wiki.nginx.org/NginxHttpPushModule&quot;&gt;NginxHttpPushModule&lt;/a&gt; (как-то не так работает, плюс пару раз воркеры nginx ушли почти в 100% CPU). Не стал пробовать &lt;a href=&quot;http://dklab.ru/lib/dklab_multiplexor/&quot;&gt;dklab multiplex&lt;/a&gt; на Event::Lib и &lt;a href=&quot;http://search.cpan.org/~ewaters/POE-Component-Server-Bayeux-0.03/&quot;&gt;POE::Component::Server::Bayeux&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Очень хочется попробовать сделать чат на &lt;a href=&quot;http://googleappengine.blogspot.com/2009/10/interactive-xmpp-demos.html&quot;&gt;XMPP&lt;/a&gt;, по-моему, это правильно :)&lt;br /&gt;</description>
  <comments>http://sharifulin.livejournal.com/51624.html</comments>
  <category>ironman</category>
  <category>squatting</category>
  <category>perl</category>
  <category>meteord</category>
  <category>continuity</category>
  <category>ape</category>
  <category>xmpp</category>
  <lj:security>public</lj:security>
  <lj:reply-count>5</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://sharifulin.livejournal.com/51271.html</guid>
  <pubDate>Mon, 28 Sep 2009 18:41:14 GMT</pubDate>
  <title>AnyEvent, AnyEvent::HTTP и Mojo::ByteStream</title>
  <link>http://sharifulin.livejournal.com/51271.html</link>
  <description>Удивление, удивление-два и привычка :)&lt;br /&gt;&lt;br /&gt;Был удивлен, но оказывается &lt;strong&gt;AnyEvent/EV&lt;/strong&gt; не позволяет выполнять вложенные condvar, получается рекурсия.&lt;br /&gt;Вложенные кондвары не нужны, код легко модифицировать на работу либо с одним (самое главное send вызвать в самый последний момент, чтобы вся асинхронная работа была выполнена), либо с несколькими, тогда вызовы должны быть последовательными. &lt;a href=&quot;http://sharifulin.livejournal.com/51271.html?thread=186951#t186951&quot;&gt;Пример&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Так же был удивлён, что&lt;strong&gt; AnyEvent::HTTP&lt;/strong&gt; автоматически заполняет заголовок Referer у запроса (для работы по умолчанию это лишнее) и не искейпит символы в урле (очень плохо, &lt;strong&gt;LWP::UserAgent&lt;/strong&gt; и/или&lt;strong&gt; PoCo::Client::HTTP&lt;/strong&gt; это делают на автомате, т.к. используют &lt;strong&gt;HTTP::Request&lt;/strong&gt;).&lt;br /&gt;&lt;br /&gt;За последнее время я так привык работать с &lt;strong&gt;Mojo&lt;/strong&gt; (напомню, Mojo &amp;ndash; pure perl http-фреймворк, &amp;quot;почти&amp;quot; без зависимостей, &amp;quot;веб в коробке&amp;quot;), что при возникновение задач вне окружения Mojo, которые связаны с перекодированием символом, не задумываясь, использую модуль &lt;strong&gt;Mojo::ByteStream&lt;/strong&gt;. Например, для искейпинга символов в урле (проблема с AnyEvent::HTTP) использую следующий код:&lt;br /&gt;&lt;pre&gt;
Mojo::ByteStream-&amp;gt;&lt;strong&gt;new&lt;/strong&gt;&lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;$str&lt;/font&gt;&lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;-&amp;gt;url_escape
&lt;/pre&gt;&lt;br /&gt;Для перевода html-последовательности символов вида &amp;amp;#1043; в печатные символы использую следующий код:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;
Mojo::ByteStream-&amp;gt;&lt;strong&gt;new&lt;/strong&gt;&lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;$str&lt;/font&gt;&lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;-&amp;gt;encode&lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color=&quot;#008000&quot;&gt;&apos;utf8&apos;&lt;/font&gt;&lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;-&amp;gt;html_unescape
&lt;/pre&gt;&lt;br /&gt;Очень удобно и не надо вспоминать, в каком модуле реализован данный функционал.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;use Perl or die;&lt;br /&gt;&lt;br /&gt;JFDI&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</description>
  <comments>http://sharifulin.livejournal.com/51271.html</comments>
  <category>ironman</category>
  <category>perl</category>
  <category>mojo</category>
  <category>anyevent</category>
  <lj:security>public</lj:security>
  <lj:reply-count>8</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://sharifulin.livejournal.com/51179.html</guid>
  <pubDate>Sun, 20 Sep 2009 08:55:41 GMT</pubDate>
  <title>Mojo. Первый критичный баг</title>
  <link>http://sharifulin.livejournal.com/51179.html</link>
  <description>Нашел в &lt;a href=&quot;http://search.cpan.org/dist/Mojo/&quot;&gt;Mojo&lt;/a&gt; критичный баг, а именно &amp;ndash; при запуске сервера как демон-префорк (&lt;a href=&quot;http://search.cpan.org/perldoc?Mojo::Server::Daemon::Prefork&quot;&gt;Mojo::Server::Daemon::Prefork&lt;/a&gt;), рабочий процесс (чайлд) падает при работе с пайпами; при запуске сервера как демон или CGI такой проблемы нет.&lt;br /&gt;Подробное описание и тест в &lt;a href=&quot;http://lists.kraih.com/pipermail/mojo/2009-September/000413.html&quot;&gt;рассылке&lt;/a&gt; (кстати, мне там сделали замечание, как писать об ошибке). Надеюсь, что я доступно объяснил и показал баг, чтобы автор Mojo и/или кто-нибудь другой нашли решение. Сам пока не нашел.&lt;br /&gt;&lt;br /&gt;Реальная задача, которая обнаружила это &amp;ndash; отправка сообщения через &lt;em&gt;sendmail&lt;/em&gt; в обработчике. Скорее всего ошибка в том, что возникает сигнал завершения потомка и он завершает работу воркера, а не пайпа.&lt;br /&gt;&lt;br /&gt;Временное решение проблемы. Есть два варианта:&lt;ul&gt;&lt;li&gt;отправлять сообщения не сразу, а накапливать в очередь и какой-нибудь внешний процесс должен заниматься отправкой сообщений (плюс такого решения в том, что некоторые сообщения можно отменять)&lt;/li&gt;&lt;li&gt;урлы, в обработчиках которых возможна отправка сообщений, направлять не на демон-префорк, а на чистый демон (легко разруливается через &lt;em&gt;nginx&lt;/em&gt;-конфиг)&lt;/li&gt;&lt;/ul&gt;Mojo настолько хорош, что фикс бага должен обязательно найтись :)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;UPD&lt;/strong&gt;: Решение найдено!&amp;nbsp; &lt;a href=&quot;http://github.com/sharifulin/mojo/commit/416b0b15b637ed0fe8d9bf3ca3ba348e16d07f2b&quot;&gt;github.com/sharifulin/mojo/commit/416b0b15b637ed0fe8d9bf3ca3ba348e16d07f2b&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;</description>
  <comments>http://sharifulin.livejournal.com/51179.html</comments>
  <category>ironman</category>
  <category>perl</category>
  <category>mojo</category>
  <category>баг</category>
  <lj:security>public</lj:security>
  <lj:reply-count>4</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://sharifulin.livejournal.com/50728.html</guid>
  <pubDate>Fri, 11 Sep 2009 09:07:48 GMT</pubDate>
  <title>Запуск проектов на AnyEvent и Mojo</title>
  <link>http://sharifulin.livejournal.com/50728.html</link>
  <description>&lt;strong&gt;&lt;br /&gt;AnyEvent&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Запустили &lt;a href=&quot;http://station20.ru/#twitter&quot;&gt;твиттеры&lt;/a&gt; всех пользователей &lt;a href=&quot;http://station20.ru/&quot;&gt;СТАНЦИИ 2.0&lt;/a&gt;, о котором я писал в &lt;a href=&quot;http://sharifulin.livejournal.com/50658.html&quot;&gt;предыдущем посте&lt;/a&gt;. &lt;br /&gt;Используем &lt;a href=&quot;http://search.cpan.org/perldoc?AnyEvent::Twitter::Stream&quot;&gt;&lt;strong&gt;AnyEvent::Twitter::Stream&lt;/strong&gt;&lt;/a&gt;. Сам API находится в альфа-тестировании, поэтому мы работаем так же :)&lt;br /&gt;&lt;br /&gt;Получилось очень круто, иногда интересней, чем ЧАТЕГ :)&lt;br /&gt;Пишите в твиттер и слушайте СТАНЦИЮ 2.0!&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;br /&gt;Mojo&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;На днях запустили &lt;a href=&quot;http://rykov.ru/&quot;&gt;Рыков.ру&lt;/a&gt;, это первый публичный проект, полностью написанный на &lt;a href=&quot;http://mojolicious.org/&quot;&gt;&lt;strong&gt;Mojolicious&lt;/strong&gt;&lt;/a&gt;, в качестве шаблонизатора простой php-like шаблонизатор &lt;a href=&quot;http://search.cpan.org/perldoc?Mojo::Template&quot;&gt;Mojo::Template&lt;/a&gt;, в качестве интерфейса &amp;ndash; &lt;a href=&quot;http://search.cpan.org/perldoc?Mojo::Server::Daemon::Prefork&quot;&gt;daemon_prefork&lt;/a&gt;, в момент разработки &amp;ndash;&amp;nbsp; &lt;a href=&quot;http://search.cpan.org/perldoc?Mojo::Server::Daemon&quot;&gt;daemon&lt;/a&gt; c установленной переменной окружения &lt;strong&gt;MOJO_RELOAD&lt;/strong&gt;&amp;nbsp; (изменения применяются без перезапуска), профилирование &amp;ndash; с помошью &lt;a href=&quot;http://search.cpan.org/perldoc?Devel::NYTProf&quot;&gt;Devel::NYProf&lt;/a&gt; и &lt;a href=&quot;http://search.cpan.org/perldoc?Mojo::Server::CGI&quot;&gt;CGI&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;В тестовом режиме запустили API для &lt;a href=&quot;http://marusya.ru/&quot;&gt;Маруси&lt;/a&gt;. Серверная часть написана на &lt;a href=&quot;http://search.cpan.org/perldoc?Mojolicious::Lite&quot;&gt;&lt;strong&gt;Mojolicious::Lite&lt;/strong&gt;&lt;/a&gt; + &lt;a href=&quot;http://search.cpan.org/perldoc?MojoX::Renderer::JSON&quot;&gt;&lt;strong&gt;MojoX::Renderer::JSON&lt;/strong&gt;&lt;/a&gt;.&lt;br /&gt;Получилось очень круто и все в одном файле, всего 246 строк :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Что можно сказать про &lt;strong&gt;Mojo&lt;/strong&gt;. Нет стабильной версии, постоянно выходят новые версии без обратной совместимости, но это нормально :)&lt;br /&gt;Многие фичи приходится дописывать самому, автор лоялен к обсуждению функционала Mojo, принимает патчи, фиксит баги.&lt;br /&gt;Иногда меня и мои просьбы не понимает )))&lt;br /&gt;В целом, мне &lt;strong&gt;Mojo/Mojolicious&lt;/strong&gt; нравится, простой и очень удобный. Даже шаблонизатор мне понравился, хотя в начале я не понимал его.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;use Perl or die;&lt;br /&gt;&lt;br /&gt;JFDI&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;</description>
  <comments>http://sharifulin.livejournal.com/50728.html</comments>
  <category>ironman</category>
  <category>mojolicious</category>
  <category>perl</category>
  <category>mojo</category>
  <category>anyevent</category>
  <lj:security>public</lj:security>
  <lj:reply-count>5</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://sharifulin.livejournal.com/50658.html</guid>
  <pubDate>Thu, 03 Sep 2009 16:59:45 GMT</pubDate>
  <title>Риалтайм твиттер – риал? тайм!</title>
  <link>http://sharifulin.livejournal.com/50658.html</link>
  <description>У отличного сервиса &lt;a href=&quot;http://twitter.com/&quot;&gt;&lt;strong&gt;Twitter&lt;/strong&gt;&lt;/a&gt; есть хороший &lt;a href=&quot;http://apiwiki.twitter.com/Twitter-API-Documentation&quot;&gt;API&lt;/a&gt;, особенность &amp;ndash; &lt;a href=&quot;http://apiwiki.twitter.com/Streaming-API-Documentation&quot;&gt;Streaming API&lt;/a&gt;, возможность получать данные из твиттера мгновенно, почти в реальном времени (риалтайм веб?).&lt;br /&gt;&lt;br /&gt;Меня заинтересовала такая возможность, тем более есть необходимость получать статусы из твиттера всех пользователей &lt;a href=&quot;http://station20.ru/&quot;&gt;СТАНЦИИ 2.0&lt;/a&gt; (конечно, у кого есть твиттер) и отображать их на странице в реальном времени. Похожая идея реализована &lt;a href=&quot;http://www.greenspace.info/twitter/stream/public.html&quot;&gt;тут&lt;/a&gt;, только это видимость реального времени, т.к. делается один запрос на сервер, и постепенно по одному статусу показывается на странице, затем следующий запрос и так далее :)&lt;br /&gt;&lt;br /&gt;&lt;a name=&quot;cutid1&quot;&gt;&lt;/a&gt;На &lt;a href=&quot;http://search.cpan.org/&quot;&gt;CPAN&lt;/a&gt; я нашел реализацию Twitter Streaming API &amp;ndash; &lt;a href=&quot;http://search.cpan.org/perldoc?AnyEvent::Twitter::Stream&quot;&gt;&lt;strong&gt;AnyEvent::Twitter::Stream&lt;/strong&gt;&lt;/a&gt;.&lt;br /&gt;С помощью модуля, действительно, очень просто получать статусы пользователей в реально времени, примера из синопсиса достаточно, чтобы быстро реализовать это.&lt;br /&gt;&lt;br /&gt;Далее полученные статусы пользователей каким-то образом надо выводить, отдавать клиенту.&lt;br /&gt;Идеальный вариант &amp;ndash; &lt;a href=&quot;http://en.wikipedia.org/wiki/Push_technology&quot;&gt;Push&lt;/a&gt;-сервер и соответствующий клиент на JavaScript. Но я пока так не умею, камень преткновения &amp;ndash; клиентская сторона (делал такое &amp;ndash; сервер и клиент на Perl).&lt;br /&gt;Я выбрал следующую реализацию (выбирал так, чтобы быстро реализовать): &lt;ul&gt;&lt;li&gt;простой и быстрый сервер &amp;ndash; точно должен быть мультиплексирующий, думал о &lt;a href=&quot;http://search.cpan.org/perldoc?AnyEvent::Mojo&quot;&gt;AnyEvent::Mojo&lt;/a&gt; (устарел, т.к. последний &lt;a href=&quot;http://search.cpan.org/perldoc?Mojo&quot;&gt;Mojo&lt;/a&gt; обратно не совместим, но подправить не сложно, просто не решился :), выбрал &lt;a href=&quot;http://search.cpan.org/perldoc?AnyEvent::HTTPD&quot;&gt;&lt;strong&gt;AnyEvent::HTTPD&lt;/strong&gt;&lt;/a&gt; (заработал сразу :),&lt;/li&gt;&lt;li&gt;постоянно опрашивающий &amp;quot;тупой&amp;quot; клиент (&lt;a href=&quot;http://jquery.com&quot;&gt;&lt;strong&gt;jQuery&lt;/strong&gt;&lt;/a&gt; решает), который выводит только новые для него сообщения,&lt;/li&gt;&lt;li&gt;формат данных &amp;ndash; &lt;a href=&quot;http://ru.wikipedia.org/wiki/JSON&quot;&gt;&lt;strong&gt;JSON&lt;/strong&gt;&lt;/a&gt; (последнее время всегда такой формат выбираю, спасибо &lt;a href=&quot;http://search.cpan.org/perldoc?JSON::XS&quot;&gt;JSON::XS&lt;/a&gt;, очень быстро работает).&lt;/li&gt;&lt;/ul&gt;Вот такой &lt;a href=&quot;http://gist.github.com/180393&quot;&gt;код&lt;/a&gt; сервера получился.&lt;br /&gt; &lt;br /&gt;Риалтайм твиттер заработал.&lt;br /&gt;Но:&lt;ul&gt;&lt;li&gt;данный скрипт вылетает при возникновение ошибки соединения с твиттером,&lt;/li&gt;&lt;li&gt;ограничение в 150 запросов в час на API твиттера, иначе 401/406 ошибка.&lt;/li&gt;&lt;/ul&gt;Последнее &amp;quot;но&amp;quot; придется обходить: либо умышленно делать &amp;lt;= 150 запросов, либо отказаться от Stream API и использовать обычное API, которое по крону будет получать новые статусы пользователей.&lt;br /&gt;&lt;br /&gt;Все-таки риалтайм веб еще далеко, но ближе, чем был год назад :)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;use Perl or die;&lt;br /&gt;&lt;br /&gt;Just F*cking Do It&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</description>
  <comments>http://sharifulin.livejournal.com/50658.html</comments>
  <category>ironman</category>
  <category>stream</category>
  <category>perl</category>
  <category>twitter</category>
  <category>anyevent</category>
  <lj:security>public</lj:security>
  <lj:reply-count>9</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://sharifulin.livejournal.com/50188.html</guid>
  <pubDate>Mon, 24 Aug 2009 18:00:40 GMT</pubDate>
  <title>Perl. Коротко о разработке</title>
  <link>http://sharifulin.livejournal.com/50188.html</link>
  <description>Если раньше для разработки простых серверов я использовал POE::Component::Server::SimpleHTTP, то сейчас мне вполне хватает Mojo или Mojolicious::Lite. Легко, просто и быстро. Заинтриговал? На этом все, привет с моря :) &lt;br /&gt;&lt;br&gt;&lt;font size=&quot;-1&quot;&gt;&lt;i&gt;Опубликовано с &lt;a href=&quot;http://www.livejournal.ru/mobile/portal&quot; target=&quot;_blank&quot;&gt;мобильного портала&lt;/a&gt; &lt;a href=&quot;http://m.livejournal.com/&quot; target=&quot;_blank&quot;&gt;m.livejournal.com&lt;/a&gt;&lt;/i&gt;&lt;/font&gt;</description>
  <comments>http://sharifulin.livejournal.com/50188.html</comments>
  <category>perl</category>
  <category>mojo</category>
  <lj:security>public</lj:security>
  <lj:reply-count>8</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://sharifulin.livejournal.com/49970.html</guid>
  <pubDate>Mon, 17 Aug 2009 19:57:38 GMT</pubDate>
  <title>Perl. use strict; use warnings; use features; use Modern::Perl; use common::sense;</title>
  <link>http://sharifulin.livejournal.com/49970.html</link>
  <description>Почти каждый Perl-программист знает, что всегда нужно писать:&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;use&lt;/strong&gt; strict;
&lt;strong&gt;use&lt;/strong&gt; warnings;
&lt;/pre&gt;С выходом perl 5.10 еще и:&lt;pre&gt;

&lt;strong&gt;use&lt;/strong&gt; features &apos;...&apos;;
&lt;/pre&gt;&lt;br /&gt;&lt;a href=&quot;http://www.modernperlbooks.com/mt/2009/01/toward-a-modernperl.html&quot;&gt;Некоторые&lt;/a&gt; решили, что приходится писать слишком много &amp;quot;буковок&amp;quot;. Так появился модуль&lt;a href=&quot;http://search.cpan.org/perldoc?Modern::Perl&quot;&gt; Modern::Perl &lt;/a&gt;и новая веха в развитии Perl 5, получившая одноименное название. Модуль подключает и импортирует в пространство имен прагмы &lt;em&gt;strict, warnings, features и mro&lt;/em&gt;. Теперь скрипты должны начинаться со следующей строчки:&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;use&lt;/strong&gt; Modern::Perl;
 &lt;/pre&gt;Оказывается, можно пойти дальше и написать так:&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;use&lt;/strong&gt; common::sense;
&lt;/pre&gt;&lt;br /&gt;Что это такое? Это &lt;strong&gt;почти&lt;/strong&gt; тоже самое, что и Modern::Perl, только круче :)&lt;pre&gt;&lt;strong&gt;use&lt;/strong&gt; strict &lt;font color=&quot;#a52a2a&quot;&gt;&lt;strong&gt;qw&lt;/strong&gt;&lt;/font&gt;&lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;vars subs&lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;;
&lt;strong&gt;use&lt;/strong&gt; feature &lt;font color=&quot;#a52a2a&quot;&gt;&lt;strong&gt;qw&lt;/strong&gt;&lt;/font&gt;&lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;say state switch&lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;;
&lt;font color=&quot;#a52a2a&quot;&gt;&lt;strong&gt;no&lt;/strong&gt;&lt;/font&gt; warnings;
&lt;/pre&gt;Содержимое модуля:&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;sub&lt;font color=&quot;#ff0000&quot;&gt; import&lt;/font&gt; {&lt;/strong&gt;
   &lt;font color=&quot;#444444&quot;&gt;# no warnings&lt;br /&gt;   &lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;${^WARNING_BITS}&lt;/font&gt; ^= &lt;font color=&quot;#2040a0&quot;&gt;${^WARNING_BITS}&lt;/font&gt;;

   &lt;font color=&quot;#444444&quot;&gt;# use strict vars subs&lt;br /&gt;   &lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;$^&lt;/font&gt;H |= 0x00000600;

   &lt;font color=&quot;#444444&quot;&gt;# use feature&lt;br /&gt;   &lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;$^&lt;/font&gt;H&lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;feature_switch&lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt; =
   &lt;font color=&quot;#2040a0&quot;&gt;$^&lt;/font&gt;H&lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;feature_say&lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;    =
   &lt;font color=&quot;#2040a0&quot;&gt;$^&lt;/font&gt;H&lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;feature_state&lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;  = 1;
&lt;font color=&quot;#4444ff&quot;&gt;&lt;strong&gt;}  &lt;/strong&gt;&lt;/font&gt;
&lt;/pre&gt; Преимущество &amp;ndash; использует меньше памяти, чем другие решения.&lt;br /&gt;&lt;br /&gt;Обоснование и подробности на &lt;a href=&quot;http://search.cpan.org/perldoc?common::sense&quot;&gt;CPAN&lt;/a&gt;&apos;е. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ЗЫ:&lt;/strong&gt; Вопреки всем убеждениям в своем коде не использую use warnings или -w, я научился чувствовать и понимать, почему я могу этим пренебречь в той или иной ситуации (за что большое спасибо &lt;span class=&apos;ljuser  ljuser-name_pavel_kudinov&apos; lj:user=&apos;pavel_kudinov&apos; style=&apos;white-space: nowrap;&apos;&gt;&lt;a href=&apos;http://pavel-kudinov.livejournal.com/profile&apos;&gt;&lt;img src=&apos;http://l-stat.livejournal.com/img/userinfo.gif&apos; alt=&apos;[info]&apos; width=&apos;17&apos; height=&apos;17&apos; style=&apos;vertical-align: bottom; border: 0; padding-right: 1px;&apos; /&gt;&lt;/a&gt;&lt;a href=&apos;http://pavel-kudinov.livejournal.com/&apos;&gt;&lt;b&gt;pavel_kudinov&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;&amp;nbsp;). Так что common::sense мне вполне подходит :)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ЗЫ2:&lt;/strong&gt; Автор common::sense &amp;ndash; &lt;a href=&quot;http://search.cpan.org/~mlehmann/&quot;&gt;Марк Лехманн&lt;/a&gt; (AnyEvent, Coro, EV, BDB).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;use Perl or die;&lt;br /&gt;&lt;br /&gt;JFDI&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;</description>
  <comments>http://sharifulin.livejournal.com/49970.html</comments>
  <category>ironman</category>
  <category>perl</category>
  <category>common::sense</category>
  <category>modern perl</category>
  <lj:security>public</lj:security>
  <lj:reply-count>14</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://sharifulin.livejournal.com/49693.html</guid>
  <pubDate>Mon, 10 Aug 2009 07:32:19 GMT</pubDate>
  <title>Perl. Коротко об AnyEvent</title>
  <link>http://sharifulin.livejournal.com/49693.html</link>
  <description>&amp;nbsp;AnyEvent &amp;ndash; очень крут! :)&lt;br /&gt;&lt;br /&gt;Ссылки по теме:&lt;ul&gt;&lt;li&gt;Документация для новичка &lt;a href=&quot;http://search.cpan.org/~mlehmann/AnyEvent-5.01/lib/AnyEvent/Intro.pod&quot;&gt;AnyEvent::Intro&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Новое API &amp;ndash; &lt;a href=&quot;http://search.cpan.org/~mlehmann/AnyEvent-5.01/lib/AE.pm&quot;&gt;AE&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&amp;quot;EV / Event /EventLib / Glib / POE / IOAsync / Irssi / Qt / Tk &amp;ndash; я все могу&amp;quot; &lt;a href=&quot;http://search.cpan.org/~mlehmann/AnyEvent-5.01/&quot;&gt;AnyEvent::Impl::*&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&amp;quot;DBI / BDB / CouchDB &amp;ndash; тоже могу&amp;quot;&lt;/li&gt;&lt;li&gt;&amp;quot;Я дружу с Coro&amp;quot; &lt;a href=&quot;http://search.cpan.org/perldoc?Coro::AnyEvent&quot;&gt;AnyEvent::Coro&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&amp;quot;И Mojo мой друг&amp;quot; &lt;a href=&quot;http://search.cpan.org/perldoc?AnyEvent::Mojo::Server&quot;&gt;AnyEvent::Mojo::Server&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Количество дистрибутивов постоянно растет &lt;a href=&quot;http://search.cpan.org/search?m=dist&amp;amp;q=anyevent&amp;amp;s=21&quot;&gt;AnyEvent::*&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Real-time Web: &lt;a href=&quot;http://search.cpan.org/dist/AnyEvent-FriendFeed-Realtime/&quot;&gt;AnyEvent::FriendFeed::Realtime&lt;/a&gt; &lt;a href=&quot;http://search.cpan.org/dist/AnyEvent-Twitter-Stream/&quot;&gt;AnyEvent::Twitter::Stream&lt;/a&gt; &lt;a href=&quot;http://search.cpan.org/dist/AnyEvent-ReverseHTTP/&quot;&gt;AnyEvent::ReverseHTTP&lt;/a&gt; &lt;a href=&quot;http://search.cpan.org/dist/AnyEvent-Atom-Stream/&quot;&gt;AnyEvent::Atom-Stream&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Чат на AnyEvent &lt;a href=&quot;http://search.cpan.org/~mlehmann/AnyEvent-MP-0.1/MP/Intro.pod&quot;&gt;AnyEvent::MP::Intro&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;</description>
  <comments>http://sharifulin.livejournal.com/49693.html</comments>
  <category>perl</category>
  <category>anyevent</category>
  <lj:security>public</lj:security>
  <lj:reply-count>9</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://sharifulin.livejournal.com/49411.html</guid>
  <pubDate>Mon, 03 Aug 2009 07:34:03 GMT</pubDate>
  <title>YAPC::EU 2009 – самое крупное Perl-мероприятие в Европе в 2009</title>
  <link>http://sharifulin.livejournal.com/49411.html</link>
  <description>&lt;a href=&quot;http://yapceurope2009.org/ye2009/&quot;&gt;YAPC::EU 2009&lt;/a&gt; &amp;ndash; юбилейная (десятая) европейская &amp;quot;другая конференция&amp;quot; по Perl, проходит с 3 по 5 августа 2009 года в Лиссабоне (Португалия).&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://yapceurope2009.org/ye2009/images/logo.png&quot; alt=&quot;YAPC::EU::2009&quot; style=&quot;width: 180px; height: 210px;&quot; /&gt;&lt;br /&gt;&lt;br /&gt;На конференцию &lt;a href=&quot;http://yapceurope2009.org/ye2009/stats&quot;&gt;зарегистрировалось&lt;/a&gt; &lt;strong&gt;412&lt;/strong&gt; перловика из &lt;strong&gt;32&lt;/strong&gt; стран и &lt;strong&gt;74&lt;/strong&gt; pm-групп.&lt;strong&gt; 3 дня&lt;/strong&gt; выступлений и&lt;strong&gt; 4 дня&lt;/strong&gt; мастер-классов. &lt;a href=&quot;http://yapceurope2009.org/ye2009/schedule?day=2009-08-03&quot;&gt;Подробное расписание.&lt;/a&gt; Там будут &lt;a href=&quot;http://yapceurope2009.org/ye2009/user/273&quot;&gt;Ларри Уолл&lt;/a&gt;, &lt;a href=&quot;http://yapceurope2009.org/ye2009/user/1353&quot;&gt;Демиан Конвей&lt;/a&gt;, &lt;a href=&quot;http://yapceurope2009.org/ye2009/user/1525&quot;&gt;Брайн Д Фой&lt;/a&gt;, &lt;a href=&quot;http://yapceurope2009.org/ye2009/user/263&quot;&gt;Габор Жабо&lt;/a&gt;, &lt;a href=&quot;http://yapceurope2009.org/ye2009/user/1846&quot;&gt;Мэт Траут&lt;/a&gt; и многие другие известные перловики. Россию представляют &lt;a href=&quot;http://yapceurope2009.org/ye2009/user/1773&quot;&gt;Андрей Шитов&lt;/a&gt;, &lt;a href=&quot;http://yapceurope2009.org/ye2009/user/1927&quot;&gt;Алекс Капранов&lt;/a&gt; и &lt;a href=&quot;http://yapceurope2009.org/ye2009/user/2794&quot;&gt;Руслан Закиров&lt;/a&gt;, каждый из них подготовил доклад :)&lt;br /&gt;&lt;br /&gt;На мой взгляд интересные доклады:&lt;ul&gt;&lt;li&gt;Ларри Уолл &lt;a href=&quot;http://yapceurope2009.org/ye2009/talk/2083&quot;&gt;Keynote&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://yapceurope2009.org/ye2009/talk/1820&quot;&gt;How Opera Software uses Perl&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Про &lt;a href=&quot;http://yapceurope2009.org/ye2009/talk/1802&quot;&gt;MooseX::Declare&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Выступления &lt;a href=&quot;http://yapceurope2009.org/ye2009/user/1846&quot;&gt;Мэт Траута&lt;/a&gt;, он очень ярко рассказывает :)&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://yapceurope2009.org/ye2009/talk/2027&quot;&gt;How I built a modern website on Catalyst, KiokuDB and REST&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://Catch Me If You Can: Sugary exception handling with TryCatch.pm&quot;&gt;Catch Me If You Can: Sugary exception handling with TryCatch.pm&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://yapceurope2009.org/ye2009/talk/2062&quot;&gt;Awesome things you&apos;ve missed in Perl&lt;/a&gt;&lt;strong&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://yapceurope2009.org/ye2009/talk/1954&quot;&gt;Perl 6 &amp;hearts; the Web&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Блиц-доклады&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Хочется дождаться презентаций и видео с мероприятия, а в следующем году поехать на YAPC::EU :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</description>
  <comments>http://sharifulin.livejournal.com/49411.html</comments>
  <category>perl</category>
  <category>yapc::eu</category>
  <lj:security>public</lj:security>
  <lj:reply-count>3</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://sharifulin.livejournal.com/49312.html</guid>
  <pubDate>Fri, 31 Jul 2009 11:45:27 GMT</pubDate>
  <title>CPANTS – Сервис контроля для CPAN</title>
  <link>http://sharifulin.livejournal.com/49312.html</link>
  <description>Всем молодым и не только CPAN-авторам советую пользоваться сервисом &lt;a href=&quot;http://cpants.perl.org/&quot;&gt;CPANTS&lt;/a&gt;, сервис котроля для CPAN.&lt;br /&gt;&lt;br /&gt;Основная фишка сервиса &amp;ndash; это &lt;strong&gt;kwalitee&lt;/strong&gt;, коэффициент качества. Такой коэффициент есть как у &lt;a href=&quot;http://cpants.perl.org/author/SHARIFULN&quot;&gt;автора&lt;/a&gt;, так и у &lt;a href=&quot;http://cpants.perl.org/dist/overview/Net-LastFM-Submission&quot;&gt;дистрибутива&lt;/a&gt;.&lt;br /&gt;На его основе строится &lt;a href=&quot;http://cpants.perl.org/stats.html&quot;&gt;несколько рейтингов&lt;/a&gt;, &lt;a href=&quot;http://cpants.perl.org/graphs.html&quot;&gt;графики&lt;/a&gt; и многопользовательская &amp;quot;он-лайн игра&amp;quot; :) (&lt;a href=&quot;http://cpants.perl.org/highscores/few&quot;&gt;лига до 5 дистрибутивов&lt;/a&gt;, &lt;a href=&quot;http://cpants.perl.org/highscores/many&quot;&gt;лига более 5 дистрибутивов&lt;/a&gt; и &lt;a href=&quot;http://cpants.perl.org/highscores/hall_of_fame&quot;&gt;лучшее дистрибутивы&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Вот информация обо мне со слов CPANTS.&lt;br /&gt;&lt;br /&gt;&lt;img alt=&quot;&quot; src=&quot;http://rostovondon.pm.org/sharifulin/author.png&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Я в лиге до 5 дистрибутивов, позиция в рейтиге &lt;strong&gt;1&lt;/strong&gt;, коэффициент качества &lt;strong&gt;134.783&lt;/strong&gt;.&lt;br /&gt;Очень интересная получается игра &amp;ndash; улучшать свой дистрибутив, увеличивая kwalitee.&lt;br /&gt;Интересный параметр 5й с конца &amp;ndash; уговорить/заставить других CPAN-авторов использовать ваш модуль :) Пока никого не уговорил.&lt;br /&gt;&lt;br /&gt;К сожалению, данный сервис не умеет работать с дистрибутивами, у которых несколько мейнтейнеров. Так например мой дистрибутив &lt;a href=&quot;http://search.cpan.org/dist/Acme-CPANAuthors-Russian/&quot;&gt;Acme::CPANAuthours::Russian&lt;/a&gt; не участвует в моем рейтинге.&lt;br /&gt;&lt;br /&gt;Сегодня решил опубликовать еще несколько своих модулей на CPAN (осталось только написать документацию и тесты :), тем самым покинув лигу до 5 дистрибутивов и потеряв первую позицию. В лиге более 5 вообще анреал выйти в топ, посмотрите сами :)&lt;br /&gt;&lt;br /&gt;Если ты CPAN-автор, увеличь свой kwalitee, сделай цвет своей таблицы зеленым, попади в топ!&lt;br /&gt;Это игра, это CPAN, это Perl!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;use Perl or die;&lt;br /&gt;&lt;br /&gt;Just F*cking Do It&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;</description>
  <comments>http://sharifulin.livejournal.com/49312.html</comments>
  <category>perl</category>
  <category>cpants</category>
  <category>cpan</category>
  <category>module</category>
  <lj:security>public</lj:security>
  <lj:reply-count>1</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://sharifulin.livejournal.com/49016.html</guid>
  <pubDate>Thu, 23 Jul 2009 09:40:24 GMT</pubDate>
  <title>Русская поддержка Perl</title>
  <link>http://sharifulin.livejournal.com/49016.html</link>
  <description>Меня спросили, а что можно почитать по Perl на русском, кроме книг от орейли и двух страниц на perlrussia.ru?&lt;br /&gt;Ответ очень простой: мой блог и англоязычные блоги и Perl-планеты.&lt;br /&gt;И смех и грех.&lt;br /&gt;&lt;br /&gt;Действительно, что у нас есть?&lt;br /&gt;Непонятный домен perl.ru, который никак не перекупить. Раньше на нем был &amp;quot;гламурный&amp;quot; сайт про Perl и форум.&lt;br /&gt;Афиша мероприятий и несколько полезных ссылок на &lt;a href=&quot;http://perlrussia.ru&quot;&gt;perlrussia.ru&lt;/a&gt;.&lt;br /&gt;Старое г*вно типа &lt;a href=&quot;http://perl.org.ru&quot;&gt;perl.org.ru&lt;/a&gt; и статьи 2000 года, которые надо назвать: &amp;quot;Так писать на Perl нельзя!&amp;quot;.&lt;br /&gt;Пара форумов и ru_perl, на &lt;a href=&quot;http://forum.vingrad.ru/forum/Perl-forum.html&quot;&gt;одном&lt;/a&gt; из форумов я был ко-модератором, но туда уже не захожу.&lt;br /&gt;Авторский блог perl6.ru&lt;br /&gt;Несколько блогов, где авторы пишут про Perl.&lt;br /&gt;Заброшенный проект POD2::RU (все-таки перевод это сложная штука, особенно когда такие объемы, массу волонтеров найти не получилось, поэтому надо заказать перевод за деньги).&lt;br /&gt;~200 перловиков в Москве, ~90 в Киеве, по ~25 в Ростове-на-Дону и Владивостоке, ~17 в Минске (судя по конференциям) и отличный университет в Екатеринбурге, где преподают Perl на первом курсе.&lt;br /&gt; &lt;br /&gt;Чего нет?&lt;br /&gt;Самое главное &amp;ndash; нет официального русскоязычного сайта и планеты из русскоязычных блогов про Perl 5 и Perl 6.&lt;br /&gt;&lt;br /&gt;Сразу возникает вопрос, как новичок может получить быстрый старт в Perl в России?&lt;br /&gt;Только сам (как мы с вами, но это долго) или придя в фирму, которая готова вырастить Perl-программиста за короткие сроки (Точка кипения?!).&lt;br /&gt;&lt;br /&gt;По-моему, это все сложно :) П*здец.&lt;br /&gt;&lt;br /&gt;P.S. Я сам читаю 47 фидов про Perl, из них 10 на русском, наверно надо поделиться :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</description>
  <comments>http://sharifulin.livejournal.com/49016.html</comments>
  <category>perl</category>
  <category>россия</category>
  <lj:security>public</lj:security>
  <lj:reply-count>51</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://sharifulin.livejournal.com/48745.html</guid>
  <pubDate>Mon, 13 Jul 2009 08:54:03 GMT</pubDate>
  <title>PHP маст дай</title>
  <link>http://sharifulin.livejournal.com/48745.html</link>
  <description>Давно хотел написать пост на эту тему, но сегодня как никогда, увидел &lt;a href=&quot;http://dklab.ru/chicken/nablas/55.html&quot;&gt;статью Котерова&lt;/a&gt;.&lt;br /&gt;Все три шага, приведенные в ней, имеют место быть. Именно поэтому пхп-программистов большое количество, причем многие из них далеко не программисты. Снизив порог вхождения, мы имеем, что имеем: кучу некачественного кода, движки форумов/галерей и их многочисленные уязвимости. Это обратная сторона медали. &lt;br /&gt;&lt;br /&gt;Меня порадовала фраза в статье:&lt;div style=&quot;margin-left: 40px;&quot;&gt;&lt;em&gt;&lt;br /&gt;профессиональные программисты на PHP не используют embedded-синтаксис, а предпочитают разделять код и шаблон страницы. Таким образом, очевидно, что embedded-синтаксис &amp;mdash; &lt;i&gt;средство завлечения&lt;/i&gt; новой аудитории, а не инструмент языка.    &lt;/em&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 40px;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;a name=&quot;cutid1&quot;&gt;&lt;/a&gt;Лично у меня тут возникают несколько вопросов.&lt;br /&gt;Профессионал, зачем тебе использовать PHP, если все фишки пхп&amp;nbsp; не используются?&lt;br /&gt;MVC &amp;ndash; это убийца PHP как такового, зачем тогда его использовать?&lt;br /&gt;Может быть для того, чтобы написать свой &amp;quot;пхп&amp;quot; на С++, оставив php-шные урлы как Facebook и/или ВКонтакте?&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Что такое PHP?&lt;/em&gt; Это миллион функций и никакого синтаксического сахара, никакой гибкости, все просто и тупо, все просто, чтобы сделать несложный сайт. Даже консольные скрипты не попишешь на нем, потому что будет через ж*пу :)&lt;br /&gt;PHP &amp;ndash; &lt;strong&gt;это крутой embedding-синтаксис&lt;/strong&gt;, который &amp;quot;профессионалы&amp;quot; не используют, &lt;strong&gt;это простые формы&lt;/strong&gt;, который &amp;quot;профессионалы&amp;quot; не используют, &lt;strong&gt;это ошибки в браузере&lt;/strong&gt;, которые &amp;quot;профессионалы&amp;quot; не могут позволить себе использвовать, и &lt;strong&gt;это у*бищный синтаксис в неймспейсах&lt;/strong&gt; (назову я его windows-like), который обсуждают &amp;quot;профессионалы&amp;quot; и индексируют мега-профессионалы :)&lt;br /&gt;&lt;br /&gt;Если ты профессионал, или хочешь им быть, тебе это не нужно, тебе не нужен PHP!&lt;br /&gt;&lt;br /&gt;У меня есть две цитаты по поводу PHP:&lt;br /&gt;&lt;div style=&quot;margin-left: 40px;&quot;&gt;&lt;br /&gt;&lt;em&gt;На пхп программируют только лохи&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Пхп как шансон, никому не нравится, но все слушают&lt;/em&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;От слов к делу. А именно к коду.&lt;br /&gt;&lt;br /&gt;Я столкнулся с пхп-скриптом, который постит треки из ротации на Last.fm. Да-да, именно&lt;em&gt; Last.fm&amp;nbsp; Ыubmission&lt;/em&gt;. Ко мне обратились как профессионалу в этом деле :) (напомню, я автор &lt;a href=&quot;http://search.cpan.org/perldoc?Net::LastFM::Submission&quot;&gt;Net::LastFM::Submission&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Итак, это был консольный скрипт на PHP, который читал данные из файла и постил их на Last.fm.&lt;br /&gt;Код из разряда говнокода, написан так &amp;ndash; лишь бы работал. Тут я сразу вспомнил формулировку &lt;em&gt;write-only&lt;/em&gt;, которую прекрепили к Perl.&lt;br /&gt;Если на сегодня есть &lt;em&gt;write-only&lt;/em&gt; язык программирования, то это PHP!&lt;br /&gt;&lt;br /&gt;Почему-то сразу решил расставить ворнов, чтобы разобраться как скрипт работает. Тут я столкнулся с тем, что PHP и warnings не совместимы :) Сначала я нашел очень интересное решение писать сообщения в STDERR &amp;ndash; через &lt;strong&gt;php://stderr.&lt;/strong&gt; От самой конструкции я очень долго смеялся (URI-схема php &amp;ndash; это сильно). Затем я написал функцию warn для PHP (&lt;strong&gt;real Perl PHP warn&lt;/strong&gt;):&lt;br /&gt;&lt;pre&gt;&lt;em&gt;function warn($msg) { fwrite(STDERR, substr($msg, -1) == &amp;quot;\n&amp;quot; ? $msg : $msg.&apos; at &apos;.__FILE__.&apos; line &apos;.__LINE__.&amp;quot;.\n&amp;quot;); }&lt;/em&gt;

&lt;/pre&gt;Всем пхп-профессионалам рекомендую использовать такую функцию :)&lt;br /&gt;&lt;br /&gt;Далее я решил сделать глобальную переменную, куда планировал вынести все настройки скрипта. Но не тут-то было, в PHP глобальные переменные не так работают как в Perl  без use strict. Чтобы сделать ее видимой, например, в функции, надо использовать &lt;em&gt;global&lt;/em&gt;. Ааа, как все сложно :)&lt;br /&gt;&lt;br /&gt;Затем я поразился от синтаксиса создания хеша:  &lt;em&gt;array( key =&amp;gt; value, ... )&lt;/em&gt;. Даже в JavaScript проще можно.&lt;br /&gt;Конечно, может быть я в PHP чего-то не знаю (а я и не знаю), но такое решение &amp;ndash; полный п*здец, его, наверно, используют 99% новичков. &amp;quot;Профессионалы&amp;quot;, вы видели как это делается в Perl? :)&lt;br /&gt;&lt;br /&gt;Очень позабавили функции работы с датами и с таймзонами.&lt;br /&gt;&lt;br /&gt;Зато есть функция trim &amp;ndash; на  Perl это максимум 3 регекспы, причем простых, очень простых.&lt;br /&gt;Насколько мне известно, большинство пхпшников боятся, очень боятся регекспов. Я даже знаю почему: это жутко неудобно в PHP!&lt;br /&gt;Проще и круче, чем в Perl, регулярных выражений не найти. &amp;quot;Профессионалы&amp;quot;, а вы используете регекспы?&lt;br /&gt;&lt;br /&gt;Добило меня: включение класса работы с Last.fm в исходник скрипта, зато все коменты автора класса и права сохранены.&lt;br /&gt;И тут новая волна говнокода.&lt;br /&gt;&lt;br /&gt;Количество переменных поражает глаз, такое ощущение, что все из переменных, а где код?&lt;br /&gt;Чтобы сделать GET-запрос используется мега-функция &lt;em&gt;file_get_contents&lt;/em&gt;, а чтобы сделать POST-запрос используются  сокеты, чистые сокеты. Это что получается, чтобы сделать POST-запрос в PHP я должен быть &amp;quot;профессионалом&amp;quot;? &lt;br /&gt;&lt;br /&gt;Это очень сложно, это очень write-only, это п*здец, PHP &amp;ndash; это п*здец. Извините, &amp;quot;профессионалы&amp;quot;.&lt;br /&gt;&lt;br /&gt;Аналогичный код на Perl пишется на много проще, поверьте мне :)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ЗЫ:&lt;/strong&gt; Для меня &lt;a href=&quot;http://www.google.com/url?sa=t&amp;amp;source=web&amp;amp;ct=res&amp;amp;cd=2&amp;amp;url=http%3A%2F%2Fdmitry.moikrug.ru%2F&amp;amp;ei=qPVaSvrnBNHK_gbkwd2oBA&amp;amp;usg=AFQjCNFyd59om-JOJCkuHJWpDBdxiIQw8A&amp;amp;sig2=iyGbIgr78VTZOEUGqd--Kw&quot;&gt;Дмитрий Котеров&lt;/a&gt; когда-то был иконой веб-разработки, с денвера, форума на dklab.ru и куроводств я начинал, я делал так же: &amp;quot;&lt;em&gt;Generation time: 0.04 s GZip enabled: 9516/23684 (60%)&lt;/em&gt;&amp;quot;. Затем я забыл про него, научился&amp;nbsp; программировать на Perl, вспомнил про его модули &lt;strong&gt;CGI::WebIn / WebOut&lt;/strong&gt;, посмотрел исходники и офигел, такого говнокода на Perl от него я не ожидал, это ужас. Потом я понял, что Дмитрий увлекся PHP, мне стало все понятно. Он выпустил пару книг, сделал&amp;nbsp; МойКруг. Он профессионал, не спорю.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Но! &lt;strong&gt;PHP &amp;ndash; это зло&lt;/strong&gt;!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;use Perl or die;&lt;br /&gt;&lt;br /&gt;Just F*cking Do It&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;UPD:&lt;/strong&gt; Придумал новую цитату:&lt;br /&gt;&lt;div style=&quot;margin-left: 40px;&quot;&gt;&lt;br /&gt;&lt;em&gt;Любишь себя, не пиши на пхп&lt;br /&gt;&lt;br /&gt;&lt;/em&gt;&lt;/div&gt;</description>
  <comments>http://sharifulin.livejournal.com/48745.html</comments>
  <category>цитата</category>
  <category>perl</category>
  <category>php</category>
  <category>write-only</category>
  <lj:security>public</lj:security>
  <lj:reply-count>58</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://sharifulin.livejournal.com/48406.html</guid>
  <pubDate>Wed, 08 Jul 2009 18:58:08 GMT</pubDate>
  <title>Perl. MooseX::Declare</title>
  <link>http://sharifulin.livejournal.com/48406.html</link>
  <description>Второй день уже мучаю &lt;strong&gt;MooseX::Declare&lt;/strong&gt;, постоянно посматриваю в &lt;a href=&quot;http://babyl.dyndns.org/perl/moose-mongers/&quot;&gt;презентацию&lt;/a&gt;.&lt;br /&gt;Получается интересно, уже 4я версия кода, с каждой версией абстракция растет и количество килобайт тоже :) Но голова болит еще больше, приходиться &amp;quot;иначе&amp;quot; мыслить, чем прежде.&lt;br /&gt;Пока нравится то, что много интересных фишек (например, собственные типы, классы со вложениями и указания имен как ::Bar, а не полные Foo::Bar, lazy-дефолтные поля), код заставляет тебя не ошибаться, где-то что-то упустил и все п*здец, не работаить :)&lt;br /&gt;Сейчас столкнулся с одной проблемой, сразу не стандартизировал поле, посчитал его произвольным и теперь мучаюсь с разными форматами. Завтра собираюсь написать 5 версию и избавиться от этого. Постоянный рефакторинг &amp;ndash; это круто, метки типа XXX и FUCK решают.&lt;br /&gt;&lt;br /&gt;Чувствую себя ModernPerl&apos;истом :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</description>
  <comments>http://sharifulin.livejournal.com/48406.html</comments>
  <category>perl5</category>
  <category>perl</category>
  <category>modern perl</category>
  <category>moosex::declare</category>
  <lj:security>public</lj:security>
  <lj:reply-count>1</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://sharifulin.livejournal.com/48295.html</guid>
  <pubDate>Mon, 29 Jun 2009 13:40:23 GMT</pubDate>
  <title>Perl. Cache::FastMmap побаловаться, но не использовать</title>
  <link>http://sharifulin.livejournal.com/48295.html</link>
  <description>Года два назад наткнулся на модуль &lt;a href=&quot;http://search.cpan.org/~robm/Cache-FastMmap-1.34/FastMmap.pm&quot;&gt;&lt;strong&gt;Cache::FastMmap&lt;/strong&gt;&lt;/a&gt;, документация очень впечатлила, по-моему, именно в таком стиле надо доку писать!&lt;br /&gt;Попробовал заюзать этот модуль, все хорошо, работает, на синтетических тестах показывал хорошие результат.&lt;br /&gt;Я даже подумал, что memcached мне нужен.&lt;br /&gt;Но со временем при увеличение нагрузки, процессы при обработке определенных запросов стали уходить в &lt;strong&gt;D&lt;/strong&gt; (uninterruptible) и все подвисало, иногда так, что даже залогиниться не получалось :) Временное решение сразу нашлось &amp;ndash; перезапуск процессов, если &lt;strong&gt;D&lt;/strong&gt; много. Уже хотел начать профилировать код, но вспомнил про &lt;strong&gt;Cache::FastMmap&lt;/strong&gt;.&lt;br /&gt;Убрав его, все наладилось, пока D ни разу не было. Профилированием обязательно займусь, &lt;a href=&quot;http://search.cpan.org/~timb/Devel-NYTProf-2.10/lib/Devel/NYTProf.pm&quot;&gt;&lt;strong&gt;Devel::NYTProf&lt;/strong&gt;&lt;/a&gt;, ты готов?&amp;nbsp;:)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</description>
  <comments>http://sharifulin.livejournal.com/48295.html</comments>
  <category>perl</category>
  <category>cache::fastmmap</category>
  <category>кеширование</category>
  <lj:security>public</lj:security>
  <lj:reply-count>2</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://sharifulin.livejournal.com/47957.html</guid>
  <pubDate>Thu, 25 Jun 2009 14:44:30 GMT</pubDate>
  <title>Perl. POE or not POE</title>
  <link>http://sharifulin.livejournal.com/47957.html</link>
  <description>Я довольно быстро стал писать на POE различные простые мультиплексы, даже не смотрю в документацию :)&lt;br /&gt;Так, например, сегодня пришлось написать &lt;a href=&quot;http://gist.github.com/135885&quot;&gt;микро-скрипт&lt;/a&gt;, который пробежится по базе твиттер-пользователей и проверит их аватары (многие урлы стали невалидными и Амазон очень красиво говорит &lt;a href=&quot;http://s3.amazonaws.com/twitter_production/profile_images/150623323/avatar_s_normal.gif&quot;&gt;404 в виде XML&lt;/a&gt;). Скрипт я написал на POE, хотя знаю все недостатки его и есть опыт работы с AnyEvent, IO::Lambda, даже Coro + Coro::Mysql. Меня устраивает скорость разработки, но с другой стороны я понимаю, что надо от него уходить. Как перестать писать на POE? (свой мультиплекс писать я не буду :)&lt;br /&gt;&lt;br /&gt;POE или не POE. Вот в чем вопрос :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</description>
  <comments>http://sharifulin.livejournal.com/47957.html</comments>
  <category>perl</category>
  <category>twitter</category>
  <category>poe</category>
  <lj:security>public</lj:security>
  <lj:reply-count>6</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://sharifulin.livejournal.com/47661.html</guid>
  <pubDate>Tue, 23 Jun 2009 14:33:45 GMT</pubDate>
  <title>Ax, Perl, сколько задач приходиться решать на работе, не связанных с тобой :)</title>
  <link>http://sharifulin.livejournal.com/47661.html</link>
  <description>По другому этот пост не назовешь.&lt;br /&gt;&lt;br /&gt;Прошла неделя и Perl&apos;а было совсем немного, зато очень много оптимизации MySQL, настройки nginx, тонкой настройки, мониторинг графиков Munin&apos;а, написание JavaScript&apos;а, даже на PHP пришлось пофигачить (об этом следующий пост, обещаю, ой, как я плевался, монитор несколько раз протирал :).&lt;br /&gt;Меня несколько раз спрашивали:  &amp;quot;А правда, что Perl &amp;ndash; write-only?!&amp;quot;, мои следующие посты обязательно ответят на этот вопрос.&lt;br /&gt;&lt;br /&gt;Вернусь к теме простых и функциональных скриптов на Perl.&lt;br /&gt;15 минут и &lt;a href=&quot;http://gist.github.com/131836&quot;&gt;37 строчек кода&lt;/a&gt; позволяют осуществить трансляцию &lt;a href=&quot;http://blogs.yandex.ru/search.rss?ft=all&amp;amp;full=1&amp;amp;server=twitter.com%2C%20station20.ru%2C%20twitterlinks.ru&amp;amp;text=%22%D0%A1%D0%A2%D0%90%D0%9D%D0%A6%D0%98%D0%AF%202.0%22%20|%20%22station20%22&amp;amp;x_server=on&quot;&gt;RSS&lt;/a&gt; с поиска по блогам от Яндекса.&lt;br /&gt;По-моему, очень просто, парсинг RSS вообще не составляет труда, используя &lt;a href=&quot;http://search.cpan.org/~simonw/XML-Feed-0.43/lib/XML/Feed.pm&quot;&gt;XML::Feed&lt;/a&gt;.&lt;br /&gt;Структура сообщений не позволила использовать ту же таблицу для проверки уникальности записей (обычно: unique id + insert ignore), поэтому &lt;a href=&quot;http://search.cpan.org/~ams/Storable-2.20/Storable.pm&quot;&gt;Storable&lt;/a&gt; в помощь. &lt;br /&gt;&lt;br /&gt;Единственное: в отличии от &lt;a href=&quot;http://search.twitter.com/search?q=%23station20+OR+%23kooqla+OR+%D0%A1%D0%A2%D0%90%D0%9D%D0%A6%D0%98%D0%AF+2.0&quot;&gt;Твиттера&lt;/a&gt;, поиск по блогам не риал-тайм, поэтому опираться на дату создания поста было нецелесообразно, многие посты тонули в бездне &lt;a href=&quot;http://station20.ru/#chateg&quot;&gt;ЧАТЕГА&lt;/a&gt; :) Поэтому они раскидываются с минутным интервалом.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;use Perl or die;&lt;br /&gt;&lt;br /&gt;JFDI&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</description>
  <comments>http://sharifulin.livejournal.com/47661.html</comments>
  <category>ironman</category>
  <category>rss</category>
  <category>perl</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://sharifulin.livejournal.com/47591.html</guid>
  <pubDate>Sat, 13 Jun 2009 11:58:59 GMT</pubDate>
  <title>CPAN: modules, authors and documentation</title>
  <link>http://sharifulin.livejournal.com/47591.html</link>
  <description>Hello, Iron Man! I have a good time during my hollyday (beer + Black sea + gprs), but I ought to write post to the Iron Man Planet :) I want to present my service – &lt;a href=&quot;http://cpan.perlrussia.org&quot;&gt;http://cpan.perlrussia.org&lt;/a&gt;. It is best service for CPAN, try it. Thanks Acme::CPANAuthors and Perl 5.10 :)&lt;br /&gt;&lt;br /&gt;Привет, Iron Man! Хоть я отлично провожу время на отдыхе (3 дня выходных, Точка кипения на море :), но япомню об Iron Man :)&lt;br /&gt;Хочу рассказать о CPAN-сервисе, который недавно разработал – &lt;a href=&quot;http://cpan.perlrussia.org&quot;&gt;http://cpan.perlrussia.org&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Блиц-доклад в Норвегии на NPW2009 и 20-минутный доклад на YAPC::Russia 2009 стимулировали разработку сервиса для CPAN-авторов.&lt;br /&gt;Получить RSS по авторам конкретной страны или по определенному автору стало очень легко. Так, например, RSS русских CPAN-авторов – &lt;a href=&quot;http://cpan.perlrussia.ru/Russian/rss.xml&quot;&gt;http://cpan.perlrussia.ru/Russian/rss.xml&lt;/a&gt; (недавно на сайте Moscow.pm стал выводится этот фид) или RSS моих публикаций на CPAN – &lt;a href=&quot;http://cpan.perlrussia.ru/Russian/SHARIFULN/rss.xml&quot;&gt;http://cpan.perlrussia.ru/Russian/SHARIFULN/rss.xml&lt;/a&gt; . Также на сервисе есть различные CPAN faces. Спасибо Acme::CPANAuthours::* и Perl 5.10 :)&lt;br /&gt;&lt;br /&gt;Руслан Закиров решил помочь с поиском поддомена на cpan.org. Обсуждение имени в рассылку Mocsow.pm. Круто :)&lt;br /&gt;&lt;br /&gt;Планы: сделай различные RSS для отслеживания модулей по ключевому слову и трансляция в твиттер.&lt;br /&gt;&lt;br /&gt;Подписывайтесь в Google Reader, регистрируйте и обновляйте свои подможества Acme::CPANAuthors и будьте счастливы )))&lt;br /&gt;&lt;br /&gt;use Perl or die;&lt;br /&gt;&lt;br /&gt;JFDI</description>
  <comments>http://sharifulin.livejournal.com/47591.html</comments>
  <category>ironman</category>
  <category>perl</category>
  <category>cpan</category>
  <lj:security>public</lj:security>
  <lj:reply-count>2</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://sharifulin.livejournal.com/47245.html</guid>
  <pubDate>Thu, 04 Jun 2009 16:53:52 GMT</pubDate>
  <title>Совсем немного Perl.  IronMan ждет :)</title>
  <link>http://sharifulin.livejournal.com/47245.html</link>
  <description>Подошло время писать про &lt;strong&gt;Perl&lt;/strong&gt; для&lt;strong&gt; Iron Man&lt;/strong&gt;. Так сложилось, что на неделе совсем мало перлом занимался, я все-таки веб-разработчик :), либо :(&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Perl за неделю.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Поучаствовал &lt;a href=&quot;http://slonik-v-domene.livejournal.com/31705.html&quot;&gt;в обсуждении&lt;/a&gt; шаблонизаторов, ребята переписали Рамблер-почту с шаблонизатора&lt;strong&gt; HTML::Template::JIT &lt;/strong&gt;(который продвигал Алекс Капранов :) на &lt;strong&gt;HTML::CTPP2&lt;/strong&gt;.&amp;nbsp; Я соглашусь с тем, что последний быстрый, даже очень быстрый, функциональней (из всех HTML::Template), но на мой взгляд ощутимого прироста не будет. Лично меня в HTML::Template&apos;ах не устраивает невозможность создавать динамические структуры, которыми я постоянно пользуюсь, ну и руки связаны (возможно, это дело привычки). Поэтому на сегодняшний день мой выбор &amp;ndash; &lt;strong&gt;TT&lt;/strong&gt;. Все больше посматриваю на &amp;quot;PHP-подобные шаблонизаторы&amp;quot; такие, как&amp;nbsp; &lt;strong&gt;Mojo::Template&lt;/strong&gt; и &lt;strong&gt;Text::Template::Simple&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Решил перевести многие проекты на &lt;strong&gt;Mojo&lt;/strong&gt;. Тяжело переписывать (чисто морально). Это того стоит. Очень красиво все получается. Созревает новый блиц-доклад: &amp;quot;&lt;em&gt;Apache &amp;ndash; зло?!&amp;quot;&lt;/em&gt;. Пока о Mojo все :)&lt;br /&gt;&lt;br /&gt;Зацепила &lt;a href=&quot;http://babyl.dyndns.org/perl/moose-mongers/&quot;&gt;презентация&lt;/a&gt; про &lt;strong&gt;MooseX::Declare&lt;/strong&gt;. Раньше я спокойно относился к &lt;strong&gt;Moose&lt;/strong&gt; и ко всей шумихе вокруг него. Но теперь готов попробовать MooseX::Declare в деле :) Ищу подходящий пример.&lt;br /&gt;&lt;br /&gt;Хочу возобновить работу над &lt;strong&gt;Padre&lt;/strong&gt; и &lt;strong&gt;POD2::RU&lt;/strong&gt; :)&lt;br /&gt;&lt;br /&gt;И последнее. Очень порадовал тот факт, что &lt;a href=&quot;http://community.livejournal.com/ru_perl/317681.html&quot;&gt;флешмоб&lt;/a&gt; &amp;quot;поднять рейтинг Perl в Google App Engine&amp;quot; удался, &lt;a href=&quot;http://code.google.com/p/googleappengine/issues/list&quot;&gt;сейчас&lt;/a&gt; 1709 голосов и второе место (когда я брался за дело было 15хх и третье место). Спасибо всем, кто откликнулся. По-моему, Perl не заслуженно списывают со счетов &amp;quot;дроздики&amp;quot;, хотя мне на них все равно, но за общественное мнение обидно.&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;use Perl or die;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;JFDI&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</description>
  <comments>http://sharifulin.livejournal.com/47245.html</comments>
  <category>pod2::ru</category>
  <category>template</category>
  <category>perl</category>
  <category>mojo</category>
  <category>google app engine</category>
  <category>moosex::declare</category>
  <lj:security>public</lj:security>
  <lj:reply-count>10</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://sharifulin.livejournal.com/47069.html</guid>
  <pubDate>Tue, 26 May 2009 14:18:32 GMT</pubDate>
  <title>Perl. Simple scripts for life</title>
  <link>http://sharifulin.livejournal.com/47069.html</link>
  <description>&lt;em&gt;Synopsis&lt;/em&gt;: I&apos;d like to write a simple script for job/life. 15-20 minutes and task is done. For example, &lt;a href=&quot;http://gist.github.com/117622&quot;&gt;yesterday&lt;/a&gt; and &lt;a href=&quot;http://gist.github.com/118079&quot;&gt;today&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Мне нравится писать короткие, простые скрипты на Perl, которые решают большие или существенные задачи.&lt;br /&gt;15-20 минут и задача решена, скорость поражает, а сил уходит совсем немного, даже если предметная область до написания скрипта была неизвестна.&lt;br /&gt;&lt;br /&gt;Я совсем не против социализации :)&lt;br /&gt;Поэтому первый пример &amp;ndash; &lt;a href=&quot;http://gist.github.com/117622&quot;&gt;поиск по твиттеру и агрегация с обшей лентой&lt;/a&gt; и второй пример &amp;ndash; &lt;a href=&quot;http://gist.github.com/118079&quot;&gt;разбор JavaScript объекта и генерация plist&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Даа, не Modern Perl, можно подумать и написать лучше, но хочется научиться писать быстро и качественно.&lt;br /&gt;&lt;br /&gt;ЗЫ: надо опубликовать на &lt;strong&gt;CPAN&lt;/strong&gt; свои модули &lt;strong&gt;DBI::Util&lt;/strong&gt; и &lt;strong&gt;XML::Util&lt;/strong&gt;&lt;br /&gt;  &lt;strong&gt;&lt;br /&gt;UPD&lt;/strong&gt;:&lt;br /&gt;&lt;br /&gt; &lt;lj-embed id=&quot;47&quot; /&gt;</description>
  <comments>http://sharifulin.livejournal.com/47069.html</comments>
  <category>simple</category>
  <category>perl</category>
  <category>gist</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://sharifulin.livejournal.com/46649.html</guid>
  <pubDate>Sat, 23 May 2009 16:01:47 GMT</pubDate>
  <title>Немного Perl. Скринкаст takahashi2pdf</title>
  <link>http://sharifulin.livejournal.com/46649.html</link>
  <description>&lt;em&gt;Synopsis&lt;/em&gt;: &lt;strong&gt;takahashi2pdf&lt;/strong&gt; &amp;ndash; convert takahashi presentation to PDF on Mac OS X (used Firefox with Full FullScreen extention, screencapture and Automator)&lt;span style=&quot;text-decoration: underline;&quot;&gt;,&lt;/span&gt; see &lt;a href=&quot;http://vimeo.com/4798168&quot;&gt;screencast&lt;/a&gt; and &lt;a href=&quot;http://github.com/sharifulin/takahashi2pdf/tree/master&quot;&gt;code&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;На конференции &lt;a href=&quot;http://2009.yapcrussia.org/mayperl2/&quot;&gt;&lt;strong&gt;YAPC::Russia 2009 &amp;quot;May Perl 2&amp;quot;&lt;/strong&gt;&lt;/a&gt; у многих были Такахаси-презентации (&lt;a href=&quot;http://takahashi.su/&quot;&gt;takahashi&lt;/a&gt;).&lt;br /&gt;Создание таких презентаций не составляет особого труда, отлично воcпроизводить их Firefox.&lt;br /&gt;Как такие презентации загрузить на &lt;a href=&quot;http://www.slideshare.net/&quot;&gt;Slideshare.net&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;Я решил эту задачу весьма просто. &lt;br /&gt;Писать свой анализатор taka-презентаций не хотелось (масштабирование, форматирование, поддержка css, js, мультимедиа) и лучше Firefox&apos;а быстро не получится, решил воспользоваться Firefox&apos;ом (с расширением Full FullScreen) и скриншотом. К сожалению, полностью автоматизировать процесс не удалось, т.к. я не понял как управлять  из консоли Firefox&apos;ом. Зато скриншотами на Mac&apos;е &amp;ndash; легко. Из полученных изображений при помощи Automator легко сделать итоговый PDF.&lt;br /&gt;&lt;br /&gt;Смотрим скринкаст &lt;strong&gt;takahashi2pdf&lt;/strong&gt; (скринкаст сделал при помощи отличной программы  &lt;a href=&quot;http://www.shinywhitebox.com/ishowuhd/main.html&quot;&gt;iShowU HD&lt;/a&gt;):&lt;br /&gt;&lt;br /&gt;&lt;lj-embed id=&quot;46&quot; /&gt;&lt;p&gt;Монтировать видео не стал, т.к. Final Cut требует 50 гигов, у меня свободно всего 37, как-нибудь в следующий раз :)&lt;/p&gt;Код управляющего скрипта и автоматора доступен на &lt;a href=&quot;http://github.com/sharifulin/takahashi2pdf/tree/master&quot;&gt;github.com&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Без &lt;strong&gt;Perl&lt;/strong&gt; не обошлось :) Нужно было полученные изображения переименовать так, чтобы автоматор их выстроил в верном порядке.&lt;br /&gt;&lt;br /&gt;Возможно, есть проще способ сконвертировать takahashi в PDF (какой?), но я решил задачу быстро и &amp;quot;в лоб&amp;quot;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ЗЫ: Это мой первый скринкаст, переснимал 3 раза :) Скринкаст получился почти на 5 минут, эдакий он-лайн блиц-доклад. В скринкасте я использовал презентацию &lt;a href=&quot;http://2009.yapcrussia.org/mayperl2/talk/41&quot;&gt;Владимира Перепелицы &amp;quot;AnyEvent&amp;quot; или &amp;quot;Юлий Цезарь Perl&amp;quot;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</description>
  <comments>http://sharifulin.livejournal.com/46649.html</comments>
  <category>mac</category>
  <category>perl</category>
  <category>screencast</category>
  <category>mayperl2</category>
  <category>takahashi</category>
  <lj:security>public</lj:security>
  <lj:reply-count>10</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://sharifulin.livejournal.com/46532.html</guid>
  <pubDate>Thu, 21 May 2009 17:48:52 GMT</pubDate>
  <title>Perl. YAPC::Russia 2009 &quot;May Perl 2&quot;. Нет фидбека, есть гольф и первое видео :)</title>
  <link>http://sharifulin.livejournal.com/46532.html</link>
  <description>На &lt;a href=&quot;http://2009.yapcrussia.org/mayperl2/talk/27&quot;&gt;круглом столе&lt;/a&gt; я был возмущен, что все хотят будущего для Perl, но никто не пишет в блоги про Perl  и на Perl.&lt;br /&gt;Я призвал писать в блоги, пропагандировал &lt;strong&gt;JFDI&lt;/strong&gt; от &lt;a href=&quot;http://ironman.enlightenedperl.org/&quot;&gt;Iron Man&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Но что получается: прошла конференция, на мой взгляд очень все здорово получилось, было много фана, интересных докладов и выступлений, пара экспромтов и, конечно, круглый стол, но никто (почти никто) не пишет о конференции в блогах, либо Яндекс.Блоги плохо &lt;a href=&quot;http://blogs.yandex.ru/search.rss?text=%22yapc%3A%3Arussia%22+%7C+%22may+perl%22+%7C+%22yapcrussia%22+%7C+%22yapc.ru%22&amp;amp;ft=blog&amp;amp;&quot;&gt;индексировать стал&lt;/a&gt; :) &lt;br /&gt;&lt;br /&gt;Сегодня Андрей Завьялов, организатор Perl-гольфа, &lt;a href=&quot;http://jerom.livejournal.com/147166.html&quot;&gt;выложил&lt;/a&gt; все решения гольфа.&lt;br /&gt;&lt;br /&gt;Видео с конференции снимали две камеры, все еще монтируется.&lt;br /&gt;Поэтому &amp;ndash; &amp;quot;экранка&amp;quot; моего доклада &lt;a href=&quot;http://2009.yapcrussia.org/mayperl2/talk/22&quot;&gt;&amp;quot;CPAN: модули, авторы и документация&amp;quot;&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;lj-embed id=&quot;45&quot; /&gt;&lt;br /&gt;Пишите в блоги про Perl, про события, связанные с Perl, про то, как у вас что-то получается или чем вам не нравится Perl, главное &amp;ndash; писать.&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;use Perl or die;&lt;br /&gt;&lt;br /&gt;Just F*cking Do It&lt;/strong&gt;&lt;br /&gt;</description>
  <comments>http://sharifulin.livejournal.com/46532.html</comments>
  <category>perl</category>
  <category>mayperl2</category>
  <category>cpan</category>
  <category>yapcru09</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
</channel>
</rss>
