Как стать автором
Обновить

Неизвестные украли домен Perl.com

Время на прочтение 1 мин
Количество просмотров 4.4K
Информационная безопасность *Администрирование доменных имен *

Брайан Фой, эксперт по Perl, сообщил, что домен сайта Perl.com был захвачен неизвестными хакерами.

Он опубликовал сообщение на Reddit: «Мы все еще пытаемся разобраться, и я не могу вдаваться в подробности. Однако, похоже, что это был взлом аккаунта».

Читать далее
Всего голосов 12: ↑12 и ↓0 +12
Комментарии 11

Периодическая таблица операторов языка программирования Perl

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

Когда-то я был впечатлён периодической таблицей операторов perl6. Однако для perl такую таблицу делать не спешат.

Представляю Вашему вниманию свою разработку.

Читать далее
Всего голосов 7: ↑6 и ↓1 +5
Комментарии 4

RAdmin. Знаете ли вы что…

Время на прочтение 1 мин
Количество просмотров 7.7K
Информационная безопасность *
Знаете ли вы, что radmin версий до 2.2 позволяет делать перебор паролей по сети со скоростью, ограниченной каналом и мощностью машины? Говорят, в 2.2 исправили, не проверял.

Знаете ли вы, что в radmin версий до 2.2 при авторизации по паролю, клиент передаёт на самом деле хэш пароля, который сервер хранит открытым в реестре, поэтому «подпатченный» клиент может соединяться по украденному ключу.

Знаете ли вы, что в radmin версии 2.1 (дальше не знаю) используется библиотека zlib с древней дырявой версией?

Знаете ли вы, что radmin пользуется собственными алгоритмами шифрования, чудесным образом совпадающими с Twofish?

Знаете ли вы, что реально существуют (и можно нарыть, чуток поискав) компоненты ActiveX, которые осуществляют перебор пароля radmin на произвольном количестве IP и проверку реестра компьютера на наличие хэша пароля radmin, на котором исполняются?

Знаете ли вы, что есть готовые perl-скрипты, осуществляющие перебор пароля к radmin?

Вот так вот.
Всего голосов 10: ↑6 и ↓4 +2
Комментарии 18

Jevix

Время на прочтение 1 мин
Количество просмотров 632
Чулан


Jevix — средство автоматического применения правил набора текстов, наделённое способностью унифицировать разметку HTML/XML документов.

Исходный код открыт для свободного использования.
Всего голосов 6: ↑2 и ↓4 -2
Комментарии 2

Второе знакомство с OS Inferno

Время на прочтение 3 мин
Количество просмотров 9K
Софт
Когда не работается, многие читают bash.org.ru или anekdot.ru… а я этой зимой полез от скуки перечитывать сайт OS Inferno. Полез с тоской, потому что хотя меня к Inferno давно тянуло, практической пользы я от чтения доки по Inferno ожидал сколько же, сколько и от вышеупомянутых сайтов.

Но произошло нечто неожиданное — в процессе чтения на меня снизошло озарение: я понял, что OS Inferno это не операционная система, а среда разработки!
Читать дальше →
Всего голосов 21: ↑17 и ↓4 +13
Комментарии 27

Сравнение способов присваивания в perl

Время на прочтение 3 мин
Количество просмотров 2.1K
Perl *
Последнее время я стал исследовать вопросы производительности и эффективности perl-программ, и появилась идея опубликовать цикл простых, но наглядных тестов-сравнений. Начну с самого простого и типичного — с присваиваний. Если тема интересна — буду продолжать.

Ни одна большая программа не обходится без присваиваний. В программах на perl (да и не только на нем) данные часто хранят в структурах хэшей, и обновление полей этих хэшей — очень типичная задача. Разумеется, в perl существует множество способов написать код для этого — и все они различаются как по читабельности и красоте, так и по скорости. Мне стало интересно, каковы эти различия — и я провел небольшое исследование.

Пусть у нас есть $hash — ссылка на хэш с несколькими полями, и мы хотим обновить три из них. Банальный способ записать это:
<font color="gray">$hash->{foo} = 456;
$hash->{bar} = $bar;
$hash->{baz} = 'baz';

</font>


Можно воспользоваться hash slice — и вместо трех операторов скалярного присваивания достичь того же эффекта одним оператором присваивания списков:
Читать дальше →
Всего голосов 28: ↑19 и ↓9 +10
Комментарии 38

Любовь — предвестник технологического успеха

Время на прочтение 1 мин
Количество просмотров 576
Чулан
На конференции Supernova 2007 известный сетевой мыслитель, профессор Клэй Ширки выступил с очередной провокационной речью. Он огласил очень интересный и, похоже, справедливый тезис о том, что любовь является обязательным предвестником коммерческого успеха технологии.

