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

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

Отправлено opennews , 26-Июн-12 18:46 
Увидел свет (http://blog.nodejs.org/2012/06/25/node-v0-8-0/) стабильный релиз платформы node.js 0.8 (http://nodejs.org/), предназначенной для обеспечения выполнения высокопроизводительных сетевых приложений на языке JavaScript. Платформа может быть использована как для серверного сопровождения работы Web-приложений, так и для создания обычных клиентских и серверных сетевых программ. Для расширения функциональности приложений для Node.js подготовлена большая коллекция модулей (https://github.com/ry/node/wiki/modules), в которой можно найти модули с  реализацией  серверов и клиентов HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, модули для интеграции с различными web-фреймворками, обработчики WebSocket и Ajax, коннекторы к СУБД (MySQL, PostgreSQL, SQLite, MongoDB), шаблонизаторы, CSS-движки, реализации криптоалгоритмов и систем авторизации (OAuth), XML-парсеры.

Для обеспечения обработки большого числа параллельных запросов node.js задействует асинхронную модель запуска кода, основанную на обработке событий в неблокирующем режиме и определении callback-обработчиков. В качестве способов мультиплексирования соединений поддерживаются такие методы, как epoll, kqueue, /dev/poll и select. Для мультиплексирования соединений используется библиотека libuv (https://github.com/joyent/libuv/), которая является надстройкой над libev (http://software.schmorp.de/pkg/libev.html) в системах Unix и над IOCP в Windows. Для создания пула потоков (thread pool) задействована библиотека libeio (http://software.schmorp.de/pkg/libeio.html), для выполнения DNS-запросов в неблокирующем режиме интегрирован c-ares (http://c-ares.haxx.se/). Все системные вызовы, вызывающие блокирование, выполняются внутри пула потоков и затем, как и обработчики сигналов, передают результат своей работы обратно через неименованный канал (pipe). Выполнение JavaScript-кода обеспечивается через задействование разработанного компанией Google движка V8 (http://code.google.com/p/v8/).  


По своей сути node.js похож на фреймворки Perl AnyEvent (http://search.cpan.org/dist/AnyEvent/), Ruby Event Machine (http://rubyeventmachine.com/) и Python Twisted (http://twistedmatrix.com/), но цикл обработки событий (event loop) в Node.js скрыт от разработчика и напоминает обработку событий в web-приложении, работающем в браузере. При написании приложений для node.js необходимо учитывать специфику событийно-ориентированного программирования, например, вместо выполнения "var result = db.query("select..");" с ожиданием завершения работы и последующей обработкой результатов, в Node.js использует принцип асинхронного выполнения, т.е. код трансформируется в "db.query("select..", function (result) {обработка результата});", при котором управление мгновенно перейдёт к дальнейшему коду, а результат запроса будет обработан по мере поступления данных. Ни одна функция в Node.js не должна напрямую выполнять операции ввода/вывода - для получения данных с диска, от другого процесса или из сети требуется установка callback-обработчика.

Ключевые новшества Node.js 0.8:


-  Внесение нескольких ключевых улучшений в новые версии  V8 и libuv привело к существенному увеличению пропускной способности при выполнении операций записи и чтения данных. Если сравнивать с версией 0.6.19, то для буфера 1024 скорость записи потока через io.js увеличилась с 19 до 61 Мб/сек, 4096 - c 59 до 109 Мб/сек, 16384 - c 83 до 182  Мб/сек, 65536 - c 97 до 181 Мб/сек. Скорость чтения при этом возросла в полтора - два раза. При тестировании производительности скорости обработки запросов производительность простейшего сетевого приложения увеличилась с 3317 до 3795 запросов в секунду при размере сообщения 123 байт и с 218 до 749 для больших сообщений, размером 123456 байт. Большое увеличение производительности также наблюдается при выполнении JavaScript кода новой версией движка V8 (3.11.10.10);

-  Осуществлён переход на новую систему сборки. Вместо написанной на языке Python системы сборки WAF теперь используется GYP (http://code.google.com/p/gyp/), применяемый для сборки проекта Chrome/Chromium. Отличительной чертой GYP является генерация родных для каждой платформы сборочных сценариев (Makefiles для Unix, Visual Studio для Windows и XCode для Mac OS X).  Кроме улучшения поддержки сборки для различных платформ GYP позволяет обеспечить интеграцию с процессом сборки движка V8 и улучшить управляемость проектом;
-  Переход от непосредственного использования библиотек libev и libeio к использованию прослойки libuv позволил унифицировать поддержку платформ Unix и Windows, но привёл к некоторому изменению API, специфичному для определённых платформ. Поэтому, при переходе на версию 0.8 возможно потребуется небольшая переработка кода (https://github.com/joyent/node/wiki/API-changes-between-v0.6...). Например, прекращена поддержка прямого вызова ev_* и eio_*, объявлен устаревшим http.Client(), path.{exists,existsSync} заменены на fs.{exists,existsSync}, а tty.setRawMode(mode) на tty.ReadStream#setRawMode();

-  Возвращена поддержка работы с файловыми дескрипторами. В версии 0.6 была прекращена поддержка метода listenFD и массива customFds, так как они были признаны некроссплатформенными и специфичными для Unix. В итоге многие пользователи выразили своё возмущение и отказались от перехода на версию 0.6. В версии 0.8 разработчики признали свою ошибку и вернули функциональность прямой работы с файловыми дескрипторами -
server.listen({ fd: number }), а также добавили в stdio возможность передачи открытых дескрипторов дочерним процессам через  child_process.spawn();

-  Полностью переработан модуль cluster (http://nodejs.org/api/cluster.html#cluster_cluster), предназначенный для организации работы кластера из нескольких процессов node.js. API в целом остался обратно совместимым, но внесены и некоторые нарушающие совместимость изменения (https://github.com/joyent/node/wiki/API-changes-between-v0.6...).
-  Добавлен экспериментальный модуль domain (http://nodejs.org/api/domain.html), позволяющий связать несколько разных операций ввода/вывода и выполнить их обработку в виде единой группы.
-  Проведена чистка и рефакторинг модулей Repl, Readline и TTY с целью повышения удобства разработки;
-  В модуль fs добавлены методы fs.appendFile() и fs.appendFileSync(), а также поддержка режимов "wx", "wx+", "ax" и "ax+" для fs.open() и fs.openSync().


URL: http://blog.nodejs.org/2012/06/25/node-v0-8-0/
Новость: http://www.opennet.me/opennews/art.shtml?num=34194


Содержание

Сообщения в этом обсуждении
"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 26-Июн-12 18:46 
Node.js - это hello world, зашедший слишком далеко.

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 26-Июн-12 18:49 
Нет, это просто у вас разум дальше хеллоуворда не продвинулся.

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 26-Июн-12 19:07 
Это у авторов разум не продвинулся дальше JavaScript.

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноным , 26-Июн-12 19:14 
Куда там до таких как ты, кто чтобы булку съесть хлебзавод покупает.

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Px , 26-Июн-12 19:43 
А чем именно плох JavaScript?

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 26-Июн-12 19:48 
Тем, что он не задумывался как язык программирования общего назначения.

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено ИванЧеловеков , 26-Июн-12 19:59 
Хм. Java, к примеру, тоже не задумывалась как язык программирования общего назначения.

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 26-Июн-12 20:25 
> Тем, что он не задумывался как язык программирования общего назначения.

Не задумывался, но получился очень даже неплохим.
В отличии от ПХП.

А по вашему чем именно он не тянет на общего назначения?
Что-то конкретное скажите, кроме пустых выкриков.


"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 26-Июн-12 20:35 
На данный момент главная притензия - нестабильный api. Причем не стабильный не изза объектмвных причин а из за самодурства разработчиков.
За каким спрашивается, чертом взять и переместить функцию exists из модуля path в модуль fs, ломая сотни сторонних модулей? А до этого sys взяли переименовали в utils, зачем?



"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 26-Июн-12 21:35 
> На данный момент главная притензия

В вашей прЕтензии - баг :)


"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 26-Июн-12 21:40 
Если бы я был разработчиком node.js, то вместе с исправлением этого "бага" я бы еще и переписал комментарий на корейском языке. И, соответственно, ваш комментарий, как зависимый, стал бы не корректен.
Но я оставлю так как есть, ради обратной. совместимости.

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 26-Июн-12 20:40 
Вторая претензия - никакая библиотека.
Ну как я на производственный сервер поставлю модуль sqlite авторства ВасиНогибатораПупкина из его github репозитория? [Брат|/usr] то и так еле жив.
И когда они опять сломают api сколько мне ждать пока Вася протрезвеет и обновит модуль?

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 26-Июн-12 20:56 
> На данный момент главная притензия - нестабильный api. Причем не стабильный не изза объектмвных причин а из за самодурства разработчиков.
> Вторая претензия - никакая библиотека.

Ну вот вы и попались. Что и следовало ожидать.
Вы просто не знаете чем отличается "ЯП общего назначения", API и библиотеки. У вас в сознании одна большая каша.

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

> За каким спрашивается, чертом взять и переместить функцию exists из модуля path в модуль fs, ломая сотни сторонних модулей? А до этого sys взяли переименовали в utils, зачем?
> Ну как я на производственный сервер поставлю модуль sqlite авторства асиНогибатораПупкина из его github репозитория? [Брат|/usr] то и так еле жив.
> И когда они опять сломают api сколько мне ждать пока Вася протрезвеет и обновит модуль?

Здесь вы лишь продолжаете подтверждать, что вы не знаете, что именно относится к понятию "язык программирования общего назначения".

У любого языка есть свои быдлокодеры. Ну и что?


"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 26-Июн-12 21:15 
Первая претензия нестабильный апи.(включая с++ апи)
Вторая претензия слабая стандартная библиотека.

> Ну и на старом добром С понаделано куча ужасных API и кошмарных
> библиотек, но от этого он ведь не перестает быть языком общего
> назначения.

Это не имеет отношения.

> Здесь вы лишь продолжаете подтверждать, что вы не знаете, что именно относится
> к понятию "язык программирования общего назначения".

Я не знаю что такое "язык общего назначения". И тем более я не знаю что ВЫ понимаете под этими словами. И мне это совершенно не интересно.
Для меня есть удобные языки и не удобные.
Язык который имеет большую стандартную библиотеку - удобный.
Язык который не ломает программы при обновлении - удобный.
Язык который сам обновляет библиотеку при установке новой версии - удобный.
Но это все не относится на данный момент к node.js.

> У любого языка есть свои быдлокодеры. Ну и что?

Вот возьмем простейшую задачу - отправить письмо pop3.
Некоторые языки предложат оттестированный модуль из стандартной библиотеки,
а node.js? Правильно, заставить ковыряться в творениях юных "погромистов".
Нет спасибо.


"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 26-Июн-12 21:31 
> Вот возьмем простейшую задачу - отправить письмо pop3.

*получить


"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 27-Июн-12 12:57 
> Первая претензия нестабильный апи.(включая с++ апи)
> Вторая претензия слабая стандартная библиотека.
>
>> Ну и на старом добром С понаделано куча ужасных API и кошмарных библиотек, но от этого он ведь не перестает быть языком общего назначения.
>
> Это не имеет отношения.

Все правильно, потому что все претензии, которые вы высказываете не имеют отношения к непосредственно к языку. Не нравятся конкретные API и библиотеки - возьмите другие.

>> Здесь вы лишь продолжаете подтверждать, что вы не знаете, что именно относится к понятию "язык программирования общего назначения".
>
> Я не знаю что такое "язык общего назначения". И тем более я не знаю что ВЫ понимаете под этими словами. И мне это совершенно не интересно.

Вы не только не знаете, что такое "общего назначения" - вы вообще не знаете, что такое "язык".
Не "язык общего назначения", а "язык _программирования_ общего назначения".
Выше была претензия, что как-будто у js есть проблемы именно с "общим назначением".
Хотите сказать, что это была не ваша претензия? Ну допустим.
Только почему-то точно также, как автор той претензии, вы не знаете, чем ЯП отличается от API и библиотек. Для вас это все одна большая куча.

Судя по вашим ляпам - вы и есть тот, кто выше высказал претезии по поводу "общего назначения", только осознав, что не понимаете, что это такое, решили сделать вид, что это как будто были не вы. Только с пониманием всего остального у вас тоже не лучше. Читаем, что вы пишите дальше.

> Для меня есть удобные языки и не удобные.
> Язык который имеет большую стандартную библиотеку - удобный.
> Язык который не ломает программы при обновлении - удобный.
> Язык который сам обновляет библиотеку при установке новой версии - удобный.
> Но это все не относится на данный момент к node.js.

Ну понятно, то есть node.js вы считаете именно языком. И кинулись в спор (если это действительно были не вы) даже не посмотрев, что речь в споре вообще-то шла о js, а не о node. Хотя своими высказываниями вы лишь продолжаете подтверждать, что вы не знаете, что такое язык.
Как это непосредственно язык может "ломать программы при обновлении"?

Да, у node есть проблемы с его "главным" пакетным менеджером. Поэтому некоторые пользуются другими менеджерами пакетов. Либо делают собственные, что не так уж и трудно.

Только при чем здесь проблемы самого js, как языка?

>> У любого языка есть свои быдлокодеры. Ну и что?
>
> Вот возьмем простейшую задачу - отправить письмо pop3.
> Некоторые языки предложат оттестированный модуль из стандартной библиотеки, а node.js? Правильно, заставить ковыряться в творениях юных "погромистов".
> Нет спасибо.

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


"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 27-Июн-12 13:25 
> Все правильно, потому что все претензии, которые вы высказываете не имеют отношения
> к непосредственно к языку. Не нравятся конкретные API и библиотеки -
> возьмите другие.

Мне пожалуйста, стандартную библиотеку. Кстати почему вы считаете что стандартная библиотека не является частью языка? Вы о требованиях сертификации java слышали например?

> Вы не только не знаете, что такое "общего назначения" -бла бла бла

Какой то псевдо-теоретический бред. Мне мало интересно как НАЗЫВАЕТСЯ сущность. Мне интересны ее свойства. А споры вида: "Ширенее крокодил чем зеленее или нет", я оставлю яйцеголовым.

> Ну понятно, то есть node.js вы считаете именно языком.

Считаю, я обычно пальцем.
Что не меняет того факта, что нода и javascript разные вещи.
(Или покажите мне в стандарте ECMA-262 такую основополагающую для ноды вещь как Buffer)

> Ну и по-прежнему, при чем здесь язык?

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

>Как это непосредственно язык может "ломать программы при обновлении"?

Вы с луны что ли? Python3 слышали? Ruby 1.9?


"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 27-Июн-12 14:07 
>> Все правильно, потому что все претензии, которые вы высказываете не имеют отношения к непосредственно к языку. Не нравятся конкретные API и библиотеки - возьмите другие.
> Мне пожалуйста, стандартную библиотеку.

Видимо вы считаете, что если библиотека стандартная, то это освобождает вас от необходимости вообще знать, что такое библиотека.

> Кстати почему вы считаете что стандартная библиотека не является частью языка?

Вы пока еще не разобрались, что такое язык, чтобы задавать вопросы, о том, что является частями языка.

> Вы о требованиях сертификации java слышали например?

Видимо свои представления о языках вы черпали исключительно из требований по сертификации java. Понятно теперь, откуда у вашего невежества "ноги растут". Получили какой-то сертификат, и теперь решили, что больше вам ничего знать не нужно.

> Вы не только не знаете, что такое "общего назначения" -бла бла бла

Как вы ловко заменили вторую часть предложения.

>> Вы не только не знаете, что такое "общего назначения" - вы вообще не знаете, что такое "язык".
>
> Какой то псевдо-теоретический бред.

Понятно. Понимать что такое язык, и чем он отличается от API и библиотек - вы это считате совершенно ненужной псевдо-теорией.

> Мне мало интересно как НАЗЫВАЕТСЯ сущность. Мне интересны ее свойства. А споры вида: "Ширенее крокодил чем зеленее или нет", я оставлю яйцеголовым.

Дело не в названиях, а во взаимосвязях.
Вам интересны свойства сущностей, а их не названия. Замечательно, какой вы крутой прагматик.
Только вам теперь осталось научить не путать какие именно свойства к каким именно сущностям относятся.

>> Ну понятно, то есть node.js вы считаете именно языком.
> Считаю, я обычно пальцем.

И программы пишете руками. Все с вами понятно.

> Что не меняет того факта, что нода и javascript разные вещи.

Кажется до вас это стало доходить.
Теперь осталось только выяснить, за что именно вы тут боретесь.

> (Или покажите мне в стандарте ECMA-262 такую основополагающую для ноды вещь как Buffer)

Вы сами говорите о недостатках языка, вот вы сами и обоснуйте это хоть на основании стандартов, хоть как-то еще.

А то получается, что вы совсем запутались, где язык, где библиотеки, а где API. И хотите теперь, чтобы я вам помог разобраться, потому что самостоятельное чтение чего-то отличного от серии книг "для чайников", например стандартов, ввело ваше сознание в окончательный ступор.

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

Вы здесь не рассмотрели вероятность, что виноватым можете оказаться вы сами.

Лозунг все быдлокодеров: - главное чтоб работало!
А как именно, за счет чего, что с чем связано - не важно.

> Мне, как практикующему программисту, их модель не удобна.

Модель кого именно "их"? Сразу одна модель на всех "их"? Вы не хотите знать чем одно отличается от другого, но хотите рассуждать о каких-то моделях.

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

>>Как это непосредственно язык может "ломать программы при обновлении"?
> Вы с луны что ли? Python3 слышали? Ruby 1.9?

Это конечно хорошо, что вы слышали про Python3 и Ruby 1.9. Теперь вам только осталось разобраться, что именно в этих системах является языком, а что чем-то другим.


"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 26-Июн-12 21:24 
>Тем, что он не задумывался как язык программирования общего назначения.

Забавно, что в современных реалиях повсеместного переползания в сеть, он и есть вполне себе общего назначения.


"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 26-Июн-12 21:37 
В этом переползании ничего нового нет.
Перевоплощение концепции timesharing из 60-70х годов.


"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 26-Июн-12 21:54 
> Перевоплощение концепции timesharing

в privacy sharing


"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 26-Июн-12 21:59 
Насильно никто не заставляет.
А где сушить трусы, на балконе или в кладовке - пусть каждый решает сам.

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 27-Июн-12 12:15 
> А где сушить трусы, на балконе или в кладовке - пусть каждый
> решает сам.

пока есть балкон или кладовка...



"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 26-Июн-12 20:22 
ecma .. is final final final.... final standard

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 26-Июн-12 22:17 
Шутки шутками, а скрипты времен второго NN мой браузер 2012 года выпуска проигрывает.
А как дело обстоит с python, ruby, perl ...?
Вот чего чего а прямой и обратной совместимости у js не отнять.

if(!String.prototype.trim) {
  String.prototype.trim = function () {
    return this.replace(/^\s+|\s+$/g,'');
  };
}

для питона в подобных ситуациях приходится все переписывать.

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 26-Июн-12 22:18 
> Вот чего чего а прямой и обратной совместимости у js не отнять.

Только к node.js это не относится. Не слушают старика Крокфорда.


"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 27-Июн-12 00:50 
Вот уж к Perl-то какие претензии по части обратной совместимости?

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено anon9 , 26-Июн-12 18:55 
domain - отличнейшая штука. Приятно, что разрабы постоянно запиливают именно то, что нужно

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 26-Июн-12 20:29 
Ну и синтаксис

d.run(function() {
  process.nextTick(function() {
    setTimeout(function() { // simulating some various async stuff
      fs.open('non-existent file', 'r', function(er, fd) {
        if (er) throw er;
        // proceed...
      });
    }, 100);
  });
});

Узнаю javascript-


     }
    });
  }).listen(1337);
});

