Home

Предыдущие 20

16 Дек, 2009

Saint Perl 2009

18 декабря 2009 года в Санкт-Петербурге пройдет воркшоп Saint Perl 2009.
День выбран не случайно – это день рождения языка Perl, уже 22 :)

Мероприятие насчитало уже 85 человек (ого-го) из Москвы, Питера, Ростова-на-Дону (я :) и Екатеринбурга (снова перловое мероприятие посетит делегация с УрГУ и они везут половину докладов, круто!).

Я планирую рассказать про Mojo, прокаченная версия доклада с BY Perl 2009.
Расписание докладов.

Пока южная столица, привет северная :)

До встречи в Питере!


use Perl or die;

JFDI


7 Дек, 2009

Perl. Пересекаются ли два массива?

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


На Perl это делается так:
use common::sense;
 
my @a = qw(q w e r t y);
my @b = qw(u i o p q);
 
say 1 if grep { defined } @{{ map { $_ => 1 } @a }}{ @b };

Исходник

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


UPD: Спасибо [info]what_me за решение на perl 5.10:

use common::sense;
 
my @a = qw(q w e r t y);
my @b = qw(u i o p q);

say @a ~~ {map { $_ => 1 } @b};



ЗЫ: Диалог с сишником++:

– Я не понимаю, зачем нужно учить Perl?
– Давай, я покажу п*здатый код, а ты сам решай. Простая задача – пересекаются ли два списка, ответ да или нет.
(Пошла ржака)
– А массивы одинаковой длины?
(бугага)
– Массивы строк или чисел?
(бугага)
– Вот код (показываю этот код)
– Даа, круто! Что такое map, grep, qw?
(бугага) Смотри задача решена без единой лишней переменной и с помощью анонимного хеша
– Это как лямбда-функция?
(бугага)
– В си тоже есть hashmap
– (бугага) Учи Perl! :)


UPD ЗЫ: Другой сишник мне написал: "и все-таки оно будет работать медленнее чем 2 цикла" (бугага) x 100500


ЗЫЗЫ: RostovOnDon.pm offline #3 permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.rostovondon/343



use Perl or die;

JFDI

30 Ноя, 2009

RostovOnDon.pm – оффлайн встреча #3 Будет! :)

Оффлайн встреча Perl-сообщества RostovOnDon.pm #3 пройдет 6 декабря 2009 года (воскресенье) на факультете математики, механики и компьютерных наук ЮФУ (мехмат), расположенного по адресу ул. Мильчакова 8а (точнее, еще точнее).

Все любители, ценители, интересующиеся, ненавистники Perl, а также похапашники приглашаются на встречу.
Будет несколько технических докладов, касаемых Perl, их обсуждение, живое общение и конечно же социальная часть в "Ташире" :-)

http://rostovondon.pm.org/#news


UPD:
permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.rostovondon/343


use Perl or die;

JFDI

26 Ноя, 2009

Новая тема: say 'hello, world' or die 'hello, world';

Perl крут, новая тема:

use common::sense;

say 'hello, world' or die 'hello, world';

По-моему, очень смешно :)

Исходник

Подсмотрел здесь
Метки: , ,

23 Ноя, 2009

Perl-мастер

17 ноября 2009 года мне исполнилось 25 лет, времени писать в ЖЖ совсем не было, надеюсь меня не отчислили из рядов Iron Man :)
На работе мне подарили отличную железную грамоту "Perl-мастер":

perl_master


use Perl or die;

JFDI
Метки: ,

10 Ноя, 2009

Perl. Форматирование чисел

Сегодня потребовалось написать функцию по форматированию чисел, приведение к читаемому виду: 1234567 => 1 234 567.
Написал следующую короткую и красивую функцию:
sub D($) {
	for (scalar reverse shift) {
		s/(\d{3})(?=\d)/$1 /g;
		return scalar reverse;
	}
}

