Picon

Re: Coro

Вы не это искали?

Вот пример из модуля https://metacpan.org/module/Combinator

When you are tired of writing layered closures

use AnyEvent::DBI;
...
$dbh->exec("select ...", sub {
    ...
    $dbh->exec("select ...", sub {
        ...
        $dbh->exec("select ...", sub {
            ...
            $dbh->exec("select ...", sub {
                ...
            });
        });
    });
});

You can achieve that like this:

use Combinator;
use AnyEvent::DBI;
...
{{com
    $dbh->exec("select ...", {{next}});
    ...
  --ser
(Continue reading)

Alexandr Gomoliako | 3 Feb 21:02
Picon

Re: Coro

On Fri, Feb 3, 2012 at 9:39 PM, Андрей П. Ковбович <akovbovich <at> gmail.com> wrote:
> Вы не это искали?
>
> Вот пример из модуля https://metacpan.org/module/Combinator

Все остались при своих мнениях :)

Вообще вложенные анонимные функции и closures самый
лучший вариант, в
плане понимаемости, но немного медленноватый.
--

-- 
Moscow.pm mailing list
moscow-pm <at> pm.org | http://moscow.pm.org
Dmitry Karasik | 4 Feb 08:40
Gravatar

Re: Coro

Теоретически это как раз то что нужно, а практически
проблема в убогости
перлового source filtering, который Combinator использует. При нормальных
макросах вложенность такого рода разруливалась бы
намного проще.

/dk

On Fri, Feb 03, 2012 at 11:39:51PM +0400, Андрей П. Ковбович wrote:
> Вы не это искали?
> 
> Вот пример из модуля https://metacpan.org/module/Combinator
> 
> When you are tired of writing layered closures
> 
> use AnyEvent::DBI;
> ...
> $dbh->exec("select ...", sub {
>     ...
>     $dbh->exec("select ...", sub {
>         ...
>         $dbh->exec("select ...", sub {
>             ...
>             $dbh->exec("select ...", sub {
>                 ...
>             });
>         });
>     });
> });
> 
(Continue reading)

Ruslan Zakirov | 7 Feb 00:16
Favicon
Gravatar

Re: Coro

2012/2/3 Андрей П. Ковбович <akovbovich <at> gmail.com>:
> Вы не это искали?
>
> Вот пример из модуля https://metacpan.org/module/Combinator
>
> When you are tired of writing layered closures

Я как раз про это и говорил. Синтаксис не очень
симпотичный, но
мотивация совпадает абсолютно.

-- 
Best regards, Ruslan.
--

-- 
Moscow.pm mailing list
moscow-pm <at> pm.org | http://moscow.pm.org
Ivan Petrov | 7 Feb 12:41
Picon

unpack

в некоторых случаях нельзя составить полное
выражение для unpack и
приходится итеративно вытаскивать данные.

например 

$str = unpack 'L / a*', $data;

заберет строку из начала $data и потом можно будет
сделать 
substr $data, 0, length $str + 4, '';

и продолжить изымать данные из $data следующими
итерациями unpack.

однако если например мы вынимаем две-три-N строк
одним выражением, а
так же используем выражения вроде 'w / a*', то посчитать
общую длину
того что мы вынули становится довольно накладно, а в
некоторых случаях
и получается что надо pack сделать чтобы понять какая
длина была в
упакованном виде (как например в случаях с 'w').

Вопрос: можно как-то решать эти проблемы не
упаковывая обратно все?
--

-- 
Moscow.pm mailing list
moscow-pm <at> pm.org | http://moscow.pm.org
(Continue reading)

Alexandr Alexeev | 7 Feb 12:54
Picon
Gravatar

Re: unpack

Ну, как варианты:

1. my <at> bytes = map { ord($_) } split //, $data; # и тупо работает с байтами
2. Поищите готовый модуль для работы с вашими данным 
2. Если все действительно так плохо, напишите XS

А с чем вы таким работаете, если не секрет?

7 февраля 2012 г. 15:41 пользователь Ivan Petrov <i.petro.77.00 <at> gmail.com> написал:
в некоторых случаях нельзя составить полное выражение для unpack и
приходится итеративно вытаскивать данные.

например

$str = unpack 'L / a*', $data;

заберет строку из начала $data и потом можно будет сделать
substr $data, 0, length $str + 4, '';

и продолжить изымать данные из $data следующими итерациями unpack.

однако если например мы вынимаем две-три-N строк одним выражением, а
так же используем выражения вроде 'w / a*', то посчитать общую длину
того что мы вынули становится довольно накладно, а в некоторых случаях
и получается что надо pack сделать чтобы понять какая длина была в
упакованном виде (как например в случаях с 'w').

Вопрос: можно как-то решать эти проблемы не упаковывая обратно все?
--
Moscow.pm mailing list
moscow-pm <at> pm.org | http://moscow.pm.org



--
С уважением, Александр
Личный блог: http://eax.me/
Мой форум: http://it-talk.org/
Мой Twitter: http://twitter.com/afiskon

--

-- 
Moscow.pm mailing list
moscow-pm <at> pm.org | http://moscow.pm.org
Ivan Petrov | 7 Feb 17:06
Picon

Re: unpack


> 1. my @bytes = map { ord($_) } split //, $data; # и тупо работает с байтами
> 2. Поищите готовый модуль для работы с вашими данным
> 2. Если все действительно так плохо, напишите XS

ну XS или работа с байтами это понятно. но это все
некрасиво. если уж
XS браться писать, то свой аналог unpack, только такой
чтобы в объекты
распаковывал.

> А с чем вы таким работаете, если не секрет?

двоичный протокол к одной из новых БД
--

-- 
Moscow.pm mailing list
moscow-pm <at> pm.org | http://moscow.pm.org
Alexandr Alexeev | 7 Feb 18:16
Picon
Gravatar

Re: unpack

Тогда берите готовую библиотеку для работы с этим протоколом (возможно, он уже используется другими СУБД?) или пишите  на сях свою (ок, прототип, пожалуй, можно и на Perl нахреначить, но не более того). Как следует отладьте ее, а потом напишите XS (останется только обернуть сишные функции). Все равно в какой-то момент выясниться, что работать с этой СУБД нужно еще из С/C++, Python, Ruby и Haskell. Или ваша реализация на Perl тупо окажется слишком медленной/требовательной к памяти/трудной в сопровождении. Тут к гадалке не ходи.

7 февраля 2012 г. 19:06 пользователь Ivan Petrov <i.petro.77.00 <at> gmail.com> написал:

> 1. my <at> bytes = map { ord($_) } split //, $data; # и тупо работает с байтами
> 2. Поищите готовый модуль для работы с вашими данным
> 2. Если все действительно так плохо, напишите XS

ну XS или работа с байтами это понятно. но это все некрасиво. если уж
XS браться писать, то свой аналог unpack, только такой чтобы в объекты
распаковывал.

> А с чем вы таким работаете, если не секрет?

двоичный протокол к одной из новых БД
--
Moscow.pm mailing list
moscow-pm <at> pm.org | http://moscow.pm.org



--
С уважением, Александр
Личный блог: http://eax.me/
Мой форум: http://it-talk.org/
Мой Twitter: http://twitter.com/afiskon

--

-- 
Moscow.pm mailing list
moscow-pm <at> pm.org | http://moscow.pm.org
Nick Knutov | 8 Feb 16:35
Favicon

PerlBurg

Приветствую всех,

в жж посоветовали спросить тут :)

