URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 81219
[ Назад ]

Исходное сообщение
"Релиз серверной JavaScript-платформы node.js 0.6"

Отправлено opennews , 07-Ноя-11 21:44 
Представлен (http://blog.nodejs.org/2011/11/05/node-v0-6-0/) третий стабильный релиз платформы node.js 0.6 (http://nodejs.org/) (нечетные ветки - экспериментальные, а четные (0.2, 0.4, 0.6) - стабильные), предназначенной для обособленного выполнения высокопроизводительных сетевых приложений на языке JavaScript. Функции платформы не ограничены созданием серверных скриптов для Web, платформа может использоваться и для создания обычных сетевых клиентских и серверных программ. Для обеспечения выполнения JavaScript-кода используется разработанный компанией Google движок V8 (http://code.google.com/p/v8/).  

Для обеспечения обработки большого числа параллельных запросов node.js задействует асинхронную модель запуска кода, основанную на обработке событий в неблокирующем режиме и определении callback-обработчиков. В качестве способов мультиплексирования соединений поддерживается epoll, kqueue, /dev/poll и select. Для мультиплексирования соединений используется библиотека libev (http://so...

URL: http://blog.nodejs.org/2011/11/05/node-v0-6-0/
Новость: https://www.opennet.ru/opennews/art.shtml?num=32247


Содержание

Сообщения в этом обсуждении
"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено Аноним , 07-Ноя-11 21:44 
https://raw.github.com/gist/724208/f8061aac7bd6d7af4715f4156...

"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено Аноним , 07-Ноя-11 21:53 
Классная хохма ))))
Идеальный пример ущербности сей платформы.

"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено anonymous , 07-Ноя-11 22:03 
Большая часть кода - проверка и обработка ошибок (в варианте на питоне их попросту нет). Если убрать их, будут те же несколько строчек.

"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено user , 07-Ноя-11 22:20 
По моему у js там вывод ошибки и завершение работы, то есть стандартное поведение питона.

"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено Аноним , 07-Ноя-11 22:42 
> По моему у js там вывод ошибки и завершение работы, то есть
> стандартное поведение питона.

То есть при ошибке питон завершает работу? Отличный веб сервис получится.


"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено Xasd , 07-Ноя-11 23:00 
например предположим завершает работу один gevent-процесс (потомучто не был пойман ниодним try/except :):):))...

...но разве это проблема для gunicorn?


"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено Аноним , 07-Ноя-11 23:27 
>gunicorn

Этот который на hello worlde крошится без вариантов на 4 клиентах?
Или уже починили?


"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено Аноним , 07-Ноя-11 23:33 
> например предположим завершает работу один gevent-процесс
>процесс

Неужели процессу на соединение? И сколько терабайт памяти мне потребуется на сайтик  с пиком 50 коннектов/секунда?


"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено Аноним , 07-Ноя-11 23:46 
Ты хоть погугли, что такое gevent.

"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено Аноним , 07-Ноя-11 23:14 
Что за дичь? Просто сработает стандартный обработчик исключений.

Разница в том, что Питон позволяет обработать все ошибки скопом, а Node.js заставляет городить по if-у для каждой асинхронной операции. Элегантности это точно не прибавляет.


"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено Аноним , 08-Ноя-11 07:25 
Для гостей из Индии поясняю:
Если обрабатывать ошибки по месту возникновения то появляется возможность восстановить работу программы в случае не критической ошибки. То есть база вернула таймаут -- подождал секунду и попробовал снова. Соединение не установилось? Попробуем резервный адрес. И т. д.
А если обрабатывать ошибки "в одном месте", то в это "одно место" ошибка приезжает, предварительно раскрутив стек и возможности восстановления нет.

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


"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено CLI521 , 08-Ноя-11 08:03 
Плохой тон утверждать, что что-то "плохой тон"

Место обработки ошибок зависят только от удобства, целей программы и стиля принятого в разработке.

