Понедельник, 28 ноября

Мини-портал Perl на Opennet: Выпуск Rakudo Star 2016.11, дистрибутива Perl 6

Доступен релиз пакета Rakudo Star 2016.11, включающего компилятор Rakudo, виртуальную машину MoarVM, документацию, модули и инструменты, необходимые для разработки на языке Perl 6. Компилятор соответствует спецификации Perl v6.c, за исключением поддержки расширенных макросов, неблокирующего ввода/вывода и ряда мелких особенностей, которые планируется довести до рабочего состояния в будущих выпусках. В качестве виртуальной машины для исполнения байткода предлагается MoarVM, которая проходит все тесты (альтернативный бэкенд на базе JVM пока не обладает всей необходимой функциональностью).

Среда, 16 ноября

Хабрахабр: Метки / perl: [Перевод] Ваш язык программирования — отстой

1 Почему JavaScript отстой
• 1.1 Плохая конструкция
• 1.2 Система типов
• 1.3 Плохие функции
• 1.4 Отсутствующие функции
• 1.5 DOM
2 Почему Lua отстой
3 Почему PHP отстой
• 3.1 Исправлено в поддерживаемых в настоящее время версиях
4 Почему Perl 5 отстой
5 Почему Python отстой
• 5.1 Исправлено в Python 3
6 Почему Ruby отстой
7 Почему Flex/ActionScript отстой
8 Почему скриптовые языки отстой
9 Почему C отстой
10 Почему C++ отстой
11 Почему .NET отстой
12 Почему C# отстой
13 Почему VB.NET отстой
15 Почему Objective-C отстой
16 Почему Java отстой
• 16.1 Синтаксис
• 16.2 Исправлено в Java 7 (2011)
• 16.3 Модель
• 16.4 Библиотека
• 16.5 Обсуждение
17 Почему Backbase отстой
18 Почему XML отстой
19 Почему отстой XSLT/XPath
20 Почему CSS отстой
• 20.1 Исправлено в CSS3
21 Почему Scala отстой
22 Почему Haskell отстой
23 Почему Closure отстой
24 Почему Go отстой
• 24.1 Базовые средства программирования (базовый язык)
• 24.2 Взаимосовместимость
• 24.3 Стандартная библиотека
• 24.4 Набор инструментальных средств
• 24.5 Сообщество
25 Почему Rust отстой
• 25.1 Безопасность
• 25.2 Синтаксис
• 25.3 Конструкция API и система типов
• 25.4 Сообщество
• 25.5 Набор инструментальных средств

Почему JavaScript отстой