Вот поэтому и существует coffescript ,dart, ice, и еще много проектов которые компилятся в js. Читать такой код - пытка.

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 26-Июн-12 21:01 
Это проблема не js, а node.js, где всё завязано на callback.

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 26-Июн-12 21:20 
> Это проблема не js, а node.js, где всё завязано на callback.

Единственное место где js активно используется кроме node.js - это браузеры.
И ты не поверишь...


"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено хзкто , 27-Июн-12 09:02 
Кто вас заставляет писать такой код? Выносите всё в отдельные методы, не допуская большой вложенности, и не будет никаких проблем. Это всё равно что написать, например, на питоне код с кучей вложеных конструкций и, показывая на него, говорить что питон - говно.

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 27-Июн-12 09:21 
Меня никто не заставляет.
Это эталонный код с сайта разработчиков
http://nodejs.org/api/domain.html
>Выносите всё в отдельные методы,

Так не получится, так как теряется основное преимущество js - замыкания.



"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено хзкто , 27-Июн-12 09:31 
> Так не получится, так как теряется основное преимущество js - замыкания.

вы сами писать пробовали? Методы отлично соседствуют с замыканиями и не приходится создавать многократную вложенность, всё в пределах разумного.
Кроме методов, для упрощения можно создавать замыкания не в момент передачи ( `foo(function() {})` ), а вынося их в переменную ( `var bar = function() {}; foo(bar);` ), иногда это делает код более понятным.