В качестве примера Клэй Ширки говорит о языке Perl (см. видео начиная с 4 мин 20 сек.), который пользуется безусловной любовью миллионов разработчиков во всём мире. И, что более важно, все эти люди любят друг друга в связи со своим общим технологическим увлечением. Они готовы активно общаться и помогать друг другу, даже делиться кодом. Забота пользователей друг о друге — самый точный признак коммерческого успеха технологии.

Хотя Ширки говорит о Perl и Linux, но сформулированный им закон можно считать универсальным. Речь идёт о любой технологии.
Смотреть видео
Всего голосов 13: ↑12 и ↓1 +11
Комментарии 14

Как вызвать метод, которого нет

Время на прочтение 1 мин
Количество просмотров 798
Perl *
Некоторые модули имеют привычку создавать объекты из динамических классов, например, ООкнутые интерфейсы к базам любят делать классы из имён полей таблиц. Кроме того, частенько хочется обратиться к элементу структуры, которой может не существовать. Пёрл переносит обращение к элементам, которых нет, но к элементам таких элеметов уже нет. Как это
Читать дальше →
Всего голосов 5: ↑5 и ↓0 +5
Комментарии 11

POE — portable multitasking and networking framework for Perl.

Время на прочтение 1 мин
Количество просмотров 1.1K
Perl *
А по-русски, платформонезависимый фреймворк для создания многозадачных и сетевых приложений на Perl.

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

Читать далее...
Всего голосов 4: ↑3 и ↓1 +2
Комментарии 2

goto в CORE:: GLOBAL:: exit — где грабли?

Время на прочтение 2 мин
Количество просмотров 975
Perl *
У меня есть CGIшка, которую хочется запустить под FastCGI.

Она использует фреймвок, который обрабатывает html-шаблоны, выводит ошибки (die) в браузер, делает всяческие редиректы, отдаёт файлы, etc. — всё как обычно. Этот фреймвок, после формирования и вывода ответа на STDOUT, делает exit() — что тоже, в общем, не оригинально.

Этот exit() может быть вызван внутри eval(), а то и нескольких вложенных eval-ов — к примеру, если где-то, в глубине вычислений, CGIшка решает выдать юзеру редирект. Она при этом вызывает функцию фреймвока, он делает print "Location: ..." и exit().

Но под FastCGI exit() делать нельзя.
Читать дальше →
Всего голосов 4: ↑3 и ↓1 +2
Комментарии 31

Perl vs C в веб-приложениях, результаты теста

Время на прочтение 1 мин
Количество просмотров 1.2K
Чулан
Я давно хотел проверить, насколько больше запросов сможет обработать C-процесс, в сравнении с Perl-скриптом.
Проверял на простом скрипте с одним SQL-запросом, дабы избежать влияния mysql. Веб-сервер nginx, использовалось FastCGI.
Читать дальше →
Всего голосов 13: ↑10 и ↓3 +7
Комментарии 26

Что нового в Perl 5.10?

Время на прочтение 3 мин
Количество просмотров 1.5K
Perl *
На днях вышел первый кандидат Perl-а на релиз — 5.10.0 RC1. А ведь прошло 5 лет с момента предыдущего релиза (5.8).

Так что же интересного нас ждет в 5.10?
Читать дальше →
Всего голосов 36: ↑30 и ↓6 +24
Комментарии 144

Fork в приложениях использующих event loop

Время на прочтение 2 мин
Количество просмотров 3.7K
Perl *
Существуют разные способы реализовать одновременную обработку данных: fork, threads, event loop… и, насколько я понимаю, вместе они уживаются довольно паршиво.

Давайте возьмём event loop и fork. Есть ли смысл использовать их в одном приложении? На первый взгляд — конечно, есть! Event loop будет нормально работать только при условии, что обработчики событий отрабатывают достаточно быстро. И как только какой-то обработчик начинает требовать много времени для работы, первое что приходит в голову — отforkнуть его в отдельный процесс (в принципе есть ещё и нити, но в perl с ними туго, так что этот вариант даже не рассматриваем).

Но это на первый взгляд. А если копнуть глубже…
Читать дальше →
Всего голосов 4: ↑4 и ↓0 +4
Комментарии 12

Прощай, if $DEBUG!