Учтите, что некоторые положения относятся не к самому JavaScript, а к программным интерфейсам веб-приложений (https://developer.mozilla.org/en/docs/Web/API).

Плохая конструкция

• Каждый скрипт исполняется в едином глобальном пространстве имён, доступ в которое возможен в браузерах с оконным объектом.
• Camel-регистр никуда не годится:

XMLHttpRequest
HTMLHRElement

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

what_me: Многопоточная качалка на Perl

в FB ленте увидел пост zamotivator про то, как он делал своё же тестовое задание - многопоточный загрузчик. Я такие штучки люблю, и сделал свой https://github.com/onokhov/crawler/blob/master/crawler.pl. Естественно на Perl.

Для этой задачки было бы достаточно параллельных коннектов, сделанных с AnyEvent::HTTP. Но параллельность там не совсем настоящая, потому как читать ответы, парсить их и записывать в файлы всё равно пришлось бы в один поток. Да и скучно было бы писать программу, основная часть которой уже написана в мануале по AnyEvent. Поэтому я решил реализовать параллельность форками.

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

Скрипту аргументами даётся адрес, который надо закачать, и, опционально, на сколько потоков вести закачку и куда складывать загруженные файлы. Скачиваются только текстовые документы и только с одного сайта. Ссылки заменяются на относительные, поэтому по загруженным файлам можно передвигаться в браузере в оффлайне.

Скрипт ни в коей мере не предназначен для замены wget, это просто программистская разминка.

Пятница, 11 ноября

Сообщество ru_perl в LiveJournal: Форматирование ячеек в таблицах Google

Стоит задача из скрипта Perl сохранять информацию в таблицах Гугла. При этом в зависимости от значений одной из колонок надо изменять фоновый цвет строки.
Я нашел только один работающий модуль для работы с Гугл АПИ - Net::Google::Spreadsheets. Но он позволяет работать только с данными.

Знает ли кто-либо способ, как не только менять данные, но и форматировать их, в частности, менять фоновый цвет?

Четверг, 10 ноября

Pilat66 blog: Kaitai Struct — Парсер бинарных форматов

Kaitai Struct

A new way to develop parsers for binary structures.

Поддерживает генерацию кода на языках:

C++/STL C# Java JavaScript Perl PHP Python Ruby Пример генерации кода Описание формата meta: id: dos_mz file-extension: exe endian: le seq: - id: mz_header type: mz_header - id: mz_header2 size: mz_header.relocations_ofs - 0x1c - id: relocations type: relocation [...]

Среда, 9 ноября

Чтобы не искать: Установка перл-модулей из гит-репозиториев. Всё плохо


В проекте на работе используется куча гит-репозиториев с перл-модулями. Все их нужно собрать вместе, установить и протестировать. Мучаюсь с утилитой, которая сможет это сделать.

- Стандартный cpan не умеет брать модули из репозитория.
- Продвинутый cpanm умеет, но только вручную. Из Makefile.PL или cpanfile читать не умеет.
- carton, как надстройка над cpanm, умеет то же, что и cpanm. Т.е. не умеет.
- cpm умеет читать cpanfile, но только при запуске непосредственно в корне устанавливаемого модуля. Рекурсивно по зависимостям дальше не идёт.

Беда-печаль...

Среда, 2 ноября

Меркантильный гуру: Mojolicious

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

Понедельник, 31 октября

Shoor/нал: Четверть гигабайта

Чего только нет в редакторе Komodo Edit! По сравнению с могучей Komodo IDE нет отладчика, нет профилировщика, нет модульного тестирования, нет интерфейса к системам контроля версий... А весит всё равно дофига!

Komodo Edit

Установочный архив весит четверть гигабайта, потому что внутрь засунули файрфокс, питон и яваскрипт.

http://shoorick.ru/2016/10/31/quarter-of-gigabyte/

Пятница, 28 октября

Мини-портал Perl на Opennet: Выпуск mod_perl 2.0.10

Доступна новая версия Apache-модуля mod_perl 2.0.10. Mod_perl позволяет интегрировать интерпретатор Perl в http-сервер Apache и увеличить скорость выполнения динамического контента на Perl за счёт кэширования его байткода, а также обеспечить низкоуровневый доступ perl-скриптов ко внутренностям Apache, в том числе даёт возможность создавать модули на языке Perl, управлять конфигурацией, обрабатывать все стадии прохождения запроса. В новой версии обеспечена совместимость с Perl 5.22, реализован автоматический выбор необходимых сборочных опций при использовании gcc 5 и clang, решены проблемы со сборкой в macOS/Darwin.

Понедельник, 24 октября

Мини-портал Perl на Opennet: Выпуск Rakudo Star 2016.10, дистрибутива Perl 6

Состоялся релиз пакета Rakudo Star 2016.10, включающего компилятор Rakudo, виртуальную машину MoarVM, документацию, модули и инструменты, необходимые для разработки на языке Perl 6. Компилятор соответствует спецификации Perl v6.c, за исключением поддержки расширенных макросов, неблокирующего ввода/вывода и ряда мелких особенностей, которые планируется довести до рабочего состояния в будущих выпусках. В качестве виртуальной машины для исполнения байткода предлагается MoarVM, которая проходит все необходимые тесты (альтернативный бэкенд на базе JVM пока не обладает всей необходимой функциональностью).

Среда, 19 октября

Хабрахабр: Метки / perl: Разработка и тестирование chef кукбуков с помощью инструмента Sparrowdo

Здравствуйте! О разработке chef кукбуков и связанной с ней инфраструктурой написано немало, да и инструментов в этой области существует уже предостаточно. Среди них можно перечислить такие решения как vagrant, test kitchen, food critic, chef spec, minitest-chef-handler, serverspec, inspec. Все они, в той или иной степени упрощают и ускоряют промышленную разработку и тестирование chef кукбуков и настраиваемой ими инфраструктуры.


Если данная область близка для вас и вы так же имеет некоторое отношение к языку Perl ( точнее к Perl6 ) — то добро пожаловать в топик.


Итак, сегодня я расскажу как я использую Sparrowdo при разработке и тестировании chef кукбуков.


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

Вторник, 18 октября

Shoor/нал: Statt zu schlafen

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

Могу:


  • Программировать на Перле — как древние CGI-приложения, так и современные, с использованием фреймворков Mojolicious, Dancer, Catalyst.

  • Программировать на PHP: в основном допиливать существующие приложения, а не писать с нуля что-то большое.

  • Настраивать CMS Drupal и WordPress, а также дорабатывать их темы оформления.

  • Настраивать и дорабатывать Open Journal Systems, включая реализацию многоязычности имён — делал это в OJS 2.4.2, 2.4.7.1, 2.4.8.1, думаю, и в Open Conference Systems смогу реализовать.

  • Кроссбраузерно верстать веб-страницы.

  • Немножко программировать на Руби (в том числе, с использованием Ruby on Rails) — наверное, на юниорском уровне.

  • Немножко программировать на ЯваСкрипте — как голый JavaScript, так и с jQuery.

  • Постоянно внушать коллегам необходимость использования багтрекера и системы контроля версий.

  • (хоть и не считаю это основными профессиональными навыками) фотографировать, петь, аккомпанировать на шестиструнной гитаре, водить легковой автомобиль, быть Дедом Морозом, набирать ноты в MuseScore и LilyPond — медленно, но красиво.


1000 рублей

Хочу от 15 USD / 1 kRUB в час.




Statt zu schlafen (нем.) — вместо того, чтобы спать

http://shoorick.ru/2016/10/18/statt-zu-schlafen/

Четверг, 6 октября

XPoint.ru | Программирование::Perl::Windows аспекты: почему не появляется описание установленных модулей под AcnivePerl 5.24 под Windows 10 ?

почему не появляется описание установленных модулей под AcnivePerl 5.24 под Windows 10 ?

Довольно давно я не раз ставил Апача, Перл, ПХП, мускул на Windows XP — все работало идеально, повторяя работу реальных сайтов на разных 'nix'ах... Это было довольно удобно.

Сегодня я не делаю сайтов и пользуюсь только перлом. Недавно поставил AcnivePerl 5.24 для Windows 10 — Перл работает идеально, срабатывают и модули, которые входят в комплект поставки.

Но мне понадобилось несколько дополнительных модулей, которые я обнаружил в директории по умолчанию для ppm AcnivePerl http://search.cpan.org/dist/
Я установил эти модули

App-Exifpic
Data-Hexify
Image-EXIF
Image-EXIF-DateTime-Parser
Image-ExifTool

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

Модули почему-то установились в директории C:\usr\site, хотя сам перл установлен C:\usr\bin\perl.exe
При этом в PPM имеется столбец Area Для всех модулей, установленных вместе вместе с базовой поставкой, столбец Area имеет значение perl, а для вновь установленных модулей это значение site (то есть site написано в столбце Area)

В директории C:\usr\site образовались копии диреторий

bin
etc
lib

В этих копиях и установлены новые модули

Мне непонятно, почему нет описания установленных модулей. Почему эти модули встают в какую-то новую директорию?

Я пытался как-то использовать «установленные» модули, не получается. С чем связана такая странность? Модули, установленные с помощью PPM, всегда работали...

Суббота, 1 октября

XPoint.ru | Программирование::Perl::Основы: Изменение даты файла с помощью Perl

Изменение даты файла с помощью Perl. Точнее, желательно даже изменять Date Taken в файле фотографии с помощью Актив перл Windows 10. Но сойдет и просто изменение даты.

Я давно уже не пишу программ для Perl, и не был ведущим программистом в прошлом. Но для бытовых целей перлом пользуюсь, язык весьма удобный, сделать может, кажется все, что угодно...

Бытовая задача. Вдвоем с товарищем мы были за границей и сняли, как обычно, больше 3000 фотографий каждый. Но я переставил часы в своем аппарате - и на час ошибся. Товарищ вовсе не переставил часы. Мы часто снимали друг друга, наших подруг и пр. Желательно было бы синхронизировать фотографии по времени, чтобы как-то в них разобраться...

Есть ли способ менять дату файла, прибавляя к полю даты-времени одинаковое время (или вычитать, понятно)? Конечно, желательно было бы изменить Date Taken, но, полагаю, это едва ли возможно. Можно писать и любую другую дату, а читать можно просто Date в Windows 10 — это, вероятно дата создания, и она совпадает с Date Taken.

Существует ли модуль, предназначенный для решения подобных задач?

Пятница, 30 сентября

Чтобы не искать: Модуль Perl Data::Printer

У меня на работе в проекте используются текстовые файлы, внутри которых используются некоторые специфические непечатаемые (non-printable) символы. В процессе разработки нужно иметь возможность видеть, что именно находитcя в файле.

Для показа таких символов я использую модуль Data::Printer. Вообще, этот модуль очень много всякого умеет, но сейчас меня интересует именно показ непечатаемых символов.

К сожалению, меня не устраивает то, как модуль выводит мои символы. Сейчас у него есть только один режим вывода - шестнадцатиричная эскейп-последовательность вида \x{XX}. Ну оке, ладно, есть еще один режим - символьная эскейп последовательность вида \X, но все мои специфические символы не попадают под символьные последовательности и могут быть показаны только как шестнадцатиричные. А это крайне неудобно.

К примеру, в файле есть запись из трех слов, разделенных символом RS (из диапазона С0 Controls). Отображаться такая запись будет так:

"one\x{1e}two\x{1e}three\x{1e}"

Некрасиво. Нечитабельно.

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

Вот ветка на Гитхабе.

Сейчас уже можно указать пять диапазонов -
C0 Controls and Basic Latin, C1 Controls and Latin-1 Supplement и Multibyte (это всё, что выше FF). Для каждого диапазона можно указать три способа эскейпинга - hex (шестнадцатиричная эскейп-последовательность), char (символьная эскейп последовательность) и самоё клёвое - picture (специальная иконка).

Вот как будет выглядеть упоминавшая выше запись при эскейпинге в picture:

"
onetwothree"

Красиво. Наглядно. Но главное - занимает одно знакоместо, а это значит, что строки разной длины не будут разъезжаться непонятным образом.

В принципе, оно уже работает. Но надо еще описать это в документации. На басурманском:)

