Re[5]: Node.js
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 12.12.11 06:37
Оценка: 12 (3) :))) :))
Здравствуйте, Marty, Вы писали:

M>По ссылкам сходил, но ничего не понял. Понял только то, что node.js — http-сервер на JavaScripte движка V8 от гугл. Что за звери остальные, не понял. Вообще, имхо, человеку далекому от js так сразу все не осознать.


О проекте node.js

Учите английский, блядь! Это серверный однопоточный джаваскрипт-движок на событиях (libev), состоящий из гугловского якобы высокопроизводительного JIT-компилятора V8 и библиотеки асинхронного ввода-вывода к нему. В библиотеке присутствует HTTP-сервер, что позволяет получить что-то в духе эрланговского MochiWeb и питоновского TornadoWeb, но позволяющее писать клиентский (браузерный/AJAX) и серверный ('cкрипты') код на одном языке. Ну и конечно геморрой в стиле mod_perl + POE вам обеспечен. Тем не менее, говорят, это прогрессивно и круто. (Шутка)

Для особо одарённых, уточняю. Вышеперечисленное включает: вонючую, но встроенную вариацию memcached; невозможность без плясок с бубном, не снившихся питоновцам, задействовать более одного ядра; новые уязвимости из-за паразитной передачи данных в параллельно исполняющийся запрос; падучесть всей VM вместе с вашими фронт-эндом и бэк-эндом в стиле легендарной DOS при зацикливании или непойманном исключении в любом из обработчиков событий; возможность неправильно реализовать HTTP; феерический пул потоков для исполнения в нём unlink(); развесистые монады при вводе-выводе, не снившиеся хаскеллистам; ну и, конечно же, необходимость писать юнит-тесты на каждый чих, потому что только джедаи в состоянии безошибочно разыменовать хеш массивов хешей хешей массивов, а а компилятор попытки присвоить ёжику зайчика не ловит.

Но и это ещё не всё! Для затягивания сроков и удорожания разработки система включает: иллюзию эрланговской изоляции посредством порождения дочерних песочниц в рамках одного потока; циклы перебора байтиков в буфере в стиле Паскаля с неявным алиасингом; отсутствие возможности читать файлы построчно.

http://node-js.prcn.co.cc/#rus
Re[2]: Node.js
От: BulatZiganshin  
Дата: 11.12.11 21:51
Оценка: 6 (1)
Здравствуйте, icezone, Вы писали:

BZ>>т.е. чтобы получить высокопроизводительный веб-сайт с поддержкой темплейтов, достаточно установить node.js+zappa (или express, или coffee-script, если хотите более отработанные решения), после чего можно описать весь свой сайт с темплейтами хоть в одном скрипте, положить в другие файлы контент, запустить node app.js и всё


I>А в чем профит? По сравнению с обычным LAMP?


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

вообще сейчас популярны асхинхронные веб-сервера — такие где крутится всего один или несколько OS threads, каждый из которых может одновременно обрабатывать тысячи входящих соединений. наиболее производительным и популярным из них является nginx, есть даже сборка с LuaJit. конфиг-файлы у него поприятней, но как и в апаче, они не программируются. бибилиотека функций, доступных в Lua, невелика, а внешних библиотек нет вообще