"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 27-Июн-12 10:00 
бла бла бла. Плавали знаем.
Если не использовать замыкания - какой смысл в javascript?
>Кроме методов, для упрощения

это ваше "упрощение" из за явного связывания приводит к трудноуловимым багам.


a = 10
setTimeout ->
  console.log a
,1
a = 100

Результат 100

a = 10
func_maker = (x)->
  ->console.log x
setTimeout func_maker(a),1
a = 100

Результат 10 - Приятной отладки сцукu.

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 27-Июн-12 10:13 
Причем для полного счастья для ссылочных типов поведение кардинально отличается

obj = {}
obj.a = 10
setTimeout ->
  console.log obj
,1
jbj.a = 100

Результат {a:100}

obj = {}
obj.a = 10
func_maker = (x)->
  ->console.log x
setTimeout func_maker(obj),1
obj.a = 100

результат (!)тоже {a:100}
И нафига такой гемор? Только контекстно зависимых языков мне нехватало.

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено хзкто , 27-Июн-12 10:41 
> Причем для полного счастья для ссылочных типов поведение кардинально отличается

очевидно, чтобы использовать ссылки, нужно понимать, что такое ссылки. Разве нет?


"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 27-Июн-12 10:55 
Что бы что то советовать нужно быть знакомым с предметом. Вы не знакомы.