Среда, 28 сентября

Хабрахабр: Метки / perl: Персона. Создатель Perl Ларри Уолл — «великодушный пожизненный диктатор»



Сегодня на «Хабре» уже был пост, посвященный дню рождения создателя языка Perl. Здесь хотелось бы подробнее поговорить о биографии и взглядах Ларри Уолла, о его мотивации к созданию языка программирования, а также привести несколько фрагментов из недавнего интервью.

Ларри Уолл – американский программист, лингвист и создатель языка программирования Perl, один из лидеров движения за бесплатный доступ к программному обеспечению. Читать дальше →

Вторник, 27 сентября

Shoor/нал: Косые чёрточки

Перловый программист, пользующийся заодно седом и вимом, видит логотип «Дождя»:

до///дь

— Регэксп, — думает программист.

Надо больше отдыхать.

http://shoorick.ru/2016/09/27/slashes/

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

«Мне кажется, я иногда вижу сны на 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), а еще он двукратный мировой чемпион по запутанному коду на С.
Читать дальше →

Среда, 21 сентября

Чтобы не искать: Опции для perltidy

Всё время забываю, как делаю в разных проектах, надо записать для единообразия:

-pbp  -nola -l=0 -conv

Где:

-pbp — Форматировать по PBP
-nola — Не делать "выступ" для МЕТОК:
-l=0 — Не ломать строки по длине (длина строки 0 = бесконечность)
-conv — делать сразу финальный результат (повторный запуск ничего не изменит)

