LINUX.ORG.RU

Mojolicious 1.0

 , , ,


0

2

Спустя примерно 5 лет разработки, увидел свет первый релиз веб-фреймворка нового поколения для Perl — Mojolicious 1.0 (Snowflake).

Mojolicious даёт разработчику возможность отказаться от монструозных веб-фреймворков с излишне сложной структурой, уродливым API и кучей зависимостей в пользу изящных и компактных решений. Mojolicious — это попытка вернуть толику искусства в сферу веб-программирования.

Основными достоинствами Mojolicious являются:

  • Архитектура MVC («Модель - представление - управление»)
  • Чистое, переносимое объектно-ориентированное API на Perl'е, без каких-либо недокументированных функций и имеющее из зависимостей только сам Perl
  • Полная реализация HTTP 1.1 стека и ВебСокетов
  • Встроенный механизм асинхронного ввода/вывода с поддержкой epoll, kqueue и UNIX domain sockets
  • Автоматический детектор CGI, FastCGI и PSGI
  • Парсер JSON и XML/HTML5
  • Плагины, Perl-шаблоны, управление сессиями, тестовый фреймворк, интернационализация, полная поддержка юникода и многое другое.

Кроме этого, благодаря гранту, который выделил Perl Foundation, проект обзавёлся шикарной документацией.

Простота и удобство Mojolicious проявляются даже в его установке. Чтобы установить целый веб-фреймворк, достаточно выполнить всего один однострочник:

curl -L cpanmin.us | perl - http://latest.mojolicio.us

>>> Подробности

★★★★★

Проверено: mono ()
Последнее исправление: INFOMAN (всего исправлений: 4)

Прикольная штука!

Casus ★★★★★
()
Ответ на: комментарий от DNA_Seq

Ох

Как в луа с регэкспами ...


Со времени изобретения pcre в любом языке нормально с регулярными выражениями.

и обработкой текста?


Тут два вопроса:

1. Что Вы понимаете под «обработкой текста»?
2. Зачем то, что Вы понимаете под «обработкой текста» в веб-фрэймворке?

AlexM ★★★★★
()
Ответ на: комментарий от ArtemZ

Круть. Но я уже изучаю джавовский play framework.

У Play! есть несколько, м-м-м, нюансов при использовании. Плюс унылый деплоймент. Плюс м-м-миниатюрное коммьюнити. Плюс котёнка фреймворк с таким именем во дворе ждут одни неприятности хрен найдёшь гуглёвым поиском...

Ну и да, стоит помнить о том, что Play! писан джавистами, уставшими от прелестей J2EE и решившими слепить свой велосипед, чем-то неуловимо напоминающий Django и RoR. И что это не вполне Java. Получилось, конечно, прикольно, во всяком случае, Хелловорды и прочие CRUD-ы писать - самое оно, существенно веселее, чем на каком-нибудь Tapesty или Wicket'е, но вот вопрос в том, что дальше...

AlexM ★★★★★
()

# ping latest.mojolicio.us
PING latest.mojolicio.us (213.133.102.53): 56 data bytes
64 bytes from 213.133.102.53: icmp_seq=0 ttl=54 time=109.833 ms

url -L cpanmin.us | perl - http://latest.mojolicio.us
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 167k 100 167k 0 0 55141 0 0:00:03 0:00:03 --:--:-- 92441
--> Working on http://latest.mojolicio.us
Fetching http://latest.mojolicio.us ... FAIL
! Download http://latest.mojolicio.us failed. Retrying ...
! Download http://latest.mojolicio.us failed. Retrying ...
! Download http://latest.mojolicio.us failed. Retrying ...
! Failed to download http://latest.mojolicio.us
! Failed to fetch distribution

Что делать?

abbath ★★
()
Ответ на: комментарий от tazhate

>я ******* столько раз прежде чем django под арчем завел.

И это точно проблемы джанги? Или арчеводов с версиями питона?

KDE41user
()
Ответ на: комментарий от KDE41user

