Как стать автором
Поиск
Написать публикацию
Обновить
0.39

Perl *

Высокоуровневый интерпретируемый динамический язык

Сначала показывать
Порог рейтинга
Уровень сложности

Простой торговый бот для The Settlers Online

Время на прочтение6 мин
Количество просмотров4.7K
Давным давно, еще в те времена когда на персональных компьютерах жил MsDOS довелось играть в игру Settlers II. Игра меня тронула, и я с удовольствием провел наедине с ней несколько дней. Много позже прошел ее повторно, а затем и еще раз, и каждый раз несмотря на древность этой игры с удовольствием проводил время играя в нее. Не так давно увидел рекламу онлайн игры The Settlers Online и поддавшись ностальгии зарегистрировался в ней. Первым впечатлением был восторг, настолько все было похоже на полюбившееся мне Settlers II. Но радужная эйфория быстро прошла. Я не буду рассказывать в этой статье о всех плюсах и минусах, расскажу только об одном минусе — торговле. О самой игре более подробно вы можете прочитать в статье The Settlers: теперь Online.
Читать дальше →

Риалтайм дашборд

Время на прочтение7 мин
Количество просмотров5.7K

Однажды, сидя поздним вечером на работе, захотелось сделать простенький шустренький дашборд, который бы отрисовывал графики ошибок или других варнингов из логов Apache или Ngnix. Термин Realtime слегка льстит, в действительности мы видим обновление на графике каждые 3 секунды. Такого плана дашборд, очень полезен особенно когда идет выкатка новой версии в бой, сидишь и смотришь как она тихонечко расползается по серверам, изменяя направления кривых на графике.
Читать дальше →

Термометр с прогнозом погоды

Время на прочтение4 мин
Количество просмотров14K


С рождением ребёнка существенно повышается внимание, уделяемое погоде на улице: если сам ты можешь выйти на улицу в чём придётся, и немножко помёрзнуть или промокнуть, не взяв зонтик, то родительский инстинкт просто не даст причинить неудобство твоему ребёнку. Спасибо современным технологиям, — температуру на улице и прогноз погоды можно в любой момент посмотреть на специальных сайтах (вроде pogoda.mail.ru или pogoda.yandex.ru).

И всё было бы хорошо, но в один прекрасный день я пообещал своей супруге повесить за окно обычный термометр — ей было неудобно открывать ноутбук, заходить на сайт и смотреть погоду там.

Как говорится в известной пословице: мужик сказал, женщина напомнила, женщина напомнила, женщина напомнила, женщина задолбала, — мужик сделал.

Читать дальше →

Эпиграф к perl 5.16.0

