LINUX.ORG.RU

Выпущена новая (v1.8) версия N2O, популярного веб-фреймворка на Erlang

 ,


0

4

N2O разрабатывался как многофункциональный websocket-сервер приложений широкого назначения. Будучи ответвлен изначально от классического сервер-рендер фреймворка Nitrogen, он развился в мощное средство (включающее и поддержку SPA-приложений) обеспечения пула долгоживущих TCP-соединений и доставки кода/данных, выступая в качестве высокоемкостного релея, благодаря надежной и высокоустойчивой платформе Erlang/OTP.

Соединяя в себе все черты full-stack веб-фреймворков — роутинг, шаблоны, Pub/Sub, сессии, хранилище, REST и поддержка собственных протоколов — N2O добавляет совершенно уникальные возможности для создания различных DSL. Вы можете транслировать в JavaScript бизнес-логику, написанную на языках Erlang (Elixir, Erlang, Joxa), генерировать трансформации Erlang-записей в JSON, определять JavaScript-протоколы на языке Erlang и многое другое.

Сейчас N2O развивается в сторону поддержки SVG-клиентов и бинарных протоколов.

Основные изменения в версии 1.8:

  • полная семантическая верстка HTML5 в DSL;
  • автоматические реконнекты;
  • новый сессионный менеджер автогенерируемых логинов;
  • расширение бинарного протокола для Data-on-Wire;
  • зависимость от jQuery стала опциональной;
  • Shen: компилятор JavaScript из Erlang;
  • улучшенная rebar-совместимая система сборки MAD;
  • возможность запаковать сайт в виде исполняемого файла, который можно запустить на Windows, Linux и Mac;
  • улучшенный REST-эндпойнт;
  • возможность создания SPA-приложений;
  • новые примеры приложений Skyline (DSL) и Games (SPA).
  • улучшенный Secure сериализатор;
  • вышла книга по N2O.

Страница проекта на GitHub: https://github.com/5HT/n2o

Домашняя страница: https://synrc.com/apps/n2o/

Презентация: http://slides.com/maximsokhatsky/n2o

★★★★★

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

Это его какой-то агрессивный мужик делает? Вроде он на ДОУ на людей бросался. Хотя может и не он

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 1)

Вот и узнали какое именно вещество принимают те, кто пишут на Erlang.

najlus ★★★★★
()

Erlang рекордов

это сильно) в книгу гиннесса попадёт?

А вообще возможности впечатляют.

nanoolinux ★★★★
()
Последнее исправление: nanoolinux (всего исправлений: 2)
Ответ на: комментарий от MiniRoboDancer

тред еще не начался а граммар наци уже пригорели

anonymous
()

Я бы за такой перевод звезду снимал бы с ходу.

soslow
()

аппликейшин

реконнекты

эндпойнт

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

Если упоротого буддиста считать агрессивным, то видимо он.

outtaspace ★★★
()

Erlang веб фреймворка N2O

Снова отвратительная калька с английского.

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

Популярного среди кого?

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

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

Например среди тех, кому охота наверстать напичканную рабочим жабоскриптом страницу, не зная вообще джаваскрипта.

Не зная жабоскрипта, но зная эрланг. Четко, зыко.

anonymous
()

N2O? Типа ... в лужу?

Pavval ★★★★★
()

Традиционно:

Вышла новая версия 1.8 популярного Erlang веб фреймворка N2O
Проверено: Shaman007 (25.08.2014 21:00:58)

AP ★★★★★
()

N₂0

Чтение его исходников вызывает дикий, непрекращающийся ржач?

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

А какие еще framework'и умеют генерировать js? Писать всякие SPA и RIA не ныряя в океан говна под названием JavaScript очень заманчиво.

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

Писать всякие SPA и RIA не ныряя в океан говна

Эти подходы используется там, где *не* нужна индексация кравлерами, не требуется поддержка хорошего отображения для юзеров с NoScript, и необходимо активное взаимодействие с юзером. Т.е. сабж для узкого круга задач.