Время на прочтение 3 мин
Количество просмотров 3K
Perl *
Думаю, любой программист на Perl довольно регулярно добавляет в программу вспомогательный код, который не должен выполняться всегда. Это может быть отладочный код, сбор статистики о скорости работы разных частей кода, вывод в лог, и т.д. С этим кодом связано сразу несколько проблем:
  1. Он мешает читать основной код.Он замедляет выполнение программы.Из-за первых двух причин его зачастую удаляют, как только необходимость в нём пропадает… только, к сожалению, необходимость в нём регулярно возникает снова, и этот код, матерясь, снова пишут… чтобы через несколько часов снова удалить.Борьба с первой проблемой, как правило, обречена на неудачу. Ибо если код должен выполняться, то он должен быть написан. А если он написан, то он царапает глаза, разрывает основной код, раздувает код, отвлекает и раздражает. Решить эту проблему, как правило, удаётся только тогда, когда этот код должен быть написан в самом начале и/или конце функции — тогда можно автоматически сгенерировать функцию-обёртку, которая спрячет внутри себя этот код.

    А вот со второй проблемой бороться можно вполне успешно:
Читать дальше →
Всего голосов 15: ↑13 и ↓2 +11
Комментарии 36

Правильный способ реализации таймеров и таймаутов.

Время на прочтение 1 мин
Количество просмотров 3.9K
Perl *
А вы знаете, что в 99% приложений и абсолютно всех CPAN-модулях таймеры и таймауты реализованы неправильно? Не верите? Правильно не верите! Есть, есть один CPAN-модуль, с корректной реализацией таймеров: EV. :) (Кстати, это, похоже, единственный CPAN-модуль из всех, реализующих event loop, который знает о проблеме использования fork вместе с event loop, описывает её в документации и даже пытается как-то решать!)

Проблема в том, что для реализации таймеров и таймаутов используются функции, возвращающие текущее время. А текущее время может быть изменено в любой момент в любую сторону на любую величину — админом или NTP-демоном. Поэтому получается так, что, например, таймаут установленный программой на 30 секунд, может сработать либо через 2 секунды, либо через пару суток — смотря как изменится текущее время после установки таймаута (а в особо запущенных случаях может не сработать никогда).

Единственный надёжный способ работать с таймерами и таймаутами — использовать монотонное время:
use Time::HiRes qw( clock_gettime CLOCK_MONOTONIC );
$now = clock_gettime(CLOCK_MONOTONIC);

Поддержка CLOCK_MONOTONIC была добавлена в Time::HiRes (по моей инициативе :)) два года назад. И вот сегодня я снова, как и два года назад, поискал на CPAN модули с правильной реализацией таймеров и таймаутов… и нашёл только один. :(
Всего голосов 11: ↑10 и ↓1 +9
Комментарии 22

С двадцатилетием тебя, Perl!

Время на прочтение 1 мин
Количество просмотров 704
Perl *
Larry Wall began work on Perl in 1987, while working as a programmer at Unisys, and released version 1.0 to the comp.sources.misc newsgroup on December 18, 1987.

Wikipedia
Всего голосов 39: ↑35 и ↓4 +31
Комментарии 24

Cache:: Memcached:: Fast 0.08

Время на прочтение 1 мин
Количество просмотров 1.6K
Perl *
Сегодня зарелизили версию перлового клиента для memcached близкую к окончательной. Багов не замечено. Работает на боевых серверах beon.ru. По бенчам превосходит по скорости все аналогичные модули (как пишут в рекламе, «до десяти раз быстрее»)

wiki проекта

Приятно, когда коммерческие проекты выкладывают хорошую работу в open source!
Всего голосов 24: ↑21 и ↓3 +18
Комментарии 8

Знаете как узнать сколько сейчас минут? ( на разных языках).Альтернатива Hello World.

Время на прочтение 1 мин
Количество просмотров 1K
Чулан
Проблема «Hello World» — в том что непонятно заранее куда будет выведен этот самый «Hello World». То ли в консоль, то ли в Браузерное окно, то ли в MessageBox, то ли в отладочное окно.
Задачка — «Минутка» показывает именно объектное представление языка. Насколько просто обратиться к значению минутки текущего времени на разных языках.
Поэтому ниже привожу примеры именно получения текущей минутки. Если время например: 8:26:30, то в итоге мы должны получить 26.
Не важно числом или цифрой.
Хочется добавить ограничение: без использования дополнительных библиотек.

Читать дальше →
Всего голосов 20: ↑4 и ↓16 -12
Комментарии 32

Уязвимость в Bittorrent протоколе

Время на прочтение 2 мин
Количество просмотров 1.5K
Информационная безопасность *
Перед прочтением статьи порекомендовал бы ознакомится с основными терминами данной технологии http://ru.wikipedia.org/wiki/BitTorrent
Также желательны знания основ языка Perl

Читать дальше →
Всего голосов 12: ↑6 и ↓6 0
Комментарии 14