<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>On Perl</title>
    <link rel="alternate" type="text/html" href="http://onperl.ru/onperl/" />
    <link rel="self" type="application/atom+xml" href="http://onperl.ru/onperl/atom.xml" />
    <id>tag:onperl.ru,2009-08-12:/onperl/1</id>
    <updated>2010-07-30T07:15:58Z</updated>
    <subtitle>блог о языке программирования Perl и его сообществе</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 4.3</generator>

<entry>
    <title>Sofia.pm (2.0)</title>
    <link rel="alternate" type="text/html" href="http://onperl.ru/onperl/2010/07/sofiapm-20.html" />
    <id>tag:onperl.ru,2010:/onperl//1.236</id>

    <published>2010-07-30T07:08:26Z</published>
    <updated>2010-07-30T07:15:58Z</updated>

    <summary>Петр Шангов сообщил о запуске нового сайта группы Sofia.pm и о перезапуске самой группы, которая была неактивна в последние пару лет (что, однако, не мешало проводить в Софии Perl-воркшопы). В первой записи на сайте сообщается: «После продолжительного перерыва возрождается группа пользователей Perl в Софии, или Софийских перл-монгеров. Это происходит раз в ответ на быстрое развитие языка Perl в последние годы и предстоящего выхода нового Perl 6. Идея по возобновлению группы пришла во время второго Perl-воркшопа в январе 2010 года»....</summary>
    <author>
        <name>ash</name>
        <uri>http://shitov.ru/</uri>
    </author>
    
        <category term="PM-группы" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Сообщество" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="pm" label="pm" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="sofia" label="sofia" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ru" xml:base="http://onperl.ru/onperl/">
        <![CDATA[<p>Петр Шангов сообщил о запуске нового сайта группы <a href="http://sofia.pm.org/">Sofia.pm</a> и о перезапуске самой группы, которая была неактивна в последние пару лет (что, однако, не мешало проводить в Софии Perl-воркшопы).</p><p align="cener"><a href="http://sofia.pm.org/"><img src="http://img.onperl.ru/sofia-pm.jpg" width="500" height="370" style="border: 0" /></a></p>
<p>В первой записи на сайте сообщается:</p>
<p><i>«После продолжительного перерыва возрождается группа пользователей Perl в Софии, или Софийских перл-монгеров. Это происходит раз в ответ на быстрое развитие языка Perl в последние годы и предстоящего выхода нового Perl 6. Идея по возобновлению группы пришла во время второго Perl-воркшопа в январе 2010 года».</i></p>]]>
        
    </content>
</entry>

<entry>
    <title>Заготовка</title>
    <link rel="alternate" type="text/html" href="http://onperl.ru/onperl/2010/07/zagotovka.html" />
    <id>tag:onperl.ru,2010:/onperl//1.235</id>

    <published>2010-07-28T20:01:22Z</published>
    <updated>2010-07-28T18:17:17Z</updated>

    <summary>Подготовка к YAPC::Europe 2010 в Пизе идет полным ходом. Нет, доклад-то будет готовится в последнюю ночь, а сейчас готовится футболка с логотипом желанной YAPC::Europe в Риге. Рецепт: в магазине приобретается красная футболка по размеру, и по пути на работу (на велосипеде) она завозится в контору AKDR. Передняя сторона будет выглядеть так: Оборотную сторону пока показывать рано....</summary>
    <author>
        <name>ash</name>
        <uri>http://shitov.ru/</uri>
    </author>
    
        <category term="Мероприятия" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="conference" label="conference" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="riga" label="riga" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="tshirt" label="t-shirt" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="yapc" label="yapc" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="yapceurope" label="yapc::europe" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ru" xml:base="http://onperl.ru/onperl/">
        <![CDATA[<p>Подготовка к YAPC::Europe 2010 в Пизе идет полным ходом. Нет, доклад-то будет готовится в последнюю ночь, а сейчас готовится футболка с логотипом желанной YAPC::Europe в Риге.</p>
<p>Рецепт: в магазине приобретается красная футболка по размеру, и по пути на работу (на велосипеде) она завозится в контору <a href="http://www.akdr.nl/">AKDR</a>.</p><p align="center"><img src="http://img.onperl.ru/new-t-shirt.jpg" width="500" height="355" /></p>
<p>Передняя сторона будет выглядеть так:</p>
<p align="center"><img src="http://img.onperl.ru/t-shirt-front.gif" width="500" height="441" /></p>
<p>Оборотную сторону пока показывать рано.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Логотип</title>
    <link rel="alternate" type="text/html" href="http://onperl.ru/onperl/2010/07/logotip.html" />
    <id>tag:onperl.ru,2010:/onperl//1.234</id>

    <published>2010-07-28T10:46:13Z</published>
    <updated>2010-07-28T18:17:50Z</updated>

    <summary><![CDATA[А вот теперь набросок превращается в логотип: Решение о том, пройдет YAPC::Europe 2011 во Франкфурте или в Риге,&nbsp;еще не принято и не обнародовано :-)...]]></summary>
    <author>
        <name>ash</name>
        <uri>http://shitov.ru/</uri>
    </author>
    
        <category term="Мероприятия" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="conference" label="conference" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="plans" label="plans" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="riga" label="riga" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="yapceurope" label="yapc::europe" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ru" xml:base="http://onperl.ru/onperl/">
        <![CDATA[<p>А вот теперь <a href="http://onperl.ru/onperl/2010/07/sketch.html">набросок</a> превращается в логотип:</p>
<p align="center"><img src="http://img.onperl.ru/yapcrigalogo.gif" width="203" height="107" /></p>
<p>Решение о том, пройдет YAPC::Europe 2011 <a href="http://frankfurt.perlmongers.de/?YapcEu2011Bid">во Франкфурте</a> или <a href="http://yapcrussia.org/proposal2011/">в Риге</a>,&nbsp;еще не принято и не обнародовано :-)</p>]]>
        
    </content>
