From chesnokov.ilya на gmail.com Sat Nov 1 14:30:28 2014 From: chesnokov.ilya на gmail.com (Ilya Chesnokov) Date: Sun, 2 Nov 2014 01:30:28 +0400 Subject: [Moscow.pm] __PACKAGE__ namespace In-Reply-To: References: Message-ID: 1 ноября 2014 г., 9:28 пользователь Artur Kh написал: > Спасибо, так и есть, я потом сам увидел свою ошибку. Сделал именно так, как > предложено здесь. Все равно в коде косяк ;) Просто ответьте на вопрос - что в коде делает лексическая переменная @STORAGE? :) -- Best regards, Ilya Chesnokov From khrt на ya.ru Sat Nov 1 23:05:14 2014 From: khrt на ya.ru (Artur Kh) Date: Sun, 2 Nov 2014 08:05:14 +0200 Subject: [Moscow.pm] __PACKAGE__ namespace In-Reply-To: References: Message-ID: Она там не для чего, просто так. И что же за косяк там есть в коде? -- ak On 1 Nov 2014 23:30, "Ilya Chesnokov" wrote: > 1 ноября 2014 г., 9:28 пользователь Artur Kh написал: > > Спасибо, так и есть, я потом сам увидел свою ошибку. Сделал именно так, > как > > предложено здесь. > > Все равно в коде косяк ;) Просто ответьте на вопрос - что в коде > делает лексическая переменная @STORAGE? :) > > -- > Best regards, > Ilya Chesnokov > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > -------------- next part -------------- An HTML attachment was scrubbed... URL: From chesnokov.ilya на gmail.com Sun Nov 2 01:59:06 2014 From: chesnokov.ilya на gmail.com (Ilya Chesnokov) Date: Sun, 2 Nov 2014 13:59:06 +0400 Subject: [Moscow.pm] __PACKAGE__ namespace In-Reply-To: References: Message-ID: 2 ноября 2014 г., 9:05 пользователь Artur Kh написал: > Она там не для чего, просто так. И что же за косяк там есть в коде? А, просто для отвлечения внимания? Тогда все ок :) -- Best regards, Ilya Chesnokov From dzirtik на gmail.com Mon Nov 3 07:20:15 2014 From: dzirtik на gmail.com (=?UTF-8?B?0J/QsNCy0LXQuyDQqdC10YDQsdC40L3QuNC9?=) Date: Mon, 3 Nov 2014 18:20:15 +0300 Subject: [Moscow.pm] =?utf-8?b?0JLRgdGC0YDQtdGH0LAgTW9zY293LnBtIDYg0L0=?= =?utf-8?b?0L7Rj9Cx0YDRjyAyMDE0?= Message-ID: Дорогие друзья! Приглашаем вас на очередную встречу Moscow.pm ? группы московских Perl-программистов, участников всемирной ассоциации Perl Mongers . 6 ноября вас ждут доклады и выступления: - Павел Щербинин, (team lead Новости Mail.Ru и Hi-Tech Mail.Ru ) подведет результаты конкурса Let's Play Golf. Вас ждет обзор самых интересных решений, а победителей ? заслуженные награды. - Руслан Закиров (team lead команды Perl-разработки Sports.ru ) выступит с докладом ?На крыльце одном сидели Perl, PHP, Python и JS?. Вы узнаете, как в Sports.ru подружили бэк-энд с фронт-эндом, и как РPP на бэках не поссорились друг с другом. - Пуштаев Вадим (программист Поиска Mail.Ru ) в своем докладе ?Perl Now? расскажет о том, как Perl используется сегодня. Будут освещены основные идеологические подходы, а также рассмотрены модули, без которых сложно представить себе современный Perl. Мы ждем всех, кто мечтает запускать совместные проекты и делиться идеями в области Perl-программирования, стремится достичь профессионального роста в среде единомышленников и узнавать о конкретных боевых задачах из первых рук! Место проведения: офис Mail.Ru Group, Москва, Ленинградский проспект, 39, стр. 79. Начало: 19:30. Трансляцию мероприятия можно будет посмотреть здесь . Регистрация здесь . -- С Уважением, Щербинин Павел ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From zhuravlev.ua на gmail.com Thu Nov 6 08:51:49 2014 From: zhuravlev.ua на gmail.com (Artem Zhuravlev) Date: Thu, 6 Nov 2014 20:51:49 +0400 Subject: [Moscow.pm] =?utf-8?b?0JLRgdGC0YDQtdGH0LAgTW9zY293LnBtIDYg0L0=?= =?utf-8?b?0L7Rj9Cx0YDRjyAyMDE0?= In-Reply-To: References: Message-ID: Опоздал на 7 мин, сижу в холе майлру смотрю он-лайн трансляцию. ^^ понед?лок, 3 листопада 2014 р. користувач Павел Щербинин написав: > Дорогие друзья! > > Приглашаем вас на очередную встречу Moscow.pm ? > группы московских Perl-программистов, участников всемирной ассоциации Perl > Mongers . > > 6 ноября вас ждут доклады и выступления: > > - Павел Щербинин, (team lead Новости Mail.Ru и Hi-Tech > Mail.Ru ) подведет результаты конкурса Let's > Play Golf. Вас ждет обзор самых интересных решений, а победителей ? > заслуженные награды. > > - Руслан Закиров (team lead команды Perl-разработки Sports.ru > ) выступит с докладом ?На крыльце одном сидели Perl, > PHP, Python и JS?. Вы узнаете, как в Sports.ru подружили > бэк-энд с фронт-эндом, и как РPP на бэках не поссорились друг с другом. > > - Пуштаев Вадим (программист Поиска Mail.Ru ) в своем > докладе ?Perl Now? расскажет о том, как Perl используется сегодня. Будут > освещены основные идеологические подходы, а также рассмотрены модули, без > которых сложно представить себе современный Perl. > > Мы ждем всех, кто мечтает запускать совместные проекты и делиться идеями в > области Perl-программирования, стремится достичь профессионального роста в > среде единомышленников и узнавать о конкретных боевых задачах из первых рук! > > Место проведения: офис Mail.Ru Group, Москва, Ленинградский проспект, 39, > стр. 79. > > Начало: 19:30. > > Трансляцию мероприятия можно будет посмотреть здесь > . > > Регистрация здесь . > > -- > С Уважением, > Щербинин Павел > -- Best regards, Artem V. Zhuravlev ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From dzirtik на gmail.com Thu Nov 6 08:54:14 2014 From: dzirtik на gmail.com (=?UTF-8?B?0J/QsNCy0LXQuyDQqdC10YDQsdC40L3QuNC9?=) Date: Thu, 6 Nov 2014 19:54:14 +0300 Subject: [Moscow.pm] =?utf-8?b?0JLRgdGC0YDQtdGH0LAgTW9zY293LnBtIDYg0L0=?= =?utf-8?b?0L7Rj9Cx0YDRjyAyMDE0?= In-Reply-To: References: Message-ID: Я сейчас спущусь 06 нояб. 2014 г. 19:52 пользователь "Artem Zhuravlev" < zhuravlev.ua на gmail.com> написал: > Опоздал на 7 мин, сижу в холе майлру смотрю он-лайн трансляцию. ^^ > > понед?лок, 3 листопада 2014 р. користувач Павел Щербинин < > dzirtik на gmail.com> написав: > >> Дорогие друзья! >> >> Приглашаем вас на очередную встречу Moscow.pm ? >> группы московских Perl-программистов, участников всемирной ассоциации Perl >> Mongers . >> >> 6 ноября вас ждут доклады и выступления: >> >> - Павел Щербинин, (team lead Новости Mail.Ru и Hi-Tech >> Mail.Ru ) подведет результаты конкурса Let's >> Play Golf. Вас ждет обзор самых интересных решений, а победителей ? >> заслуженные награды. >> >> - Руслан Закиров (team lead команды Perl-разработки Sports.ru >> ) выступит с докладом ?На крыльце одном сидели Perl, >> PHP, Python и JS?. Вы узнаете, как в Sports.ru подружили >> бэк-энд с фронт-эндом, и как РPP на бэках не поссорились друг с другом. >> >> - Пуштаев Вадим (программист Поиска Mail.Ru ) в >> своем докладе ?Perl Now? расскажет о том, как Perl используется сегодня. >> Будут освещены основные идеологические подходы, а также рассмотрены модули, >> без которых сложно представить себе современный Perl. >> >> Мы ждем всех, кто мечтает запускать совместные проекты и делиться идеями >> в области Perl-программирования, стремится достичь профессионального роста >> в среде единомышленников и узнавать о конкретных боевых задачах из первых >> рук! >> >> Место проведения: офис Mail.Ru Group, Москва, Ленинградский проспект, 39, >> стр. 79. >> >> Начало: 19:30. >> >> Трансляцию мероприятия можно будет посмотреть здесь >> . >> >> Регистрация здесь . >> >> -- >> С Уважением, >> Щербинин Павел >> > > > -- > Best regards, > Artem V. Zhuravlev > > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > > ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From pavel на kuptsov.info Wed Nov 12 04:25:34 2014 From: pavel на kuptsov.info (=?UTF-8?B?0J/QsNCy0LXQuyDQmtGD0L/RhtC+0LI=?=) Date: Wed, 12 Nov 2014 15:25:34 +0300 Subject: [Moscow.pm] checkbox, param and Mojolicious 5.60 Message-ID: Добрый день! Столкнулся со странными граблями в Mojolicious::Lite (хотя возможно он и не причем - а грабли у меня вместо рук?). Есть страница с чекбоксами вида: ... Есть код принимающий этот параметр так: my @usopt = $self->param('usopt'); и далее передающий его для обработки так: my $selopt = MTN::Option::Manager->get_options(query => [idoptions => \@usopt]); И все это прекрасно работало, пока я не обновился до последней версии Mojolicious, и теперь вот эта срока: my @usopt = $self->param('usopt'); не работает (вместо массива получаю только одно значение чекбокса)... То есть я так понимаю что как-то изменилась работа $self->param в последней версии Mojolicious ? P.S. При этом параметры видны так: { "usopt" => [ 19, 20, 21 ] } Но Dumper говорит что @usopt содержит лишь одно значение [Wed Nov 12 15:22:41 2014] [info] $VAR1 = '21'; Прошу помочь, кто чем может. Спасибо. ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From chapov на reg.ru Wed Nov 12 04:34:12 2014 From: chapov на reg.ru (=?UTF-8?B?0JTQtdC90LjRgSDQp9Cw0L/QvtCy?=) Date: Wed, 12 Nov 2014 16:34:12 +0400 Subject: [Moscow.pm] checkbox, param and Mojolicious 5.60 In-Reply-To: References: Message-ID: Вроде в одной из недавних версий сделали разделение методов по контексту, они теперь не зависят от контекста. Не в этом ли суть? что-то вроде param и all_params 12 ноября 2014 г., 16:25 пользователь Павел Купцов написал: > Добрый день! > Столкнулся со странными граблями в Mojolicious::Lite (хотя возможно он и > не причем - а грабли у меня вместо рук?). > > Есть страница с чекбоксами вида: > > > > ... > > Есть код принимающий этот параметр так: > > my @usopt = $self->param('usopt'); > > и далее передающий его для обработки так: > > my $selopt = MTN::Option::Manager->get_options(query => [idoptions => > \@usopt]); > > И все это прекрасно работало, пока я не обновился до последней версии > Mojolicious, и теперь вот эта срока: > > my @usopt = $self->param('usopt'); > > не работает (вместо массива получаю только одно значение чекбокса)... > > То есть я так понимаю что как-то изменилась работа $self->param в > последней версии Mojolicious ? > > P.S. > При этом параметры видны так: > { > "usopt" => [ > 19, > 20, > 21 > ] > } > > Но Dumper говорит что @usopt содержит лишь одно значение > [Wed Nov 12 15:22:41 2014] [info] $VAR1 = '21'; > > Прошу помочь, кто чем может. > Спасибо. > > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > > -- *Спасибо!* http://spasibo.reg.ru С уважением, Чапов Денис Программист | Регистратор доменных имён REG.RU Тел.: +7 (495) 580-11-11, доб. 502 | Моб.: +8 (927) 7063974 Эл. почта: chapov на reg.ru | http://www.reg.ru | http://рег.рф Kind regards, Denis Chapov Developer | Accredited Domain Registrar REG.RU Phone: +7 (495) 580-11-11, ext. 502 | Mobile: +8 (927) 7063974 Email: chapov на reg.ru | http://www.reg.com ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From thecrux на gmail.com Wed Nov 12 04:39:26 2014 From: thecrux на gmail.com (Vladimir Lettiev) Date: Wed, 12 Nov 2014 15:39:26 +0300 Subject: [Moscow.pm] checkbox, param and Mojolicious 5.60 In-Reply-To: References: Message-ID: <20141112123926.GA28206@mail.truecrux.org> On Wed, Nov 12, 2014 at 03:25:34PM +0300, Павел Купцов wrote: > И все это прекрасно работало, пока я не обновился до последней версии > Mojolicious, и теперь вот эта срока: > > my @usopt = $self->param('usopt'); > > не работает (вместо массива получаю только одно значение чекбокса)... Вы не читали свежий выпуск Pragmatic Perl? ;) -- Vladimir Lettiev aka crux ? theCrux на gmail.com From kostya на yandex.ru Wed Nov 12 04:34:44 2014 From: kostya на yandex.ru (=?koi8-r?B?68/T1NEg9MXO?=) Date: Wed, 12 Nov 2014 15:34:44 +0300 Subject: [Moscow.pm] checkbox, param and Mojolicious 5.60 In-Reply-To: References: Message-ID: <1421491415795684@web8g.yandex.ru> every_param поможет! -- Костя Тен 12.11.2014, 15:26, "Павел Купцов" : > Добрый день! > Столкнулся со странными граблями в Mojolicious::Lite (хотя возможно он и не причем - а грабли у меня вместо рук?). > > Есть страница с чекбоксами вида: > > > > ... > > Есть код принимающий этот параметр так: > > my @usopt = $self->param('usopt'); > > и далее передающий его для обработки так: > > my $selopt = MTN::Option::Manager->get_options(query => [idoptions => \@usopt]); > > И все это прекрасно работало, пока я не обновился до последней версии Mojolicious, и теперь вот эта срока: > > my @usopt = $self->param('usopt'); > > не работает (вместо массива получаю только одно значение чекбокса)... > > То есть я так понимаю что как-то изменилась работа $self->param в последней версии Mojolicious ? > > P.S. > При этом параметры видны так: > { >   "usopt" => [ >     19, >     20, >     21 >   ] > } > > Но Dumper говорит что @usopt содержит лишь одно значение > [Wed Nov 12 15:22:41 2014] [info] $VAR1 = '21'; > > Прошу помочь, кто чем может. > Спасибо. > > , > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org From grisxa на gmail.com Wed Nov 12 04:41:18 2014 From: grisxa на gmail.com (Grigory Batalov) Date: Wed, 12 Nov 2014 15:41:18 +0300 Subject: [Moscow.pm] checkbox, param and Mojolicious 5.60 In-Reply-To: References: Message-ID: <20141112154118.6b914432@gbatalov> В Wed, 12 Nov 2014 15:25:34 +0300 Павел Купцов пишет: > Есть страница с чекбоксами вида: > > > > ... > > Есть код принимающий этот параметр так: > > my @usopt = $self->param('usopt'); А что, и так работает? Я всегда ставлю usopt[] . From devrow на gmail.com Wed Nov 12 04:42:11 2014 From: devrow на gmail.com (devrow на gmail.com) Date: Wed, 12 Nov 2014 15:42:11 +0300 Subject: [Moscow.pm] checkbox, param and Mojolicious 5.60 In-Reply-To: References: Message-ID: <546355A3.40908@gmail.com> в такой штуке как mojo невероятно полезно читать changelog перед тем как обновляться. сегодня может быть одно, завтра - другое, послезавтра - все наоборот. On 12.11.2014 15:34, Денис Чапов wrote: > Вроде в одной из недавних версий сделали разделение методов по контексту, > они теперь не зависят от контекста. Не в этом ли суть? > > что-то вроде param и all_params > > 12 ноября 2014 г., 16:25 пользователь Павел Купцов > написал: > >> Добрый день! >> Столкнулся со странными граблями в Mojolicious::Lite (хотя возможно он и >> не причем - а грабли у меня вместо рук?). >> >> Есть страница с чекбоксами вида: >> >> >> >> ... >> >> Есть код принимающий этот параметр так: >> >> my @usopt = $self->param('usopt'); >> >> и далее передающий его для обработки так: >> >> my $selopt = MTN::Option::Manager->get_options(query => [idoptions => >> \@usopt]); >> >> И все это прекрасно работало, пока я не обновился до последней версии >> Mojolicious, и теперь вот эта срока: >> >> my @usopt = $self->param('usopt'); >> >> не работает (вместо массива получаю только одно значение чекбокса)... >> >> То есть я так понимаю что как-то изменилась работа $self->param в >> последней версии Mojolicious ? >> >> P.S. >> При этом параметры видны так: >> { >> "usopt" => [ >> 19, >> 20, >> 21 >> ] >> } >> >> Но Dumper говорит что @usopt содержит лишь одно значение >> [Wed Nov 12 15:22:41 2014] [info] $VAR1 = '21'; >> >> Прошу помочь, кто чем может. >> Спасибо. >> >> >> -- >> Moscow.pm mailing list >> moscow-pm на pm.org | http://moscow.pm.org >> >> > > > > From pavel на kuptsov.info Wed Nov 12 05:40:08 2014 From: pavel на kuptsov.info (=?UTF-8?B?0J/QsNCy0LXQuyDQmtGD0L/RhtC+0LI=?=) Date: Wed, 12 Nov 2014 16:40:08 +0300 Subject: [Moscow.pm] =?utf-8?b?0JTQsNC50LTQttC10YHRgiDRgdC/0LjRgdC60LAg?= =?utf-8?b?0YDQsNGB0YHRi9C70LrQuCBNb3Njb3ctcG07INGC0L7QvCA4NSwg0LI=?= =?utf-8?b?0YvQv9GD0YHQuiA1?= Message-ID: Всем спасибо большое за информацию! Вот так работает: my $usopt = $self->every_param('usopt'); my $selopt = MTN::Option::Manager->get_options(query => [idoptions => $usopt]); Обновлялся на девелоперской машинке - думал будут незначительные изменения типа как с secret -> secrets, благо проект небольшой - буду тестировать. Спасибо за Pragmatic Perl - качаю уже все выпуски на ридер! Надо наверстывать потерянное! P.S. 2 *Grigory Batalov* Вариант с usopt[] - я так понял это в html'e используете такое имя для checkbox'a ? Это дает какие-то удобства по сравнению с просто usopt ? Я слышал об этом - но как-то вскользььь... :) 12 ноября 2014 г., 15:34 пользователь написал: > Сообщения, предназначенные для списка рассылки Moscow-pm, необходимо > отправлять по адресу > moscow-pm на pm.org > > Для изменения параметров подписки вы можеже использовать веб-страницу > http://mail.pm.org/mailman/listinfo/moscow-pm > > Для получения информации о том, как пользовать почтовым интерфейсом, > отправьте письмо, в теле или теме которого будет слово 'help', по > адресу: > moscow-pm-request на pm.org > > Адрес человека, ответственного за этот список рассылки: > moscow-pm-owner на pm.org > > При ответе, пожалуйста, измение тему письма так, чтобы она была более > содержательной чем "Re: Содержание дайджеста списка рассылки > Moscow-pm..." > > > В этом номере: > > 1. checkbox, param and Mojolicious 5.60 (Павел Купцов) > 2. Re: checkbox, param and Mojolicious 5.60 (Денис Чапов) > > > ---------------------------------------------------------------------- > > Message: 1 > Date: Wed, 12 Nov 2014 15:25:34 +0300 > From: Павел Купцов > To: "moscow-pm на pm.org" > Subject: [Moscow.pm] checkbox, param and Mojolicious 5.60 > Message-ID: > < > CAPcuxSbfAoLBYfU1TJCramDqGAODT01Kg5Zfekpor1dpuD_whA на mail.gmail.com> > Content-Type: text/plain; charset="utf-8" > > Добрый день! > Столкнулся со странными граблями в Mojolicious::Lite (хотя возможно он и не > причем - а грабли у меня вместо рук?). > > Есть страница с чекбоксами вида: > > > > ... > > Есть код принимающий этот параметр так: > > my @usopt = $self->param('usopt'); > > и далее передающий его для обработки так: > > my $selopt = MTN::Option::Manager->get_options(query => [idoptions => > \@usopt]); > > И все это прекрасно работало, пока я не обновился до последней версии > Mojolicious, и теперь вот эта срока: > > my @usopt = $self->param('usopt'); > > не работает (вместо массива получаю только одно значение чекбокса)... > > То есть я так понимаю что как-то изменилась работа $self->param в последней > версии Mojolicious ? > > P.S. > При этом параметры видны так: > { > "usopt" => [ > 19, > 20, > 21 > ] > } > > Но Dumper говорит что @usopt содержит лишь одно значение > [Wed Nov 12 15:22:41 2014] [info] $VAR1 = '21'; > > Прошу помочь, кто чем может. > Спасибо. > ----------- следущая часть ----------- > Вложение в формате HTML было извлечено… > URL: < > http://mail.pm.org/pipermail/moscow-pm/attachments/20141112/1e305f77/attachment-0001.html > > > > ------------------------------ > > Message: 2 > Date: Wed, 12 Nov 2014 16:34:12 +0400 > From: Денис Чапов > To: "Moscow.pm group" > Subject: Re: [Moscow.pm] checkbox, param and Mojolicious 5.60 > Message-ID: > y2Ydh1csNF-UEVxGrGeyPCCoK9ewgc6E1PQ на mail.gmail.com> > Content-Type: text/plain; charset="utf-8" > > Вроде в одной из недавних версий сделали разделение методов по контексту, > они теперь не зависят от контекста. Не в этом ли суть? > > что-то вроде param и all_params > > 12 ноября 2014 г., 16:25 пользователь Павел Купцов > написал: > > > Добрый день! > > Столкнулся со странными граблями в Mojolicious::Lite (хотя возможно он и > > не причем - а грабли у меня вместо рук?). > > > > Есть страница с чекбоксами вида: > > > > > > > > ... > > > > Есть код принимающий этот параметр так: > > > > my @usopt = $self->param('usopt'); > > > > и далее передающий его для обработки так: > > > > my $selopt = MTN::Option::Manager->get_options(query => [idoptions => > > \@usopt]); > > > > И все это прекрасно работало, пока я не обновился до последней версии > > Mojolicious, и теперь вот эта срока: > > > > my @usopt = $self->param('usopt'); > > > > не работает (вместо массива получаю только одно значение чекбокса)... > > > > То есть я так понимаю что как-то изменилась работа $self->param в > > последней версии Mojolicious ? > > > > P.S. > > При этом параметры видны так: > > { > > "usopt" => [ > > 19, > > 20, > > 21 > > ] > > } > > > > Но Dumper говорит что @usopt содержит лишь одно значение > > [Wed Nov 12 15:22:41 2014] [info] $VAR1 = '21'; > > > > Прошу помочь, кто чем может. > > Спасибо. > > > > > > -- > > Moscow.pm mailing list > > moscow-pm на pm.org | http://moscow.pm.org > > > > > > > -- > *Спасибо!* http://spasibo.reg.ru > > С уважением, Чапов Денис > Программист | Регистратор доменных имён REG.RU > Тел.: +7 (495) 580-11-11, доб. 502 | Моб.: +8 (927) 7063974 > Эл. почта: chapov на reg.ru | http://www.reg.ru | http://рег.рф > > > > Kind regards, Denis Chapov > Developer | Accredited Domain Registrar REG.RU > Phone: +7 (495) 580-11-11, ext. 502 | Mobile: +8 (927) 7063974 > Email: chapov на reg.ru | http://www.reg.com > ----------- следущая часть ----------- > Вложение в формате HTML было извлечено… > URL: < > http://mail.pm.org/pipermail/moscow-pm/attachments/20141112/ceb23903/attachment.html > > > > ------------------------------ > > Subject: Нижний колонтитул дайджеста > > _______________________________________________ > Moscow-pm mailing list > Moscow-pm на pm.org > http://mail.pm.org/mailman/listinfo/moscow-pm > > > ------------------------------ > > Конец Дайджест списка рассылки Moscow-pm; том 85, выпуск 5 > ********************************************************** > ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From grisxa на gmail.com Wed Nov 12 07:28:21 2014 From: grisxa на gmail.com (Grigory Batalov) Date: Wed, 12 Nov 2014 18:28:21 +0300 Subject: [Moscow.pm] checkbox, param and Mojolicious 5.60 In-Reply-To: References: Message-ID: <20141112182821.386fb737@gbatalov> В Wed, 12 Nov 2014 16:40:08 +0300 Павел Купцов пишет: > Вариант с usopt[] - я так понял это в html'e используете такое имя для > checkbox'a ? > Это дает какие-то удобства по сравнению с просто usopt ? Я слышал об > этом - но как-то вскользььь... :) Честно говоря, я тоже слышал вскользь, но выбрал другую сторону Силы :) Подозреваю, что раньше были бэкенды, которым важны скобки, оттуда и пошло. From ruslan.zakirov на gmail.com Thu Nov 13 05:16:24 2014 From: ruslan.zakirov на gmail.com (Ruslan Zakirov) Date: Thu, 13 Nov 2014 17:16:24 +0400 Subject: [Moscow.pm] checkbox, param and Mojolicious 5.60 In-Reply-To: <20141112182821.386fb737@gbatalov> References: <20141112182821.386fb737@gbatalov> Message-ID: 2014-11-12 18:28 GMT+03:00 Grigory Batalov : > В Wed, 12 Nov 2014 16:40:08 +0300 > Павел Купцов пишет: > > > > Вариант с usopt[] - я так понял это в html'e используете такое имя для > > checkbox'a ? > > Это дает какие-то удобства по сравнению с просто usopt ? Я слышал об > > этом - но как-то вскользььь... :) > > Честно говоря, я тоже слышал вскользь, но выбрал другую сторону Силы :) > Подозреваю, что раньше были бэкенды, которым важны скобки, оттуда и пошло. > Это пошло из утилит автоматического развертывания аргументов в сложные структуры согласно имени параметра. > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > -- Best regards, Ruslan. ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From mi на ya.ru Thu Nov 13 11:34:43 2014 From: mi на ya.ru (Nikolay Mishin) Date: Thu, 13 Nov 2014 22:34:43 +0300 Subject: [Moscow.pm] =?koi8-r?b?0MHS08nOxyDQxdLMwSBQUEkgY29udmVyIGFycmF5?= =?koi8-r?b?LT5oYXNo?= Message-ID: <78191415907283@web14g.yandex.ru> Привет MoscowPM!! Рефакторю очередной проект и замучило меня менять массив my @list_regexes=($reg1_rx,$reg2_rx,$reg3_rx,$reg4_rx); в такую структуру my %list_regexes = (); @list_regexes{ 'reg1_rx', 'reg2_rx', 'reg3_rx', 'reg4_rx' } = ( $reg1_rx, $reg2_rx, $reg3_rx, $reg4_rx ); написал скрипт, который это автоматически https://github.com/mishin/presentation/blob/master/ppi_convert_array_to_hash.pl use 5.14.0; use PPI; #use Smart::Comments; my $file_name = shift or die "Usage: $0 file_4_transform\n"; my $doc = PPI::Document->new($file_name); my $hash_name = ''; my @variables = (); $doc->find( sub { my ( $root, $node ) = @_; if ( $node->isa('PPI::Token::Symbol') && $node->symbol_type eq '$' ) { push @variables, substr( $node, 1 ); } if ( $node->isa('PPI::Token::Symbol') && $node->symbol_type eq '@' ) { $hash_name = substr( $node, 1 ); } } ); my $left_side = join ',', map { "'$_'" } @variables; my $right_side = join ',', map { "\$$_" } @variables; my $full_text = <<"end_line"; my %${hash_name}=(); \@${hash_name}{ ${left_side} } = ( ${right_side} ); end_line use Perl::Tidy; perltidy( source => \$full_text); Так вот, сдается мне, что не кошерно так генерить perl код, а что лучше это делать с помощью того же модуля PPI может кто поможет переписать вот эту часть my $full_text = <<"end_line"; my %${hash_name}=(); \@${hash_name}{ ${left_side} } = ( ${right_side} ); end_line только с помощью PPI? -- С уважением Николай Мишин From xuntaka на gmail.com Fri Nov 14 05:25:36 2014 From: xuntaka на gmail.com (=?UTF-8?B?0JXQs9C+0YAg0JHQsNC50LHQsNGA0LA=?=) Date: Fri, 14 Nov 2014 16:25:36 +0300 Subject: [Moscow.pm] checkbox, param and Mojolicious 5.60 In-Reply-To: References: <20141112182821.386fb737@gbatalov> Message-ID: Квадратные скобки пошли из РНР и ни откуда больше. 13 ноября 2014 г., 16:16 пользователь Ruslan Zakirov < ruslan.zakirov на gmail.com> написал: > > > 2014-11-12 18:28 GMT+03:00 Grigory Batalov : > >> В Wed, 12 Nov 2014 16:40:08 +0300 >> Павел Купцов пишет: >> >> >> > Вариант с usopt[] - я так понял это в html'e используете такое имя для >> > checkbox'a ? >> > Это дает какие-то удобства по сравнению с просто usopt ? Я слышал об >> > этом - но как-то вскользььь... :) >> >> Честно говоря, я тоже слышал вскользь, но выбрал другую сторону Силы :) >> Подозреваю, что раньше были бэкенды, которым важны скобки, оттуда и пошло. >> > > Это пошло из утилит автоматического развертывания аргументов в сложные > структуры согласно имени параметра. > > >> -- >> Moscow.pm mailing list >> moscow-pm на pm.org | http://moscow.pm.org >> > > > > -- > Best regards, Ruslan. > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > > -- С уважением, Егор Байбара +7-963-675-29-49 ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From grisxa на gmail.com Fri Nov 14 06:08:07 2014 From: grisxa на gmail.com (Grigory Batalov) Date: Fri, 14 Nov 2014 17:08:07 +0300 Subject: [Moscow.pm] checkbox, param and Mojolicious 5.60 In-Reply-To: References: <20141112182821.386fb737@gbatalov> Message-ID: <20141114170807.37afd2ee@gbatalov> В Fri, 14 Nov 2014 16:25:36 +0300 Егор Байбара пишет: > Квадратные скобки пошли из РНР и ни откуда больше. Я боялся сюда писать это слово :) > >> > Вариант с usopt[] - я так понял это в html'e используете такое > >> > имя для checkbox'a ? > >> > Это дает какие-то удобства по сравнению с просто usopt ? Я > >> > слышал об этом - но как-то вскользььь... :) > >> > >> Честно говоря, я тоже слышал вскользь, но выбрал другую сторону > >> Силы :) Подозреваю, что раньше были бэкенды, которым важны скобки, > >> оттуда и пошло. > > > > Это пошло из утилит автоматического развертывания аргументов в > > сложные структуры согласно имени параметра. From xuntaka на gmail.com Fri Nov 14 06:24:59 2014 From: xuntaka на gmail.com (=?UTF-8?B?0JXQs9C+0YAg0JHQsNC50LHQsNGA0LA=?=) Date: Fri, 14 Nov 2014 17:24:59 +0300 Subject: [Moscow.pm] checkbox, param and Mojolicious 5.60 In-Reply-To: <20141114170807.37afd2ee@gbatalov> References: <20141112182821.386fb737@gbatalov> <20141114170807.37afd2ee@gbatalov> Message-ID: Я его предусмотрительно набрал кириллицей, чтобы не нашли :) 14 ноября 2014 г., 17:08 пользователь Grigory Batalov написал: > В Fri, 14 Nov 2014 16:25:36 +0300 > Егор Байбара пишет: > > > Квадратные скобки пошли из РНР и ни откуда больше. > > Я боялся сюда писать это слово :) > > > >> > Вариант с usopt[] - я так понял это в html'e используете такое > > >> > имя для checkbox'a ? > > >> > Это дает какие-то удобства по сравнению с просто usopt ? Я > > >> > слышал об этом - но как-то вскользььь... :) > > >> > > >> Честно говоря, я тоже слышал вскользь, но выбрал другую сторону > > >> Силы :) Подозреваю, что раньше были бэкенды, которым важны скобки, > > >> оттуда и пошло. > > > > > > Это пошло из утилит автоматического развертывания аргументов в > > > сложные структуры согласно имени параметра. > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > -- С уважением, Егор Байбара +7-963-675-29-49 ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From lelzak на mail.ru Fri Nov 14 12:11:49 2014 From: lelzak на mail.ru (=?UTF-8?B?QWxleCBBY2g=?=) Date: Fri, 14 Nov 2014 23:11:49 +0300 Subject: [Moscow.pm] =?utf-8?q?Catalyst_info_need?= Message-ID: <1415995909.852016161@f422.i.mail.ru> Здравствуйте! Начал вкуривать каталист. Хотелось бы собрать какую-то смежную информацию на предмет работы с ним. Например особо полезные плагины, хелперы, модули, надстройки и-или существующие коробочные решения, известные и не очень багофичи, применяющиеся приёмы, ну и т.п., Т.е. буду признателен, если практикующие поделятся информацией/опытом, которые могут оказаться полезны начинающему для того, чтобы лучше сориентироваться и не изобретать велостпедов. с наилучшими, Алексей. ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From dim0xff на gmail.com Fri Nov 14 12:24:57 2014 From: dim0xff на gmail.com (Dmitry L.) Date: Sat, 15 Nov 2014 00:24:57 +0400 Subject: [Moscow.pm] Catalyst info need In-Reply-To: <1415995909.852016161@f422.i.mail.ru> References: <1415995909.852016161@f422.i.mail.ru> Message-ID: https://metacpan.org/pod/Task::Catalyst https://metacpan.org/pod/Task::Cpanel::Catalyst From akzhan.abdulin на gmail.com Tue Nov 18 08:15:42 2014 From: akzhan.abdulin на gmail.com (Akzhan Abdulin) Date: Tue, 18 Nov 2014 19:15:42 +0300 Subject: [Moscow.pm] Catalyst info need In-Reply-To: <1415995909.852016161@f422.i.mail.ru> References: <1415995909.852016161@f422.i.mail.ru> Message-ID: покурите маны, там очень много о best practices. ну и задавайте конкретные вопросы. 14 ноября 2014 г., 23:11 пользователь Alex Ach написал: > Здравствуйте! > > > Начал вкуривать каталист. Хотелось бы собрать какую-то смежную информацию > на предмет работы с ним. Например особо полезные плагины, хелперы, модули, > надстройки и-или существующие коробочные решения, известные и не очень > багофичи, применяющиеся приёмы, ну и т.п., Т.е. буду признателен, если > практикующие поделятся информацией/опытом, которые могут оказаться полезны > начинающему для того, чтобы лучше сориентироваться и не изобретать > велостпедов. > > > с наилучшими, > > Алексей. > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > > ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From tiger на darkstar.spb.ru Tue Nov 18 13:10:02 2014 From: tiger на darkstar.spb.ru (Dmitry Tigrov) Date: Wed, 19 Nov 2014 00:10:02 +0300 Subject: [Moscow.pm] Catalyst info need In-Reply-To: References: <1415995909.852016161@f422.i.mail.ru> Message-ID: <546BB5AA.1020106@darkstar.spb.ru> Мне въехать более менее помогла книжка http://www.amazon.com/Catalyst-Accelerating-Perl-Application-Development/dp/1847190952 хотя до этого я уже успел создать пару приложений на моджолишес 18.11.2014 19:15, Akzhan Abdulin пишет: > покурите маны, там очень много о best practices. ну и задавайте > конкретные вопросы. > > 14 ноября 2014 г., 23:11 пользователь Alex Ach > написал: > > Здравствуйте! > > > Начал вкуривать каталист. Хотелось бы собрать какую-то смежную > информацию на предмет работы с ним. Например особо полезные > плагины, хелперы, модули, надстройки и-или существующие коробочные > решения, известные и не очень багофичи, применяющиеся приёмы, ну и > т.п., Т.е. буду признателен, если практикующие поделятся > информацией/опытом, которые могут оказаться полезны начинающему > для того, чтобы лучше сориентироваться и не изобретать велостпедов. > > > с наилучшими, > > Алексей. > > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > > > > ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From chesnokov.ilya на gmail.com Wed Nov 19 01:27:31 2014 From: chesnokov.ilya на gmail.com (Ilya Chesnokov) Date: Wed, 19 Nov 2014 13:27:31 +0400 Subject: [Moscow.pm] Catalyst info need In-Reply-To: <546BB5AA.1020106@darkstar.spb.ru> References: <1415995909.852016161@f422.i.mail.ru> <546BB5AA.1020106@darkstar.spb.ru> Message-ID: 19 ноября 2014 г., 0:10 пользователь Dmitry Tigrov написал: > Мне въехать более менее помогла книжка > http://www.amazon.com/Catalyst-Accelerating-Perl-Application-Development/dp/1847190952 > хотя до этого я уже успел создать пару приложений на моджолишес Есть более новая (хотя на сегодняшний день наверное уже старая): http://www.amazon.com/Definitive-Guide-Catalyst-Maintainable-Applications/dp/1430223650 А вообще на CPAN должно быть достаточно документации и примеров, в частности вот здесь: https://metacpan.org/release/Catalyst-Manual > 18.11.2014 19:15, Akzhan Abdulin пишет: > > покурите маны, там очень много о best practices. ну и задавайте конкретные > вопросы. > > 14 ноября 2014 г., 23:11 пользователь Alex Ach написал: >> >> Здравствуйте! >> >> >> Начал вкуривать каталист. Хотелось бы собрать какую-то смежную информацию >> на предмет работы с ним. Например особо полезные плагины, хелперы, модули, >> надстройки и-или существующие коробочные решения, известные и не очень >> багофичи, применяющиеся приёмы, ну и т.п., Т.е. буду признателен, если >> практикующие поделятся информацией/опытом, которые могут оказаться полезны >> начинающему для того, чтобы лучше сориентироваться и не изобретать >> велостпедов. >> >> >> с наилучшими, >> >> Алексей. >> >> >> -- >> Moscow.pm mailing list >> moscow-pm на pm.org | http://moscow.pm.org >> > > > > > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > -- Best regards, Ilya Chesnokov From me на ryvasy.net Fri Nov 21 05:20:29 2014 From: me на ryvasy.net (=?UTF-8?B?0JLQsNGB0LjQu9C40Lkg0KDRj9Cx0L7Qsg==?=) Date: Fri, 21 Nov 2014 16:20:29 +0300 Subject: [Moscow.pm] =?utf-8?b?0YjQsNCx0LvQvtC90Ysg0YLQsNCx0LvQuNGGIEV4?= =?utf-8?q?cel?= Message-ID: <546F3C1D.8000202@ryvasy.net> Всем привет Есть задача генерить кучу отчетов в Excel по шаблонам, которые (в идеале) будут загружать менеджеры. Нашел Excel::Template, Spreadsheet::ParseExcel::SaveParser Первый вариант требует шаблонов в XML, т.е., делать их придется всегда мне. Плюс я не нашел возможности объединять ячейки, а в примерах из ТЗ это нужно. Второй вообще строго говоря не работает с шаблонами и, если я правильно понял, не гарантирует сохранения всего, что могут в документ добавить (графики, формулы и т.п.) Кто-нибудь с такой задачей сталкивался? Как выкручивались? Спасибо! -- Василий Рябов, me на ryvasy.net From aml на rulezz.ru Fri Nov 21 05:49:46 2014 From: aml на rulezz.ru (Alexander Lourier) Date: Fri, 21 Nov 2014 13:49:46 +0000 Subject: [Moscow.pm] =?utf-8?b?0YjQsNCx0LvQvtC90Ysg0YLQsNCx0LvQuNGGIEV4?= =?utf-8?q?cel?= References: <546F3C1D.8000202@ryvasy.net> Message-ID: Сохранял в формате OpenOffice (это zipped XML), затем XML парсился, программно достраивался, как нужно, сохранялся обратно в XML, зиповался, и передавался макросу в OpenOffice, чтобы пересохранить в другой формат (в моём случае это была печатная форма в PDF). Если устроит OpenOffice в качестве выходного формата, задача превращается в тривиальную. On Fri Nov 21 2014 at 2:20:51 PM Василий Рябов wrote: > Всем привет > > Есть задача генерить кучу отчетов в Excel по шаблонам, которые (в > идеале) будут загружать менеджеры. > > Нашел Excel::Template, Spreadsheet::ParseExcel::SaveParser > > Первый вариант требует шаблонов в XML, т.е., делать их придется всегда > мне. Плюс я не нашел возможности объединять ячейки, а в примерах из ТЗ > это нужно. > > Второй вообще строго говоря не работает с шаблонами и, если я правильно > понял, не гарантирует сохранения всего, что могут в документ добавить > (графики, формулы и т.п.) > > Кто-нибудь с такой задачей сталкивался? Как выкручивались? > > Спасибо! > -- > Василий Рябов, > me на ryvasy.net > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From name2rnd на gmail.com Fri Nov 21 06:58:21 2014 From: name2rnd на gmail.com (Natalya Savenkova) Date: Fri, 21 Nov 2014 18:58:21 +0400 Subject: [Moscow.pm] =?utf-8?b?0YjQsNCx0LvQvtC90Ysg0YLQsNCx0LvQuNGGIEV4?= =?utf-8?q?cel?= In-Reply-To: References: <546F3C1D.8000202@ryvasy.net> Message-ID: Вот как раз аналогичный способ, но только Excel-2007, который xlsx В принципе, там можно каким-нибудь утвержденным способом вставлять данные в ячейки, ну типа $ID$, потом регулярками заменять их на нужный контент. Мы такую штуку в RTF проделывали, не думаю, что будет сложно в реализации. Excel::Template - точно не умеет мержить, я по этому поводу общалась с разрабом этого модуля, сказал "что не планировал делать и если мне так хочется.. я могу сделать это сама" =) С кодами для замены можно и с обычным экселем провернуть тему, но явно сложнее. По идее, сначала надо документ распарсить, выбрать контент ячеек, который под замену, и записывать в такой же последовательности. Но мерж ячеек, я уверена, будет потерян. 21 ноября 2014 г., 17:49 пользователь Alexander Lourier написал: > Сохранял в формате OpenOffice (это zipped XML), затем XML парсился, > программно достраивался, как нужно, сохранялся обратно в XML, зиповался, и > передавался макросу в OpenOffice, чтобы пересохранить в другой формат (в > моём случае это была печатная форма в PDF). Если устроит OpenOffice в > качестве выходного формата, задача превращается в тривиальную. > > > On Fri Nov 21 2014 at 2:20:51 PM Василий Рябов wrote: > >> Всем привет >> >> Есть задача генерить кучу отчетов в Excel по шаблонам, которые (в >> идеале) будут загружать менеджеры. >> >> Нашел Excel::Template, Spreadsheet::ParseExcel::SaveParser >> >> Первый вариант требует шаблонов в XML, т.е., делать их придется всегда >> мне. Плюс я не нашел возможности объединять ячейки, а в примерах из ТЗ >> это нужно. >> >> Второй вообще строго говоря не работает с шаблонами и, если я правильно >> понял, не гарантирует сохранения всего, что могут в документ добавить >> (графики, формулы и т.п.) >> >> Кто-нибудь с такой задачей сталкивался? Как выкручивались? >> >> Спасибо! >> -- >> Василий Рябов, >> me на ryvasy.net >> -- >> Moscow.pm mailing list >> moscow-pm на pm.org | http://moscow.pm.org >> > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > > ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From snelius на tsu.ru Fri Nov 21 07:01:20 2014 From: snelius на tsu.ru (Anatoly Y) Date: Fri, 21 Nov 2014 21:01:20 +0600 Subject: [Moscow.pm] =?utf-8?b?0YjQsNCx0LvQvtC90Ysg0YLQsNCx0LvQuNGGIEV4?= =?utf-8?q?cel?= In-Reply-To: References: <546F3C1D.8000202@ryvasy.net> Message-ID: Мне кажется это всё проще реализовать на VBA for Excel, там есть всё необходимое :) 21 ноября 2014 г., 20:58 пользователь Natalya Savenkova написал: > Вот как раз аналогичный способ, но только Excel-2007, который xlsx > В принципе, там можно каким-нибудь утвержденным способом вставлять данные > в ячейки, ну типа $ID$, потом регулярками заменять их на нужный контент. > Мы такую штуку в RTF проделывали, не думаю, что будет сложно в реализации. > Excel::Template - точно не умеет мержить, я по этому поводу общалась с > разрабом этого модуля, сказал "что не планировал делать и если мне так > хочется.. я могу сделать это сама" =) > > С кодами для замены можно и с обычным экселем провернуть тему, но явно > сложнее. По идее, сначала надо документ распарсить, выбрать контент ячеек, > который под замену, и записывать в такой же последовательности. Но мерж > ячеек, я уверена, будет потерян. > > > 21 ноября 2014 г., 17:49 пользователь Alexander Lourier > написал: > > Сохранял в формате OpenOffice (это zipped XML), затем XML парсился, >> программно достраивался, как нужно, сохранялся обратно в XML, зиповался, и >> передавался макросу в OpenOffice, чтобы пересохранить в другой формат (в >> моём случае это была печатная форма в PDF). Если устроит OpenOffice в >> качестве выходного формата, задача превращается в тривиальную. >> >> >> On Fri Nov 21 2014 at 2:20:51 PM Василий Рябов wrote: >> >>> Всем привет >>> >>> Есть задача генерить кучу отчетов в Excel по шаблонам, которые (в >>> идеале) будут загружать менеджеры. >>> >>> Нашел Excel::Template, Spreadsheet::ParseExcel::SaveParser >>> >>> Первый вариант требует шаблонов в XML, т.е., делать их придется всегда >>> мне. Плюс я не нашел возможности объединять ячейки, а в примерах из ТЗ >>> это нужно. >>> >>> Второй вообще строго говоря не работает с шаблонами и, если я правильно >>> понял, не гарантирует сохранения всего, что могут в документ добавить >>> (графики, формулы и т.п.) >>> >>> Кто-нибудь с такой задачей сталкивался? Как выкручивались? >>> >>> Спасибо! >>> -- >>> Василий Рябов, >>> me на ryvasy.net >>> -- >>> Moscow.pm mailing list >>> moscow-pm на pm.org | http://moscow.pm.org >>> >> >> -- >> Moscow.pm mailing list >> moscow-pm на pm.org | http://moscow.pm.org >> >> > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > > ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From parserpro на gmail.com Fri Nov 21 07:00:26 2014 From: parserpro на gmail.com (=?UTF-8?B?0JDQu9C10LrRgdC10Lkg0JzRi9GI0LrQuNC9?=) Date: Fri, 21 Nov 2014 18:00:26 +0300 Subject: [Moscow.pm] =?utf-8?b?0YjQsNCx0LvQvtC90Ysg0YLQsNCx0LvQuNGGIEV4?= =?utf-8?q?cel?= In-Reply-To: References: <546F3C1D.8000202@ryvasy.net> Message-ID: А с чего бы мерджу теряться? Вы же меняете только value, все остальное остается. 21 ноября 2014 г., 17:58 пользователь Natalya Savenkova написал: > Вот как раз аналогичный способ, но только Excel-2007, который xlsx > В принципе, там можно каким-нибудь утвержденным способом вставлять данные > в ячейки, ну типа $ID$, потом регулярками заменять их на нужный контент. > Мы такую штуку в RTF проделывали, не думаю, что будет сложно в реализации. > Excel::Template - точно не умеет мержить, я по этому поводу общалась с > разрабом этого модуля, сказал "что не планировал делать и если мне так > хочется.. я могу сделать это сама" =) > > С кодами для замены можно и с обычным экселем провернуть тему, но явно > сложнее. По идее, сначала надо документ распарсить, выбрать контент ячеек, > который под замену, и записывать в такой же последовательности. Но мерж > ячеек, я уверена, будет потерян. > > > 21 ноября 2014 г., 17:49 пользователь Alexander Lourier > написал: > >> Сохранял в формате OpenOffice (это zipped XML), затем XML парсился, >> программно достраивался, как нужно, сохранялся обратно в XML, зиповался, и >> передавался макросу в OpenOffice, чтобы пересохранить в другой формат (в >> моём случае это была печатная форма в PDF). Если устроит OpenOffice в >> качестве выходного формата, задача превращается в тривиальную. >> >> >> On Fri Nov 21 2014 at 2:20:51 PM Василий Рябов wrote: >> >>> Всем привет >>> >>> Есть задача генерить кучу отчетов в Excel по шаблонам, которые (в >>> идеале) будут загружать менеджеры. >>> >>> Нашел Excel::Template, Spreadsheet::ParseExcel::SaveParser >>> >>> Первый вариант требует шаблонов в XML, т.е., делать их придется всегда >>> мне. Плюс я не нашел возможности объединять ячейки, а в примерах из ТЗ >>> это нужно. >>> >>> Второй вообще строго говоря не работает с шаблонами и, если я правильно >>> понял, не гарантирует сохранения всего, что могут в документ добавить >>> (графики, формулы и т.п.) >>> >>> Кто-нибудь с такой задачей сталкивался? Как выкручивались? >>> >>> Спасибо! >>> -- >>> Василий Рябов, >>> me на ryvasy.net >>> -- >>> Moscow.pm mailing list >>> moscow-pm на pm.org | http://moscow.pm.org >>> >> >> -- >> Moscow.pm mailing list >> moscow-pm на pm.org | http://moscow.pm.org >> >> > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > > -- С уважением, Мышкин Алексей. ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From me на ryvasy.net Fri Nov 21 07:09:24 2014 From: me на ryvasy.net (=?KOI8-R?Q?=F7=C1=D3=C9=CC=C9=CA_=F2=D1=C2=CF=D7?=) Date: Fri, 21 Nov 2014 18:09:24 +0300 Subject: [Moscow.pm] =?koi8-r?b?28HCzM/O2SDUwcLMycMgRXhjZWw=?= In-Reply-To: References: <546F3C1D.8000202@ryvasy.net> Message-ID: <546F55A4.5080304@ryvasy.net> Вы имеете в виду макрос, который будет из какого-то внешнего источника нужные данные дергать и в таблицу вписывать? On 11/21/2014 06:01 PM, Anatoly Y wrote: > Мне кажется это всё проще реализовать на VBA for Excel, там есть всё > необходимое :) > > 21 ноября 2014 г., 20:58 пользователь Natalya Savenkova > > написал: > > Вот как раз аналогичный способ, но только Excel-2007, который xlsx > В принципе, там можно каким-нибудь утвержденным способом вставлять > данные в ячейки, ну типа $ID$, потом регулярками заменять их на > нужный контент. > Мы такую штуку в RTF проделывали, не думаю, что будет сложно в > реализации. > Excel::Template - точно не умеет мержить, я по этому поводу общалась > с разрабом этого модуля, сказал "что не планировал делать и если мне > так хочется.. я могу сделать это сама" =) > > С кодами для замены можно и с обычным экселем провернуть тему, но > явно сложнее. По идее, сначала надо документ распарсить, выбрать > контент ячеек, который под замену, и записывать в такой же > последовательности. Но мерж ячеек, я уверена, будет потерян. > > > 21 ноября 2014 г., 17:49 пользователь Alexander Lourier > > написал: > > Сохранял в формате OpenOffice (это zipped XML), затем XML > парсился, программно достраивался, как нужно, сохранялся обратно > в XML, зиповался, и передавался макросу в OpenOffice, чтобы > пересохранить в другой формат (в моём случае это была печатная > форма в PDF). Если устроит OpenOffice в качестве выходного > формата, задача превращается в тривиальную. > > > On Fri Nov 21 2014 at 2:20:51 PM Василий Рябов > wrote: > > Всем привет > > Есть задача генерить кучу отчетов в Excel по шаблонам, > которые (в > идеале) будут загружать менеджеры. > > Нашел Excel::Template, Spreadsheet::ParseExcel::__SaveParser > > Первый вариант требует шаблонов в XML, т.е., делать их > придется всегда > мне. Плюс я не нашел возможности объединять ячейки, а в > примерах из ТЗ > это нужно. > > Второй вообще строго говоря не работает с шаблонами и, если > я правильно > понял, не гарантирует сохранения всего, что могут в документ > добавить > (графики, формулы и т.п.) > > Кто-нибудь с такой задачей сталкивался? Как выкручивались? > > Спасибо! > -- > Василий Рябов, > me на ryvasy.net > -- > Moscow.pm mailing list > moscow-pm на pm.org | > http://moscow.pm.org > > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > > > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > > > > -- Василий Рябов, me на ryvasy.net From me на ryvasy.net Fri Nov 21 07:22:46 2014 From: me на ryvasy.net (=?KOI8-R?Q?=F7=C1=D3=C9=CC=C9=CA_=F2=D1=C2=CF=D7?=) Date: Fri, 21 Nov 2014 18:22:46 +0300 Subject: [Moscow.pm] =?koi8-r?b?28HCzM/O2SDUwcLMycMgRXhjZWw=?= In-Reply-To: References: <546F3C1D.8000202@ryvasy.net> Message-ID: <546F58C6.8040605@ryvasy.net> http://search.cpan.org/~rbo/Excel-Template-0.34/lib/Excel/Template/Element/MergeRange.pm - а вот и умеет мерджить, как оказывается :) On 11/21/2014 05:58 PM, Natalya Savenkova wrote: > Вот как раз аналогичный способ, но только Excel-2007, который xlsx > В принципе, там можно каким-нибудь утвержденным способом вставлять > данные в ячейки, ну типа $ID$, потом регулярками заменять их на нужный > контент. > Мы такую штуку в RTF проделывали, не думаю, что будет сложно в реализации. > Excel::Template - точно не умеет мержить, я по этому поводу общалась с > разрабом этого модуля, сказал "что не планировал делать и если мне так > хочется.. я могу сделать это сама" =) > > С кодами для замены можно и с обычным экселем провернуть тему, но явно > сложнее. По идее, сначала надо документ распарсить, выбрать контент > ячеек, который под замену, и записывать в такой же последовательности. > Но мерж ячеек, я уверена, будет потерян. > > > 21 ноября 2014 г., 17:49 пользователь Alexander Lourier > написал: > > Сохранял в формате OpenOffice (это zipped XML), затем XML парсился, > программно достраивался, как нужно, сохранялся обратно в XML, > зиповался, и передавался макросу в OpenOffice, чтобы пересохранить в > другой формат (в моём случае это была печатная форма в PDF). Если > устроит OpenOffice в качестве выходного формата, задача превращается > в тривиальную. > > > On Fri Nov 21 2014 at 2:20:51 PM Василий Рябов > wrote: > > Всем привет > > Есть задача генерить кучу отчетов в Excel по шаблонам, которые (в > идеале) будут загружать менеджеры. > > Нашел Excel::Template, Spreadsheet::ParseExcel::__SaveParser > > Первый вариант требует шаблонов в XML, т.е., делать их придется > всегда > мне. Плюс я не нашел возможности объединять ячейки, а в примерах > из ТЗ > это нужно. > > Второй вообще строго говоря не работает с шаблонами и, если я > правильно > понял, не гарантирует сохранения всего, что могут в документ > добавить > (графики, формулы и т.п.) > > Кто-нибудь с такой задачей сталкивался? Как выкручивались? > > Спасибо! > -- > Василий Рябов, > me на ryvasy.net > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > > > > -- Василий Рябов, me на ryvasy.net From name2rnd на gmail.com Fri Nov 21 07:34:30 2014 From: name2rnd на gmail.com (Natalya Savenkova) Date: Fri, 21 Nov 2014 18:34:30 +0300 Subject: [Moscow.pm] =?koi8-r?b?28HCzM/O2SDUwcLMycMgRXhjZWw=?= In-Reply-To: References: <546F3C1D.8000202@ryvasy.net> Message-ID: Теряться его с того, что если использовать excel2003, то его надо парсить, а потом писать заново в другую книгу. Если смержены ячейки 1,2,3 то получите контент для ячейки 1, а 2 и 3 будут считаться пустыми. Возвращает ли парсер признак для этих ячеек, что они смержены? Не уверена. Savenkova Natalya name2rnd на gmail.com http://facebook.com/name.rnd > On 21 нояб. 2014 г., at 18:00, Алексей Мышкин wrote: > > А с чего бы мерджу теряться? Вы же меняете только value, все остальное остается. > > 21 ноября 2014 г., 17:58 пользователь Natalya Savenkova написал: >> Вот как раз аналогичный способ, но только Excel-2007, который xlsx >> В принципе, там можно каким-нибудь утвержденным способом вставлять данные в ячейки, ну типа $ID$, потом регулярками заменять их на нужный контент. >> Мы такую штуку в RTF проделывали, не думаю, что будет сложно в реализации. >> Excel::Template - точно не умеет мержить, я по этому поводу общалась с разрабом этого модуля, сказал "что не планировал делать и если мне так хочется.. я могу сделать это сама" =) >> >> С кодами для замены можно и с обычным экселем провернуть тему, но явно сложнее. По идее, сначала надо документ распарсить, выбрать контент ячеек, который под замену, и записывать в такой же последовательности. Но мерж ячеек, я уверена, будет потерян. >> >> >> 21 ноября 2014 г., 17:49 пользователь Alexander Lourier написал: >>> Сохранял в формате OpenOffice (это zipped XML), затем XML парсился, программно достраивался, как нужно, сохранялся обратно в XML, зиповался, и передавался макросу в OpenOffice, чтобы пересохранить в другой формат (в моём случае это была печатная форма в PDF). Если устроит OpenOffice в качестве выходного формата, задача превращается в тривиальную. >>> >>> >>> On Fri Nov 21 2014 at 2:20:51 PM Василий Рябов wrote: >>>> Всем привет >>>> >>>> Есть задача генерить кучу отчетов в Excel по шаблонам, которые (в >>>> идеале) будут загружать менеджеры. >>>> >>>> Нашел Excel::Template, Spreadsheet::ParseExcel::SaveParser >>>> >>>> Первый вариант требует шаблонов в XML, т.е., делать их придется всегда >>>> мне. Плюс я не нашел возможности объединять ячейки, а в примерах из ТЗ >>>> это нужно. >>>> >>>> Второй вообще строго говоря не работает с шаблонами и, если я правильно >>>> понял, не гарантирует сохранения всего, что могут в документ добавить >>>> (графики, формулы и т.п.) >>>> >>>> Кто-нибудь с такой задачей сталкивался? Как выкручивались? >>>> >>>> Спасибо! >>>> -- >>>> Василий Рябов, >>>> me на ryvasy.net >>>> -- >>>> Moscow.pm mailing list >>>> moscow-pm на pm.org | http://moscow.pm.org >>> >>> -- >>> Moscow.pm mailing list >>> moscow-pm на pm.org | http://moscow.pm.org >> >> >> -- >> Moscow.pm mailing list >> moscow-pm на pm.org | http://moscow.pm.org > > > > -- > С уважением, > Мышкин Алексей. > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From parserpro на gmail.com Fri Nov 21 07:37:18 2014 From: parserpro на gmail.com (=?UTF-8?B?0JDQu9C10LrRgdC10Lkg0JzRi9GI0LrQuNC9?=) Date: Fri, 21 Nov 2014 18:37:18 +0300 Subject: [Moscow.pm] =?utf-8?b?0YjQsNCx0LvQvtC90Ysg0YLQsNCx0LvQuNGGIEV4?= =?utf-8?q?cel?= In-Reply-To: References: <546F3C1D.8000202@ryvasy.net> Message-ID: А зачем же писать новую книгу? Скопируйте файл и в нем меняйте ячейки. КМК именно это тут и имелось в виду. 21 ноября 2014 г., 18:34 пользователь Natalya Savenkova написал: > Теряться его с того, что если использовать excel2003, то его надо парсить, > а потом писать заново в другую книгу. > Если смержены ячейки 1,2,3 то получите контент для ячейки 1, а 2 и 3 будут > считаться пустыми. Возвращает ли парсер признак для этих ячеек, что они > смержены? Не уверена. > > Savenkova Natalya > name2rnd на gmail.com > http://facebook.com/name.rnd > > On 21 нояб. 2014 г., at 18:00, Алексей Мышкин wrote: > > А с чего бы мерджу теряться? Вы же меняете только value, все остальное > остается. > > 21 ноября 2014 г., 17:58 пользователь Natalya Savenkova < > name2rnd на gmail.com> написал: > >> Вот как раз аналогичный способ, но только Excel-2007, который xlsx >> В принципе, там можно каким-нибудь утвержденным способом вставлять данные >> в ячейки, ну типа $ID$, потом регулярками заменять их на нужный контент. >> Мы такую штуку в RTF проделывали, не думаю, что будет сложно в реализации. >> Excel::Template - точно не умеет мержить, я по этому поводу общалась с >> разрабом этого модуля, сказал "что не планировал делать и если мне так >> хочется.. я могу сделать это сама" =) >> >> С кодами для замены можно и с обычным экселем провернуть тему, но явно >> сложнее. По идее, сначала надо документ распарсить, выбрать контент ячеек, >> который под замену, и записывать в такой же последовательности. Но мерж >> ячеек, я уверена, будет потерян. >> >> >> 21 ноября 2014 г., 17:49 пользователь Alexander Lourier >> написал: >> >>> Сохранял в формате OpenOffice (это zipped XML), затем XML парсился, >>> программно достраивался, как нужно, сохранялся обратно в XML, зиповался, и >>> передавался макросу в OpenOffice, чтобы пересохранить в другой формат (в >>> моём случае это была печатная форма в PDF). Если устроит OpenOffice в >>> качестве выходного формата, задача превращается в тривиальную. >>> >>> >>> On Fri Nov 21 2014 at 2:20:51 PM Василий Рябов wrote: >>> >>>> Всем привет >>>> >>>> Есть задача генерить кучу отчетов в Excel по шаблонам, которые (в >>>> идеале) будут загружать менеджеры. >>>> >>>> Нашел Excel::Template, Spreadsheet::ParseExcel::SaveParser >>>> >>>> Первый вариант требует шаблонов в XML, т.е., делать их придется всегда >>>> мне. Плюс я не нашел возможности объединять ячейки, а в примерах из ТЗ >>>> это нужно. >>>> >>>> Второй вообще строго говоря не работает с шаблонами и, если я правильно >>>> понял, не гарантирует сохранения всего, что могут в документ добавить >>>> (графики, формулы и т.п.) >>>> >>>> Кто-нибудь с такой задачей сталкивался? Как выкручивались? >>>> >>>> Спасибо! >>>> -- >>>> Василий Рябов, >>>> me на ryvasy.net >>>> -- >>>> Moscow.pm mailing list >>>> moscow-pm на pm.org | http://moscow.pm.org >>>> >>> >>> -- >>> Moscow.pm mailing list >>> moscow-pm на pm.org | http://moscow.pm.org >>> >>> >> >> -- >> Moscow.pm mailing list >> moscow-pm на pm.org | http://moscow.pm.org >> >> > > > -- > С уважением, > Мышкин Алексей. > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > > -- С уважением, Мышкин Алексей. ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From name2rnd на gmail.com Fri Nov 21 07:42:00 2014 From: name2rnd на gmail.com (Natalya Savenkova) Date: Fri, 21 Nov 2014 18:42:00 +0300 Subject: [Moscow.pm] =?koi8-r?b?28HCzM/O2SDUwcLMycMgRXhjZWw=?= In-Reply-To: References: <546F3C1D.8000202@ryvasy.net> Message-ID: <1C9F0F96-E819-4BE8-9600-231D36487466@gmail.com> Опишите, более подробно, каким способом. Лучше кодом. Похоже, реализация этого способа мне неизвестна. С удовольствием посмотрю:) Savenkova Natalya name2rnd на gmail.com http://facebook.com/name.rnd > On 21 нояб. 2014 г., at 18:37, Алексей Мышкин wrote: > > А зачем же писать новую книгу? > Скопируйте файл и в нем меняйте ячейки. КМК именно это тут и имелось в виду. > > 21 ноября 2014 г., 18:34 пользователь Natalya Savenkova написал: >> Теряться его с того, что если использовать excel2003, то его надо парсить, а потом писать заново в другую книгу. >> Если смержены ячейки 1,2,3 то получите контент для ячейки 1, а 2 и 3 будут считаться пустыми. Возвращает ли парсер признак для этих ячеек, что они смержены? Не уверена. >> >> Savenkova Natalya >> name2rnd на gmail.com >> http://facebook.com/name.rnd >> >>> On 21 нояб. 2014 г., at 18:00, Алексей Мышкин wrote: >>> >>> А с чего бы мерджу теряться? Вы же меняете только value, все остальное остается. >>> >>> 21 ноября 2014 г., 17:58 пользователь Natalya Savenkova написал: >>>> Вот как раз аналогичный способ, но только Excel-2007, который xlsx >>>> В принципе, там можно каким-нибудь утвержденным способом вставлять данные в ячейки, ну типа $ID$, потом регулярками заменять их на нужный контент. >>>> Мы такую штуку в RTF проделывали, не думаю, что будет сложно в реализации. >>>> Excel::Template - точно не умеет мержить, я по этому поводу общалась с разрабом этого модуля, сказал "что не планировал делать и если мне так хочется.. я могу сделать это сама" =) >>>> >>>> С кодами для замены можно и с обычным экселем провернуть тему, но явно сложнее. По идее, сначала надо документ распарсить, выбрать контент ячеек, который под замену, и записывать в такой же последовательности. Но мерж ячеек, я уверена, будет потерян. >>>> >>>> >>>> 21 ноября 2014 г., 17:49 пользователь Alexander Lourier написал: >>>>> Сохранял в формате OpenOffice (это zipped XML), затем XML парсился, программно достраивался, как нужно, сохранялся обратно в XML, зиповался, и передавался макросу в OpenOffice, чтобы пересохранить в другой формат (в моём случае это была печатная форма в PDF). Если устроит OpenOffice в качестве выходного формата, задача превращается в тривиальную. >>>>> >>>>> >>>>> On Fri Nov 21 2014 at 2:20:51 PM Василий Рябов wrote: >>>>>> Всем привет >>>>>> >>>>>> Есть задача генерить кучу отчетов в Excel по шаблонам, которые (в >>>>>> идеале) будут загружать менеджеры. >>>>>> >>>>>> Нашел Excel::Template, Spreadsheet::ParseExcel::SaveParser >>>>>> >>>>>> Первый вариант требует шаблонов в XML, т.е., делать их придется всегда >>>>>> мне. Плюс я не нашел возможности объединять ячейки, а в примерах из ТЗ >>>>>> это нужно. >>>>>> >>>>>> Второй вообще строго говоря не работает с шаблонами и, если я правильно >>>>>> понял, не гарантирует сохранения всего, что могут в документ добавить >>>>>> (графики, формулы и т.п.) >>>>>> >>>>>> Кто-нибудь с такой задачей сталкивался? Как выкручивались? >>>>>> >>>>>> Спасибо! >>>>>> -- >>>>>> Василий Рябов, >>>>>> me на ryvasy.net >>>>>> -- >>>>>> Moscow.pm mailing list >>>>>> moscow-pm на pm.org | http://moscow.pm.org >>>>> >>>>> -- >>>>> Moscow.pm mailing list >>>>> moscow-pm на pm.org | http://moscow.pm.org >>>>> >>>> >>>> >>>> -- >>>> Moscow.pm mailing list >>>> moscow-pm на pm.org | http://moscow.pm.org >>>> >>> >>> >>> >>> -- >>> С уважением, >>> Мышкин Алексей. >>> -- >>> Moscow.pm mailing list >>> moscow-pm на pm.org | http://moscow.pm.org >> >> -- >> Moscow.pm mailing list >> moscow-pm на pm.org | http://moscow.pm.org >> > > > > -- > С уважением, > Мышкин Алексей. > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From name2rnd на gmail.com Fri Nov 21 07:36:56 2014 From: name2rnd на gmail.com (Natalya Savenkova) Date: Fri, 21 Nov 2014 18:36:56 +0300 Subject: [Moscow.pm] =?koi8-r?b?28HCzM/O2SDUwcLMycMgRXhjZWw=?= In-Reply-To: References: <546F3C1D.8000202@ryvasy.net> Message-ID: <62C5A501-6388-4D39-AEAD-8036B5FA2765@gmail.com> Может, не точно выразилась: xlsx - раззиповать, поправить xml, сложить обратно. xls - распарсить, заменить контент, записать в новый файл. Savenkova Natalya name2rnd на gmail.com http://facebook.com/name.rnd > On 21 нояб. 2014 г., at 18:34, Natalya Savenkova wrote: > > Теряться его с того, что если использовать excel2003, то его надо парсить, а потом писать заново в другую книгу. > Если смержены ячейки 1,2,3 то получите контент для ячейки 1, а 2 и 3 будут считаться пустыми. Возвращает ли парсер признак для этих ячеек, что они смержены? Не уверена. > > Savenkova Natalya > name2rnd на gmail.com > http://facebook.com/name.rnd > >> On 21 нояб. 2014 г., at 18:00, Алексей Мышкин wrote: >> >> А с чего бы мерджу теряться? Вы же меняете только value, все остальное остается. >> >> 21 ноября 2014 г., 17:58 пользователь Natalya Savenkova написал: >>> Вот как раз аналогичный способ, но только Excel-2007, который xlsx >>> В принципе, там можно каким-нибудь утвержденным способом вставлять данные в ячейки, ну типа $ID$, потом регулярками заменять их на нужный контент. >>> Мы такую штуку в RTF проделывали, не думаю, что будет сложно в реализации. >>> Excel::Template - точно не умеет мержить, я по этому поводу общалась с разрабом этого модуля, сказал "что не планировал делать и если мне так хочется.. я могу сделать это сама" =) >>> >>> С кодами для замены можно и с обычным экселем провернуть тему, но явно сложнее. По идее, сначала надо документ распарсить, выбрать контент ячеек, который под замену, и записывать в такой же последовательности. Но мерж ячеек, я уверена, будет потерян. >>> >>> >>> 21 ноября 2014 г., 17:49 пользователь Alexander Lourier написал: >>>> Сохранял в формате OpenOffice (это zipped XML), затем XML парсился, программно достраивался, как нужно, сохранялся обратно в XML, зиповался, и передавался макросу в OpenOffice, чтобы пересохранить в другой формат (в моём случае это была печатная форма в PDF). Если устроит OpenOffice в качестве выходного формата, задача превращается в тривиальную. >>>> >>>> >>>> On Fri Nov 21 2014 at 2:20:51 PM Василий Рябов wrote: >>>>> Всем привет >>>>> >>>>> Есть задача генерить кучу отчетов в Excel по шаблонам, которые (в >>>>> идеале) будут загружать менеджеры. >>>>> >>>>> Нашел Excel::Template, Spreadsheet::ParseExcel::SaveParser >>>>> >>>>> Первый вариант требует шаблонов в XML, т.е., делать их придется всегда >>>>> мне. Плюс я не нашел возможности объединять ячейки, а в примерах из ТЗ >>>>> это нужно. >>>>> >>>>> Второй вообще строго говоря не работает с шаблонами и, если я правильно >>>>> понял, не гарантирует сохранения всего, что могут в документ добавить >>>>> (графики, формулы и т.п.) >>>>> >>>>> Кто-нибудь с такой задачей сталкивался? Как выкручивались? >>>>> >>>>> Спасибо! >>>>> -- >>>>> Василий Рябов, >>>>> me на ryvasy.net >>>>> -- >>>>> Moscow.pm mailing list >>>>> moscow-pm на pm.org | http://moscow.pm.org >>>> >>>> -- >>>> Moscow.pm mailing list >>>> moscow-pm на pm.org | http://moscow.pm.org >>>> >>> >>> >>> -- >>> Moscow.pm mailing list >>> moscow-pm на pm.org | http://moscow.pm.org >>> >> >> >> >> -- >> С уважением, >> Мышкин Алексей. >> -- >> Moscow.pm mailing list >> moscow-pm на pm.org | http://moscow.pm.org ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From mi на ya.ru Sat Nov 22 16:05:15 2014 From: mi на ya.ru (Nikolay Mishin) Date: Sun, 23 Nov 2014 03:05:15 +0300 Subject: [Moscow.pm] use Data::TreeDumper ; Message-ID: <1276361416701115@web28m.yandex.ru> Дорогой MoscowPM занимаясь рисованием дерева из элементов наткнулся на замечательный модуль use Data::TreeDumper; print DumpTree($all, 'all') ; для отладки он оказался лучше, чем даже use Data::Printer { output => 'stdout', hash_separator => ': ', return_value => 'pass', }; Так, например use Data::TreeDumper; # Create an reference to an array of array references. $ref_to_AoA = [ [ "fred", "barney", "pebbles", "bamm bamm", "dino", ], [ "homer", "bart", "marge", "maggie", ], [ "george", "jane", "elroy", "judy", ], ]; print DumpTree( $ref_to_AoA, 'ref_to_AoA' ); ref_to_AoA |- 0 [A1] | |- 0 = fred [S2] | |- 1 = barney [S3] | |- 2 = pebbles [S4] | |- 3 = bamm bamm [S5] | `- 4 = dino [S6] |- 1 [A7] | |- 0 = homer [S8] | |- 1 = bart [S9] | |- 2 = marge [S10] | `- 3 = maggie [S11] `- 2 [A12] |- 0 = george [S13] |- 1 = jane [S14] |- 2 = elroy [S15] `- 3 = judy [S16] намного нагляднее, чем Data::Dumper выдаст -- С уважением Николай Мишин From timur.nozadze на gmail.com Sun Nov 23 02:50:33 2014 From: timur.nozadze на gmail.com (=?UTF-8?B?0KLQuNC80YPRgCDQndC+0LfQsNC00LfQtQ==?=) Date: Sun, 23 Nov 2014 14:50:33 +0400 Subject: [Moscow.pm] =?utf-8?b?RndkOiBbU1BiLXBtXSDQktC+0YDQutGI0L7QvyBT?= =?utf-8?q?aint_Perl_6?= In-Reply-To: <1415918257.319044.9706.7694@mail.rambler.ru> References: <1415918257.319044.9706.7694@mail.rambler.ru> Message-ID: Снова всех приглашаем в Питер! ---------- Пересылаемое сообщение ---------- От кого: Сергей Романов Дата: 14 ноября 2014 г., 1:37 Тема: [SPb-pm] Воркшоп Saint Perl 6 Кому: Spb Pm Сообщество Perl-программистов Санкт-Петербурга с радостью сообщает о проведении шестого ежегодного воркшопа Saint Perl. По традиции дата конференции приурочена к моменту выхода первой версии Perl ? 18 декабря 1987 года. Но в этом году мы решили не ограничиваться только докладами специалистов и хотим провести хакатон. Таким образом, в этом году Saint Perl будет проходить в течение двух дней, субботы и воскресенья 20 и 21 декабря. Участие в конференции бесплатное. О месте проведения будет объявлено позднее ? следите за информацией на сайте. Организаторы рады сотрудничеству со спонсорами, которые заинтересованы в поддержке нашего мероприятия. Сайт конференции: http://event.yapcrussia.org/saintperl6/. Электронная почта организаторов: saintperl_orgs на yapcrussia.org . До встречи в Северной столице! _______________________________________________ Spb-pm mailing list Spb-pm на pm.org http://mail.pm.org/mailman/listinfo/spb-pm -- С уважением, Тимур Нозадзе ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From shafiev на gmail.com Sun Nov 23 02:51:21 2014 From: shafiev на gmail.com (Naim Shafiev) Date: Sun, 23 Nov 2014 14:51:21 +0400 Subject: [Moscow.pm] use Data::TreeDumper ; In-Reply-To: <1276361416701115@web28m.yandex.ru> References: <1276361416701115@web28m.yandex.ru> Message-ID: ок спасиб. On Nov 23, 2014 4:05 AM, "Nikolay Mishin" wrote: > Дорогой MoscowPM > занимаясь рисованием дерева из элементов > наткнулся на замечательный модуль > use Data::TreeDumper; > print DumpTree($all, 'all') ; > для отладки он оказался лучше, чем даже > > use Data::Printer { > output => 'stdout', > hash_separator => ': ', > return_value => 'pass', > }; > > Так, например > > use Data::TreeDumper; > # Create an reference to an array of array references. > $ref_to_AoA = [ > [ "fred", "barney", "pebbles", "bamm bamm", "dino", ], > [ "homer", "bart", "marge", "maggie", ], > [ "george", "jane", "elroy", "judy", ], > ]; > > print DumpTree( $ref_to_AoA, 'ref_to_AoA' ); > > ref_to_AoA > |- 0 [A1] > | |- 0 = fred [S2] > | |- 1 = barney [S3] > | |- 2 = pebbles [S4] > | |- 3 = bamm bamm [S5] > | `- 4 = dino [S6] > |- 1 [A7] > | |- 0 = homer [S8] > | |- 1 = bart [S9] > | |- 2 = marge [S10] > | `- 3 = maggie [S11] > `- 2 [A12] > |- 0 = george [S13] > |- 1 = jane [S14] > |- 2 = elroy [S15] > `- 3 = judy [S16] > > намного нагляднее, чем Data::Dumper > > > выдаст > > > > > > -- > С уважением > Николай Мишин > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From foxcool333 на gmail.com Sun Nov 23 05:07:27 2014 From: foxcool333 на gmail.com (Foxcool) Date: Sun, 23 Nov 2014 16:07:27 +0300 Subject: [Moscow.pm] =?utf-8?b?RndkOiBbU1BiLXBtXSDQktC+0YDQutGI0L7QvyBT?= =?utf-8?q?aint_Perl_6?= In-Reply-To: References: <1415918257.319044.9706.7694@mail.rambler.ru> Message-ID: <5471DC0F.5090601@gmail.com> 23.11.2014 13:50, Тимур Нозадзе пишет: > Снова всех приглашаем в Питер! > > ---------- Пересылаемое сообщение ---------- > От кого: *Сергей Романов* > > Дата: 14 ноября 2014 г., 1:37 > Тема: [SPb-pm] Воркшоп Saint Perl 6 > Кому: Spb Pm > > > > Сообщество Perl-программистов Санкт-Петербурга с радостью сообщает о > проведении шестого ежегодного воркшопа Saint Perl. По традиции дата > конференции приурочена к моменту выхода первой версии Perl ? 18 > декабря 1987 года. Но в этом году мы решили не ограничиваться только > докладами специалистов и хотим провести хакатон. > > Таким образом, в этом году Saint Perl будет проходить в течение двух > дней, субботы и воскресенья 20 и 21 декабря. Участие в конференции > бесплатное. > > О месте проведения будет объявлено позднее ? следите за информацией на > сайте. > > Организаторы рады сотрудничеству со спонсорами, которые заинтересованы > в поддержке нашего мероприятия. > > Сайт конференции: http://event.yapcrussia.org/saintperl6/. > > Электронная почта организаторов: saintperl_orgs на yapcrussia.org > . > > До встречи в Северной столице! > > > _______________________________________________ > Spb-pm mailing list > Spb-pm на pm.org > http://mail.pm.org/mailman/listinfo/spb-pm > > > > > -- > С уважением, Тимур Нозадзе > > А что понимается под хакатоном? Я как-то пришел на какой-то цивилхаккинг хакатон. ПОвелся на название. Думал там будут обсуждатьи мутить распределенные аналоги чего-то или обсуждать установки CJDNS нод там. Ну т.е. вайт хакинг как он есть. А выяснилось, что там собрались люди, которые предлагают идеи сделать очередной велосипед (типа поиск сортиров поблизости, вместо POI на OSM.ORG), ну и кодеры, которые для програминга этого говна готовы сидеть всю ночь в баре и тупить вместо того, чтобы дома нормально спать. ((: Короче какой-то шляпный закос под кремниевую долину. -- http://foxcool.ru foxcool на jabber.ru ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From timur.nozadze на gmail.com Sun Nov 23 05:18:42 2014 From: timur.nozadze на gmail.com (=?UTF-8?B?0KLQuNC80YPRgCDQndC+0LfQsNC00LfQtQ==?=) Date: Sun, 23 Nov 2014 17:18:42 +0400 Subject: [Moscow.pm] =?utf-8?b?RndkOiBbU1BiLXBtXSDQktC+0YDQutGI0L7QvyBT?= =?utf-8?q?aint_Perl_6?= In-Reply-To: <5471DC0F.5090601@gmail.com> References: <1415918257.319044.9706.7694@mail.rambler.ru> <5471DC0F.5090601@gmail.com> Message-ID: Ну, вообще, даже если тема хакатона неинтересна кому-то лично, и даже если она просто уныла, он не перестаёт от этого быть хакатоном. ;) Конкретно тема хакатона на Saint Perl пока прорабатывается, подробнее расскажем чуть позже. CJDNS ноды вряд ли будут. ) 23 ноября 2014 г., 16:07 пользователь Foxcool написал: > 23.11.2014 13:50, Тимур Нозадзе пишет: > > Снова всех приглашаем в Питер! > > ---------- Пересылаемое сообщение ---------- > От кого: Сергей Романов > Дата: 14 ноября 2014 г., 1:37 > Тема: [SPb-pm] Воркшоп Saint Perl 6 > Кому: Spb Pm > > > Сообщество Perl-программистов Санкт-Петербурга с радостью сообщает о > проведении шестого ежегодного воркшопа Saint Perl. По традиции дата > конференции приурочена к моменту выхода первой версии Perl ? 18 декабря > 1987 года. Но в этом году мы решили не ограничиваться только докладами > специалистов и хотим провести хакатон. > > Таким образом, в этом году Saint Perl будет проходить в течение двух дней, > субботы и воскресенья 20 и 21 декабря. Участие в конференции бесплатное. > > О месте проведения будет объявлено позднее ? следите за информацией на > сайте. > > Организаторы рады сотрудничеству со спонсорами, которые заинтересованы в > поддержке нашего мероприятия. > > Сайт конференции: http://event.yapcrussia.org/saintperl6/. > > Электронная почта организаторов: saintperl_orgs на yapcrussia.org > . > > До встречи в Северной столице! > > _______________________________________________ > Spb-pm mailing list > Spb-pm на pm.org > http://mail.pm.org/mailman/listinfo/spb-pm > > > > > -- > С уважением, Тимур Нозадзе > > > А что понимается под хакатоном? > > Я как-то пришел на какой-то цивилхаккинг хакатон. ПОвелся на название. > Думал там будут обсуждатьи мутить распределенные аналоги чего-то или > обсуждать установки CJDNS нод там. Ну т.е. вайт хакинг как он есть. А > выяснилось, что там собрались люди, которые предлагают идеи сделать > очередной велосипед (типа поиск сортиров поблизости, вместо POI на OSM.ORG), > ну и кодеры, которые для програминга этого говна готовы сидеть всю ночь в > баре и тупить вместо того, чтобы дома нормально спать. ((: > > Короче какой-то шляпный закос под кремниевую долину. > > -- http://foxcool.rufoxcool на jabber.ru > > -- С уважением, Тимур Нозадзе ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From timur.nozadze на gmail.com Sun Nov 23 05:20:48 2014 From: timur.nozadze на gmail.com (=?UTF-8?B?0KLQuNC80YPRgCDQndC+0LfQsNC00LfQtQ==?=) Date: Sun, 23 Nov 2014 17:20:48 +0400 Subject: [Moscow.pm] =?utf-8?b?RndkOiBbU1BiLXBtXSDQktC+0YDQutGI0L7QvyBT?= =?utf-8?q?aint_Perl_6?= In-Reply-To: References: <1415918257.319044.9706.7694@mail.rambler.ru> <5471DC0F.5090601@gmail.com> Message-ID: Собственно, если есть какие-то конкретные идеи, то можно предлагать. 23 ноября 2014 г., 16:18 пользователь Тимур Нозадзе написал: > Ну, вообще, даже если тема хакатона неинтересна кому-то лично, и даже если > она просто уныла, он не перестаёт от этого быть хакатоном. ;) > > Конкретно тема хакатона на Saint Perl пока прорабатывается, подробнее > расскажем чуть позже. CJDNS ноды вряд ли будут. ) > > 23 ноября 2014 г., 16:07 пользователь Foxcool > написал: > > 23.11.2014 13:50, Тимур Нозадзе пишет: >> >> Снова всех приглашаем в Питер! >> >> ---------- Пересылаемое сообщение ---------- >> От кого: Сергей Романов >> Дата: 14 ноября 2014 г., 1:37 >> Тема: [SPb-pm] Воркшоп Saint Perl 6 >> Кому: Spb Pm >> >> >> Сообщество Perl-программистов Санкт-Петербурга с радостью сообщает о >> проведении шестого ежегодного воркшопа Saint Perl. По традиции дата >> конференции приурочена к моменту выхода первой версии Perl ? 18 декабря >> 1987 года. Но в этом году мы решили не ограничиваться только докладами >> специалистов и хотим провести хакатон. >> >> Таким образом, в этом году Saint Perl будет проходить в течение двух >> дней, субботы и воскресенья 20 и 21 декабря. Участие в конференции >> бесплатное. >> >> О месте проведения будет объявлено позднее ? следите за информацией на >> сайте. >> >> Организаторы рады сотрудничеству со спонсорами, которые заинтересованы в >> поддержке нашего мероприятия. >> >> Сайт конференции: http://event.yapcrussia.org/saintperl6/. >> >> Электронная почта организаторов: saintperl_orgs на yapcrussia.org >> . >> >> До встречи в Северной столице! >> >> _______________________________________________ >> Spb-pm mailing list >> Spb-pm на pm.org >> http://mail.pm.org/mailman/listinfo/spb-pm >> >> >> >> >> -- >> С уважением, Тимур Нозадзе >> >> >> А что понимается под хакатоном? >> >> Я как-то пришел на какой-то цивилхаккинг хакатон. ПОвелся на название. >> Думал там будут обсуждатьи мутить распределенные аналоги чего-то или >> обсуждать установки CJDNS нод там. Ну т.е. вайт хакинг как он есть. А >> выяснилось, что там собрались люди, которые предлагают идеи сделать >> очередной велосипед (типа поиск сортиров поблизости, вместо POI на >> OSM.ORG), ну и кодеры, которые для програминга этого говна готовы сидеть >> всю ночь в баре и тупить вместо того, чтобы дома нормально спать. ((: >> >> Короче какой-то шляпный закос под кремниевую долину. >> >> -- http://foxcool.rufoxcool на jabber.ru >> >> > > > -- > С уважением, Тимур Нозадзе > -- С уважением, Тимур Нозадзе ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From name2rnd на gmail.com Mon Nov 24 10:14:12 2014 From: name2rnd на gmail.com (Natalya Savenkova) Date: Mon, 24 Nov 2014 21:14:12 +0300 Subject: [Moscow.pm] mod_perl + Object Oriented Message-ID: Здравствуй, любимое сообщество! Подскажи мне, пожалуйста, что мне надо почитать/посмотреть, чтобы понять следующую вещь. Вот есть у меня mod_perl с handlers Есть у меня там функция такая, которая дальше вызывается в обработчиках, она не вызывается при запуске, а только когда пришел первый запрос: package MyLib::Handler; use MyLib::Obj; sub obj { our $obj; warn 'obj ', $obj, $obj->{ pid } if $obj; return $obj if $obj; $obj = MyLib::Obj->new( pid => $$); } Вот этот Obj; package MyLib::Obj; sub new { my $package = shift; my $opt = {@_}; my $self = {}; $self->{ pid } = $opt->{ pid }; return bless($self, $package); } pid сюда добавлен для дебага, чтобы в логах было видно, кто создал obj и обвес на warn BEGIN { $SIG{'__WARN__'} = sub { warn $$.' --> '.$_[0] ; }; } И получается, что в логах выглядит вот так 16373 --> obj MyLib::Obj=HASH(0x80461c420) 16373 16372 --> obj MyLib::Obj=HASH(0x80461c420) 16372 Почему тут одинаковые адреса? Сообщество, помоги! ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From victor на vsespb.ru Mon Nov 24 10:46:54 2014 From: victor на vsespb.ru (Victor Efimov) Date: Mon, 24 Nov 2014 22:46:54 +0400 Subject: [Moscow.pm] mod_perl + Object Oriented In-Reply-To: References: Message-ID: Ничего не знаю про mod_perl, но адреса и так одинаковые у разных процессов скопированных из одного (это в случае с fork) $ perl -E 'fork; say $$, " ", {}' 27667 HASH(0xf0b998) 27668 HASH(0xf0b998) 24 ноября 2014 г., 21:14 пользователь Natalya Savenkova написал: > Здравствуй, любимое сообщество! > Подскажи мне, пожалуйста, что мне надо почитать/посмотреть, чтобы понять > следующую вещь. > > Вот есть у меня mod_perl с handlers > Есть у меня там функция такая, которая дальше вызывается в обработчиках, она > не вызывается при запуске, а только когда пришел первый запрос: > > package MyLib::Handler; > use MyLib::Obj; > sub obj { > our $obj; > warn 'obj ', $obj, $obj->{ pid } if $obj; > return $obj if $obj; > $obj = MyLib::Obj->new( pid => $$); > } > > Вот этот Obj; > package MyLib::Obj; > sub new { > my $package = shift; > my $opt = {@_}; > my $self = {}; > $self->{ pid } = $opt->{ pid }; > return bless($self, $package); > } > > pid сюда добавлен для дебага, чтобы в логах было видно, кто создал obj > > и обвес на warn > BEGIN { > $SIG{'__WARN__'} = sub { > warn $$.' --> '.$_[0] ; > }; > } > > И получается, что в логах выглядит вот так > > 16373 --> obj MyLib::Obj=HASH(0x80461c420) 16373 > 16372 --> obj MyLib::Obj=HASH(0x80461c420) 16372 > > Почему тут одинаковые адреса? > Сообщество, помоги! > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > From victor на vsespb.ru Mon Nov 24 10:49:18 2014 From: victor на vsespb.ru (Victor Efimov) Date: Mon, 24 Nov 2014 22:49:18 +0400 Subject: [Moscow.pm] mod_perl + Object Oriented In-Reply-To: References: Message-ID: Если при этом, после форка, в процессах будет выделяться память разное количество раз и/или разных объёмов, то конечно, будут разные адреса. $ perl -E 'my $x = {} if fork; say $$, " ", {}' 27714 HASH(0xc66b90) 27715 HASH(0xc66998) 24 ноября 2014 г., 21:46 пользователь Victor Efimov написал: > Ничего не знаю про mod_perl, но адреса и так одинаковые у разных > процессов скопированных из одного (это в случае с fork) > > $ perl -E 'fork; say $$, " ", {}' > 27667 HASH(0xf0b998) > 27668 HASH(0xf0b998) > > > > 24 ноября 2014 г., 21:14 пользователь Natalya Savenkova > написал: >> Здравствуй, любимое сообщество! >> Подскажи мне, пожалуйста, что мне надо почитать/посмотреть, чтобы понять >> следующую вещь. >> >> Вот есть у меня mod_perl с handlers >> Есть у меня там функция такая, которая дальше вызывается в обработчиках, она >> не вызывается при запуске, а только когда пришел первый запрос: >> >> package MyLib::Handler; >> use MyLib::Obj; >> sub obj { >> our $obj; >> warn 'obj ', $obj, $obj->{ pid } if $obj; >> return $obj if $obj; >> $obj = MyLib::Obj->new( pid => $$); >> } >> >> Вот этот Obj; >> package MyLib::Obj; >> sub new { >> my $package = shift; >> my $opt = {@_}; >> my $self = {}; >> $self->{ pid } = $opt->{ pid }; >> return bless($self, $package); >> } >> >> pid сюда добавлен для дебага, чтобы в логах было видно, кто создал obj >> >> и обвес на warn >> BEGIN { >> $SIG{'__WARN__'} = sub { >> warn $$.' --> '.$_[0] ; >> }; >> } >> >> И получается, что в логах выглядит вот так >> >> 16373 --> obj MyLib::Obj=HASH(0x80461c420) 16373 >> 16372 --> obj MyLib::Obj=HASH(0x80461c420) 16372 >> >> Почему тут одинаковые адреса? >> Сообщество, помоги! >> >> -- >> Moscow.pm mailing list >> moscow-pm на pm.org | http://moscow.pm.org >> From name2rnd на gmail.com Mon Nov 24 11:10:57 2014 From: name2rnd на gmail.com (Natalya Savenkova) Date: Mon, 24 Nov 2014 22:10:57 +0300 Subject: [Moscow.pm] mod_perl + Object Oriented In-Reply-To: References: Message-ID: <9B6EF099-439B-4019-A76F-E65D592EA01A@gmail.com> Развеяли мои сомнения, а-то я начала думать, что схожу с ума. Savenkova Natalya name2rnd на gmail.com http://facebook.com/name.rnd > On 24 нояб. 2014 г., at 21:49, Victor Efimov wrote: > > Если при этом, после форка, в процессах будет выделяться память разное > количество раз и/или разных объёмов, то конечно, будут разные адреса. > > $ perl -E 'my $x = {} if fork; say $$, " ", {}' > 27714 HASH(0xc66b90) > 27715 HASH(0xc66998) > > > > 24 ноября 2014 г., 21:46 пользователь Victor Efimov написал: >> Ничего не знаю про mod_perl, но адреса и так одинаковые у разных >> процессов скопированных из одного (это в случае с fork) >> >> $ perl -E 'fork; say $$, " ", {}' >> 27667 HASH(0xf0b998) >> 27668 HASH(0xf0b998) >> >> >> >> 24 ноября 2014 г., 21:14 пользователь Natalya Savenkova >> написал: >>> Здравствуй, любимое сообщество! >>> Подскажи мне, пожалуйста, что мне надо почитать/посмотреть, чтобы понять >>> следующую вещь. >>> >>> Вот есть у меня mod_perl с handlers >>> Есть у меня там функция такая, которая дальше вызывается в обработчиках, она >>> не вызывается при запуске, а только когда пришел первый запрос: >>> >>> package MyLib::Handler; >>> use MyLib::Obj; >>> sub obj { >>> our $obj; >>> warn 'obj ', $obj, $obj->{ pid } if $obj; >>> return $obj if $obj; >>> $obj = MyLib::Obj->new( pid => $$); >>> } >>> >>> Вот этот Obj; >>> package MyLib::Obj; >>> sub new { >>> my $package = shift; >>> my $opt = {@_}; >>> my $self = {}; >>> $self->{ pid } = $opt->{ pid }; >>> return bless($self, $package); >>> } >>> >>> pid сюда добавлен для дебага, чтобы в логах было видно, кто создал obj >>> >>> и обвес на warn >>> BEGIN { >>> $SIG{'__WARN__'} = sub { >>> warn $$.' --> '.$_[0] ; >>> }; >>> } >>> >>> И получается, что в логах выглядит вот так >>> >>> 16373 --> obj MyLib::Obj=HASH(0x80461c420) 16373 >>> 16372 --> obj MyLib::Obj=HASH(0x80461c420) 16372 >>> >>> Почему тут одинаковые адреса? >>> Сообщество, помоги! >>> >>> -- >>> Moscow.pm mailing list >>> moscow-pm на pm.org | http://moscow.pm.org > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org From andrei.protasovitski на gmail.com Tue Nov 25 07:15:14 2014 From: andrei.protasovitski на gmail.com (Andrei) Date: Tue, 25 Nov 2014 16:15:14 +0100 Subject: [Moscow.pm] =?utf-8?b?0YjQsNCx0LvQvtC90Ysg0YLQsNCx0LvQuNGGIEV4?= =?utf-8?q?cel?= In-Reply-To: References: <546F3C1D.8000202@ryvasy.net> Message-ID: 21 ноября 2014 г., 16:01 пользователь Anatoly Y написал: > Мне кажется это всё проще реализовать на VBA for Excel, там есть всё > необходимое :) > +1 Будет работать с любыми фантазиями создателей шаблонов. Правда, нужно будет выделить машину (возможно, виртуальную) для генерации файлов и купить сам Excel. Но думаю, поддержка такого решения будет дешевле, чем Perl'овая. Имхо, конечно. > > 21 ноября 2014 г., 20:58 пользователь Natalya Savenkova < > name2rnd на gmail.com> написал: > > Вот как раз аналогичный способ, но только Excel-2007, который xlsx >> В принципе, там можно каким-нибудь утвержденным способом вставлять данные >> в ячейки, ну типа $ID$, потом регулярками заменять их на нужный контент. >> Мы такую штуку в RTF проделывали, не думаю, что будет сложно в реализации. >> Excel::Template - точно не умеет мержить, я по этому поводу общалась с >> разрабом этого модуля, сказал "что не планировал делать и если мне так >> хочется.. я могу сделать это сама" =) >> >> С кодами для замены можно и с обычным экселем провернуть тему, но явно >> сложнее. По идее, сначала надо документ распарсить, выбрать контент ячеек, >> который под замену, и записывать в такой же последовательности. Но мерж >> ячеек, я уверена, будет потерян. >> >> >> 21 ноября 2014 г., 17:49 пользователь Alexander Lourier >> написал: >> >> Сохранял в формате OpenOffice (это zipped XML), затем XML парсился, >>> программно достраивался, как нужно, сохранялся обратно в XML, зиповался, и >>> передавался макросу в OpenOffice, чтобы пересохранить в другой формат (в >>> моём случае это была печатная форма в PDF). Если устроит OpenOffice в >>> качестве выходного формата, задача превращается в тривиальную. >>> >>> >>> On Fri Nov 21 2014 at 2:20:51 PM Василий Рябов wrote: >>> >>>> Всем привет >>>> >>>> Есть задача генерить кучу отчетов в Excel по шаблонам, которые (в >>>> идеале) будут загружать менеджеры. >>>> >>>> Нашел Excel::Template, Spreadsheet::ParseExcel::SaveParser >>>> >>>> Первый вариант требует шаблонов в XML, т.е., делать их придется всегда >>>> мне. Плюс я не нашел возможности объединять ячейки, а в примерах из ТЗ >>>> это нужно. >>>> >>>> Второй вообще строго говоря не работает с шаблонами и, если я правильно >>>> понял, не гарантирует сохранения всего, что могут в документ добавить >>>> (графики, формулы и т.п.) >>>> >>>> Кто-нибудь с такой задачей сталкивался? Как выкручивались? >>>> >>>> Спасибо! >>>> -- >>>> Василий Рябов, >>>> me на ryvasy.net >>>> -- >>>> Moscow.pm mailing list >>>> moscow-pm на pm.org | http://moscow.pm.org >>>> >>> >>> -- >>> Moscow.pm mailing list >>> moscow-pm на pm.org | http://moscow.pm.org >>> >>> >> >> -- >> Moscow.pm mailing list >> moscow-pm на pm.org | http://moscow.pm.org >> >> > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > > -- Andrei Protasovitski < andrei[dot]protasovitski[at]gmail[dot]com > Diemen, Netherlands ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From theathlet на yandex.ru Tue Nov 25 07:28:28 2014 From: theathlet на yandex.ru (TheAthlete) Date: Tue, 25 Nov 2014 18:28:28 +0300 Subject: [Moscow.pm] =?utf-8?b?0YjQsNCx0LvQvtC90Ysg0YLQsNCx0LvQuNGGIEV4?= =?utf-8?q?cel?= In-Reply-To: References: <546F3C1D.8000202@ryvasy.net> Message-ID: Я тоже думаю, что лучше использовать VBA, т.к. шаблоны для того и создавались, чтобы можно было с помощью VBA запрограммировать генерацию n-ого количество отчетов. Andrei писал(а) в своём письме Tue, 25 Nov 2014 18:15:14 +0300: > 21 ноября 2014 г., 16:01 пользователь Anatoly Y написал: > >> Мне кажется это всё проще реализовать на VBA for Excel, там есть всё >> необходимое :) >> > > +1 > > > Будет работать с любыми фантазиями создателей шаблонов. Правда, нужно > будет > выделить машину (возможно, виртуальную) для генерации файлов и купить сам > Excel. Но думаю, поддержка такого решения будет дешевле, чем Perl'овая. > > Имхо, конечно. > > From dsimonov на gmail.com Tue Nov 25 09:12:49 2014 From: dsimonov на gmail.com (Dmitry Simonov) Date: Tue, 25 Nov 2014 21:12:49 +0400 Subject: [Moscow.pm] =?utf-8?b?0JrQsNC30LDQvdGMISBJIG5lZWQgaGVscCE=?= Message-ID: Коллеги! Нет ли знакомых в Казани? Нужна разовая необременительная услуга! Напишите в личку, plz -- Dmitry V. Simonov ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From r.khamidullina на corp.mail.ru Tue Nov 25 09:13:48 2014 From: r.khamidullina на corp.mail.ru (Khamidullina Raikhana) Date: Tue, 25 Nov 2014 17:13:48 +0000 Subject: [Moscow.pm] =?utf-8?b?0JrQsNC30LDQvdGMISBJIG5lZWQgaGVscCE=?= In-Reply-To: References: Message-ID: <47FBB8ACF5894B42B8580D8BEB6A5821CC1AD9@M2EMBS3.mail.msk> Не знаю, куда там в личку писать) я из Казани С уважением, Райхана Хамидуллина Специалист по организации мероприятий раб. +7(495)7256357 внутренний тел. 2386 моб. +7(925) 0391539 e-mail: r.khamidullina на corp.mail.ru agent: r.khamidullina на corp.mail.ru From: Moscow-pm [mailto:moscow-pm-bounces+r.khamidullina=corp.mail.ru на pm.org] On Behalf Of Dmitry Simonov Sent: Tuesday, November 25, 2014 8:13 PM To: Moscow.pm group Subject: [Moscow.pm] Казань! I need help! Коллеги! Нет ли знакомых в Казани? Нужна разовая необременительная услуга! Напишите в личку, plz -- Dmitry V. Simonov ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From dsimonov на gmail.com Tue Nov 25 09:19:08 2014 From: dsimonov на gmail.com (Dmitry Simonov) Date: Tue, 25 Nov 2014 21:19:08 +0400 Subject: [Moscow.pm] =?utf-8?b?0JrQsNC30LDQvdGMISBJIG5lZWQgaGVscCE=?= In-Reply-To: <47FBB8ACF5894B42B8580D8BEB6A5821CC1AD9@M2EMBS3.mail.msk> References: <47FBB8ACF5894B42B8580D8BEB6A5821CC1AD9@M2EMBS3.mail.msk> Message-ID: Ура! Звоню на мобильник! вторник, 25 ноября 2014 г. пользователь Khamidullina Raikhana написал: > Не знаю, куда там в личку писать) я из Казани > > С уважением, > > Райхана Хамидуллина > > Специалист по организации мероприятий > > раб. +7(495)7256357 внутренний тел. 2386 > > моб. +7(925) 0391539 > > e-mail: r.khamidullina на corp.mail.ru > > > agent: r.khamidullina на corp.mail.ru > > > > > *From:* Moscow-pm [mailto:moscow-pm-bounces+r.khamidullina > = > corp.mail.ru на pm.org ] > *On Behalf Of *Dmitry Simonov > *Sent:* Tuesday, November 25, 2014 8:13 PM > *To:* Moscow.pm group > *Subject:* [Moscow.pm] Казань! I need help! > > > > Коллеги! Нет ли знакомых в Казани? Нужна разовая необременительная услуга! > Напишите в личку, plz > > -- > Dmitry V. Simonov > -- Dmitry V. Simonov ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From scripter.vrn на gmail.com Wed Nov 26 09:01:33 2014 From: scripter.vrn на gmail.com (=?UTF-8?B?0JLQsNC00LjQvCDQktC70LDRgdC+0LI=?=) Date: Wed, 26 Nov 2014 21:01:33 +0400 Subject: [Moscow.pm] =?utf-8?b?0JHQsNCzINCyIEpTT046OlhTPw==?= Message-ID: Исследуя новый сериализатор в JSON::XS наткнулся: $ echo 'use strict; use warnings; use feature "say"; use JSON::XS; my $j=JSON::XS->new->allow_tags; say "JSON::XS: $JSON::XS::VERSION"; say "Types::Serialiser: $Types::Serialiser::VERSION"; my $t = $j->encode( Foo->new ); say $t; my @t = $j->encode( Foo->new ); package Foo; sub new { bless {}, $_[0]; } sub FREEZE { ( 123, 456 ); }' | perl *JSON::XS: 3.01* *Types::Serialiser: 1.0* *("Foo")[123,456]* *panic: attempt to copy freed scalar c37a18 to c37a00 at - line 14.* $ perl -MJSON::XS -wE 'say JSON::XS->new->allow_tags->encode( bless {}, Foo ); package Foo; sub FREEZE{ return 123 }' *Use of uninitialized value in say at -e line 1.* *("Foo")[123]* $ perl -MJSON::XS -wE 'say scalar( JSON::XS->new->allow_tags->encode( bless {}, Foo )); package Foo; sub FREEZE{ return 123 }' *("Foo")[123]* Проверили на разных машинах и на разных версиях perl-а - одно и то же. -- С уважением, Вадим Власов т.: +7 (916) 424-00-72 ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From akzhan.abdulin на gmail.com Wed Nov 26 13:33:26 2014 From: akzhan.abdulin на gmail.com (Akzhan Abdulin) Date: Thu, 27 Nov 2014 00:33:26 +0300 Subject: [Moscow.pm] =?utf-8?b?0JHQsNCzINCyIEpTT046OlhTPw==?= In-Reply-To: References: Message-ID: Мне кажется, это надо писать автору, нет?) 2014-11-26 20:01 GMT+03:00 Вадим Власов : > Исследуя новый сериализатор в JSON::XS наткнулся: > > $ echo 'use strict; > use warnings; > use feature "say"; > > use JSON::XS; > my $j=JSON::XS->new->allow_tags; > > say "JSON::XS: $JSON::XS::VERSION"; > say "Types::Serialiser: $Types::Serialiser::VERSION"; > > my $t = $j->encode( Foo->new ); > say $t; > > my @t = $j->encode( Foo->new ); > > package Foo; > sub new { bless {}, $_[0]; } > sub FREEZE { ( 123, 456 ); }' | perl > *JSON::XS: 3.01* > *Types::Serialiser: 1.0* > *("Foo")[123,456]* > *panic: attempt to copy freed scalar c37a18 to c37a00 at - line 14.* > > $ perl -MJSON::XS -wE 'say JSON::XS->new->allow_tags->encode( bless {}, > Foo ); package Foo; sub FREEZE{ return 123 }' > *Use of uninitialized value in say at -e line 1.* > *("Foo")[123]* > > $ perl -MJSON::XS -wE 'say scalar( JSON::XS->new->allow_tags->encode( > bless {}, Foo )); package Foo; sub FREEZE{ return 123 }' > *("Foo")[123]* > > Проверили на разных машинах и на разных версиях perl-а - одно и то же. > > -- > С уважением, > Вадим Власов > т.: +7 (916) 424-00-72 > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > > ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From scripter.vrn на gmail.com Wed Nov 26 15:12:03 2014 From: scripter.vrn на gmail.com (=?UTF-8?B?0JLQsNC00LjQvCDQktC70LDRgdC+0LI=?=) Date: Thu, 27 Nov 2014 03:12:03 +0400 Subject: [Moscow.pm] =?utf-8?b?0JHQsNCzINCyIEpTT046OlhTPw==?= In-Reply-To: References: Message-ID: 2014-11-27 0:33 GMT+03:00 Akzhan Abdulin : > Мне кажется, это надо писать автору, нет?) > Написал, Леман говорит, нефиг юзать в списочном конексте :) Ну а как не юзать-то? Это ж хеш не проинициализировать, аргументом функции не передать. Везде что ли в скаляр копировать предварительно? Ну хозяин - барин, уж как решит. -- С уважением, Вадим Власов т.: +7 (916) 424-00-72 ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From sergey.aleynikov на gmail.com Wed Nov 26 15:13:15 2014 From: sergey.aleynikov на gmail.com (Sergey Aleynikov) Date: Thu, 27 Nov 2014 03:13:15 +0400 Subject: [Moscow.pm] =?utf-8?b?0JHQsNCzINCyIEpTT046OlhTPw==?= In-Reply-To: References: Message-ID: Добрый день, Что именно и когда ответит Леман - непредсказуемо) Я нашел, как минимум, еще два места, где модулю сносит стек. Прислать патч, или попробуете сначала с ним списаться? Best regards, Sergey Aleynikov 2014-11-26 20:01 GMT+03:00 Вадим Власов : > Исследуя новый сериализатор в JSON::XS наткнулся: > > $ echo 'use strict; > use warnings; > use feature "say"; > > use JSON::XS; > my $j=JSON::XS->new->allow_tags; > > say "JSON::XS: $JSON::XS::VERSION"; > say "Types::Serialiser: $Types::Serialiser::VERSION"; > > my $t = $j->encode( Foo->new ); > say $t; > > my @t = $j->encode( Foo->new ); > > package Foo; > sub new { bless {}, $_[0]; } > sub FREEZE { ( 123, 456 ); }' | perl > JSON::XS: 3.01 > Types::Serialiser: 1.0 > ("Foo")[123,456] > panic: attempt to copy freed scalar c37a18 to c37a00 at - line 14. > > $ perl -MJSON::XS -wE 'say JSON::XS->new->allow_tags->encode( bless {}, Foo > ); package Foo; sub FREEZE{ return 123 }' > Use of uninitialized value in say at -e line 1. > ("Foo")[123] > > $ perl -MJSON::XS -wE 'say scalar( JSON::XS->new->allow_tags->encode( bless > {}, Foo )); package Foo; sub FREEZE{ return 123 }' > ("Foo")[123] > > Проверили на разных машинах и на разных версиях perl-а - одно и то же. > > -- > С уважением, > Вадим Власов > т.: +7 (916) 424-00-72 > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > From sergey.aleynikov на gmail.com Wed Nov 26 15:14:53 2014 From: sergey.aleynikov на gmail.com (Sergey Aleynikov) Date: Thu, 27 Nov 2014 03:14:53 +0400 Subject: [Moscow.pm] =?utf-8?b?0JHQsNCzINCyIEpTT046OlhTPw==?= In-Reply-To: References: Message-ID: Добрый день, > Написал, Леман говорит, нефиг юзать в списочном конексте :) Он немного предсказуем) Best regards, Sergey Aleynikov From scripter.vrn на gmail.com Wed Nov 26 15:38:51 2014 From: scripter.vrn на gmail.com (=?UTF-8?B?0JLQsNC00LjQvCDQktC70LDRgdC+0LI=?=) Date: Thu, 27 Nov 2014 03:38:51 +0400 Subject: [Moscow.pm] =?utf-8?b?0JHQsNCzINCyIEpTT046OlhTPw==?= In-Reply-To: References: Message-ID: А Леману патчики пробовали слать? Форкать что-то совсем не хочется. Лучше уж буду явно юзать в скалярном контексте, благо более или менее изолируется. 27 ноября 2014 г., 2:13 пользователь Sergey Aleynikov < sergey.aleynikov на gmail.com> написал: > Добрый день, > > Что именно и когда ответит Леман - непредсказуемо) Я нашел, как > минимум, еще два места, где модулю сносит стек. Прислать патч, или > попробуете сначала с ним списаться? > > Best regards, > Sergey Aleynikov > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > -- С уважением, Вадим Власов т.: +7 (916) 424-00-72 ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From scripter.vrn на gmail.com Wed Nov 26 15:40:11 2014 From: scripter.vrn на gmail.com (=?UTF-8?B?0JLQsNC00LjQvCDQktC70LDRgdC+0LI=?=) Date: Thu, 27 Nov 2014 03:40:11 +0400 Subject: [Moscow.pm] =?utf-8?b?0JHQsNCzINCyIEpTT046OlhTPw==?= In-Reply-To: References: Message-ID: Ну и поделитесь, где еще засады ) 27 ноября 2014 г., 2:13 пользователь Sergey Aleynikov < sergey.aleynikov на gmail.com> написал: > Добрый день, > > Что именно и когда ответит Леман - непредсказуемо) Я нашел, как > минимум, еще два места, где модулю сносит стек. Прислать патч, или > попробуете сначала с ним списаться? > > Best regards, > Sergey Aleynikov > > > 2014-11-26 20:01 GMT+03:00 Вадим Власов : > > Исследуя новый сериализатор в JSON::XS наткнулся: > > > > $ echo 'use strict; > > use warnings; > > use feature "say"; > > > > use JSON::XS; > > my $j=JSON::XS->new->allow_tags; > > > > say "JSON::XS: $JSON::XS::VERSION"; > > say "Types::Serialiser: $Types::Serialiser::VERSION"; > > > > my $t = $j->encode( Foo->new ); > > say $t; > > > > my @t = $j->encode( Foo->new ); > > > > package Foo; > > sub new { bless {}, $_[0]; } > > sub FREEZE { ( 123, 456 ); }' | perl > > JSON::XS: 3.01 > > Types::Serialiser: 1.0 > > ("Foo")[123,456] > > panic: attempt to copy freed scalar c37a18 to c37a00 at - line 14. > > > > $ perl -MJSON::XS -wE 'say JSON::XS->new->allow_tags->encode( bless {}, > Foo > > ); package Foo; sub FREEZE{ return 123 }' > > Use of uninitialized value in say at -e line 1. > > ("Foo")[123] > > > > $ perl -MJSON::XS -wE 'say scalar( JSON::XS->new->allow_tags->encode( > bless > > {}, Foo )); package Foo; sub FREEZE{ return 123 }' > > ("Foo")[123] > > > > Проверили на разных машинах и на разных версиях perl-а - одно и то же. > > > > -- > > С уважением, > > Вадим Власов > > т.: +7 (916) 424-00-72 > > > > -- > > Moscow.pm mailing list > > moscow-pm на pm.org | http://moscow.pm.org > > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > -- С уважением, Вадим Власов т.: +7 (916) 424-00-72 ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From and.enshin на gmail.com Thu Nov 27 01:42:50 2014 From: and.enshin на gmail.com (=?KOI8-R?B?5c7Y28nOIOHOxNLFyg==?=) Date: Thu, 27 Nov 2014 13:42:50 +0400 Subject: [Moscow.pm] =?koi8-r?b?y8/NzcXO1Nkg1yDLz87DxSDT1NLPy8k=?= Message-ID: Привет, есть задача перенести все комментарии с конца строки на новую строку перед комментируемой. Например, my $var = 123; # comment сделать # comment my $var = 123; Может быть perltidy умеет так или есть какие-то иные хитрые решения? p.s.: не обязательно рассматривать редкие решения, где # встречается перед комментарием, но можно :) -- С уважением, Еньшин Андрей Юрьевич ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From sergey.aleynikov на gmail.com Thu Nov 27 01:52:01 2014 From: sergey.aleynikov на gmail.com (Sergey Aleynikov) Date: Thu, 27 Nov 2014 13:52:01 +0400 Subject: [Moscow.pm] =?utf-8?b?0JHQsNCzINCyIEpTT046OlhTPw==?= In-Reply-To: References: Message-ID: Добрый день, >А Леману патчики пробовали слать? У меня нет желания общаться с ним. Он делает интересные вещи, но надеяться на поддержку от него - бесполезно. >Ну и поделитесь, где еще засады ) Во всех колбеках, которые он вызывает в списочном контексте. Best regards, Sergey Aleynikov 27 ноября 2014 г., 2:38 пользователь Вадим Власов написал: > А Леману патчики пробовали слать? > Форкать что-то совсем не хочется. Лучше уж буду явно юзать в скалярном > контексте, благо более или менее изолируется. > > 27 ноября 2014 г., 2:13 пользователь Sergey Aleynikov > написал: >> >> Добрый день, >> >> Что именно и когда ответит Леман - непредсказуемо) Я нашел, как >> минимум, еще два места, где модулю сносит стек. Прислать патч, или >> попробуете сначала с ним списаться? >> >> Best regards, >> Sergey Aleynikov >> >> -- >> Moscow.pm mailing list >> moscow-pm на pm.org | http://moscow.pm.org > > > > -- > С уважением, > Вадим Власов > т.: +7 (916) 424-00-72 > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > From o.smirnova на zebra-group.ru Thu Nov 27 01:52:56 2014 From: o.smirnova на zebra-group.ru (o.smirnova) Date: Thu, 27 Nov 2014 12:52:56 +0300 Subject: [Moscow.pm] =?koi8-r?b?y8/NzcXO1Nkg1yDLz87DxSDT1NLPy8k=?= In-Reply-To: References: Message-ID: <5476F478.9010105@zebra-group.ru> а разве поиск и замена с регулярками в sublime (или в любом другом редакторе) не справится с этой задачей? как-то делала что-то похожее - надо было все комментарии перед функциями запихнуть в =head2 и =cut, вырезав из них символы # вышло вполне сносно 27.11.2014 12:42, Еньшин Андрей пишет: > Привет, > > есть задача перенести все комментарии с конца строки на новую строку > перед комментируемой. Например, > > my $var = 123; # comment > > сделать > > # comment > my $var = 123; > > > Может быть perltidy умеет так или есть какие-то иные хитрые решения? > p.s.: не обязательно рассматривать редкие решения, где # встречается > перед комментарием, но можно :) > > -- > С уважением, > Еньшин Андрей Юрьевич > > > -- С уважением, Ольга Смирнова программист тел. +7 (495) 234-80-79 внутренний 103 или 107 моб. +7 (926) 959-16-22 факс: +7 (495) 234-80-79 внутренний 102 e-mail: o.smirnova на zebra-group.ru ISQ: 232733122 Skype: olga_smirnova89 B2B дизайн-бюро "Зебра" www.zebra-group.ru ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: ----------- следущая часть ----------- A non-text attachment was scrubbed... Name: logo.png Type: image/png Size: 3415 bytes Desc: отсутствует URL: From snelius на tsu.ru Thu Nov 27 02:22:17 2014 From: snelius на tsu.ru (Anatoly Y) Date: Thu, 27 Nov 2014 16:22:17 +0600 Subject: [Moscow.pm] =?utf-8?b?0LrQvtC80LzQtdC90YLRiyDQsiDQutC+0L3RhtC1?= =?utf-8?b?INGB0YLRgNC+0LrQuA==?= In-Reply-To: <5476F478.9010105@zebra-group.ru> References: <5476F478.9010105@zebra-group.ru> Message-ID: да решается пади чем-нибудь типа такого рега, на вскидку perl -E '$a="my $var = 123; \@c = (1,2,3); # comment"; $a =~ s/^(.*;)?\s*(#.*)?/$2\n$1/; say $a;' 27 ноября 2014 г., 15:52 пользователь o.smirnova написал: > а разве поиск и замена с регулярками в sublime (или в любом другом > редакторе) не справится с этой задачей? > как-то делала что-то похожее - надо было все комментарии перед функциями > запихнуть в =head2 и =cut, вырезав из них символы # > вышло вполне сносно > > 27.11.2014 12:42, Еньшин Андрей пишет: > > Привет, > > есть задача перенести все комментарии с конца строки на новую строку перед > комментируемой. Например, > > my $var = 123; # comment > > сделать > > # comment > my $var = 123; > > > Может быть perltidy умеет так или есть какие-то иные хитрые решения? > p.s.: не обязательно рассматривать редкие решения, где # встречается перед > комментарием, но можно :) > > -- > С уважением, > Еньшин Андрей Юрьевич > > > > > -- > С уважением, > > Ольга Смирнова > программист > тел. +7 (495) 234-80-79 внутренний 103 или 107 > моб. +7 (926) 959-16-22 > факс: +7 (495) 234-80-79 внутренний 102 > e-mail: o.smirnova на zebra-group.ru > ISQ: 232733122 > Skype: olga_smirnova89 > > [image: B2B дизайн-бюро "Зебра" www.zebra-group.ru] > > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > > ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: ----------- следущая часть ----------- A non-text attachment was scrubbed... Name: logo.png Type: image/png Size: 3415 bytes Desc: отсутствует URL: From mshogin на gmail.com Thu Nov 27 02:41:48 2014 From: mshogin на gmail.com (=?UTF-8?B?0JzQuNGF0LDQuNC7INCo0L7Qs9C40L0=?=) Date: Thu, 27 Nov 2014 14:41:48 +0400 Subject: [Moscow.pm] =?utf-8?b?0LrQvtC80LzQtdC90YLRiyDQsiDQutC+0L3RhtC1?= =?utf-8?b?INGB0YLRgNC+0LrQuA==?= In-Reply-To: References: <5476F478.9010105@zebra-group.ru> Message-ID: можно так например (понятно дело что там могут быть строки с символом # и то се) sed -e 's/\([^#]*\)\(.*\)/\2\n\1/' some_file.pl echo '$self->build_context(); # prepare context' | sed -e 's/\([^#]*\)\(.*\)/\2\n\1/' # prepare context $self->build_context(); -- С уважением Михаил Шогин. ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From onokonem на gmail.com Thu Nov 27 03:07:30 2014 From: onokonem на gmail.com (Daniel Podolsky) Date: Thu, 27 Nov 2014 15:07:30 +0400 Subject: [Moscow.pm] =?utf-8?b?0LrQvtC80LzQtdC90YLRiyDQsiDQutC+0L3RhtC1?= =?utf-8?b?INGB0YLRgNC+0LrQuA==?= In-Reply-To: References: <5476F478.9010105@zebra-group.ru> Message-ID: смелые предложения про регулярки основываются на неверном предположении, что # используется в перле только для комментариев. на самом деле - без реального синтаксического разбора в общем случае задача не решается. 2014-11-27 13:41 GMT+03:00 Михаил Шогин : > можно так например (понятно дело что там могут быть строки с символом # и то > се) > > sed -e 's/\([^#]*\)\(.*\)/\2\n\1/' some_file.pl > > > echo '$self->build_context(); # prepare context' | sed -e > 's/\([^#]*\)\(.*\)/\2\n\1/' > > # prepare context > $self->build_context(); > > > -- > С уважением > Михаил Шогин. > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > From o.smirnova на zebra-group.ru Thu Nov 27 03:13:39 2014 From: o.smirnova на zebra-group.ru (o.smirnova) Date: Thu, 27 Nov 2014 14:13:39 +0300 Subject: [Moscow.pm] =?koi8-r?b?y8/NzcXO1Nkg1yDLz87DxSDT1NLPy8k=?= In-Reply-To: References: <5476F478.9010105@zebra-group.ru> Message-ID: <54770763.70007@zebra-group.ru> можно искать по сочетанию с точкой с запятой, т.к. она точно должна быть в конце строки, а решетка уже после нее да и зависит от того, насколько глобально стоит задача, если постоянно потребуется этим пользоваться в каком-то автоматическом режиме, то да - нужно что-то посложнее. А если разово пройтись по одному/нескольким файлам и перенести в там комментарии, то можно и регулярками обойтись 27.11.2014 14:07, Daniel Podolsky пишет: > смелые предложения про регулярки основываются на неверном > предположении, что # используется в перле только для комментариев. > > на самом деле - без реального синтаксического разбора в общем случае > задача не решается. > > 2014-11-27 13:41 GMT+03:00 Михаил Шогин : >> можно так например (понятно дело что там могут быть строки с символом # и то >> се) >> >> sed -e 's/\([^#]*\)\(.*\)/\2\n\1/' some_file.pl >> >> >> echo '$self->build_context(); # prepare context' | sed -e >> 's/\([^#]*\)\(.*\)/\2\n\1/' >> >> # prepare context >> $self->build_context(); >> >> >> -- >> С уважением >> Михаил Шогин. >> >> -- >> Moscow.pm mailing list >> moscow-pm на pm.org | http://moscow.pm.org >> -- С уважением, Ольга Смирнова программист тел. +7 (495) 234-80-79 внутренний 103 или 107 моб. +7 (926) 959-16-22 факс: +7 (495) 234-80-79 внутренний 102 e-mail: o.smirnova на zebra-group.ru ISQ: 232733122 Skype: olga_smirnova89 B2B дизайн-бюро "Зебра" www.zebra-group.ru ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: ----------- следущая часть ----------- A non-text attachment was scrubbed... Name: logo.png Type: image/png Size: 3415 bytes Desc: отсутствует URL: From chesnokov.ilya на gmail.com Thu Nov 27 03:18:00 2014 From: chesnokov.ilya на gmail.com (Ilya Chesnokov) Date: Thu, 27 Nov 2014 15:18:00 +0400 Subject: [Moscow.pm] =?utf-8?b?0LrQvtC80LzQtdC90YLRiyDQsiDQutC+0L3RhtC1?= =?utf-8?b?INGB0YLRgNC+0LrQuA==?= In-Reply-To: References: <5476F478.9010105@zebra-group.ru> Message-ID: 27 ноября 2014 г., 14:07 пользователь Daniel Podolsky написал: > смелые предложения про регулярки основываются на неверном > предположении, что # используется в перле только для комментариев. > > на самом деле - без реального синтаксического разбора в общем случае > задача не решается. Ха-ха) А если учесть, что парсить Perl может только perl, то задача в общем случае нерешаема вообще :) > 2014-11-27 13:41 GMT+03:00 Михаил Шогин : >> можно так например (понятно дело что там могут быть строки с символом # и то >> се) >> >> sed -e 's/\([^#]*\)\(.*\)/\2\n\1/' some_file.pl >> >> >> echo '$self->build_context(); # prepare context' | sed -e >> 's/\([^#]*\)\(.*\)/\2\n\1/' >> >> # prepare context >> $self->build_context(); >> >> >> -- >> С уважением >> Михаил Шогин. >> >> -- >> Moscow.pm mailing list >> moscow-pm на pm.org | http://moscow.pm.org >> > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org -- Best regards, Ilya Chesnokov From timur.nozadze на gmail.com Thu Nov 27 03:24:31 2014 From: timur.nozadze на gmail.com (=?UTF-8?B?0KLQuNC80YPRgCDQndC+0LfQsNC00LfQtQ==?=) Date: Thu, 27 Nov 2014 15:24:31 +0400 Subject: [Moscow.pm] =?utf-8?b?0LrQvtC80LzQtdC90YLRiyDQsiDQutC+0L3RhtC1?= =?utf-8?b?INGB0YLRgNC+0LrQuA==?= In-Reply-To: <54770763.70007@zebra-group.ru> References: <5476F478.9010105@zebra-group.ru> <54770763.70007@zebra-group.ru> Message-ID: Вот уж точка с запятой в конце строки точно быть не обязана. ;) Если хочется чего-то большого и красивого, попробуйте какой-нибудь статический анализатор (PPI или Perl::Lint). 27 ноября 2014 г., 14:13 пользователь o.smirnova написал: > можно искать по сочетанию с точкой с запятой, т.к. она точно должна быть > в конце строки, а решетка уже после нее > > да и зависит от того, насколько глобально стоит задача, если постоянно > потребуется этим пользоваться в каком-то автоматическом режиме, то да - > нужно что-то посложнее. А если разово пройтись по одному/нескольким файлам > и перенести в там комментарии, то можно и регулярками обойтись > > > 27.11.2014 14:07, Daniel Podolsky пишет: > > смелые предложения про регулярки основываются на неверном > предположении, что # используется в перле только для комментариев. > > на самом деле - без реального синтаксического разбора в общем случае > задача не решается. > > 2014-11-27 13:41 GMT+03:00 Михаил Шогин : > > можно так например (понятно дело что там могут быть строки с символом # и то > се) > > sed -e 's/\([^#]*\)\(.*\)/\2\n\1/' some_file.pl > > > echo '$self->build_context(); # prepare context' | sed -e > 's/\([^#]*\)\(.*\)/\2\n\1/' > > # prepare context > $self->build_context(); > > > -- > С уважением > Михаил Шогин. > > -- > Moscow.pm mailing listmoscow-pm на pm.org | http://moscow.pm.org > > > -- > С уважением, > > Ольга Смирнова > программист > тел. +7 (495) 234-80-79 внутренний 103 или 107 > моб. +7 (926) 959-16-22 > факс: +7 (495) 234-80-79 внутренний 102 > e-mail: o.smirnova на zebra-group.ru > ISQ: 232733122 > Skype: olga_smirnova89 > > [image: B2B дизайн-бюро "Зебра" www.zebra-group.ru] > > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > > -- С уважением, Тимур Нозадзе ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: ----------- следущая часть ----------- A non-text attachment was scrubbed... Name: logo.png Type: image/png Size: 3415 bytes Desc: отсутствует URL: From snelius на tsu.ru Thu Nov 27 03:33:00 2014 From: snelius на tsu.ru (Anatoly Y) Date: Thu, 27 Nov 2014 17:33:00 +0600 Subject: [Moscow.pm] =?utf-8?b?0LrQvtC80LzQtdC90YLRiyDQsiDQutC+0L3RhtC1?= =?utf-8?b?INGB0YLRgNC+0LrQuA==?= In-Reply-To: References: <5476F478.9010105@zebra-group.ru> <54770763.70007@zebra-group.ru> Message-ID: Да. И всё-таки следует посмотреть, может быть можно Perltidy этому научить. 27 ноября 2014 г., 17:24 пользователь Тимур Нозадзе написал: > Вот уж точка с запятой в конце строки точно быть не обязана. ;) > > Если хочется чего-то большого и красивого, попробуйте какой-нибудь > статический анализатор (PPI или Perl::Lint). > > 27 ноября 2014 г., 14:13 пользователь o.smirnova < > o.smirnova на zebra-group.ru> написал: > > можно искать по сочетанию с точкой с запятой, т.к. она точно должна быть >> в конце строки, а решетка уже после нее >> >> да и зависит от того, насколько глобально стоит задача, если постоянно >> потребуется этим пользоваться в каком-то автоматическом режиме, то да - >> нужно что-то посложнее. А если разово пройтись по одному/нескольким файлам >> и перенести в там комментарии, то можно и регулярками обойтись >> >> >> 27.11.2014 14:07, Daniel Podolsky пишет: >> >> смелые предложения про регулярки основываются на неверном >> предположении, что # используется в перле только для комментариев. >> >> на самом деле - без реального синтаксического разбора в общем случае >> задача не решается. >> >> 2014-11-27 13:41 GMT+03:00 Михаил Шогин : >> >> можно так например (понятно дело что там могут быть строки с символом # и то >> се) >> >> sed -e 's/\([^#]*\)\(.*\)/\2\n\1/' some_file.pl >> >> >> echo '$self->build_context(); # prepare context' | sed -e >> 's/\([^#]*\)\(.*\)/\2\n\1/' >> >> # prepare context >> $self->build_context(); >> >> >> -- >> С уважением >> Михаил Шогин. >> >> -- >> Moscow.pm mailing listmoscow-pm на pm.org | http://moscow.pm.org >> >> >> -- >> С уважением, >> >> Ольга Смирнова >> программист >> тел. +7 (495) 234-80-79 внутренний 103 или 107 >> моб. +7 (926) 959-16-22 >> факс: +7 (495) 234-80-79 внутренний 102 >> e-mail: o.smirnova на zebra-group.ru >> ISQ: 232733122 >> Skype: olga_smirnova89 >> >> [image: B2B дизайн-бюро "Зебра" www.zebra-group.ru] >> >> >> -- >> Moscow.pm mailing list >> moscow-pm на pm.org | http://moscow.pm.org >> >> > > > -- > С уважением, Тимур Нозадзе > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > > ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: ----------- следущая часть ----------- A non-text attachment was scrubbed... Name: logo.png Type: image/png Size: 3415 bytes Desc: отсутствует URL: From onokonem на gmail.com Thu Nov 27 04:02:10 2014 From: onokonem на gmail.com (Daniel Podolsky) Date: Thu, 27 Nov 2014 16:02:10 +0400 Subject: [Moscow.pm] =?utf-8?b?0LrQvtC80LzQtdC90YLRiyDQsiDQutC+0L3RhtC1?= =?utf-8?b?INGB0YLRgNC+0LrQuA==?= In-Reply-To: References: <5476F478.9010105@zebra-group.ru> Message-ID: > Ха-ха) А если учесть, что парсить Perl может только perl, то задача в > общем случае нерешаема вообще :) Это, надо отметить, один из реальных минусов perl как языка. From foxcool333 на gmail.com Thu Nov 27 04:12:12 2014 From: foxcool333 на gmail.com (Foxcool) Date: Thu, 27 Nov 2014 15:12:12 +0300 Subject: [Moscow.pm] =?utf-8?b?0LrQvtC80LzQtdC90YLRiyDQsiDQutC+0L3RhtC1?= =?utf-8?b?INGB0YLRgNC+0LrQuA==?= In-Reply-To: References: <5476F478.9010105@zebra-group.ru> Message-ID: <5477151C.2020803@gmail.com> 27.11.2014 15:02, Daniel Podolsky пишет: >> Ха-ха) А если учесть, что парсить Perl может только perl, то задача в >> общем случае нерешаема вообще :) > Это, надо отметить, один из реальных минусов perl как языка. ниче, шестую версию обещают в 2015 годную в продакшн. Там уже язык формализуется -- http://foxcool.ru foxcool на jabber.ru From timur.nozadze на gmail.com Thu Nov 27 06:09:31 2014 From: timur.nozadze на gmail.com (=?UTF-8?B?0KLQuNC80YPRgCDQndC+0LfQsNC00LfQtQ==?=) Date: Thu, 27 Nov 2014 18:09:31 +0400 Subject: [Moscow.pm] =?utf-8?b?0LrQvtC80LzQtdC90YLRiyDQsiDQutC+0L3RhtC1?= =?utf-8?b?INGB0YLRgNC+0LrQuA==?= In-Reply-To: <5477151C.2020803@gmail.com> References: <5476F478.9010105@zebra-group.ru> <5477151C.2020803@gmail.com> Message-ID: > > ниче, шестую версию обещают в 2015 годную в продакшн. Там уже язык > формализуется Это другой язык. Никак не решит наши проблемы с этим. :) А кто-нибудь знает, как работает внутри perltidy? 27 ноября 2014 г., 15:12 пользователь Foxcool написал: > 27.11.2014 15:02, Daniel Podolsky пишет: > >> Ха-ха) А если учесть, что парсить Perl может только perl, то задача в >>> общем случае нерешаема вообще :) >>> >> Это, надо отметить, один из реальных минусов perl как языка. >> > > ниче, шестую версию обещают в 2015 годную в продакшн. Там уже язык > формализуется > > -- > http://foxcool.ru > foxcool на jabber.ru > > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > -- С уважением, Тимур Нозадзе ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From dmitry на karasik.eu.org Thu Nov 27 07:01:55 2014 From: dmitry на karasik.eu.org (Dmitry Karasik) Date: Thu, 27 Nov 2014 16:01:55 +0100 Subject: [Moscow.pm] =?koi8-r?b?4sHHINcgSlNPTjo6WFM/?= In-Reply-To: References: Message-ID: <20141127150155.GA38096@nataraj.karasik.eu.org> On Thu, Nov 27, 2014 at 03:38:51AM +0400, Вадим Власов wrote: > А Леману патчики пробовали слать? > Форкать что-то совсем не хочется. Попробуйте такую вещь: отрепортите баг через интерфейс CPAN, желательно включая патч. Результат будет такой что JSON::XS будет висеть со статусом "1 баг". Леман почему-то очень не любит когда такое происходит, и скорее всего тут же баг закроет. А вы его опять откройте. И так далее. Расчет на то что может он всетаки решит подойти к вопросу конструктивно. -- Sincerely, Dmitry Karasik From scripter.vrn на gmail.com Thu Nov 27 07:37:40 2014 From: scripter.vrn на gmail.com (=?UTF-8?B?0JLQsNC00LjQvCDQktC70LDRgdC+0LI=?=) Date: Thu, 27 Nov 2014 19:37:40 +0400 Subject: [Moscow.pm] =?utf-8?b?0JHQsNCzINCyIEpTT046OlhTPw==?= In-Reply-To: <20141127150155.GA38096@nataraj.karasik.eu.org> References: <20141127150155.GA38096@nataraj.karasik.eu.org> Message-ID: Хорошоая идея, попробую! :) В XS не шарю, к сожалению, но хотя бы есть код 100% воспроизводящий баг. 27 ноября 2014 г., 18:01 пользователь Dmitry Karasik написал: > > Попробуйте такую вещь: отрепортите баг через интерфейс CPAN, желательно > включая патч. > Результат будет такой что JSON::XS будет висеть со статусом "1 баг". Леман > почему-то > очень не любит когда такое происходит, и скорее всего тут же баг закроет. > А вы его опять откройте. > И так далее. Расчет на то что может он всетаки решит подойти к вопросу > конструктивно. > > -- > Sincerely, > Dmitry Karasik > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > -- С уважением, Вадим Власов т.: +7 (916) 424-00-72 ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From victor на vsespb.ru Thu Nov 27 07:38:01 2014 From: victor на vsespb.ru (Victor Efimov) Date: Thu, 27 Nov 2014 19:38:01 +0400 Subject: [Moscow.pm] =?utf-8?b?0JHQsNCzINCyIEpTT046OlhTPw==?= In-Reply-To: <20141127150155.GA38096@nataraj.karasik.eu.org> References: <20141127150155.GA38096@nataraj.karasik.eu.org> Message-ID: 27 ноября 2014 г., 18:01 пользователь Dmitry Karasik написал: > On Thu, Nov 27, 2014 at 03:38:51AM +0400, Вадим Власов wrote: >> А Леману патчики пробовали слать? >> Форкать что-то совсем не хочется. > > Попробуйте такую вещь: отрепортите баг через интерфейс CPAN, желательно включая патч. > Результат будет такой что JSON::XS будет висеть со статусом "1 баг". Леман почему-то > очень не любит когда такое происходит, и скорее всего тут же баг закроет. А вы его опять откройте. > И так далее. Расчет на то что может он всетаки решит подойти к вопросу конструктивно. Зачем злить человека?? Он не хочет принимать патчи через CPAN, а принимает их по email. > > -- > Sincerely, > Dmitry Karasik > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org From 0body0 на rambler.ru Thu Nov 27 07:41:48 2014 From: 0body0 на rambler.ru (=?KOI8-R?Q?=E1=CE=C1=D4=CF=CC=C9=CA_=E7=D2=C9=DB=C1=C5=D7?=) Date: Thu, 27 Nov 2014 18:41:48 +0300 Subject: [Moscow.pm] =?koi8-r?b?y8/NzcXO1Nkg1yDLz87DxSDT1NLPy8k=?= In-Reply-To: References: <5476F478.9010105@zebra-group.ru> <5477151C.2020803@gmail.com> Message-ID: <5477463C.1010701@rambler.ru> 27.11.2014 17:09, Тимур Нозадзе пишет: > > ниче, шестую версию обещают в 2015 годную в продакшн. Там уже язык > формализуется > > Это другой язык. Никак не решит наши проблемы с этим. :) На самом деле все преувеличивают проблему разбора перлового кода. Eсли выкинуть из перла прототипы и source filters, то перл вполне нормально парсится(IMHO). И модули, которые этим злоупотребляют, можно по пальцам пересчитать(IMHO again) > > А кто-нибудь знает, как работает внутри perltidy? # Here is a map of the flow of data from the input source to the output # line sink: # # LineSource-->Tokenizer-->Formatter-->VerticalAligner-->FileWriter--> # input groups output # lines tokens lines of lines lines # lines # > > 27 ноября 2014 г., 15:12 пользователь Foxcool > написал: > > 27.11.2014 15:02, Daniel Podolsky пишет: > > Ха-ха) А если учесть, что парсить Perl может только perl, > то задача в > общем случае нерешаема вообще :) > > Это, надо отметить, один из реальных минусов perl как языка. > > > ниче, шестую версию обещают в 2015 годную в продакшн. Там уже язык > формализуется > > -- > http://foxcool.ru > foxcool на jabber.ru > > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > > > > > -- > С уважением, Тимур Нозадзе > > ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From sergey.aleynikov на gmail.com Thu Nov 27 09:09:03 2014 From: sergey.aleynikov на gmail.com (Sergey Aleynikov) Date: Thu, 27 Nov 2014 21:09:03 +0400 Subject: [Moscow.pm] =?utf-8?b?0LrQvtC80LzQtdC90YLRiyDQsiDQutC+0L3RhtC1?= =?utf-8?b?INGB0YLRgNC+0LrQuA==?= In-Reply-To: <5477463C.1010701@rambler.ru> References: <5476F478.9010105@zebra-group.ru> <5477151C.2020803@gmail.com> <5477463C.1010701@rambler.ru> Message-ID: Добрый день, > На самом деле все преувеличивают проблему разбора перлового кода. > Eсли выкинуть из перла прототипы и source filters, то перл вполне нормально > парсится(IMHO). > И модули, которые этим злоупотребляют, можно по пальцам пересчитать(IMHO > again) А так же все, что встречается https://metacpan.org/requires/distribution/Devel-Declare здесь) Best regards, Sergey Aleynikov From mail на knutov.com Thu Nov 27 19:08:11 2014 From: mail на knutov.com (Nick Knutov) Date: Fri, 28 Nov 2014 08:08:11 +0500 Subject: [Moscow.pm] =?koi8-r?b?4sHHINcgSlNPTjo6WFM/?= In-Reply-To: <20141127150155.GA38096@nataraj.karasik.eu.org> References: <20141127150155.GA38096@nataraj.karasik.eu.org> Message-ID: <5477E71B.3080601@knutov.com> Мне кажется, гораздо больше смысла проверить, есть ли баг в уже существующем форке - Cpanel::JSON::XS - и если есть, то закомиттить проблему в их багтрекер. Им, в отличии от, не всё равно. Заодним, а в JSON::PP проблема воспроизводится? 27.11.2014 20:01, Dmitry Karasik пишет: > On Thu, Nov 27, 2014 at 03:38:51AM +0400, Вадим Власов wrote: >> А Леману патчики пробовали слать? >> Форкать что-то совсем не хочется. > > Попробуйте такую вещь: отрепортите баг через интерфейс CPAN, желательно включая патч. > Результат будет такой что JSON::XS будет висеть со статусом "1 баг". Леман почему-то > очень не любит когда такое происходит, и скорее всего тут же баг закроет. -- Best Regards, Nick Knutov http://knutov.com ICQ: 272873706 Voice: +7-904-84-23-130 From sergey.aleynikov на gmail.com Fri Nov 28 05:59:16 2014 From: sergey.aleynikov на gmail.com (Sergey Aleynikov) Date: Fri, 28 Nov 2014 17:59:16 +0400 Subject: [Moscow.pm] =?utf-8?b?0JHQsNCzINCyIEpTT046OlhTPw==?= In-Reply-To: <5477E71B.3080601@knutov.com> References: <20141127150155.GA38096@nataraj.karasik.eu.org> <5477E71B.3080601@knutov.com> Message-ID: Добрый день, http://search.cpan.org/~rurban/Cpanel-JSON-XS-3.0107/ - релиз с фиксом. Best regards, Sergey Aleynikov From pef-secure на yandex.ru Fri Nov 28 06:40:43 2014 From: pef-secure на yandex.ru (PEF Secure) Date: Fri, 28 Nov 2014 15:40:43 +0100 Subject: [Moscow.pm] =?utf-8?b?0L/RgNC+0YjRgyDQv9C+0LzQvtGJ0Lgg0YEg0YA=?= =?utf-8?b?0LXQstGM0Y4g0LzQvtC00YPQu9GP?= Message-ID: <17955628.eidx6fWCdn@rawen> Приветствую! Задумал опубликовать на CPAN свой модуль, предназначенный для упрощения доступа к данным в базе. Самое главное: он не пытается построить из себя ORM или ещё какую то модель, он просто пытается простые запросы сделать более перловыми, а сложные сделать просто возможными. Предыдущая версия этого модуля у меня уже пару лет используется и доказала свою полезность. Специально для публикации на CPAN я написал на него документацию и добавил некоторые фишки, что давно просились. Проблем у меня, в общем-то, две: оттестировать версию для mysql и поправить документацию. Поскольку у меня просто нет в хозяйстве баз, отличных от postresql, то я не могу оттестировать использование mysql, хотя теоретический код для него написал. Коротко о сути модуля: my $session = one_row("session", {session_key => $input->{session}}); NoUser->throw("User is not logged in or does not exist") unless defined $session; my $client = $session->Client; $client->filter_timestamp; $session->expires(\"now() + interval '2 day'"); $session->update; my $usd_balance = $client->refClientBalance(currency => "USD"); Модуль находится тут: https://github.com/pef-secure/sql-struct -- PEF Developer From scripter.vrn на gmail.com Fri Nov 28 06:42:49 2014 From: scripter.vrn на gmail.com (=?UTF-8?B?0JLQsNC00LjQvCDQktC70LDRgdC+0LI=?=) Date: Fri, 28 Nov 2014 18:42:49 +0400 Subject: [Moscow.pm] =?utf-8?b?0JHQsNCzINCyIEpTT046OlhTPw==?= In-Reply-To: References: <20141127150155.GA38096@nataraj.karasik.eu.org> <5477E71B.3080601@knutov.com> Message-ID: Видимо придется на неё и переходить. 2014-11-28 16:59 GMT+03:00 Sergey Aleynikov : > Добрый день, > > http://search.cpan.org/~rurban/Cpanel-JSON-XS-3.0107/ - релиз с фиксом. > > Best regards, > Sergey Aleynikov > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > -- С уважением, Вадим Власов т.: +7 (916) 424-00-72 ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From maxim.vuets на gmail.com Fri Nov 28 06:46:28 2014 From: maxim.vuets на gmail.com (Maxim Vuets) Date: Fri, 28 Nov 2014 15:46:28 +0100 Subject: [Moscow.pm] =?utf-8?b?0L/RgNC+0YjRgyDQv9C+0LzQvtGJ0Lgg0YEg0YA=?= =?utf-8?b?0LXQstGM0Y4g0LzQvtC00YPQu9GP?= In-Reply-To: <17955628.eidx6fWCdn@rawen> References: <17955628.eidx6fWCdn@rawen> Message-ID: 2014-11-28 15:40 GMT+01:00 PEF Secure : > Задумал опубликовать на CPAN свой модуль, предназначенный для упрощения > доступа к данным в базе. Поскольку вы дружите с английским, рекоменду также опубликовать анонс модуля на http://prepan.org/ From pef-secure на yandex.ru Fri Nov 28 06:59:29 2014 From: pef-secure на yandex.ru (PEF Secure) Date: Fri, 28 Nov 2014 15:59:29 +0100 Subject: [Moscow.pm] =?utf-8?b?0L/RgNC+0YjRgyDQv9C+0LzQvtGJ0Lgg0YEg0YA=?= =?utf-8?b?0LXQstGM0Y4g0LzQvtC00YPQu9GP?= In-Reply-To: References: <17955628.eidx6fWCdn@rawen> Message-ID: <10672109.eNJeWIu1Jz@rawen> On Friday, November 28, 2014 15:46:28 Maxim Vuets wrote: > 2014-11-28 15:40 GMT+01:00 PEF Secure : > > > Задумал опубликовать на CPAN свой модуль, предназначенный для упрощения > > доступа к данным в базе. > > > Поскольку вы дружите с английским, рекоменду также опубликовать анонс > модуля на http://prepan.org/ Это у меня намечено вторым шагом. Перед публикацией на prepan была надежда кто-нибудь мне на ошибки в английском сначала покажет :) -- PEF Developer From theathlet на yandex.ru Fri Nov 28 07:41:11 2014 From: theathlet на yandex.ru (TheAthlete) Date: Fri, 28 Nov 2014 18:41:11 +0300 Subject: [Moscow.pm] =?utf-8?b?0JHQsNCzINCyIEpTT046OlhTPw==?= In-Reply-To: References: Message-ID: Неделя багов в JSON::XS! :) Тоже столкнулся с багом в JSON::XS - при установке модуля boolean, который в зависимостях у Test::DBIx::Class, не был пройден тест json.t. Заглянув в issue данного модуля на github, нашел такой тикет: json.t fails on many Linux systems - https://github.com/ingydotnet/boolean-pm/issues/5 Там некоторые советуют установить Cpanel::JSON::XS - установил и все заработало, хотя не у всех падает при установленном JSON::XS. Если модифицировать тест: use strict; use warnings; use Test::More tests => 3; use boolean -truth; my $HAVE_JSON = eval { require JSON::MaybeXS }; SKIP: { skip "JSON is missing", 3 unless $HAVE_JSON; eval{ my $json = JSON::MaybeXS->new->convert_blessed(); is($json->encode({false => (0 == 1)}), '{"false":false}', 'JSON false works'); is($json->encode({true => (1 == 1)}), '{"true":true}', 'JSON true works'); is(ref(boolean::TO_JSON(true)), 'SCALAR', 'Make sure we can call boolean::TO_JSON($b)'); } }; в следующий: use strict; use warnings; use Test::More tests => 3; use boolean -truth; my $HAVE_JSON = eval { require JSON::XS }; SKIP: { skip "JSON is missing", 3 unless $HAVE_JSON; my $json = JSON::XS->new->convert_blessed(); is($json->encode({false => (0 == 1)}), '{"false":false}', 'JSON false works'); is($json->encode({true => (1 == 1)}), '{"true":true}', 'JSON true works'); is(ref(boolean::TO_JSON(true)), 'SCALAR', 'Make sure we can call boolean::TO_JSON($b)'); }; и запустить, то тест сваливается с ошибкой "Modification of a read-only value attempted at test/json.t line 9" Если заменить на Cpanel::JSON::XS или JSON::PP, то все ок Вадим Власов писал(а) в своём письме Wed, 26 Nov 2014 20:01:33 +0300: > Исследуя новый сериализатор в JSON::XS наткнулся: > > $ echo 'use strict; > use warnings; > use feature "say"; > > use JSON::XS; > my $j=JSON::XS->new->allow_tags; > > say "JSON::XS: $JSON::XS::VERSION"; > say "Types::Serialiser: $Types::Serialiser::VERSION"; > > my $t = $j->encode( Foo->new ); > say $t; > > my @t = $j->encode( Foo->new ); > > package Foo; > sub new { bless {}, $_[0]; } > sub FREEZE { ( 123, 456 ); }' | perl > *JSON::XS: 3.01* > *Types::Serialiser: 1.0* > *("Foo")[123,456]* > *panic: attempt to copy freed scalar c37a18 to c37a00 at - line 14.* > > $ perl -MJSON::XS -wE 'say JSON::XS->new->allow_tags->encode( bless {}, > Foo > ); package Foo; sub FREEZE{ return 123 }' > *Use of uninitialized value in say at -e line 1.* > *("Foo")[123]* > > $ perl -MJSON::XS -wE 'say scalar( JSON::XS->new->allow_tags->encode( > bless > {}, Foo )); package Foo; sub FREEZE{ return 123 }' > *("Foo")[123]* > > Проверили на разных машинах и на разных версиях perl-а - одно и то же. > -- Написано в почтовом клиенте браузера Opera: http://www.opera.com/mail/ From victor на vsespb.ru Fri Nov 28 09:44:50 2014 From: victor на vsespb.ru (Victor Efimov) Date: Fri, 28 Nov 2014 21:44:50 +0400 Subject: [Moscow.pm] =?utf-8?b?0JHQsNCzINCyIEpTT046OlhTPw==?= In-Reply-To: References: Message-ID: 28 ноября 2014 г., 18:41 пользователь TheAthlete написал: > Неделя багов в JSON::XS! :) Почему это баг JSON::XS ? use strict; use warnings; use Test::More tests => 3; use boolean -truth; use JSON::XS; my $json = JSON::XS->new; is($json->encode({"hey" => !!0}), 'abc', 'JSON false works'); тоже фейлится. если use boolean -truth; закоментировать, то работает норм. Это потому что опция -truth You can specify the -truth option to override truth operators to return boolean values. use boolean -truth; print ref("hello" eq "world"), "\n"; перекрывает операторы Perl, чтобы они возвращали объект. Почему считается что JSON::XS должен с этим работать ? Почему это не баг в "boolean" ? > Тоже столкнулся с багом в JSON::XS - при установке модуля boolean, который > в зависимостях у Test::DBIx::Class, не был пройден тест json.t. > Заглянув в issue данного модуля на github, нашел такой тикет: > > json.t fails on many Linux systems - > https://github.com/ingydotnet/boolean-pm/issues/5 > > Там некоторые советуют установить Cpanel::JSON::XS - установил и все > заработало, хотя не у всех падает при установленном JSON::XS. > > Если модифицировать тест: > > use strict; use warnings; > use Test::More tests => 3; > use boolean -truth; > my $HAVE_JSON = eval { require JSON::MaybeXS }; > SKIP: { > skip "JSON is missing", 3 unless $HAVE_JSON; > eval{ > my $json = JSON::MaybeXS->new->convert_blessed(); > is($json->encode({false => (0 == 1)}), '{"false":false}', > 'JSON false works'); > is($json->encode({true => (1 == 1)}), '{"true":true}', > 'JSON true works'); > is(ref(boolean::TO_JSON(true)), 'SCALAR', > 'Make sure we can call boolean::TO_JSON($b)'); > } > }; > > в следующий: > > use strict; use warnings; > use Test::More tests => 3; > use boolean -truth; > my $HAVE_JSON = eval { require JSON::XS }; > SKIP: { > skip "JSON is missing", 3 unless $HAVE_JSON; > my $json = JSON::XS->new->convert_blessed(); > is($json->encode({false => (0 == 1)}), '{"false":false}', > 'JSON false works'); > is($json->encode({true => (1 == 1)}), '{"true":true}', > 'JSON true works'); > is(ref(boolean::TO_JSON(true)), 'SCALAR', > 'Make sure we can call boolean::TO_JSON($b)'); > }; > > и запустить, то тест сваливается с ошибкой "Modification of a read-only > value attempted at test/json.t line 9" > > Если заменить на Cpanel::JSON::XS или JSON::PP, то все ок > > Вадим Власов писал(а) в своём письме Wed, 26 Nov > 2014 20:01:33 +0300: > >> Исследуя новый сериализатор в JSON::XS наткнулся: >> >> $ echo 'use strict; >> use warnings; >> use feature "say"; >> >> use JSON::XS; >> my $j=JSON::XS->new->allow_tags; >> >> say "JSON::XS: $JSON::XS::VERSION"; >> say "Types::Serialiser: $Types::Serialiser::VERSION"; >> >> my $t = $j->encode( Foo->new ); >> say $t; >> >> my @t = $j->encode( Foo->new ); >> >> package Foo; >> sub new { bless {}, $_[0]; } >> sub FREEZE { ( 123, 456 ); }' | perl >> *JSON::XS: 3.01* >> *Types::Serialiser: 1.0* >> *("Foo")[123,456]* >> *panic: attempt to copy freed scalar c37a18 to c37a00 at - line 14.* >> >> $ perl -MJSON::XS -wE 'say JSON::XS->new->allow_tags->encode( bless {}, >> Foo >> ); package Foo; sub FREEZE{ return 123 }' >> *Use of uninitialized value in say at -e line 1.* >> *("Foo")[123]* >> >> $ perl -MJSON::XS -wE 'say scalar( JSON::XS->new->allow_tags->encode( >> bless >> {}, Foo )); package Foo; sub FREEZE{ return 123 }' >> *("Foo")[123]* >> >> Проверили на разных машинах и на разных версиях perl-а - одно и то же. >> > > > -- > Написано в почтовом клиенте браузера Opera: http://www.opera.com/mail/ > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org From mail на knutov.com Fri Nov 28 09:54:32 2014 From: mail на knutov.com (Nick Knutov) Date: Fri, 28 Nov 2014 22:54:32 +0500 Subject: [Moscow.pm] =?koi8-r?b?4sHHINcgSlNPTjo6WFM/?= In-Reply-To: References: <20141127150155.GA38096@nataraj.karasik.eu.org> <5477E71B.3080601@knutov.com> Message-ID: <5478B6D8.8000208@knutov.com> А для этого есть JSON::MaybeXS :) 28.11.2014 19:42, Вадим Власов пишет: > Видимо придется на неё и переходить. > > 2014-11-28 16:59 GMT+03:00 Sergey Aleynikov >: > > Добрый день, > > http://search.cpan.org/~rurban/Cpanel-JSON-XS-3.0107/ - релиз с фиксом. > > Best regards, > Sergey Aleynikov -- Best Regards, Nick Knutov http://knutov.com ICQ: 272873706 Voice: +7-904-84-23-130 From chesnokov.ilya на gmail.com Fri Nov 28 14:49:32 2014 From: chesnokov.ilya на gmail.com (Ilya Chesnokov) Date: Sat, 29 Nov 2014 02:49:32 +0400 Subject: [Moscow.pm] =?utf-8?b?0L/RgNC+0YjRgyDQv9C+0LzQvtGJ0Lgg0YEg0YA=?= =?utf-8?b?0LXQstGM0Y4g0LzQvtC00YPQu9GP?= In-Reply-To: <17955628.eidx6fWCdn@rawen> References: <17955628.eidx6fWCdn@rawen> Message-ID: 28 ноября 2014 г., 17:40 пользователь PEF Secure написал: > Приветствую! > > Задумал опубликовать на CPAN свой модуль, предназначенный для упрощения > доступа к данным в базе. Самое главное: он не пытается построить из себя ORM > или ещё какую то модель, Я бы все же сказал, что это ORM, т.к. он по сути отображает таблицы в объекты. И даже, как я понял, автоматически определяет связи и создает аксессоры для объектов из связанных таблиц. Можете конкретно объяснить, в чем его сходства и отличия от похожих модулей? В чем его преимущества, недостатки перед ними, что реализовано по-другому? В чем преимущество, например, перед DBIx::Class - кроме разве что (предположительно) меньшего потребления памяти? > он просто пытается простые запросы сделать более > перловыми, а сложные сделать просто возможными. Очень претенциозное высказывание, к тому же неверное: "сложный" - это не синоним "невозможного". > Предыдущая версия этого модуля > у меня уже пару лет используется и доказала свою полезность. Эта фраза почему-то сразу внушает опасения... > Специально для > публикации на CPAN я написал на него документацию и добавил некоторые фишки, > что давно просились. > > Проблем у меня, в общем-то, две: оттестировать версию для mysql и поправить > документацию. Поскольку у меня просто нет в хозяйстве баз, отличных от > postresql, то я не могу оттестировать использование mysql, хотя теоретический > код для него написал. В идеале этот код должен находиться в подкаталоге t/ в виде тестов. "Нет в хозяйстве баз" - это не оправдание - я понимаю, что вы "тестируете" этот код наживую - но в идеале нужно написать тесты, которые создадут нужные таблицы для каждого типа баз и протестируют каждую функцию модуля. Кстати, кроме мускуля и постгри есть и другие БД. Итоговое количество проблем = 2 + $count_rdbms_left. > Коротко о сути модуля: > > my $session = one_row("session", {session_key => $input->{session}}); > NoUser->throw("User is not logged in or does not exist") > unless defined $session; > my $client = $session->Client; > $client->filter_timestamp; > $session->expires(\"now() + interval '2 day'"); > $session->update; > my $usd_balance = $client->refClientBalance(currency => "USD"); Ничего не понял. Класс NoUser сгенерировался автоматически? Или это класс исключения, который описан где-то у вас в коде? Если так, то и пишите человекопонятный die() или croak(). Где комменты? Что делает, например, $client->filter_timestamp? И еще было бы неплохо показать схему таблиц, на которой вы все это запускаете. Посмотрите мануал к DBIx::Class - там неплохое описание - разберетесь, как нужно делать документацию. > Модуль находится тут: https://github.com/pef-secure/sql-struct Я не знаю, как комментировать уже существующий код на гитхабе (если это не пулл реквест), поэтому отпишусь здесь. Во-первых, имя модуля. Я понимаю, что вы когда-то использовали (и может быть используете) Class::Struct, и вам понравился его синтаксис, но по-моему сходства между двумя модулями практически нет - так что не вижу причины иметь Struct в названии. Впрочем, еще меньше причин иметь там SQL - поскольку модуль не работает непосредственно с SQL, а скорее с БД, поэтому ему больше подойдет имя вида DBIx::$something. Теперь к самому коду. Я обращу внимание на общие проблемы и на несколько частных случаев. Не заметил в коде ни одного комментария (закомментированный "#print $eval_code" не считается). Я понимаю, что можно писать самодокументируемый код, но это явно не ваш случай - код написан сплошняком, много повторяющихся конструкций (напр.: (index($table, " ") == -1)), которые неплохо бы выделить в подпрограммы. Все это затрудняет понимание кода - как в процессе ревью, так и при попытке что-то изменить / исправить баг и т.д. (к слову, sub setup_row() - это вообще один большой пиздец). > If you need other database support be prepared to help me to test and debug it. - ну-ну, ну-ну. Идем дальше. Не вижу документации на параметры импорта. К слову, о самой функции импорта: > sub import { > my $defconn = 0; > for (my $i = 1; $i < @_; ++$i) { > if ($_[$i] eq 'connector') { > (undef, $connector_module) = splice @_, $i, 2; > --$i; > if (not $defconn > and check_package_scalar($connector_module, 'conn')) > { > *conn = \${ $connector_module . '::conn' }; > } > } elsif ($_[$i] eq 'constructor') { > (undef, $connector_constructor) = splice @_, $i, 2; > --$i; - имхо, изврат - почему бы не сделать my %arg = @_; и дальше проверять, что там в %arg? Так ли уж нужен вам этот > $_[0]->export_to_level(1, @_); в конце? > sub execute { > my ($groupby, $having, $up_conditions, $up_order, $up_limit, > $up_offset); > for (my $i = 0; $i < @_; ++$i) { > if ($_[$i] eq '-group_by') { > (undef, $groupby) = splice @_, $i, 2; > --$i; Та же фигня. Об ошибках: croak \%error - это далеко не самый удобный для пользователя способ получать сообщение об ошибке. Что он увидит на экране, HASH(0x2558cb8)? В качестве одного из наиболее гибких способов уведомления об ошибках можно рассмотреть модуль https://metacpan.org/pod/Lexical::Failure. Еще об ошибках: у вас везде { result => 'SQLERR' } - может в таком случае вообще избавиться от поля result? Да, и зачем croak(), если die() имеет тот же эффект с хешами? О коде: > sub connect { > goto &_not_yet_connected; > } А зачем такой изврат? Почему бы не сделать просто что-то типа return state $connection ||= _connect();? > sub _connect { > my ($self, @args) = @_; > for (1 .. 30) { > my $dbh = eval { $self->SUPER::_connect(@args) }; > return $dbh if $dbh; > sleep 1; > } > die $@ if $@; > die "no connect"; > } Seriously? Ждем 30 секунд, чтобы понять, что БД упала? Такое может быть внутри какой-то вашей системы, но никак не на CPAN. > my $filter_timestamp = qq|\t\tsub filter_timestamp { > my \$self = \$_[0]; > if(\@_ == 1) { > for my \$f ($timestamps) { > \$self->[@{[_row_data]}][\$fields{\$f}] =~ s/\\.\\d+\$// if \$self->[@{[_row_data]}][\$fields{\$f}]; > } > } else { > for my \$f (\@_[1..\$#_]) { > \$self->[@{[_row_data]}][\$fields{\$f}] =~ s/\\.\\d+\$// if \$self->[@{[_row_data]}][\$fields{\$f}]; > } > }\n\t\t}\n|; По моему нескромному мнению для подобного гораздо лучше подходит here-document. И к слову: весьма рекомендую для кодогенерации использовать модуль Sub::Quote. > if (@refkeys) { > for my $rk (@refkeys) { if не нужен. ---- Ну в-общем как-то так. По моему мнению модуль для публикации на CPAN не готов. Его нужно еще перевести из разряда доморощенных ускоспециализированных инструментов в разряд широкоспециализированных. Ключевые слова: документация (в т.ч. сравнение с другими похожими модулями и комментарии к коду), тесты, рефакторинг, читабельность, юзебельность (адаптация для использования другими пользователями - в частности, error reporting). > Это у меня намечено вторым шагом. Перед публикацией на prepan была надежда кто-нибудь мне на ошибки в английском сначала покажет :) Инглиш вполне сносный. Лучше напишите на русском так, чтобы все было понятно. А на английский потом перевести нетрудно. Заодно и презентацию можно будет сделать потом при желании. -- Best regards, Ilya Chesnokov From theathlet на yandex.ru Fri Nov 28 23:42:05 2014 From: theathlet на yandex.ru (TheAthlete) Date: Sat, 29 Nov 2014 10:42:05 +0300 Subject: [Moscow.pm] =?utf-8?b?0JHQsNCzINCyIEpTT046OlhTPw==?= In-Reply-To: References: Message-ID: Согласен, что перекрывает, но здесь JSON::XS создан с методом convert_blessed, который говорит, что переданный обхект должен иметь метод TO_JSON. Объект модуля boolean имеет данный метод. $ perl -MData::Printer -MCpanel::JSON::XS -Mboolean=-truth -E '$j = Cpanel::JSON::XS->new->convert_blessed; $b = (0 == 1); say $j->encode({false => $b}); p$b' {"false":false} boolean { Parents Exporter public methods (9) : boolean, false, import, isBoolean, isFalse, isTrue, TO_JSON, true, truth private methods (1) : __ANON__ internals: 0 } $ perl -MData::Printer -MJSON::XS -Mboolean=-truth -E '$j = JSON::XS->new->convert_blessed; $b = (0 == 1); say $j->encode({false => $b}); p $b' Modification of a read-only value attempted at -e line 1. Насколько я понял, эта ошибка связана с приведением к строке булевых значений (Boolean stringify) в модуле boolean. Данная ошибка была скорее всего исправлена в Cpanel::JSON::XS начиная с версии 2.3311 - https://github.com/rurban/Cpanel-JSON-XS/commit/a42d7b7ec05c9aad18ba9b0ef12c721c31a47317 Victor Efimov писал(а) в своём письме Fri, 28 Nov 2014 20:44:50 +0300: > 28 ноября 2014 г., 18:41 пользователь TheAthlete > написал: >> Неделя багов в JSON::XS! :) > > Почему это баг JSON::XS ? > > use strict; use warnings; > use Test::More tests => 3; > use boolean -truth; > use JSON::XS; > my $json = JSON::XS->new; > is($json->encode({"hey" => !!0}), 'abc', 'JSON false works'); > > тоже фейлится. если > > use boolean -truth; > > закоментировать, то работает норм. > > Это потому что опция > > -truth > > You can specify the -truth option to override truth operators to > return boolean values. > > use boolean -truth; > print ref("hello" eq "world"), "\n"; > > > перекрывает операторы Perl, чтобы они возвращали объект. Почему > считается что JSON::XS должен с этим работать ? Почему это не баг в > "boolean" ? > > >> Тоже столкнулся с багом в JSON::XS - при установке модуля boolean, >> который >> в зависимостях у Test::DBIx::Class, не был пройден тест json.t. >> Заглянув в issue данного модуля на github, нашел такой тикет: >> >> json.t fails on many Linux systems - >> https://github.com/ingydotnet/boolean-pm/issues/5 >> >> Там некоторые советуют установить Cpanel::JSON::XS - установил и все >> заработало, хотя не у всех падает при установленном JSON::XS. >> >> Если модифицировать тест: >> >> use strict; use warnings; >> use Test::More tests => 3; >> use boolean -truth; >> my $HAVE_JSON = eval { require JSON::MaybeXS }; >> SKIP: { >> skip "JSON is missing", 3 unless $HAVE_JSON; >> eval{ >> my $json = JSON::MaybeXS->new->convert_blessed(); >> is($json->encode({false => (0 == 1)}), '{"false":false}', >> 'JSON false works'); >> is($json->encode({true => (1 == 1)}), '{"true":true}', >> 'JSON true works'); >> is(ref(boolean::TO_JSON(true)), 'SCALAR', >> 'Make sure we can call boolean::TO_JSON($b)'); >> } >> }; >> >> в следующий: >> >> use strict; use warnings; >> use Test::More tests => 3; >> use boolean -truth; >> my $HAVE_JSON = eval { require JSON::XS }; >> SKIP: { >> skip "JSON is missing", 3 unless $HAVE_JSON; >> my $json = JSON::XS->new->convert_blessed(); >> is($json->encode({false => (0 == 1)}), '{"false":false}', >> 'JSON false works'); >> is($json->encode({true => (1 == 1)}), '{"true":true}', >> 'JSON true works'); >> is(ref(boolean::TO_JSON(true)), 'SCALAR', >> 'Make sure we can call boolean::TO_JSON($b)'); >> }; >> >> и запустить, то тест сваливается с ошибкой "Modification of a read-only >> value attempted at test/json.t line 9" >> >> Если заменить на Cpanel::JSON::XS или JSON::PP, то все ок >> >> Вадим Власов писал(а) в своём письме Wed, 26 >> Nov >> 2014 20:01:33 +0300: >> >>> Исследуя новый сериализатор в JSON::XS наткнулся: >>> >>> $ echo 'use strict; >>> use warnings; >>> use feature "say"; >>> >>> use JSON::XS; >>> my $j=JSON::XS->new->allow_tags; >>> >>> say "JSON::XS: $JSON::XS::VERSION"; >>> say "Types::Serialiser: $Types::Serialiser::VERSION"; >>> >>> my $t = $j->encode( Foo->new ); >>> say $t; >>> >>> my @t = $j->encode( Foo->new ); >>> >>> package Foo; >>> sub new { bless {}, $_[0]; } >>> sub FREEZE { ( 123, 456 ); }' | perl >>> *JSON::XS: 3.01* >>> *Types::Serialiser: 1.0* >>> *("Foo")[123,456]* >>> *panic: attempt to copy freed scalar c37a18 to c37a00 at - line 14.* >>> >>> $ perl -MJSON::XS -wE 'say JSON::XS->new->allow_tags->encode( bless {}, >>> Foo >>> ); package Foo; sub FREEZE{ return 123 }' >>> *Use of uninitialized value in say at -e line 1.* >>> *("Foo")[123]* >>> >>> $ perl -MJSON::XS -wE 'say scalar( JSON::XS->new->allow_tags->encode( >>> bless >>> {}, Foo )); package Foo; sub FREEZE{ return 123 }' >>> *("Foo")[123]* >>> >>> Проверили на разных машинах и на разных версиях perl-а - одно и то же. >>> >> >> >> -- >> Написано в почтовом клиенте браузера Opera: http://www.opera.com/mail/ >> >> -- >> Moscow.pm mailing list >> moscow-pm на pm.org | http://moscow.pm.org -- Написано в почтовом клиенте браузера Opera: http://www.opera.com/mail/ From pef-secure на yandex.ru Sat Nov 29 01:03:35 2014 From: pef-secure на yandex.ru (PEF Secure) Date: Sat, 29 Nov 2014 10:03:35 +0100 Subject: [Moscow.pm] =?utf-8?b?0L/RgNC+0YjRgyDQv9C+0LzQvtGJ0Lgg0YEg0YA=?= =?utf-8?b?0LXQstGM0Y4g0LzQvtC00YPQu9GP?= In-Reply-To: References: <17955628.eidx6fWCdn@rawen> Message-ID: <1792574.8yL0vMGS1O@rawen> On Saturday, November 29, 2014 02:49:32 Ilya Chesnokov wrote: > Я бы все же сказал, что это ORM, т.к. он по сути отображает таблицы в > объекты. И даже, как я понял, автоматически определяет связи и создает > аксессоры для объектов из связанных таблиц. Если в этом смысле, то это не классический ORM, как я их видел. Классы создаются динамически исходя из структуры базы в момент коннекта или при первом обращении, если таблицу создали уже после того, как был коннект к базе. > Можете конкретно объяснить, в чем его сходства и отличия от похожих > модулей? В чем его преимущества, недостатки перед ними, что > реализовано по-другому? > В чем преимущество, например, перед DBIx::Class - кроме разве что > (предположительно) меньшего потребления памяти? "Лёгкость" была главным аргументом. Легко начать использовать, создаются "лёгкие" объекты. Простые вещи делаются просто -- на мой взгляд уже проще некуда. > Очень претенциозное высказывание, к тому же неверное: "сложный" - это > не синоним "невозможного". Бывают, на мой взгляд, сложные случаи, когда лично мне проще перейти к прямому SQL. > > Предыдущая версия этого модуля > > у меня уже пару лет используется и доказала свою полезность. > Эта фраза почему-то сразу внушает опасения... Я говорил про общий интерфейс. > В идеале этот код должен находиться в подкаталоге t/ в виде тестов. > "Нет в хозяйстве баз" - это не оправдание - я понимаю, что вы > "тестируете" этот код наживую - но в идеале нужно написать тесты, > которые создадут нужные таблицы для каждого типа баз и протестируют > каждую функцию модуля. Да, пожалуй. К сожалению, не видел хорошего способа узнать параметры для коннекта к базе, что есть у пользователя, кроме трёх переменных окружения, но кто ж их задаст... > Кстати, кроме мускуля и постгри есть и другие БД. Итоговое количество > проблем = 2 + $count_rdbms_left. Есть, я готов к ним адаптировать код, если это кому то будет нужно. > Ничего не понял. Класс NoUser сгенерировался автоматически? Или это > класс исключения, который описан где-то у вас в коде? Если так, то и > пишите человекопонятный die() или croak(). Это класс исключения, что я думал понятно по слову throw, ошибку понял. > Где комменты? Что делает, например, $client->filter_timestamp? Описано в Struct.pod. > И еще было бы неплохо показать схему таблиц, на которой вы все это > запускаете. Описано в Struct.pod. > Посмотрите мануал к DBIx::Class - там неплохое описание - > разберетесь, как нужно делать документацию. Хорошо. Документация не мой конёк, но я постараюсь. > Я не знаю, как комментировать уже существующий код на гитхабе (если > это не пулл реквест), поэтому отпишусь здесь. > > Во-первых, имя модуля. Я понимаю, что вы когда-то использовали (и > может быть используете) Class::Struct, и вам понравился его синтаксис, > но по-моему сходства между двумя модулями практически нет - так что не > вижу причины иметь Struct в названии. Впрочем, еще меньше причин иметь > там SQL - поскольку модуль не работает непосредственно с SQL, а скорее > с БД, поэтому ему больше подойдет имя вида DBIx::$something. Зависит от точки зрения. Я рассматривал модуль как предсказуемый построитель SQL-запросов к базе, т.е. когда я пользуюсь модулем, я представляю какой запрос был сгенерирован на самом деле, поэтому "SQL::". Использование "Struct" отражает принцип хранения данных, хотя, конечно, слабоватое основание. > > Теперь к самому коду. Я обращу внимание на общие проблемы и на > несколько частных случаев. > Вот за это спасибо :) > Не заметил в коде ни одного комментария (закомментированный "#print > $eval_code" не считается). Я понимаю, что можно писать > самодокументируемый код, но это явно не ваш случай - код написан > сплошняком, много повторяющихся конструкций (напр.: (index($table, " > ") == -1)), которые неплохо бы выделить в подпрограммы. > Все это затрудняет понимание кода - как в процессе ревью, так и при > попытке что-то изменить / исправить баг и т.д. (к слову, sub > setup_row() - это вообще один большой пиздец). Я согласен про код и setup_row() особенно. Моя проблема в том, что я не могу себе представить потенциального читателя моего кода, а лично для меня не представляет проблемы его прочтение и через несколько лет. Комментарии имеет смысл писать в уже статичном коде, в динамично меняющемся коде они могут устаревать и вводить в заблуждение. Но моя проблема в том, что после стабилизации одного кода, я перехожу к следующему коду, оставляя написанный без комментариев :) Для представляемого на обсуждение кода нужно подумать как поменять привычки. > Не вижу документации на параметры импорта. Её нет. Не написал пока. Это вобщем новая функциональность, документацию добавлю. > К слову, о самой функции импорта: > > > sub import { > > > > my $defconn = 0; > > for (my $i = 1; $i < @_; ++$i) { > > > > if ($_[$i] eq 'connector') { > > > > (undef, $connector_module) = splice @_, $i, 2; > > --$i; > > if (not $defconn > > > > and check_package_scalar($connector_module, 'conn')) > > > > { > > > > *conn = \${ $connector_module . '::conn' }; > > > > } > > > > } elsif ($_[$i] eq 'constructor') { > > > > (undef, $connector_constructor) = splice @_, $i, 2; > > --$i; > > > - имхо, изврат - почему бы не сделать my %arg = @_; и дальше > проверять, что там в %arg? Так ли уж нужен вам этот > > > $_[0]->export_to_level(1, @_); > > в конце? Он нужен, чтобы отработал Exporter. Можно, конечно, всё руками экспортировать, а можно через Exporter, я выбрал последний вариант. Вернее, я не избавился от него после добавления кастомного варианта import(). На счёт %args -- это сломает вариант use SQL::Struct qw($conn). > > sub execute { > > > > my ($groupby, $having, $up_conditions, $up_order, $up_limit, > > > > $up_offset); > > > > for (my $i = 0; $i < @_; ++$i) { > > > > if ($_[$i] eq '-group_by') { > > > > (undef, $groupby) = splice @_, $i, 2; > > --$i; > > > Та же фигня. Это намеренно, параметры могут быть именованными или позиционными. > Об ошибках: > > croak \%error - это далеко не самый удобный для пользователя способ > получать сообщение об ошибке. Что он увидит на экране, > HASH(0x2558cb8)? В качестве одного из наиболее гибких способов > уведомления об ошибках можно рассмотреть модуль > https://metacpan.org/pod/Lexical::Failure. > Еще об ошибках: у вас везде { result => 'SQLERR' } - может в таком > случае вообще избавиться от поля result? Да, ошибки немного "оригинально" сообщаются. Возможно имеет смысл добавть встраиваемый механизм. Я ловлю и проверяю их на ref $@, в структурированном сообщении больше полезной информации. > Да, и зачем croak(), если die() имеет тот же эффект с хешами? Привычка, да и само слово не означает "умереть" в буквальном смысле. > О коде: > > sub connect { > > goto &_not_yet_connected; > > } > > > А зачем такой изврат? Почему бы не сделать просто что-то типа return > state $connection ||= _connect();? Личное предпочтение. Именно шаблон предлагаемого кода я считаю "технологическим извратом", а подмену функции на возвращающую значение безусловно считаю "умно". > > sub _connect { > > > > my ($self, @args) = @_; > > for (1 .. 30) { > > > > my $dbh = eval { $self->SUPER::_connect(@args) }; > > return $dbh if $dbh; > > sleep 1; > > > > } > > die $@ if $@; > > die "no connect"; > > > > } > > > Seriously? Ждем 30 секунд, чтобы понять, что БД упала? Такое может > быть внутри какой-то вашей системы, но никак не на CPAN. Да, неконфигурируемый параметр, переделаю. Проблема не в падении базы. Банальная проблема: апгрейд софта. Пришло, например, секьюрити-обновление для postgresql, приложению его апгрейд с данным коннектором пройдёт "незамеченным", если апгрейд уложится в 30 секунд. Все запросы, не использующие $dbh за пределами коннектора, просто подождут восстановления базы. > По моему нескромному мнению для подобного гораздо лучше подходит > here-document. Ещё лучше подошёл бы набор шаблонов, но требовать шаблонизатор для подобного модуля уже перебор :) Особой разницы не вижу, но мне не принципиально. > И к слову: весьма рекомендую для кодогенерации использовать > модуль Sub::Quote. > > > if (@refkeys) { > > > > for my $rk (@refkeys) { > > > if не нужен. Да, согласен. > > ---- > > Ну в-общем как-то так. > > По моему мнению модуль для публикации на CPAN не готов. Это, вобщем, я и ожидал. > Его нужно еще > перевести из разряда доморощенных ускоспециализированных инструментов > в разряд широкоспециализированных. Да, спасибо за подмеченные места. > Ключевые слова: документация (в > т.ч. сравнение с другими похожими модулями и комментарии к коду), > тесты, рефакторинг, читабельность, юзебельность (адаптация для > использования другими пользователями - в частности, error reporting). Ага. > Инглиш вполне сносный. Лучше напишите на русском так, чтобы все было > понятно. А на английский потом перевести нетрудно. Заодно и > презентацию можно будет сделать потом при желании. На самом деле, этот модуль, в общем-то, "мелочь", на которой я хотел опробовать свои навыки в публикации кода для широкой общественности. Особой какой-то презентации и продвижения его не планировал. Мне достаточно, чтобы в будущем можно было делать apt-get install libsql-struct-perl (впрочем, о названии ещё подумаю) в своём дистрибутиве, это всё, что мне нужно. -- PEF Developer From chesnokov.ilya на gmail.com Sat Nov 29 03:03:44 2014 From: chesnokov.ilya на gmail.com (Ilya Chesnokov) Date: Sat, 29 Nov 2014 15:03:44 +0400 Subject: [Moscow.pm] =?utf-8?b?0L/RgNC+0YjRgyDQv9C+0LzQvtGJ0Lgg0YEg0YA=?= =?utf-8?b?0LXQstGM0Y4g0LzQvtC00YPQu9GP?= In-Reply-To: <1792574.8yL0vMGS1O@rawen> References: <17955628.eidx6fWCdn@rawen> <1792574.8yL0vMGS1O@rawen> Message-ID: 29 ноября 2014 г., 12:03 пользователь PEF Secure написал: > On Saturday, November 29, 2014 02:49:32 Ilya Chesnokov wrote: >> Я бы все же сказал, что это ORM, т.к. он по сути отображает таблицы в >> объекты. И даже, как я понял, автоматически определяет связи и создает >> аксессоры для объектов из связанных таблиц. > > Если в этом смысле, то это не классический ORM, как я их видел. Классы > создаются динамически исходя из структуры базы в момент коннекта или при > первом обращении, если таблицу создали уже после того, как был коннект к базе. Ну вот это и надо бы написать в документации в начале раздела "DESCRIPTION". Но к слову динамическое создание схемы в памяти есть и в DBIx::Class, но не рекомендуется из-за долгого времени загрузки в этом случае: https://metacpan.org/pod/DBIx::Class::Schema::Loader#make_schema_at https://metacpan.org/pod/distribution/DBIx-Class/lib/DBIx/Class/Manual/Cookbook.pod#Statically-Define-Your-Schema >> Можете конкретно объяснить, в чем его сходства и отличия от похожих >> модулей? В чем его преимущества, недостатки перед ними, что >> реализовано по-другому? >> В чем преимущество, например, перед DBIx::Class - кроме разве что >> (предположительно) меньшего потребления памяти? > > "Лёгкость" была главным аргументом. Легко начать использовать, создаются > "лёгкие" объекты. Простые вещи делаются просто -- на мой взгляд уже проще > некуда. Ок. Думаю, тоже можно добавить в описание модуля. >> Ничего не понял. Класс NoUser сгенерировался автоматически? Или это >> класс исключения, который описан где-то у вас в коде? Если так, то и >> пишите человекопонятный die() или croak(). > > Это класс исключения, что я думал понятно по слову throw, ошибку понял. В принципе понятно, если задуматься, но не очевидно :) Так что не помешал бы комментарий или более привычный способ сообщения об ошибке. >> Где комменты? Что делает, например, $client->filter_timestamp? > > Описано в Struct.pod. Ок. Это не очень очевидно, поэтому не помешал бы комментарий. >> И еще было бы неплохо показать схему таблиц, на которой вы все это >> запускаете. > > Описано в Struct.pod. Лучше было бы показать схему перед примерами, чтобы было понятнее. >> Я не знаю, как комментировать уже существующий код на гитхабе (если >> это не пулл реквест), поэтому отпишусь здесь. >> >> Во-первых, имя модуля. Я понимаю, что вы когда-то использовали (и >> может быть используете) Class::Struct, и вам понравился его синтаксис, >> но по-моему сходства между двумя модулями практически нет - так что не >> вижу причины иметь Struct в названии. Впрочем, еще меньше причин иметь >> там SQL - поскольку модуль не работает непосредственно с SQL, а скорее >> с БД, поэтому ему больше подойдет имя вида DBIx::$something. > > Зависит от точки зрения. Я рассматривал модуль как предсказуемый построитель > SQL-запросов к базе, т.е. когда я пользуюсь модулем, я представляю какой > запрос был сгенерирован на самом деле, поэтому "SQL::". Использование "Struct" > отражает принцип хранения данных, хотя, конечно, слабоватое основание. Но все же модуль этот - расширение над DBI, поэтому DBIx. Если бы он работал непосредственно с SQL, без соединения с БД, то был бы SQL:: (может я ошибаюсь - есть ли на CPAN подобные модули, называющиеся начиная с SQL::?). > >> Не заметил в коде ни одного комментария (закомментированный "#print >> $eval_code" не считается). Я понимаю, что можно писать >> самодокументируемый код, но это явно не ваш случай - код написан >> сплошняком, много повторяющихся конструкций (напр.: (index($table, " >> ") == -1)), которые неплохо бы выделить в подпрограммы. >> Все это затрудняет понимание кода - как в процессе ревью, так и при >> попытке что-то изменить / исправить баг и т.д. (к слову, sub >> setup_row() - это вообще один большой пиздец). > > Я согласен про код и setup_row() особенно. Моя проблема в том, что я не могу > себе представить потенциального читателя моего кода, а лично для меня не > представляет проблемы его прочтение и через несколько лет. "Когда пишете код, представляйте, что следующий, кто будет его поддерживать - сумасшедший маньяк, который знает, где вы живете" :) > Комментарии имеет > смысл писать в уже статичном коде, в динамично меняющемся коде они могут > устаревать и вводить в заблуждение. Комментарии нужно писать постоянно и менять с изменением кода. Или писать самодокументированный код: например, вместо $client->filter_timestamp писать $client->strip_microseconds_from_timestamp_columns (я не предлагаю это делать - только привожу пример, как это могло бы выглядеть более читабельно). > Но моя проблема в том, что после > стабилизации одного кода, я перехожу к следующему коду, оставляя написанный > без комментариев :) Для представляемого на обсуждение кода нужно подумать как > поменять привычки. > >> Не вижу документации на параметры импорта. > > Её нет. Не написал пока. Это вобщем новая функциональность, документацию > добавлю. > >> К слову, о самой функции импорта: > >> >> > sub import { >> > >> > my $defconn = 0; >> > for (my $i = 1; $i < @_; ++$i) { >> > >> > if ($_[$i] eq 'connector') { >> > >> > (undef, $connector_module) = splice @_, $i, 2; >> > --$i; >> > if (not $defconn >> > >> > and check_package_scalar($connector_module, 'conn')) >> > >> > { >> > >> > *conn = \${ $connector_module . '::conn' }; >> > >> > } >> > >> > } elsif ($_[$i] eq 'constructor') { >> > >> > (undef, $connector_constructor) = splice @_, $i, 2; >> > --$i; >> >> >> - имхо, изврат - почему бы не сделать my %arg = @_; и дальше >> проверять, что там в %arg? Так ли уж нужен вам этот >> >> > $_[0]->export_to_level(1, @_); >> >> в конце? > > Он нужен, чтобы отработал Exporter. Это понятно, я скорее имел в виду, нужен ли там последний параметр - @_? Насколько я понял, вы из него уже вытащили все вам необходимое. > Можно, конечно, всё руками экспортировать, > а можно через Exporter, я выбрал последний вариант. Вернее, я не избавился от > него после добавления кастомного варианта import(). На счёт %args -- это > сломает вариант use SQL::Struct qw($conn). Не заметил варианта такого использования. Ок, если так. >> Об ошибках: >> >> croak \%error - это далеко не самый удобный для пользователя способ >> получать сообщение об ошибке. Что он увидит на экране, >> HASH(0x2558cb8)? В качестве одного из наиболее гибких способов >> уведомления об ошибках можно рассмотреть модуль >> https://metacpan.org/pod/Lexical::Failure. >> Еще об ошибках: у вас везде { result => 'SQLERR' } - может в таком >> случае вообще избавиться от поля result? > > Да, ошибки немного "оригинально" сообщаются. Возможно имеет смысл добавть > встраиваемый механизм. Я ловлю и проверяю их на ref $@, в структурированном > сообщении больше полезной информации. Сам по себе механизм неплох, но не очень привычен для CPAN-модуля. К слову о пространствах имен - вы генерируете классы DBC::* и DBQ::* - где гарантия, что в коде не будет уже классов с таким именем? Может стоит добавить имя базового модуля в качестве префикса - т.е. что-то типа SQL::Struct::DB[C|Q]::*? >> Да, и зачем croak(), если die() имеет тот же эффект с хешами? > > Привычка, да и само слово не означает "умереть" в буквальном смысле. Зато die() побыстрее. >> О коде: >> > sub connect { >> > goto &_not_yet_connected; >> > } >> >> >> А зачем такой изврат? Почему бы не сделать просто что-то типа return >> state $connection ||= _connect();? > > Личное предпочтение. Именно шаблон предлагаемого кода я считаю > "технологическим извратом", а подмену функции на возвращающую значение > безусловно считаю "умно". Это безусловно "умно", а следовательно нарушает принцип KISS. >> По моему нескромному мнению для подобного гораздо лучше подходит >> here-document. > > Ещё лучше подошёл бы набор шаблонов, но требовать шаблонизатор для подобного > модуля уже перебор :) Особой разницы не вижу, но мне не принципиально. Шаблоны - это точно перебор, а heredoc - самое то. Плюс Sub::Quote. >> >> ---- >> >> Ну в-общем как-то так. >> >> По моему мнению модуль для публикации на CPAN не готов. > > Это, вобщем, я и ожидал. Не стоит это воспринимать как приговор - это всего лишь первое ревью :) >> Инглиш вполне сносный. Лучше напишите на русском так, чтобы все было >> понятно. А на английский потом перевести нетрудно. Заодно и >> презентацию можно будет сделать потом при желании. > > На самом деле, этот модуль, в общем-то, "мелочь", на которой я хотел > опробовать свои навыки в публикации кода для широкой общественности. Отлично. Исправляйте основные проблемы и публикуйте. По большому счету единственная серьезная проблема - это 30-секундное ожидание при отсутствии соединения с базой. Также нужно решить вопрос об имени модуля и пространстве имен генерируемых классов. Остальное в порядке "желательного". Даже error reporting можно оставить как есть - только описать его в документации. Да, еще заметил: > $conn = $connector_module->$connector_constructor(@$connector_args) > or croak { > answer => "SQL_connect error", > result => 'SQLERR', > }; - везде 'message', а тут 'answer' - ошибка? > Особой > какой-то презентации и продвижения его не планировал. Мне достаточно, чтобы в > будущем можно было делать apt-get install libsql-struct-perl (впрочем, о > названии ещё подумаю) в своём дистрибутиве, это всё, что мне нужно. Для своего дистрибутива можно создать отдельный репо, как многие делают. > -- > PEF Developer > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org -- Best regards, Ilya Chesnokov From pef-secure на yandex.ru Sat Nov 29 06:03:57 2014 From: pef-secure на yandex.ru (PEF Secure) Date: Sat, 29 Nov 2014 15:03:57 +0100 Subject: [Moscow.pm] =?utf-8?b?0L/RgNC+0YjRgyDQv9C+0LzQvtGJ0Lgg0YEg0YA=?= =?utf-8?b?0LXQstGM0Y4g0LzQvtC00YPQu9GP?= In-Reply-To: References: <17955628.eidx6fWCdn@rawen> <1792574.8yL0vMGS1O@rawen> Message-ID: <14935199.014ZikOoqs@rawen> On Saturday, November 29, 2014 15:03:44 Ilya Chesnokov wrote: > > Если в этом смысле, то это не классический ORM, как я их видел. Классы > > создаются динамически исходя из структуры базы в момент коннекта или при > > первом обращении, если таблицу создали уже после того, как был коннект к > > базе. > > Ну вот это и надо бы написать в документации в начале раздела > "DESCRIPTION". Хорошо. > Но к слову динамическое создание схемы в памяти есть и в DBIx::Class, > но не рекомендуется из-за долгого времени загрузки в этом случае: > https://metacpan.org/pod/DBIx::Class::Schema::Loader#make_schema_at > https://metacpan.org/pod/distribution/DBIx-Class/lib/DBIx/Class/Manual/Cookb > ook.pod#Statically-Define-Your-Schema Загрузка интерпретатора Perl уже не быстрый процесс, время на стартап, поэтому, считаю не особо критичным. Запущенное приложение имеет уже все классы в своём распоряжении, последующие форки уже имеют всю схему. Да и сам процесс, мне кажется, у меня легче и прямее организован, чем в DBIx::Class. По крайней мере, пока. > > "Лёгкость" была главным аргументом. Легко начать использовать, создаются > > "лёгкие" объекты. Простые вещи делаются просто -- на мой взгляд уже проще > > некуда. > > Ок. Думаю, тоже можно добавить в описание модуля. Хорошо. Понимание что написать в документации для меня ценно. > В принципе понятно, если задуматься, но не очевидно :) Так что не > помешал бы комментарий или более привычный способ сообщения об ошибке. Хорошо. > Лучше было бы показать схему перед примерами, чтобы было понятнее. Ридми написано "для затравки", а текст первого сообщения в этом списке рассылки ещё короче, чтобы быть прочитанным. В коротком сообщении трудно описать все тонкости, я подумаю над сообщением для следующкго раза. > Но все же модуль этот - расширение над DBI, поэтому DBIx. > Если бы он работал непосредственно с SQL, без соединения с БД, то был > бы SQL:: (может я ошибаюсь - есть ли на CPAN подобные модули, > называющиеся начиная с SQL::?). Хорошо, будет DBIx::, осталось придумать второе слово. Light? ;) > "Когда пишете код, представляйте, что следующий, кто будет его > поддерживать - сумасшедший маньяк, который знает, где вы живете" :) Я читал это :) Основной мой вопрос в уровне интеллекта этого маньяка. При некотром напряжении мысли, мой код понимабелен "средним по больнице" программистом. Это проверено на практике. Я, тем не менее, постараюсь реструктурировать код в более понятный и даже комментарии добавлю :) > Комментарии нужно писать постоянно и менять с изменением кода. Или > писать самодокументированный код: например, вместо > $client->filter_timestamp писать > $client->strip_microseconds_from_timestamp_columns (я не предлагаю это > делать - только привожу пример, как это могло бы выглядеть более > читабельно). Да, читабельности такой вариант добавляет, но отнимает писабельность. Нужен компромисс. Изначально была мысль формат добавить, но оказалось не востребовано, везде всех устроил дефолтный формат без микросекунд. Я открыт для предложений и сам подумаю. > > Он нужен, чтобы отработал Exporter. > Это понятно, я скорее имел в виду, нужен ли там последний параметр - > @_? Насколько я понял, вы из него уже вытащили все вам необходимое. Не всё, в @EXPORT_OK есть один параметр, теоретически, можно придумать ещё какие-то. Я не совсем понял проблему. Разбор массива параметров импорта, на мой взгляд, не так уж страшен. Он решает проблему одиночных и парных параметров. > Сам по себе механизм неплох, но не очень привычен для CPAN-модуля. Согласен, я сделаю обёртку, которая будет передаваться при импорте. > К слову о пространствах имен - вы генерируете классы DBC::* и DBQ::* - > где гарантия, что в коде не будет уже классов с таким именем? Может > стоит добавить имя базового модуля в качестве префикса - т.е. что-то > типа SQL::Struct::DB[C|Q]::*? Я не люблю длинные имена без необходимости. Я не люблю, когда для выражения мысли нужно написать много "букав". Я люблю перл за возможность выражения мысли кратко. Конкретно по этим префиксам я проверил CPAN на их отсутствие, но я признаю, что в глобалном смысле это надо конфигурировать. Я добавлю эту возможность. > Зато die() побыстрее. "Быстрее", обычно, это когда умирать не надо :) Я не задумывался над аспектом скорости в сравнении croak и die, может быть действительно имеет смысл отказаться от Carp. > Это безусловно "умно", а следовательно нарушает принцип KISS. Объект коннектора там настраивается, поэтому он не может быть state. Условная проверка в том месте, что должно инициализировать только один раз, а затем безусловно возвращаться -- лично меня несколько "расстраивает", поэтому я применил фокус. На счёт понятности фокуса, тут сложно мне судить, но, вроде, ничего сложного. > Шаблоны - это точно перебор, а heredoc - самое то. Плюс Sub::Quote. Я подумаю при реструктуризации. > Не стоит это воспринимать как приговор - это всего лишь первое ревью :) Я так вообще рад, что нашёлся хоть кто-то, способный прочитать и грамотно разобрать мой код :) Что найдётся над чем работать я ожидал. > Отлично. Исправляйте основные проблемы и публикуйте. Хорошо. > По большому счету единственная серьезная проблема - это 30-секундное > ожидание при отсутствии соединения с базой. Для меня это было скорее решением, чем проблемой :) Вернее, это решение для относительно кратковременного пропадания коннекта к базе. > Также нужно решить вопрос > об имени модуля и пространстве имен генерируемых классов. Остальное в > порядке "желательного". Даже error reporting можно оставить как есть - > только описать его в документации. Хорошо. > - везде 'message', а тут 'answer' - ошибка? Да, ошибка, спасибо! :) Оно не было ошибкой до трансформации модуля. > Для своего дистрибутива можно создать отдельный репо, как многие делают. Для себя можно просто пользоваться модулем и никуда не выкладывать. -- PEF Developer From pef-secure на yandex.ru Sat Nov 29 12:00:04 2014 From: pef-secure на yandex.ru (PEF Secure) Date: Sat, 29 Nov 2014 21:00:04 +0100 Subject: [Moscow.pm] =?utf-8?b?0L/RgNC+0YjRgyDQv9C+0LzQvtGJ0Lgg0YEg0YA=?= =?utf-8?b?0LXQstGM0Y4g0LzQvtC00YPQu9GP?= In-Reply-To: References: <17955628.eidx6fWCdn@rawen> <1792574.8yL0vMGS1O@rawen> Message-ID: <4954866.7cmkHhDbe1@rawen> On Saturday, November 29, 2014 15:03:44 Ilya Chesnokov wrote: > Отлично. Исправляйте основные проблемы и публикуйте. > > По большому счету единственная серьезная проблема - это 30-секундное > ожидание при отсутствии соединения с базой. Частично исправил замечания. Осталось что-то сделать с setup_row(), чтобы перестала выглядеть так кошмарно. > Также нужно решить вопрос > об имени модуля и пространстве имен генерируемых классов. Пока что рабочий вариант DBIx::Struct, поскольку разные lite, light и easy уже заняты :) > Остальное в > порядке "желательного". Даже error reporting можно оставить как есть - > только описать его в документации. Тоже переделал, чтобы ошибки по умолчанию стали строчными. Функция import поднагрузилась функциональностью, но документации на неё пока нет... -- PEF Developer From mi на ya.ru Sun Nov 30 12:56:52 2014 From: mi на ya.ru (Nikolay Mishin) Date: Sun, 30 Nov 2014 23:56:52 +0300 Subject: [Moscow.pm] =?koi8-r?b?y8/NzcXO1Nkg1yDLz87DxSDT1NLPy8k=?= In-Reply-To: References: <5476F478.9010105@zebra-group.ru> <5477151C.2020803@gmail.com> Message-ID: <1212221417381012@web22o.yandex.ru> perltidy также, как и perlctitic использует use PPI; и задача, описанная выше вполне регулярная и решается этим модулем, там, конечно, документация к нему не айс, но врубиться можно нужно двигаться вот в каком направлении https://github.com/mishin/presentation/blob/master/ppi_add_comment_to_previous_line.pl на вход дается строка из https://github.com/mishin/presentation/blob/master/test_perl_code.pl use 5.14.0; use PPI; #use Smart::Comments; my $file_name = shift or die "Usage: $0 file_4_transform\n"; my $doc = PPI::Document->new($file_name); my @comments = (); my @statament = (); $doc->find( sub { my ( $root, $node ) = @_; if ( $node->isa('PPI::Token::Comment')) { push @comments, $node; } if ( $node->isa('PPI::Statement')) { push @statament, $node; } } ); #$module->prune( 'PPI::Token::Comment' ); ## @comments ## @statament say join "", на comments; say join "", на statament; понятно, что сделано для 1-й строки, но правильно именно так, удачи нет времени допиливать