Рубрика «perl» - 24

В богатом русском языке к сожалению нет некоторых слов, поэтому вместо того чтобы начать заметку словами «Пися/Пиша модульные тесты», я вынужден удлинить фразу.
В процессе написания модульных тестов часто приходится заглядывать в старые тесты, чтобы быстро вспомнить как подменить тот или иной объект, поэтому я решил что пришло время набросать небольшую шпаргалку, авось и кому-то ещё сгодится.
Сразу прошу сильно не пинать, это шпаргалка, а не руководство, поэтому всё предельно кратко.
Читать полностью »

Если вы когда-нибудь пытались написать своего бота, программу-переговорщик (negotiator), интерпретатор протокола связи и тому подобные вещи, то наверняка сталкивались с конечными автоматами. Данная тема в принципе не представляет большой сложности, но если вдруг у вас не было курса «теории автоматов», милости прошу под кат.

Сегодня мы попытаемся создать простой детерминированный конечный автомат. Мне вдруг захотелось написать его на Perl'е, но так как мы не будем использовать никаких специфических трюков, перенести общую концепцию на любой другой императивный язык не составит большого труда.
Читать полностью »

Введение

Довелось мне работать админом в крупной компании, имеющей более 10-ти филиалов в разных городах, объединенных достаточно нестабильными и медленными каналами. Как и во многих других, основу обмена информацией в компании представляла электронная почта. Следует отметить что на каждом филиале, как и в головной конторе имеется свой почтовый сервер, управление почтовыми аккаунтами производится местным админом.
Задача основная — поддержка актуального справочника email адресов всех пользователей компании для внутреннего использования, второстепенная — список имеющихся email адресов для основного почтового сервера, дабы он проверял есть ли такой адрес в компании перед тем как переслать письмо на нужный филиал.
Каналы нестабильны, частенько «падают», скорость их работы вообще непредсказуема. Кому интересно как была решена задача приглашаю под кат.
Читать полностью »

image

Ты современный Web-разработчик?

Задай себе вопросы:

  • Готов ли ты перейти на PHP 5.4?
  • Стоит ли переходить на MariaDB?
  • Как работает Python с вебсокетами, базами под нагрузкой?
  • Что дает Google Closure Templates?
  • Как запустить большой проект на Ruby?
  • Можешь ли спроектировать успешный HighLoad проект?
  • Сможешь ли создать распределенный офис разработки проектов?
  • Как успешно внедрить Kanban и Scrum в небольшой команде

Читать полностью »

DevConf — профессиональная конференция, посвященная ведущим технологиям программирования и веб-разработки.
Участникам DevConf предоставляется уникальная возможность — получить доступ сразу ко всем лидирующим технологиям веб-разработки, послушав доклады от основателей этих технологий, приехавших в Москву со всего мира.

В рамках DevConf 2012 — 9 июня 2012 пройдут 5 конференций:

DevConf::PHP()
DevConf::Perl()
DevConf::Python()
DevConf::Ruby()
DevConf::JS()

9 июня 2012 года в рамках DevConf пройдет группа уникальных мастер-классов.
Читать полностью »

в 16:18, , рубрики: cpan, fastcgi, perl, метки: , ,

imageНекотрое время назад, в компании, в которой я сейчас работаю, было принято решение оптимизировать работу серверных приложений. Изначально они использовались в связке nginx+apache+mod_fastcgi или mod_fcgid. Однако, хотелось избавиться от apache, учитывая что nginx сам умеет работать с FastCGI приложениями.

В процессе решения данной задачи мною был написан модуль-наследник от модуля FCGI::ProcManager. В него был добавлен функционал по контролю над количеством рабочих процессов в зависимости от нагрузки и ограничение времени жизни рабочих процессов определенным количеством запросов. Читать полностью »

IT-сообщества Kiev.pm и Moscow.pm анонсировали совместную Perl-конференцию в мае этого года: Perl Mova + YAPC::Russia «May Perl».

Организаторы обещают два дня интересных докладов, большое количество интересных зарубежных гостей, цветущий и отремонтированный Киев, еще не отданный на растерзание футбольным фанатам. Читать полностью »

Эта публикация родилась на основе ведущейся разработки, поэтому комментарии вида «надо было делать не так, а эдак» или «почему вы не взяли готовое решение А» неуместны; так было необходимо исходя из поставленной задачи. Описание задачи выходит за рамки сегодняшней темы, поэтому рассматривайте все, что находится под катом как иллюстрацию, как пример способа обработки веб форм.
ВНИМАНИЕ! Под катом много кода!

Что хочется получить в итоге:

  • Генерацию HTML представления формы
  • Валидацию результатов на сервере
  • Превалидацию на клиенте
  • Сохранение данных в MongoDB

ООП в Perl ругают, но намЧитать полностью »

Как ни странно, не удалось мне найти простую консольную утилиту для склеивания в один спрайт кучи png-иконок, поэтому пришлось взять в руки mcedit (все, что было под рукой) и написать небольшой скрипт, который учитывает, в отличие от других реализаций, что при слишком большой ширине/высоте картинки возникают проблемы с реализацией просмотра png в Windows GDI (там ограничение, похоже, signed int).
Под катом, собственно код с небольшими пояснениями.

#!/usr/bin/perl  use strict; use GD;  my ($size,$dir,$outpng,$outcss) = @ARGV;  my $line = 100; # Это кол-во иконок на одну строку, т.е. выходной файл будет шириной $size*$line пикселей  # Если пропустили параметр, выдаемЧитать полностью »

в 14:11, , рубрики: Dancer, database, dbi, perl, метки: , , ,

Сегодня пробежимся по работе с базами данных при web-разработке с использованием Dancer. Думаю, не совру, если скажу, что многие из нас любят perl за то, что, в частности, есть более одного пути добиться желаемого результата.
Pure DBI

Разумеется, вы можете использовать просто привычный DBI и не читать дальше совершенно:) К недостаткам такого подхода можно отнести лишь относительно бОльшее количество писанины и необходимость смешивать perl и SQL (хотя это и можно обойти достаточно просто).
Dancer::Plugin::Database

Это такой правильный, предполагаемый авторами фреймворка по умолчанию вариант. По сути своей являетсяЧитать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js