Девятый бит: Блог кафедры АСОИУ ОмГТУ

Знакомьтесь: Node.JS

node.js

Посторонись, пресловутый PHP! Долой Java! Старичок Perl, тебе так вообще давно пора на пенсию. И как же вы уже достали, попсовые Ruby и Python! Все эти давно знакомые технологии уже не торкают. Зато сегодня мы посмотрим на чрезвычайно прогрессивный подход, когда для написания серверного кода используется… JavaScript.

Именно так и начинается статья на xakep.ru, которую я советую прочитать.

Node.JS — событийно-ориентированный (асинхронный) I/O фреймворк на движке V8 JavaScript от Google, дополненный системными библиотеками и прочими вкусностями. И очень, очень быстрый.

Современный публичный Web-сервис при ответе на запрос клиента можно представить в следующем виде:

БД <-> обработчик запросов --(контейнер)--> генератор страницы

Причем основная задача обработчика запросов – выбрать из БД нужные данные и обвернуть их в контейнер, далее на клиенте эти данные «облагораживаются», принимают человеческий вид генератором страницы. А теперь разберемся с языком на котором это все будет работать, и начнем с генератора страниц.

Представим себе типичного Юзера со стандартным браузерам и системой, в которой каждой твари по одной (Flash, Silverlight, Java). Да, какой простор для действий: банеры у нас будут на Flash, сам сайт на Silverlight, а через Java мы будем подгружать трояны. Юзеру-то какая разница: он их не заметит. А для тех, у кого антивирус, сделаем пошаговую инструкцию по его отключению: мол, если вы его не отключите, сайт будет работать некорректно (так же поступают и установщики программ, когда выводят «Перед началом установки закройте все приложения и отключите антивирус»).

Теперь Юзер поумнел – поставил нормальный браузер  и отключил в нем плагины. У нас остался JavaScript. Ну, что ж, отлично: не надо ничего выбирать. Теперь выбираем один из стандартных контейнеров. Может XML (ведь даже XMLHttpRequest начинается с XML)? Или всетаки JSON? Не буду долго философствовать на эту тему и скажу сразу – однозначно, JSON. Если дорогой читатель не доверяет моему выбору, то милости прошу читать эти две статьи: Что такое JSON? и JSON и XML. Что лучше?.  С контейнером разобрались, теперь переходим к обработчику запросов, а тут опять целый зоопарк: и PHP и ASP.NET, который лучше бы смотрелся в паре с Silverlight, и еще куча всего. Опять муки выбора.

А тем временем нашего Юзера совсем запугали: «все скрипты на страницах – зло и одна большая дыра», и после этого он решает отключить JavaScript. Что же нам делать? Ведь мы уже столько классных вещей написали, даже не забыли про WOW-эффекты, и это все на JavaScript, а наш Юзер увидит только белую страницу с надписью «Включите JavaScript». Но после предыдущей просьбы отключить антивирус он ничего не будет делать и просто уйдет на другой сайт. Вы думаете, все плохо и пора бить об стенку некогда любимого нами Юзера? Но постойте, он на самом деле дал нам подсказку: помните, выше мы не могли выбрать обработчика запросов? Теперь у нас есть отличный кандидат – Node.JS. Смотрите сами: для клиента JavaScript уже написан, и на сервере у нас опять же JavaScript, так почему бы не перенести для таких Юзеров часть кода на сервер с минимальными изменениями? Сказано – сделано, и Юзер счастлив, и нам работы было мало.Причем использование одного языка на сервере и клиенте и возможность обмена кода сервера и клиента – не основные фишки Node.JS. Основной по праву должна считаться его скорость и его неблокирующая (асинхронная) природа, так хорошо подходящая для облачных вычислений. Про это как раз написано в этой замечательной статье: Вы наверное шутите, мистер Дал, или почему Node.js — это венец эволюции веб-серверов.