и наконец node.js: это полноценный веб-сервер приложений, на нём в программной форме создаётся веб-сервер, диспетчеры запросов, middleware (это функции, которые могут обрабатывать и изменять каждый приходящий запрос, скажем logger, gzip, cache, jsMinify и т.д.). что это даёт: во-первых, настройки не раскиданы принудительно по разным файлам и технологиям, я могу логически разбить их по файлам так, как сам считаю нужным. во-вторых, поскольку это обычные программы, к ним применим весь спектр технологий программирования (я имею в виду циклы, if'ы, подпрограммы, даже смену ЯП), как это и демонстрирует zappa

в общем, это one-stop solution для того, кому нужно создать сайт с нуля. вместо изучения LAMP/asp.net достаточно пролистать вышеприведённый материал и можно начинать творить. высокая производительность гарантирована

если же ты уже давно освоил и настроил LAMP, то интересным может быть разве что добавление динамики сайту (хотя вероятно и это в php есть — всякие websockets)
Люди, я люблю вас! Будьте бдительны!!!
Re[5]: Node.js
От: BulatZiganshin  
Дата: 11.12.11 22:16
Оценка: 6 (1)
Здравствуйте, Marty, Вы писали:

M>>>А что это за технологии и как ими пользоваться?

M>По ссылкам сходил, но ничего не понял. Понял только то, что node.js — http-сервер на JavaScripte движка V8 от гугл. Что за звери остальные, не понял. Вообще, имхо, человеку далекому от js так сразу все не осознать.

ты не поверишь, но node.js я тоже изучаю всего несколько дней, а js/cs не знаю вообще — вчера написал первую программу на js, сегодня — первую на cs, поминутно заглядывая в справочник и пытаясь перебором найти нужный синтаксис

что изучал я — быстренько просмотрел доку по nodejs, увидел наличие fs/http/timers и понял, что на этом можно написать веб-сервер с частичной генерацией контента на лету — что мне собственно и нужно. затем залез в список рекомендуемых модулей и начал изучать их. в доке по connect увидел, что он реализует всю базовую функциональность, необходимую веб-серверу. в описании express увидел, что с его помощью этот веб-сервер очень удобно конфигурируется, плюс есть шаблонизаторы страниц (views). затем стал изучать список модулей по категориям, просто чтобы составить общее впечатление, плюс на сайте npm изучил что делают наиболее популярные модули. вышел на этот модуль zappa, поставил его вместе с coffee-script и дешаблонизатором:

npm install zappa coffee-script htmlkup -g

вытащил из zappa crash course простенькое приложение на zappa:
{@app} = require('zappa') ->
  @enable 'default layout'
  @use 'static'

  @get '/': ->
    @render index: {foo: 'bar'}

  @view index: ->
    @title = 'Node.js site'
    h1 @title
    p @foo


и запустил его: coffee zappa.coffee

затем попробовал превратить странички своего сайта в cs-шаблоны: htmlkup <index.htm >index.cs и поэкспериментировал с их динамической генерацией. ну и наконец, изучая список пакетов, набрёл на vnstat.js, написанный на чистом node.js api, и попробовал переписать его с помощью zappa. результат мне так понравился, что я захотел им поделиться
Люди, я люблю вас! Будьте бдительны!!!
Node.js
От: BulatZiganshin  
Дата: 11.12.11 17:24
Оценка: 2 (1)
хочу поделиться своей небольшой демонстрацией этой технологии: http://freearc.org:1338/

исходник: http://pastebin.com/uemz3cJV — 43 строчки, в которые входит реализация веб-сервера, html-темплейты и логика приложения. единственное что берётся снаружи — css и сама программа vnstat, выдающая все эти отчёты

используемые технологии: zappa, express, connect, node.js

отмечу, что в отличии от rails и т.п. node.js — это полноценный высокопроизводительный веб-сервер, способный на обычном железе обслуживать 7 тысяч запросов В СЕКУНДУ, работать со статикой, формами, куками, сессиями и всем остальным. в общем, аналогично nginx. с другой стороны, это полноценный сервер приложений, не требующий fcgi, под который созданы тысячи библиотек (одних только templating solutions я насчитал под сотню)

т.е. чтобы получить высокопроизводительный веб-сайт с поддержкой темплейтов, достаточно установить node.js+zappa (или express, или coffee-script, если хотите более отработанные решения), после чего можно описать весь свой сайт с темплейтами хоть в одном скрипте, положить в другие файлы контент, запустить node app.js и всё
Люди, я люблю вас! Будьте бдительны!!!
Re: Node.js
От: lozzy  
Дата: 11.12.11 17:41
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

BZ>т.е. чтобы получить высокопроизводительный веб-сайт с поддержкой темплейтов, достаточно установить node.js+zappa (или express, или coffee-script, если хотите более отработанные решения), после чего можно описать весь свой сайт с темплейтами хоть в одном скрипте, положить в другие файлы контент, запустить node app.js и всё


Для чего это все? В качестве спортивного интереса?
Re: Node.js
От: icezone  
Дата: 11.12.11 18:23
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

BZ>т.е. чтобы получить высокопроизводительный веб-сайт с поддержкой темплейтов, достаточно установить node.js+zappa (или express, или coffee-script, если хотите более отработанные решения), после чего можно описать весь свой сайт с темплейтами хоть в одном скрипте, положить в другие файлы контент, запустить node app.js и всё


А в чем профит? По сравнению с обычным LAMP?
Re[2]: Node.js
От: grosborn  
Дата: 11.12.11 18:54
Оценка:
> А в чем профит? По сравнению с обычным LAMP?

Я как бы не очень в этом всем разбираюсь, но гламп это проблемы с производительностью, масштабированием, читабельностью кода, разработкой и отладкой. Связка C++ и V8 как бы способна решить первые три, не знаю что у них с четвертой.
Posted via RSDN NNTP Server 2.1 beta
Забанен на рсдн за применение слова "Маргинал"
Re[3]: Node.js
От: lozzy  
Дата: 11.12.11 19:03
Оценка:
Здравствуйте, grosborn, Вы писали:

G>Я как бы не очень в этом всем разбираюсь, но гламп это проблемы с производительностью, масштабированием, читабельностью кода, разработкой и отладкой. Связка C++ и V8 как бы способна решить первые три, не знаю что у них с четвертой.


Не хотелось бы устраивать холивар, но у меня строго противоположенное мнение — С++ это как раз и есть

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


Особенно последние четыре пункта Попробуй пописать вебсервисы или там сайт какой на плюсах — поржем вместе
Re[4]: Node.js
От: grosborn  
Дата: 11.12.11 19:12
Оценка:
> Особенно последние четыре пункта Попробуй пописать вебсервисы или там сайт какой на плюсах — поржем вместе

Не, на C++ там низкоуровневые библиотеки, для кодирования сайта Java.
Posted via RSDN NNTP Server 2.1 beta
Забанен на рсдн за применение слова "Маргинал"
Re[4]: Node.js
От: grosborn  
Дата: 11.12.11 19:14
Оценка:
V8 это ява, если ты не в курсе
Posted via RSDN NNTP Server 2.1 beta
Забанен на рсдн за применение слова "Маргинал"
Re: Node.js
От: BulatZiganshin  
Дата: 11.12.11 19:19
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

BZ>исходник: http://pastebin.com/uemz3cJV — 43 строчки, в которые входит реализация веб-сервера, html-темплейты и логика приложения. единственное что берётся снаружи — css и сама программа vnstat, выдающая все эти отчёты


то же с нормальной подсветкой:
Люди, я люблю вас! Будьте бдительны!!!
Re[3]: Node.js
От: BulatZiganshin  
Дата: 11.12.11 19:20
Оценка:
Здравствуйте, grosborn, Вы писали:

G>Я как бы не очень в этом всем разбираюсь, но гламп это проблемы с производительностью, масштабированием, читабельностью кода, разработкой и отладкой. Связка C++ и V8 как бы способна решить первые три, не знаю что у них с четвертой.


C++ как средства разработки в node.js нет никаким боком
Люди, я люблю вас! Будьте бдительны!!!
Re[4]: Node.js
От: grosborn  
Дата: 11.12.11 19:23
Оценка:
> C++ как средства разработки в node.js нет никаким боком

Спасибо, капитан
Posted via RSDN NNTP Server 2.1 beta
Забанен на рсдн за применение слова "Маргинал"
Re[2]: Node.js
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 11.12.11 19:36
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

BZ>Здравствуйте, BulatZiganshin, Вы писали:


BZ>>исходник: http://pastebin.com/uemz3cJV — 43 строчки, в которые входит реализация веб-сервера, html-темплейты и логика приложения. единственное что берётся снаружи — css и сама программа vnstat, выдающая все эти отчёты


BZ>то же с нормальной подсветкой:

BZ>

А что это за технологии и как ими пользоваться?
Попробовал поискать, но ничего особо внятного не нашел, только о node.js нашел краткое описание
Маньяк Робокряк колесит по городу
Re[3]: Node.js
От: BulatZiganshin  
Дата: 11.12.11 19:48
Оценка:
Здравствуйте, Marty, Вы писали:

M>А что это за технологии и как ими пользоваться?

M>Попробовал поискать, но ничего особо внятного не нашел, только о node.js нашел краткое описание

а по ссылкам в первом посте уже всё прочёл?
Люди, я люблю вас! Будьте бдительны!!!
Re[3]: Node.js
От: Alex912  
Дата: 11.12.11 19:51
Оценка:
Здравствуйте, Marty, Вы писали:

M>Здравствуйте, BulatZiganshin, Вы писали:


BZ>>Здравствуйте, BulatZiganshin, Вы писали:


BZ>>>исходник: http://pastebin.com/uemz3cJV — 43 строчки, в которые входит реализация веб-сервера, html-темплейты и логика приложения. единственное что берётся снаружи — css и сама программа vnstat, выдающая все эти отчёты


BZ>>то же с нормальной подсветкой:

BZ>>

M>А что это за технологии и как ими пользоваться?

M>Попробовал поискать, но ничего особо внятного не нашел, только о node.js нашел краткое описание

Хмм, там же вроде бы прямые ссылки даны. По ссылыкам можно примеры посмотреть. По некоторым даже видео есть.
Re[5]: Node.js
От: _Oleg_ Украина  
Дата: 11.12.11 19:59
Оценка:
Здравствуйте, grosborn, Вы писали:

G>V8 это ява, если ты не в курсе


V8 is written in C++ and is used in Google Chrome, the open source browser from Google.
http://code.google.com/p/v8/

Подразумевается читабельность кода JavaScript.
И вообще на Node.js исходники действительно красивые получаются.
Re[4]: Node.js
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 11.12.11 20:01
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

M>>А что это за технологии и как ими пользоваться?

M>>Попробовал поискать, но ничего особо внятного не нашел, только о node.js нашел краткое описание

BZ>а по ссылкам в первом посте уже всё прочёл?

По ссылкам сходил, но ничего не понял. Понял только то, что node.js — http-сервер на JavaScripte движка V8 от гугл. Что за звери остальные, не понял. Вообще, имхо, человеку далекому от js так сразу все не осознать.
Маньяк Робокряк колесит по городу
Re[5]: Node.js
От: mymuss  
Дата: 11.12.11 20:02
Оценка:
Здравствуйте, grosborn, Вы писали:

G>V8 это ява, если ты не в курсе


Это что-то новое. V8 движок написан на С++.
http://code.google.com/apis/v8/
Re[6]: Node.js
От: grosborn  
Дата: 11.12.11 20:07
Оценка:
> G>V8 это ява, если ты не в курсе
>
> Это что-то новое. V8 движок написан на С++.
> http://code.google.com/apis/v8/

Спасибо, капитаны
Posted via RSDN NNTP Server 2.1 beta
Забанен на рсдн за применение слова "Маргинал"
Re[3]: Node.js
От: icezone  
Дата: 11.12.11 22:35
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

BZ>если же ты уже давно освоил и настроил LAMP, то интересным может быть разве что добавление динамики сайту (хотя вероятно и это в php есть — всякие websockets)


Прикручиваем на фронтенд nginx и в бой. Не нравится мне вся эта истерия с использованием javascript где попало.
Re[6]: Node.js
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 11.12.11 22:36
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

BZ>ты не поверишь, но node.js я тоже изучаю всего несколько дней, а js/cs не знаю вообще — вчера написал первую программу на js, сегодня — первую на cs, поминутно заглядывая в справочник и пытаясь перебором найти нужный синтаксис


Предлагаешь тоже несколько дней потратить, чтобы понять, о чем было твое сообщение?
А по существу вопроса — спасибо, что расписал. Стало понятно, что за зверь, перспектива использования и тп.
Маньяк Робокряк колесит по городу
Re: Node.js
От: hrensgory Россия  
Дата: 12.12.11 08:28
Оценка:
On 11.12.2011 21:24, BulatZiganshin wrote:

Одни субподрядчики сделали нам систему на этом "суперпроизводительном"
node.js, но когда дело дошло до production — node.js отправился в сад,
его место успешно занял glassfish-3.1.1.

Чего и вам желаю.

--
WBR,
Serge.
Posted via RSDN NNTP Server 2.1 beta
Re[2]: Node.js
От: grosborn  
Дата: 12.12.11 12:08
Оценка:
> Одни субподрядчики сделали нам систему на этом "суперпроизводительном"
> node.js, но когда дело дошло до production — node.js отправился в сад,
> его место успешно занял glassfish-3.1.1.
>
> Чего и вам желаю.

То есть код просто портировали на glassfish?
А основные недостатки нода в чем?
Posted via RSDN NNTP Server 2.1 beta
Забанен на рсдн за применение слова "Маргинал"
Re[3]: Node.js
От: hrensgory Россия  
Дата: 12.12.11 12:27
Оценка:
On 12.12.2011 16:08, grosborn wrote:
>
> То есть код просто портировали на glassfish?
Переписали на яву, благо его было не так много.

> А основные недостатки нода в чем?

Основной и единственный недостаток нода в том, что писать под него нужно
на javascript. При этом выяснилось что там "того нет, это не работает, а
с этим есть нюансы", вообщем переписать всё на яву оказалось самым
простым и эффективным решением. Про 7 тыщ запросов в секунду это конечно
мощно, но напоминает анекдот про секретаршу которая печатала 300
символов в минуту ("Да, правда могу 300 симв./мин. Но такая фигня
получается").

--
WBR,
Serge.
Posted via RSDN NNTP Server 2.1 beta
Re: Node.js
От: Young yunoshev.ru
Дата: 12.12.11 14:01
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

** оффтопик
С нетерпением жду, когда пощупаешь erlang и так же будешь агитировать...

Хинт: хотя, не такой и оффтопик
Re[3]: Node.js
От: Tom Россия http://www.RSDN.ru
Дата: 12.12.11 15:22
Оценка:
BZ>вообще сейчас популярны асхинхронные веб-сервера — такие где крутится всего один или несколько OS threads, каждый из которых может одновременно обрабатывать тысячи входящих соединений. наиболее производительным и популярным из них является nginx
Жалко правда что у RSDN-а с этим nginx постоянные проблемы его, т.е с nginx производительностью
Это я так, к слову.
Народная мудрось
всем все никому ничего(с).
Re[6]: Node.js
От: AnonThisTime  
Дата: 12.12.11 15:24
Оценка:
BZ>npm install zappa coffee-script htmlkup -g

BZ>вытащил из zappa crash course простенькое приложение на zappa:

BZ>
{@app} = require('zappa') ->
BZ>  @enable 'default layout'
BZ>  @use 'static'

BZ>  @get '/': ->
BZ>    @render index: {foo: 'bar'}

BZ>  @view index: ->
BZ>    @title = 'Node.js site'
BZ>    h1 @title
BZ>    p @foo


BZ>и запустил его: coffee zappa.coffee


в рот мне ноги от такого синтаксиса...
Re[2]: Node.js
От: BulatZiganshin  
Дата: 12.12.11 16:19
Оценка:
Здравствуйте, Young, Вы писали:

Y>С нетерпением жду, когда пощупаешь erlang и так же будешь агитировать...


а почему ты сам не хочешь это делать?
Люди, я люблю вас! Будьте бдительны!!!
Re: Node.js
От: BulatZiganshin  
Дата: 12.12.11 16:46
Оценка:
о многопоточности в различных веб-платформах:

haskell/ghc: выглядит идеально. рантайм умеет запускать тысячи green threads и шедулить их на несколько потоков ОС, при блокирующих внешних вызовах (в C land) рантайм автоматически создаёт себе новые треды, так что другие green threads не блокируются. afaik, I/O реализуется через epoll, так что по крайней мере в Linux не будет блокировки по I/O и масштабируемость ничем не ограничена. синхронный I/O не блокирует остальные green threads

javascript/V8/node.js: один поток ОС, в котором крутится один поток javascript/V8 (разбор от автора nginx). иллюзия многопоточности реализуется за счёт того что все I/O функции принимают в качестве параметра колбек — т.е. работа скрипта на этом обычно завершается, зато шедулится новый скрипт, переданный как колбек

Lua/nginx: один поток ОС, кооперативные Lua green threads с неблокирующим синхронным I/O

в остальных платформах я ориентируюсь плохо:

erlang: вроде как раз для этого и создан, но не знаю как там сейчас положение дел

ruby/rack/sinatra: один поток ОС, вытесняющие green threads с асинхронным I/O (синхронный блокирует)

python/wsgi/?: один поток ОС, доп. потоки для вызовов С и I/O(?), вытесняющие green threads
Люди, я люблю вас! Будьте бдительны!!!
Re: Node.js
От: BulatZiganshin  
Дата: 12.12.11 22:47
Оценка:
обнаружилось два сервиса, бесплатно хостящих node.js apps:

http://wiki.joyent.com/display/node/Node.js+SmartMachine+FAQ
http://devcenter.heroku.com/articles/node-js

почему-то в оба советуют деплоиться через git. то ли это просто удобней, то ли принципиальное ограничение
Люди, я люблю вас! Будьте бдительны!!!
Re[2]: Node.js
От: Volgare  
Дата: 15.12.11 09:34
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

BZ>обнаружилось два сервиса, бесплатно хостящих node.js apps:


BZ>http://wiki.joyent.com/display/node/Node.js+SmartMachine+FAQ

BZ>http://devcenter.heroku.com/articles/node-js

BZ>почему-то в оба советуют деплоиться через git. то ли это просто удобней, то ли принципиальное ограничение


Ну как есть подвижки в изучении?
У меня, по непонятным причинам, некоторые примеры для node.js не хотят работать. Связываю это с тем, что работаю под виндой. А эти хостинги со своим git`ом реально парят. Не привык я работать с командной строкой
Re[3]: Node.js
От: BulatZiganshin  
Дата: 15.12.11 21:29
Оценка:
Здравствуйте, Volgare, Вы писали:

V>У меня, по непонятным причинам, некоторые примеры для node.js не хотят работать. Связываю это с тем, что работаю под виндой. А эти хостинги со своим git`ом реально парят. Не привык я работать с командной строкой


вот что получилось на нынешний момент: http://jsapp.us/s/250.coffee
контент страниц складывается в файлы views/Default.htm, views/Download.htm и т.д. в общем-то это то, что мне нужно, но не хватает ещё умного кеширования и сжатия

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

вот ещё немного ссылок: http://forum.nodejs.ru/index.php/topic,304.0.html
Люди, я люблю вас! Будьте бдительны!!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.