say D 12345;
say D 123456;
say D 1234.56;
Спасибо [info]pavel_kudinov за подсказку использовать (?=pattern) positive look-ahead assertion (perlre).
Вместо этого у меня была вторая простая регекспа, которая удаляла лишний символ с конца.

Функция умеет работать и с флоатом, где количество знаков после запятой максимум 3, опять же благодаря (?=\d).

scalar reverse заставляет работать reverse в скалярном котексте при использовании в списковом контексте :)

По-моему, очень красиво получилось )))

Исходник


ЗЫ: С Павлом Кудиновым сошлись на мнении, что наверня-ка на CPAN есть модуль на несколько экранов с похожим функционалом :)


use Perl or die;

JFDI

Метки: , ,

2 Ноя, 2009

South Perl – сегодня ровно год :)

2 ноября 2008 года в Ростове-на-Дону прошел третий Российский Perl-воркшоп "South Perl".
Было в первый раз, было круто, было интересно :)

Сайт http://rpw2008.perlrussia.ru/
Выступления http://event.perlrussia.ru/rpw2008/talks
ЖЖ http://sharifulin.livejournal.com/tag/southperl
Фото http://www.flickr.com/photos/sharifulin/sets/72157608365664301/show/
Видео:

Just fun! :)

Меня все больше посещают мысли провести South Perl – 2.
Варианты Ростов-на-Дону, Ставрополь (о.О), Волгоград (на парад Победы), Краснодар (Krasnodar.pm жив?!), Сочи (это вообще пи**ец :).

use Perl or die;

JFDI


Метки: , ,

26 Окт, 2009

BY Perl Too Too

Минский воркшоп BY Perl Too, о котором я недавно писал, прошел успешно.
Мне очень понравилось как в Минске, так и на самом мероприятие (и, конечно, социальная часть :)

В поезде я все-таки успел подготовить 2 доклада, выступал под вечер, когда все почти устали, но слушали внимательно :)

Первый доклад про Mojo.
Получилось много слайдов, но я не обо всем рассказал, расширю доклад в следующий раз.



Блиц-доклад про CPAN.
Очередная версия доклада про CPAN и про сервис http://cpan.perlrussia.ru

View more documents from Anatoly Sharifulin.
 
</div>
Организатор(ы) позаботились о wifi и некоторые доклады я транслировал в интернет через twitcam.com.
Надеюсь, скоро все выступления появятся на yapc.tv (да, Андрей?)

use Perl or die;

JFDI



ЗЫ: Твиттер лента )
Метки: , , ,

15 Окт, 2009

BY Perl Too

В субботу 17 октября 2009 года в Минске пройдет второй пёрл-воркшоп "BY Perl Too". Подробная информация о мероприятие тут.

Я
, кстати, еду, сейчас собираю вещи и буду готовить доклады, впереди сутки в поезде, надеюсь успеть всё сделать и поспать :)


"Минск", use Perl, JFDI or die;

:)

8 Окт, 2009

Continuity и Squatting. Чат?!


Попробовал Continuity и микро-фреймворк Squatting на примере чата, где сервер – Push, клиент – long-polling.
Я разочаровался, нагрузку ни чистый Continuity, ни Squatting::On::Continuity не держат. Уже при 4-5 одновременных клиентах, которые постоянно пишут, сервер сильно тормозит :(

Пример чата на Continuity и Squatting можно найти в дистрибутиве модулей, в примерах.
Пример чата на Squatting + AnyEvent на Github.com (также тормозит).

Вообще, Squatting злая штука :)

Попробовал для реализации чата: APE (сложная штука на Си, клиент на мутулс, вообще не понравилась), Meteord (не сразу завелся, не очень), NginxHttpPushModule (как-то не так работает, плюс пару раз воркеры nginx ушли почти в 100% CPU). Не стал пробовать dklab multiplex на Event::Lib и POE::Component::Server::Bayeux.

Очень хочется попробовать сделать чат на XMPP, по-моему, это правильно :)