Подробности в документации.

Пятница, 9 сентября

Shoor/нал: Тестирование для комода

В перловых приложениях, написанных с импользованием фреймворка Mojolicious, лежащие в каталоге t тесты запустить достаточно просто — одна из доступных «из коробки» команд приложения — как раз test, которая без дополнительных параметров запускает все имеющиеся тесты:

$ ./app-name.pl test
[Fri Sep  9 13:21:06 2016] [debug] Some message
Running tests from "/path/to/t".
/path/to/t/1868-prev-next.t .. ok     
/path/to/t/1869-design.t ..... ok     
...
All tests successful.
Files=8, Tests=171,  5 wallclock secs ( 0.08 usr  0.01 sys +  3.76 cusr  0.28 csys =  4.13 CPU)
Result: PASS

Для упрощения процесса я обычно создаю Makefile, в котором пишу
SCRIPT=info.pl
APP=perl $(SCRIPT)

test: $(SCRIPT) $(APP) test


и всё, в общем-то, прекрасно работает — тесты запускаются привычной командой make test.

Недавно поставил себе свежую ActiveState Komodo IDE и, пока испытательный срок не кончился, пробую всякие её возможности, среди которых есть и тестирование. Выяснилось, что Komodo пытается найти Makefile и запустить тесты через него, но понять результаты оно не может и выводит перед каждой строкой сообщение **** Unrecognized input

Тестирование в Komodo IDE не может распознать вывод

Можно запускать тесты по-другому — командой prove — она выдаёт похожий результат:
$ prove -l
t/1868-prev-next.t .. ok     
t/1869-design.t ..... ok     
...
All tests successful.
Files=8, Tests=171,  5 wallclock secs ( 0.07 usr  0.00 sys +  3.86 cusr  0.23 csys =  4.16 CPU)
Result: PASS

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

Успешное тестирование в Komodo IDE

http://shoorick.ru/2016/09/09/testing-with-komodo-ide/

Воскресенье, 4 сентября

XPoint.ru | Программирование::Perl::Основы: Сортировка данных по двум параметрам

Всем доброго времени суток. Занимаюсь программой для подсчета времени. Встретился с задачей сортировки данных в программе, сортировка никак не запускается:
Имеется файл входных данных:

1000001 77.847
1000004 79.914
1234568 89.656
1000001 212.843
1234568 225.265
1000004 234.535

на выходе хотелось бы увидеть:

  1. 1000001 134.996
  2. 1234568 135.609
  3. 1000004 155.621

значения в списке сортируются по меньшему времени и по наименьшему количеству кругов. Сортировка никак не хочет запускаться.
[code]
#!perl
 
use strict;
use warnings;
 
open(my $in, "<:encoding(UTF-16)", "INPUT.TXT") || die("Error open INPUT.TXT\n");

# хеш фамилий спортсменов
#my %sportsmans = (
# '1000001' => 'Иванов',
# '1000004' => 'Петров',
# '1234568' => 'Зингельшухер');

my %sportsmans ; # объ¤вл¤ю хеш массив
open(my $Nam, "<:encoding(cp1252)", "NAMES.txt") || die("Error open NAMES.TXT\n"); #открываю файл с именами
while (my $line = <$Nam>) { #запускаю чтение по строкам файла
$line =~ /(\d+).(.+?) \s* $/x; #вытаскиваю с помощью рег.выраж. первое и второе слово из файла и пишу его в $id и $name
my $id = $1;
my $name = $2;
$sportsmans{$id} = $name; # организую запись в ассоциативный массив
}
close ($Nam);

        
# хеш результатов
my %rezults;
 
