YAPC::Russia 2008 "May Perl"

17 Май 2008 9 Comments Иван Блинков

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

Началось все с того, что мне в голову взбрела достаточно глупая мысль съездить к 9 утра субботы на лекции в университет, ни о какой конференции я не знал естественно. Не знаю как я умудрился вовремя проснуться, но так или иначе я выбрался из дома и отправился в свой ВУЗ, правда несколько изменив своей традиции делать это на метро — ранним утром на машине добраться до туда мне можно существенно быстрее, да и комфортнее. Лекции были по какому-то скучному предмету, так что я решил прогуляться и наткнулся случайно в коридоре на своего знакомого по имени Петр Федин, который, как оказалось, участвовал в организации этого мероприятия. Именно он и поведал мне о проведении в нашем ВУЗе (то есть ГУ-ВШЭ) конференции «May Perl», а также порекомендовал ее посетить. Собственно говоря в тот момент она только начиналась, и я не нашел ничего лучше кроме как согласиться, так как возвращаться на лекцию продолжать читать книжку на телефоне мне явно не хотелось.

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

Спустя какое-то время суета закончилась и начался первый доклад. Сразу хочу сказать, что разработчиком на Perl я даже примерно не являюсь. Сталкивался я с этим языком программирования всего дважды: когда копался в исходниках Livejournal на предмет осознавания общих принципов использования в нем memcached и когда недавно тут разбирался с неправильным определением страны по IP в блоге, скрипт который мне удалось найти для решения этой задачей был как раз на Perl, но как надо он не работал — в итоге пришлось заняться доработкой его под конкретную задачу, не смотря на то, что языка я по сути не знаю и ни разу на нем ничего полноценно не писал. Первый доклад был достаточно продолжительным и охватывал серьезную тему асинхронного вывода на примере библиотеки IO::Lambda, если честно в суть повествования я вник далеко не сразу, поначалу большая часть моего сознания занималась тем, что осознавала малознакомый синтаксис. Ближе к концу доклада я наконец-то смог осознать картину, которая представляла собой по сути framework для реализации обработчиков различных событий, связанных с обменом данными. Насколько это эффективно мне судить сейчас сложно, но подход к программированию достаточно интересный и, возможно, наиболее рациональный в данном контексте.

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

Следующим пунктом программы был очень поверхностный рассказ о POE. К этому моменту я уже вполне привык к Perl‘у и трудностей с пониманием кода больше не испытывал, так что понимать было существенно проще. Суть доклада заключалась в обзоре возможностей, предоставляемым эти окружением. Оно предоставляет возможность работы приложения как на очень низком уровне, так и с помощью предоставляемых высокоуровневых абстракций и framework’ов. Система имеет модульную структуру, основу которой составляют модули POE::Kernel и POE::Session, а остальные строятся на их базе и позволяют программисту пользоваться широким предоставляемым набором инструментов для решения задач различной сложности путем построения логики приложения в виде совокупности обработчиков событий, вызываемых как вручную так и при взаимодействии с внешними объектами.

После этого выступления конференция fork’анулась на две аудитории: в одной проходил мастер-класс по все тому же POE с Иваном Сережкиным из Яндекс, куда я собственно и пошел, а в другой (как я понял) — обзор framework’а Jifty. Мастер-класс был достаточно впечатляющим, даже при том что я ежедневно пользуюсь Linux, я был несколько удивлен увиденной мной на экране проектора операционной системой: очень минималистичный оконный менеджер с массой рабочих столов, на которых располагалось куча приложений, по большей части консольных. Дополнительное впечатление произвел владелец этой системы, который пользовался ей на удивление быстро и слаженно. Сам мастер-класс заключался в реализации средствами POE на ходу придумываемой задачи, которую на ходу же и меняли по определенным причинам (по большей части благодаря своеобразности организации доступа в интернет в здании). Как и любой нормальный программист, ведущий мастер-класс человек (не знаю как это правильно называется одним словом), в процессе очень активно и эффективно пользовался мануалами, а также советами и предложениями коллег. Процесс написания кода сопровождался подробнейшими комментариями, так что даже я прекрасно понимал что и зачем пишется в данный момент и вообще о чем идет речь.

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

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

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

