Показаны сообщения с ярлыком perl. Показать все сообщения
Показаны сообщения с ярлыком perl. Показать все сообщения

понедельник, 11 февраля 2013 г.

Новая писькомерка! :)

Появился новый сайтик с тестами - http://smarterer.com/
Гордятся своей "scoring system"- и вроде как не зря, показывает честно - у меня Perl уровень Expert, а Python - Beginner. :)
Можно создать спец. страничку, чтобы мериться письками гордиться - http://smarterer.com/deniszh (причем те области где гордится нечем можно стыдливо спрятать :D )

воскресенье, 8 июля 2012 г.

Грустная новость, камрады

English text is here.
Грустная новость, камрады.
На Хабре пробегала статья про высокие нагрузки на порносайтах, в которой кто то упомянул презентацию от YouPorn про их архитектуру. Тут и я припомнил, что недавно как раз были новости что YouPorn перешел на Redis и достиг там какой то сумасшедшей производительности - 300K/сек. Ну и YouPorn был раньше славен тем, что был написан на Perl, что всячески упоминалось в разных холиварах, безотносительно порно - как никак сайт из Alexa Top-100 на Perl - это же круто!
Так вот - больше нет.
Открываем вышеупомянутую презентацию (вот ссылка на GoogleDocs / оригинал), читаем -
  • Written in PERL with a very complex architecture
  • First few months dedicated to learning the site, maintain it, and plan the re-write.
  • Re-write started in August 2011 and was originally planned for a delivery in mid-November.
  • Actually launched at the end of January.
То бишь, в конце 2011 года сайт был переписан на PHP+Symfony2, из за чего стал гораздо проще, быстрее ну и девелоперов для PHP находить проще (хотя было упомянуто что новые технологии типа Redis требуют довольно длительного времени для изучения).
В остальном кстати, архитектура у них довольно стандартна - HaProxy + Varnish + Nginx/PHP-FPM/Symfony2 + Redis/MySQL, для логирования используется Syslog-ng, единственно что удивляет - это использование ActiveMQ для записи в БД/Redis - хотя если я правильно понял, им они как раз не очень довольны.

понедельник, 25 июня 2012 г.

А вы знаете про perlsecret?

English test is here
Читаю perlsecret. Оказалось забавная штука, всем советую. Ообенно понравился оператор "~~<>", называемый kite (воздушный змей) или ... sperm (тут и без перевода думаю понятно).
Приведу выдержку из документации полностью -

"Discovered by Philippe Bruhat, 2012. (Alternate nickname: "sperm")
This operator is actually a combination of the inchworm and the diamond operator. It provides scalar context to the readline() builtin, thus returning a single line of input.
It's only useful in list context (since <> already returns a single line of input in scalar and void contexts), for example for getting several lines at once:
@triplets = ( ~~<>, ~~<>, ~~<> ); # three sperms in a single egg?
Like the other operators based on bracketing constructs, the kite is a container, and can carry a payload (a file handle, in this case).
Mnemonic: It provides a feature that is tied to one line, a string, as it were. (Tye McQueen in http://www.perlmonks.org/?node_id=959906)."

воскресенье, 4 марта 2012 г.

Perl теперь и на Heroku !

English post is here.

К своему удивлению недавно узнал что на облачном хостинге Heroku теперь можно пускать приложения на (почти) любой веб-платформе. Делается это с помощью технологии называемой buldpacks. По идее это сделано чтобы можно было "потюнить" платформу/окружение - использовать новую версию Node.js или Ruby или что нибудь в этом роде. Но народ быстро смекнул в чем дело и нашлепал билдпаков на любой вкус и цвет - для C/Erlang/PHP/Go/Scala/etc - ну и конечно для Perl, причем один из них сделал сам великий и ужасный :) Miyagawa - heroku-buildpack-perl. Им я и воспользовался чтобы перетащить свой Plusfeed.pl на Heroku со Stackato (где уже кончился триал). Теперь он живет на http://perlfeed-pl.herokuapp.com - заодно я пофиксил один неприятный баг из-за которого у сообщения менялся id при добавлении комментария или +1 - соответсвенно оно всплывало в ленте. :(
Вкратце я опишу как это делается.
1. Пишем стандартный Makefile.PL для своего приложения (можно использовать формат Build.PL) - вот мой -

use strict;
use warnings;
use ExtUtils::MakeMaker;
WriteMakefile(
    NAME      => 'plusfeed.pl',
    VERSION   => '0.05',
    AUTHOR    => 'Denis Zhdanov ',
    EXE_FILES => ['app.psgi'],
    PREREQ_PM => {
        'Google::Plus'             => '0.004',
        'XML::RSS'                 => '1.49',
        'XML::Atom::SimpleFeed'    => '0.86',
        'Plack::App::Path::Router' => '0',
        'Plack::App::File'         => '0',
        'Plack::Builder'           => '0',
        'Path::Router'             => '0.11',
        'CHI'                      => '0.5',
        'Starman'                  => '0.3',
    },
    test => {TESTS => 't/*.t'}
);