Время на прочтение3 мин
Количество просмотров1K
По традиции каждый релиз perl`а анонсируется письмом, начинающимся с цитаты, выбранной релиз-инженером. Для версии Perl 5.16.0 я выбрал предпоследнюю строфу из стиха Уистена Хью Одена “1 сентября 1939 года”.
Текст стихотворения легко найти, так что я не буду воспроизводить его здесь полностью.
Стихотворение было написано сразу после начала Второй Мировой Войны и отражает всю ту кровавую кашу, которая началась. Оно рассказывает о чувствах людей вокруг поэта: их жизнями завладело тихое отчаяние, подобного которому они никогда не видели. Не только из-за надвигающегося хаоса, но и из-за борьбы, которая будет все так же продолжаться: за то, чтобы жить честно, быть счастливым и быть любимым.

Каждое существо
Хочет не всех любить,
Скорее наоборот —
Чтобы все любили его.

Читать дальше →

Шпаргалка по mock-объектам в Perl

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

Конечные автоматы. Пишем ДКА

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

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

Справочник email адресов компании или репликация данных в нестабильной сети

Время на прочтение12 мин
Количество просмотров3.9K

Введение


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

Komodo IDE 6 Settings

Время на прочтение2 мин
Количество просмотров5.7K
image
Хотя (Active)Perl, Python, Tcl интерпретаторы от компании ActiveState достаточно популярны, почему то о самой среде разработки Komodo IDE мало чего прочитаешь на просторах интернета, кроме как на официальном сайте. Увы, т.к. я не силен в английском, то некоторые моменты мне было бы легче понять на картинках или переводе. Не найдя развернутых ответов (на русском) на периодически встающие вопросы настройки и оптимизации, хочу поделиться личным опытом тыканий и смыканий, в надежде найти таких же как я, начинающих пользователей Komodo IDE. Сам я пишу на Perl скрипты для работы с БД. Итак, что же я использую?
Читать дальше →

Развитие модуля FCGI::ProcManager

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

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

Вариация на тему: прогноз погоды по телефону

Время на прочтение9 мин
Количество просмотров6K
Решил поделиться ещё одним способом организации сервиса прогноза погоды по телефону. Здесь, по сравнению с этим постом, больше интеллекта перенесено в Asterisk.
Weather

Читать дальше →

Краткий обзор качества коммерческой CMS на Perl

Время на прочтение3 мин
Количество просмотров5K
В процессе занятия фрилансом мне периодически попадаются на препарирование сайты написанные на Perl. Глядя на код, я понимаю, откуда появилась дурная слава Perl в области Web разработки. Но не будем углубляться в холивар.
Вчера мне в руки попал движок X1-forge. Надо особо отметить что он активно продаётся и весьма нескромно расхваливается на сайте. Итак, что же с ним не так?
Читать дальше →

Благотворительный Фонд craigslist пожертвовал $100,000 языку программирования Perl

Время на прочтение3 мин
Количество просмотров1.6K
От меня: во-первых, я не знал, что craigslist работает на Perl (чем я увлечен на данный момент). Во-вторых, такое большое и важное пожертвование во благо всему и всех мотивировало меня «отдать должное» craigslist, распространив эту новость. Надеюсь, Вам всем будет интересно. P.S. Я не обладаю должным опытом переводчика. Я разработчик. Поэтому прошу быть чуть полегче с критикой перевода.

Фонд Perl с гордостью сообщает, что Благотворительный Фонд craigslist оказал поддержку Perl сообщества, сделав пожертвование в размере 100,000 долларов на поддержку Perl5, которые могут быть также использованы в общих целях Фонда Perl.

По словам генерального директора craigslist и бывшего Perl хакера Джима Бакмастера: «craigslist получил большую популярность, в то время как большинство его программного обеспечения разрабатываются на Perl уже более чем десять лет. Благотворительный Фонд craigslist с гордостью признает волшебство и щедрость всего сообщества Perl, и посему готов гарантировать дальнейшую поддержку Perl5, внеся вклад в будущее развитие Perl». Он также добавил: «Поначалу не было ясно, как и что можно лучше всего дать взамен Perl. К счастью, было несколько способов, как можно это сделать.»

Карен Поули, Президент Фонда Perl заявила: «Я чрезмерно благодарна Благотворительному Фонду craigslist за их невероятно щедрое пожертвование. Какой же фантастический способ для Perl Foundation начать 2012 год!»
Читать дальше →

Почему в Perl так редко используется IoC, DI и магическая пилюля Kaiten::Container

Время на прочтение3 мин
Количество просмотров1.9K
Думаю многие понимают значение баззвордов Inversion of Control (Ioc) и Dependency Injection (DI). Если не очень, но интересно — на хабре было несколько статей на эту тему, очень познaвательно и доступно изложено.
Методики отличные, но применить их в настоящей жизни как-то не получалось.

Под катом — небольшой обзор плачевного состояния дел в Perl и самостийное «кажется» решение.
Читать дальше →

Ближайшие события

Успокаиваем нервы при помощи Perl и GD

Время на прочтение2 мин
Количество просмотров3K

Предисловие


Я один из тех людей, которые часто подвержены стрессовым ситуациям. Избавиться от стресса можно разными способами. В данном топике я покажу вам, как это делаю я.
Читать дальше →

Легкий PERL-скрипт для отправки и приема SMS через мобильный телефон

Время на прочтение8 мин
Количество просмотров7.7K

Преамбула



В процессе самостоятельной разработки «Умного дома» ( далее по тексту УД) периодически возникала необходимость в написании небольших, но очень нужных утилит-программ-скриптов, в том или ином виде уже написанных и доступных на просторах интернет, но по тем или иным причинам непригодных для использования в проекте. «Почему непригодных?», спросит опытный Разработчик, может я просто «Не люблю кошек, потому, что не умею их готовить?».
Читать дальше →

Установка Perl-модулей в Gentoo

Время на прочтение8 мин
Количество просмотров5.5K
imageСамый большой недостаток экосистемы языка Perl — управление модулями (другой кандидат на эту роль — долгострой Perl6, но не будем о нём). Что любопытно, самое большое достоинство этой же экосистемы — наличие единого архива модулей CPAN. Поразительно, собрать и организовать модули смогли, а реализовать удобную установку/обновление/удаление — нет.

Богатство выбора… или очередное TIMTOWTDI


imageСуществует множество альтернативных подходов к этой задаче (и их количество тоже косвенно указывает на то, что ни один из них не решает проблему достаточно хорошо): cpan, cpanplus, cpanminus, pip, cpansite, minicpan/mcpani, perlbrew, cpan-outdated, cpan-listchanges, local::lib, …

Итак, у нас может быть:
  • Несколько версий самого perl (разумеется, каждая со своими глобальными модулями), в т.ч. установленные в домашний каталог юзера (см. perlbrew).
  • Глобальные (доступные при запуске perl) и локальные (подключаемые из любого каталога/каталогов, обычно располагающиеся внутри отдельного проекта или в домашнем каталоге пользователя) модули.
  • Глобальные модули бывают трёх типов: core (идущие вместе с perl), site (устанавливаемые вручную админом) и vendor (устанавливаемые менеджером пакетов вашей ОС).
  • Все глобальные модули находятся в подкаталогах «номер.версии.perl/», и эти каталоги никто автоматически не чистит. А при установке новой версии perl создаются новые аналогичные каталоги. И perl подгружает модули из каталогов всех доступных предыдущих версий. Так что умножьте core+site+vendor на количество обновлений perl — вот в таком количестве каталогов/вариантов находятся ваши глобальные модули.
  • Источники модулей тоже бывают разные: CPAN, локальные зеркала-оверлеи CPAN с приватными модулями, просто свои или скачанные из инета модули отсутствующие в CPAN-совместимой системе.
И всю эту радость надо администрировать: устанавливать, обновлять, … В Gentoo для упрощения администрирования глобальных Perl-модулей есть утилитка g-cpan, вот о ней я и хочу немного рассказать.
Читать дальше →

Производительность пакетов ООП в Perl

Время на прочтение5 мин
Количество просмотров5.8K
Как известно в Perl не очень удобная поддержка объектно-ориентированного программирования. Если хочется программировать с классами, то многое приходится делать вручную. Однако у Perl'а есть очень богатые возможности расширения, поэтому со временем появилось много библиотек (пакетов) обеспечивающих поддержку классов, методов и свойств с синтаксисом различной степени удобности. Но как оказалось, эти пакеты проигрывают в производительности по сравнению с ручной реализацией конструкций ООП. Т.е. с одной стороны, их приятно использовать, а с другой, они делают код медленнее. Мне всегда хотелось узнать насколько медленее становится код, и какие из этих пакетов стоит применять, а какие нет. Поэтому я решил провести небольшое исследование.

Читать дальше →

Многопоточность в Perl, или Как я посмотрел ролик о съёмках Warehouse 13

Время на прочтение6 мин
Количество просмотров16K
image
Всё началось с того, что я наткнулся на видео, которое рассказывало о съёмках одного из моих любимых сериалов, Warehouse 13:
www.aoltv.com/2009/07/10/behind-the-scenes-of-warehouse-13

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

Но, как принято на сайте AOL TV, видео оказалось доступно только жителям US. Зачем накладывать такие ограничения — я не могу взять в толк. Где и какая жаба их душит, непонятно.
Но такая мелочь меня не могла остановить.
Читать дальше →

Используем Flickr API из Perl

Время на прочтение5 мин
Количество просмотров5K
Добрый день, уважаемый %habr_username% !

Если кто не знает — речь идёт об одном из самых популярных в мире фотохостингов — Flickr (wiki про Flickr).

Вкратце о Flickr API, ибо на хабре присутствуют только краткие упоминания о нём.

Разработчики Flickr дают возможность всем страждущим использовать мощный API, предоставляющий доступ ко всем мыслимым и немыслимым функциям, данным, возможностям. Flickr API отлично документирован, есть полное описание всех запросов (пример), есть FAQ, есть «быстрый старт», это основные источники познаний о Flickr API, их вполне достаточно для начала разработки вашего приложения. Модули для облегчения использования Flickr API есть для большинства популярных языков программирования, в том числе для Objective-C и Java, которые в настоящее время широко используются в разработке для IOS и Android, список с ссылками можно посмотреть тут (Прокрутив страничку вниз).
Читать дальше →

Общение с fastcgi менеджером

Время на прочтение3 мин
Количество просмотров3K

Описание


Маленькое расширение для FCGI::ProcManager, позволяющее обращаться к менеджеру fcgi процессов. Для связи сторонней программы с менеджером используется сокет.

Подводные камни


Модуль FCGI::ProcManager используется для порождения обработчиков входящих запросов. Текущий процесс является менеджером. Со старта он порождает обработчиков (n_processes штук), далее он поддерживает их количество, следя за погибшими в бою. Для этих целей он использует wait. Тут и кроется проблемка. После того, как запущены потоки, менеджер, вызывая wait, блокируется. Достучаться до него можно только через сигналы. Исполнять в обработчике сигнала код нужно с умом и аккуратно, гонять там говнокод — нехорошо. А значит необходимо наладить другой канал связи.
Читать дальше →

Вклад авторов