Обновить
Комментарии 32
>веб-сервер
>Erlang
как говорится, «ололошеньки ололо»
Эээм… А можно чуть подробнее?
Чем вам не нравится сочетание этих двух слов?
а. уже дошло.
рыбина обозначает рыбину.
вы совершено правы!
это лого :)
у меня поначалу возникли ассоциации с perl-artом,
и заподозрился тайный смысл в этом сочетании символов.
Так нечестно вообще. Эта рыбина слишком похожа на мой аватар.
Только плывет в другую сторону :)
хм… а yaws что никому не нравиться или как?
не yaws-ом единым живет мир Эрланга :)
нуда :) разнообразие это хорошо :) просто явс уже в продакшене проверен :)
Угу. Но мисултин предполагается как более простой и легкий.
Я пытался пользоваться- падает он. Непонятно почему.
На чем падает?
Какие ошибки? Какая версия?
yaws мне кажется большой и сложный c кучей функциональности
просвятите кто нибудь: где это можно применить?
Например, для создания нагруженных REST сервисов.
Благодаря особенностям синтаксиса Эрланга, определение УРЛа получается очень красивым:

% handle a GET on /
handle('GET', [], Req) ->
Req:ok(«Main home page.»);

% handle a GET on /users
handle('GET', [«users»], Req) ->
Req:ok(«Main users root.»);

% handle a GET on /users/{username}
handle('GET', [«users», UserName], Req) ->
Req:ok(«This is ~s's page.», [UserName]);

% handle a GET on /users/{username}/messages
handle('GET', [«users», UserName, «messages»], Req) ->
Req:ok(«This is ~s's messages page.», [UserName]);

% handle the 404 page not found
handle(_, _, Req) ->
Req:ok(«Page not found.»).
Не особенностям синтаксиса Эрланга, а паттерн матчингу. В Scheme примерно так же.
(define-values (users-dispatch users-url)
  (dispatch-rules
   [("") (λ (req) "Main home page.")]
   [("users") (λ (req) "Main users root.")]
   [("users" UserName) (λ (req UserName) (string-append "This is " UserName "'s page"))]
   [("users" UserName "messages") (λ (req UserName) (string-append "This is " UserName "'s messages page"))]
   [else (λ (req) "Page not found.")]))
Соглашусь. Это паттерн-матчинг, характерный для функцональных языков.
> В этом плане проект напоминает mochiweb

по-моему он вообще напоминает mochiweb :)
Лучше ngnix пока не встречал. Даже одноклассники снимает шляпу перед Cысоева
Весь нагруженный рунет работает на nginx :) И даже запад приобщается :)
Но это разные проекты: nginx — в первую очередь статика и прокся, misultin — для днамическоего конента, напр REST сервисов.
Использование nginx совершенно не исключает использование другого ПО. Я бы даже сказал, что бэкэндовые апстримы только приветствуются.
смущает, немного неуклюжая, работа со строками и не полная поддержка юникода.
Все самые высокопроизводительные «места» выполнены на с++. Все классы http это подтверждают. Система паралельных процесоов и супервизора — весьма кошерна. Но работа со строками сильно огорчает. чОрт :)

Но, это функциональны язык. И как функциональный язык — он хорош.
Да, строки сделаные довольно странно. Меня самого это удивляет и приходится с этим бороться.
В сетевом сервисе большее внимание придется уделить скорости и надежности, чем удобству работы со строками. Чаще всего их нужно будет просто копировать с одного места в другое, может шаблоны какие-то обрабатывать.
Меня смутило то, что на один символ в строке, erlang тратит 8 байт. И если, допустим, просто вывод строки в UTF происходит без проблем, то операции изменения регистра и еже с ней сложные преобразования нужно писать самому.
Для мне окончательным аргуементом стало использование памяти при работе со строками. Если бы не это — писать мне распределенные много-нодовые вэб морды :) и бэк-энды к ним.

Для реализации серьезных функциональных алгоритмов — думаю решение идеальное. Многопоточность и контроль процессов реализованы как нигде.
Для большинства строк можно использовать binary — очень компактно.
Хочу написать крутой балансер на этой штуке!

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