я хз, но мнение подпортилось.
на днях буду заводить под гентой.

зы - джанга есть в репах арача. стандартных. официальных!

tazhate ★★★★★
()
Ответ на: комментарий от abbath

curl -L cpanmin.us | perl - http://download.github.com/kraih-mojo-v1.0-0-g9b256ec.tar.gz

Если ставишь не под рутом (рекомендую), добавь это в ~/.profile
# set PERL5 lib & bin path
if [ -d «$HOME/perl5» ] ; then
PATH=«$HOME/perl5/bin:$PATH»
export PERL5LIB=«${PERL5LIB:+$PERL5LIB:}$HOME/perl5/lib/perl5»
export MANPATH=«${MANPATH:+$MANPATH:}$HOME/perl5/man»
fi

khv_zak
()
Ответ на: комментарий от tazhate

>я хз, но мнение подпортилось.

Попробуй использовать python2 вместо python, а потом уже подпорть мнение.

Django does not currently work with Python 3.0 (с) djangoproject.com

на днях буду заводить под гентой.

Мдя. Попробуй что-то менее красноглазое.

зы - джанга есть в репах арача. стандартных. официальных!

Это что-то говорит о качестве джанги?

P.S. Никогда не понимал людей, которые используют старые версии уеб-фреймворков из репозиториев дистрибутива. Делаешь чекаут транка - и вперед.

KDE41user
()

Этот Mojo не дает возможности сделать классический сайт вида

http://domain/site.cgi?controller=bla1&action=bla2

а только вариант

http://domain/bla1/bla2

а в целом довольно приятная вещь, хотя местами и недопиленная до ума: например еще есть проблемы с юникодом (есть конфликты с use open ':utf8') имеется некоторый бардак с расположением файлов в проекте, но в целом уже можно пользоваться

rsync ★★
()

Django тормозной монстр! Ещё и с алхимией в каждой дырке.
Я за Pylons тогда уж. :)

ЗЫ а насколько этот фреймворк быстрый? Я думаю всёравно медленее чем tornado.

stalkerg ★★★★★
()

Архитектура MVC («Модель - представление - управление»)

надо сказать что в Mojo отсутствует буковка «М» этой самой архитектуры. Предлагается M реализовывать на том что самому в голову придет

rsync ★★
()
Ответ на: комментарий от buddhist

> Перл еще жив? Закопайте, я лучше возьму даже Haskell on a Horse.

Он же, как здесь и предсказывали, не взлетел. Впрочем, есть еще `happstack' и `snap'.

n01r ★★
()
Ответ на: комментарий от KDE41user

> Попробуй использовать python2 вместо python, а потом уже подпорть мнение.

зы - джанга есть в репах арача. стандартных. официальных!

Это что-то говорит о качестве джанги?