А какие еще framework'и умеют генерировать js?

Говорят, что GWT (java). Там несколько иной подход.

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

В нитрогене был очень серверо-зависимый js. Даже для сложения двух чисел по js может полезть на сервер по ajax'у. Потому что erlang-код компилится в erlang-байткод, и исполняется только на сервере, а не на клиенте.
У сабжа есть shen, который может исполнять erlang в js, но это уже попахивает толстейшим велосипедом.

shahid ★★★★★
()
Последнее исправление: shahid (всего исправлений: 1)
Ответ на: комментарий от shahid

индексацию кравлерами можно сделать с помощью специальных контент-страниц ("http://yourwebsite.com/?_escaped_fragment_=/some/page/with/ajax/content") которые можно автоматически генерировать.

юзеры с noscript - неадекватны, их поддержка как раз и есть узкая задача для психиатрических клиник

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

кравлерами можно сделать с помощью специальных контент-страниц

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

юзеры с noscript - неадекватны, их поддержка как раз и есть узкая задача для психиатрических клиник

Так и запишем: все кравлеры, генерящие превьюшки и индексирующие содержимое — в клинику.

UPD: ЕМНИП, яндекс не умеет индексировать ajax escaped_fragment. Как и почти все поисковики кроме гугла.

shahid ★★★★★
()
Последнее исправление: shahid (всего исправлений: 2)
Ответ на: комментарий от shahid

я сейчас как раз с этим разбираюсь ;)

наверное в escaped_fragment не нужно осмысленного контента. Всё равно эту страницу никто читать не будет.

пока просто беру из sql-базы весь текстовый контент, помеченный как принадлежащий этой странице и вываливаю кашей.

яндекс

зачем он нужен?

хватит разврата, давайте закопаем его уже

когда по санкциям запретят Гугл, тогда и откопаем. Но т.к. этого не произойдет никогда, закопаем на веки вечные.

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

Даже для сложения двух чисел по js может полезть на сервер по ajax'у.

Так это скорее плюс. А вообще давно пора для RIA пилить какой-нибудь NaCl и с js парашей не связываться.

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

Долго вспоминал что в UT'99 значил Ace, пока знакомые задроты не подсказали.

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

юзеры с noscript - неадекватны, их поддержка как раз и есть узкая задача для психиатрических клиник

Разработчики сайтов на js - неадекватны, их поддержка - узкая задача для психиатрических клиник

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

я сейчас как раз с этим разбираюсь ;)

Кто не помнит своего прошлого, обречен пережить его вновь. (с)
Лучше сразу закопай идею писать сайт в виде SPA. Просто закопай навсегда. Не повторяй чужих ошибок.

яндекс
зачем он нужен?
хватит разврата, давайте закопаем его уже

Необходимость белого SEO под яндекс с гуглом это не отменяет.

когда по санкциям запретят Гугл, тогда и откопаем

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

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

У сабжа есть shen, который может исполнять erlang в js, но это уже попахивает толстейшим велосипедом.

Автор недавно объяснил, что это абсолютно опционально, и сделал он это исключительно потому, что его троллили кложурскриптовцы.

kost-bebix ★★
()
Ответ на: вот тут примеры от synrc

Ну это все котята...

...хотелось бы посмотреть рабочий пример с кнопками и другими контролами как в демках предшественника.

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

неадекватны

ненужно

И давно тебя дизайнеры ябла покусали?

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

Такой страницы нет, потому что элементы Nitrogen почти такие же как N2O. Например какой смысл выкладывать и адаптировать Base64 аплоадер, если в N2O можно сделать Binary uploader. Но большинство Nitrgen элементов, в том числе и дополнительных достаточно легко переносятся, так как N2O — совместимый с Nitrogen по своему DSL.

Многие примеры стандартных элементов вы можете увидеть в Skyline приложении, а также feed_ui в дополнительной библиотеке для линейных списков в вебе https://github.com/synrc/feeds