ЗЫ
как правило "обработка ошибок на месте" - стиль плохого проектирования.


"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено Аноним , 08-Ноя-11 08:14 
РАЗМАТЫВАЕТСЯ СТЕК -- так понятнее или опять знакомых букв не видим?

"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено Аноним , 08-Ноя-11 08:23 
>Место обработки ошибок зависят только от удобства, целей программы и стиля принятого в разработке.

Не надо пытаться оправдать свой быдлокод.

>как правило "обработка ошибок на месте" - стиль плохого проектирования.

Дай угадаю: Высшее образование. Незаконченное. Три курса. Педагогического.


"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено анонимус , 09-Ноя-11 13:46 
Вы и есть гость из Индии, который обрабатывает ошибки по месту ее возникновения - именно это плохой тон программирования. Обработка ошибок не должна работать быстро - это внештатная ситуация. Какие варианты ошибок вы учитываете в таком обработчике? А что будет делать программа, не обработав ошибку которую вы не учли? В месте возникновения нужно обрабатывать ошибки, которые не желательно передавать наверх (читайте - для которых нет возможности восстановления).

"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено koloboid , 08-Ноя-11 00:10 
>По моему у js там вывод ошибки и завершение работы, то есть стандартное поведение питона.

нода делает точно так же. просто в js-варианте обработали ошибки, а в пердоне - нет. так можно что угодно обгадить. И да, автор видимо не в курсе про node-fibers.

Кроме того, как и gevent, если падает один процесс ноды - тоже ничего страшного, есть другие. Не понимаю, в чем потрясение автора этого говна?


"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено Аноним , 07-Ноя-11 22:44 
> Классная хохма ))))
> Идеальный пример ущербности сей платформы.

Да ты прав: Питон как веб-платформа действительно ущербен.

PS
Не говоря про то, что код на питоне там приведен с ошибками.


"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено Аноним , 08-Ноя-11 09:39 
Аноним как веб-платформа действительно ущербен

"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено Аноним , 07-Ноя-11 22:58 
> Идеальный пример ущербности сей платформы.

Это про питон чтоли? Да, с его синтаксисом и скоростью работы - в вебе он инвалид.


"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено Xasd , 07-Ноя-11 23:15 
>> Идеальный пример ущербности сей платформы.
> Это про питон чтоли? Да, с его синтаксисом и скоростью работы -
> в вебе он инвалид.

не нравится синтаксис Python? ну тогда самое время использовать
        from __future__ import braces
!!!

:-)


"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено Славик , 08-Ноя-11 12:41 
Callbacks на серверной стороне без обьектов синхронизации... IMHO Нечитабельный и  трудно поддерживаемый код.

"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено Аноним , 09-Ноя-11 18:40 
Школота-дектор :)

Цитирование данной шутки демонстрирует наглядное непонимание сути вопроса. node.js для ВЫСОКОНОГРУЖЕННЫХ проектов, а не для сетевого Hello world на Python.


"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено develop7 , 09-Ноя-11 18:47 
> Школота-дектор :)
> Цитирование данной шутки демонстрирует наглядное непонимание сути вопроса. node.js для ВЫСОКОНОГРУЖЕННЫХ проектов, а не для сетевого Hello world на Python.

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


"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено Аноним , 14-Ноя-11 12:12 
Хехе детектет 2. Еще раз для тех кто в танке: Асинхронные и синхронные вызовы сравнивать нельзя так, это совсем разные подходы. Недопиляность конкретно node.js/v8 тут не причем, примеры мог быть на совсем разных языках/библиотектеках.

"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено anono , 10-Ноя-11 11:42 
как раз-таки текущая стабильность ноды позволяет писать на ней только приколюхи, чтобы похвастаться перед другими гиками

"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено Аноним , 14-Ноя-11 12:15 
Я рад, что этому Вы уже научились. Но опять таки, речь шла о синхронных/асинхронных вызовах, что глупо.