"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено хзкто , 27-Июн-12 10:36 
> a = 10
> setTimeout ->
>   console.log a
> ,1
> a = 100

такие "трудноуловимые баги" есть везде, достаточно 1 раз наступить на эти грабли, понять как оно работает и больше таких детских ошибок не допускать

> Результат 10 - Приятной отладки сцукu.

казалось бы, причём тут нода и js вообще? Эта ошибка сродни if(a = 1), такая же глупая


"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 27-Июн-12 10:53 
Эти баги появились благодаря предложенному вами методу, якобы "упрощающему" написание программ.
>казалось бы, причём тут нода и js вообще? Эта ошибка сродни if(a = 1), такая же глупая

Приехали. Эта вообще не ошибка. Это коренная отличительная особенность js вообще и node.js в частности.
Поэтому сначала ознакомьтесь с нодой, а уже потом давайте советы как "улучшить" чужой код.
Кстати, я говорил, что преждевременная оптимизация корень всех бед?

Рекомендованным способом уйти от "спагетти" callback-ов является использование EventEmitter -ов. См видеогайд от одного из разработчиков node Tom Hughes-Croucher
"Рow to stop writing spaghetti code"
www.youtube.com/watch?v=YRJGEc2kkDY
а не то что вы там выдумали.


"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено anon9 , 27-Июн-12 13:14 
> Эти баги появились благодаря предложенному вами методу, якобы "упрощающему" написание
> программ.