28 Сент, 2009

AnyEvent, AnyEvent::HTTP и Mojo::ByteStream

Удивление, удивление-два и привычка :)

Был удивлен, но оказывается AnyEvent/EV не позволяет выполнять вложенные condvar, получается рекурсия.
Вложенные кондвары не нужны, код легко модифицировать на работу либо с одним (самое главное send вызвать в самый последний момент, чтобы вся асинхронная работа была выполнена), либо с несколькими, тогда вызовы должны быть последовательными. Пример.

Так же был удивлён, что AnyEvent::HTTP автоматически заполняет заголовок Referer у запроса (для работы по умолчанию это лишнее) и не искейпит символы в урле (очень плохо, LWP::UserAgent и/или PoCo::Client::HTTP это делают на автомате, т.к. используют HTTP::Request).

За последнее время я так привык работать с Mojo (напомню, Mojo – pure perl http-фреймворк, "почти" без зависимостей, "веб в коробке"), что при возникновение задач вне окружения Mojo, которые связаны с перекодированием символом, не задумываясь, использую модуль Mojo::ByteStream. Например, для искейпинга символов в урле (проблема с AnyEvent::HTTP) использую следующий код:
Mojo::ByteStream->new($str)->url_escape

Для перевода html-последовательности символов вида &#1043; в печатные символы использую следующий код:

Mojo::ByteStream->new($str)->encode('utf8')->html_unescape

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


use Perl or die;

JFDI



Метки: , , ,

20 Сент, 2009

Mojo. Первый критичный баг

Нашел в Mojo критичный баг, а именно – при запуске сервера как демон-префорк (Mojo::Server::Daemon::Prefork), рабочий процесс (чайлд) падает при работе с пайпами; при запуске сервера как демон или CGI такой проблемы нет.
Подробное описание и тест в рассылке (кстати, мне там сделали замечание, как писать об ошибке). Надеюсь, что я доступно объяснил и показал баг, чтобы автор Mojo и/или кто-нибудь другой нашли решение. Сам пока не нашел.

Реальная задача, которая обнаружила это – отправка сообщения через sendmail в обработчике. Скорее всего ошибка в том, что возникает сигнал завершения потомка и он завершает работу воркера, а не пайпа.

Временное решение проблемы. Есть два варианта:
  • отправлять сообщения не сразу, а накапливать в очередь и какой-нибудь внешний процесс должен заниматься отправкой сообщений (плюс такого решения в том, что некоторые сообщения можно отменять)
  • урлы, в обработчиках которых возможна отправка сообщений, направлять не на демон-префорк, а на чистый демон (легко разруливается через nginx-конфиг)
Mojo настолько хорош, что фикс бага должен обязательно найтись :)

UPD: Решение найдено!  github.com/sharifulin/mojo/commit/416b0b15b637ed0fe8d9bf3ca3ba348e16d07f2b

Метки: , , ,

11 Сент, 2009

Запуск проектов на AnyEvent и Mojo


AnyEvent


Запустили твиттеры всех пользователей СТАНЦИИ 2.0, о котором я писал в предыдущем посте.
Используем AnyEvent::Twitter::Stream. Сам API находится в альфа-тестировании, поэтому мы работаем так же :)

Получилось очень круто, иногда интересней, чем ЧАТЕГ :)
Пишите в твиттер и слушайте СТАНЦИЮ 2.0!


Mojo


На днях запустили Рыков.ру, это первый публичный проект, полностью написанный на Mojolicious, в качестве шаблонизатора простой php-like шаблонизатор Mojo::Template, в качестве интерфейса – daemon_prefork, в момент разработки –  daemon c установленной переменной окружения MOJO_RELOAD  (изменения применяются без перезапуска), профилирование – с помошью Devel::NYProf и CGI.

В тестовом режиме запустили API для Маруси. Серверная часть написана на Mojolicious::Lite + MojoX::Renderer::JSON.
Получилось очень круто и все в одном файле, всего 246 строк :)


