From paul.vlasov at gmail.com Tue Jan 9 22:05:12 2018 From: paul.vlasov at gmail.com (Pavel Vlasov) Date: Wed, 10 Jan 2018 09:05:12 +0300 Subject: [Kiev-pm] =?utf-8?b?0JLQsNC60LDQvdGB0LjRjyDRg9C00LDQu9GR0L3QvdCw?= =?utf-8?b?0Y8g0YDQsNCx0L7RgtCw?= Message-ID: Ищу себе в команду *Perl-разработчика* на удалённую работу в AppFollow.io Основные задачи: - парсинг и хранение данных - реализация алгоритмов работы с App Store, Google Play и Amazon Store - интеграции с популярными сервисами Intercom, Zendesk и Segment - доработка внутренних API - разработка ботов для Slack и Telegram Полное описание вакансии: https://moikrug.ru/vacancies/1000029831 Хотите делать продукт, который помогает тысячам разработчиков мобильных приложений по всем миру? Пишите на: hi at appfollow.io -- Pavel Vlasov – CTO & Co-founder, AppFollow.io -------------- next part -------------- An HTML attachment was scrubbed... URL: From khedin at gmail.com Wed Jan 10 05:40:23 2018 From: khedin at gmail.com (Konstantin S. Uvarin) Date: Wed, 10 Jan 2018 15:40:23 +0200 Subject: [Kiev-pm] =?utf-8?b?W2Fubm91bmNlXSBBc3NlcnQ6OlJlZnV0ZSAtINGD0L0=?= =?utf-8?b?0LjRhNC40LrQsNGG0LjRjyDQsNGB0YHQtdGA0YLQvtCyINC4INGO0L0=?= =?utf-8?b?0LjRgi3RgtC10YHRgtC+0LI=?= Message-ID: Приветствую! Вышел и активно развивается модуль Assert::Refute[1], суть такова: use Assert::Refute qw(:all); my ($foo, $bar); # тут куча кода, который сложно протестировать refute_these { like $foo, qr/f?o?r?m?a?t/; isa_ok $bar, "My::Module"; }; # carp, если условия не выполняются Таким образом, создаётся (1) защита от дурака при изменении кода, рефакторингах и т.п. и (2) прототип будущего юнит-теста. Даже если речь не о легаси-коде, проверка инвариантов и разумных границ может быть полезна: use Assert::Refute; use ​Assert::Refute::T::Numeric qw(is_between); refute_these { is_between $price, 0.01, 1000, "Price within bounds"; }; ​По сути это контрактное программирование [2], только в оцень легковесной форме.​ Что ещё есть: * refute $reason, "explanation"; - очень мощный базовый метод, по сути это ok и diag в одном флаконе - если причина не тру, то всё хорошо, а если она тру, то понятно, что именно не так. * subcontract "name" => sub { # тут условия } Аналог subtest, но работает не только в юнит-тестах (в юнит-тестах, таки да, просто вызов Test::Builder->subtest внутри). * Assert::Refute::Build - конструирование собственных условий/проверок. В простейшём случае всё, что нужно - чистая функция, которая возвращает ложь, если всё хорошо, и _что именно_ пошло не так, если что-то пошло не так (ср. diff) Под Test::More тоже будет работать точно так же, если его (или что угодно на базе Test::Builder, напр. Test::Exception) подключили раньше. * Assert::Refute::Contract - прототип _настоящего_ контрактного программирования, пока что наиболее применим для тестирования тестов, написанных в предыдущем пункте. * Assert::Refute::Exec - объектно-ориентированный интерфейс, если неохота поганить неймспейс всякими is и like и вообще хочется более тонкого контроля. * Assert::Refute::T::* - немного дополнительный проверок, вроде "массив отсортирован так-то", "у хеша такие-то ключи" или "число от и до". А что с производительностью? Как-то так: bash# perl -MAssert::Refute=:all -we '$SIG{ALRM} = sub { $stop++ }; alarm 1; refute_these { like ++$i, qr/[0-9]/ while !$stop}; print $i'; 278022 bash# grep MHz /proc/cpuinfo cpu MHz : 2400.070 Далее планируется: * управление тестами - plan, skip, bail_out, TODO * больше собственно проверок * полезные дополнения типа работы с временными файлами Репо и анонс на perlmonks: https://github.com/dallaylaen/assert-refute-perl http://perlmonks.org/?node_id=1206533 [1] https://metacpan.org/pod/Assert::Refute ​[2]​ https://metacpan.org/pod/Class::Contract -- Konstantin S. Uvarin jabber: see skype: kuvarin http://github.com/dallaylaen -------------- next part -------------- An HTML attachment was scrubbed... URL: From mik.jackson at yandex.ru Wed Jan 24 03:42:30 2018 From: mik.jackson at yandex.ru (=?utf-8?B?0JzQuNGF0LDQuNC7INCV0LPQvtGA0L7Qsg==?=) Date: Wed, 24 Jan 2018 14:42:30 +0300 Subject: [Kiev-pm] =?utf-8?b?W9CS0LDQutCw0L3RgdC40Y9dINCY0YnQtdC8INGB0LU=?= =?utf-8?b?0L3RjNC10YBc0LzQuNC00LsgcGVybCDQv9GA0L7Qs9GA0LDQvNC80Lg=?= =?utf-8?b?0YHRgtCwICjRg9C00LDQu9C10L3QutCwKQ==?= Message-ID: <152381516794150@web42j.yandex.ru> Доброго времени суток. Ищем сеньер\мидл perl программиста в стартап. Требования: 1) знание perl и mojolicious. 2) опыт работы с mysql, redis, git. 3) чувство юмора и интеллект. Предстоит помогать писать бекенд уже не с нуля в медленно загибающемся проекте. Мы ищем опытного трудягу без понтов и мании величия. ЗП от 100_000 руб. и выше, можем привязать к доллару или биткоину(шутка). Можно не фултайм но работа в промежутке с 10 до 17 мск. Рассмотрим любые варианты. Контакты: email (mik.jackson at yandex.ru), telegram (@misha_egorov) Если возникли вопросы пишите на почту, убедительная просьба не флудить в рассылке. --  С уважением, Михаил Егоров