вообще это баги не благодаря коду, а от непонимания того, как работает замыкание переменных. Если вы не будете этого понимать, то вас и EventEmitter не спасёт

> Приехали. Эта вообще не ошибка. Это коренная отличительная особенность js вообще и
> node.js в частности.

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

> Рекомендованным способом уйти от "спагетти" callback-ов является использование EventEmitter -ов. См видеогайд от одного из разработчиков node Tom Hughes-Croucher
> "Рow to stop writing spaghetti code"
> www.youtube.com/watch?v=YRJGEc2kkDY

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


"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено хзкто , 27-Июн-12 09:37 
> Меня никто не заставляет.
> Это эталонный код с сайта разработчиков
> http://nodejs.org/api/domain.html

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


"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 26-Июн-12 19:24 
> Переход от непосредственного использования библиотек libev и libeio к использованию прослойки libuv позволил унифицировать поддержку платформ Unix и Windows, но привёл к некоторому изменению API,

У меня один вопрос - ЗАЧЕМ? Зачем Windows?


"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 26-Июн-12 19:29 
А зачем Node.js?

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено o , 26-Июн-12 19:32 
А альтернативы?

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено 1 , 26-Июн-12 19:48 
python

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 26-Июн-12 21:36 
> python

Еще более стремное угребище.