Что можно сказать про Mojo. Нет стабильной версии, постоянно выходят новые версии без обратной совместимости, но это нормально :)
Многие фичи приходится дописывать самому, автор лоялен к обсуждению функционала Mojo, принимает патчи, фиксит баги.
Иногда меня и мои просьбы не понимает )))
В целом, мне Mojo/Mojolicious нравится, простой и очень удобный. Даже шаблонизатор мне понравился, хотя в начале я не понимал его.



use Perl or die;

JFDI


3 Сент, 2009

Риалтайм твиттер – риал? тайм!

У отличного сервиса Twitter есть хороший API, особенность – Streaming API, возможность получать данные из твиттера мгновенно, почти в реальном времени (риалтайм веб?).

Меня заинтересовала такая возможность, тем более есть необходимость получать статусы из твиттера всех пользователей СТАНЦИИ 2.0 (конечно, у кого есть твиттер) и отображать их на странице в реальном времени. Похожая идея реализована тут, только это видимость реального времени, т.к. делается один запрос на сервер, и постепенно по одному статусу показывается на странице, затем следующий запрос и так далее :)

Read more... )


24 Авг, 2009

Perl. Коротко о разработке

Если раньше для разработки простых серверов я использовал POE::Component::Server::SimpleHTTP, то сейчас мне вполне хватает Mojo или Mojolicious::Lite. Легко, просто и быстро. Заинтриговал? На этом все, привет с моря :)

Опубликовано с мобильного портала m.livejournal.com
Метки: ,

17 Авг, 2009

Perl. use strict; use warnings; use features; use Modern::Perl; use common::sense;

Почти каждый Perl-программист знает, что всегда нужно писать:
use strict;
use warnings;
С выходом perl 5.10 еще и:

use features '...';

Некоторые решили, что приходится писать слишком много "буковок". Так появился модуль Modern::Perl и новая веха в развитии Perl 5, получившая одноименное название. Модуль подключает и импортирует в пространство имен прагмы strict, warnings, features и mro. Теперь скрипты должны начинаться со следующей строчки:
use Modern::Perl;
 
Оказывается, можно пойти дальше и написать так:
use common::sense;

Что это такое? Это почти тоже самое, что и Modern::Perl, только круче :)
use strict qw(vars subs);
use feature qw(say state switch);
no warnings;
Содержимое модуля:
sub import {
   # no warnings
${^WARNING_BITS} ^= ${^WARNING_BITS}; # use strict vars subs
$^H |= 0x00000600; # use feature
$^H{feature_switch} = $^H{feature_say} = $^H{feature_state} = 1; }
Преимущество – использует меньше памяти, чем другие решения.

Обоснование и подробности на CPAN'е.


ЗЫ: Вопреки всем убеждениям в своем коде не использую use warnings или -w, я научился чувствовать и понимать, почему я могу этим пренебречь в той или иной ситуации (за что большое спасибо [info]pavel_kudinov ). Так что common::sense мне вполне подходит :)

ЗЫ2: Автор common::sense – Марк Лехманн (AnyEvent, Coro, EV, BDB).


use Perl or die;

JFDI


10 Авг, 2009

Perl. Коротко об AnyEvent

 AnyEvent – очень крут! :)

Ссылки по теме:
Метки: ,

3 Авг, 2009

YAPC::EU 2009 – самое крупное Perl-мероприятие в Европе в 2009

YAPC::EU 2009 – юбилейная (десятая) европейская "другая конференция" по Perl, проходит с 3 по 5 августа 2009 года в Лиссабоне (Португалия).

YAPC::EU::2009

На конференцию зарегистрировалось 412 перловика из 32 стран и 74 pm-групп. 3 дня выступлений и 4 дня мастер-классов. Подробное расписание. Там будут Ларри Уолл, Демиан Конвей, Брайн Д Фой, Габор Жабо, Мэт Траут и многие другие известные перловики. Россию представляют Андрей Шитов, Алекс Капранов и Руслан Закиров, каждый из них подготовил доклад :)