К сожалению N2O не поддерживает XHR реквесты, разве что в режиме совместимости. Все события представлены, как Erlang-записи и передаются в бинарном виде между клиентом и сервером.

Многие AJAX элементы поэтому были убраны из этого набора. Интерфейс взаимодействия построен на javascript протоколе: https://synrc.com/apps/n2o/doc/web/protocol.htm

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

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

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

Простите, не совсем понимаю вашего вопроса. Вот исходиники сайта: https://github.com/synrc/skyline/tree/master/apps/web/src В каждом файле функции event/1 (с одним параметром) — это обработчики. Других обработчиков нет.

Вот пример страницы сделаной в DSL (/chat): https://github.com/synrc/skyline/blob/master/apps/web/src/chat.erl

Вот пример страницы сделаной в DTL шаблоне: https://github.com/synrc/skyline/blob/master/apps/web/src/login.erСам шаблон тут: https://github.com/synrc/skyline/blob/master/apps/web/priv/templates/login.dtl

На этом примере можно сравнить HTML и DSL верстку.

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

живые демо этих исходников где можно посмотреть?

anonymous
()

Шесть месяцев назад я нашёл в Интернете книжку «Introducing Erlang». Странная книжка, толстая, да ещё на не русском языке. Усердно прочитал её, методично и вдумываясь, но таки ничего и не понял. Но что-то не отпускало меня - я пошёл на erlang.org и стал изучать стандартную библиотеку, старательно, скурпулёзно, от корки до корки. Гугля примеры кода, я наткнулся на пост в блоге одного гуру, где было написано про OTP. То, что рассказывал этот умудрённый опытом кодер, настолько впечатлило меня, что я словно в припадке безумия бросился зубрить эту открытую телеком платформу. У меня тряслись руки, по телу прокатывали волны возбуждения, я, можно сказать, бился в экстазе всё это время - и теперь могу процитировать наизусть любой пункт, даже если меня разбудить посреди глубокой ночи.

Новые знания окрыляли меня, я бросился писать (что бы вы подумали?) очередную динамическую опердень. Я не писал раньше оперденей, эта была моей первой. По пути пришлось освоить азы функционального программирования, но там всё оказалось совсем не сложно.

Я плавно двигался вперёд, наращивая функционал. И знаете что? Я упёрся в недостаток производительности. Ну, так мне показалось. Я делал замеры, устранял места с тяжёлым кодом. Тысячи раз запускал канпуктер, но так и не сумел перейти порог в 30000 запросов в секунду. Я как-то ожидал большего и был немного разочарован.

Гугл, снова гугл. Десятки статей и тем на форуме... Довольно быстро я заметил, что люди часто пишут про какой-то «N2O фреймворк». Часто встречались названия Cowboy и Nitrogen. Я прочитал про них подробнее - и был просто ошеломлён. Как мне это раньше не приходило в голову?! Это же, это просто гениально, чёрт меня побери!

Исходники в ведро продакшен и всё переписать! Меня переполняло новое знание, поток мыслей ровно ложился в строчки кода. Я просто не мог остановиться. Чашка кофе... Ещё чашка... Мой небольшой кусочек софта приобретал кристалльную чистоту, я смертельно устал, но продолжал в умилении полировать его зудящими руками, нанося последние штрихи.

Пятьдесят тысяч. Я получил производительность в пятьдесят тысяч запросов в секунду. В ту ночь я так и не смог заснуть.

Наиувлекательнейший мир хай-лоада открылся передо мной. Позже я изучил ещё много классных вещей типа сверхбыстрых QLC запросов, или, например, такого необычного подхода к обработке данных, как list-comprehension.

Это уже был другой я, новый, обновлённый. С незашоренным взглядом, с жаждой новых знаний и незнакомых концепций. Я летел вперёд, оставляя за спиной ступень за ступенью.

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

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

anonymous
()

Сейчас N2O развивается в сторону поддержки SVG-клиентов и бинарных протоколов.

векторный гипертекстовый?

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