"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 26-Июн-12 21:42 
Мешает вам жить? Вызывает кошмары?

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Сергей , 27-Июн-12 01:46 
Erlang?

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Челз , 28-Июн-12 09:58 
Плохая работа со строками - тяжело в  вебе

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено anon9 , 26-Июн-12 19:32 
микрософт - один из спонсоров, и явно не из последних

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 26-Июн-12 20:18 
Микрософт главный спонсор c++11 и что? Где истерика еще и по этому поводу?

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено zzz , 27-Июн-12 01:00 
>Микрософт главный спонсор c++11 и что? Где истерика еще и по этому поводу?

так вот кто натащил столько мусору!(((((( ненависть!!!


"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено хзкто , 27-Июн-12 08:58 
> Микрософт главный спонсор c++11 и что? Где истерика еще и по этому
> поводу?

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


"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 26-Июн-12 21:39 
> У меня один вопрос - ЗАЧЕМ? Зачем Windows?

MS наверное доплатил чтобы хоть какой-то нормальный фреймворк для вебни был под их систему в человеческом виде. Правда вот с такими перетрясками апи - на них все забьют, пожалуй.

- (разработчики фреймворка) А теперь вам надо броить все и переделать код!
- (разработчики программ) Да вы обуели?!
- (прожектманагеры, доставая пистолет и целясь себе в висок) Ба-бах!
- (админы, откупоривая порцию спиртного с горя) семь бед - один ответ!


"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 26-Июн-12 20:17 
Для общего развития:
- Что мешает Питону и Руби добится скорости V8?
http://stackoverflow.com/questions/5168718/what-blocks-ruby-...
tl;dr - Мешает отсутсвие Ларса Бака, который 25 лет делает виртуальные машины для языков программирования.  


"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 26-Июн-12 20:44 
http://speed.pypy.org/

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 26-Июн-12 20:58 
"Циклюю полы.
Дешево.
Правда хреново"
Гвидо высказался по поводу PyPy на последнем PyCon
http://www.youtube.com/watch?v=EBRMq2Ioxsc&t=12m34s
(факи правда не показывал)
- "Так, а кто использует PyPy в продакшене поднимите руки. Что никто? Совсем никто? Ну и говорить не о чем."



"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 26-Июн-12 23:03 
Эти бы усилия да в нормальное русло. А то прямо как в поговорке: "сон разума рождает чудовищ"

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 27-Июн-12 10:29 
"Нормальное" - это одобренное вами? Ну ну.



"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 27-Июн-12 10:39 
"Нормальное" - это
Что б понять что разработчики движутся в сторону обратную здравому смыслу достаточно почитать мануал и попробовать что то написать под ноджс. Вот вы, например, пробовали это сделать?

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 27-Июн-12 10:41 
> "Нормальное" - это одобренное здравым смыслом
> Что б понять что разработчики движутся в сторону обратную здравому смыслу достаточно
> почитать мануал и попробовать что то написать под ноджс. Вот вы,
> например, пробовали это сделать?

fixed


"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 27-Июн-12 11:04 
>обратную здравому смыслу

Чьему здравому смыслу? Вашему? Здравый смысл, в отличие от логики не существует без субъекта которому он принадлежит.


"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 27-Июн-12 12:33 
>>обратную здравому смыслу
> Чьему здравому смыслу? Вашему? Здравый смысл, в отличие от логики не существует
> без субъекта которому он принадлежит.

Печально то что он может не существовать даже при наличии субъекта которому может принадлежать


"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 27-Июн-12 11:10 
>Вот вы, например, пробовали это сделать?

Если вы попробовали и это вызвало у вас замешательство, растерянность и дискомфорт то так и пишите. Незачем наводить тень на плетень.


"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 27-Июн-12 12:32 
>>Вот вы, например, пробовали это сделать?
> Если вы попробовали и это вызвало у вас замешательство...

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

плюс к предыдущему меня смутило большое количество "асинхронности" в мануале, которая на деле сводилась к каллбак-вызовам которые пихали где надо и где не надо.
>... и дискомфорт...

Когда код перевалил за десяток файликов продолжать его писать стало невозможно, отсутствие типизации в жс и макароны каллбаков сделали своё дело. Включение файлика в файлик только увеличило проблемы, т.к. в этом случае все ИДЕ начинали сходить с ума на автокомплите. Это было чрезвычайно неудобно.
> то так и пишите. Незачем наводить тень на плетень.

Вот так вас устроит?
Короче говоря выводы оказались простыми: его сделали люди которые не понимают для чего нужны веб-сервера, и как они работают, но обожают передавать функции как как параметры методов.


"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 27-Июн-12 12:54 
>ИДЕ начинали сходить с ума на автокомплите

О боже. Какой ужас. Как можно писать без аутокомплита?
Это ведь придется, о страх господень, учить язык и, матерь божья, думать что ты пишешь, а не клацать без перерыва ctrl-space. Решительно невозможно заставлять разработчика так напрягаться. Общество Защиты Животных не позволит.



"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 27-Июн-12 13:56 
Нет это означает, что я не хочу помнить что мне нужно вызвать initFooBar(foo, bar) а не initBarFoo(bar, foo). Вы очевидно не писали ничего сложнее хелловорда если так презрительно отзываетесь об автокомплите, я, например, не обезьяна что б тратить своё время на подобную глупость.

А то что я замечу эту ошибку только в рантайме (кстати не факт что замечу сразу) - просто приятный бонус.


"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 28-Июн-12 11:08 
> я не хочу помнить что мне нужно вызвать initFooBar(foo, bar) а не initBarFoo(bar, foo)

Положил клавиатуру на место. Метлы в сарае.
>я, например, не обезьяна

Амеба?

>тратить своё время на подобную глупость.

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

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


"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 28-Июн-12 16:20 
Подобные вам вместо того, чтобы честно признаться в лени и нехватки ресурсов, отмазывают отсутствие подсветки в Acme тем, что так якобы более простой код пишется.
Луддиты.

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 28-Июн-12 19:50 
И медведя можно научить ездить на велосипеде, но будет ли ему от этого польза или удовольствие.

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 28-Июн-12 20:02 
>Амеба?

Вижу вменяемые аргументы у вас кончились.

>Эта глупость называется программированием. Хотя не берите в голову. Метлы, как я уже
>сказал, ждут вас в сарае.
>Поразительно как упала культура программирования за последние 15 лет.

Поразительно как упала культура общения

В общем можете до посинения доказывать что земля плоская и мести улицы. А я тихо и спокойно буду писать код в своё удовольствие и получать за это деньги.
И да, я буду пользоваться автокомплитом, ибо машина должна работать а человек думать.


"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено zzz , 27-Июн-12 00:54 
самая главная проблема ребята это однопоточость. причем даже не просто nodejs а самого языка JS - те оно и в будущем таким будет. вот это проблема так проблема...

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 27-Июн-12 05:18 
Вот-вот. Еще крайне не хватает sleep() и блокирующих вызовов. Осильте уже кластер.

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 27-Июн-12 08:30 
Не согласен. Считаю основной проблемой жопорукость архитекторов этого поделия (если они там были).

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 27-Июн-12 09:23 
Считайте, кто вам мешает.

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 27-Июн-12 12:05 
Никто, так же как и вам никто не мешает считать что я не прав.

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 27-Июн-12 05:16 
Осталось дождаться когда bignums.js заменят нативной реализацией.

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 27-Июн-12 10:49 
Кому нужен nodejs если есть v8cgi?

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 27-Июн-12 11:02 
Кому нужен аноним когда можно фейспалмить и так?
Ну кто в своем уме будет использовать заброшенный не документированный проект?



"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 27-Июн-12 11:12 
Почему бы вместо велосипедов авторам не пилить в8цги? Или они нашли фатальный недостаток в веб-серверах?

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 27-Июн-12 11:16 
Хорошо, я им передам ваше предложение. Что то еще?


"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 27-Июн-12 12:22 
>Что то еще?

Розенталь.



"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 27-Июн-12 12:34 
Василий. Очень, приятно.

"Релиз серверной JavaScript-платформы Node.js 0.8"
Отправлено Аноним , 13-Сен-12 21:52 
Интересное применение Node.js - http://lecaw.ru/index.php/jquery/item/293-sozdanie-prilozhen...