До этого мы говорили только о динамичном контенте. А что делать со статикой? И тут ответ прост: статику – легковесным lightppd, nginx, или 0W-httpd.

Теперь, уважаемый читатель, ты готов к прочтению полной версии статьи, о которой упоминалось в самом начале (xakep.ru) – Атака на другой мир или серверный JavaScript.

Далее советую почитать следующее:

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

Если хотите поставить Node.JS на Винду, то:
Бесплатные хостинги для Node.JS:

Один вопрос остался неосвещенным, а именно: какую же СУБД выбрать под это дело? Ответ очевиден – любую из NoSQL, либо MySQL, переделанную под NoSQL.

Если, уважаемый читатель, тебе до сих пор не понятно, что такое Node.JS, можно попробовать прочитать ещё и эту заметку.

И в конце я хотел бы привести еще несколько статей, напрямую не относящихся к Node.JS:
  • ZKyl, ты маньяк! Тебе нужно энциклопедии писать! (Это я по-дружески подкалываю :о) Слушай, может мы сделаем для тебя отдельное приложение к Девятому биту? :о)

    Если кто-то прочитает весь материал по ссылкам, приведённым в статье, хотя бы в глубине одного клика, найдите меня, я хочу на вас посмотреть…

  • А я вот советую прочитать этот пост — http://mr-aleph.livejournal.com/304008.html, и этот — http://mr-aleph.livejournal.com/307525.html.
    Автор этого блога работает в гугле, в Архусе, он один из разработчиков V8, на котором этот node.js и крутится.

  • @Tier: Вообще автор позже указал что результаты этих замеров следует считать недействительными — http://mr-aleph.livejournal.com/311908.html .

  • Если нравится использовать пакетные менеджеры, то быстро развернуть node.js на Linux:
    - репозиторий + пакеты + npm (Node.js Package Manager) http://forum.nodejs.ru/index.php?topic=54.0

    - npm http://web.onassar.com/blog/2010/11/10/installing-npm-node-package-manage-on-ubuntu-10-10
    - npm http://www.mikecantelon.com/npm

    - установка одной командой http://node-js.ru/1-install-nodejs

  • kurokikaze, при чём тут замеры? По первой ссылке автор предъявляет претензии к качеству кода и намекает, что это в общем-то свойственно коду с использованием node.js, который кичится своей «скоростью». Вот и не понятно: зачем эта «скорость», если всё сводится на нет сложными алгоритмами.
    По второй ссылке претензии к концепции и дизайну самого node.js и к языку JavaScript. Опять же, при чём тут замеры?

  • >А я вот советую прочитать этот пост – http://mr-aleph.livejournal.com/304008.html, и этот – http://mr-aleph.livejournal.com/307525.html.
    Да это же нытик с претензиями вида: почему здесь используется «.», я непременно желаю видеть «;»!
    Для него написание сервиса наподобие этого (http://habrahabr.ru/blogs/startup/113287/) на JavaScript просто непостижимо!
    ==========

    >А я вот советую прочитать этот пост – http://mr-aleph.livejournal.com/304008.html, и этот – http://mr-aleph.livejournal.com/307525.html.
    Да он верно говорит, в топку этот JavaScript с его автоматическими «;» и жуткими конструкциями обратных вызовов!
    Вот например сервис, практически целиком написанный на JavaScript (http://habrahabr.ru/blogs/startup/113287/), так в нем и XSS уже нашелся и проблемы с одновременным доступом.
    ==========
    «А какую ‘пилюлю’ выберешь ты?»
    Каждый выбирает свое и это хорошо! А сайт (сервис) «Smthngs» действительно достойный.

  • Ух уж этот парсер…
    <красная пилюля<

    ==========
    <синяя пилюля<

    ==========

  • Ну, вот я альтернативные пилюли и предоставил :)

  • Появился удобный помощник в отладке Node.js приложений
    http://habrahabr.ru/blogs/javascript/114825

  • NodObjC — мост между Objective-C и Node.JS

    http://habrahabr.ru/blogs/nodejs/127736

  • 90 модулей Node.js в общественное пользование
    http://habrahabr.ru/blogs/nodejs/127876

  • У Node.js новый логотип http://nodejs.org/logos

  • Что такое «асинхронная событийная модель», и почему сейчас она «в моде»
    http://habrahabr.ru/blogs/nodejs/128772

  • Understanding node.js
    http://habrahabr.ru/blogs/nodejs/104171

    Node.js — раковая опухоль =-O
    http://habrahabr.ru/blogs/nodejs/129640/#comment_4294369

  • Node.js на Windows (с тестами производительности) + WebMatrix
    http://habrahabr.ru/blogs/nodejs/132745

  • Разработка WEB-проекта на Node.JS: Часть 2

    http://habrahabr.ru/blogs/nodejs/138629

  • Рельсы сошли с рельс: Почему я переписываю Archaeopteryx на CoffeeScript
    http://habrahabr.ru/post/141295

    «Я думаю, что сейчас проще найти хорошую работу с Node.js, чем хорошую работу с Rails. Но лично мне интереснее работать над собственными проектами, на которых я точно так же получаю удовольствие от Ноды.»

    «Если вы хотите работать с тем, что будет приносить удовольствие, попробуйте Clojure, Scala или Node.js. Clojure и Scala работают на основе Java, воспоминания о которой до сих пор не дают мне спокойно спать ночами»

  • Node.js для начинающих:
    http://nodebeginner.ru
    http://nodeguide.ru/doc

  • Meteor — Новый способ создания приложений
    Пишите всё приложение полностью на чистом JavaScript. Все API, доступны на клиенте и на сервере — в том числе API базы данных! — Так что один код может легко работать на клиенте и на сервере.
    http://habrahabr.ru/post/141834

  • Как правильно ненавидеть PHP:
    (PHP: фрактал плохого дизайна) http://habrahabr.ru/post/142140

  • Как организовать node.js приложения на сервере ( http://habrahabr.ru/qa/21477/#answer_87808 ) :
    Есть сервер, внутри Linux Containers, в каждом контейнере отдельное node.js приложение. На самом сервере вне контейнеров стоит nginx, который проксирует запросы к контрейнерам.
    Дальше, внутри контейнера nvm с node.js и supervisor. Node.js работает под nobody внутри контейнера.
    Куски того как это все настраивается можно глянуть у меня здесь express(node.js) + capistrano + supervisord, здесь Install LXC (Linux Containers) и здесь Install hubot on ubuntu. Записям год, что-то немного могло измениться.
    Создание нового приложения максимально просто, у меня заранее лежит контейнер sample, в котором уже стоит и supervisor и node.js в nvm. Просто делаю lxc-clone контейнеру и прописываю ip с mac адресом.
    там сверху еще прикручен Hubot, который по коммандам через джаббер рулит capistrano, т.е. умеет рестартовать приложение, дергать новые версии с github’а, откатываться и т.д.

  • node.js и CUDA: вместе мощней.
    http://habrahabr.ru/post/151117

  • Изучение Node.js от начала до конца на практике. Часть 1
    http://habrahabr.ru/post/154755

  • Node.js + Chromium = AppJS: один из перспективных вариантов второго шага эволюции веборазработчика
    http://habrahabr.ru/post/153013

    Node.js + Chromium = node-webkit: ещё более перспективный вариант второго шага эволюции веборазработчика
    http://habrahabr.ru/post/153095

  • Отладка Node.js в Visual Studio
    http://habrahabr.ru/post/172107

  • Как Node.js подходит для типовых веб-проектов http://habrahabr.ru/post/191646

  • Почему Meteor погубит Ruby on Rails
    http://habrahabr.ru/post/204902/

You must be logged in to post a comment.