2. Добавляем свое приложение на сайт с помощью кастомного билдпака - 
git init
git add .
git commit -m "Initial version"

heroku create --stack cedar --buildpack \ http://github.com/miyagawa/heroku-buildpack-perl.git
git push heroku master

Вся магия содержится в строке с buildpack. После этого видим что то хохожее - 

-----> Heroku receiving push
-----> Fetching custom buildpack... done
-----> Perl/PSGI app detected
-----> Installing dependencies
-----> Installing Starman
       Starman is up to date. (0.3000)
-----> Discovering process types
       Procfile declares types     -> (none)
       Default types for Perl/PSGI -> web
-----> Compiled slug size is 6.8MB
-----> Launching... done, v7
       http://plusfeed-pl.herokuapp.com deployed to Heroku

(было много строк со сборкой cpanm и всех зависимостей,  но только в первый раз, при обновлении этого не требуется).
Все пользуемся приложением и радуемся.  :)

суббота, 24 декабря 2011 г.

Plusfeed.pl - экспортируйте Google Plus в RSS/Atom !

Plusfeed.pl - экспортируйте Google Plus в RSS/Atom !

Я не сильный любитель социальных сетей, но есть практически во всех - включая Google Plus - просто для поддержания связи с друзьями и знакомыми. Вот мой круг в Плюсах - https://plus.google.com/112714787808356482431/ - можете меня добавить. :)
Однако я с удивлением обнаружил что G+ не предоставляет Rss/Atom фидов для экспорта.
Гуглением было обнаружено следующее -

https://github.com/russellbeattie/plusfeed - использует Python на GoogleAppengine.
https://github.com/tedkulp/gplusfeed - использует Node.js на Heroku.
https://github.com/AntonTyutin/gp2rss - использует Node.js
Но насколько мне известно ни один из этих сервисов не дает публичного доступа - Plusfeed http://plusfeed.appspot.com был закрыт после изменения цен на Appengine,  http://gplusfeed.heroku.com у меня (может только у меня?) тоже завести не получилось.
Поэтому я решил написать такую штучку для себя, ну  для других жаждущих - по крайней мере, пока возможность экспорта постоп G+ не будет предоставляться "из коробки".

Итак, встречайте - http://plusfeed.sandbox.activestate.com !
Также можете использовать мой код  https://github.com/deniszh/plusfeed.pl чтобы сделать что то подобное, используя простой Perl/CGI хостинг или Activestate Stackato - все необходимое для этого уже есть в приложении.

Если есть вопросы - пишите, с удовольствием отвечу.

среда, 30 ноября 2011 г.

А вы говорите Node.js, Node.js...


Наш соотечественник, Алесандр Гомоляко (zzz@zzz.org.ua),  некоторое
время назад зарелизил логическое продолжение его модуля Nginx::Engine
- патченую версию Nginx с улучшенной поддержкой Perl. Живет тут -
https://github.com/zzzcpan/nginx-perl/
Также в рассылке Moscow.PM был небольшой флейм по поводу того на чем
писать серверы -  Perl AnyEvent vs Python Twisted. В ходе обсуждения
впрочем выяснилось что с большим отрывом всех рвет Node,js - что в
принципе логично, потому как javascript, сука, быстрый. :)
В ответ на это Александр сделал небольшой тест Node.js+Redis vs
Nginx-Perl+Redis, а я сегодня повторил этот тест на своей хилой VPSке
(Atom+196MB RAM). Все тесты есть в последней версии Nginx-Perl, лежат
в eg/redis, желающие могут повторить.
Тестируется простое приложение, по запросу / - просто отдача "hello",
по запросу /single - выборка значения по ключу mykey из Redis и отдача
клиенту, по запросу /multi - выборка  значения по ключу mykey из Redis
10 раз и выдача клиенту. Redis v2.4.4 живет на localhost, все
настройки по умолчанию.

Concurrency=10, Number of requests=10000

Node.js v0.4.11, hiredis установлен
/          = 1187.14 [#/sec]
/single =  814.92 [#/sec]
/multi  =  450.07 [#/sec]

Nginx-Perl
/          = 2357.97 [#/sec]
/single  = 1405.84 [#/sec]
/multi   = 686.32 [#/sec]

Незнаю как кому, но меня результат откровенно порадовал. Есть даже
куда применить, хочу портировать одну штучку с Ноды.
Node,js конечно тоже хороший продукт, у него есть свои плюсы, но и
Perl еще очень рано списывать со счетов. :)




Perl опять крут

Perl опять крут. AMF auth hacked ;)
Я чуть ежика не родил над спецификацией AMF в попытках написать AMF клиент, а добрые люди оказывается уже написали AMF::Connection и Storable::AMF...