"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено whoami , 07-Ноя-11 22:26 
Но зойчем переизобретать Erlang?

"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено Аноним , 07-Ноя-11 22:40 
Потомушто Эрлангом невозможно пользоватся, и знание Эрлаг=нга нигде более не пригодится.

"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено Аноним , 08-Ноя-11 01:23 
готовся, счас он тебе начнет рассказывать что эрланг это круто и мы не сечем

"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено develop7 , 08-Ноя-11 12:28 
> Потомушто от иммутабельности, pattern matchingа и рекурсии вместо циклов у миня болит попа, и учитель информатики тоже не знает Erlang.

fixed


"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено Аноним , 08-Ноя-11 13:32 
>иммутабельности, pattern matchingа и рекурсии вместо циклов

А зачем они мне?
>учитель информатики тоже не знает Erlang.

Он также не знает Аду, Фокал и много других мертвых языков. И что?


"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено develop7 , 08-Ноя-11 14:11 
>>иммутабельности, pattern matchingа и рекурсии вместо циклов
> А зачем они мне?

для написания контрольных они не нужны, расслабься.

>>учитель информатики тоже не знает Erlang.
> Он также не знает Аду, Фокал и много других мертвых языков.

то есть про школоту я таки угадал.


"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено Аноним , 08-Ноя-11 16:17 
Ада вполне себе жива, школиё. Да-да, сейчас, в 2011м году. PL/SQL называется. Компрене?

"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено Аноним , 08-Ноя-11 16:58 
А динозавры тоже живы -- крокодилы называются.
Не надо сравнивать язык Ада (светлая память), с этим чудоподелием PL/SQL, для превращения проектов в не поддерживаемое мясо.

"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено develop7 , 08-Ноя-11 18:06 
> Ада вполне себе жива, школиё. Да-да, сейчас, в 2011м году. PL/SQL называется. Компрене?

а почему тогда GNU Ada compiler, а не GNU PL/SQL compiler?


"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено anonymous vulgaris , 09-Ноя-11 00:10 
>> Ада вполне себе жива, школиё. Да-да, сейчас, в 2011м году. PL/SQL называется. Компрене?

Ада жива как Ада, но области применения ограничены.

Thales Aerospace Division Selects GNAT Pro for Airbus A350 XWB (Xtra Wide-Body)

Safety-critical systems to be implemented in Ada 2005

June 1, 2009 – Avionics USA – AdaCore, a leading supplier of Ada development tools and support services, today announced that international electronics and systems group Thales has chosen the GNAT Pro technology, including several safety-qualified tools, to develop critical systems for the new Airbus A350 XWB (Xtra Wide-Body) family.

> а почему тогда GNU Ada compiler, а не GNU PL/SQL compiler?

потому что для таких применений надо сертифицированные средства типа

http://www.adacore.com/home/products/gnatpro/development_sol.../



"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено anonimus , 08-Ноя-11 14:39 
Какой Erlang вы о чем? Оо.
Как вы собрались использовать для веба язык в котором нет ни строкового типа, ни работы со строками?
>In Erlang, there is no string type, strings are just a list of integers, each integer being an encoded character value in the string.

Например:
[100,111,103] == "dog".
=>true.
Когда создавалась база Couchdb(а написана она на Erlang) для обработки данных, которые представлены в базе как раз строками, разработчикам пришлось включать в дистрибутив spidermonkey и обработку писать на javascript.


"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено develop7 , 08-Ноя-11 14:58 
> Какой Erlang вы о чем? Оо. Как вы собрались использовать для веба язык в котором нет ни строкового типа, ни работы со строками?

Молча. Не обращая внимания на эти мелочи. Да и не вебом единым.

>>In Erlang, there is no string type, strings are just a list of integers, each integer being an encoded character value in the string.
> Например:
> [100,111,103] == "dog".
> =>true.

в 90% случаев строку достаточно передать дальше. для остального есть ux.