while(my $instr = <$in>) {
    if ($instr =~ /\@/) {
        my $str = $instr;
        chop $str; chop $str;
        $str =~ m/@\s+(\S.*\S\t?)$/;
        my $temp_str = $1;
        
for (0..1) {
            $str = <$in>;
            chop $str; chop $str;
            $str =~ m/\] (.*)$/;
            $temp_str .= $1;
            }
        
$temp_str =~ m/(\d+)\t(\d+\.\d+)/;
        unless (exists($rezults{$1})) {
            $rezults{$1} = []; # если ранее этот спортсмен не встречалс¤ - создаЄм ссылку на пустой массив при значении кеша спорстменов с ключЄм $1
            }
        push @{$rezults{$1}}, $2; # добавл¤ем результат в конец массива
        }
    }
 
open(my $out, ">", "OUTPUT1.TXT") || die("Error open OUTPUT1.TXT\n");
# ¬ыводим результаты
foreach my $nomer_fio (sort(keys(%sportsmans))){
    showResult(\%sportsmans, \%rezults, $nomer_fio);
    }
close($out);
close($in);
 
# функци¤ вывода результатов конкретного спортсмена
sub showResult {
    my ($names, $rez, $name) = @_;
    my $previousTime = 0; # врем¤ предыдущего круга
    my $ring = 1; # номер круга
    print $out "–езультаты спортсмена $names->{$name}\n\n";
    print $out " руг\tќбщее врем¤\t¬рем¤ круга\n";
            
#my $counter = 0;
    foreach my $currTime (@{$rez->{$name}}) {
   #my @list = @{$rez->{$name}};
   my $delta = sprintf "%.3f", $currTime - $previousTime;
   #print $out $list[-1] - $list[-2];
   print $out "$ring\t$currTime\t$delta\n\n";
        $ring++;
        $previousTime = $currTime;
   }
    print $out "\n\n\n";
    }
[/code]

Вторник, 30 августа

Хабрахабр: Метки / perl: Лекции Техносферы. Программирование на Perl (осень 2015)



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

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

Хабрахабр: Метки / perl: Гейзенбаг, или как Луна портит код

Луна убывает, такое бывает… ©Земфира

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

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 файле.

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

Среда, 24 августа

Блог программиста — Perl, Ruby, C#: Catalyst, Sphinx и realtime индекс

Как создать realtime индекс Sphinx. Использование realtime индексов в Catalyst-приложении. Эксперименты проводились на Sphinx версий 2.2.10 и 2.0.4. Продолжаем развивать код из первой заметки про Sphinx. Возьмем его за основу и добавим в Catalyst использование realtime индекса. Конфигурация Sphinx и Catalyst-приложения для создания realtime индекса В данном случае, для коннекта мы будем использовать не Sphinx::Search,… Read More »

Понедельник, 22 августа

Блог программиста — Perl, Ruby, C#: Sphinx и Catalyst

Как реализовать поиск помощью Sphinx в Catalyst-приложении. Как создать приложение Catalyst, конфиги для Sphinx. Приложение создавалось на Ubuntu 14.04, perl 5.18, Sphinx версии 2.2.10, модуль Sphinx::Search 0.29. Sphinx от версии к версии меняет функциональность и принципы работы, иногда очень значительно. Модуль Sphinx::Search тоже. Поэтому, не факт, что приведенный ниже код будет работать и у вас… Read More »

Пятница, 29 июля

Хабрахабр: Метки / perl: Запуск сценариев автоматизации sparrow на удаленных серверах с помощью инструменатрия SparrowDO/SparrowUP

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


До недавнего времени запуск подобных сценариев был ограничен консольным клиентом ( sparrow или sparrowdo ), сегодня я бы хотел презентовать пилотный проект по автоматической установке и запуску sparrow сценариев на удаленных серверах посредством централизованного web сервиса — SparrowUP.


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

Суббота, 23 июля

Мини-портал Perl на Opennet: Выпуск Rakudo Star 2016.07, дистрибутива Perl 6

Представлен релиз пакета Rakudo Star 2016.07, включающего компилятор Rakudo, виртуальную машину MoarVM, документацию, модули и инструменты, необходимые для разработки на языке Perl 6. Компилятор соответствует спецификации Perl v6.c, за исключением поддержки расширенных макросов, неблокирующего ввода/вывода и ряда мелких особенностей, которые планируется довести до рабочего состояния в будущих выпусках. В качестве виртуальной машины для исполнения байткода предлагается MoarVM, которая проходит все необходимые тесты (альтернативный бэкенд на базе JVM пока не обладает всей необходимой функциональностью).

Понедельник, 11 июля

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



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

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

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


Ларри Уолл

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

Четверг, 7 июля

Хабрахабр: Метки / perl: Sparrowdo — простой инструмент управления конфигурациями

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


image image


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

Пятница, 24 июня

Shoor/нал: Затягивает

Вроде, недавно только поменял процесс подпиливания ильменского сайта — там теперь TDD — а уже каким-то образом 220 тестов написал. Хотя файлов, конечно, сильно меньше :-)