На мой взгляд интересные доклады:
Хочется дождаться презентаций и видео с мероприятия, а в следующем году поехать на YAPC::EU :)


Метки: ,

31 Июл, 2009

CPANTS – Сервис контроля для CPAN

Всем молодым и не только CPAN-авторам советую пользоваться сервисом CPANTS, сервис котроля для CPAN.

Основная фишка сервиса – это kwalitee, коэффициент качества. Такой коэффициент есть как у автора, так и у дистрибутива.
На его основе строится несколько рейтингов, графики и многопользовательская "он-лайн игра" :) (лига до 5 дистрибутивов, лига более 5 дистрибутивов и лучшее дистрибутивы).

Вот информация обо мне со слов CPANTS.




Я в лиге до 5 дистрибутивов, позиция в рейтиге 1, коэффициент качества 134.783.
Очень интересная получается игра – улучшать свой дистрибутив, увеличивая kwalitee.
Интересный параметр 5й с конца – уговорить/заставить других CPAN-авторов использовать ваш модуль :) Пока никого не уговорил.

К сожалению, данный сервис не умеет работать с дистрибутивами, у которых несколько мейнтейнеров. Так например мой дистрибутив Acme::CPANAuthours::Russian не участвует в моем рейтинге.

Сегодня решил опубликовать еще несколько своих модулей на CPAN (осталось только написать документацию и тесты :), тем самым покинув лигу до 5 дистрибутивов и потеряв первую позицию. В лиге более 5 вообще анреал выйти в топ, посмотрите сами :)

Если ты CPAN-автор, увеличь свой kwalitee, сделай цвет своей таблицы зеленым, попади в топ!
Это игра, это CPAN, это Perl!

use Perl or die;

Just F*cking Do It


Метки: , , ,

23 Июл, 2009

Русская поддержка Perl

Меня спросили, а что можно почитать по Perl на русском, кроме книг от орейли и двух страниц на perlrussia.ru?
Ответ очень простой: мой блог и англоязычные блоги и Perl-планеты.
И смех и грех.

Действительно, что у нас есть?
Непонятный домен perl.ru, который никак не перекупить. Раньше на нем был "гламурный" сайт про Perl и форум.
Афиша мероприятий и несколько полезных ссылок на perlrussia.ru.
Старое г*вно типа perl.org.ru и статьи 2000 года, которые надо назвать: "Так писать на Perl нельзя!".
Пара форумов и ru_perl, на одном из форумов я был ко-модератором, но туда уже не захожу.
Авторский блог perl6.ru
Несколько блогов, где авторы пишут про Perl.
Заброшенный проект POD2::RU (все-таки перевод это сложная штука, особенно когда такие объемы, массу волонтеров найти не получилось, поэтому надо заказать перевод за деньги).
~200 перловиков в Москве, ~90 в Киеве, по ~25 в Ростове-на-Дону и Владивостоке, ~17 в Минске (судя по конференциям) и отличный университет в Екатеринбурге, где преподают Perl на первом курсе.

Чего нет?
Самое главное – нет официального русскоязычного сайта и планеты из русскоязычных блогов про Perl 5 и Perl 6.

Сразу возникает вопрос, как новичок может получить быстрый старт в Perl в России?
Только сам (как мы с вами, но это долго) или придя в фирму, которая готова вырастить Perl-программиста за короткие сроки (Точка кипения?!).

По-моему, это все сложно :) П*здец.

P.S. Я сам читаю 47 фидов про Perl, из них 10 на русском, наверно надо поделиться :)


Метки: ,

Предыдущие 20

sharifulin

Декабрь 2009

Вс Пн Вт Ср Чт Пт Сб
  12345
6789101112
13141516171819
20212223242526
2728293031  

Реклама

Метки

Трансляция

RSS Atom
Разработано LiveJournal.com