Видимо, вам хотели намекнуть, что там уже быто `python2' (или, по крайней мере, дожно было быть).

n01r ★★
()
Ответ на: Открой для себя Ruby от uGin
require 'sinatra'
get '/' do
  "Hello World!"
end

Присоединяюсь. Тем более что даже используя Webrick производительность на Hello World по сравнению с ихним встроенным «HTTP1/1 асинхронным сервером» не сильно отстаёт. Не говоря уже о Mongrel и Thin.

Понимаю, что hello world не показатель... Не показатель всего на свете, но мне, допустим, становится не интересно дальше смотреть.

funny_falcon
()
Ответ на: комментарий от rsync

> http://domain/site.cgi?controller=bla1&action=bla2

http://domain/bla1/bla2

Ы-ы-ы, а подобный маппинг разве не должен настраиваться вне кода, в каком-либо конф. файле??

AlexM ★★★★★
()
Ответ на: комментарий от kranky

Ого как хватили :)

Нет, Mojolicious не отпочковался от Каталиста. Себастьян Ридель сначала написал Каталист, потом вышел из образовавшейся Core team и начал писать совсем другой фреймворк.

Так что вполне себе можно отступить 2-3 месяца от первого коммита (который был достаточно большим) и мы получим срок около 2 лет :)

anonymous
()
Ответ на: комментарий от DNA_Seq

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

Да вы какие-то больные шизофреники! Рассказ они, видите ли, пишут. Ещё скажите, перл делает вас ближе к Богу через самоистязание.

mashina ★★★★★
()

Видимо это хорошая работа - перл фреймворк :)

Но после рельс как-то вообще ничего не нужно.

ciss
()

вкусно написано. даже жаль что перл не нужен

anonymous
()

что за куйхня?

DILIN ★★★★★
()

Интересно, эта штука заведется под встроенным perl'ом nginx'а?

encoded_reality
()
Ответ на: комментарий от kranky

>Перл проще.

перл поощряет практику писания плохого кода. Хотя это агрумент, конечно, не для каждого.

И перл не проще. Он местами изящней. Но не проще.

У Перла есть XS

луа изначально писался для встраивания в программы на С и наоборот. Посмотрел тут биндинг от луа к лдап - проще некуда.

И Перл тоже. Только зачем оно нужно для прикладного веб-программирования?

веб-программирование изначально ориентированно на многопоточие и процессорность. Функциональный код показан в таких случаях как никакой другой.

AVL2 ★★★★★
()
Ответ на: комментарий от AlexM

Ы-ы-ы, а подобный маппинг разве не должен настраиваться вне кода, в каком-либо конф. файле??

Если имеется в виду конфиг лайти или апача, то одно другому не мешает.

А если в самом фреймворке выносить в отдельный конфиг, то это не всегда полезно. Гибкость же страдает.

AVL2 ★★★★★
()
Ответ на: комментарий от AVL2

>перл поощряет практику писания плохого кода.

Когда-то давно, когда программисты были инженерами, а не ПТУшниками, прочитавшими «программирование для чайников за 15 минут», это называлось гибкостью языка программирования. А теперь, видите ли, если в ЯП не встроены защиты от быдлокодеров, и свобода программиста не ограничивается специально, то это называется поощрением плохого кода...

kranky ★★★★★
() автор топика
Ответ на: комментарий от kranky

> Когда-то давно, когда программисты были инженерами, а не ПТУшниками, прочитавшими «программирование для чайников за 15 минут», это называлось гибкостью языка программирования. А теперь, видите ли, если в ЯП не встроены защиты от быдлокодеров, и свобода программиста не ограничивается специально, то это называется поощрением плохого кода...

Это же не вся правда, емнип (поправьте, если что), он создавался для обработки текста. Оказался относительно удачен и стал использоваться вне этой ниши, обрастая костылями (аналогий кстати много). Относительно этого, насколько я понимаю, и высказываются многие претензии к языку.

n01r ★★
()
Ответ на: комментарий от kranky

> Когда-то давно, когда программисты были инженерами, а не ПТУшниками, прочитавшими «программирование для чайников за 15 минут», это называлось гибкостью языка программирования. А теперь, видите ли, если в ЯП не встроены защиты от быдлокодеров, и свобода программиста не ограничивается специально, то это называется поощрением плохого кода...

Видимо, последние 50 лет программисты уже не были инженерами... потому что свободу программиста ограничивают, начиная с Алгола60.

tailgunner ★★★★★
()
Ответ на: комментарий от n01r

>Это же не вся правда, емнип (поправьте, если что), он создавался для обработки текста. Оказался относительно удачен и стал использоваться вне этой ниши, обрастая костылями

До Perl4 включительно так и было. Но Perl5 был полностью переписан и задумывался изначально как язык общего назначения.

kranky ★★★★★
() автор топика
Ответ на: комментарий от tailgunner

>потому что свободу программиста ограничивают, начиная с Алгола60.

Вот поэтому он и рипнулся, а фортран и лисп всё ещё живут =)

kranky ★★★★★
() автор топика
Ответ на: комментарий от kranky

> До Perl4 включительно так и было. Но Perl5 был полностью переписан и задумывался изначально как язык общего назначения.

Насколько я понимаю, совместимость-то сохранили, что оставляет проблему нерегулярности и нецелостности синтаксиса. У меня почему-то perl ассоциируется с набором хаков (не сказать, что в самом хорошем смысле этого слова).

n01r ★★
()
Ответ на: комментарий от mashina

>Рассказ они, видите ли, пишут.

Знаешь чем написание рассказа отличается от написания инструкции? При написании рассказа рассчитываешь что читатель процентов 70 додумает самостоятельно а при написании инструкции пытаешься сформулировать так чтоб читатель не подумал ничего сверх того что там описано.

DNA_Seq ★★☆☆☆
()
Ответ на: комментарий от AlexM

1. Что Вы понимаете под «обработкой текста»?

ну по идее надо бы текстом манипулировать. шаблоны, поиски это одно, но когда фреймворк утфные символы пополам режет, неправильно считает количество символов в строке, или не может поменять окончания или даты, то все совсем кисло...

2. Зачем то, что Вы понимаете под «обработкой текста» в веб-фрэймворке?

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

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

Так что если язык фреймворка не позволяет сделать нужное, то и язык приложения скорее всего тоже не сможет реализовать искомое.

AVL2 ★★★★★
()
Ответ на: комментарий от AlexM

>1. Что Вы понимаете под «обработкой текста»?

Ну для меня это например обработка нуклеотидных/аминокислотных сиквенсов - парное выравнивание, преобразование из одного алфавита в другой, поиск повторов (в том числе и вырожденных) и тд

2. Зачем то, что Вы понимаете под «обработкой текста» в веб-фрэймворке?


А чем еще должен заниматься веб-фреймвор как не генерацией и парсингом текста? Если у меня допустим имеется сервер для обработки тех же генетических баз данных и я хочу сделать к нему веб-интерфейс то по понятным причинам он будет на Перле - меньше прослоек между сервером и мордой

DNA_Seq ★★☆☆☆
()
Ответ на: комментарий от DNA_Seq

> Все распространенные языки это набор хаков. Возьмем например С...

Где-то рассказывали, что lisp продолжительное время был второй по популярности. Java тоже скорее выбивается. Pascal не совсем подходит, он ведь распространен, правда в школах и немного в вузах.

n01r ★★
()
Ответ на: комментарий от kranky

А теперь, видите ли, если в ЯП не встроены защиты от быдлокодеров, и свобода программиста не ограничивается специально, то это называется поощрением плохого кода

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

no-dashi ★★★★★
()
Ответ на: комментарий от kranky

>Когда-то давно, когда программисты были инженерами, а не ПТУшниками, прочитавшими «программирование для чайников за 15 минут», это называлось гибкостью языка программирования.

нет, с самого изобретения письма это называлось косноязычием.

А теперь, видите ли, если в ЯП не встроены защиты от быдлокодеров, и свобода программиста не ограничивается специально, то это называется поощрением плохого кода...

Должны быть красивые, понятные конструкции, а не набор скобочек и кавычек.

AVL2 ★★★★★
()
Ответ на: комментарий от DILIN

Смотри бенчи. РОР в последних рядах.

AVL2 ★★★★★
()
Ответ на: комментарий от KDE41user

Делаешь чекаут транка - и вперед.

Да, видно птицу по полету, а добра молодца по соплям... Никогда не видел, как от тривиальной смены версии в номере релиза что-нибудь отваливается? :-)

no-dashi ★★★★★
()
Ответ на: комментарий от DNA_Seq

Знаешь чем написание рассказа отличается от написания инструкции? При написании рассказа рассчитываешь что читатель процентов 70 додумает самостоятельно а при написании инструкции пытаешься сформулировать так чтоб читатель не подумал ничего сверх того что там описано.

Ржу. Ну и какое это отношение имеет к кодингу?

mashina ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.