Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Perl: Общие вопросы > Кто нибудь использует на продакшене Moose |
Автор: DaemonSuw 19.5.2009, 16:04 |
Заинтересовался модулем под названием http://search.cpan.org/~drolsky/Moose-0.79/lib/Moose.pm http://habrahabr.ru/blogs/perl/59512/ - небольшой блог на русском А кто нибудь из тут присутствующих использует его в своих проектах (тест, продакшен), на первый взгляд - вещь то стоящая - полноценное ООП на перл ;)... и ваше мнение? стоит юзать? скорость тут: http://pichis-blog.blogspot.com/2009/02/how-fast-or-slow-is-moose.html |
Автор: xoma 20.5.2009, 09:10 |
Сейчас ставил последнюю версию Catalyst (с ним пока не работал), так вот, в качестве одной из зависимостей он тянет как раз Moose. Так что наверное каталист уже использует или планирует в ближайшее время перейти на Moose. |
Автор: KSURi 20.5.2009, 11:15 |
Для проектов "с нуля" использовать можно, возможно, даже нужно. По идее, таким же образом можно "обернуть" legacy-код, чтобы придать ему свежести) Но что-то мне подсказывает, что себе дороже получится. |
Автор: DaemonSuw 20.5.2009, 12:24 | ||
xoma, да вы правы новая версия каталиста заточена под Moose... я думаю не спроста))) delta list ;)
KSURi, опыта большого нету, но рискну спросить, - а что мешает продолжать писать уже с помощью Moose ;0)... ведь обратная совместимость есть, то есть все методы мы отнаследуем, а дальше юзать и писать по полной ооп парадигме... и потихоньку рефакторить тяжелое наследство системы... Конечно у системы появится 2 стиля кодирования так сказать до и после)... но это ведь в конце пропадет, если заставлять себя рефакторить старые классы... |
Автор: gcc 29.7.2009, 03:05 |
тоже интересно, а в чем приемущество? что не хвататет в обычном ООП + Ассессоры и т.д. чтобы его использовать? там есть еще много други модулей и mooseX, но оно как-то на обычный php похоже, только по другому сделано... |
Автор: chorny 29.7.2009, 03:17 | ||
Преимущество в простоте и читабильности. Также Class::MOP даёт возможность полноценной интроспекции. Я использовал в работе упрощённый вариант - Mouse. Кстати роли есть ещё только в Perl 6 и Smalltalk. |
Автор: gcc 29.7.2009, 04:18 |
понятно, а есть ли где-то реальная программа с moose чтобы ее скачать и посмотреть исходники? |
Автор: KSURi 29.7.2009, 13:06 |
gcc, тонны кода есть в блогах учавствующих в Iron Man. chorny, роли - это ведь по сути mixin. Так что можно сказать, что и в они Python есть, и в Ruby. |
Автор: gcc 21.9.2009, 21:42 |
KSURi, http://www.google.com.ua/#hl=uk&source=hp&q=iron+man+%D0%B8%D0%B3%D1%80%D0%B0&meta=&aq=&oq=Iron+Man&fp=bf607cbc1d1ce7ba 1) где это? дайте ссылку? хотел исходники посмотреть 2) и кто видел на каталисте среднюю или большую программу? я нашел только одну... 3) еще хотел спросить где есть дискусии англоязычные там где много народа, никто не участвует в таких? |
Автор: chorny 21.9.2009, 22:00 | ||
А mixin по сути - это множественное наследование. Но разный подход: роли позволяют делать более строгую проверку и переименование. Кроме того их можно применять динамически. |
Автор: chorny 21.9.2009, 22:48 | ||
perlmonks, stackoverflow, use.perl.org, irc://irc.perl.org , irc://irc.freenode.net/#perl , списки рассылки модулей и проектов CPAN и др., news://nntp.perl.org и много других мест |
Автор: gcc 21.9.2009, 23:26 | ||
понятно по гуглил нашел блоги, я имел ввиду средние или большие программы на moose.... на catalyst нашел несколько, но мало, несколько ссылок не работают Добавлено через 45 секунд chorny, я не люблю это IRC или рассылки, обычных форумов нету? |
Автор: mvsgt 21.9.2009, 23:40 | ||
У меня довольно ответственная система в продакшне на Moose (кроме автогенерируемых файлов - 82 .pm, >400 килобайт кода с комментариями). Но я не очень им доволен, хотя если сравнить голый перл и Moose - это земля и небо. DBIx::Class на Moose, кстати. И некоторые другие на него переходят. Потери в производительности посчитать трудно, так как многим вещам аналогов при обычном подходе нет. Например, проверка параметров функций - Param::Validate превратился в гораздо более мощный инструмент
Плюс контроль за переменными класса - кто знает, сколько из-за его отсутствия остаётся спящих ошибок. А вообще вся предесть Moose проявится только в MooseX : : Declare и подобных модулях, но они, скорее всего, никогда в продакшн не выйдут. |
Автор: gcc 21.9.2009, 23:55 |
да надо попробовать... я только что посмтрел программу на moose, но ничего особенного там не увидел... интересно бы на реальных примерах увидеть преимущество... |
Автор: mvsgt 21.9.2009, 23:58 |
Посмотрите на habrahabr.ru - там есть пара статей. И в документации можно всё увидеть, в примерах к Moose например. |
Автор: gcc 22.9.2009, 04:14 |
может кто-то обяснить про Role в moose? http://search.cpan.org/~drolsky/Moose-0.91/lib/Moose/Cookbook/Roles/Recipe1.pod или я не понял что-то или я не понял зачем это надо, как буд-то какой-то бессмысленный набор слов в документации... http://www.gossamer-threads.com/lists/catalyst/ |
Автор: KSURi 22.9.2009, 09:52 | ||
У меня есть в одном месте MX::Declare с мульти-методами (не самая важная часть) в продакшене. В принципе не жалуюсь (только одно нарекание - почему-то часто варнинги пишет в логи, пока не разобрался как убрать). Секундная задержка видна при старте сервера, в остальном различий не заметил. |
Автор: gcc 23.9.2009, 17:37 | ||
подскажите какая отладка есть для moose?? Data::Dumper НЕ смотрит объект, там используется "делегирование" между классами
в google не нашел http://www.google.com.ua/#hl=uk&ei=kjG6StiNFIWqsAbZl52RBA&sa=X&oi=spell&resnum=0&ct=result&cd=1&q=%D0%BE%D1%82%D0%BB%D0%B0%D0%B4%D0%BA%D0%B0+moose&spell=1&fp=818c551f15cdb9b3 есть только для ролей http://search.cpan.org/~fayland/MooseX-Dumper-0.02/lib/MooseX/Dumper.pm |
Автор: ginnie 23.9.2009, 17:43 | ||||
gcc, а что Вам
должен показать? Объект-то ведь $c->request. Попробуйте
|
Автор: gcc 23.9.2009, 18:02 | ||||||||
ginnie, но не видно }, 'HTTP::Headers' ),
тоже самое
|
Автор: ginnie 23.9.2009, 18:06 | ||
gcc, как это не видно HTTP::Headers? А это что?
|
Автор: gcc 23.9.2009, 18:24 |
ginnie, это вывод отладки после print Dumper($c->request); там надо наверное как-то по другому в дампер передать.... в исходниках каталиста сложно разобратся, я не вижу объект класса HTTP::Headers я думал в что $c или $self, но не видно... там метода Headers |
Автор: ginnie 23.9.2009, 18:32 | ||
gcc, я, вероятно, как-то непонятно объясняю. Класс HTTP::Request отнаследован от HTTP::Message. У HTTP::Message есть свойство headers, значением которого является объект класса HTTP::Headers. Метода, возвращающего этот объект в классе HTTP::Message нет. Поэтому единственный способ его отдельно посмотреть дампером
Что я теперь непонятно объяснил? |
Автор: gcc 23.9.2009, 18:37 | ||||
gcc, извините, просто не могу разобратся... я забыл написать что хочу увидеть X-Forwarded-For все остальное с ним... (может там что-то другое есть или по другому называется!!) (я посмотрел исходники $c->request->address он просто определяется по-моиму когда прокси, то определяется айпи из Forwarded) $c->request->header('X-Forwarded-For')
почему в отладке не видно X-Forwarded-For, ip и host ? Добавлено @ 18:42 ginnie, спасибо, может там убрано из класса это (X-Forwarded-For, ip и host) скорее всего посмотрю еще исходники.... |
Автор: ginnie 23.9.2009, 19:45 | ||
gcc, X-Forwarded-For не видно потому, что он Вашим клиентом не передается. Он передается иногда при работе через proxy-сервер (хотя по идее, proxy должен ставить заголовок Via). IP в заголовках тоже быть не должно, т.к. он определяется из соединения:
|
Автор: mvsgt 24.9.2009, 15:06 | ||
Я начал с него, но столкнулся с полным неприятием кода на MX: ![]() |
Автор: KSURi 24.9.2009, 16:54 | ||
У vim с этим проблем нет) Perltidy не пользуюсь. Вот проблемы с отладкой, это да - большой минус. Причем это касается и просто Moose, без Declare. |
Автор: mvsgt 24.9.2009, 19:38 |
А у меня стиль набора текста - набирать как придётся, потом нажимать Control-F и всё приводится к стандартному виду. Без этого не получается. |