Обновить
1.5

Perl *

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

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

Аудит актуальных уязвимостей без регистрации и смс

Время на прочтение8 мин
Охват и читатели10K

Вступление


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

В этом топике я расскажу о том, как мы решили эту проблему. И да, Perl* жив :)
Читать дальше →

Функциональное программирование на Perl в примерах

Время на прочтение15 мин
Охват и читатели11K

В данной статье будет рассмотрено функциональное программирование на примере скрипта поиска битых ссылок с использованием AnyEvent::HTTP. Будут рассмотрены следующие темы:


  • анонимные подпрограммы;
  • замыкания (closures);
  • функции обратного вызова (callbacks);
Читать дальше →

Разработка и тестирование chef кукбуков с помощью инструмента Sparrowdo v2

Время на прочтение5 мин
Охват и читатели3.1K

Здравствуйте! Об инструменте sparrowdo и его применение в разработке сценариев конфигурации chef я писал уже ранее.


Что ж, за это время утекло много воды и я хотел снова немного раскрыть данную тему, собственно поэтому заголовок статьи содержит версию два.


Итак — sparrowdo — система управления конфигурациями написанная на замечательном языке Perl6, активно развивающимся в последнее время. В своей лично работе я нахожу sparrowdo очень удобным и органично сосуществующим с более мощной платформой управления конфигурация — opscode chef. На нескольких конкретных примерах я покажу как я использую chef вместе со sparrowdo. Это пост не будет очень длинным, но надеюсь даст понимание о чем идет речь.

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

Отказоустойчивая обработка 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 мин
Охват и читатели3K


В статье приведена спецификация модуля 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 мин
Охват и читатели78K
image

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

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

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

Время на прочтение12 мин
Охват и читатели39K


Язык программирования 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.7K


В субботу 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.8K

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


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

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

Время на прочтение2 мин
Охват и читатели6K


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

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

Время на прочтение7 мин
Охват и читатели3.4K

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


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


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

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

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


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

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

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

Время на прочтение5 мин
Охват и читатели12K

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


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

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

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