Последнее в категории Не Perl

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

В статусе job-сервера такие задачи видны с «перекошенным» счетчиком:

new_feature 14 0 0

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

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

Пользоваться новой функцией крайне просто:

$ telnet localhost 4730
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
status
new_feature 14 0 0
.
rmfunc new_feature
OK
status
.

Запрос на удаление функции, для которой существует «живой» воркер, завершается с ошибкой ERR there are still connected workers.

P. S. Сейчас весь код находится в отдельной ветке.

10+

| Комментариев: 6

На основе записей в трудовой книжке.

1999, Москва

— Я программирую на Perl. Особенность в том, одно и то же действие можно записать по-разному. Это и непривычно, и немного сложно, но интересно.

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

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

2000—2010, Москва

С этого года Perl стал меня кормить. За десять лет я совершенствовал себя и свои знания в журнале «Радио», фонде научных исследований «Прагматика культуры», студии Артемия Лебедева (да-да, там я тоже делал некоторые вещи на перле), российском информационном агентстве «РИА Новости», компании Q1 и в ООО «Гностик».

2010, Амстердам

В марте я подписал контракт с компанией Booking.com — еще одним лидером интернетов, который знает толк в перле и где не стыдно работать.

Вчера двухсполовинойлетний Даниил Андреевич нарисовал вот такую штуку.

Чтобы снять неясность о том, что родитель увидел в рисунке своего ребенка, привожу рядом другую картинку — логотип с pm.org.

Про хеш

| Нет комментариев

Знаете ли вы, что у слова hash есть и другое значение? :-)

В Амстердаме, например, в сувенирных магазинах можно купить чупа-хеш.

hash

Соль минор

| Нет комментариев

Я хотел написать про одно, а напишу про другое.

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

Например, модуль GD::Chord::Piano рисует такие простые картинки:

chord.png

Интерфейс крайне прост и приятен:

use GD::Chord::Piano;
my $im = GD::Chord::Piano->new;
print $im->chord('Gm')->png;

Все, что требуется, — передать название аккорда методу chord. Этот пример скопирован из документации к модулю.

А вот другой модуль — Music::Image::Chord, который, судя по названию и описанию, должен делать нечто похожее.

Но если скопировать пример из документации, то ничего не работает:

Use of uninitialized value in division (/) at /usr/local/lib/perl5/site_perl/5.10.0/Music/Image/Chord.pm line 152.
Can't use an undefined value as a HASH reference at /usr/local/lib/perl5/site_perl/5.10.0/Music/Image/Chord.pm line 153.

Нет, можно конечно продолжить разбираться, но не хочется.

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

У разработчиков периодически возникают ситуации, когда они уверены в написанном коде и не проверяют его. Ну разве можно ошибиться, исправив один-два символа в регулярном выражении на боевом сервере? А вот можно :-) Сила опытного разработчика не в том, что он может писать код с закрытыми глазами, а в том, что он не стремается проверять себя.

В качестве офтопика можно вспомнить историю, расказанную создателем Бейсика Томасом Курцом о том, что какой-то аспирант написал компилятор PL/1 без отладки, впервые запустив его только после того, как код был полностью написан:

...he worked at Darthmouth in the computer center. He wrote a PL/1 compiler, and it's a big thing, and he checked it, and looked at it, and so on, but he never tested it, he never ran it until it was all done. You know, 20,000 or 30,000 lines of code, and the only test he did was to read it. Then he ran it and it worked the first time!

В той же книге рассказано и о том, что означат отладка для создателя C++ Бьярна Страуструпа:

— How do you debug? Do you have any suggestion for C++ developers?
— By introspection. I study the program for so long and poke at it more or less systematically for so long that I have sufficient understanding to provide an educated guess where the bug is.

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

PHP на перле

| 1 комментарий

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

На сегодняшнем сайте php.net в разделе Downloads лежат только дистрибутивы последних версий 5.2.11 и 5.3. На странице Releases есть более глубокий архив, но все равно не дальше третьей версии.

Есть еще отдельная музейная страница, на которой числится ссылка на первую версию. Но в дистрибутиве php-108.tar.gz оказываются только исходники на C. Все, что может привлечь внимание — занятное имя одного из файлов: phpl.c.

Теперь (почему бы было не начать с этого :-) идем в раздел истории, где выясняется следующее:

PHP succeeds an older product, named PHP/FI. PHP/FI was created by Rasmus Lerdorf in 1995, initially as a simple set of Perl scripts for tracking accesses to his online resume. He named this set of scripts 'Personal Home Page Tools'. As more functionality was required, Rasmus wrote a much larger C implementation...

Иными словами, зачаток все-таки был написан на перле, но в первый публичный релиз вошел код, написанный на C. И назывался он уже не Perlsonal Home Page Tools, а составным именем Personal Home Page / Forms Interpreter.

О релизе Расмус Лердорф сообщил в NNTP-группе comp.infosystems.www.authoring.cgi. В этом письме содержится только одно упоминание о перле:

You do not need access to Perl or Tcl or any other script interpreter

(Впрочем, в правилах самой группы числится рекомендация о том, что прежде, чем задать вопрос по CGI, надо заглянуть на страницу Perl FAQ.)

В общем, PHP действительно предшествовали какие-то Perl-скрипты, но публичная версия с самого начала была написана на C.

Страницы

  • img

Об архиве

Эта страница содержит последние записи категории Не Perl.

Предыдущая категория — Мероприятия.

Следующая категория — Обучение.

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