All tests successful.
Files=11, Tests=220, 14 wallclock secs ( 0.12 usr  0.02 sys +  9.66 cusr  0.64 csys = 10.44 CPU)
Result: PASS

Хотя тесты сразу надо было начинать писать, с момента начала переписывания тринадцать месяцев назад.

http://shoorick.ru/2016/06/24/involve/

Четверг, 23 июня

Хабрахабр: Метки / perl: Приглашаем на YAPC::Russia 2016



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

Среда, 22 июня

Мини-портал Perl на Opennet: 25 июня состоится конференция по языку Perl - YAPC::Russia 2016

В эту субботу (25 июня) пройдет всероссийская конференция по языку Perl - YAPC::Russia 2016.

Вторник, 7 июня

Pilat66 blog: Блокировка выполнения скрипта

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

lockfile

Типовое использование:

#!/bin/bash lockfile -r 0 /tmp/the.lock || exit 1 # Что-то тут делаем, что [...]

Четверг, 26 мая

Мини-портал Perl на Opennet: Вторая версия плагина с поддержкой языка Perl для IntelliJ IDEA

Доступна для загрузки вторая версия плагина с поддержкой разработки на языке Perl для IDE от JetBrains. В новой версии появилась последняя из крупных запланированных возможностей - отладчик. Основные особенности отладчика.

Понедельник, 23 мая

PerlNews.Ru: Конференция YAPC::Russia 2016 пройдёт 25 июня в Москве

Анонсирована очередная ежегодная конференция YAPC::Russia. В этом году мероприятие пройдёт 25 июня в Москве в офисе Mail.Ru Group. Участие в конференции бесплатное, но необходимо зарегистрироваться.

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

Также, как и в прошлом году, организаторы обещают прямую видеотрансляцию докладов.

Темы: YAPC

Суббота, 21 мая

XPoint.ru | Программирование::Perl::Модули: Как использовать Inline::CPP ?

Разве достаточно ли в одну папку со скриптом Sproba3.pl поместить папку Inline-CPP-master?? Вижу что нет.
Я не вполне пойму суть всего и конкретные методы. Может кто-то рассказать и.или показать?

Sproba3.pl

use Modern::Perl;
use Inline 'CPP' => "./calc.cpp";

say calc($ARGV[0]);

Четверг, 12 мая

PerlNews.Ru: Perl 5.24 стал быстрее

Одним из улучшений в Perl 5.24 стало ускорение арифметических операций. Начиная с Perl 5.8.0, когда появилась поддержка 64-битных целых, скорость арифметических операций снизилась из-за необходимости проверки различных граничных условий. Теперь же проверяется общий случай, что снимает необходимость проверки всех частных случаев, что в целом оптимизирует производительность.

Синан Унур в своей статье продемонстрировал, что эта оптимизация даёт выигрыш в 30% по сравнению с Perl 5.20.2 в бенчмарке nbody, который использует большое число арифметических операций. Благодаря этому Perl 5.24 обогнал Python 3 в данном тесте.

Темы: Perl benchmark

Вторник, 10 мая

Мини-портал Perl на Opennet: Релиз языка программирования Perl 5.24.0

После года разработки состоялся релиз новой стабильной ветки языка программирования Perl - 5.24. При подготовке нового выпуска было изменено около 360 тыс. строк кода, изменения затронули 1800 файлов, в разработке приняли участие 77 разработчиков.

Понедельник, 9 мая

PerlNews.Ru: Выпущен Perl 5.24.0

9 мая 2016 года была выпущена новая стабильная версия языка программирования Perl 5.24.0. Разработка велась примерно 11 месяцев, начиная с Perl 5.22.0, и содержит примерно 360 000 изменённых строк среди 1800 файлов от 77 авторов.

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

Темы: Perl

Пятница, 6 мая

PerlNews.Ru: Coro в Perl 5.24

В тот момент, когда перед выпуском Perl 5.24 остались считанные дни, в рассылке perl5-porters внезапно вспомнили, что в новом Perl по-прежнему остаётся сломанным модуль Coro Марка Леманна. Одна из проблем была связана с тем, что в Perl 5.22 структура MGVTBL (магическая виртуальная таблица), формирующаяся во время компиляции perl, стала константной. Coro делал переопределение в таблице, поэтому и не мог работать с новым Perl 5.22. Было предложено откатить это изменение до выхода Perl 5.24.

Вносить подобные изменения в последние дни перед выпуском слишком рискованно, поэтому произошёл спонтанный мозговой штурм проблемы, в результате которого удалось выяснить очень много интересных деталей. Оказалось, что переопределение MGVTBL требовалось Coro только для того, чтобы переопределить работу с хендлерами сигналов __DIE__ и __WARN__ для магического хеша %SIG, что в свою очередь было сделано из-за бага Perl, когда присутствует рассинхронизация в PL_warnhook и $SIG{__WARN__}. Теоретически оба должны ссылаться на хендлер обработки предупреждений, но некоторые кривые XS-программы, в том числе входящие в базовый Perl (например, find в PerlIO::Layer), могут изменить только PL_warnhook, забыв про $SIG{__WARN__}. То есть это был банальный костыль в Coro для обхода реальной проблемы в Perl. Эта проблема была зафиксирована в баге #125349,

Более того, оказалось, что Coro можно было приспособить для работы с константной MGVTBL, Dave Mitchell и Father Chrysostomos продемонстрировали патч, который позволяет Coro работать без проблем на Perl 5.22.

Очевидно, что если бы этот мозговой штурм прошёл год назад, проблема была бы решена раньше и не возникло бы таких явлений как stableperl. Вероятно штурм бы и не потребовался, если бы Марк сообщил о проблеме в Perl, когда столкнулся с ней впервые.

Темы: perl bug Coro

Четверг, 5 мая

Сообщество ru_perl в LiveJournal: Моджо сдох

Внезапно с утра обнаружил что помер проект на моджо, рестарт приложения и рестарт nginx не помогло. Снёс nginx, установил заново, воткнул простейшие настройки для моджо проекта:

upstream myapp {
server 91.136.234.5:3002;
}
server {
server_name domen.ru www.domen.ru;
listen 80;
charset UTF8;
index index.html;
root /var/www/domen/public;

location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
root /var/www/domen/public;
expires 14d;
}
location / {
proxy_pass http://myapp;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto "http";
}
}


обновил моджо:

# mojo version
CORE
Perl (v5.18.2, linux)
Mojolicious (6.61, Clinking Beer Mugs)

OPTIONAL
EV 4.0+ (4.22)
IO::Socket::Socks 0.64+ (0.68)
IO::Socket::SSL 1.94+ (1.965)
Net::DNS::Native 0.15+ (0.15)

This version is up to date, have fun!

перезалил проект, назначил права доступа, запустил проект:

su user, cd /var/www/domen, hypnotoad script/myapp,

получаю: 504 Gateway Time-out.

Проект висит в процессах и слушает порт, смотрю так: netstat -tupnl.

tcp 0 0 91.136.234.5:3002 0.0.0.0:* LISTEN 1459/myapp

Прописалл в iptables:

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3000:3050 -j ACCEPT

это помимо того что уже есть правило для 3002 порта,


Что это может быть? Может что-то уже поменялось в фреймворке, пока я картоху сажал? )))

Среда, 27 апреля

Мини-портал Perl на Opennet: Выпуск Rakudo Star 2016.04, дистрибутива Perl 6

Состоялся релиз пакета Rakudo Star 2016.04, включающего компилятор Rakudo, виртуальную машину MoarVM, документацию, модули и инструменты, необходимые для разработки на языке Perl 6. Это второй выпуск после объявления релиза языка программирования Perl 6. Компилятор соответствует спецификации Perl v6.c, за исключением поддержки расширенных макросов, неблокирующего ввода/вывода и ряда мелких особенностей, которые планируется довести до рабочего состояния в будущих выпусках. В качестве виртуальной машины для исполнения байткода предлагается MoarVM, которая проходит все необходимые тесты.

Воскресенье, 24 апреля

PerlNews.Ru: Sawyer X новый pumpking Perl

Рикардо Сигнес сообщил, что новым добровольцем, вызвавшимся быть ответственным за релизы Perl, стал Sawyer X, известный в сообществе израильский Perl-программист.

Рикардо заметил, что предыдущий pumpking Джес Винсент сопровождал Perl два года, сам Рикардо — четыре (два в квадрате), следовательно Сойеру предстоит по меньшей мере 4² = 16 лет увлекательной работы.

В рассылке perl5 porters началось обсуждение новости. Уже предрекают появление Dancer в базовом Perl, вместо ушедшего оттуда модуля CGI.

Темы: community

PerlNews.Ru: Рикардо Сигнес получил серебряного верблюда

silver camel

На проходящем Perl QA Хакатоне в английском городе Рагби Рикардо Сигнес получил довольно уникальную награду: серебряный верблюд. Это первое публичное Perl-мероприятие, которое посетил Рик после анонса, что Perl 5.24.0 станет его последним релизом. Награда стала данью признания выдающихся заслуг Рикардо Сигнеса в его работе над выпусками Perl на протяжении последних пяти лет.

Награда «серебряный верблюд» появилась в 2014 году, когда ею впервые был удостоен Марк Китинг за его вклад в развитие Perl-сообщества в Соединённом Королевстве. Дело в том, что Марк являлся членом маркетингового комитета фонда перл и никогда бы не смог получить награду «Белый верблюд», поскольку именно фонд перла выбирает лауреатов награды и по этой причине не может выбирать никого из жюри. «Серебряный верблюд» позволил изящно обойти это ограничение.

Темы: community

Четверг, 14 апреля

PerlNews.Ru: Последний релиз Рикардо Сигнеса

Рикардо Сигнес, текущий релизер стабильных релизов Perl (pumpking), сообщил о том, что релиз v5.24.0 и одновременно выходящий релиз v5.25.0 для разработчиков, станут его последними релизами Perl.

Рикардо на протяжении последних почти 5 лет выпускал стабильные релизы Perl, начиная c 5.16.0. Он обещает по-прежнему активно участвовать в сообществе, но уже не в роли pumpking. Тема письма в perl5-porters «...and slide on the ice» является окончанием цитаты из эпизода MASH:

Ladies and gentlemen, take my advice. Pull down your pants, and slide on the ice

Maj. Sidney Freedman

что можно трактовать как, жизнь коротка, не следует всегда оставаться слишком серьёзным.

Темы: community

PerlNews.Ru: Выпущен Perl 5.24.0-RC1

Не откладывая в долгий ящик, Рикардо Сигнес выпустил первый «настоящий» релиз-кандидат новой мажорной версии Perl 5.24.0-RC1. Список изменений по сравнению с Perl 5.22.0 доступен в perldelta. Среди основных изменений можно отметить:

  • Постфиксное разыменование больше не экспериментальное, соответственно удалена поддержка авторазыменования.

  • Поддержка стандарта Юникод 8.0.

  • Удалена поддержка лексической переменной my $_.

  • Оптимизирована процедура входа и выхода в/из область видимости, что ускоряет вызов функций, циклов и блоков кода.

  • Прирост в скорости в регулярных выражениях с фиксированной строкой поиска за счёт использования соответствующей аппаратной поддержки.

  • Множество исправлений ошибок.

Темы: Perl

Понедельник, 11 апреля

PerlNews.Ru: Релиз-кандидаты Perl 5.22.2-RC1 и 5.24.0-RC0

10 апреля вышел первый релиз-кандидат Perl 5.22.2-RC1. Новый минорный релиз текущей стабильной ветки Perl 5.22 содержит только исправления ошибок безопасности: CVE-2015-8607, CVE-2015-8608, CVE-2016-2381 (подробно о них уже рассказывалось в новости о релизе Strawberry Perl), а также ошибка #RT127322, когда при создании временных файлов перед вызовом mkstemp, в Perl предварительно устанавливались биты umask 0600 (вместо 0177), что на современных Linux системах приводило к результирующему значению бит прав 0000, что не является проблемой безопасности, но на древних системах с glibc ≤ 2.06 давало результирующее значение 0066, что уже является проблемой.

Также было объявлено о создании релиз-кандидата будущей стабильной версии Perl 5.24.0-RC0. Это не совсем «настоящий» релиз, так как тарбол не был отправлен на CPAN, и собрать новый релиз можно только из исходного кода в git-репозитории. Но Рикардо Сигнес обещает выпустить настоящий RC1 уже через пару недель. Таким образом, в этом году ожидается необычно ранний релиз Perl по сравнению с предыдущими (например, 5.22.0 вышел 1 июня).

Темы: Perl

Четверг, 7 апреля

Чтобы не искать: Логотипы Metacpan и Hansa

Есть такая компания Hansa. Компания производит бытовую технику - стиральные машины, холодильники, и.т.д. На сайте они делают вид, что компания немецкая, но в Википедии написано, что компания российская.

И есть такой сайт MetaCPAN. На сайте хранятся модули для языка программирования Perl. Сайт международный, поддерживается сообществом.

А вот их логотипы:


Четыре красные точки подозрительно похожи друг на друга.

Почему у Hansa четыре красные точки? Видимо - я не знаю точно - они символизируют четыре конфорки кухонной плиты. Но они производят не только плиты, поэтому непонятно, почему в логотипе должны быть именно плита.

Почему у MetaCPAN четыре красные точки? Потому что модули в Perl именуются таким способом, через двойное двоеточие. Например - Image::JPG, Document::Text, Table::Excel.

Среда, 6 апреля

Pilat66 blog: mojolicious — переходим на версию 6

Запомнившиеся изменения в версии 6. Некоторые стали очень неожиданным сюрпризом.

6.55 2016-03-08

Fixed a bug where Morbo would restart more than once if multiple files changed at the same time. (leejo, nugged)

Теперь не будет миллиона рестартов morbo при запуске rsync

6.54 2016-03-06

Added support for named variables to Mojo::Template. Added vars attribute to [...]

Пятница, 25 марта

PerlNews.Ru: Враждебные форки

В документации Mojolicious появилось предостережение от создания форков отдельных частей проекта Mojolicious, которые не были одобрены разработчиками Mojolicious. Форки не только ведут к истощению ресурсов проекта, бренда, но также лишают его возможных баг-репортов и патчей. В качестве примеров можно привести DOM::Tiny , который является форком Mojo::DOM, или JSON::Tiny, который является форком Mojo::JSON. Например, улучшение для JSON::Tiny никто не удосужился предложить портировать обратно в Mojo::JSON, а улучшения в Mojo::JSON не попадают в форк, таким образом складывается ситуация, когда оба проекта несут потери.

Себастьян Ридель настроен серьёзно и уже поместил негативный отзыв дистрибутиву DOM-Tiny на cpanratings.

Темы: mojo fork

Мета

Поиск

Участники

Список участников в формате OPML OPML

Добавить сайт

По-другому

Приборы