Сегодня зарегистрированные пользователи Phenona получили письмо от создателя сервиса Даниила Кульченко (Daniil Kulchenko) с анонсом покупки сервиса компанией ActiveState.
0
Рейтинг
Perl *
Высокоуровневый интерпретируемый динамический язык
Сначала показывать
Порог рейтинга
Уровень сложности
Многопоточный сервер на Perl? Легко!
3 мин
14KИногда возникает необходимость написать какой-то простенький TCP либо UDP сервер. Например, сейчас у меня вполне успешно в production трудится собственная реализация DHCP (существующие не подходят из-за специфики). Обычно это делается просто — один цикл, слушаем сокет — и вуаля! Но не всегда «тупой» подход оправдан (нужно что-то более сложное — работа в несколько потоков, например), а использование тяжелой артиллерии слишком затратно.
Интересно? Добро пожаловать под кат.
Интересно? Добро пожаловать под кат.
+43
Выпущен Perl 5.14
1 мин
756Новая версия Perl — 5.14 — была официально выпущена 14 мая после успешного периода тестирования. Это первый релиз Perl 5, выпущенный по новому графику — выпуск стабильных версий теперь будет происходить раз в год.
В этой версии присутствует целый ряд улучшений и изменений, полный список которых можно найти по адресу http://perl5.git.perl.org/perl.git/blob/HEAD:/pod/perldelta.pod. Среди основных изменений:
Разработка версии заняла один год с момента выхода Perl 5.12.0. 150 авторов добавили и изменили около 550 тысяч строк в почти 3 тысячах файлах. Эта версия обязана своим выпуском сообществу CPAN, а также всему сообществу Perl. Отдельная заслуга принадлежит Джессу Винсенту — релиз-менеджеру Perl 5.14.
В этой версии присутствует целый ряд улучшений и изменений, полный список которых можно найти по адресу http://perl5.git.perl.org/perl.git/blob/HEAD:/pod/perldelta.pod. Среди основных изменений:
- поддержка Юникода 6.0, наряду со многими усовершенствованиями функций, связанных с Юникодом;
- улучшена поддержка IPv6;
- значительно упрощена автоконфигурация CPAN-клиента;
- новый флаг /r, который делает замены s///, не изменяя содержимое рабочей переменной;
- новые флаги регулярных выражений, позволяющие указать, что выражение нужно компилировать как ASCII или Юникод;
- новый синтаксис «package Foo { }»;
- по сравнению с предыдущими релизами меньше используется память и процессор;
- множество исправлений ошибок, большое число которых связано с работой Дэйва Митчелла, который исправил некоторые самые важные ошибки на грант The Perl Foundation.
Разработка версии заняла один год с момента выхода Perl 5.12.0. 150 авторов добавили и изменили около 550 тысяч строк в почти 3 тысячах файлах. Эта версия обязана своим выпуском сообществу CPAN, а также всему сообществу Perl. Отдельная заслуга принадлежит Джессу Винсенту — релиз-менеджеру Perl 5.14.
+35
Mojolicious v1.12
2 мин
2.8KЯ обнаружил что релиз замечательного перлового фреймворка Mojolicious на Хабре остался совершенно незамеченным. А тем временем, уже доступна версия v1.12, это прискорбно, т.к. теперь на перле стало писать проще чем никогда. Покажу это на реальном примере.
+15
Истории
Perl::Critic + Subversion = внедрение единых практик кодирования в команде
13 мин
2.8KЯзык Perl хорошо известен той степенью свободы (a.k.a. TIMTOWTDI), которую он даёт программисту в выборе способа решения той или иной задачи. У этой медали, к сожалению, есть и оборотная сторона, которая может проявиться при командной разработке крупных проектов. Если в команде нет единых практик кодирования и каждый из разработчиков придерживается принципа TIMTOWTDI, то новичку в таком коллективе не позавидуешь.
В 2005 году активный участник Perl-сообщества Дамиан Конвей (Damian Conway) опубликовал книгу Perl Best Practices, в которой собрал и структурировал 256 рекомендаций по написанию понятного, надёжного и поддерживаемого Perl-кода. Краткую шпаргалку с выжимкой из книги можно скачать отсюда.
Годом позже, Jeffrey Thalhammer и группа товарищей выпустила Perl::Critic — гибкий и расширяемый фреймворк, позволяющий автоматизировать проверку Perl-кода на предмет его соответствия большей части рекомендаций из книги Конвея, а также многих других полезных практик.
Perl::Critic подаётся под разными соусами: во-первых, в комплекте с модулем поставляется одноимённая утилита — perlcritic, во-вторых, проверку кода можно оформить в виде тестов с помощью Test::Perl::Critic либо Test::Perl::Critic::Progressive, в-третьих, критик легко интегрируется в VIM и Emacs.
В этом рецепте я расскажу о том как проверять Perl-код на лету при коммите в Subversion-репозиторий. Bon Appétit!
В 2005 году активный участник Perl-сообщества Дамиан Конвей (Damian Conway) опубликовал книгу Perl Best Practices, в которой собрал и структурировал 256 рекомендаций по написанию понятного, надёжного и поддерживаемого Perl-кода. Краткую шпаргалку с выжимкой из книги можно скачать отсюда.
Годом позже, Jeffrey Thalhammer и группа товарищей выпустила Perl::Critic — гибкий и расширяемый фреймворк, позволяющий автоматизировать проверку Perl-кода на предмет его соответствия большей части рекомендаций из книги Конвея, а также многих других полезных практик.
Perl::Critic подаётся под разными соусами: во-первых, в комплекте с модулем поставляется одноимённая утилита — perlcritic, во-вторых, проверку кода можно оформить в виде тестов с помощью Test::Perl::Critic либо Test::Perl::Critic::Progressive, в-третьих, критик легко интегрируется в VIM и Emacs.
В этом рецепте я расскажу о том как проверять Perl-код на лету при коммите в Subversion-репозиторий. Bon Appétit!
+19
Универсальный шаблонный движок за 1 минуту из подручных материалов
3 мин
1.8KНи для кого сейчас уже не секрет, что шаблонный движок должен быть полноценным языком программирования.
Не стоит забывать, что применение шаблонов далеко не ограничено WEB-ом.
Это генерация различного вида отчётов, генерация кода программ на различных языках, генерация исходных данных для обработки и многое другое.
Вообще, шаблоны хочется применить везде, где много текста и мало логики.
В раздумьях, как бы это сделать побыстрее и подешевле, не следует обманывать себя (в основном, на раннем этапе) мыслями типа «да у меня статический текст, только надо приклеить шапку», «тут нужен только счётчик», «мне надо только вывести дату» и т.д.
Сначала — шапка и счётчик, дальше будет условная вставка блоков (if), потом понадобится генерация таблиц (тут уже нужны циклы и массивы), далее потянутся строковые операции и все остальные конструкции нормального языка программирования.
+2
Видео с Perl-воркшоп «Saint Perl — 2» (Санкт-Петербург), 18 декабря
1 мин
735Всего 10 выступлений, к сожалению выложили пока только 6 (остальное в процессе оформления)
1. Russian Perl 6 book — call to envolve and test, докладчик — Шафиев Наим
Существует проект по переводу официальной книги Perl 6 на русский язык. Проект испытывает острую нехватку в переводчиках и тестерах книжки.
2. AnyEvent::HTTPBenchmark, докладчик Шафиев Наим
Создание утилиты нагрузочного тестирования, само по себе тоже являеться утилитой нагрузочного тестирования
3. Morpheus configuration engine — новый подход к конфигурации чего угодно, докладчик Матюхин Вячеслав
4. Perl IDEs, докладчик Шафиев Наим
5. Экономим на спичках, или Подробнее о константах, докладчик Евдокимов Денис (Green)
6. CODA — новая система компьютерной безопасности, докладчик Баклановский Максим
Про Perl мало, даже очень мало.
UPD:
7. Парадигма аспектно-ориентированного программирования и ее реализация в Perl, докладчик Александр Котов
8. Как не хранить сессии, докладчик Алексей Капранов
К сожалению докладчики: Erica Gasparini, Алексей Капранов,Вячеслав Матюхин, Денис Евдокимов (Green), так и не прислали презентации, поэтому их доклады пока будет только видео, возможно они её исправятся.
Спасибо организаторам и докладчикам конференции.
1. Russian Perl 6 book — call to envolve and test, докладчик — Шафиев Наим
Существует проект по переводу официальной книги Perl 6 на русский язык. Проект испытывает острую нехватку в переводчиках и тестерах книжки.
2. AnyEvent::HTTPBenchmark, докладчик Шафиев Наим
Создание утилиты нагрузочного тестирования, само по себе тоже являеться утилитой нагрузочного тестирования
3. Morpheus configuration engine — новый подход к конфигурации чего угодно, докладчик Матюхин Вячеслав
4. Perl IDEs, докладчик Шафиев Наим
5. Экономим на спичках, или Подробнее о константах, докладчик Евдокимов Денис (Green)
6. CODA — новая система компьютерной безопасности, докладчик Баклановский Максим
Про Perl мало, даже очень мало.
UPD:
7. Парадигма аспектно-ориентированного программирования и ее реализация в Perl, докладчик Александр Котов
8. Как не хранить сессии, докладчик Алексей Капранов
К сожалению докладчики: Erica Gasparini, Алексей Капранов,
Спасибо организаторам и докладчикам конференции.
+17
Нефункциональное модульное тестирование — «главное чтобы блестел». Часть 2
2 мин
2.5KВ прошлом году я написал небольшую заметку о нефункциональном тестировании — т.е. о тестах пытающихся выявить уродливый и сложный в сопровождении код. Конечно такие тесты не гарантируют идеального кода, но какой-то минимальный уровень качества обеспечат т.к. несмотря на очевидность требований этих тестов многие их игнорируют и потом приходиться разбираться в процедурах на 5 000 строк.
Заметка в ЖЖ не вызвала ожидаемой мной обратной связи (хотелось бы знать что я упустил), поэтому несмотря на сопротивление хабра решил выложить продолжение тут (спасибо людям добавившим кармы).
Со времени публикации первой заметки произошли следующие изменения:
Заметка в ЖЖ не вызвала ожидаемой мной обратной связи (хотелось бы знать что я упустил), поэтому несмотря на сопротивление хабра решил выложить продолжение тут (спасибо людям добавившим кармы).
Со времени публикации первой заметки произошли следующие изменения:
+14
Пишем icq-бот на perl
8 мин
2.9KЕсли вы не знаете, но хотите узнать, как сделать программу, которая постоянно висит в памяти и что-то нужное периодически выполняет, и при этом вы пишете на языке perl — попытаюсь рассказать об этом как можно более понятно.
Я сам люблю подробные инструкции, которые подразумевают, что человек, её читающий, не обязан знать всё, что было пропущено. Пусть лучше он сам пропустит то, что знает и так. Тем более, что о чём-то он может иметь ошибочное представление.
Ну а чтобы не было скучно, совместим этот пример с ещё одной темой — icq, чтобы у нас получился icq-bot.
Я сам люблю подробные инструкции, которые подразумевают, что человек, её читающий, не обязан знать всё, что было пропущено. Пусть лучше он сам пропустит то, что знает и так. Тем более, что о чём-то он может иметь ошибочное представление.
Ну а чтобы не было скучно, совместим этот пример с ещё одной темой — icq, чтобы у нас получился icq-bot.
+30
Perl 23 года с нами
1 мин
596Языку Perl исполнилось 23 года. В честь этого с 1 по 24 декабря разработчики языка Perl организовали марафон, в рамках которого на страницах блога каждый день один из разработчиков делился какими-то практическими навыками, демонстрирующими те или иные возможности Perl 6.
Завершила марафон статья Ларри Уолла, в которой он подвел итоги 23-летней истории языка Perl.
Поздравляю всех разработчиков использующих этот замечательный язык.
+44
Perl-воркшоп «Saint Perl — 2» в Санкт-Петербурге, 18 декабря
2 мин
747Меньше чем через две недели, 18 декабря, состоится шестой российский Perl-воркшоп «Saint Perl — 2» в Санкт-Петербурге.
Сайт: event.perlrussia.org/saintperl2
Еще не поздно зарегистрироваться или подать заявку на доклад. Upd: появились новые доклады.
На сегодня у нас такие выступления:
Расписание будет составлено со дня на день, а пока можем сообщить, что ориентировочно регистрация начнется в 10:30, а открытие конференции — в 11:00.
Те, кто приезжают из других городов, могут найти подходящую гостиницу на сайте мероприятия: event.perlrussia.org/saintperl2/booking.html, там же показано расстояние от гостиницы до место проведения.
Билет на поезд — на сайте ticket.rzd.ru, на самолет — awad.ru.
Сайт: event.perlrussia.org/saintperl2
Еще не поздно зарегистрироваться или подать заявку на доклад. Upd: появились новые доклады.
На сегодня у нас такие выступления:
- Martin Berends. Perl 6 Implementations in December 2010
- Martin Berends. Perl 6 Database Interfacing
- Алексей Капранов (kappa). Как не хранить сессии
- Александр Котов. Парадигма аспектно-ориентированного программирования и ее реализация в Perl
- Вячеслав Матюхин. Morpheus — новый подход к конфигурации чего угодно
- Максим Баклановский. CODA — новая система компьютерной безопасности
- Наим Шафиев — Perl IDEs
Расписание будет составлено со дня на день, а пока можем сообщить, что ориентировочно регистрация начнется в 10:30, а открытие конференции — в 11:00.
Те, кто приезжают из других городов, могут найти подходящую гостиницу на сайте мероприятия: event.perlrussia.org/saintperl2/booking.html, там же показано расстояние от гостиницы до место проведения.
Билет на поезд — на сайте ticket.rzd.ru, на самолет — awad.ru.
+10
NetBeans IDE — голосуем за поддержку Perl
1 мин
1.6KЯ уверен, что многие из нас сталкивались с NetBeans — в обзорах ли, — или же просто в поисках IDE.
Конечно, тру-перловоды используют vim, Eclipse или менее популярные штуки, — но крайне бы хотелось увидеть поддержку Perl в NetBeans.
Лично мне, в силу своих привычек, приходится использовать два редактора — Komodo Edit для Perl и NetBeans для Java/PHP — и я проникаюсь NB всё больше и больше — тормозит меньше, чем Komodo, обладает вагоном фич и маленькой тележкой приятностей, умеет «рефакторить» и тайдить код, приятное и логичное разворачивание проектов — в общем-то я не буду перечислять все его Features, — просто советую скачать да посмотреть — благо, что он кроссплатформенный.
Конечно, тру-перловоды используют vim, Eclipse или менее популярные штуки, — но крайне бы хотелось увидеть поддержку Perl в NetBeans.
Лично мне, в силу своих привычек, приходится использовать два редактора — Komodo Edit для Perl и NetBeans для Java/PHP — и я проникаюсь NB всё больше и больше — тормозит меньше, чем Komodo, обладает вагоном фич и маленькой тележкой приятностей, умеет «рефакторить» и тайдить код, приятное и логичное разворачивание проектов — в общем-то я не буду перечислять все его Features, — просто советую скачать да посмотреть — благо, что он кроссплатформенный.
+9
Необычный оператор диапазона
6 мин
4.8KДолжен предупредить, что это ещё одна статья, не содержащая никаких откровений. Для тех супер-гиков, которые назубок знают весь perldoc, она будет абсолютно бесполезной, так что, уважаемые супер-гики, можете проходить мимо и не информировать, что всё это есть в доках. Я и так это знаю. :-) Моя статья для всех остальных, для тех, кто весь perldoc целиком либо не осилил, либо осилил, но не понял, либо понял, но не запомнил.
Я думаю, многие знают о так называемом операторе диапазона, записывающемся как
Однако оператор диапазона может использоваться и в скалярном контексте, принимая в качестве операндов булевские выражения и возвращая булевский результат. И вот здесь начинается самое интересное, потому что это оператор с состоянием: результат операции будет зависеть не только от значений левого и правого операндов, но ещё и от истории вызовов данного выражения!
Я думаю, многие знают о так называемом операторе диапазона, записывающемся как
..
(две точки), с помощью которого можно быстро создавать массивы из набора последовательных элементов. Например, следующий код создаёт массив из 35 чисел: 3, 4, 5, …, 37:my @arr = 3 .. 37;
Помимо чисел можно использовать строки: в этом случае для генерации элементов массива будет выполняться так называемый магический инкремент (например, можно задать диапазон букв: 'a' .. 'z'
).Однако оператор диапазона может использоваться и в скалярном контексте, принимая в качестве операндов булевские выражения и возвращая булевский результат. И вот здесь начинается самое интересное, потому что это оператор с состоянием: результат операции будет зависеть не только от значений левого и правого операндов, но ещё и от истории вызовов данного выражения!
+27
Ближайшие события
Firebird Conf: конференция для разработчиков и администраторов СУБД Firebird
6 июня
09:00 – 20:00
Москва
Этот загадочный while…
3 мин
6.7K«Все потребности в нем заложены, какие только бывают на свете. И все эти потребности он может удовлетворить. С помощью нашей науки, разумеется.»
А. и Б. Стругацкие
Я думаю, многим из Perl-программистов знакома следующая конструкция построчного чтения содержимого файла:
А. и Б. Стругацкие
Я думаю, многим из Perl-программистов знакома следующая конструкция построчного чтения содержимого файла:
while (<FILE>) {
# do something
}
Этот код стал настолько привычным, что многие даже не задумываются, а как же он, собственно, работает. В данной статейке я опишу одну особенность, о которой весьма полезно помнить.+36
Особенности национальных выражений
2 мин
1KЗахотелось мне поделиться с хабравчанами-перловодами одним интересным случаем, произошедшим у нас на работе. В процессе ревизии старого кода была обнаружена некая загадочная конструкция (здесь и далее реальный код несколько сокращён и приглажен):
sort { my ($x, $y) = ($a, $b); ($x =~ s{/}g) <=> ($y =~ s{/}g); } @array;
Казалось бы, обычная сортировка с переопределённой функцией сравнения. По изначальной задумке автора здесь должна была быть сортировка массива строк по количеству прямых слэшей в этих строках (известно, что выражение замены возвращает в качестве значения количество произведённых замен), однако что-то в этой функции не то. Вроде бы, «заменительная» часть выражения s/pattern/replace/g никогда не была опциональной, однако именно это мы видим в выражениях $a =~ s{/}g
. Как же оно работает? Вот с этим мы сейчас и будем разбираться.+32
Прогресс-индикатор со стеком
5 мин
1.2KВ работе мне нередко случается реализовывать долгие процессы, где не обойтись без прогресс-индикатора. Проблемы начались, когда процессы стали слишком сложными, но при этом хотелось иметь один непрерывный прогресс-индикатор для всего процесса. К примеру, процесс может состоять из вызовов функций Asub, Bsub и Csub, каждая из которых выполняется довольно долго (скажем, примерно 10%, 20% и 70% общего времени). Пусть Asub содержит два цикла, идущих подряд, Bsub несколько вложенных циклов, а Csub один цикл, но при этом в середине этого цикла вызывает Asub. Решая задачу в лоб, можно довести код до такого состояния, что треть всех строчек будет вычислять текущий процент и определять, пора ли его обновлять в UI, а функция Asub принимать дополнительные параметры, чтобы определить, какой диапазон процентов ей отображать (от 0 до 10, если вызвана из основного процесса или какой-то другой, если вызвана изнутри Csub). В результате код теряет читаемость, а поддерживать его становится сложнее. И нас ждут приятные минуты, когда мы захотим повторно использовать Bsub в другом месте, но уже не в середине, а в конце общего процесса, так что выводимые ей проценты от 10% до 30% будут не к месту. Я пришёл к выводу, что с этим надо что-то делать.
+18
Moscow.pm 2009 => 2010
2 мин
658Небольшой рассказ о том, чем Moscow.pm занимался в прошедшем году и о том, чего ждать от 2010-го.
Рассказывает Андрей Шитов.
Рассказывает Андрей Шитов.
+11
Mini-FAQ по Perl (Частые вопросы, ЧаВо)
4 мин
19KМеня часто спрашивают, как я учил Perl — какие книги читал, какие сайты посещал и так далее. Многие считают, что Perl имеет сложный синтаксис, и потому не хотят или бояться его учить. В этом FAQ я хотел бы поделиться своим мнением относительно языка Perl.
+45
PSGI — интерфейс между web-серверами и web-приложениями на perl
3 мин
5.1KНе так давно появилась спецификация интерфейса между web-серверами и приложениями/фреймворками на perl PSGI — Perl Web Server Gateway Interface Specification. PSGI добавляет слой абстракции, позволяющий не заботиться о конкретном способе подключения к web-серверу, и реализовать единственный интерфейс для спецификации. Запустить такое приложение можно на cерверах, поддерживающих PSGI — на данный момент это Plack (набор серверов и утилит), nginx (с патчем для поддержки PSGI и встроенным perl) и Apache с mod_psgi.
+13
Компиляция Perl под Windows
1 мин
20KПод Microsoft Windows существует несколько популярных дистрибутивов Perl.
Это Strawberry Perl и ActivePerl. Первый предназначен исключительно для Windows, второй собирается под различные платформы (полный список можно найти на официальном сайте). Важно учесть, что в ActivePerl, модули распространяются в уже готовом виде, и бывает так, что приходится ждать пока обновят репозитории.
В этом небольшом HowTo я расскажу, как подготовить рабочую среду Perl из сорцов.
Это Strawberry Perl и ActivePerl. Первый предназначен исключительно для Windows, второй собирается под различные платформы (полный список можно найти на официальном сайте). Важно учесть, что в ActivePerl, модули распространяются в уже готовом виде, и бывает так, что приходится ждать пока обновят репозитории.
В этом небольшом HowTo я расскажу, как подготовить рабочую среду Perl из сорцов.
+13