From garikz на gmail.com Thu Jun 2 08:46:25 2016 From: garikz на gmail.com (Igor Zakharov) Date: Thu, 2 Jun 2016 18:46:25 +0300 Subject: [Moscow.pm] =?utf-8?b?0JTQvtC60YPQvNC10L3RgtC40YDQvtCy0LDQvdC4?= =?utf-8?b?0LUg0LrQvtC00LA=?= Message-ID: Коллеги, А чем нынче модно код документировать? Аджайл, то-сё, доки писать некода, хочется, чтобы прямо из комментов в коде забирало, и красивые html-странички делало. POD предлагать не надо, спасибо. Есть Natural Docs, но он что-то с 2011 не обновляется. -- Игорь Захаров ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From ivan на bessarabov.ru Thu Jun 2 09:21:56 2016 From: ivan на bessarabov.ru (=?UTF-8?B?0JjQstCw0L0g0JHQtdGB0YHQsNGA0LDQsdC+0LI=?=) Date: Thu, 2 Jun 2016 19:21:56 +0300 Subject: [Moscow.pm] =?utf-8?b?0JTQvtC60YPQvNC10L3RgtC40YDQvtCy0LDQvdC4?= =?utf-8?b?0LUg0LrQvtC00LA=?= In-Reply-To: References: Message-ID: Модно — делать http микросервисы в докере и документировать их через http://swagger.io/ 2016-06-02 18:46 GMT+03:00 Igor Zakharov : > Коллеги, > > А чем нынче модно код документировать? > Аджайл, то-сё, доки писать некода, хочется, чтобы прямо из комментов в коде > забирало, и красивые html-странички делало. POD предлагать не надо, спасибо. > Есть Natural Docs, но он что-то с 2011 не обновляется. > > -- > Игорь Захаров > > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > From alexandre на frolov.pp.ru Tue Jun 7 08:05:19 2016 From: alexandre на frolov.pp.ru (=?koi8-r?B?4czFy9PBzsTSIObSz8zP1w==?=) Date: Tue, 7 Jun 2016 18:05:19 +0300 Subject: [Moscow.pm] =?koi8-r?b?88XS18XSIE1vam9saWNpb3VzIMkgV2ViU29ja2V0?= =?koi8-r?b?cyAtIMvByyDQxdLFxMHU2CDXIMLSwdXaxdIg19naz9fZIM/UINfO?= =?koi8-r?b?xdvOxcfPINPF0tfJ08E/?= Message-ID: <01da01d1c0ce$01de0ae0$059a20a0$@frolov.pp.ru> Здравствуйте! Я делаю интеграцию с внешним телефонным сервисом. Задача - принимать вызовы от сервиса, когда поступает звонок от клиента и открывать страницу CRM для этого клиента. Пытаюсь сделать это на Mojolicious::Lite и WebSockets, но застрял на том, как мне принимать callback-вызовы (поступают просто на заданный URL) и передавать их в браузер по установленному заранее каналу WebSockets. Насколько я понимаю, обычный сценарий - это когда web-страница из браузера инициализирует соединение с сервером WebSocket, создает туда канал, потом через JavaScript отправляет запросы серверу и принимает от него данные. Так устроены все примеры, которые мне удалось найти, и они отлично работают. Но я никак не могу придумать, как мне архитектурно обеспечить прием callback-вызов от от внешнего сервиса в своем сервере Mojolicious::Lite, и затем передать их по заранее установленному каналу WebSockets в браузер. Использовать ли мне тот же самый URL, что и для инициализации канала WebSockets или другой? Если другой, то как получить и передать данные? Буду благодарен за помощь! С уважением, Александр Фролов ----------- следущая часть ----------- Вложение не в текстовом формате было извлечено… Имя: smime.p7s Тип: application/pkcs7-signature Размер: 6205 байтов Описание: отсутствует URL: From dim0xff на gmail.com Tue Jun 7 09:18:45 2016 From: dim0xff на gmail.com (Dmitry L.) Date: Tue, 7 Jun 2016 19:18:45 +0300 Subject: [Moscow.pm] =?utf-8?b?0KHQtdGA0LLQtdGAIE1vam9saWNpb3VzINC4IFdl?= =?utf-8?b?YlNvY2tldHMgLSDQutCw0Log0L/QtdGA0LXQtNCw0YLRjCDQsiDQsdGA?= =?utf-8?b?0LDRg9C30LXRgCDQstGL0LfQvtCy0Ysg0L7RgiDQstC90LXRiNC90LU=?= =?utf-8?b?0LPQviDRgdC10YDQstC40YHQsD8=?= In-Reply-To: <01da01d1c0ce$01de0ae0$059a20a0$@frolov.pp.ru> References: <01da01d1c0ce$01de0ae0$059a20a0$@frolov.pp.ru> Message-ID: 2016-06-07 18:05 GMT+03:00 Александр Фролов : > Но я никак не могу придумать, как мне архитектурно обеспечить прием > callback-вызов от от внешнего сервиса в своем сервере Mojolicious::Lite, и > затем передать их по заранее установленному каналу WebSockets в браузер. > Пара вариантов навскидку. 1. Держать в приложении "инфу" о вебсокет-сессиях. Когда приходит колбек, в контроллере вытаскивать нужную вебсокет-сессию из "инфы" и для неё отправлять необходимые данные. Одна из задач, которую здесь придётся решить - подчищать за собой "инфу", когда пользователь закрывает браузер (сессия рвётся/завершается). 2. Взять Mojo::EventEmitter. В контроллере вебсокет-сессии подписаться на событие. В контроллере колбека - генерировать событие. Надо только посмотреть, все ли подписчики получат уведомление или только первый, но предполагаю, что все. Дальше действуем как в первом случае. -- //wbr, Dmitry L. From akzhan.abdulin на gmail.com Tue Jun 7 10:20:14 2016 From: akzhan.abdulin на gmail.com (Akzhan Abdulin) Date: Tue, 7 Jun 2016 20:20:14 +0300 Subject: [Moscow.pm] =?utf-8?b?0KHQtdGA0LLQtdGAIE1vam9saWNpb3VzINC4IFdl?= =?utf-8?b?YlNvY2tldHMgLSDQutCw0Log0L/QtdGA0LXQtNCw0YLRjCDQsiDQsdGA?= =?utf-8?b?0LDRg9C30LXRgCDQstGL0LfQvtCy0Ysg0L7RgiDQstC90LXRiNC90LU=?= =?utf-8?b?0LPQviDRgdC10YDQstC40YHQsD8=?= In-Reply-To: <01da01d1c0ce$01de0ae0$059a20a0$@frolov.pp.ru> References: <01da01d1c0ce$01de0ae0$059a20a0$@frolov.pp.ru> Message-ID: А зачем именно так? Делал интеграцию, и всегда хватало параллельного канала. А VoIP перенаправлял через nginx прямо к Asterisk. На самом деле можно закопаться в протокол и написать свой прокси-сервер с событиями. можно взять за основу, например, https://github.com/nodejitsu/node-http-proxy#proxying-websockets Но это лишние затраты энергии. P.S.: завязки на url там нет. 7 июня 2016 г., 18:05 пользователь Александр Фролов написал: > Здравствуйте! > > Я делаю интеграцию с внешним телефонным сервисом. Задача - принимать вызовы > от сервиса, когда поступает звонок от клиента и открывать страницу CRM для > этого клиента. Пытаюсь сделать это на Mojolicious::Lite и WebSockets, но > застрял на том, как мне принимать callback-вызовы (поступают просто на > заданный URL) и передавать их в браузер по установленному заранее каналу > WebSockets. > > Насколько я понимаю, обычный сценарий - это когда web-страница из браузера > инициализирует соединение с сервером WebSocket, создает туда канал, потом > через JavaScript отправляет запросы серверу и принимает от него данные. Так > устроены все примеры, которые мне удалось найти, и они отлично работают. > > Но я никак не могу придумать, как мне архитектурно обеспечить прием > callback-вызов от от внешнего сервиса в своем сервере Mojolicious::Lite, и > затем передать их по заранее установленному каналу WebSockets в браузер. > > Использовать ли мне тот же самый URL, что и для инициализации канала > WebSockets или другой? Если другой, то как получить и передать данные? > Буду благодарен за помощь! > > С уважением, > Александр Фролов > > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > > ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From akzhan.abdulin на gmail.com Tue Jun 7 10:22:35 2016 From: akzhan.abdulin на gmail.com (Akzhan Abdulin) Date: Tue, 7 Jun 2016 20:22:35 +0300 Subject: [Moscow.pm] =?utf-8?b?0KHQtdGA0LLQtdGAIE1vam9saWNpb3VzINC4IFdl?= =?utf-8?b?YlNvY2tldHMgLSDQutCw0Log0L/QtdGA0LXQtNCw0YLRjCDQsiDQsdGA?= =?utf-8?b?0LDRg9C30LXRgCDQstGL0LfQvtCy0Ysg0L7RgiDQstC90LXRiNC90LU=?= =?utf-8?b?0LPQviDRgdC10YDQstC40YHQsD8=?= In-Reply-To: References: <01da01d1c0ce$01de0ae0$059a20a0$@frolov.pp.ru> Message-ID: Ну и да, сам Asterisk шлет мириады событий, я просто на них подписываюсь, и можно наблюдать за звонками и управлять оными. 7 июня 2016 г., 20:20 пользователь Akzhan Abdulin написал: > А зачем именно так? > > Делал интеграцию, и всегда хватало параллельного канала. А VoIP > перенаправлял через nginx прямо к Asterisk. > > На самом деле можно закопаться в протокол и написать свой прокси-сервер с > событиями. можно взять за основу, например, > https://github.com/nodejitsu/node-http-proxy#proxying-websockets > > Но это лишние затраты энергии. > > P.S.: завязки на url там нет. > > 7 июня 2016 г., 18:05 пользователь Александр Фролов < > alexandre на frolov.pp.ru> написал: > >> Здравствуйте! >> >> Я делаю интеграцию с внешним телефонным сервисом. Задача - принимать >> вызовы >> от сервиса, когда поступает звонок от клиента и открывать страницу CRM для >> этого клиента. Пытаюсь сделать это на Mojolicious::Lite и WebSockets, но >> застрял на том, как мне принимать callback-вызовы (поступают просто на >> заданный URL) и передавать их в браузер по установленному заранее каналу >> WebSockets. >> >> Насколько я понимаю, обычный сценарий - это когда web-страница из браузера >> инициализирует соединение с сервером WebSocket, создает туда канал, потом >> через JavaScript отправляет запросы серверу и принимает от него данные. >> Так >> устроены все примеры, которые мне удалось найти, и они отлично работают. >> >> Но я никак не могу придумать, как мне архитектурно обеспечить прием >> callback-вызов от от внешнего сервиса в своем сервере Mojolicious::Lite, и >> затем передать их по заранее установленному каналу WebSockets в браузер. >> >> Использовать ли мне тот же самый URL, что и для инициализации канала >> WebSockets или другой? Если другой, то как получить и передать данные? >> Буду благодарен за помощь! >> >> С уважением, >> Александр Фролов >> >> >> -- >> Moscow.pm mailing list >> moscow-pm на pm.org | http://moscow.pm.org >> >> > ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From alexandre на frolov.pp.ru Tue Jun 7 23:41:10 2016 From: alexandre на frolov.pp.ru (=?utf-8?B?0JDQu9C10LrRgdCw0L3QtNGAINCk0YDQvtC70L7Qsg==?=) Date: Wed, 8 Jun 2016 09:41:10 +0300 Subject: [Moscow.pm] =?utf-8?b?0KHQtdGA0LLQtdGAIE1vam9saWNpb3VzINC4IFdl?= =?utf-8?b?YlNvY2tldHMgLSDQutCw0Log0L/QtdGA0LXQtNCw0YLRjCDQsiDQsdGA?= =?utf-8?b?0LDRg9C30LXRgCDQstGL0LfQvtCy0Ysg0L7RgiDQstC90LXRiNC90LU=?= =?utf-8?b?0LPQviDRgdC10YDQstC40YHQsD8=?= In-Reply-To: References: <01da01d1c0ce$01de0ae0$059a20a0$@frolov.pp.ru> Message-ID: <01b001d1c150$be51c770$3af55650$@frolov.pp.ru> Дмитрий, большое спасибо! Пожалуй, начну со второго варианта, он кажется интереснее! С уважением, Александр Фролов -----Original Message----- From: Moscow-pm [mailto:moscow-pm-bounces+alexandre=frolov.pp.ru на pm.org] On Behalf Of Dmitry L. Sent: Tuesday, June 07, 2016 7:19 PM To: Moscow.pm group Subject: Re: [Moscow.pm] Сервер Mojolicious и WebSockets - как передать в браузер вызовы от внешнего сервиса? 2016-06-07 18:05 GMT+03:00 Александр Фролов : > Но я никак не могу придумать, как мне архитектурно обеспечить прием > callback-вызов от от внешнего сервиса в своем сервере Mojolicious::Lite, и > затем передать их по заранее установленному каналу WebSockets в браузер. > Пара вариантов навскидку. 1. Держать в приложении "инфу" о вебсокет-сессиях. Когда приходит колбек, в контроллере вытаскивать нужную вебсокет-сессию из "инфы" и для неё отправлять необходимые данные. Одна из задач, которую здесь придётся решить - подчищать за собой "инфу", когда пользователь закрывает браузер (сессия рвётся/завершается). 2. Взять Mojo::EventEmitter. В контроллере вебсокет-сессии подписаться на событие. В контроллере колбека - генерировать событие. Надо только посмотреть, все ли подписчики получат уведомление или только первый, но предполагаю, что все. Дальше действуем как в первом случае. -- //wbr, Dmitry L. -- Moscow.pm mailing list moscow-pm на pm.org | http://moscow.pm.org ----------- следущая часть ----------- Вложение не в текстовом формате было извлечено… Имя: smime.p7s Тип: application/pkcs7-signature Размер: 6205 байтов Описание: отсутствует URL: From alexandre на frolov.pp.ru Wed Jun 8 00:26:51 2016 From: alexandre на frolov.pp.ru (=?utf-8?B?0JDQu9C10LrRgdCw0L3QtNGAINCk0YDQvtC70L7Qsg==?=) Date: Wed, 8 Jun 2016 10:26:51 +0300 Subject: [Moscow.pm] =?utf-8?b?0KHQtdGA0LLQtdGAIE1vam9saWNpb3VzINC4IFdl?= =?utf-8?b?YlNvY2tldHMgLSDQutCw0Log0L/QtdGA0LXQtNCw0YLRjCDQsiDQsdGA?= =?utf-8?b?0LDRg9C30LXRgCDQstGL0LfQvtCy0Ysg0L7RgiDQstC90LXRiNC90LU=?= =?utf-8?b?0LPQviDRgdC10YDQstC40YHQsD8=?= In-Reply-To: References: <01da01d1c0ce$01de0ae0$059a20a0$@frolov.pp.ru> Message-ID: <021801d1c157$203d0340$60b709c0$@frolov.pp.ru> Хочется как-то упростить решение, на первый взгляд кажется, что Mojolicious::Lite позволяет сделать это проще. У меня, правда, не Asterisk, а телефонный сервис типа Mango. Он и шлет запросы callback. С уважением, Александр Фролов From: Moscow-pm [mailto:moscow-pm-bounces+alexandre=frolov.pp.ru на pm.org] On Behalf Of Akzhan Abdulin Sent: Tuesday, June 07, 2016 8:23 PM To: Moscow.pm group Subject: Re: [Moscow.pm] Сервер Mojolicious и WebSockets - как передать в браузер вызовы от внешнего сервиса? Ну и да, сам Asterisk шлет мириады событий, я просто на них подписываюсь, и можно наблюдать за звонками и управлять оными. 7 июня 2016 г., 20:20 пользователь Akzhan Abdulin написал: А зачем именно так? Делал интеграцию, и всегда хватало параллельного канала. А VoIP перенаправлял через nginx прямо к Asterisk. На самом деле можно закопаться в протокол и написать свой прокси-сервер с событиями. можно взять за основу, например, https://github.com/nodejitsu/node-http-proxy#proxying-websockets Но это лишние затраты энергии. P.S.: завязки на url там нет. 7 июня 2016 г., 18:05 пользователь Александр Фролов написал: Здравствуйте! Я делаю интеграцию с внешним телефонным сервисом. Задача - принимать вызовы от сервиса, когда поступает звонок от клиента и открывать страницу CRM для этого клиента. Пытаюсь сделать это на Mojolicious::Lite и WebSockets, но застрял на том, как мне принимать callback-вызовы (поступают просто на заданный URL) и передавать их в браузер по установленному заранее каналу WebSockets. Насколько я понимаю, обычный сценарий - это когда web-страница из браузера инициализирует соединение с сервером WebSocket, создает туда канал, потом через JavaScript отправляет запросы серверу и принимает от него данные. Так устроены все примеры, которые мне удалось найти, и они отлично работают. Но я никак не могу придумать, как мне архитектурно обеспечить прием callback-вызов от от внешнего сервиса в своем сервере Mojolicious::Lite, и затем передать их по заранее установленному каналу WebSockets в браузер. Использовать ли мне тот же самый URL, что и для инициализации канала WebSockets или другой? Если другой, то как получить и передать данные? Буду благодарен за помощь! С уважением, Александр Фролов -- Moscow.pm mailing list mailto:moscow-pm на pm.org | http://moscow.pm.org ----------- следущая часть ----------- Вложение не в текстовом формате было извлечено… Имя: smime.p7s Тип: application/pkcs7-signature Размер: 6205 байтов Описание: отсутствует URL: From mescalito.ua на gmail.com Thu Jun 9 02:14:14 2016 From: mescalito.ua на gmail.com (Dmitry) Date: Thu, 9 Jun 2016 12:14:14 +0300 Subject: [Moscow.pm] =?utf-8?b?0JjRidGDINGA0LDQsdC+0YLRgw==?= Message-ID: Коллеги, Довольно неспешно ищу работу. Лучше всего у меня получается "делать так, чтобы другие копали (в срок и с приемлемым качеством)", то есть руководить разработкой. Еще у меня довольно неплохо получается писать Perl-овый код, немного С-шный (только *nix), администрить всякие unix-подобные системы и впихивать невпихуемое (например скомпилить большой продукт в новой ОС). Чего я не умею / не хочу / не буду: Я довольно плохо владею продуктами Microsoft. Я терпеть не могу участвовать в "политической" жизни компании; принципиально не участвую в "подковерных играх" и не дружу "против кого-либо". Ну и еще я склонен придумывать себе работу, когда нагрузка падает ниже определенного порогового значения. Я не понимаю насколько это хорошо/плохо. Резюме вышлю по запросу всем желающим. -- *WBR, * *Dmitry.* *mailto*: mescalito.ua на gmail.com *skype*: mescalito_genesys *phone:* +7 915 382 2412 ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From warstone на list.ru Mon Jun 20 05:02:47 2016 From: warstone на list.ru (=?UTF-8?B?V2Fyc3RvbmVAbGlzdC5ydQ==?=) Date: Mon, 20 Jun 2016 15:02:47 +0300 Subject: [Moscow.pm] =?utf-8?b?0JrQvtC/0LjRgNC+0LLQsNC90LjQtSDQvNCw0LM=?= =?utf-8?b?0LjQuCAxINGA0LDQtw==?= Message-ID: <1466424167.709974816@f328.i.mail.ru> Может кто уже реализовывал... Итак... Есть магия. PERL_MAGIC_ext У нее перебит svt_get. В текущей реализации задается магия через $var = 1; magic($var); Это неудобно. Хочется так: $var = magic(); Но так не работает, так как svt_get должна сделать sv_setsv на магическую переменную. И потом в sassign ее скопируют без магии. Вернее не так... Если туда передать другую магическую переменную, то на ней опять-таки позовется svt_get и будет бесконечный цикл. Можно, конечно, перехватить sassign, anonhash, anonarray но кто знает - какие еще опы надо перехватывать и это уже совсем из области черной магии. Может быть кто-то сталкивался с похожей задачей копирования магии?.. -- Nick unnoun ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From evgeniy на just4i.ru Mon Jun 20 05:52:27 2016 From: evgeniy на just4i.ru (Vansevich Evgeniy) Date: Mon, 20 Jun 2016 15:52:27 +0300 Subject: [Moscow.pm] =?utf-8?b?0JrQvtC/0LjRgNC+0LLQsNC90LjQtSDQvNCw0LM=?= =?utf-8?b?0LjQuCAxINGA0LDQtw==?= References: <1466424167.709974816@f328.i.mail.ru> Message-ID: <6g45272kinh6iasdmv1uepj9.1466427147084@email.android.com> Вложение в формате HTML было извлечено… URL: From dmitry на karasik.eu.org Mon Jun 20 06:52:51 2016 From: dmitry на karasik.eu.org (Dmitry Karasik) Date: Mon, 20 Jun 2016 15:52:51 +0200 Subject: [Moscow.pm] =?koi8-r?b?68/QydLP18HOycUgzcHHyckgMSDSwdo=?= In-Reply-To: <1466424167.709974816@f328.i.mail.ru> References: <1466424167.709974816@f328.i.mail.ru> Message-ID: <20160620135251.GA35180@karasik2> On Mon, Jun 20, 2016 at 03:02:47PM +0300, Warstone на list.ru wrote: > Может кто уже реализовывал... > > Итак... Есть магия. PERL_MAGIC_ext У нее перебит svt_get. В текущей реализации задается магия через > $var = 1; > magic($var); > > Это неудобно. Хочется так: $var = magic(); Но так не работает, так как svt_get должна сделать sv_setsv на магическую переменную. И потом в sassign ее скопируют без магии. Вернее не так... Если туда передать другую магическую переменную, то на ней опять-таки позовется svt_get и будет бесконечный цикл. > > Можно, конечно, перехватить sassign, anonhash, anonarray но кто знает - какие еще опы надо перехватывать и это уже совсем из области черной магии. > > Может быть кто-то сталкивался с похожей задачей копирования магии?.. Я как-то рылся и уперся в эту же проблему, все источники говорят с один голос что магия не копируется. Обошел по другому, вообще без магии, оверлоадом. Вот и Variable::Magic делает это в два захода. Но может быть прокатит нечто вроде такого? use Variable::Magic qw(wizard cast); my $w = wizard(...); use overload '=' => sub { cast $_[0], $w }; -- Sincerely, Dmitry Karasik From agrishaev на gmail.com Mon Jun 20 07:35:49 2016 From: agrishaev на gmail.com (=?UTF-8?B?0JPRgNC40YjQsNC10LIg0JDQvdCw0YLQvtC70LjQuQ==?=) Date: Mon, 20 Jun 2016 17:35:49 +0300 Subject: [Moscow.pm] =?utf-8?b?0JrQvtC/0LjRgNC+0LLQsNC90LjQtSDQvNCw0LM=?= =?utf-8?b?0LjQuCAxINGA0LDQtw==?= In-Reply-To: <6g45272kinh6iasdmv1uepj9.1466427147084@email.android.com> References: <1466424167.709974816@f328.i.mail.ru> <6g45272kinh6iasdmv1uepj9.1466427147084@email.android.com> Message-ID: Дико не понятно, что собственно хочется: Я иногда делаю так: 1) magic( $var = 1) 2) tie $var, tied($some_other_var)->clone() 3) А зачем нам вообще магию копировать? 20 июня 2016 г., 15:52 пользователь Vansevich Evgeniy написал: > Коль, а ты можешь рассказать про оригинальную постановку задачи? просто > задача звучит так, что перехват опов будет проще чем любой другой путь) > > > > Отправлено с Mi Phone > "Warstone на list.ru" | От: 20 июня 2016 г. 15:04 | > Сообщение: > > Может кто уже реализовывал... > > Итак... Есть магия. PERL_MAGIC_ext У нее перебит svt_get. В текущей > реализации задается магия через > $var = 1; > magic($var); > > Это неудобно. Хочется так: $var = magic(); Но так не работает, так как > svt_get должна сделать sv_setsv на магическую переменную. И потом в sassign > ее скопируют без магии. Вернее не так... Если туда передать другую > магическую переменную, то на ней опять-таки позовется svt_get и будет > бесконечный цикл. > > Можно, конечно, перехватить sassign, anonhash, anonarray но кто знает - > какие еще опы надо перехватывать и это уже совсем из области черной магии. > > Может быть кто-то сталкивался с похожей задачей копирования магии?.. > > > -- > Nick unnoun > > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > > ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From warstone на list.ru Mon Jun 20 07:52:53 2016 From: warstone на list.ru (=?UTF-8?B?V2Fyc3RvbmVAbGlzdC5ydQ==?=) Date: Mon, 20 Jun 2016 17:52:53 +0300 Subject: [Moscow.pm] =?utf-8?b?0JrQvtC/0LjRgNC+0LLQsNC90LjQtSDQvNCw0LM=?= =?utf-8?b?0LjQuCAxINGA0LDQtw==?= In-Reply-To: References: <1466424167.709974816@f328.i.mail.ru> <6g45272kinh6iasdmv1uepj9.1466427147084@email.android.com> Message-ID: <1466434373.111278246@f407.i.mail.ru> 1) А запись для Хеша можно показать?... $var = {   q => 'w' }; magic($var->{q}); 2) Это не то )) 3) Сахар. Синтаксический сахар. Исключительно чтобы можно писать $var = magic(...); >Понедельник, 20 июня 2016, 17:35 +03:00 от Гришаев Анатолий : > >Дико не понятно, что собственно хочется: > >Я иногда делаю так: >1) magic( $var = 1) >2) tie $var, tied($some_other_var)->clone() >3) А зачем нам вообще магию копировать? > >20 июня 2016 г., 15:52 пользователь Vansevich Evgeniy < evgeniy на just4i.ru > написал: >>Коль, а ты можешь рассказать про оригинальную постановку задачи? просто задача звучит так, что перехват опов будет проще чем любой другой путь) >> >> >> >>Отправлено с Mi Phone >>" Warstone на list.ru " < warstone на list.ru > | От: 20 июня 2016 г. 15:04 | Сообщение: >>>Может кто уже реализовывал... >>> >>>Итак... Есть магия. PERL_MAGIC_ext У нее перебит svt_get. В текущей реализации задается магия через >>>$var = 1; >>>magic($var); >>> >>>Это неудобно. Хочется так: $var = magic(); Но так не работает, так как svt_get должна сделать sv_setsv на магическую переменную. И потом в sassign ее скопируют без магии. Вернее не так... Если туда передать другую магическую переменную, то на ней опять-таки позовется svt_get и будет бесконечный цикл. >>> >>>Можно, конечно, перехватить sassign, anonhash, anonarray но кто знает - какие еще опы надо перехватывать и это уже совсем из области черной магии. >>> >>>Может быть кто-то сталкивался с похожей задачей копирования магии?.. >>> >>> >>>-- >>>Nick unnoun >>-- >>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 warstone на list.ru Mon Jun 20 07:49:42 2016 From: warstone на list.ru (=?UTF-8?B?V2Fyc3RvbmVAbGlzdC5ydQ==?=) Date: Mon, 20 Jun 2016 17:49:42 +0300 Subject: [Moscow.pm] =?utf-8?b?0JrQvtC/0LjRgNC+0LLQsNC90LjQtSDQvNCw0LM=?= =?utf-8?b?0LjQuCAxINGA0LDQtw==?= In-Reply-To: <20160620135251.GA35180@karasik2> References: <1466424167.709974816@f328.i.mail.ru> <20160620135251.GA35180@karasik2> Message-ID: <1466434182.148019263@f363.i.mail.ru> http://search.cpan.org/~rjbs/perl-5.24.0/lib/overload.pm#Overloadable_Operations   Simple assignment is not overloadable (the '=' key is used for the "Copy Constructor" ). Был тут. Всмысле на оверлоад тоже смотрел. >Понедельник, 20 июня 2016, 16:52 +03:00 от Dmitry Karasik : > >On Mon, Jun 20, 2016 at 03:02:47PM +0300, Warstone на list.ru wrote: >> Может кто уже реализовывал... >> >> Итак... Есть магия. PERL_MAGIC_ext У нее перебит svt_get. В текущей реализации задается магия через >> $var = 1; >> magic($var); >> >> Это неудобно. Хочется так: $var = magic(); Но так не работает, так как svt_get должна сделать sv_setsv на магическую переменную. И потом в sassign ее скопируют без магии. Вернее не так... Если туда передать другую магическую переменную, то на ней опять-таки позовется svt_get и будет бесконечный цикл. >> >> Можно, конечно, перехватить sassign, anonhash, anonarray но кто знает - какие еще опы надо перехватывать и это уже совсем из области черной магии. >> >> Может быть кто-то сталкивался с похожей задачей копирования магии?.. > >Я как-то рылся и уперся в эту же проблему, все источники говорят с один голос что магия не копируется. >Обошел по другому, вообще без магии, оверлоадом. Вот и Variable::Magic делает это в два захода. >Но может быть прокатит нечто вроде такого? > >   use Variable::Magic qw(wizard cast); >   my $w = wizard(...); >   use overload '=' => sub { cast $_[0], $w }; > >-- >Sincerely, >Dmitry Karasik > >-- >Moscow.pm mailing list >moscow-pm на pm.org | http://moscow.pm.org ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From agrishaev на gmail.com Tue Jun 21 00:22:35 2016 From: agrishaev на gmail.com (=?UTF-8?B?0JPRgNC40YjQsNC10LIg0JDQvdCw0YLQvtC70LjQuQ==?=) Date: Tue, 21 Jun 2016 10:22:35 +0300 Subject: [Moscow.pm] =?utf-8?b?0JrQvtC/0LjRgNC+0LLQsNC90LjQtSDQvNCw0LM=?= =?utf-8?b?0LjQuCAxINGA0LDQtw==?= In-Reply-To: <1466434373.111278246@f407.i.mail.ru> References: <1466424167.709974816@f328.i.mail.ru> <6g45272kinh6iasdmv1uepj9.1466427147084@email.android.com> <1466434373.111278246@f407.i.mail.ru> Message-ID: 1) Что типа: a) $var = deep_hash_magic( q => $w, ... ) b) $var = deep_array_magic( $w0, $w1, ... ) c) Если нужны многоуровневые хэши, то включаем рекурсию dhm( q=> dhm(r1=> $w1, q2=> $w2) ) d) можно делать перехват синтаксического вызова процедуры и проанализировать аргументы во время компиляции этого вызова, заменить их на свои и наблюдать счастье, если конечно есть "железные" яйца. 20 июня 2016 г., 17:52 пользователь Warstone на list.ru написал: > 1) А запись для Хеша можно показать?... > $var = { > q => 'w' > }; > magic($var->{q}); > > 2) Это не то )) > > 3) Сахар. Синтаксический сахар. Исключительно чтобы можно писать > $var = magic(...); > > > Понедельник, 20 июня 2016, 17:35 +03:00 от Гришаев Анатолий < > agrishaev на gmail.com>: > > > Дико не понятно, что собственно хочется: > > Я иногда делаю так: > 1) magic( $var = 1) > 2) tie $var, tied($some_other_var)->clone() > 3) А зачем нам вообще магию копировать? > > 20 июня 2016 г., 15:52 пользователь Vansevich Evgeniy > написал: > > Коль, а ты можешь рассказать про оригинальную постановку задачи? просто > задача звучит так, что перехват опов будет проще чем любой другой путь) > > > > Отправлено с Mi Phone > "Warstone на list.ru" | От: 20 июня 2016 г. 15:04 | > Сообщение: > > Может кто уже реализовывал... > > Итак... Есть магия. PERL_MAGIC_ext У нее перебит svt_get. В текущей > реализации задается магия через > $var = 1; > magic($var); > > Это неудобно. Хочется так: $var = magic(); Но так не работает, так как > svt_get должна сделать sv_setsv на магическую переменную. И потом в sassign > ее скопируют без магии. Вернее не так... Если туда передать другую > магическую переменную, то на ней опять-таки позовется svt_get и будет > бесконечный цикл. > > Можно, конечно, перехватить sassign, anonhash, anonarray но кто знает - > какие еще опы надо перехватывать и это уже совсем из области черной магии. > > Может быть кто-то сталкивался с похожей задачей копирования магии?.. > > > -- > Nick unnoun > > > -- > 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 warstone на list.ru Tue Jun 21 01:28:30 2016 From: warstone на list.ru (=?UTF-8?B?V2Fyc3RvbmVAbGlzdC5ydQ==?=) Date: Tue, 21 Jun 2016 11:28:30 +0300 Subject: [Moscow.pm] =?utf-8?b?0JrQvtC/0LjRgNC+0LLQsNC90LjQtSDQvNCw0LM=?= =?utf-8?b?0LjQuCAxINGA0LDQtw==?= In-Reply-To: References: <1466424167.709974816@f328.i.mail.ru> <1466434373.111278246@f407.i.mail.ru> Message-ID: <1466497710.861590222@f368.i.mail.ru> Вообще говоря, так можно, да... Правда после этого пропадает вообще вся лаконичность записи и тогда уж лучше перехватывать те 3 опа, о которых было сказано выше. То есть такая запись выглядит еще хуже, чем определение хеша и навешивание магии "потом", ИМХО. >Вторник, 21 июня 2016, 10:22 +03:00 от Гришаев Анатолий : > >1) Что типа: >      a) $var = deep_hash_magic( q => $w, ... ) >      b) $var = deep_array_magic( $w0, $w1, ... ) >      c) Если нужны многоуровневые хэши, то включаем рекурсию >             dhm( q=> dhm(r1=> $w1, q2=>  $w2) ) >      d) можно делать перехват синтаксического вызова процедуры и проанализировать аргументы во время компиляции этого вызова, заменить их на свои и >          наблюдать счастье, если конечно есть "железные" яйца. > >                  >20 июня 2016 г., 17:52 пользователь Warstone на list.ru < warstone на list.ru > написал: >>1) А запись для Хеша можно показать?... >>$var = { >>  q => 'w' >>}; >>magic($var->{q}); >> >>2) Это не то )) >> >>3) Сахар. Синтаксический сахар. Исключительно чтобы можно писать >>$var = magic(...); >> >> >>>Понедельник, 20 июня 2016, 17:35 +03:00 от Гришаев Анатолий < agrishaev на gmail.com >: >>> >>> >>>Дико не понятно, что собственно хочется: >>> >>>Я иногда делаю так: >>>1) magic( $var = 1) >>>2) tie $var, tied($some_other_var)->clone() >>>3) А зачем нам вообще магию копировать? >>> >>>20 июня 2016 г., 15:52 пользователь Vansevich Evgeniy < evgeniy на just4i.ru > написал: >>>>Коль, а ты можешь рассказать про оригинальную постановку задачи? просто задача звучит так, что перехват опов будет проще чем любой другой путь) >>>> >>>> >>>> >>>>Отправлено с Mi Phone >>>>" Warstone на list.ru " < warstone на list.ru > | От: 20 июня 2016 г. 15:04 | Сообщение: >>>>>Может кто уже реализовывал... >>>>> >>>>>Итак... Есть магия. PERL_MAGIC_ext У нее перебит svt_get. В текущей реализации задается магия через >>>>>$var = 1; >>>>>magic($var); >>>>> >>>>>Это неудобно. Хочется так: $var = magic(); Но так не работает, так как svt_get должна сделать sv_setsv на магическую переменную. И потом в sassign ее скопируют без магии. Вернее не так... Если туда передать другую магическую переменную, то на ней опять-таки позовется svt_get и будет бесконечный цикл. >>>>> >>>>>Можно, конечно, перехватить sassign, anonhash, anonarray но кто знает - какие еще опы надо перехватывать и это уже совсем из области черной магии. >>>>> >>>>>Может быть кто-то сталкивался с похожей задачей копирования магии?.. >>>>> >>>>> >>>>>-- >>>>>Nick unnoun >>>>-- >>>>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 agrishaev на gmail.com Tue Jun 21 02:26:15 2016 From: agrishaev на gmail.com (=?UTF-8?B?0JPRgNC40YjQsNC10LIg0JDQvdCw0YLQvtC70LjQuQ==?=) Date: Tue, 21 Jun 2016 12:26:15 +0300 Subject: [Moscow.pm] =?utf-8?b?0JrQvtC/0LjRgNC+0LLQsNC90LjQtSDQvNCw0LM=?= =?utf-8?b?0LjQuCAxINGA0LDQtw==?= In-Reply-To: <1466497710.861590222@f368.i.mail.ru> References: <1466424167.709974816@f328.i.mail.ru> <1466434373.111278246@f407.i.mail.ru> <1466497710.861590222@f368.i.mail.ru> Message-ID: Еще нужно перехватывать aassign в дополнении к sassign, anonhash, anonarray. ($a,$b) = ($w,$q) @abc = ($w,$q) %abc = ($w,$q) 21 июня 2016 г., 11:28 пользователь Warstone на list.ru написал: > Вообще говоря, так можно, да... Правда после этого пропадает вообще вся > лаконичность записи и тогда уж лучше перехватывать те 3 опа, о которых было > сказано выше. > То есть такая запись выглядит еще хуже, чем определение хеша и навешивание > магии "потом", ИМХО. > > > Вторник, 21 июня 2016, 10:22 +03:00 от Гришаев Анатолий < > agrishaev на gmail.com>: > > > 1) Что типа: > a) $var = deep_hash_magic( q => $w, ... ) > b) $var = deep_array_magic( $w0, $w1, ... ) > c) Если нужны многоуровневые хэши, то включаем рекурсию > dhm( q=> dhm(r1=> $w1, q2=> $w2) ) > d) можно делать перехват синтаксического вызова процедуры и > проанализировать аргументы во время компиляции этого вызова, заменить их на > свои и > наблюдать счастье, если конечно есть "железные" яйца. > > > 20 июня 2016 г., 17:52 пользователь Warstone на list.ru > написал: > > 1) А запись для Хеша можно показать?... > $var = { > q => 'w' > }; > > magic($var->{q}); > > 2) Это не то )) > > 3) Сахар. Синтаксический сахар. Исключительно чтобы можно писать > $var = magic(...); > > > Понедельник, 20 июня 2016, 17:35 +03:00 от Гришаев Анатолий < > agrishaev на gmail.com>: > > > Дико не понятно, что собственно хочется: > > Я иногда делаю так: > 1) magic( $var = 1) > 2) tie $var, tied($some_other_var)->clone() > 3) А зачем нам вообще магию копировать? > > 20 июня 2016 г., 15:52 пользователь Vansevich Evgeniy > написал: > > Коль, а ты можешь рассказать про оригинальную постановку задачи? просто > задача звучит так, что перехват опов будет проще чем любой другой путь) > > > > Отправлено с Mi Phone > "Warstone на list.ru" | От: 20 июня 2016 г. 15:04 | > Сообщение: > > Может кто уже реализовывал... > > Итак... Есть магия. PERL_MAGIC_ext У нее перебит svt_get. В текущей > реализации задается магия через > $var = 1; > magic($var); > > Это неудобно. Хочется так: $var = magic(); Но так не работает, так как > svt_get должна сделать sv_setsv на магическую переменную. И потом в sassign > ее скопируют без магии. Вернее не так... Если туда передать другую > магическую переменную, то на ней опять-таки позовется svt_get и будет > бесконечный цикл. > > Можно, конечно, перехватить sassign, anonhash, anonarray но кто знает - > какие еще опы надо перехватывать и это уже совсем из области черной магии. > > Может быть кто-то сталкивался с похожей задачей копирования магии?.. > > > -- > Nick unnoun > > > -- > 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 dzirtik на gmail.com Tue Jun 21 09:19:07 2016 From: dzirtik на gmail.com (=?UTF-8?B?0J/QsNCy0LXQuyDQqdC10YDQsdC40L3QuNC9?=) Date: Tue, 21 Jun 2016 19:19:07 +0300 Subject: [Moscow.pm] YAPC::Russia 2016 Message-ID: *Встреча пройдет 25 июня в московском офисе Mail.Ru Group.* *YAPC::Russia — ежегодная конференция, посвященная языку программирования Perl и его сообществу, которая в разные годы проходила в Москве, Киеве и Санкт-Петербурге. На конференции собираются Perl-профессионалы из разных городов и стран, чтобы обменяться опытом, завести новые знакомства в своей сфере и пообщаться с единомышленниками в неформальной и приятной обстановке.* *Программа встречи* *10.00 — сбор гостей.* *11.00 — Елена Шишкина, Mail.Ru Group. Валидаторы сложных структур, или как мы делали новый API.* *11.45 — Ксения Боброва, ACI Worldwide. Continious integration Perl кода с Jenkins и Gerrit.* *12.30 — Николай Мишин, «Мастер-Домино». Использование Eclipse в качестве редактора Perl.* *12.55 — Евгений Васневич, Mail.Ru Group. Анализ памяти в Perl. Tips&Tricks.* *14.00 — ОБЕД* *14.30 — Алексей Мележик, EPAM Systems. Sparrow — повторно используемые сценарии автоматизации.* *15.15 — Алексей Машанов, Mail.Ru Group. Perl быстрее, чем Perl.* *15.40 — Павел Лиморенко, Mail.Ru Group. Мониторинг: демон, который читает логи.* *16.25 — Николай Мишин, «Мастер-Домино». Реализация паттерна «Наблюдатель» на Moose.* *16.50 — Иван Панченко, Postgres Professional. Как асинхронно работать из Perl с PostgreSQL.* *17.15 — КОФЕ-БРЕЙК* *17.30 — Михаил Озеров, Mail.Ru Group. Реализация конечного автомата для работы со сложными сценариями платежных систем (и не только).* *18.15 — Андрей Еньшин, Mail.Ru Group. Perl method invocation.* *18.40 — Lighting Talks.* *20.00 — After Party.* *Для всех, кто не сможет присутствовать, мы организуем прямую видеотрансляцию.* *Участие бесплатное, но необходимо зарегистрироваться .* *Адрес: Москва, Ленинградский пр. 39, стр. 79, офис Mail.Ru Group.* *До встречи!* -- С Уважением, Щербинин Павел ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From shafiev на gmail.com Thu Jun 23 03:44:56 2016 From: shafiev на gmail.com (Naim Shafiev) Date: Thu, 23 Jun 2016 15:44:56 +0500 Subject: [Moscow.pm] =?utf-8?b?0J3QsNC/0LjRgdCw0YLRjCDQvtCxINC60L7QvdGE?= =?utf-8?q?=D0=B5_yapc_russia?= In-Reply-To: References: Message-ID: коллеги, я залил инфу на opennet.RU и на Linux.org.RU , кто ещё знает места куда ходят перловики и люди которым это интересно , пусть там тоже пресс релиз тоже зальют . ведь количество порождает качество . IMHO ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From alexclear на gmail.com Mon Jun 27 10:09:22 2016 From: alexclear на gmail.com (Alex Chistyakov) Date: Mon, 27 Jun 2016 20:09:22 +0300 Subject: [Moscow.pm] =?utf-8?b?0JAg0LLQvtGCINC60L7QvNGDINGA0LDQsdC+0YI=?= =?utf-8?b?0Ys=?= Message-ID: Коллеги, есть небольшая задача, дописать на перле интерфейс для просмотра данных, хранящихся в бд Postgresql. Есть фронтэндер, сам интерфейс частично работает. Работа не пыльная, оплата или почасовая, или сдельная. Пишите мне или Liza Golzeva Спасибо, -- SY, Alex ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From dayfuaim на gmail.com Tue Jun 28 05:18:58 2016 From: dayfuaim на gmail.com (Denis Yurashku) Date: Tue, 28 Jun 2016 15:18:58 +0300 Subject: [Moscow.pm] =?utf-8?b?0JjRidGDINGA0LDQsdC+0YLRgw==?= Message-ID: Всем добрый день. Я уже давний читатель этого списка. Ищу сейчас работу perl-программистом. Умею: - Perl - MySQL - (X)HTML, CSS - JavaScript - JQuery, Bootstrap - Unix shell - PHP (куда уж без него) Именно в такой псоледовательности. Если что-то нужно для применения – могу изучить быстро. Работу ищу постоянную, в крайнем случае удалённую. Резюме: - постоянное: http://hh.ru/resume/77f3cff1ff02998ff10039ed1f465436665165, - удалённое/частичное: то же, но в два раза ниже. Если у кого что есть, пишите – будем общаться предметно. -- with Best regards, Denis A. Yurashku ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From lelzak на mail.ru Tue Jun 28 05:35:38 2016 From: lelzak на mail.ru (=?UTF-8?B?QWxleCBBY2g=?=) Date: Tue, 28 Jun 2016 15:35:38 +0300 Subject: [Moscow.pm] =?utf-8?b?0JjRidGDINGA0LDQsdC+0YLRgw==?= In-Reply-To: References: Message-ID: <1467117338.815720609@f219.i.mail.ru> Я могу понять, почему частичная занятость предполагает меньшую оплату.  А удаленка-то тут причем? Вы в удаленном режиме в два раза меньше работаете? Или в два раза хуже? с наилучшими, Алексей Чегляков. >* постоянное: http://hh.ru/resume/77f3cff1ff02998ff10039ed1f465436665165 , >* удалённое/частичное: то же, но в два раза ниже. > >Если у кого что есть, пишите – будем общаться предметно. > >-- >with Best regards, >Denis A. Yurashku >-- >Moscow.pm mailing list >moscow-pm на pm.org | http://moscow.pm.org ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From i.petro.77.00 на gmail.com Tue Jun 28 06:04:59 2016 From: i.petro.77.00 на gmail.com (Ivan Petrov) Date: Tue, 28 Jun 2016 16:04:59 +0300 Subject: [Moscow.pm] =?utf-8?b?0JjRidGDINGA0LDQsdC+0YLRgw==?= In-Reply-To: References: Message-ID: <20160628130459.GM3048@vdsl.uvw.ru> Готовы тестик выполнить? Мы на метро Дубровка работаем, видимо Вам было бы очень удобно, если Вы бы нам подошли. У нас основные требования: написание ПО вместе с тестами. Пишем на Mojo/Pg/AE/Coro. PS: церковь саентологии в резюме конечно доставляет :) On 15:18 Tue 28 Jun , Denis Yurashku wrote: > Всем добрый день. > Я уже давний читатель этого списка. > Ищу сейчас работу perl-программистом. > Умею: > • Perl > • MySQL > • (X)HTML, CSS > • JavaScript > • JQuery, Bootstrap > • Unix shell > • PHP (куда уж без него) > Именно в такой псоледовательности. > Если что-то нужно для применения – могу изучить быстро. > Работу ищу постоянную, в крайнем случае удалённую. > Резюме: > • постоянное: http://hh.ru/resume/77f3cff1ff02998ff10039ed1f465436665165, > • удалённое/частичное: то же, но в два раза ниже. > Если у кого что есть, пишите – будем общаться предметно. > -- > with Best regards,: 77f3cff1ff02998ff10039ed1f465436665165">http://hh.ru/resume/ > 77f3cff1ff02998ff10039ed1f465436665165, > удалённое/частичное: то же, но в два раза ниже. > Если у кого что есть, пишите – будем общаться предметно. > -- > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org ----------- следущая часть ----------- Вложение не в текстовом формате было извлечено… Имя: job_perl.docx Тип: application/vnd.openxmlformats-officedocument.wordprocessingml.document Размер: 11661 байтов Описание: отсутствует URL: From evgeniy на just4i.ru Tue Jun 28 06:17:52 2016 From: evgeniy на just4i.ru (Vansevich Evgeniy) Date: Tue, 28 Jun 2016 16:17:52 +0300 Subject: [Moscow.pm] =?utf-8?b?0JjRidGDINGA0LDQsdC+0YLRgw==?= References: <20160628130459.GM3048@vdsl.uvw.ru> Message-ID: Вложение в формате HTML было извлечено… URL: From iskhartakh на gmail.com Tue Jun 28 06:31:56 2016 From: iskhartakh на gmail.com (Anatoly Y) Date: Tue, 28 Jun 2016 19:31:56 +0600 Subject: [Moscow.pm] =?utf-8?b?0JjRidGDINGA0LDQsdC+0YLRgw==?= In-Reply-To: References: <20160628130459.GM3048@vdsl.uvw.ru> Message-ID: И мне! 2016-06-28 19:17 GMT+06:00 Vansevich Evgeniy : > о а мне можно тестик? ради интереса пройти😁 > > > > Отправлено с Mi Phone > Ivan Petrov | От: 28 июня 2016 г. 15:58 | > Сообщение: > > > Готовы тестик выполнить? > > Мы на метро Дубровка работаем, видимо Вам было бы очень удобно, если > Вы бы нам подошли. > > У нас основные требования: написание ПО вместе с тестами. > Пишем на Mojo/Pg/AE/Coro. > > PS: церковь саентологии в резюме конечно доставляет :) > > > On 15:18 Tue 28 Jun , Denis Yurashku wrote: > > Всем добрый день. > > > Я уже давний читатель этого списка. > > > Ищу сейчас работу perl-программистом. > > Умею: > > > • Perl > > • MySQL > > • (X)HTML, CSS > > • JavaScript > > • JQuery, Bootstrap > > • Unix shell > > • PHP (куда уж без него) > > > Именно в такой псоледовательности. > > > Если что-то нужно для применения – могу изучить быстро. > > > Работу ищу постоянную, в крайнем случае удалённую. > > Резюме: > > > • постоянное: http://hh.ru/resume/77f3cff1ff02998ff10039ed1f465436665165, > > > • удалённое/частичное: то же, но в два раза ниже. > > > Если у кого что есть, пишите – будем общаться предметно. > > > -- > > with Best regards,: > 77f3cff1ff02998ff10039ed1f465436665165">http://hh.ru/resume/ > > 77f3cff1ff02998ff10039ed1f465436665165, > > удалённое/частичное: то же, но в два раза ниже. > > > Если у кого что есть, пишите – будем общаться предметно. > > > -- > > > -- > > 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 i.petro.77.00 на gmail.com Tue Jun 28 06:40:38 2016 From: i.petro.77.00 на gmail.com (Ivan Petrov) Date: Tue, 28 Jun 2016 16:40:38 +0300 Subject: [Moscow.pm] =?utf-8?b?0JjRidGDINGA0LDQsdC+0YLRgw==?= In-Reply-To: References: <20160628130459.GM3048@vdsl.uvw.ru> Message-ID: <20160628134038.GN3048@vdsl.uvw.ru> дык приатачил (нечаянно в рассылку бросил, ну ладно пусть будет так) On 16:17 Tue 28 Jun , Vansevich Evgeniy wrote: > о а мне можно тестик? ради интереса пройти😁 > Отправлено с Mi Phone > Ivan Petrov | От: 28 июня 2016 г. 15:58 | Сообщение: > Готовы тестик выполнить? > Мы на метро Дубровка работаем, видимо Вам было бы очень удобно, если > Вы бы нам подошли. > У нас основные требования: написание ПО вместе с тестами. > Пишем на Mojo/Pg/AE/Coro. > PS: церковь саентологии в резюме конечно доставляет :) > On 15:18 Tue 28 Jun     , Denis Yurashku wrote: >> Всем добрый день. >> Я уже давний читатель этого списка. >> Ищу сейчас работу perl-программистом. >> Умею: >> • Perl >> • MySQL >> • (X)HTML, CSS >> • JavaScript >> • JQuery, Bootstrap >> • Unix shell >> • PHP (куда уж без него) >> Именно в такой псоледовательности. >> Если что-то нужно для применения – могу изучить быстро. >> Работу ищу постоянную, в крайнем случае удалённую. >> Резюме: >> • постоянное: http://hh.ru/resume/77f3cff1ff02998ff10039ed1f465436665165, >> • удалённое/частичное: то же, но в два раза ниже. >> Если у кого что есть, пишите – будем общаться предметно. >> -- >> with Best regards,: > 77f3cff1ff02998ff10039ed1f465436665165">http://hh.ru/resume/ >> 77f3cff1ff02998ff10039ed1f465436665165, >> удалённое/частичное: то же, но в два раза ниже. >> Если у кого что есть, пишите – будем общаться предметно. >> -- >> -- >> 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 From evgeniy на kosov.su Tue Jun 28 06:48:36 2016 From: evgeniy на kosov.su (=?UTF-8?B?0JXQstCz0LXQvdC40Lkg0JrQvtGB0L7Qsg==?=) Date: Tue, 28 Jun 2016 16:48:36 +0300 Subject: [Moscow.pm] =?utf-8?b?0JAg0LLQvtGCINC60L7QvNGDINGA0LDQsdC+0YI=?= =?utf-8?b?0Ys=?= In-Reply-To: References: Message-ID: <1467121716.362060159@f125.i.mail.ru> ... А если кому интересен фултайм в Европе - могу предложить переезд в Брно (Чехия). Есть несколько позиций (back, front, QA). Компания американская, так что знание чешского не требуется (только английский). ВНЖ и переезд всей семьи контора берёт на себя, а так же даёт "подъёмные" (relocation bonus). Буду рад ответить на любые вопросы вне листа. Спасибо. --  С уважением, Евгений. >Monday, June 27, 2016 8:09 PM +03:00 from Alex Chistyakov : > >Коллеги, есть небольшая задача, дописать на перле интерфейс для просмотра данных, хранящихся в бд Postgresql. Есть фронтэндер, сам интерфейс частично работает. > >Работа не пыльная, оплата или почасовая, или сдельная. >Пишите мне или Liza Golzeva < lizagoltzeva на gmail.com > > >Спасибо, > >-- >SY, >Alex >-- >Moscow.pm mailing list >moscow-pm на pm.org | http://moscow.pm.org ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From agrishaev на gmail.com Tue Jun 28 07:32:44 2016 From: agrishaev на gmail.com (=?UTF-8?B?0JPRgNC40YjQsNC10LIg0JDQvdCw0YLQvtC70LjQuQ==?=) Date: Tue, 28 Jun 2016 17:32:44 +0300 Subject: [Moscow.pm] Perl Tutorials Message-ID: Кто-то спрашивал про современный Perl Tutorial. Вот тут целая пачка http://perl-tutorial.org/ Зачитаться хватит. ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From dayfuaim на gmail.com Tue Jun 28 12:50:08 2016 From: dayfuaim на gmail.com (Denis Yurashku) Date: Tue, 28 Jun 2016 22:50:08 +0300 Subject: [Moscow.pm] =?utf-8?b?0JjRidGDINGA0LDQsdC+0YLRgw==?= In-Reply-To: <20160628130459.GM3048@vdsl.uvw.ru> References: <20160628130459.GM3048@vdsl.uvw.ru> Message-ID: Ага, готов. Скачал, завтра поглядим. :) Заранее спасибо. P.S.: Про Саентологию – ну да, работал. 28 июня 2016 г., 16:04 пользователь Ivan Petrov написал: > > Готовы тестик выполнить? > > Мы на метро Дубровка работаем, видимо Вам было бы очень удобно, если > Вы бы нам подошли. > > У нас основные требования: написание ПО вместе с тестами. > Пишем на Mojo/Pg/AE/Coro. > > PS: церковь саентологии в резюме конечно доставляет :) > > -- with Best regards, Denis A. Yurashku ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From anton.n.reznikov на gmail.com Tue Jun 28 17:23:54 2016 From: anton.n.reznikov на gmail.com (Anton N. Reznikov) Date: Wed, 29 Jun 2016 03:23:54 +0300 Subject: [Moscow.pm] =?utf-8?b?0JAg0LLQvtGCINC60L7QvNGDINGA0LDQsdC+0YI=?= =?utf-8?b?0Ys=?= In-Reply-To: <1467121716.362060159@f125.i.mail.ru> References: <1467121716.362060159@f125.i.mail.ru> Message-ID: <5773151A.7050805@gmail.com> Эта компания, случайно, не RedHat'ом зовётся? 28.06.2016 16:48, Евгений Косов пишет: > ... А если кому интересен фултайм в Европе - могу предложить переезд в > Брно (Чехия). > Есть несколько позиций (back, front, QA). Компания американская, так > что знание чешского не требуется (только английский). > ВНЖ и переезд всей семьи контора берёт на себя, а так же даёт > "подъёмные" (relocation bonus). > > Буду рад ответить на любые вопросы вне листа. > > Спасибо. > > -- > С уважением, > Евгений. > > Monday, June 27, 2016 8:09 PM +03:00 from Alex Chistyakov > : > > Коллеги, есть небольшая задача, дописать на перле интерфейс для > просмотра данных, хранящихся в бд Postgresql. Есть фронтэндер, сам > интерфейс частично работает. > > Работа не пыльная, оплата или почасовая, или сдельная. > Пишите мне или Liza Golzeva > > > Спасибо, > > -- > SY, > Alex > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > > > > ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From pavel на kuptsov.info Tue Jun 28 21:36:35 2016 From: pavel на kuptsov.info (=?UTF-8?B?0J/QsNCy0LXQuyDQmtGD0L/RhtC+0LI=?=) Date: Wed, 29 Jun 2016 07:36:35 +0300 Subject: [Moscow.pm] Perl Tutorials In-Reply-To: References: Message-ID: Начал смотреть туториал тут perltuts.com, все же надо аккуратней с интерпретатором работать https://www.dropbox.com/s/ymuevu2li1zugdp/Screenshot_2016-06-29-07-31-37.jpg?dl=0 https://www.dropbox.com/s/iuba4cjb5daoet9/Screenshot_2016-06-29-07-30-05.jpg?dl=0 28 июня 2016 г. 22:00 пользователь написал: Сообщения, предназначенные для списка рассылки 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. Perl Tutorials (Гришаев Анатолий) ---------------------------------------------------------------------- Message: 1 Date: Tue, 28 Jun 2016 17:32:44 +0300 From: Гришаев Анатолий To: "Moscow.pm group" Subject: [Moscow.pm] Perl Tutorials Message-ID: Content-Type: text/plain; charset="utf-8" Кто-то спрашивал про современный Perl Tutorial. Вот тут целая пачка http://perl-tutorial.org/ Зачитаться хватит. ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: < http://mail.pm.org/pipermail/moscow-pm/attachments/20160628/16bcfe57/attachment-0001.html > ------------------------------ Subject: Нижний колонтитул дайджеста _______________________________________________ Moscow-pm mailing list Moscow-pm на pm.org http://mail.pm.org/mailman/listinfo/moscow-pm ------------------------------ Конец Дайджест списка рассылки Moscow-pm; том 104, выпуск 14 ************************************************************************************************ ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From evgeniy на kosov.su Wed Jun 29 00:05:33 2016 From: evgeniy на kosov.su (=?UTF-8?B?0JXQstCz0LXQvdC40Lkg0JrQvtGB0L7Qsg==?=) Date: Wed, 29 Jun 2016 10:05:33 +0300 Subject: [Moscow.pm] =?utf-8?b?0JAg0LLQvtGCINC60L7QvNGDINGA0LDQsdC+0YI=?= =?utf-8?b?0Ys=?= In-Reply-To: <5773151A.7050805@gmail.com> References: <1467121716.362060159@f125.i.mail.ru> <5773151A.7050805@gmail.com> Message-ID: <1467183933.806499540@f145.i.mail.ru> Wednesday, June 29, 2016 3:23 AM +03:00 from "Anton N. Reznikov" : > >Эта компания, случайно, не RedHat'ом зовётся? Тепло, но нет, не RedHat. Забегая вперёд - и не IBM тоже. >[...] --  С уважением, Евгений. ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From max на tyulin.ru Wed Jun 29 00:16:19 2016 From: max на tyulin.ru (Max Tyulin) Date: Wed, 29 Jun 2016 10:16:19 +0300 Subject: [Moscow.pm] =?utf-8?b?0JAg0LLQvtGCINC60L7QvNGDINGA0LDQsdC+0YI=?= =?utf-8?b?0Ys=?= In-Reply-To: <1467183933.806499540@f145.i.mail.ru> References: <1467121716.362060159@f125.i.mail.ru> <5773151A.7050805@gmail.com> <1467183933.806499540@f145.i.mail.ru> Message-ID: <2251881467184579@web9g.yandex.ru> Вложение в формате HTML было извлечено… URL: From worldmind на mail.ru Thu Jun 30 01:37:06 2016 From: worldmind на mail.ru (Alexey Shrub) Date: Thu, 30 Jun 2016 11:37:06 +0300 Subject: [Moscow.pm] =?koi8-r?b?88nO1MHL08nTINLBws/U2SDTIMTB1MHNyQ==?= Message-ID: <1467275826.1858.0@smtp.mail.ru> Приветствую всех, я вот страдаю о того что в перле нет человеческого синтаксиса работы с датами (подобно тому что есть в SQL), даже вот написал как хотелось бы работать с датами http://worldmind.livejournal.com/209993.html но может какие-нибудь хакеры уже написали и кто-то знает такой модуль? Большую часть реализовать вполне возможно, но наверно не я первый об этом задумался. From asan999 на gmail.com Thu Jun 30 02:10:23 2016 From: asan999 на gmail.com (=?UTF-8?B?0JDQvdC00YDQtdC5INCQ0YHRj9C60LjQvQ==?=) Date: Thu, 30 Jun 2016 12:10:23 +0300 Subject: [Moscow.pm] =?utf-8?b?0KHQuNC90YLQsNC60YHQuNGBINGA0LDQsdC+0YI=?= =?utf-8?b?0Ysg0YEg0LTQsNGC0LDQvNC4?= In-Reply-To: <1467275826.1858.0@smtp.mail.ru> References: <1467275826.1858.0@smtp.mail.ru> Message-ID: <5774E1FF.7030005@gmail.com> Привет. Class::Date / Panda::Date Panda::Date все ж таки рекомендую. dt1 in (dt2..dt3) естественно, нет. On 06/30/2016 11:37 AM, Alexey Shrub wrote: > Приветствую всех, > > я вот страдаю о того что в перле нет человеческого синтаксиса работы с > датами (подобно тому что есть в SQL), даже вот написал как хотелось бы > работать с датами > http://worldmind.livejournal.com/209993.html > но может какие-нибудь хакеры уже написали и кто-то знает такой модуль? > Большую часть реализовать вполне возможно, но наверно не я первый об > этом задумался. From worldmind на mail.ru Thu Jun 30 02:28:29 2016 From: worldmind на mail.ru (Alexey Shrub) Date: Thu, 30 Jun 2016 12:28:29 +0300 Subject: [Moscow.pm] =?koi8-r?b?88nO1MHL08nTINLBws/U2SDTIMTB1MHNyQ==?= In-Reply-To: <5774E1FF.7030005@gmail.com> References: <5774E1FF.7030005@gmail.com> Message-ID: <1467278909.1858.1@smtp.mail.ru> Пасиб, погляжу, вот смотрю в питоне https://docs.python.org/3/library/datetime.html вроде по-человечески сделано On Чт, июн 30, 2016 в 12:10 , Андрей Асякин wrote: > Привет. > > Class::Date / Panda::Date > > Panda::Date все ж таки рекомендую. dt1 in > (dt2..dt3) естественно, нет. From alekceeb на gmail.com Thu Jun 30 02:58:52 2016 From: alekceeb на gmail.com (Denis Alexeev) Date: Thu, 30 Jun 2016 12:58:52 +0300 Subject: [Moscow.pm] =?utf-8?b?0KHQuNC90YLQsNC60YHQuNGBINGA0LDQsdC+0YI=?= =?utf-8?b?0Ysg0YEg0LTQsNGC0LDQvNC4?= In-Reply-To: <1467278909.1858.1@smtp.mail.ru> References: <5774E1FF.7030005@gmail.com> <1467278909.1858.1@smtp.mail.ru> Message-ID: Для работы и вычисления дат вполне подходит https://metacpan.org/pod/DateTime Не смотрели на него? 30 июня 2016 г., 12:28 пользователь Alexey Shrub написал: > Пасиб, погляжу, > вот смотрю в питоне https://docs.python.org/3/library/datetime.html > вроде по-человечески сделано > > On Чт, июн 30, 2016 в 12:10 , Андрей Асякин wrote: > >> Привет. >> >> Class::Date / Panda::Date >> >> Panda::Date все ж таки рекомендую. dt1 in (dt2..dt3) естественно, нет. >> > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From worldmind на mail.ru Thu Jun 30 03:22:40 2016 From: worldmind на mail.ru (Alexey Shrub) Date: Thu, 30 Jun 2016 13:22:40 +0300 Subject: [Moscow.pm] =?koi8-r?b?88nO1MHL08nTINLBws/U2SDTIMTB1MHNyQ==?= In-Reply-To: References: Message-ID: <1467282160.1858.2@smtp.mail.ru> Не подходит, именно после него и Time::Piece и возник вопрос, DateTime не перегружает все операторы нельзя например сделать d1 - d2 > duration Ну и математика ужасная типо $dt->add(DateTime::Duration(hour => 1)) за такое наказывать надо, должно быть $dt + $duration On Чт, июн 30, 2016 в 12:58 , Denis Alexeev wrote: > Для работы и вычисления дат вполне > подходит https://metacpan.org/pod/DateTime > Не смотрели на него? From worldmind на mail.ru Thu Jun 30 03:52:05 2016 From: worldmind на mail.ru (Alexey Shrub) Date: Thu, 30 Jun 2016 13:52:05 +0300 Subject: [Moscow.pm] =?koi8-r?b?88nO1MHL08nTINLBws/U2SDTIMTB1MHNyQ==?= In-Reply-To: <5774E1FF.7030005@gmail.com> References: <5774E1FF.7030005@gmail.com> Message-ID: <1467283925.1858.3@smtp.mail.ru> Class::Date по описанию хорош, но похоже не работает: perl -E 'use Class::Date qw(date); my $dt1 = date "2016-06-30 13:00"; my $dt2 = date "2016-06-30 13:20"; say 1 if (dt2 == dt1);' у меня выводит 1 даже не свежеустановленной с CPAN версии, у кого-то работает? Panda::Date ещё не посмотрел On Чт, июн 30, 2016 в 12:10 , Андрей Асякин wrote: > Class::Date / Panda::Date From chesnokov.ilya на gmail.com Thu Jun 30 04:01:39 2016 From: chesnokov.ilya на gmail.com (Ilya Chesnokov) Date: Thu, 30 Jun 2016 14:01:39 +0300 Subject: [Moscow.pm] =?utf-8?b?0KHQuNC90YLQsNC60YHQuNGBINGA0LDQsdC+0YI=?= =?utf-8?b?0Ysg0YEg0LTQsNGC0LDQvNC4?= In-Reply-To: <1467282160.1858.2@smtp.mail.ru> References: <1467282160.1858.2@smtp.mail.ru> Message-ID: 30 июня 2016 г., 13:22 пользователь Alexey Shrub написал: > Не подходит, именно после него и Time::Piece и возник вопрос, DateTime не > перегружает все операторы нельзя например сделать d1 - d2 > duration Это сделано намеренно, чтобы избежать проблем при сравнивании, например, 29 дней и 1 месяца. Вот доки: https://metacpan.org/pod/DateTime::Duration#DateTime::Duration-compare-duration1-duration2-base_datetime > Ну и математика ужасная типо $dt->add(DateTime::Duration(hour => 1)) Можно $dt->add(hours => 1); > за такое наказывать надо, должно быть $dt + $duration Так тоже можно: perl -MDateTime -E 'my $d1 = DateTime->now; my $dur1 = DateTime::Duration->new(years => 1); $d1+= $dur1; say $d1->ymd' 2017-06-30 > On Чт, июн 30, 2016 в 12:58 , Denis Alexeev wrote: >> >> Для работы и вычисления дат вполне подходит >> https://metacpan.org/pod/DateTime >> Не смотрели на него? > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org -- Best regards, Ilya Chesnokov From worldmind на mail.ru Thu Jun 30 04:11:46 2016 From: worldmind на mail.ru (Alexey Shrub) Date: Thu, 30 Jun 2016 14:11:46 +0300 Subject: [Moscow.pm] =?koi8-r?b?88nO1MHL08nTINLBws/U2SDTIMTB1MHNyQ==?= In-Reply-To: References: Message-ID: <1467285106.1858.4@smtp.mail.ru> On Чт, июн 30, 2016 в 2:01 , Ilya Chesnokov wrote: > Это сделано намеренно, чтобы избежать > проблем при сравнивании, > например, 29 дней и 1 месяца. А где связь между этими проблемами и перегрузкой операторов? Разве если эту операцию делать отдельной функцией эти проблемы решаются? В любом случае надо помнить об этих проблемах, это особенность типа > perl -MDateTime -E 'my $d1 = DateTime->now; my $dur1 = > DateTime::Duration->new(years => 1); $d1+= $dur1; say $d1->ymd' Можно всё, а нужно максимально высокоуровнево, например с Class::Date: perl -E 'use Class::Date qw(now); my $d1=now; $d1 += "1Y"; say $d1->ymd' 2017/06/30 кода меньше, читаемость выше From worldmind на mail.ru Thu Jun 30 04:25:21 2016 From: worldmind на mail.ru (Alexey Shrub) Date: Thu, 30 Jun 2016 14:25:21 +0300 Subject: [Moscow.pm] =?koi8-r?b?88nO1MHL08nTINLBws/U2SDTIMTB1MHNyQ==?= In-Reply-To: <5774E1FF.7030005@gmail.com> References: <5774E1FF.7030005@gmail.com> Message-ID: <1467285921.1858.5@smtp.mail.ru> On Чт, июн 30, 2016 в 12:10 , Андрей Асякин wrote: > Panda::Date Видимо я что-то делаю не так, но не пойму что perl -E 'use Panda::Date qw(date); my $dt1 = date "2016-06-30 13:00"; my $dt2 = date "2016-06-30 13:20"; say 1 if (dt2 == dt1);' тоже возвращает 1, хотя даты не равны From vovkasm на gmail.com Thu Jun 30 04:37:54 2016 From: vovkasm на gmail.com (Vladimir Timofeev) Date: Thu, 30 Jun 2016 14:37:54 +0300 Subject: [Moscow.pm] =?utf-8?b?0KHQuNC90YLQsNC60YHQuNGBINGA0LDQsdC+0YI=?= =?utf-8?b?0Ysg0YEg0LTQsNGC0LDQvNC4?= In-Reply-To: <1467285921.1858.5@smtp.mail.ru> References: <5774E1FF.7030005@gmail.com> <1467285921.1858.5@smtp.mail.ru> Message-ID: ))) А так? perl -E 'use Panda::Date qw(date); my $dt1 = date "2016-06-30 13:00"; my $dt2 = date "2016-06-30 13:20"; say 1 if ($dt2 == $dt1);' 2016-06-30 14:25 GMT+03:00 Alexey Shrub : > On Чт, июн 30, 2016 в 12:10 , Андрей Асякин wrote: >> >> Panda::Date > > > Видимо я что-то делаю не так, но не пойму что > perl -E 'use Panda::Date qw(date); my $dt1 = date "2016-06-30 13:00"; my > $dt2 = date "2016-06-30 13:20"; say 1 if (dt2 == dt1);' > тоже возвращает 1, хотя даты не равны > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org -- Vladimir Timofeev From worldmind на mail.ru Thu Jun 30 04:45:33 2016 From: worldmind на mail.ru (Alexey Shrub) Date: Thu, 30 Jun 2016 14:45:33 +0300 Subject: [Moscow.pm] =?koi8-r?b?88nO1MHL08nTINLBws/U2SDTIMTB1MHNyQ==?= In-Reply-To: References: Message-ID: <1467287133.1858.6@smtp.mail.ru> Спасибо тебе добрый человек, проклятый псевдокод и отсутствие стрикта по дефолту On Чт, июн 30, 2016 в 2:37 , Vladimir Timofeev wrote: > ))) > А так? > perl -E 'use Panda::Date qw(date); my $dt1 = date "2016-06-30 13:00"; > my $dt2 = date "2016-06-30 13:20"; say 1 if ($dt2 == $dt1);' From chesnokov.ilya на gmail.com Thu Jun 30 05:02:12 2016 From: chesnokov.ilya на gmail.com (Ilya Chesnokov) Date: Thu, 30 Jun 2016 15:02:12 +0300 Subject: [Moscow.pm] =?utf-8?b?0KHQuNC90YLQsNC60YHQuNGBINGA0LDQsdC+0YI=?= =?utf-8?b?0Ysg0YEg0LTQsNGC0LDQvNC4?= In-Reply-To: <1467285106.1858.4@smtp.mail.ru> References: <1467285106.1858.4@smtp.mail.ru> Message-ID: 30 июня 2016 г., 14:11 пользователь Alexey Shrub написал: > On Чт, июн 30, 2016 в 2:01 , Ilya Chesnokov > wrote: >> >> Это сделано намеренно, чтобы избежать проблем при сравнивании, >> например, 29 дней и 1 месяца. > > > А где связь между этими проблемами и перегрузкой операторов? Разве если эту > операцию делать отдельной функцией эти проблемы решаются? Вы ходили по ссылке? Там все написано. > В любом случае > надо помнить об этих проблемах, это особенность типа Это особенность сравнения интервалов времени. О ней надо помнить при работе с любыми модулями. >> perl -MDateTime -E 'my $d1 = DateTime->now; my $dur1 = >> DateTime::Duration->new(years => 1); $d1+= $dur1; say $d1->ymd' > > > Можно всё, а нужно Минутку! Сначала вы говорили, что так нельзя ;) > максимально высокоуровнево, например с Class::Date: > perl -E 'use Class::Date qw(now); my $d1=now; $d1 += "1Y"; say $d1->ymd' > 2017/06/30 > кода меньше, читаемость выше Выбор за вами. Просто DateTime - наиболее популярный модуль (посмотрите хотя бы на список обратных зависимостей), и читать код с ним большинству будет наверняка легче, чем с другими поделками. С другой стороны, он пытается охватить все возможные варианты, и такой комплексный подход иногда может быть не нужен. В любом случае рекомендую к просмотру презентацию Дейва Рольски о проблемах исчисления времени: https://www.youtube.com/watch?v=nusC1TnwOlg > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org -- Best regards, Ilya Chesnokov From worldmind на mail.ru Thu Jun 30 05:05:34 2016 From: worldmind на mail.ru (Alexey Shrub) Date: Thu, 30 Jun 2016 15:05:34 +0300 Subject: [Moscow.pm] =?koi8-r?b?88nO1MHL08nTINLBws/U2SDTIMTB1MHNyQ==?= In-Reply-To: <5774E1FF.7030005@gmail.com> References: <5774E1FF.7030005@gmail.com> Message-ID: <1467288334.1858.7@smtp.mail.ru> On Чт, июн 30, 2016 в 12:10 , Андрей Асякин wrote: > Panda::Date все ж таки рекомендую. dt1 in > (dt2..dt3) естественно, нет. косяк в нём какой-то perl -E 'use strict;use Data::Dumper;use Panda::Date qw(date); my $dt1 = date "2016-06-30 13:00"; my $dt2 = date "2016-06-30 13:20"; my $duration = ($dt2 - $dt1); say ($dt2-$duration);' Panda::Date: cannot '-' unsupported object type at -e line 1. From worldmind на mail.ru Thu Jun 30 05:19:08 2016 From: worldmind на mail.ru (Alexey Shrub) Date: Thu, 30 Jun 2016 15:19:08 +0300 Subject: [Moscow.pm] =?koi8-r?b?88nO1MHL08nTINLBws/U2SDTIMTB1MHNyQ==?= In-Reply-To: References: Message-ID: <1467289148.1858.8@smtp.mail.ru> On Чт, июн 30, 2016 в 3:02 , Ilya Chesnokov wrote: > Вы ходили по ссылке? Там все написано. Я это читал, перечитал, ну возможно такая уродливая запись будет постоянно напоминать о проблеме, но даже в ней есть поведение про умолчанию, когда в качестве базовой даты берётся текущее время и ничего не мешало для такого случая перегрузить операторы, тем более что чаще всего длительность измеряется в нормальных единицах, месяцы и годы это всё же редкость - уродливый синтаксис может быть для особых случаев, а для большинства должен быть нормальный. > Минутку! Сначала вы говорили, что так > нельзя ;) Не важно, я или упустил этот вариант или просто не упомянул, в любом случае это кривое решение с точки зрения читаемости. > Выбор за вами. Просто DateTime - наиболее > популярный модуль да это и печально, что рекомендуемые модули имеют такие странные интерфейсы, почему-то в питоне смогли сделать нормальный синтаксис по умолчанию, а в перле это в альтернативных модулях, но Class::Date пока мне нравится From agrishaev на gmail.com Thu Jun 30 05:31:37 2016 From: agrishaev на gmail.com (=?UTF-8?B?0JPRgNC40YjQsNC10LIg0JDQvdCw0YLQvtC70LjQuQ==?=) Date: Thu, 30 Jun 2016 15:31:37 +0300 Subject: [Moscow.pm] =?utf-8?b?0KHQuNC90YLQsNC60YHQuNGBINGA0LDQsdC+0YI=?= =?utf-8?b?0Ysg0YEg0LTQsNGC0LDQvNC4?= In-Reply-To: <1467289148.1858.8@smtp.mail.ru> References: <1467289148.1858.8@smtp.mail.ru> Message-ID: 30 июня 2016 г., 15:19 пользователь Alexey Shrub написал: > On Чт, июн 30, 2016 в 3:02 , Ilya Chesnokov > wrote: > >> Вы ходили по ссылке? Там все написано. >> > > Я это читал, перечитал, ну возможно такая уродливая запись будет постоянно > напоминать о проблеме, но даже в ней есть поведение про умолчанию, когда в > качестве базовой даты берётся текущее время и ничего не мешало для такого > случая перегрузить операторы, тем более что чаще всего длительность > измеряется в нормальных единицах, месяцы и годы это всё же редкость - > уродливый синтаксис может быть для особых случаев, а для большинства должен > быть нормальный. > Эээ. Обычно как раз измеряется в ненормальных единицах. Время следующей зарплаты к примеру это +month или, что похуже 0.5 month. В бизнес логике постояно первый день месяца, пятый день месяца, документ можно менять задним числом не позже трех месяцев относительно сегодня и т.д. А для случаев, когда можно обойтись секундами, днями и часами можно написать модуль на 20 строк с документацией и будет все в ажуре. И вообщем для этого не надо звать DateTime и т.п. > > Минутку! Сначала вы говорили, что так нельзя ;) >> > > Не важно, я или упустил этот вариант или просто не упомянул, в любом > случае это кривое решение с точки зрения читаемости. > > Выбор за вами. Просто DateTime - наиболее популярный модуль >> > > да это и печально, что рекомендуемые модули имеют такие странные > интерфейсы, почему-то в питоне смогли сделать нормальный синтаксис по > умолчанию, а в перле это в альтернативных модулях, но Class::Date пока мне > нравится > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From worldmind на mail.ru Thu Jun 30 05:41:18 2016 From: worldmind на mail.ru (Alexey Shrub) Date: Thu, 30 Jun 2016 15:41:18 +0300 Subject: [Moscow.pm] =?koi8-r?b?88nO1MHL08nTINLBws/U2SDTIMTB1MHNyQ==?= In-Reply-To: References: Message-ID: <1467290478.1858.9@smtp.mail.ru> Мне вот почему-то кажется, что это уже вопрос не арифметики дат, а работы с календарём. В питоне максимальная единица timedelta это неделя, видимо месяцы там прибавляют с помощью модуля calendar On Чт, июн 30, 2016 в 3:31 , Гришаев Анатолий wrote: > Обычно как раз измеряется в > ненормальных единицах. Время > следующей зарплаты к примеру это +month > или, что похуже 0.5 month. > В бизнес логике постояно первый день > месяца, пятый день месяца, документ > можно менять задним числом не позже > трех месяцев относительно сегодня и > т.д. From worldmind на mail.ru Thu Jun 30 05:46:01 2016 From: worldmind на mail.ru (Alexey Shrub) Date: Thu, 30 Jun 2016 15:46:01 +0300 Subject: [Moscow.pm] =?koi8-r?b?88nO1MHL08nTINLBws/U2SDTIMTB1MHNyQ==?= In-Reply-To: References: Message-ID: <1467290761.1858.10@smtp.mail.ru> Да, точно, "5-й день следующего месяца" это точно не про арифметику дат, а про календарь On Чт, июн 30, > В бизнес логике постояно первый день > месяца, пятый день месяца, документ > можно менять задним числом не позже > трех месяцев относительно сегодня и > т.д. From gnatyna на ya.ru Thu Jun 30 04:40:34 2016 From: gnatyna на ya.ru (Alexander Gnatyna) Date: Thu, 30 Jun 2016 14:40:34 +0300 Subject: [Moscow.pm] =?utf-8?b?0KHQuNC90YLQsNC60YHQuNGBINGA0LDQsdC+0YI=?= =?utf-8?b?0Ysg0YEg0LTQsNGC0LDQvNC4?= In-Reply-To: <1467285921.1858.5@smtp.mail.ru> References: <5774E1FF.7030005@gmail.com> <1467285921.1858.5@smtp.mail.ru> Message-ID: <8121930.xCkyolC2CI@gnatyna-hp> perl -Mstrict -Mwarnings -E 'use Class::Date qw(date); my $dt1 = date "2016-06-30 13:00"; my $dt2 = date "2016-06-30 13:20"; say 1 if (dt2 == dt1); ' Bareword "dt2" not allowed while "strict subs" in use at -e line 1. Bareword "dt1" not allowed while "strict subs" in use at -e line 1. Execution of -e aborted due to compilation errors. В письме от 30 июня 2016 14:25:21 пользователь Alexey Shrub написал: > On Чт, июн 30, 2016 в 12:10 , Андрей Асякин > > wrote: > > Panda::Date > > Видимо я что-то делаю не так, но не > пойму что > perl -E 'use Panda::Date qw(date); my $dt1 = date "2016-06-30 13:00"; > my $dt2 = date "2016-06-30 13:20"; say 1 if (dt2 == dt1);' > тоже возвращает 1, хотя даты не равны > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org From gnatyna на ya.ru Thu Jun 30 04:40:20 2016 From: gnatyna на ya.ru (Alexander Gnatyna) Date: Thu, 30 Jun 2016 14:40:20 +0300 Subject: [Moscow.pm] =?utf-8?b?0KHQuNC90YLQsNC60YHQuNGBINGA0LDQsdC+0YI=?= =?utf-8?b?0Ysg0YEg0LTQsNGC0LDQvNC4?= In-Reply-To: <1467285921.1858.5@smtp.mail.ru> References: <5774E1FF.7030005@gmail.com> <1467285921.1858.5@smtp.mail.ru> Message-ID: <5680573.6IsoGGGUqY@gnatyna-hp> В письме от 30 июня 2016 14:25:21 пользователь Alexey Shrub написал: > On Чт, июн 30, 2016 в 12:10 , Андрей Асякин > > wrote: > > Panda::Date > > Видимо я что-то делаю не так, но не > пойму что > perl -E 'use Panda::Date qw(date); my $dt1 = date "2016-06-30 13:00"; > my $dt2 = date "2016-06-30 13:20"; say 1 if (dt2 == dt1);' > тоже возвращает 1, хотя даты не равны > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org From a.bovanenko на gmail.com Thu Jun 30 05:52:29 2016 From: a.bovanenko на gmail.com (Alexey Bovanenko) Date: Thu, 30 Jun 2016 16:52:29 +0400 Subject: [Moscow.pm] =?utf-8?b?0KHQuNC90YLQsNC60YHQuNGBINGA0LDQsdC+0YI=?= =?utf-8?b?0Ysg0YEg0LTQsNGC0LDQvNC4?= In-Reply-To: References: <1467290761.1858.10@smtp.mail.ru> Message-ID: Добрый день, а Date::Calc не подходит? 30 июня 2016 г. 15:47 пользователь "Alexey Shrub" написал: Да, точно, "5-й день следующего месяца" это точно не про арифметику дат, а про календарь On Чт, июн 30, В бизнес логике постояно первый день месяца, пятый день месяца, документ > можно менять задним числом не позже трех месяцев относительно сегодня и т.д. > -- Moscow.pm mailing list moscow-pm на pm.org | http://moscow.pm.org ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From worldmind на mail.ru Thu Jun 30 06:01:02 2016 From: worldmind на mail.ru (Alexey Shrub) Date: Thu, 30 Jun 2016 16:01:02 +0300 Subject: [Moscow.pm] =?koi8-r?b?88nO1MHL08nTINLBws/U2SDTIMTB1MHNyQ==?= In-Reply-To: References: Message-ID: <1467291662.1858.11@smtp.mail.ru> Вот он как раз про календарь On Чт, июн 30, 2016 в 3:52 , Alexey Bovanenko wrote: > а Date::Calc не подходит? From asan999 на gmail.com Thu Jun 30 06:03:45 2016 From: asan999 на gmail.com (=?UTF-8?B?0JDQvdC00YDQtdC5INCQ0YHRj9C60LjQvQ==?=) Date: Thu, 30 Jun 2016 16:03:45 +0300 Subject: [Moscow.pm] =?utf-8?b?0KHQuNC90YLQsNC60YHQuNGBINGA0LDQsdC+0YI=?= =?utf-8?b?0Ysg0YEg0LTQsNGC0LDQvNC4?= In-Reply-To: <1467288334.1858.7@smtp.mail.ru> References: <5774E1FF.7030005@gmail.com> <1467288334.1858.7@smtp.mail.ru> Message-ID: <577518B1.3050601@gmail.com> Не косяк, а фича. В Panda::Date $date1 - $date2 дает объект класса Panda::Date::Int, а не Panda::Date::Rel. И в этом Panda::Date отличается от Class::Date, смотри https://metacpan.org/pod/distribution/Panda-Date/lib/Panda/Date.pod#Class::Date-INCOMPABILITIES Наверно, это правильней.. Я не такой продвинутый вычиталель дат, навскидку вот так работает perl -Mstrict -MPanda::Date=date -E 'my $dt = date; my $dt2 = $dt + "1y 3h"; say +($dt2 - $dt)->relative' или так Panda::Date::Rel->new($d1, $d2) Тут есть, кто может объяснить, как задумано. ЗЫ. У меня одного gmail рассылку в спам кладет? On 06/30/2016 03:05 PM, Alexey Shrub wrote: > > On Чт, июн 30, 2016 в 12:10 , Андрей Асякин wrote: >> Panda::Date все ж таки рекомендую. dt1 in (dt2..dt3) естественно, нет. > > косяк в нём какой-то > perl -E 'use strict;use Data::Dumper;use Panda::Date qw(date); my $dt1 > = date "2016-06-30 13:00"; my $dt2 = date "2016-06-30 13:20"; my > $duration = ($dt2 - $dt1); say ($dt2-$duration);' > Panda::Date: cannot '-' unsupported object type at -e line 1. From agrishaev на gmail.com Thu Jun 30 06:07:39 2016 From: agrishaev на gmail.com (=?UTF-8?B?0JPRgNC40YjQsNC10LIg0JDQvdCw0YLQvtC70LjQuQ==?=) Date: Thu, 30 Jun 2016 16:07:39 +0300 Subject: [Moscow.pm] =?utf-8?b?0KHQuNC90YLQsNC60YHQuNGBINGA0LDQsdC+0YI=?= =?utf-8?b?0Ysg0YEg0LTQsNGC0LDQvNC4?= In-Reply-To: <577518B1.3050601@gmail.com> References: <5774E1FF.7030005@gmail.com> <1467288334.1858.7@smtp.mail.ru> <577518B1.3050601@gmail.com> Message-ID: > > ЗЫ. > У меня одного gmail рассылку в спам кладет? > > Не одного тебя. у меня ещё gmail папку Спам прячет, что кажется проблем нет, подставляет потихоньку ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From worldmind на mail.ru Thu Jun 30 06:11:18 2016 From: worldmind на mail.ru (Alexey Shrub) Date: Thu, 30 Jun 2016 16:11:18 +0300 Subject: [Moscow.pm] =?koi8-r?b?88nO1MHL08nTINLBws/U2SDTIMTB1MHNyQ==?= In-Reply-To: <577518B1.3050601@gmail.com> References: <577518B1.3050601@gmail.com> Message-ID: <1467292278.1858.12@smtp.mail.ru> Плохая фича, неочевидная и непонятная, как это при вычитании дат можно получить интервал а не длительность? On Чт, июн 30, 2016 в 4:03 , Андрей Асякин wrote: > Не косяк, а фича. > > В Panda::Date $date1 - $date2 дает объект класса > Panda::Date::Int, а не > Panda::Date::Rel. > И в этом Panda::Date отличается от Class::Date, > смотри > https://metacpan.org/pod/distribution/Panda-Date/lib/Panda/Date.pod#Class::Date-INCOMPABILITIES > Наверно, это правильней.. From agrishaev на gmail.com Thu Jun 30 06:21:12 2016 From: agrishaev на gmail.com (=?UTF-8?B?0JPRgNC40YjQsNC10LIg0JDQvdCw0YLQvtC70LjQuQ==?=) Date: Thu, 30 Jun 2016 16:21:12 +0300 Subject: [Moscow.pm] =?utf-8?b?0KHQuNC90YLQsNC60YHQuNGBINGA0LDQsdC+0YI=?= =?utf-8?b?0Ysg0YEg0LTQsNGC0LDQvNC4?= In-Reply-To: <1467290478.1858.9@smtp.mail.ru> References: <1467290478.1858.9@smtp.mail.ru> Message-ID: 30 июня 2016 г., 15:41 пользователь Alexey Shrub написал: > Мне вот почему-то кажется, что это уже вопрос не арифметики дат, а работы > с календарём. > В питоне максимальная единица timedelta это неделя, видимо месяцы там > прибавляют с помощью модуля calendar > Это мне кажется вопрос типа к кому ты ближе к людям или к математикам. По опыту люди наливают чаще, но неоднозначностей больше. А с математиками все строго и корректно, но вопрос сформулировать уже проблема, и ответ сразу не разберешь --- одни формулы :) С людьми проще добиться понимания, но это не так красиво как в математике. > On Чт, июн 30, 2016 в 3:31 , Гришаев Анатолий wrote: > >> Обычно как раз измеряется в ненормальных единицах. Время следующей >> зарплаты к примеру это +month или, что похуже 0.5 month. >> В бизнес логике постояно первый день месяца, пятый день месяца, документ >> можно менять задним числом не позже трех месяцев относительно сегодня и т.д. >> > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From worldmind на mail.ru Thu Jun 30 06:31:56 2016 From: worldmind на mail.ru (Alexey Shrub) Date: Thu, 30 Jun 2016 16:31:56 +0300 Subject: [Moscow.pm] =?koi8-r?b?88nO1MHL08nTINLBws/U2SDTIMTB1MHNyQ==?= In-Reply-To: References: Message-ID: <1467293516.1858.14@smtp.mail.ru> Не вижу связи, каждую проблему нужно решать своим инструментом и все вещи нужно называть своими именами, где-то нужна арифметика datetime, а где-то календарь > Это мне кажется вопрос типа к кому ты > ближе к людям или к математикам. > По опыту люди наливают чаще, но > неоднозначностей больше. А с > математиками все строго и корректно, > но вопрос сформулировать уже > проблема, > и ответ сразу не разберешь --- одни > формулы :) > С людьми проще добиться понимания, но > это не так красиво как в математике. From asan999 на gmail.com Thu Jun 30 06:43:51 2016 From: asan999 на gmail.com (=?UTF-8?B?0JDQvdC00YDQtdC5INCQ0YHRj9C60LjQvQ==?=) Date: Thu, 30 Jun 2016 16:43:51 +0300 Subject: [Moscow.pm] =?utf-8?b?0KHQuNC90YLQsNC60YHQuNGBINGA0LDQsdC+0YI=?= =?utf-8?b?0Ysg0YEg0LTQsNGC0LDQvNC4?= In-Reply-To: <1467292278.1858.12@smtp.mail.ru> References: <577518B1.3050601@gmail.com> <1467292278.1858.12@smtp.mail.ru> Message-ID: <57752217.2030809@gmail.com> Ну не знаю, не знаю. Не очевидно мне кажется) Обычно то, что можно вычитать, можно и складывать... а сложение двух ДАТ что должно дать? Тут минус видимо не вычитание, а оператор создания интервала. On 06/30/2016 04:11 PM, Alexey Shrub wrote: > Плохая фича, неочевидная и непонятная, как это при вычитании дат можно > получить интервал а не длительность? > > On Чт, июн 30, 2016 в 4:03 , Андрей Асякин wrote: >> Не косяк, а фича. >> >> В Panda::Date $date1 - $date2 дает объект класса Panda::Date::Int, а не >> Panda::Date::Rel. >> И в этом Panda::Date отличается от Class::Date, смотри >> https://metacpan.org/pod/distribution/Panda-Date/lib/Panda/Date.pod#Class::Date-INCOMPABILITIES >> >> Наверно, это правильней.. From worldmind на mail.ru Thu Jun 30 06:45:28 2016 From: worldmind на mail.ru (Alexey Shrub) Date: Thu, 30 Jun 2016 16:45:28 +0300 Subject: [Moscow.pm] =?koi8-r?b?88nO1MHL08nTINLBws/U2SDTIMTB1MHNyQ==?= In-Reply-To: <57752217.2030809@gmail.com> References: <57752217.2030809@gmail.com> Message-ID: <1467294328.1858.15@smtp.mail.ru> для создания интервала двоеточие бы подошло On Чт, июн 30, 2016 в 4:43 , Андрей Асякин wrote: > Ну не знаю, не знаю. Не очевидно мне > кажется) Обычно то, что можно вычитать, > можно и складывать... а сложение двух > ДАТ что должно дать? > Тут минус видимо не вычитание, а > оператор создания интервала. From agrishaev на gmail.com Thu Jun 30 06:49:27 2016 From: agrishaev на gmail.com (=?UTF-8?B?0JPRgNC40YjQsNC10LIg0JDQvdCw0YLQvtC70LjQuQ==?=) Date: Thu, 30 Jun 2016 16:49:27 +0300 Subject: [Moscow.pm] =?utf-8?b?0KHQuNC90YLQsNC60YHQuNGBINGA0LDQsdC+0YI=?= =?utf-8?b?0Ysg0YEg0LTQsNGC0LDQvNC4?= In-Reply-To: <1467293516.1858.14@smtp.mail.ru> References: <1467293516.1858.14@smtp.mail.ru> Message-ID: А это ты про что? До Вавилонской башни все говорили на одном языке и решали все своим инструментом, так это миф, а реальность другая. И с тех пор вещи неправильно называют довольно часто. 30 июня 2016 г., 16:31 пользователь Alexey Shrub написал: > Не вижу связи, каждую проблему нужно решать своим инструментом и все вещи > нужно называть своими именами, где-то нужна арифметика datetime, а где-то > календарь > > Это мне кажется вопрос типа к кому ты ближе к людям или к математикам. >> По опыту люди наливают чаще, но неоднозначностей больше. А с >> математиками все строго и корректно, но вопрос сформулировать уже проблема, >> и ответ сразу не разберешь --- одни формулы :) >> С людьми проще добиться понимания, но это не так красиво как в математике. >> > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From asan999 на gmail.com Thu Jun 30 07:16:00 2016 From: asan999 на gmail.com (=?UTF-8?B?0JDQvdC00YDQtdC5INCQ0YHRj9C60LjQvQ==?=) Date: Thu, 30 Jun 2016 17:16:00 +0300 Subject: [Moscow.pm] =?utf-8?b?0KHQuNC90YLQsNC60YHQuNGBINGA0LDQsdC+0YI=?= =?utf-8?b?0Ysg0YEg0LTQsNGC0LDQvNC4?= In-Reply-To: <1467294328.1858.15@smtp.mail.ru> References: <57752217.2030809@gmail.com> <1467294328.1858.15@smtp.mail.ru> Message-ID: <577529A0.1060305@gmail.com> двоеточие нельзя перегружать. В общем, можно так, можно этак, здесь сделали вот так. Подозреваю, что были причины) On 06/30/2016 04:45 PM, Alexey Shrub wrote: > для создания интервала двоеточие бы подошло > > On Чт, июн 30, 2016 в 4:43 , Андрей Асякин wrote: >> Ну не знаю, не знаю. Не очевидно мне кажется) Обычно то, что можно >> вычитать, >> можно и складывать... а сложение двух ДАТ что должно дать? >> Тут минус видимо не вычитание, а оператор создания интервала. From sergle.ua на gmail.com Thu Jun 30 09:08:25 2016 From: sergle.ua на gmail.com (Sergey Leschenko) Date: Thu, 30 Jun 2016 19:08:25 +0300 Subject: [Moscow.pm] =?utf-8?b?0KHQuNC90YLQsNC60YHQuNGBINGA0LDQsdC+0YI=?= =?utf-8?b?0Ysg0YEg0LTQsNGC0LDQvNC4?= In-Reply-To: <1467275826.1858.0@smtp.mail.ru> References: <1467275826.1858.0@smtp.mail.ru> Message-ID: В SQL при работе с датами тоже полно вопросов и тонкостей (и особенностей данной базы) так что это не очень хороший пример. ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From sergle.ua на gmail.com Thu Jun 30 09:11:51 2016 From: sergle.ua на gmail.com (Sergey Leschenko) Date: Thu, 30 Jun 2016 19:11:51 +0300 Subject: [Moscow.pm] =?utf-8?b?0KHQuNC90YLQsNC60YHQuNGBINGA0LDQsdC+0YI=?= =?utf-8?b?0Ysg0YEg0LTQsNGC0LDQvNC4?= In-Reply-To: <1467293516.1858.14@smtp.mail.ru> References: <1467293516.1858.14@smtp.mail.ru> Message-ID: 2016-06-30 16:31 GMT+03:00 Alexey Shrub : > Не вижу связи, каждую проблему нужно решать своим инструментом и все вещи > нужно называть своими именами, где-то нужна арифметика datetime, а где-то > календарь > ​При добавлении таймзон ​арифметика дат начинает зависеть от календаря. -- Sergey ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From worldmind на mail.ru Thu Jun 30 09:16:06 2016 From: worldmind на mail.ru (Alexey Shrub) Date: Thu, 30 Jun 2016 19:16:06 +0300 Subject: [Moscow.pm] =?koi8-r?b?88nO1MHL08nTINLBws/U2SDTIMTB1MHNyQ==?= In-Reply-To: References: Message-ID: <1467303366.1858.16@smtp.mail.ru> ? Вроде никак не начинает, таймзона это лишь указание как дату выводить, а при операциях всё должно быть приведено к единому виду On Чт, июн 30, 2016 в 7:11 , Sergey Leschenko wrote: > ​При добавлении таймзон ​арифметика > дат начинает зависеть от календаря. From worldmind на mail.ru Thu Jun 30 09:18:50 2016 From: worldmind на mail.ru (Alexey Shrub) Date: Thu, 30 Jun 2016 19:18:50 +0300 Subject: [Moscow.pm] =?koi8-r?b?88nO1MHL08nTINLBws/U2SDTIMTB1MHNyQ==?= In-Reply-To: <577529A0.1060305@gmail.com> References: <577529A0.1060305@gmail.com> Message-ID: <1467303530.1858.17@smtp.mail.ru> Да вот непонятно какие причины могут быть, дата это *число* единиц времени от начала отсчёта, не вижу причин почему из одного числа нельзя вычесть другое, да и сложить можно, только смысла мало On Чт, июн 30, 2016 в 5:16 , Андрей Асякин wrote: > В общем, можно так, можно этак, здесь > сделали вот так. > Подозреваю, что были причины) From agrishaev на gmail.com Thu Jun 30 09:25:31 2016 From: agrishaev на gmail.com (=?UTF-8?B?0JPRgNC40YjQsNC10LIg0JDQvdCw0YLQvtC70LjQuQ==?=) Date: Thu, 30 Jun 2016 19:25:31 +0300 Subject: [Moscow.pm] =?utf-8?b?0J3QsNGD0YfQuNGC0LUg0L/QuNGB0LDRgtGMINC6?= =?utf-8?b?0YDQsNGB0LjQstGL0LUg0YLQtdGB0YLRiw==?= Message-ID: Добрый день Moscow PM! Пишу тесты для сложной функции-монстра На вход принимает строку и на выход "почти" строку. Сейчас тесты выглядят так //////////////////////////// my ($want_result, $input) = ( "вход 1", "выход 1") my $r = my_func($input) ok($r) is($r->string, $want_result, "parse $input") my ($want_result, $input) = ( "вход 2", "выход 2") my $r = my_func($input) ok($r) is($r->string, $want_result, "parse $input") ////////////////////////// Получается куча повторяющего кода, в котором теряется суть Можно ли этого избежать и писать более красиво? ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From parserpro на gmail.com Thu Jun 30 09:29:32 2016 From: parserpro на gmail.com (=?UTF-8?B?0JDQu9C10LrRgdC10Lkg0JzRi9GI0LrQuNC9?=) Date: Thu, 30 Jun 2016 19:29:32 +0300 Subject: [Moscow.pm] =?utf-8?b?0J3QsNGD0YfQuNGC0LUg0L/QuNGB0LDRgtGMINC6?= =?utf-8?b?0YDQsNGB0LjQstGL0LUg0YLQtdGB0YLRiw==?= In-Reply-To: References: Message-ID: Разве нельзя тупо завернуть в цикл и параметры брать из, например, хэша? 30 июня 2016 г. 7:25 PM пользователь "Гришаев Анатолий" написал: > Добрый день Moscow PM! > > > Пишу тесты для сложной функции-монстра > > На вход принимает строку и на выход "почти" строку. > > > Сейчас тесты выглядят так > //////////////////////////// > my ($want_result, $input) = ( "вход 1", "выход 1") > > my $r = my_func($input) > ok($r) > is($r->string, $want_result, "parse $input") > > my ($want_result, $input) = ( "вход 2", "выход 2") > > my $r = my_func($input) > ok($r) > is($r->string, $want_result, "parse $input") > ////////////////////////// > > Получается куча повторяющего кода, в котором теряется суть > > Можно ли этого избежать и писать более красиво? > > > > > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > > ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From agrishaev на gmail.com Thu Jun 30 09:43:10 2016 From: agrishaev на gmail.com (=?UTF-8?B?0JPRgNC40YjQsNC10LIg0JDQvdCw0YLQvtC70LjQuQ==?=) Date: Thu, 30 Jun 2016 19:43:10 +0300 Subject: [Moscow.pm] =?utf-8?b?0J3QsNGD0YfQuNGC0LUg0L/QuNGB0LDRgtGMINC6?= =?utf-8?b?0YDQsNGB0LjQstGL0LUg0YLQtdGB0YLRiw==?= In-Reply-To: References: Message-ID: Идея интересная +1 Но 1) Хотел несколько вариантов 2) Но строки бывают сложные, иногда на несколько строк и важны переносы строк пробелы и т.п. И писать хэши { < < написал: > Разве нельзя тупо завернуть в цикл и параметры брать из, например, хэша? > 30 июня 2016 г. 7:25 PM пользователь "Гришаев Анатолий" < > agrishaev на gmail.com> написал: > >> Добрый день Moscow PM! >> >> >> Пишу тесты для сложной функции-монстра >> >> На вход принимает строку и на выход "почти" строку. >> >> >> Сейчас тесты выглядят так >> //////////////////////////// >> my ($want_result, $input) = ( "вход 1", "выход 1") >> >> my $r = my_func($input) >> ok($r) >> is($r->string, $want_result, "parse $input") >> >> my ($want_result, $input) = ( "вход 2", "выход 2") >> >> my $r = my_func($input) >> ok($r) >> is($r->string, $want_result, "parse $input") >> ////////////////////////// >> >> Получается куча повторяющего кода, в котором теряется суть >> >> Можно ли этого избежать и писать более красиво? >> >> >> >> >> >> -- >> 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 akzhan.abdulin на gmail.com Thu Jun 30 09:46:31 2016 From: akzhan.abdulin на gmail.com (Akzhan Abdulin) Date: Thu, 30 Jun 2016 19:46:31 +0300 Subject: [Moscow.pm] =?utf-8?b?0J3QsNGD0YfQuNGC0LUg0L/QuNGB0LDRgtGMINC6?= =?utf-8?b?0YDQsNGB0LjQstGL0LUg0YLQtdGB0YLRiw==?= In-Reply-To: References: Message-ID: оно? https://github.com/plack/Plack/blob/master/t/Plack-Middleware/lint_wrong_header_info.t 30 июня 2016 г., 19:25 пользователь Гришаев Анатолий написал: > Добрый день Moscow PM! > > > Пишу тесты для сложной функции-монстра > > На вход принимает строку и на выход "почти" строку. > > > Сейчас тесты выглядят так > //////////////////////////// > my ($want_result, $input) = ( "вход 1", "выход 1") > > my $r = my_func($input) > ok($r) > is($r->string, $want_result, "parse $input") > > my ($want_result, $input) = ( "вход 2", "выход 2") > > my $r = my_func($input) > ok($r) > is($r->string, $want_result, "parse $input") > ////////////////////////// > > Получается куча повторяющего кода, в котором теряется суть > > Можно ли этого избежать и писать более красиво? > > > > > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > > ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From victor на vsespb.ru Thu Jun 30 09:53:30 2016 From: victor на vsespb.ru (Victor Efimov) Date: Thu, 30 Jun 2016 19:53:30 +0300 Subject: [Moscow.pm] =?utf-8?b?0J3QsNGD0YfQuNGC0LUg0L/QuNGB0LDRgtGMINC6?= =?utf-8?b?0YDQsNGB0LjQstGL0LUg0YLQtdGB0YLRiw==?= In-Reply-To: References: Message-ID: или я переодически делаю вместо === my ($want_result, $input) = ( "вход 1", "выход 1") my $r = my_func($input) ok($r) is($r->string, $want_result, "parse $input") === так: === sub test_case { my ($want_result, $input) = @_; my $r = my_func($input) ok($r) is($r->string, $want_result, "parse $input") } test_case( "вход 1", "выход 1"); test_case( "вход 2", "выход 2"); test_case( "вход 3", "выход 3"); test_case( "вход 4", "выход 4"); === что-то в общем-то эквивалентно готовому хэшу с вход-выход 30 июня 2016 г., 19:46 пользователь Akzhan Abdulin написал: > оно? > > https://github.com/plack/Plack/blob/master/t/Plack-Middleware/lint_wrong_header_info.t > > 30 июня 2016 г., 19:25 пользователь Гришаев Анатолий > написал: >> >> Добрый день Moscow PM! >> >> >> Пишу тесты для сложной функции-монстра >> >> На вход принимает строку и на выход "почти" строку. >> >> >> Сейчас тесты выглядят так >> //////////////////////////// >> my ($want_result, $input) = ( "вход 1", "выход 1") >> >> my $r = my_func($input) >> ok($r) >> is($r->string, $want_result, "parse $input") >> >> my ($want_result, $input) = ( "вход 2", "выход 2") >> >> my $r = my_func($input) >> ok($r) >> is($r->string, $want_result, "parse $input") >> ////////////////////////// >> >> Получается куча повторяющего кода, в котором теряется суть >> >> Можно ли этого избежать и писать более красиво? >> >> >> >> >> >> -- >> 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 agrishaev на gmail.com Thu Jun 30 10:00:28 2016 From: agrishaev на gmail.com (=?UTF-8?B?0JPRgNC40YjQsNC10LIg0JDQvdCw0YLQvtC70LjQuQ==?=) Date: Thu, 30 Jun 2016 20:00:28 +0300 Subject: [Moscow.pm] =?utf-8?b?0J3QsNGD0YfQuNGC0LUg0L/QuNGB0LDRgtGMINC6?= =?utf-8?b?0YDQsNGB0LjQstGL0LUg0YLQtdGB0YLRiw==?= In-Reply-To: References: Message-ID: Почти, что надо. Маленький минус --- теряется информация о строке к которой определен тест Если добавить { app => sub { return [ 200, [ foo => "\021bar" ], [ 'OK' ] ]; }, die => qr/Response headers MUST NOT contain characters below octal.+Header: foo/, line => get_line(), }, Будет почти что надо 30 июня 2016 г., 19:46 пользователь Akzhan Abdulin написал: > оно? > > > https://github.com/plack/Plack/blob/master/t/Plack-Middleware/lint_wrong_header_info.t > > 30 июня 2016 г., 19:25 пользователь Гришаев Анатолий > написал: > >> Добрый день Moscow PM! >> >> >> Пишу тесты для сложной функции-монстра >> >> На вход принимает строку и на выход "почти" строку. >> >> >> Сейчас тесты выглядят так >> //////////////////////////// >> my ($want_result, $input) = ( "вход 1", "выход 1") >> >> my $r = my_func($input) >> ok($r) >> is($r->string, $want_result, "parse $input") >> >> my ($want_result, $input) = ( "вход 2", "выход 2") >> >> my $r = my_func($input) >> ok($r) >> is($r->string, $want_result, "parse $input") >> ////////////////////////// >> >> Получается куча повторяющего кода, в котором теряется суть >> >> Можно ли этого избежать и писать более красиво? >> >> >> >> >> >> -- >> 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 akzhan.abdulin на gmail.com Thu Jun 30 10:04:54 2016 From: akzhan.abdulin на gmail.com (Akzhan Abdulin) Date: Thu, 30 Jun 2016 20:04:54 +0300 Subject: [Moscow.pm] =?utf-8?b?0J3QsNGD0YfQuNGC0LUg0L/QuNGB0LDRgtGMINC6?= =?utf-8?b?0YDQsNGB0LjQstGL0LUg0YLQtdGB0YLRiw==?= In-Reply-To: References: Message-ID: Обычно нужно знать искомый пример для фэйла и весь кейс его воспроизведения. Если для этого требуется знать номер строки, то да, обязательно надо добавить, и наверняка это можно автоматизировать. Просто такой задачи тогда не стояло. 30 июня 2016 г., 20:00 пользователь Гришаев Анатолий написал: > Почти, что надо. > Маленький минус --- теряется информация о строке к которой определен тест > Если добавить > > { > app => sub { return [ 200, [ foo => "\021bar" ], [ 'OK' ] ]; }, > die => qr/Response headers MUST NOT contain characters below > octal.+Header: foo/, > line => get_line(), > }, > > Будет почти что надо > > 30 июня 2016 г., 19:46 пользователь Akzhan Abdulin < > akzhan.abdulin на gmail.com> написал: > >> оно? >> >> >> https://github.com/plack/Plack/blob/master/t/Plack-Middleware/lint_wrong_header_info.t >> >> 30 июня 2016 г., 19:25 пользователь Гришаев Анатолий > > написал: >> >>> Добрый день Moscow PM! >>> >>> >>> Пишу тесты для сложной функции-монстра >>> >>> На вход принимает строку и на выход "почти" строку. >>> >>> >>> Сейчас тесты выглядят так >>> //////////////////////////// >>> my ($want_result, $input) = ( "вход 1", "выход 1") >>> >>> my $r = my_func($input) >>> ok($r) >>> is($r->string, $want_result, "parse $input") >>> >>> my ($want_result, $input) = ( "вход 2", "выход 2") >>> >>> my $r = my_func($input) >>> ok($r) >>> is($r->string, $want_result, "parse $input") >>> ////////////////////////// >>> >>> Получается куча повторяющего кода, в котором теряется суть >>> >>> Можно ли этого избежать и писать более красиво? >>> >>> >>> >>> >>> >>> -- >>> 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 agrishaev на gmail.com Thu Jun 30 10:10:04 2016 From: agrishaev на gmail.com (=?UTF-8?B?0JPRgNC40YjQsNC10LIg0JDQvdCw0YLQvtC70LjQuQ==?=) Date: Thu, 30 Jun 2016 20:10:04 +0300 Subject: [Moscow.pm] =?utf-8?b?0J3QsNGD0YfQuNGC0LUg0L/QuNGB0LDRgtGMINC6?= =?utf-8?b?0YDQsNGB0LjQstGL0LUg0YLQtdGB0YLRiw==?= In-Reply-To: References: Message-ID: Мне твой кэйс понравился, и главное его можно допилить. Собственно мне нужно было увидеть красоту, а сделать копию не проблема. 30 июня 2016 г., 20:04 пользователь Akzhan Abdulin написал: > Обычно нужно знать искомый пример для фэйла и весь кейс его > воспроизведения. Если для этого требуется знать номер строки, то да, > обязательно надо добавить, и наверняка это можно автоматизировать. > > Просто такой задачи тогда не стояло. > > 30 июня 2016 г., 20:00 пользователь Гришаев Анатолий > написал: > > Почти, что надо. >> Маленький минус --- теряется информация о строке к которой определен тест >> Если добавить >> >> { >> app => sub { return [ 200, [ foo => "\021bar" ], [ 'OK' ] ]; }, >> die => qr/Response headers MUST NOT contain characters below >> octal.+Header: foo/, >> line => get_line(), >> }, >> >> Будет почти что надо >> >> 30 июня 2016 г., 19:46 пользователь Akzhan Abdulin < >> akzhan.abdulin на gmail.com> написал: >> >>> оно? >>> >>> >>> https://github.com/plack/Plack/blob/master/t/Plack-Middleware/lint_wrong_header_info.t >>> >>> 30 июня 2016 г., 19:25 пользователь Гришаев Анатолий < >>> agrishaev на gmail.com> написал: >>> >>>> Добрый день Moscow PM! >>>> >>>> >>>> Пишу тесты для сложной функции-монстра >>>> >>>> На вход принимает строку и на выход "почти" строку. >>>> >>>> >>>> Сейчас тесты выглядят так >>>> //////////////////////////// >>>> my ($want_result, $input) = ( "вход 1", "выход 1") >>>> >>>> my $r = my_func($input) >>>> ok($r) >>>> is($r->string, $want_result, "parse $input") >>>> >>>> my ($want_result, $input) = ( "вход 2", "выход 2") >>>> >>>> my $r = my_func($input) >>>> ok($r) >>>> is($r->string, $want_result, "parse $input") >>>> ////////////////////////// >>>> >>>> Получается куча повторяющего кода, в котором теряется суть >>>> >>>> Можно ли этого избежать и писать более красиво? >>>> >>>> >>>> >>>> >>>> >>>> -- >>>> 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 agrishaev на gmail.com Thu Jun 30 10:21:33 2016 From: agrishaev на gmail.com (=?UTF-8?B?0JPRgNC40YjQsNC10LIg0JDQvdCw0YLQvtC70LjQuQ==?=) Date: Thu, 30 Jun 2016 20:21:33 +0300 Subject: [Moscow.pm] =?utf-8?b?0J3QsNGD0YfQuNGC0LUg0L/QuNGB0LDRgtGMINC6?= =?utf-8?b?0YDQsNGB0LjQstGL0LUg0YLQtdGB0YLRiw==?= In-Reply-To: References: Message-ID: Не совсем эквивалентно теряется информация о строке в которой определен тест Можно твой вариант улучшить чуть-чуть вместо ............. sub test_case { my ($want_result, $input) = @_; my $r = my_func($input) ok($r) is($r->string, $want_result, "parse $input") } .......................... Лучше писать //////////////////// sub test_case { my ($want_result, $input) = @_; +my $tb = Test::Builder->new; my $r = my_func($input) $tb->ok($r) -is($r->string, $want_result, "parse $input") +$tb->is_eq($r->string, $want_result, "parse $input"); } ///////////////////// Я от подобного варианта ушел, не смог заставить писать в таком стиле, из-за собственных требований к красоте. 30 июня 2016 г., 19:53 пользователь Victor Efimov написал: > или > я переодически делаю вместо > === > my ($want_result, $input) = ( "вход 1", "выход 1") > > my $r = my_func($input) > ok($r) > is($r->string, $want_result, "parse $input") > === > > так: > > === > sub test_case { > my ($want_result, $input) = @_; > > my $r = my_func($input) > ok($r) > is($r->string, $want_result, "parse $input") > } > > test_case( "вход 1", "выход 1"); > test_case( "вход 2", "выход 2"); > test_case( "вход 3", "выход 3"); > test_case( "вход 4", "выход 4"); > === > > что-то в общем-то эквивалентно готовому хэшу с вход-выход > > 30 июня 2016 г., 19:46 пользователь Akzhan Abdulin > написал: > > оно? > > > > > https://github.com/plack/Plack/blob/master/t/Plack-Middleware/lint_wrong_header_info.t > > > > 30 июня 2016 г., 19:25 пользователь Гришаев Анатолий < > agrishaev на gmail.com> > > написал: > >> > >> Добрый день Moscow PM! > >> > >> > >> Пишу тесты для сложной функции-монстра > >> > >> На вход принимает строку и на выход "почти" строку. > >> > >> > >> Сейчас тесты выглядят так > >> //////////////////////////// > >> my ($want_result, $input) = ( "вход 1", "выход 1") > >> > >> my $r = my_func($input) > >> ok($r) > >> is($r->string, $want_result, "parse $input") > >> > >> my ($want_result, $input) = ( "вход 2", "выход 2") > >> > >> my $r = my_func($input) > >> ok($r) > >> is($r->string, $want_result, "parse $input") > >> ////////////////////////// > >> > >> Получается куча повторяющего кода, в котором теряется суть > >> > >> Можно ли этого избежать и писать более красиво? > >> > >> > >> > >> > >> > >> -- > >> 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 agrishaev на gmail.com Thu Jun 30 10:59:37 2016 From: agrishaev на gmail.com (=?UTF-8?B?0JPRgNC40YjQsNC10LIg0JDQvdCw0YLQvtC70LjQuQ==?=) Date: Thu, 30 Jun 2016 20:59:37 +0300 Subject: [Moscow.pm] =?utf-8?b?0J3QsNGD0YfQuNGC0LUg0L/QuNGB0LDRgtGMINC6?= =?utf-8?b?0YDQsNGB0LjQstGL0LUg0YLQtdGB0YLRiw==?= In-Reply-To: References: Message-ID: Спасибо Акжан и Виктор за ваши варианты. Вообщем использовал обе идеи и добавил, что-то от себя. 1) использовал именованные параметры для ясности 2) Завернул в функцию 3) Используем номера строк для нахождения failing case Получилось в итоге. ========================= test_case( input => "input 1", output => "result 1", ); ... test_case( input => "input 2", output => "result 2", ); sub test_case{ my $tb = Test::Builder->new; ... $tb->is_eq( ... ); }; ========================= 30 июня 2016 г., 20:21 пользователь Гришаев Анатолий написал: > Не совсем эквивалентно теряется информация о строке в которой определен > тест > > Можно твой вариант улучшить чуть-чуть > > вместо > ............. > sub test_case { > my ($want_result, $input) = @_; > > my $r = my_func($input) > ok($r) > is($r->string, $want_result, "parse $input") > } > .......................... > > Лучше писать > //////////////////// > > sub test_case { > my ($want_result, $input) = @_; > +my $tb = Test::Builder->new; > my $r = my_func($input) > $tb->ok($r) > -is($r->string, $want_result, "parse $input") > +$tb->is_eq($r->string, $want_result, "parse $input"); > } > ///////////////////// > > Я от подобного варианта ушел, не смог заставить писать в таком стиле, > из-за собственных требований к красоте. > > > > 30 июня 2016 г., 19:53 пользователь Victor Efimov > написал: > > или >> я переодически делаю вместо >> === >> my ($want_result, $input) = ( "вход 1", "выход 1") >> >> my $r = my_func($input) >> ok($r) >> is($r->string, $want_result, "parse $input") >> === >> >> так: >> >> === >> sub test_case { >> my ($want_result, $input) = @_; >> >> my $r = my_func($input) >> ok($r) >> is($r->string, $want_result, "parse $input") >> } >> >> test_case( "вход 1", "выход 1"); >> test_case( "вход 2", "выход 2"); >> test_case( "вход 3", "выход 3"); >> test_case( "вход 4", "выход 4"); >> === >> >> что-то в общем-то эквивалентно готовому хэшу с вход-выход >> >> 30 июня 2016 г., 19:46 пользователь Akzhan Abdulin >> написал: >> > оно? >> > >> > >> https://github.com/plack/Plack/blob/master/t/Plack-Middleware/lint_wrong_header_info.t >> > >> > 30 июня 2016 г., 19:25 пользователь Гришаев Анатолий < >> agrishaev на gmail.com> >> > написал: >> >> >> >> Добрый день Moscow PM! >> >> >> >> >> >> Пишу тесты для сложной функции-монстра >> >> >> >> На вход принимает строку и на выход "почти" строку. >> >> >> >> >> >> Сейчас тесты выглядят так >> >> //////////////////////////// >> >> my ($want_result, $input) = ( "вход 1", "выход 1") >> >> >> >> my $r = my_func($input) >> >> ok($r) >> >> is($r->string, $want_result, "parse $input") >> >> >> >> my ($want_result, $input) = ( "вход 2", "выход 2") >> >> >> >> my $r = my_func($input) >> >> ok($r) >> >> is($r->string, $want_result, "parse $input") >> >> ////////////////////////// >> >> >> >> Получается куча повторяющего кода, в котором теряется суть >> >> >> >> Можно ли этого избежать и писать более красиво? >> >> >> >> >> >> >> >> >> >> >> >> -- >> >> 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 victor на vsespb.ru Thu Jun 30 11:07:00 2016 From: victor на vsespb.ru (Victor Efimov) Date: Thu, 30 Jun 2016 21:07:00 +0300 Subject: [Moscow.pm] =?utf-8?b?0J3QsNGD0YfQuNGC0LUg0L/QuNGB0LDRgtGMINC6?= =?utf-8?b?0YDQsNGB0LjQstGL0LUg0YLQtdGB0YLRiw==?= In-Reply-To: References: Message-ID: а зачем, кстати, $tb ? 30 июня 2016 г., 20:59 пользователь Гришаев Анатолий написал: > Спасибо Акжан и Виктор за ваши варианты. > > Вообщем использовал обе идеи и добавил, что-то от себя. > 1) использовал именованные параметры для ясности > 2) Завернул в функцию > 3) Используем номера строк для нахождения failing case > > Получилось в итоге. > ========================= > test_case( > input => "input 1", > output => "result 1", > ); > ... > test_case( > input => "input 2", > output => "result 2", > ); > > sub test_case{ > my $tb = Test::Builder->new; > ... > $tb->is_eq( ... ); > }; > ========================= > > > 30 июня 2016 г., 20:21 пользователь Гришаев Анатолий > написал: > >> Не совсем эквивалентно теряется информация о строке в которой определен >> тест >> >> Можно твой вариант улучшить чуть-чуть >> >> вместо >> ............. >> sub test_case { >> my ($want_result, $input) = @_; >> >> my $r = my_func($input) >> ok($r) >> is($r->string, $want_result, "parse $input") >> } >> .......................... >> >> Лучше писать >> //////////////////// >> >> sub test_case { >> my ($want_result, $input) = @_; >> +my $tb = Test::Builder->new; >> my $r = my_func($input) >> $tb->ok($r) >> -is($r->string, $want_result, "parse $input") >> +$tb->is_eq($r->string, $want_result, "parse $input"); >> } >> ///////////////////// >> >> Я от подобного варианта ушел, не смог заставить писать в таком стиле, >> из-за собственных требований к красоте. >> >> >> >> 30 июня 2016 г., 19:53 пользователь Victor Efimov >> написал: >> >>> или >>> я переодически делаю вместо >>> === >>> my ($want_result, $input) = ( "вход 1", "выход 1") >>> >>> my $r = my_func($input) >>> ok($r) >>> is($r->string, $want_result, "parse $input") >>> === >>> >>> так: >>> >>> === >>> sub test_case { >>> my ($want_result, $input) = @_; >>> >>> my $r = my_func($input) >>> ok($r) >>> is($r->string, $want_result, "parse $input") >>> } >>> >>> test_case( "вход 1", "выход 1"); >>> test_case( "вход 2", "выход 2"); >>> test_case( "вход 3", "выход 3"); >>> test_case( "вход 4", "выход 4"); >>> === >>> >>> что-то в общем-то эквивалентно готовому хэшу с вход-выход >>> >>> 30 июня 2016 г., 19:46 пользователь Akzhan Abdulin >>> написал: >>> > оно? >>> > >>> > >>> > https://github.com/plack/Plack/blob/master/t/Plack-Middleware/lint_wrong_header_info.t >>> > >>> > 30 июня 2016 г., 19:25 пользователь Гришаев Анатолий >>> > >>> > написал: >>> >> >>> >> Добрый день Moscow PM! >>> >> >>> >> >>> >> Пишу тесты для сложной функции-монстра >>> >> >>> >> На вход принимает строку и на выход "почти" строку. >>> >> >>> >> >>> >> Сейчас тесты выглядят так >>> >> //////////////////////////// >>> >> my ($want_result, $input) = ( "вход 1", "выход 1") >>> >> >>> >> my $r = my_func($input) >>> >> ok($r) >>> >> is($r->string, $want_result, "parse $input") >>> >> >>> >> my ($want_result, $input) = ( "вход 2", "выход 2") >>> >> >>> >> my $r = my_func($input) >>> >> ok($r) >>> >> is($r->string, $want_result, "parse $input") >>> >> ////////////////////////// >>> >> >>> >> Получается куча повторяющего кода, в котором теряется суть >>> >> >>> >> Можно ли этого избежать и писать более красиво? >>> >> >>> >> >>> >> >>> >> >>> >> >>> >> -- >>> >> 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 > From agrishaev на gmail.com Thu Jun 30 11:38:04 2016 From: agrishaev на gmail.com (=?UTF-8?B?0JPRgNC40YjQsNC10LIg0JDQvdCw0YLQvtC70LjQuQ==?=) Date: Thu, 30 Jun 2016 21:38:04 +0300 Subject: [Moscow.pm] =?utf-8?b?0J3QsNGD0YfQuNGC0LUg0L/QuNGB0LDRgtGMINC6?= =?utf-8?b?0YDQsNGB0LjQstGL0LUg0YLQtdGB0YLRiw==?= In-Reply-To: References: Message-ID: Когда тест фейлится то печатает номер строки из которой был вызван is() а если используешь $tb->is_eq, то печатается номер строки где была вызвана test_case. в первом случае это одна строка на все тесты, а во втором на каждый тест своя строка. Помогает, если ты не имеешь доступа к той тачке, где тесты проходят(cpan-testers например) В первом случае ты знаешь, что какой-то тест в файле сломался, а во втором знаешь какой именно тест сломался, даже если ты не дал для него имя или у двух тестов оно каким-то образом получилось одинаковым (бывало, такова жизнь). 30 июня 2016 г., 21:07 пользователь Victor Efimov написал: > а зачем, кстати, $tb ? > > 30 июня 2016 г., 20:59 пользователь Гришаев Анатолий > написал: > > Спасибо Акжан и Виктор за ваши варианты. > > > > Вообщем использовал обе идеи и добавил, что-то от себя. > > 1) использовал именованные параметры для ясности > > 2) Завернул в функцию > > 3) Используем номера строк для нахождения failing case > > > > Получилось в итоге. > > ========================= > > test_case( > > input => "input 1", > > output => "result 1", > > ); > > ... > > test_case( > > input => "input 2", > > output => "result 2", > > ); > > > > sub test_case{ > > my $tb = Test::Builder->new; > > ... > > $tb->is_eq( ... ); > > }; > > ========================= > > > > > > 30 июня 2016 г., 20:21 пользователь Гришаев Анатолий < > agrishaev на gmail.com> > > написал: > > > >> Не совсем эквивалентно теряется информация о строке в которой определен > >> тест > >> > >> Можно твой вариант улучшить чуть-чуть > >> > >> вместо > >> ............. > >> sub test_case { > >> my ($want_result, $input) = @_; > >> > >> my $r = my_func($input) > >> ok($r) > >> is($r->string, $want_result, "parse $input") > >> } > >> .......................... > >> > >> Лучше писать > >> //////////////////// > >> > >> sub test_case { > >> my ($want_result, $input) = @_; > >> +my $tb = Test::Builder->new; > >> my $r = my_func($input) > >> $tb->ok($r) > >> -is($r->string, $want_result, "parse $input") > >> +$tb->is_eq($r->string, $want_result, "parse $input"); > >> } > >> ///////////////////// > >> > >> Я от подобного варианта ушел, не смог заставить писать в таком стиле, > >> из-за собственных требований к красоте. > >> > >> > >> > >> 30 июня 2016 г., 19:53 пользователь Victor Efimov > >> написал: > >> > >>> или > >>> я переодически делаю вместо > >>> === > >>> my ($want_result, $input) = ( "вход 1", "выход 1") > >>> > >>> my $r = my_func($input) > >>> ok($r) > >>> is($r->string, $want_result, "parse $input") > >>> === > >>> > >>> так: > >>> > >>> === > >>> sub test_case { > >>> my ($want_result, $input) = @_; > >>> > >>> my $r = my_func($input) > >>> ok($r) > >>> is($r->string, $want_result, "parse $input") > >>> } > >>> > >>> test_case( "вход 1", "выход 1"); > >>> test_case( "вход 2", "выход 2"); > >>> test_case( "вход 3", "выход 3"); > >>> test_case( "вход 4", "выход 4"); > >>> === > >>> > >>> что-то в общем-то эквивалентно готовому хэшу с вход-выход > >>> > >>> 30 июня 2016 г., 19:46 пользователь Akzhan Abdulin > >>> написал: > >>> > оно? > >>> > > >>> > > >>> > > https://github.com/plack/Plack/blob/master/t/Plack-Middleware/lint_wrong_header_info.t > >>> > > >>> > 30 июня 2016 г., 19:25 пользователь Гришаев Анатолий > >>> > > >>> > написал: > >>> >> > >>> >> Добрый день Moscow PM! > >>> >> > >>> >> > >>> >> Пишу тесты для сложной функции-монстра > >>> >> > >>> >> На вход принимает строку и на выход "почти" строку. > >>> >> > >>> >> > >>> >> Сейчас тесты выглядят так > >>> >> //////////////////////////// > >>> >> my ($want_result, $input) = ( "вход 1", "выход 1") > >>> >> > >>> >> my $r = my_func($input) > >>> >> ok($r) > >>> >> is($r->string, $want_result, "parse $input") > >>> >> > >>> >> my ($want_result, $input) = ( "вход 2", "выход 2") > >>> >> > >>> >> my $r = my_func($input) > >>> >> ok($r) > >>> >> is($r->string, $want_result, "parse $input") > >>> >> ////////////////////////// > >>> >> > >>> >> Получается куча повторяющего кода, в котором теряется суть > >>> >> > >>> >> Можно ли этого избежать и писать более красиво? > >>> >> > >>> >> > >>> >> > >>> >> > >>> >> > >>> >> -- > >>> >> 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 victor на vsespb.ru Thu Jun 30 12:28:16 2016 From: victor на vsespb.ru (Victor Efimov) Date: Thu, 30 Jun 2016 22:28:16 +0300 Subject: [Moscow.pm] =?utf-8?b?0J3QsNGD0YfQuNGC0LUg0L/QuNGB0LDRgtGMINC6?= =?utf-8?b?0YDQsNGB0LjQstGL0LUg0YLQtdGB0YLRiw==?= In-Reply-To: References: Message-ID: Круто, буду юзать. Похоже сложные вещи, типа, не is_eq, а cmp_deeply из Test::Deep так заюзать нельзя? 30 июня 2016 г., 21:38 пользователь Гришаев Анатолий написал: > Когда тест фейлится то печатает номер строки из которой был вызван is() > а если используешь $tb->is_eq, то печатается номер строки где была вызвана > test_case. > > в первом случае это одна строка на все тесты, а во втором на каждый тест > своя строка. > > Помогает, если ты не имеешь доступа к той тачке, где тесты > проходят(cpan-testers например) > В первом случае ты знаешь, что какой-то тест в файле сломался, а во втором > знаешь какой именно тест сломался, > даже если ты не дал для него имя или у двух тестов оно каким-то образом > получилось одинаковым (бывало, такова жизнь). > > > > > > > 30 июня 2016 г., 21:07 пользователь Victor Efimov > написал: > >> а зачем, кстати, $tb ? >> >> 30 июня 2016 г., 20:59 пользователь Гришаев Анатолий >> написал: >> > Спасибо Акжан и Виктор за ваши варианты. >> > >> > Вообщем использовал обе идеи и добавил, что-то от себя. >> > 1) использовал именованные параметры для ясности >> > 2) Завернул в функцию >> > 3) Используем номера строк для нахождения failing case >> > >> > Получилось в итоге. >> > ========================= >> > test_case( >> > input => "input 1", >> > output => "result 1", >> > ); >> > ... >> > test_case( >> > input => "input 2", >> > output => "result 2", >> > ); >> > >> > sub test_case{ >> > my $tb = Test::Builder->new; >> > ... >> > $tb->is_eq( ... ); >> > }; >> > ========================= >> > >> > >> > 30 июня 2016 г., 20:21 пользователь Гришаев Анатолий >> > >> > написал: >> > >> >> Не совсем эквивалентно теряется информация о строке в которой определен >> >> тест >> >> >> >> Можно твой вариант улучшить чуть-чуть >> >> >> >> вместо >> >> ............. >> >> sub test_case { >> >> my ($want_result, $input) = @_; >> >> >> >> my $r = my_func($input) >> >> ok($r) >> >> is($r->string, $want_result, "parse $input") >> >> } >> >> .......................... >> >> >> >> Лучше писать >> >> //////////////////// >> >> >> >> sub test_case { >> >> my ($want_result, $input) = @_; >> >> +my $tb = Test::Builder->new; >> >> my $r = my_func($input) >> >> $tb->ok($r) >> >> -is($r->string, $want_result, "parse $input") >> >> +$tb->is_eq($r->string, $want_result, "parse $input"); >> >> } >> >> ///////////////////// >> >> >> >> Я от подобного варианта ушел, не смог заставить писать в таком стиле, >> >> из-за собственных требований к красоте. >> >> >> >> >> >> >> >> 30 июня 2016 г., 19:53 пользователь Victor Efimov >> >> написал: >> >> >> >>> или >> >>> я переодически делаю вместо >> >>> === >> >>> my ($want_result, $input) = ( "вход 1", "выход 1") >> >>> >> >>> my $r = my_func($input) >> >>> ok($r) >> >>> is($r->string, $want_result, "parse $input") >> >>> === >> >>> >> >>> так: >> >>> >> >>> === >> >>> sub test_case { >> >>> my ($want_result, $input) = @_; >> >>> >> >>> my $r = my_func($input) >> >>> ok($r) >> >>> is($r->string, $want_result, "parse $input") >> >>> } >> >>> >> >>> test_case( "вход 1", "выход 1"); >> >>> test_case( "вход 2", "выход 2"); >> >>> test_case( "вход 3", "выход 3"); >> >>> test_case( "вход 4", "выход 4"); >> >>> === >> >>> >> >>> что-то в общем-то эквивалентно готовому хэшу с вход-выход >> >>> >> >>> 30 июня 2016 г., 19:46 пользователь Akzhan Abdulin >> >>> написал: >> >>> > оно? >> >>> > >> >>> > >> >>> > >> >>> > https://github.com/plack/Plack/blob/master/t/Plack-Middleware/lint_wrong_header_info.t >> >>> > >> >>> > 30 июня 2016 г., 19:25 пользователь Гришаев Анатолий >> >>> > >> >>> > написал: >> >>> >> >> >>> >> Добрый день Moscow PM! >> >>> >> >> >>> >> >> >>> >> Пишу тесты для сложной функции-монстра >> >>> >> >> >>> >> На вход принимает строку и на выход "почти" строку. >> >>> >> >> >>> >> >> >>> >> Сейчас тесты выглядят так >> >>> >> //////////////////////////// >> >>> >> my ($want_result, $input) = ( "вход 1", "выход 1") >> >>> >> >> >>> >> my $r = my_func($input) >> >>> >> ok($r) >> >>> >> is($r->string, $want_result, "parse $input") >> >>> >> >> >>> >> my ($want_result, $input) = ( "вход 2", "выход 2") >> >>> >> >> >>> >> my $r = my_func($input) >> >>> >> ok($r) >> >>> >> is($r->string, $want_result, "parse $input") >> >>> >> ////////////////////////// >> >>> >> >> >>> >> Получается куча повторяющего кода, в котором теряется суть >> >>> >> >> >>> >> Можно ли этого избежать и писать более красиво? >> >>> >> >> >>> >> >> >>> >> >> >>> >> >> >>> >> >> >>> >> -- >> >>> >> 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 > From agrishaev на gmail.com Thu Jun 30 13:11:14 2016 From: agrishaev на gmail.com (=?UTF-8?B?0JPRgNC40YjQsNC10LIg0JDQvdCw0YLQvtC70LjQuQ==?=) Date: Thu, 30 Jun 2016 23:11:14 +0300 Subject: [Moscow.pm] =?utf-8?b?0J3QsNGD0YfQuNGC0LUg0L/QuNGB0LDRgtGMINC6?= =?utf-8?b?0YDQsNGB0LjQstGL0LUg0YLQtdGB0YLRiw==?= In-Reply-To: References: Message-ID: Почему же, вот пример из документации Test::Deep: USING TEST::DEEP WITH TEST::BUILDER [image: ^] Combining cmp_details and test_diag makes it possible to use Test::Deep in your own test classes. In a Test::Builder subclass, create a test method in the following form: sub behaves_ok { my $self = shift; my $expected = shift; my $test_name = shift; my $got = do_the_important_work_here(); my ($ok, $stack) = cmp_details($got, $expected); unless ($Test->ok($ok, $test_name)) { my $diag = deep_diag($stack); $Test->diag($diag); } } As the subclass defines a test class, not tests themselves, make sure it uses Test::Deep::NoTest , not Test::Deep itself. Похоже покурить прийдется, но я думаю это не полеты в космос. 30 июня 2016 г., 22:28 пользователь Victor Efimov написал: > Круто, буду юзать. Похоже сложные вещи, типа, не is_eq, а cmp_deeply > из Test::Deep так заюзать нельзя? > > 30 июня 2016 г., 21:38 пользователь Гришаев Анатолий > написал: > > Когда тест фейлится то печатает номер строки из которой был вызван is() > > а если используешь $tb->is_eq, то печатается номер строки где была > вызвана > > test_case. > > > > в первом случае это одна строка на все тесты, а во втором на каждый тест > > своя строка. > > > > Помогает, если ты не имеешь доступа к той тачке, где тесты > > проходят(cpan-testers например) > > В первом случае ты знаешь, что какой-то тест в файле сломался, а во > втором > > знаешь какой именно тест сломался, > > даже если ты не дал для него имя или у двух тестов оно каким-то образом > > получилось одинаковым (бывало, такова жизнь). > > > > > > > > > > > > > > 30 июня 2016 г., 21:07 пользователь Victor Efimov > > написал: > > > >> а зачем, кстати, $tb ? > >> > >> 30 июня 2016 г., 20:59 пользователь Гришаев Анатолий > >> написал: > >> > Спасибо Акжан и Виктор за ваши варианты. > >> > > >> > Вообщем использовал обе идеи и добавил, что-то от себя. > >> > 1) использовал именованные параметры для ясности > >> > 2) Завернул в функцию > >> > 3) Используем номера строк для нахождения failing case > >> > > >> > Получилось в итоге. > >> > ========================= > >> > test_case( > >> > input => "input 1", > >> > output => "result 1", > >> > ); > >> > ... > >> > test_case( > >> > input => "input 2", > >> > output => "result 2", > >> > ); > >> > > >> > sub test_case{ > >> > my $tb = Test::Builder->new; > >> > ... > >> > $tb->is_eq( ... ); > >> > }; > >> > ========================= > >> > > >> > > >> > 30 июня 2016 г., 20:21 пользователь Гришаев Анатолий > >> > > >> > написал: > >> > > >> >> Не совсем эквивалентно теряется информация о строке в которой > определен > >> >> тест > >> >> > >> >> Можно твой вариант улучшить чуть-чуть > >> >> > >> >> вместо > >> >> ............. > >> >> sub test_case { > >> >> my ($want_result, $input) = @_; > >> >> > >> >> my $r = my_func($input) > >> >> ok($r) > >> >> is($r->string, $want_result, "parse $input") > >> >> } > >> >> .......................... > >> >> > >> >> Лучше писать > >> >> //////////////////// > >> >> > >> >> sub test_case { > >> >> my ($want_result, $input) = @_; > >> >> +my $tb = Test::Builder->new; > >> >> my $r = my_func($input) > >> >> $tb->ok($r) > >> >> -is($r->string, $want_result, "parse $input") > >> >> +$tb->is_eq($r->string, $want_result, "parse $input"); > >> >> } > >> >> ///////////////////// > >> >> > >> >> Я от подобного варианта ушел, не смог заставить писать в таком стиле, > >> >> из-за собственных требований к красоте. > >> >> > >> >> > >> >> > >> >> 30 июня 2016 г., 19:53 пользователь Victor Efimov > >> >> написал: > >> >> > >> >>> или > >> >>> я переодически делаю вместо > >> >>> === > >> >>> my ($want_result, $input) = ( "вход 1", "выход 1") > >> >>> > >> >>> my $r = my_func($input) > >> >>> ok($r) > >> >>> is($r->string, $want_result, "parse $input") > >> >>> === > >> >>> > >> >>> так: > >> >>> > >> >>> === > >> >>> sub test_case { > >> >>> my ($want_result, $input) = @_; > >> >>> > >> >>> my $r = my_func($input) > >> >>> ok($r) > >> >>> is($r->string, $want_result, "parse $input") > >> >>> } > >> >>> > >> >>> test_case( "вход 1", "выход 1"); > >> >>> test_case( "вход 2", "выход 2"); > >> >>> test_case( "вход 3", "выход 3"); > >> >>> test_case( "вход 4", "выход 4"); > >> >>> === > >> >>> > >> >>> что-то в общем-то эквивалентно готовому хэшу с вход-выход > >> >>> > >> >>> 30 июня 2016 г., 19:46 пользователь Akzhan Abdulin > >> >>> написал: > >> >>> > оно? > >> >>> > > >> >>> > > >> >>> > > >> >>> > > https://github.com/plack/Plack/blob/master/t/Plack-Middleware/lint_wrong_header_info.t > >> >>> > > >> >>> > 30 июня 2016 г., 19:25 пользователь Гришаев Анатолий > >> >>> > > >> >>> > написал: > >> >>> >> > >> >>> >> Добрый день Moscow PM! > >> >>> >> > >> >>> >> > >> >>> >> Пишу тесты для сложной функции-монстра > >> >>> >> > >> >>> >> На вход принимает строку и на выход "почти" строку. > >> >>> >> > >> >>> >> > >> >>> >> Сейчас тесты выглядят так > >> >>> >> //////////////////////////// > >> >>> >> my ($want_result, $input) = ( "вход 1", "выход 1") > >> >>> >> > >> >>> >> my $r = my_func($input) > >> >>> >> ok($r) > >> >>> >> is($r->string, $want_result, "parse $input") > >> >>> >> > >> >>> >> my ($want_result, $input) = ( "вход 2", "выход 2") > >> >>> >> > >> >>> >> my $r = my_func($input) > >> >>> >> ok($r) > >> >>> >> is($r->string, $want_result, "parse $input") > >> >>> >> ////////////////////////// > >> >>> >> > >> >>> >> Получается куча повторяющего кода, в котором теряется суть > >> >>> >> > >> >>> >> Можно ли этого избежать и писать более красиво? > >> >>> >> > >> >>> >> > >> >>> >> > >> >>> >> > >> >>> >> > >> >>> >> -- > >> >>> >> 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 > > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From agrishaev на gmail.com Thu Jun 30 13:25:09 2016 From: agrishaev на gmail.com (=?UTF-8?B?0JPRgNC40YjQsNC10LIg0JDQvdCw0YLQvtC70LjQuQ==?=) Date: Thu, 30 Jun 2016 23:25:09 +0300 Subject: [Moscow.pm] =?utf-8?b?0J3QsNGD0YfQuNGC0LUg0L/QuNGB0LDRgtGMINC6?= =?utf-8?b?0YDQsNGB0LjQstGL0LUg0YLQtdGB0YLRiw==?= In-Reply-To: References: Message-ID: Если "покурить" подорвет здоровье есть хакерский способ добиться желаемого //////////////////////////////////////////////////// use Test::Deep; use Test::More qw(no_plan); sub test_case{ my ($a,$b, $c) = @_; local $Test::Builder::Level = $Test::Builder::Level + 1; cmp_deeply( $a, $b, $c ); } sub main{ my @argv = @_; test_case( [1], [2], 'aaa'); # # done_testing(); }; /////////////////////////////////////////////////// 30 июня 2016 г., 23:11 пользователь Гришаев Анатолий написал: > Почему же, вот пример из документации Test::Deep: > USING TEST::DEEP WITH TEST::BUILDER [image: ^] > > Combining cmp_details and test_diag makes it possible to use Test::Deep > in your own test classes. > > In a Test::Builder > subclass, create a test method in the following form: > > sub behaves_ok { > my $self = shift; > my $expected = shift; > my $test_name = shift; > > my $got = do_the_important_work_here(); > > my ($ok, $stack) = cmp_details($got, $expected); > unless ($Test->ok($ok, $test_name)) { > my $diag = deep_diag($stack); > $Test->diag($diag); > } > } > > As the subclass defines a test class, not tests themselves, make sure it > uses Test::Deep::NoTest > , > not Test::Deep itself. > > > Похоже покурить прийдется, но я думаю это не полеты в космос. > > > 30 июня 2016 г., 22:28 пользователь Victor Efimov > написал: > > Круто, буду юзать. Похоже сложные вещи, типа, не is_eq, а cmp_deeply >> из Test::Deep так заюзать нельзя? >> >> 30 июня 2016 г., 21:38 пользователь Гришаев Анатолий >> написал: >> > Когда тест фейлится то печатает номер строки из которой был вызван is() >> > а если используешь $tb->is_eq, то печатается номер строки где была >> вызвана >> > test_case. >> > >> > в первом случае это одна строка на все тесты, а во втором на каждый тест >> > своя строка. >> > >> > Помогает, если ты не имеешь доступа к той тачке, где тесты >> > проходят(cpan-testers например) >> > В первом случае ты знаешь, что какой-то тест в файле сломался, а во >> втором >> > знаешь какой именно тест сломался, >> > даже если ты не дал для него имя или у двух тестов оно каким-то образом >> > получилось одинаковым (бывало, такова жизнь). >> > >> > >> > >> > >> > >> > >> > 30 июня 2016 г., 21:07 пользователь Victor Efimov >> > написал: >> > >> >> а зачем, кстати, $tb ? >> >> >> >> 30 июня 2016 г., 20:59 пользователь Гришаев Анатолий >> >> написал: >> >> > Спасибо Акжан и Виктор за ваши варианты. >> >> > >> >> > Вообщем использовал обе идеи и добавил, что-то от себя. >> >> > 1) использовал именованные параметры для ясности >> >> > 2) Завернул в функцию >> >> > 3) Используем номера строк для нахождения failing case >> >> > >> >> > Получилось в итоге. >> >> > ========================= >> >> > test_case( >> >> > input => "input 1", >> >> > output => "result 1", >> >> > ); >> >> > ... >> >> > test_case( >> >> > input => "input 2", >> >> > output => "result 2", >> >> > ); >> >> > >> >> > sub test_case{ >> >> > my $tb = Test::Builder->new; >> >> > ... >> >> > $tb->is_eq( ... ); >> >> > }; >> >> > ========================= >> >> > >> >> > >> >> > 30 июня 2016 г., 20:21 пользователь Гришаев Анатолий >> >> > >> >> > написал: >> >> > >> >> >> Не совсем эквивалентно теряется информация о строке в которой >> определен >> >> >> тест >> >> >> >> >> >> Можно твой вариант улучшить чуть-чуть >> >> >> >> >> >> вместо >> >> >> ............. >> >> >> sub test_case { >> >> >> my ($want_result, $input) = @_; >> >> >> >> >> >> my $r = my_func($input) >> >> >> ok($r) >> >> >> is($r->string, $want_result, "parse $input") >> >> >> } >> >> >> .......................... >> >> >> >> >> >> Лучше писать >> >> >> //////////////////// >> >> >> >> >> >> sub test_case { >> >> >> my ($want_result, $input) = @_; >> >> >> +my $tb = Test::Builder->new; >> >> >> my $r = my_func($input) >> >> >> $tb->ok($r) >> >> >> -is($r->string, $want_result, "parse $input") >> >> >> +$tb->is_eq($r->string, $want_result, "parse $input"); >> >> >> } >> >> >> ///////////////////// >> >> >> >> >> >> Я от подобного варианта ушел, не смог заставить писать в таком >> стиле, >> >> >> из-за собственных требований к красоте. >> >> >> >> >> >> >> >> >> >> >> >> 30 июня 2016 г., 19:53 пользователь Victor Efimov > > >> >> >> написал: >> >> >> >> >> >>> или >> >> >>> я переодически делаю вместо >> >> >>> === >> >> >>> my ($want_result, $input) = ( "вход 1", "выход 1") >> >> >>> >> >> >>> my $r = my_func($input) >> >> >>> ok($r) >> >> >>> is($r->string, $want_result, "parse $input") >> >> >>> === >> >> >>> >> >> >>> так: >> >> >>> >> >> >>> === >> >> >>> sub test_case { >> >> >>> my ($want_result, $input) = @_; >> >> >>> >> >> >>> my $r = my_func($input) >> >> >>> ok($r) >> >> >>> is($r->string, $want_result, "parse $input") >> >> >>> } >> >> >>> >> >> >>> test_case( "вход 1", "выход 1"); >> >> >>> test_case( "вход 2", "выход 2"); >> >> >>> test_case( "вход 3", "выход 3"); >> >> >>> test_case( "вход 4", "выход 4"); >> >> >>> === >> >> >>> >> >> >>> что-то в общем-то эквивалентно готовому хэшу с вход-выход >> >> >>> >> >> >>> 30 июня 2016 г., 19:46 пользователь Akzhan Abdulin >> >> >>> написал: >> >> >>> > оно? >> >> >>> > >> >> >>> > >> >> >>> > >> >> >>> > >> https://github.com/plack/Plack/blob/master/t/Plack-Middleware/lint_wrong_header_info.t >> >> >>> > >> >> >>> > 30 июня 2016 г., 19:25 пользователь Гришаев Анатолий >> >> >>> > >> >> >>> > написал: >> >> >>> >> >> >> >>> >> Добрый день Moscow PM! >> >> >>> >> >> >> >>> >> >> >> >>> >> Пишу тесты для сложной функции-монстра >> >> >>> >> >> >> >>> >> На вход принимает строку и на выход "почти" строку. >> >> >>> >> >> >> >>> >> >> >> >>> >> Сейчас тесты выглядят так >> >> >>> >> //////////////////////////// >> >> >>> >> my ($want_result, $input) = ( "вход 1", "выход 1") >> >> >>> >> >> >> >>> >> my $r = my_func($input) >> >> >>> >> ok($r) >> >> >>> >> is($r->string, $want_result, "parse $input") >> >> >>> >> >> >> >>> >> my ($want_result, $input) = ( "вход 2", "выход 2") >> >> >>> >> >> >> >>> >> my $r = my_func($input) >> >> >>> >> ok($r) >> >> >>> >> is($r->string, $want_result, "parse $input") >> >> >>> >> ////////////////////////// >> >> >>> >> >> >> >>> >> Получается куча повторяющего кода, в котором теряется суть >> >> >>> >> >> >> >>> >> Можно ли этого избежать и писать более красиво? >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> >> -- >> >> >>> >> 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 >> > >> -- >> Moscow.pm mailing list >> moscow-pm на pm.org | http://moscow.pm.org >> > > ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: