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

Perl *

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

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

Отказоустойчивая обработка 10M OAuth-токенов на Tarantool

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

image


Многие уже наслышаны о производительности СУБД Tarantool, её возможностях и особенностях. Например, у него есть классное дисковое хранилище — Vinyl, кроме того, он умеет работать с JSON-документами. Но в многочисленных публикациях обходят стороной одну важную особенность. Обычно БД рассматривают просто как хранилище, но всё же отличительная черта Tarantool — это возможность писать код внутри и очень эффективно работать с этими данными. Под катом рассказ, как мы строили одну систему почти полностью внутри Tarantool, написанный в соавторстве с Игорем igorcoding Латкиным.

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

Отчет с Moscow.pm 2 февраля

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


2 февраля в нашем московском офисе прошла встреча Perl-программистов Moscow.pm, ставшая уже традиционной на протяжении 10 лет. Под катом вы сможете найти видео и презентации трех докладов:

  • «Автотесты», Вадим Пуштаев, программист отдела внутренней разработки Поиска Mail.Ru
  • «Введение в асинхронно-событийное программирование на Perl», Андрей Еньшин, младший программист команды разработки веб-бэкенда Облака Mail.Ru
  • «Coro. Intro», Евгений Вансевич, программист Почты Mail.Ru

Модуль HTML::Phl для обработки HTML-документов, содержащих инструкции с кодом Perl

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


В статье приведена спецификация модуля HTML::Phl для работы с HTML-документами, содержащими код языка программирования Perl.

Задача модуля HTML::Phl — выбрать из текстового документа формата HTML, размещенный в нем особым образом perl-код, выполнить кое-какие манипуляции над ним и остальным кодом, объединить полученное в единый код perl и «скормить» всё это 'eval', получая на выходе сгенерированную HTML-страницу, воспроизводимую веб-браузером.

Пример
1   <HTML>
2   <HEAD>
3   <META content="text/html; charset=UTF-8" http-equiv="Content-Type">
4   <TITLE>Пример PHL</TITLE>
5   </HEAD>
6   
7   Создаем два дочерних процесса f1 и f2<br>
8
9   %pl  include("process_win.phl", "fork decode=cp1251", "f1");
10  %pl  include("process_utf.phl", "fork decode=utf8", "f2");
11
12  Ждем завершения процессов<br>
13
14  <%pl my %join = include("JOIN", "f1 f2"); %>
15
16  Результаты выполнения процессов<br>
17
18  <%pl
19     foreach my $key(keys(%join)) {
20        if (ref $join{$key}) {
21           print "процесс '$key' - результат: ";
22           for (my $i = 0; $i <= $#{$join{$key}}; $i++) {
23              print "'${$join{$key}}[$i]' ";
24           }
25           print "<br>";
26        } else {
27           print "процесс '$key' - результат: '$join{$key}'<br>";
28        }
29     }
30  %>
31   
32  </HTML>


Статья написана в ознакомительных целях, разработка модуля носит концептуальный характер, и его надежное применение нуждается в дополнительном тестировании.
Читать дальше →

Лень, нетерпение и самомнение — три главных добродетели программиста. С днем рождения, Ларри Уолл

Время на прочтение9 мин
Количество просмотров19K
«Мне кажется, я иногда вижу сны на Perl`e»
— Ларри Уолл

  1. Ларри всегда по определению прав по поводу того, как Perl должен себя вести. Это значит, что у него финальное право вето на основные функциональные возможности.
  2. Ларри позволительно менять свое мнение по любому вопросу спустя какое-то время, независимо от того, использовал ли он Правило 1.
Уяснили? Ларри всегда прав, даже когда ошибается.



Компактная биография Ларри выглядит вот так (Geek-код): GC/CS/E/H/IT/L/M/MU/PA/P/S/SS/TW/O d(+++)>+ s: a+>++>+++$ C++++$ UBAHS*++++$ P+++++(--)$ L !E? W+>++ N+++@ K+++>++++++@ w$ !O M->+ V--() PS+(-) PE(++) Y+ PGP->+ t+() 5 X? R>* tv@ b++>+++ DI+++ D? G(-) e++>+++@ h----() r+++ y++++ (расшифровка)

Ларри, как потомственный пастор, в детстве мечтал стать служителем церкви. Но пришлось идти в ИТ. Студетнтом он 3 годаработал в компьютерном центре университета. После универа, вместе с женой работали переводчиками Библии, изучали лингвистику, в надежде на то, что где-нибудь в Африке обнаружется племя со своим языком, но без письменности, и они разработают под этот язык письменность и одарят туземцев. В роли туземцев, спустя годы, оказались программисты.

Из-за денег, Ларри успел поработать в Unisys, NASA (JPL) и O'Reilly.

Из-за лени, нетерпения и самомнения Ларри написал rn (популярный клиент для Usenet) и утилиту patch (под UNIX). Чтобы стать пожизненным великодушным диктаторм, он написал язык Perl.

Ларри верит в типологию Майерс-Бриггс (INFP), а еще он двукратный мировой чемпион по запутанному коду на С.

Лекции Техносферы. Программирование на Perl (осень 2015)

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


Сегодня мы предлагаем вам ознакомиться с одним из курсов Техносферы, который посвящён программированию на Perl. Этот курс открытый — на него может записаться любой студент или аспирант МГУ имени М.В. Ломоносова. Также в Техносфере есть еще несколько открытых курсов, 1 сентября на них открывается запись. В этом семестре вас ждет приятное дополнение: они будут подкреплены методическим материалом, который будет содержать достаточно информации, чтобы по нему можно было вспомнить материал любой лекции и при необходимости более глубоко её изучить.

Цель курса «Программирование на Perl» — узнать возможности языка (его сильные и слабые стороны), научиться писать программные продукты на этом языке, научится быстро ориентироваться в чужом коде. Под катом находятся все лекции в формате видео и краткое описание к ним.
Читать дальше →

Гейзенбаг, или как Луна портит код

Время на прочтение6 мин
Количество просмотров24K
Луна убывает, такое бывает… ©Земфира

Гейзенбагом называют ту разновидность программных глюков, которая возникает не пойми откуда, не поддается отладке и обнаружению. Словом, ведет себя как тот самый Неуловимый Джо или кроковский кот из недавнего поста. Мне по работе приходилось сталкиваться с такими и про себя я называл это эффектом квантовой механики до тех пор, пока не узнал, что близкое по смыслу название уже давно придумали. Бывает, посылаешь заказчику отладочный бинарник, который всего лишь записывает в журнал больше событий вокруг предполагаемого источника проблемы и после этого проблема исчезает!

heisenbug /hi:'zen-buhg/ n.
A bug that disappears or alters its behavior when one attempts to probe or isolate it.




Предлагаю вашему вниманию свою небольшую познавательную коллекцию квантовых эффектов в программировании.


Эпизод I, OpenOffice не печатает во вторник


Историю этого замечательного багрепорта можно почитать на Ubuntu Launchpad, а я вкратце изложу суть для тех, кому не сподручно читать по ссылке. В системной утилите file был баг из-за которого, файлы содержащие в 4-м байте Tue определялись как Erlang JAM. Дефект присутствовал в версиях file 4.21 и 4.24 и был вызван ошибкой в magic файле.

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

Эффективное кеширование. От теории к практике

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

Как правило, статьи о кешировании начинаются за здравие, а заканчиваются LRU кешем. Попробуем переломить эту тенденцию? Начнем с того, чем LRU плох, а закончим за здравие. Я надеюсь.

Вне зависимости от того, строите ли вы хайлоад сервис для миллионов посетителей или проектируете мобильное приложение, пишите операционную систему или СУБД — ключевое звено, влияющее на конечную стоимость системы и на отзывчивость интерфейса/сервиса — это кеш.
Читать дальше →

История языков программирования: Perl — необычный язык, созданный лингвистом для программистов

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


Язык программирования Perl создал Ларри Уолл (Larry Wall) в 1987 году, когда он работал системным программистом в американской компании Unisys. Цели, которые преследовал Ларри при разработке нового языка программирования, отражены в его названии — PERL, которое позднее стало расшифровываться как Practical Extraction and Report Language, то есть «практический язык извлечения „данных“ и „создания“ отчетов».

Одна из легенд о происхождении Perl гласит, что в то время уже существовал язык с таким названием, поэтому Ларри сократил название на одну букву, не изменив произношения. По иронии судьбы, сегодня тот язык не помнит никто, кроме историков, а Perl известен всему миру.

Хотя, по другой версии, Ларри назвал созданный им язык по имени своей невесты.


Ларри Уолл

На становление Perl повлияли языки Ada, Basic, Fortran, Lisp, Pascal и, конечно, язык C. Perl впитал в себя разные течения компьютерной науки: процедурное, модульное, функциональное и объектно-ориентированное программирование, макрообработку текста, а кроме этого — культуру ОС Unix, с ее богатым набором команд и утилит, стройной продуманной архитектурой и унифицированным подходом к представлению данных.
Читать дальше →

Sparrowdo — простой инструмент управления конфигурациями

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

Здравствуйте! В данной статье хотел бы рассказать о простом инструменте управления конфигурациями — Sparrowdo. Скажу сразу, что система Sparrowdo базируется на использовании так называемых Sparrow плагинов, o которых мною был уже написан ряд статей на habrahabr.ru


image image


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

Приглашаем на YAPC::Russia 2016

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


В субботу 25 июня в московском офисе Mail.Ru Group пройдёт ежегодная конференция YAPC::Russia, посвящённая языку программирования Perl и его сообществу. В разные годы она проходила в Москве, Киеве и Санкт-Петербурге. На конференцию съезжаются Perl-профессионалы из разных городов и стран, чтобы обменяться опытом, завести новые знакомства в своей сфере и пообщаться с единомышленниками в неформальной и приятной обстановке. Программа встречи ждет вас под катом.
Читать дальше →

Вышла версия 2.1 Perl плагина для IntelliJ IDEA

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


Очередная версия плагина для IntelliJ IDEA поддерживает Template Toolkit 2, лучше работает с константами и методами объектов а так же содержит несколько небольших фиксов.
Читать дальше →

Synology DSM, Perl и Mojolicious

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

Раз вспомнили про Synology DSM в Одновременное монтирование зашифрованных папок в Synology DSM, то решил показать как при помощи Perl и веб фреймворка Mojolicious сделать простое приложение под свои нужды. Мне пришлось написать на коленке утилиту SynDevInfo, для вывода необходимой информации по устройству в браузере, т.к. уважаемый support не знает GNU/Linux, а пользователи не могут зайти по ssh.


Под катом будет описана структура пакета, скрипт запуска приложения и сам скрипт на Mojolicious::Lite

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

Разработка Docker контейнеров с помощью системы многоцелевых сценариев Sparrow

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

В этой статье я хотел бы рассказать как можно создавать сценарии сборки имиджей для Docker контейнеров с помощью системы многоцелевых сценариев Sparrow*.


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

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

Вышла версия 2.0 Perl плагина для IntelliJ IDEA

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


Стала доступна для загрузки вторая версия Perl плагина для IDE от JetBrains. В этой версии появилась последняя из крупных фич, которую я хотел реализовать — отладчик.
Читать дальше →

Разработка Sparrow плагинов

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

Приветствую!


В предыдущей статье я писал о SparrowHub — репозиторий готовых утилит для системного администрирования. Что же, время прошло, и теперь хочется рассказать о том КАК разрабатывать эти самые утилиты и загружать их на SparrowHub для повторного использования кем-либо.


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

Вышла версия 1.5 Perl плагина для IntelliJ IDEA

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


Вышел знаковый для меня релиз плагина. Год назад я начал работу над ним и иногда не верится что все это было сделано. В репозиторий прошло более двух тысяч коммитов.

Данная версия привносит поддержку POD, хелперов для Mojolicious, контекстную подсказку и много приятных мелочей.
Читать дальше →

SparrowHub — репозиторий готовых утилит для системного администрирования

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

SparrowHub — проект, целью которого является распространение различных готовых решений для задач системного администрирования и не только.


Несмотря на то, что существует масса решений по автоматизации задач системного администрирования, определенная ниша в этой области все же остается незанятой. Что мы делаем, когда хотим решить какую-то специфическую задачу? Например, проверить логи нашего ssh сервиса на наличие неудачных попыток логинов с целью позаботиться о секьюрности наших серверов? — Берем и пишем однострочник, состоящий из bash команд вида grep, sed, awk и так далее, ну, или можем написать скрипт на Perl. Отлично, все работает. Eсть решение, которое устраивает нас. И мы пользуемся им. Вопрос в том, как мы хотим сохранить результаты наших трудов, что бы поделиться ими с другими или же когда пройдет время снова воспользоваться придуманным решением. Вот тут и возникает проблема.

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

Быстрый анализ транзитного трафика

Время на прочтение4 мин
Количество просмотров18K
Перед любым системным администратором рано или поздно возникает задача количественного анализа трафика (откуда / куда, по каким протоколам / портам, в каких объемах и т. п.), проходящего по его сети. Особенно неприятно, когда эта задача возникает спонтанно, как побочный результат DDoS-а, а денег на серьезные решения от Cisco или Arbor, как обычно, нет. И хорошо еще, если шлюзом для сети выступает сервер, на котором можно запустить tcpdump или wireshark, но что делать если:

  • шлюзом выступает устройство провайдера, а в сети есть только файл-сервер;
  • данные о трафике нужны не постоянно, а от времени к времени;
  • устройство не поддерживает возможность запуска на нем сторонних программ;
  • трафика столько, что сервер после запуска tcpdump-а «клеит ласты»;
  • или наоборот, настолько мало, что его уровень сравним с долей (хотя и значительной) обычного трафика?
Читать дальше →

Погоня с препятствиями

Время на прочтение26 мин
Количество просмотров9K
 
           Какая медлительная страна! — сказала Королева. — Ну, а здесь,
знаешь ли, приходится бежать со всех ног, чтобы только остаться
на том же месте! Если же хочешь попасть в другое место, тогда
нужно бежать по меньшей мере вдвое быстрее! 
 
                        Льюис Кэрролл "Алиса в Зазеркалье


Сегодня, я хочу рассказать об удивительной и недооценённой игре, с которой я познакомился чуть менее двух лет назад. В каком-то смысле, именно с этой игры, а также с Ура, началось моё знакомство с Дмитрием Скирюком. В те дни я только начинал интересоваться настольными играми. Мои познания были скудны и, во многом, наивны. Такие игры как "Чейз", буквально открыли для меня новый необъятный мир. Даже сейчас, работа над этой игрой, в большой степени, напоминает детективную историю. В этом отношении, игра "Chase" полностью оправдала как своё название так и сходство с псевдонимом известного американского писателя.
Читать дальше →

Вышла версия 1.4 Perl плагина для IntelliJ IDEA

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


Новая версия Perl плагина для продуктов JetBrains стала доступна для скачивания из официального репозитория. Главные фичи: оптимизация и поддержка HTML::Mason.

А теперь, немного подробнее:
Читать дальше →

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