Здравствуйте, 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(); развесистые монады при вводе-выводе, не снившиеся хаскеллистам; ну и, конечно же, необходимость писать юнит-тесты на каждый чих, потому что только джедаи в состоянии безошибочно разыменовать хеш массивов хешей хешей массивов, а а компилятор попытки присвоить ёжику зайчика не ловит.
Но и это ещё не всё! Для затягивания сроков и удорожания разработки система включает: иллюзию эрланговской изоляции посредством порождения дочерних песочниц в рамках одного потока; циклы перебора байтиков в буфере в стиле Паскаля с неявным алиасингом; отсутствие возможности читать файлы построчно.
Здравствуйте, 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)
Здравствуйте, 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:
затем попробовал превратить странички своего сайта в cs-шаблоны: htmlkup <index.htm >index.cs и поэкспериментировал с их динамической генерацией. ну и наконец, изучая список пакетов, набрёл на vnstat.js, написанный на чистом node.js api, и попробовал переписать его с помощью zappa. результат мне так понравился, что я захотел им поделиться
исходник: http://pastebin.com/uemz3cJV — 43 строчки, в которые входит реализация веб-сервера, html-темплейты и логика приложения. единственное что берётся снаружи — css и сама программа vnstat, выдающая все эти отчёты
отмечу, что в отличии от rails и т.п. node.js — это полноценный высокопроизводительный веб-сервер, способный на обычном железе обслуживать 7 тысяч запросов В СЕКУНДУ, работать со статикой, формами, куками, сессиями и всем остальным. в общем, аналогично nginx. с другой стороны, это полноценный сервер приложений, не требующий fcgi, под который созданы тысячи библиотек (одних только templating solutions я насчитал под сотню)
т.е. чтобы получить высокопроизводительный веб-сайт с поддержкой темплейтов, достаточно установить node.js+zappa (или express, или coffee-script, если хотите более отработанные решения), после чего можно описать весь свой сайт с темплейтами хоть в одном скрипте, положить в другие файлы контент, запустить node app.js и всё
Здравствуйте, BulatZiganshin, Вы писали:
BZ>т.е. чтобы получить высокопроизводительный веб-сайт с поддержкой темплейтов, достаточно установить node.js+zappa (или express, или coffee-script, если хотите более отработанные решения), после чего можно описать весь свой сайт с темплейтами хоть в одном скрипте, положить в другие файлы контент, запустить node app.js и всё
Для чего это все? В качестве спортивного интереса?
Здравствуйте, BulatZiganshin, Вы писали:
BZ>т.е. чтобы получить высокопроизводительный веб-сайт с поддержкой темплейтов, достаточно установить node.js+zappa (или express, или coffee-script, если хотите более отработанные решения), после чего можно описать весь свой сайт с темплейтами хоть в одном скрипте, положить в другие файлы контент, запустить node app.js и всё
Я как бы не очень в этом всем разбираюсь, но гламп это проблемы с производительностью, масштабированием, читабельностью кода, разработкой и отладкой. Связка C++ и V8 как бы способна решить первые три, не знаю что у них с четвертой.
Здравствуйте, grosborn, Вы писали:
G>Я как бы не очень в этом всем разбираюсь, но гламп это проблемы с производительностью, масштабированием, читабельностью кода, разработкой и отладкой. Связка C++ и V8 как бы способна решить первые три, не знаю что у них с четвертой.
Не хотелось бы устраивать холивар, но у меня строго противоположенное мнение — С++ это как раз и есть
проблемы с производительностью, масштабированием, читабельностью кода, разработкой и отладкой.
Особенно последние четыре пункта Попробуй пописать вебсервисы или там сайт какой на плюсах — поржем вместе
Здравствуйте, BulatZiganshin, Вы писали:
BZ>исходник: http://pastebin.com/uemz3cJV — 43 строчки, в которые входит реализация веб-сервера, html-темплейты и логика приложения. единственное что берётся снаружи — css и сама программа vnstat, выдающая все эти отчёты
Здравствуйте, grosborn, Вы писали:
G>Я как бы не очень в этом всем разбираюсь, но гламп это проблемы с производительностью, масштабированием, читабельностью кода, разработкой и отладкой. Связка C++ и V8 как бы способна решить первые три, не знаю что у них с четвертой.
C++ как средства разработки в node.js нет никаким боком
Здравствуйте, BulatZiganshin, Вы писали:
BZ>Здравствуйте, BulatZiganshin, Вы писали:
BZ>>исходник: http://pastebin.com/uemz3cJV — 43 строчки, в которые входит реализация веб-сервера, html-темплейты и логика приложения. единственное что берётся снаружи — css и сама программа vnstat, выдающая все эти отчёты
BZ>то же с нормальной подсветкой: BZ>
А что это за технологии и как ими пользоваться?
Попробовал поискать, но ничего особо внятного не нашел, только о node.js нашел краткое описание
Здравствуйте, Marty, Вы писали:
M>А что это за технологии и как ими пользоваться? M>Попробовал поискать, но ничего особо внятного не нашел, только о node.js нашел краткое описание
Здравствуйте, Marty, Вы писали:
M>Здравствуйте, BulatZiganshin, Вы писали:
BZ>>Здравствуйте, BulatZiganshin, Вы писали:
BZ>>>исходник: http://pastebin.com/uemz3cJV — 43 строчки, в которые входит реализация веб-сервера, html-темплейты и логика приложения. единственное что берётся снаружи — css и сама программа vnstat, выдающая все эти отчёты
BZ>>то же с нормальной подсветкой: BZ>>
M>А что это за технологии и как ими пользоваться? M>Попробовал поискать, но ничего особо внятного не нашел, только о node.js нашел краткое описание
Хмм, там же вроде бы прямые ссылки даны. По ссылыкам можно примеры посмотреть. По некоторым даже видео есть.
Здравствуйте, BulatZiganshin, Вы писали:
M>>А что это за технологии и как ими пользоваться? M>>Попробовал поискать, но ничего особо внятного не нашел, только о node.js нашел краткое описание
BZ>а по ссылкам в первом посте уже всё прочёл?
По ссылкам сходил, но ничего не понял. Понял только то, что node.js — http-сервер на JavaScripte движка V8 от гугл. Что за звери остальные, не понял. Вообще, имхо, человеку далекому от js так сразу все не осознать.
Здравствуйте, BulatZiganshin, Вы писали:
BZ>если же ты уже давно освоил и настроил LAMP, то интересным может быть разве что добавление динамики сайту (хотя вероятно и это в php есть — всякие websockets)
Прикручиваем на фронтенд nginx и в бой. Не нравится мне вся эта истерия с использованием javascript где попало.
Здравствуйте, BulatZiganshin, Вы писали:
BZ>ты не поверишь, но node.js я тоже изучаю всего несколько дней, а js/cs не знаю вообще — вчера написал первую программу на js, сегодня — первую на cs, поминутно заглядывая в справочник и пытаясь перебором найти нужный синтаксис
Предлагаешь тоже несколько дней потратить, чтобы понять, о чем было твое сообщение?
А по существу вопроса — спасибо, что расписал. Стало понятно, что за зверь, перспектива использования и тп.
Одни субподрядчики сделали нам систему на этом "суперпроизводительном"
node.js, но когда дело дошло до production — node.js отправился в сад,
его место успешно занял glassfish-3.1.1.
> Одни субподрядчики сделали нам систему на этом "суперпроизводительном" > node.js, но когда дело дошло до production — node.js отправился в сад, > его место успешно занял glassfish-3.1.1. > > Чего и вам желаю.
То есть код просто портировали на glassfish?
А основные недостатки нода в чем?
On 12.12.2011 16:08, grosborn wrote: > > То есть код просто портировали на glassfish?
Переписали на яву, благо его было не так много.
> А основные недостатки нода в чем?
Основной и единственный недостаток нода в том, что писать под него нужно
на javascript. При этом выяснилось что там "того нет, это не работает, а
с этим есть нюансы", вообщем переписать всё на яву оказалось самым
простым и эффективным решением. Про 7 тыщ запросов в секунду это конечно
мощно, но напоминает анекдот про секретаршу которая печатала 300
символов в минуту ("Да, правда могу 300 симв./мин. Но такая фигня
получается").
BZ>вообще сейчас популярны асхинхронные веб-сервера — такие где крутится всего один или несколько OS threads, каждый из которых может одновременно обрабатывать тысячи входящих соединений. наиболее производительным и популярным из них является nginx
Жалко правда что у RSDN-а с этим nginx постоянные проблемы его, т.е с nginx производительностью
Это я так, к слову.
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
Ну как есть подвижки в изучении?
У меня, по непонятным причинам, некоторые примеры для node.js не хотят работать. Связываю это с тем, что работаю под виндой. А эти хостинги со своим git`ом реально парят. Не привык я работать с командной строкой
Здравствуйте, Volgare, Вы писали:
V>У меня, по непонятным причинам, некоторые примеры для node.js не хотят работать. Связываю это с тем, что работаю под виндой. А эти хостинги со своим git`ом реально парят. Не привык я работать с командной строкой
вот что получилось на нынешний момент: http://jsapp.us/s/250.coffee
контент страниц складывается в файлы views/Default.htm, views/Download.htm и т.д. в общем-то это то, что мне нужно, но не хватает ещё умного кеширования и сжатия
а примеры могут не работать потому, что это — moving target. там даже автоматически генерируемая дока то по старой версии, то по ещё не вышедшей смотри исходники библиотек, которые поставил