> Когда создавалась база Couchdb(а написана она на Erlang) для обработки данных, которые  представлены в базе как раз строками, разработчикам пришлось включать в дистрибутив  spidermonkey и обработку писать на javascript.

Пруфы есть?


"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено Аноним , 08-Ноя-11 16:53 
>Как же вы поедете на лыжах по асфальту?
>Молча. Не обращая внимания на эти мелочи. Да и не снегом единым.

Суровые какие программисты.
Гвозди бы делать из этих людей -- качество средней программ сразу взлетит.


"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено develop7 , 08-Ноя-11 17:47 
> Суровые какие программисты. Гвозди бы делать из этих людей -- качество средней программ сразу взлетит.

Да, качество софта на erlang обычно выше — т.к. и кода меньше и проще он, и вообще.

А если серьёзно: где именно в веб-приложении недостаточно представления строки в виде list of integers?


"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено koloboid , 08-Ноя-11 19:37 
string.toUpper()?

"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено develop7 , 08-Ноя-11 19:54 
> string.toUpper()?

урлы/методы/параметры нормализовывать? это вебсервер делает (только он tolower использует, чтобы в атомы сложить)
Ну и для терминальных случаев есть https://github.com/freeakk/i18n


"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено Аноним , 08-Ноя-11 01:18 
Чет не понял, он таки не только событийный но еще и многопоточный теперь чтоли ? и кросплатформенный при этом  ?

"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено Xasd , 09-Ноя-11 00:05 
не такой уж и кросплатформенный :-)...

...там V8 и не-опциональные ассемблерные вставки (в отличии от Spidermoney, который написан на C и *ОПЦИОНАЛЬНЫХ* asm-вставках , и скомпилируется даже если архитектура неизвестно какая)

другими словами -- на PPC этот Node.Js не будет работать, и на других редких архитекрутах


"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено Аноним , 09-Ноя-11 00:53 
Ну бог с ним, основную часть накрывает уже хорошо. Я вот только про многопоточность посмотрел, и думаю теперь, а что бы было не сделать это совсем прозрачно, т.е. без явного программирования форков, чтобы само внутри форкалось как настроишь ?

"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено anono , 10-Ноя-11 11:44 
> Ну бог с ним, основную часть накрывает уже хорошо. Я вот только
> про многопоточность посмотрел, и думаю теперь, а что бы было не
> сделать это совсем прозрачно, т.е. без явного программирования форков, чтобы само
> внутри форкалось как настроишь ?

т.е. многопоточности как бы и нету, все ясно


"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено develop7 , 10-Ноя-11 11:49 
> Ну бог с ним, основную часть накрывает уже хорошо. Я вот только про многопоточность посмотрел, и думаю теперь, а что бы было не сделать это совсем прозрачно, т.е. без явного программирования форков, чтобы само внутри форкалось как настроишь ?

А тем временем приложения на сложном и неудобном Erlang уже лет 7 как самостоятельно расползаются по любому кол-ву процессоров.



"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено Аноним , 08-Ноя-11 09:38 
>В дальнейшем разработчики намерены синхронизировать процесс разработки с браузером Chrome и движком V8, перейдя к выпуску новых версий каждые 6 недель.

А LTS версии будут? Иначе станет никому не нужно.


"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено anonymous , 08-Ноя-11 11:33 
>перейдя к выпуску новых версий каждые 6 недель.

А как хорошо всё начиналось.


"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено anonym , 08-Ноя-11 13:24 
> По своей сути node.js похож на фреймворки Ruby Event Machine и Python Twisted,

Эй, ну добавьте в новость, что нода похожа на Perl AnyEvent. Ведь это известно, что AnyEvent работает, также как и нода, поверх libev, и автор AnyEvent написал libev.


"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено anonym , 08-Ноя-11 13:28 
вот пруфлинк: http://software.schmorp.de/

ps и, да, он еще написал libeio

pps AnyEvent работает очень быстро и круто, асинхронный код под Perl пишется легко и непринужденно