http://event.perlrussia.org/perlburg3/schedule

Там кто-то еще будет, имеет смысл ехать, или так вот 4
доклада и всё?

Если я поеду - я бы мог сделать несколько пятиминуток
про Dancer. Это 
кому-то надо? А кто может отревьювить мои презентации?

-- 
Best Regards,
Nick Knutov
http://knutov.com
ICQ: 272873706
Voice: +7-904-84-23-130
--

-- 
Moscow.pm mailing list
moscow-pm <at> pm.org | http://moscow.pm.org
Alexandr Alexeev | 8 Feb 16:39
Picon
Gravatar

Re: PerlBurg

>> А кто может отревьювить мои презентации?

Могу посмотреть в выходные.

8 февраля 2012 г. 18:35 пользователь Nick Knutov <mail <at> knutov.com> написал:
Приветствую всех,

в жж посоветовали спросить тут :)


http://event.perlrussia.org/perlburg3/schedule

Там кто-то еще будет, имеет смысл ехать, или так вот 4 доклада и всё?

Если я поеду - я бы мог сделать несколько пятиминуток про Dancer. Это кому-то надо? А кто может отревьювить мои презентации?


--
Best Regards,
Nick Knutov
http://knutov.com
ICQ: 272873706
Voice: +7-904-84-23-130
--
Moscow.pm mailing list
moscow-pm <at> pm.org | http://moscow.pm.org



--
С уважением, Александр
Личный блог: http://eax.me/
Мой форум: http://it-talk.org/
Мой Twitter: http://twitter.com/afiskon

--

-- 
Moscow.pm mailing list
moscow-pm <at> pm.org | http://moscow.pm.org

Gmane