</entry>

<entry>
    <title>Скетч</title>
    <link rel="alternate" type="text/html" href="http://onperl.ru/onperl/2010/07/sketch.html" />
    <id>tag:onperl.ru,2010:/onperl//1.233</id>

    <published>2010-07-27T17:52:02Z</published>
    <updated>2010-07-28T18:18:16Z</updated>

    <summary>Я тут немного не пишу в блог. А потому что неудобно через соседский незапароленный вайфай заходить по ssh на сервер, а все тестовые скрипты привычнее писать и запускать именно там, несмотря на обилие ноутбуков (или, скорее, именно из-за этого) :-) Но я — нет — не сижу без дела. Вот в блокнотики рисую, например....</summary>
    <author>
        <name>ash</name>
        <uri>http://shitov.ru/</uri>
    </author>
    
        <category term="Мероприятия" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="2011" label="2011" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="draft" label="draft" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="hope" label="hope" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="logo" label="logo" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="riga" label="riga" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="yapceurope" label="yapc::europe" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ru" xml:base="http://onperl.ru/onperl/">
        <![CDATA[<p>Я тут немного не пишу в блог. А потому что неудобно через соседский незапароленный вайфай заходить по ssh на сервер, а все тестовые скрипты привычнее писать и запускать именно там, несмотря на обилие ноутбуков (или, скорее, именно из-за этого) :-)</p>
<p>Но я — нет — не сижу без дела. Вот в блокнотики рисую, например.</p><p align="center"><img src="http://img.onperl.ru/yapceurigasketch.jpg" width="414" height="471" /></p>]]>
        
    </content>
</entry>