"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено Аноним , 08-Ноя-11 13:39 
>AnyEvent работает очень быстро и круто

В 14 раз медленнее ноды. Круто? Круто.
>асинхронный код под Perl пишется легко и непринужденно

И как только ты используешь например типовой клиент для базы данных либо разрешение DNS или любую стороннюю библиотеку не рассчитанную на такой режим работы, то все быстро и непринужденно катится в АД. Как и в случае с Twisted или EventMachine.
Под эффективный асинхронный код нужно чтоб все внешние модули и все конструкции языка были к этому готовы. А в перле вы даже файл открыть не сможете, не говоря уже про DNS-разрешение имен.


"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено anonym , 08-Ноя-11 16:11 
> В 14 раз медленнее ноды. Круто? Круто.

пруф в студию, или тролль и лжец

> И как только ты используешь например типовой клиент для базы данных либо разрешение DNS...

Спасибо, Кэп.

> А в перле вы даже файл открыть не сможете, не говоря уже про DNS-разрешение имен.

Ложь:
https://metacpan.org/module/AnyEvent::DNS
https://metacpan.org/module/AnyEvent::AIO

Асинхронное разрешение имен только ленивый не писал.


"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено anonimus , 08-Ноя-11 16:51 
>https://metacpan.org/module/AnyEvent::AIO

Пример по ссылке:
my $fh = aio_open "/etc/passwd", O_RDONLY, 0
   or die "/etc/passwd: $!";
aio_read $fh, 0, 1_000_000, my $buf, 0
   or die "aio_read: $!";
aio_close $fh;
не вижу здесь ни ассинхронности ни не блокируемости.
Последовательное открытие чтение и закрытие файла.
Видимо в перле какаято своя астральная асинхронность не доступная простым смертным.


"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено koloboid , 08-Ноя-11 19:56 
по ссылке не ходил, но может там coroutines?



"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено anonym , 08-Ноя-11 21:16 
да, так и есть, анонимус решил опозориться и привел пример отсюда http://search.cpan.org/~mlehmann/Coro-6.06/Coro/AIO.pm

Он не даже не догадывается, что Coro отлично помогает тем, кого напрягает collback-стиль кода, так как код на короутинах выглядит так же как и обычный блокирующий.


"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено Yuri , 08-Ноя-11 15:14 
в 0.6 libev заменили на libuv в основном благодаря этому и появилась родная поддержка windows.

"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено lucentcode , 08-Ноя-11 21:45 
Мне JavaScript по душе, и node.js тоже. Одно то, что для манипуляций на структурой DOM-дерева можно заюзать код, аналогичный тому JS-коду, что юзается в клиентской части - само по себе хорошо. Web-разработчику легче изучить хорошо один язык, и писать код серверной и клиенской части в одном стиле.

"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено vasek , 09-Ноя-11 00:03 
А мне в чем-то нравится, а чем-то раздражает, например своими областями видимости, сборкой мусора и прототипным наследованием (но здесь больше виноват не JS, а те кто пытаются классы натянуть на прототипную объектную модель JS'a)

Ну кстати, это все басни про код одинаковый на сервере и клиенте, на клиенте ты скорее всего будешь через jQuery с DOM работать, да и стиль разный будет, и серверному программисту горздо полезнее понимать UNIX-архитектуру.


"Релиз серверной JavaScript-платформы node.js 0.6"
Отправлено koloboid , 09-Ноя-11 00:11 
>но здесь больше виноват не JS, а те кто пытаются классы натянуть на прототипную объектную модель JS'a

+много. не надо мыслить классами, надо мыслить объектами. хотя очень непривычно.

>Ну кстати, это все басни про код одинаковый на сервере и клиенте, на клиенте ты скорее всего будешь через jQuery с DOM работать, да и стиль разный будет, и серверному программисту горздо полезнее понимать UNIX-архитектуру.

и тем не менее, как минимум - утилитарный код, модели данных, валидаторы - общие. если конечно захотеть.