9 comments

  • StepLg:

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

    Очень заинтересовала чать про мастер-класс путем написания приложения «в режиме онлайн». Первый раз сталкиваюсь с такой практикой (хотя, подозреваю, что так делается довольно часто), понравилось.

    Можно ли по-подробнее описать эту часть? Какая задача была, какие рассматривались методы решения и как вообще это все происходило.

    Ну или было бы здорово какую-нибудь ссылочку на видео, если такое есть. Я поискал, пока вроде бы никто ничего не выкладывал.

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

  • [quote comment="736"]Можно ли по-подробнее описать эту часть? Какая задача была, какие рассматривались методы решения и как вообще это все происходило.[/quote]Изначально предполагалось реализовать приложение работающее с Jabber-сервером по XMPP, он подключил модуль POE::Client::Jabber (за достоверность названия не ручаюсь, мог напутать) написал основу кода, что-то достал из мануалов, но затем выяснилось, что интернет есть только через прокси, а Jabber-модуль еще сырой и не умеет еще через нее работать. Далее решили раз уж такое дело пообщаться с каким-либо сервером по HTTP через прокси, он начал переписывать тот же код под новую задачу, но и тут не сложилось: не смотря на то что ему подсказали адрес прокси — интернет не заработал, ровно как и само приложение, по каким причинам я, если честно, не понял. Зато обнаружили с помощью консольных утилит (что именно он там использовал не разглядел, шрифт мелковат был для моего зрения), что работает DNS — решили писать DNS-клиент. С минимальными изменениями в коде этим же приложением через какое-то время удалось успешно сделать запрос к DNS и получить ответ. Следующим этапом была попытка получить таким образом информацию о группе доменов, в роли которой были все трехсимвольные домены (вернее трехбуквенные — от AAA до ZZZ ). Но и эта попытка ничем хорошим не закончилась — судя по всему, за такое огромное количество запросов одновременно, ноутбук, на котором проходило все это, был забанен и на DNS (по крайней мере даже через консоль он перестал отвечать после успешного первого запуска этой версии приложения).
    Наконец решили завершить эксперименты с сетью и просто построили на той же основе элементарное приложение, которое десять секунд гоняло пустой цикл и показывало сколько итераций цикла оно успело провести за это время.

    Насчет методов решения: все основывалось на POE и его дополнительных модулях, и заключалось собственно говоря в реализации логики приложения на основе построения совокупности обработчиков событий.
    [quote comment="736"]Ну или было бы здорово какую-нибудь ссылочку на видео, если такое есть. Я поискал, пока вроде бы никто ничего не выкладывал.[/quote]Ссылочки на видео у меня сейчас нет, но оно точно снималось, могу попробовать позже выяснить — наверняка выложат в Сеть.

  • StepLg:

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

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

    Здорово, вообщем. спасибо

    *еще маленький P.S. Это глюк конкретно здесь или вообще движка: не могу отправить форму по Ctrl+Enter. Удобная штука, когда по большей части работаешь с клавиатурой, а мышка только для при самой необходимости

  • [quote comment="739"]Спасибо, судя по всему, часть до тестирования времени работы пустого цикла была действительно захватывающей)[/quote]Да и цикл был вполне интересный, он тоже был не просто средствами Perl сделан, а с помощью POE в виде некого подобия итератора.
    [quote comment="739"]Вообще надо взять на вооружение такой способ демонстрации фреймворков. А то текстовые мануалы не всегда могут заинтересовать человека — язык не тот, слишком много букв, непонятно как решать реальные задачи и т.п.[/quote]
    Да, это определенно было более наглядно, чем если бы всем желающим тупо скидывали мануалы по POE на флэшку и отпускали домой.
    [quote comment="739"]*еще маленький P.S. Это глюк конкретно здесь или вообще движка: не могу отправить форму по Ctrl+Enter. Удобная штука, когда по большей части работаешь с клавиатурой, а мышка только для при самой необходимости[/quote]Это здесь не просто-напросто не предусмотрено, для отправки формы без мышки достаточно нажать Tab и потом пробел.

  • [...] с нетерпением жду записи (Иван Блинков очень вкусно рассказал, что там [...]

  • я раньше програмил на перл, но на начальном уровне, ничего хорошего в нем не видел хотя я слышал много хороших откликов о нем

  • deniszh:

    «очень минималистичный оконный менеджер с массой рабочих столов, на которых располагалось куча приложений, по большей части консольных» — у Сережкина точно на ноуте FreeBSD, а вот онконный менеджер зовется вроде FVWM, но могу и ошибаться…
    Эх, жалко я на YAPC::Russia не попал…

  • [quote comment="748"]у Сережкина точно на ноуте FreeBSD, а вот онконный менеджер зовется вроде FVWM, но могу и ошибаться…[/quote]Вполне возможно, я просто далеко от экрана проектора сидел — более детально сложно было что-либо разглядеть.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>