<entry>
    <title>Еще ссылка</title>
    <link rel="alternate" type="text/html" href="http://onperl.ru/onperl/2010/07/esche-ssilka.html" />
    <id>tag:onperl.ru,2010:/onperl//1.232</id>

    <published>2010-07-14T19:58:57Z</published>
    <updated>2010-07-14T20:05:50Z</updated>

    <summary>Ссылка дня — расписание докладов на конференции YAPC::Europe 2010 в Пизе....</summary>
    <author>
        <name>ash</name>
        <uri>http://shitov.ru/</uri>
    </author>
    
        <category term="Мероприятия" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="conference" label="conference" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="event" label="event" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="talks" label="talks" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="yapceurope" label="yapc::europe" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ru" xml:base="http://onperl.ru/onperl/">
        <![CDATA[<p>Ссылка дня — <a href="http://conferences.yapceurope.org/ye2010/schedule">расписание докладов</a> на конференции YAPC::Europe 2010 в Пизе.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Пара ссылок</title>
    <link rel="alternate" type="text/html" href="http://onperl.ru/onperl/2010/07/para-ssilok.html" />
    <id>tag:onperl.ru,2010:/onperl//1.231</id>

    <published>2010-07-13T19:37:41Z</published>
    <updated>2010-07-13T21:14:39Z</updated>

    <summary>На perlcast.com — интервью со Стеваном Литтлом, создателем Moose. На спане — модуль для Perl-гольфистов Acme::Minify....</summary>
    <author>
        <name>ash</name>
        <uri>http://shitov.ru/</uri>
    </author>
    
        <category term="CPAN" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Интервью" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="acmeminify" label="acme::minify" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="cpan" label="cpan" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="interview" label="interview" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="links" label="links" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="moose" label="moose" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ru" xml:base="http://onperl.ru/onperl/">
        <![CDATA[<p>На perlcast.com — <a href="http://perlcast.com/2010/07/12/stevan-little-on-moose/">интервью со Стеваном Литтлом</a>, создателем Moose.</p>
<p>На спане — модуль для Perl-гольфистов <a href="http://search.cpan.org/perldoc?Acme::Minify">Acme::Minify</a>.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Отсортировать хеш</title>
    <link rel="alternate" type="text/html" href="http://onperl.ru/onperl/2010/07/otsortirovat--xesh.html" />
    <id>tag:onperl.ru,2010:/onperl//1.230</id>

    <published>2010-07-12T19:11:21Z</published>
    <updated>2010-07-13T07:27:31Z</updated>

    <summary><![CDATA[Замечательная задача для собеседования.Дано: хеш вида my %what_when = (&nbsp;&nbsp; &nbsp;13 =&gt; 'Lunch',&nbsp;&nbsp; &nbsp;17 =&gt; 'Tea',&nbsp;&nbsp; &nbsp;20 =&gt; 'Dinner',&nbsp;&nbsp; &nbsp; 9 =&gt; 'Breakfast',); Требуется: сформировать список пар, отсортированных по ключу хеша (в примере — по времени): my @schedule = (&nbsp;&nbsp; &nbsp;[9, &nbsp;'Breakfast'],&nbsp;&nbsp; &nbsp;[13, 'Lunch'],&nbsp;&nbsp; &nbsp;[17, 'Tea'],&nbsp;&nbsp; &nbsp;[20, 'Dinner'],);...]]></summary>
    <author>
        <name>ash</name>
        <uri>http://shitov.ru/</uri>
    </author>
    
        <category term="Язык" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="array" label="array" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="hash" label="hash" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="language" label="language" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="question" label="question" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ru" xml:base="http://onperl.ru/onperl/">
        <![CDATA[<p>Замечательная задача для собеседования.</p><p>Дано: хеш вида</p>
<blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><tt><p>my %what_when = (<br />&nbsp;&nbsp; &nbsp;13 =&gt; 'Lunch',<br />&nbsp;&nbsp; &nbsp;17 =&gt; 'Tea',<br />&nbsp;&nbsp; &nbsp;20 =&gt; 'Dinner',<br />&nbsp;&nbsp; &nbsp; 9 =&gt; 'Breakfast',<br />);</p></tt></blockquote>
<p>Требуется: сформировать список пар, отсортированных по ключу хеша (в примере — по времени):</p>
<blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><tt><p>my @schedule = (<br />&nbsp;&nbsp; &nbsp;[9, &nbsp;'Breakfast'],<br />&nbsp;&nbsp; &nbsp;[13, 'Lunch'],<br />&nbsp;&nbsp; &nbsp;[17, 'Tea'],<br />&nbsp;&nbsp; &nbsp;[20, 'Dinner'],<br />);</p></tt>
</blockquote>]]>
        
    </content>
</entry>

<entry>
    <title>Про CPAN и тесты</title>
    <link rel="alternate" type="text/html" href="http://onperl.ru/onperl/2010/07/pro-cpan-i-testi.html" />
    <id>tag:onperl.ru,2010:/onperl//1.229</id>

    <published>2010-07-05T19:49:30Z</published>
    <updated>2010-07-05T20:00:40Z</updated>

    <summary><![CDATA[В очередной раз подумалось, что код из блока SYNOPSIS POD-документации модулей на спане нужно автоматически включать в набор тестов.Вот модуль Time::Business, судя по описанию, полезный: умеет переводить рабочие часы в «общечеловеческие». CPAN сообщает о десятках успешных тестов на разных платформах. Но в действительности к модулю прилагается только тест use_ok (это не самое страшное), а код из краткого описания не работает:use v5.12; use Time::Business; my $bt = new Time::Business ({&nbsp;&nbsp; &nbsp;WORKDAYS =&gt; [1..5],&nbsp;&nbsp; &nbsp;STARTTIME =&gt; 1000,&nbsp;&nbsp; &nbsp;ENDTIME =&gt; 1900, }); my $seconds = $bt-&gt;calctime(time, time + 1 * 86400); perl test.pl Can't locate object method "calctime" via package "Time::Business" at test.pl...]]></summary>
    <author>
        <name>ash</name>
        <uri>http://shitov.ru/</uri>
    </author>
    
        <category term="CPAN" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Тесты" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="cpan" label="cpan" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="test" label="test" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="timebusiness" label="time::business" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ru" xml:base="http://onperl.ru/onperl/">
        <![CDATA[<p>В очередной раз подумалось, что код из блока SYNOPSIS POD-документации модулей на спане нужно автоматически включать в набор тестов.</p><p>Вот модуль <a href="http://search.cpan.org/perldoc?Time::Business">Time::Business</a>, судя по описанию, полезный: умеет переводить рабочие часы в «общечеловеческие». CPAN сообщает о десятках успешных тестов на разных платформах. Но в действительности к модулю прилагается только тест use_ok (это не самое страшное), а код из краткого описания не работает:</p><tt><p>use v5.12;<br />
use Time::Business;<br />
<br />
my $bt = new Time::Business ({<br />&nbsp;&nbsp; &nbsp;WORKDAYS  =&gt; [1..5],<br />&nbsp;&nbsp; &nbsp;STARTTIME =&gt; 1000,<br />&nbsp;&nbsp; &nbsp;ENDTIME   =&gt; 1900,<br />
});<br />
my $seconds = $bt-&gt;calctime(time, time + 1 * 86400);</p></tt>
<tt><p> perl test.pl <br />
<span style="color:#800000">Can't locate object method "calctime" via package "Time::Business" at test.pl line 9.</span>
</p></tt>
<p>Понятно, что дальнейшее чтение документации помогает добиться работоспособности, но внутренний голос сразу начинает говорить о том, что как-то и все остальное некрасиво: и странный формат записи времени (а что, если записать 0800 —&nbsp;не в восьмеричном ли формате это получится?), и капслок в именах ключей, и отсутствие предопределенных значений — собственно, все то, что замечаешь при первом взгляде, но что лишь усиливает негатив после того, как первый тест не заработал.</p>]]>
        
    </content>
</entry>

<entry>
    <title>«Что такое хакатон?»</title>
    <link rel="alternate" type="text/html" href="http://onperl.ru/onperl/2010/07/chto-takoe-xakaton.html" />
    <id>tag:onperl.ru,2010:/onperl//1.228</id>

    <published>2010-07-02T18:42:15Z</published>
    <updated>2010-07-02T18:54:47Z</updated>

    <summary>Алексей Капранов подготовил русский перевод статьи о проведенном в прошлом году QA-хакатоне в Бирмингеме. Помимо собственно описания мероприятия автор делится некоторыми мыслями по поводу того, как сделать хакатоны максимально эффективными.«В чем же секрет такой высокой производительности хакатона? Пожалуй, рецепт успеха выглядит так: „Сформулируйте цели мероприятия. Найдите самый маленький конференц-зал, вместите в него пару дюжин толковых программистов. Обязательно пригласите ведущих специалистов в выбранной области, возьмите на себя их расходы на поездку. Каждое утро проводите брифинг о целях нового дня и о достигнутых результатах, чтобы участникам было к чему стремиться и чего добиваться. В течение трёх дней кормите, поите и выдавайте программистам...</summary>
    <author>
        <name>ash</name>
        <uri>http://shitov.ru/</uri>
    </author>
    
        <category term="Мероприятия" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="article" label="article" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="birmingham" label="birmingham" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="community" label="community" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="event" label="event" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="hackathon" label="hackathon" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="hacking" label="hacking" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="translation" label="translation" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ru" xml:base="http://onperl.ru/onperl/">
        <![CDATA[<p>Алексей Капранов подготовил <a href="http://bl.takahashi.su/cgi/wiki.pl/2010-07-02">русский перевод статьи</a> о проведенном в прошлом году QA-хакатоне в Бирмингеме.</p><p align="center"><a href="http://bl.takahashi.su/cgi/wiki.pl/2010-07-02">
<img width="508" height="185" src="http://img.onperl.ru/qa-hackathon.jpg" /></a></p>
<p>Помимо собственно описания мероприятия автор делится некоторыми мыслями по поводу того, как сделать хакатоны максимально эффективными.</p><p><i>«В чем же секрет такой высокой производительности хакатона? Пожалуй, рецепт успеха выглядит так: „Сформулируйте цели мероприятия. Найдите самый маленький конференц-зал, вместите в него пару дюжин толковых программистов. Обязательно пригласите ведущих специалистов в выбранной области, возьмите на себя их расходы на поездку. Каждое утро проводите брифинг о целях нового дня и о достигнутых результатах, чтобы участникам было к чему стремиться и чего добиваться. В течение трёх дней кормите, поите и выдавайте программистам столько кофе, сколько они потребуют. В конце последнего дня подведите итог и отведите работяг в кафе или бар. Если сделаете все правильно, то результат вас ошеломит‟. Всего-то делов».</i></p>]]>
        
    </content>
</entry>

<entry>
    <title>Из свежих обсуждений</title>
    <link rel="alternate" type="text/html" href="http://onperl.ru/onperl/2010/07/iz-svezhix-obsuzhdenij.html" />
    <id>tag:onperl.ru,2010:/onperl//1.227</id>

    <published>2010-07-01T19:03:38Z</published>
    <updated>2010-07-01T19:09:00Z</updated>

    <summary>1 июля в рассылке Moscow.pm обсуждалась работа с XS. Краткое содержание дискуссии: — Как нужно правильно кастовать полученный объект к нужному типу, чтобы с ним можно было работать?— (A*)(SvIV((SV*)SvRV(cppObject))).— Большое спасибо. Все заработало....</summary>
    <author>
        <name>ash</name>
        <uri>http://shitov.ru/</uri>
    </author>
    
        <category term="Разработка" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="fun" label="fun" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="moscowpm" label="moscow.pm" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="xs" label="xs" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ru" xml:base="http://onperl.ru/onperl/">
        <![CDATA[<p>1 июля в рассылке Moscow.pm <a href="http://mail.pm.org/pipermail/moscow-pm/2010-July/008731.html">обсуждалась работа с XS</a>. Краткое содержание дискуссии:</p>
<blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><p><i>— Как нужно правильно кастовать полученный объект к нужному типу, чтобы с ним можно было работать?</i></p><p><i>— <tt>(A*)(SvIV((SV*)SvRV(cppObject)))</tt>.</i></p><p><i>— Большое спасибо. Все заработало.</i></p></blockquote>

]]>
        
    </content>
</entry>

<entry>
    <title>Class::Accessor + Test::Deep = fail</title>
    <link rel="alternate" type="text/html" href="http://onperl.ru/onperl/2010/06/classaccessor-testdeep-fail.html" />
    <id>tag:onperl.ru,2010:/onperl//1.226</id>

    <published>2010-06-30T19:43:30Z</published>
    <updated>2010-06-30T20:03:10Z</updated>

    <summary><![CDATA[Для этого фокуса потребуется взять один Class::Accessor и один Test::Deep, замешав их в одном модуле: package MyTest;use base 'Class::Accessor';use Test::Deep;__PACKAGE__-&gt;mk_accessors qw(mytest);1;Модуль Class::Accessor создаст в пакете MyTest метод mytest(), который должен работать как пара сеттер — геттер для установки поля mytest (точнее, $self-&gt;{mytest}). Тестируем:use v5.12;use MyTest;my $test = new MyTest;$test-&gt;mytest('test');say "mytest=", $test-&gt;mytest;И видим, что никакое значение mytest=test не устанавливается. Комментируем в файле MyTest.pm строку, подключающую модуль Test::Deep, и все работает:mytest=testРаскомментируем обратно и попробуем немного по-другому:$test-&gt;set('key', 'value');set $test('key', 'value');Опять не работает. Но по-другому мы пробуем уже после того, как заглянули в исходник Test::Deep и увидели там безусловный экспорт функции set: @EXPORT =...]]></summary>
    <author>
        <name>ash</name>
        <uri>http://shitov.ru/</uri>
    </author>
    
        <category term="CPAN" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="classaccressor" label="class::accressor" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="cpan" label="cpan" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="testdeep" label="test::deep" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ru" xml:base="http://onperl.ru/onperl/">
        <![CDATA[<p>Для этого фокуса потребуется взять один Class::Accessor и один Test::Deep, замешав их в одном модуле:</p>
<tt><p>package MyTest;<br /><br />use base 'Class::Accessor';<br />use Test::Deep;<br /><br />__PACKAGE__-&gt;mk_accessors qw(mytest);<br /><br />1;</p></tt><p>Модуль Class::Accessor создаст в пакете MyTest метод mytest(), который должен работать как пара <i>сеттер — геттер</i> для установки поля mytest (точнее, $self-&gt;{mytest}). Тестируем:</p><tt><p>use v5.12;<br />use MyTest;</p><p>my $test = new MyTest;<br />$test-&gt;mytest('test');<br />say "mytest=", $test-&gt;mytest;</p></tt><p>И видим, что никакое значение mytest=test не устанавливается. Комментируем в файле MyTest.pm строку, подключающую модуль Test::Deep, и все работает:</p><tt><p>mytest=test</p></tt><p>Раскомментируем обратно и попробуем немного по-другому:</p><tt><p>$test-&gt;set('key', 'value');<br />set $test('key', 'value');</p></tt><p>Опять не работает. Но по-другому мы пробуем уже после того, как заглянули в исходник Test::Deep и увидели там безусловный экспорт функции set:</p>
<tt><p>@EXPORT = qw( eq_deeply cmp_deeply cmp_set cmp_bag cmp_methods<br />&nbsp;&nbsp; &nbsp;useclass noclass <span style="font-weight: bold; color: #008000">set</span> bag subbagof superbagof subsetof<br />&nbsp;&nbsp; &nbsp;supersetof superhashof subhashof<br />
);</p></tt>
<p>В свою очередь, внутри методов-аккессоров, которые создает Class::Accessor, используются вызовы $self-&gt;set(...), которые в модуле, унаследованном от него, попадают напрямую в Test::Deep::set().</p>
<p>Неуклюжее быстрое решение: подсказать компилятору, куда направлять внутренние вызовы методов set:</p>
<tt><p>package MyTest;<br /><br />use base 'Class::Accessor';<br />use Test::Deep;<br /><br /><span style="font-weight:bold; color:#008000">*set = *Class::Accessor::set;</span> 
<br /><br />__PACKAGE__-&gt;mk_accessors qw(mytest);<br /><br />1;</p></tt>]]>
        
    </content>
</entry>

<entry>
    <title>RPC::XML v. XXX</title>
    <link rel="alternate" type="text/html" href="http://onperl.ru/onperl/2010/06/rpcxml-v-xxx.html" />
    <id>tag:onperl.ru,2010:/onperl//1.225</id>

    <published>2010-06-29T18:48:16Z</published>
    <updated>2010-06-29T19:08:43Z</updated>

    <summary>Из записок на языке Эразма Роттердамского.Сделали sandbox на новеньком сервере, стали запускать тесты — половина не работает. Вместо ok видим wanted a data type, got `i8&apos;. Кто говорит? Слон? Ошибку можно разглядеть в XML, который как-то где-то формируется через третьи руки. Разумеется, автор кода на этой неделе в отпуску, поэтому тратим еще час на то, чтобы выяснить, что сообщение об ошибке формирует модуль RPC::XML.Мы-то уже догадались, что i8 — скорее всего тип целочисленных данных, потому что в стандарте есть тип i4, но про i8 там ни слова.Еще какое-то время, и выясняется, что на другом сервере такой ошибки нет. Остается догадаться...</summary>
    <author>
        <name>ash</name>
        <uri>http://shitov.ru/</uri>
    </author>
    
        <category term="Приложения" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="bugs" label="bugs" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="testing" label="testing" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="version" label="version" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="xmlrpc" label="xml::rpc" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ru" xml:base="http://onperl.ru/onperl/">
        <![CDATA[<p>Из записок на языке <a href="http://ru.wikipedia.org/wiki/Эразм_Роттердамский">Эразма Роттердамского</a>.</p><p><i>Сделали sandbox на новеньком сервере, стали запускать тесты — половина не работает. Вместо ok видим wanted a data type, got `i8'. Кто говорит? Слон? Ошибку можно разглядеть в XML, который как-то где-то формируется через третьи руки. Разумеется, автор кода на этой неделе в отпуску, поэтому тратим еще час на то, чтобы выяснить, что сообщение об ошибке формирует модуль RPC::XML.</i></p><p><i>Мы-то уже догадались, что i8 — скорее всего тип целочисленных данных, потому что </i><a href="http://www.xmlrpc.com/spec"><i>в стандарте есть тип i4</i></a><i>, но </i><a href="http://www.google.nl/search?client=safari&amp;rls=en&amp;q=i8+site:xmlrpc.org&amp;ie=UTF-8&amp;oe=UTF-8&amp;redir_esc=&amp;ei=q0IqTNC6B8PeOOK3zJ0B"><i>про i8 там ни слова</i></a><i>.</i></p><p><i>Еще какое-то время, и выясняется, что на другом сервере такой ошибки нет. Остается догадаться посмотреть $RPC::XML::VERSION. Ну точно, в одном месте — 1.36, в другом — 1.41.</i></p><p><i>Читаем документацию и удивляемся: тип i8 добавлен как нестандартный. Потому что им уже кто-то пользуется. Смотрим на спан и удивляемся еще раз: последняя версия там — 0.70. Ij? (в русской раcкладке — шо?) Может github? Там тоже 0.70. Начинаем подозревать всех в том, что они втихаря переписывают модуль прямо на серверах. Но в итоге смотрим в исходник версии 0.70 и видим, что версия модуля — 1.50. Релаксируем.</i></p>]]>
        
    </content>
</entry>

<entry>
    <title>Пара презентаций из Брюсселя</title>
    <link rel="alternate" type="text/html" href="http://onperl.ru/onperl/2010/06/para-prezentacij-iz-brjusselja.html" />
    <id>tag:onperl.ru,2010:/onperl//1.224</id>

    <published>2010-06-26T22:03:24Z</published>
    <updated>2010-06-26T22:04:56Z</updated>

    <summary>Perl 6 by exampleView more presentations from andy.sh. How to clean an arrayView more presentations from andy.sh....</summary>
    <author>
        <name>ash</name>
        <uri>http://shitov.ru/</uri>
    </author>
    
        <category term="Презентации" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="bpw2010" label="bpw2010" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="brussels" label="brussels" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="fun" label="fun" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl6" label="perl6" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="presentation" label="presentation" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="slides" label="slides" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ru" xml:base="http://onperl.ru/onperl/">
        <![CDATA[<div style="width:425px" id="__ss_4620592"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/andy.sh/perl-6-by-example-4620592" title="Perl 6 by example">Perl 6 by example</a></strong><object id="__sse4620592" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=perl6-by-example-100626082212-phpapp02&amp;stripped_title=perl-6-by-example-4620592" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><embed name="__sse4620592" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=perl6-by-example-100626082212-phpapp02&amp;stripped_title=perl-6-by-example-4620592" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></object><div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/andy.sh">andy.sh</a>.</div><div style="padding:5px 0 12px"><br /></div></div> <script src="http://b.scorecardresearch.com/beacon.js?c1=7&amp;c2=7400849&amp;c3=1&amp;c4=&amp;c5=&amp;c6="></script>
<div style="width:425px" id="__ss_4620390"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/andy.sh/clean-array" title="How to clean an array">How to clean an array</a></strong><object id="__sse4620390" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=clean-array-100626081851-phpapp02&amp;stripped_title=clean-array" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><embed name="__sse4620390" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=clean-array-100626081851-phpapp02&amp;stripped_title=clean-array" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></object><div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/andy.sh">andy.sh</a>.</div></div><script src="http://b.scorecardresearch.com/beacon.js?c1=7&amp;c2=7400849&amp;c3=1&amp;c4=&amp;c5=&amp;c6="></script><script src="http://b.scorecardresearch.com/beacon.js?c1=7&amp;c2=7400849&amp;c3=1&amp;c4=&amp;c5=&amp;c6="></script>]]>
        
    </content>
</entry>

<entry>
    <title>Belgian Perl Workshop 2010</title>
    <link rel="alternate" type="text/html" href="http://onperl.ru/onperl/2010/06/belgium-perl-workshop-2011.html" />
    <id>tag:onperl.ru,2010:/onperl//1.223</id>

    <published>2010-06-26T11:06:58Z</published>
    <updated>2010-06-26T22:05:19Z</updated>

    <summary>Бельгийский Perl-воркшоп (который в этом году удобно проходит в столичном Брюсселе) расположился в помещении The Hub Brussels, которое раньше было цехом шоколадной фабрики....</summary>
    <author>
        <name>ash</name>
        <uri>http://shitov.ru/</uri>
    </author>
    
        <category term="Мероприятия" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="belgium" label="belgium" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="bpw2010" label="bpw2010" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="brussels" label="brussels" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="workshop" label="workshop" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ru" xml:base="http://onperl.ru/onperl/">
        <![CDATA[<p>Бельгийский Perl-воркшоп (который в этом году удобно проходит в столичном Брюсселе) расположился в помещении The Hub Brussels, которое раньше было цехом шоколадной фабрики.</p>
<p style="text-align: center;"><img src="http://img.onperl.ru/bpw2010.jpg" width="500" height="374" /></p>]]>
        
    </content>
</entry>

<entry>
    <title>Коварство each + for — ответы (но не объяснения)</title>
    <link rel="alternate" type="text/html" href="http://onperl.ru/onperl/2010/06/kovarstvo-each-for-otveti-no-ne-ob-jasnenija.html" />
    <id>tag:onperl.ru,2010:/onperl//1.222</id>

    <published>2010-06-23T19:09:50Z</published>
    <updated>2010-06-23T19:45:26Z</updated>

    <summary><![CDATA[В первой части были приведены три программы, работающие под Perl 5.12, и предлагалось определить, что они выведут. А выведут они следующее. Программа А. use v5.12;my @letters = 'a'..'z';for (my ($number, $char) = each @letters) {&nbsp;&nbsp;&nbsp; say "$number $char";} 0 a0 a Программа Б. use v5.12;my @letters = 'a'..'z';say $_ for each @letters; 0a Программа В. use v5.12;my @letters = 'a'..'z';say $_ foreach @letters; abc. . .xyz...]]></summary>
    <author>
        <name>ash</name>
        <uri>http://shitov.ru/</uri>
    </author>
    
        <category term="Версии Perl" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Язык" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="512" label="5.12" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="answer" label="answer" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="each" label="each" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="question" label="question" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ru" xml:base="http://onperl.ru/onperl/">
        <![CDATA[<p><a href="http://onperl.ru/onperl/2010/06/kovarstvo-each-for.html">В первой части</a> были приведены три программы, работающие под Perl 5.12, и предлагалось определить, что они выведут.</p>
<p>А выведут они следующее.</p>
<p>Программа А.</p><tt>
<blockquote style="MARGIN-RIGHT: 0px" dir="ltr">
<p>use v5.12;<br />my @letters = 'a'..'z';<br />for (my ($number, $char) = each @letters) {<br />&nbsp;&nbsp;&nbsp; say "$number $char";<br />}</p></blockquote>
<p style="PADDING-BOTTOM: 0.5em; BACKGROUND-COLOR: #f5f5ea; PADDING-LEFT: 0.5em; PADDING-RIGHT: 0.5em; FONT-WEIGHT: bold; PADDING-TOP: 0.5em" dir="ltr">0 a<br />0 a</p></tt>
<p>Программа Б.</p><tt>
<blockquote style="MARGIN-RIGHT: 0px" dir="ltr">
<p>use v5.12;<br />my @letters = 'a'..'z';<br />say $_ for each @letters;</p></blockquote>
<p style="PADDING-BOTTOM: 0.5em; BACKGROUND-COLOR: #f5f5ea; PADDING-LEFT: 0.5em; PADDING-RIGHT: 0.5em; FONT-WEIGHT: bold; PADDING-TOP: 0.5em" dir="ltr">0<br />a</p></tt>
<p>Программа В.</p><tt>
<blockquote style="MARGIN-RIGHT: 0px" dir="ltr">
<p>use v5.12;<br />my @letters = 'a'..'z';<br />say $_ foreach @letters;</p></blockquote>
<p style="PADDING-BOTTOM: 0.5em; BACKGROUND-COLOR: #f5f5ea; PADDING-LEFT: 0.5em; PADDING-RIGHT: 0.5em; FONT-WEIGHT: bold; PADDING-TOP: 0.5em" dir="ltr">a<br />b<br />c<br />. . .<br />x<br />y<br />z</p></tt>]]>
        
    </content>
</entry>

</feed>
