Увидел свет (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
Node.js - это hello world, зашедший слишком далеко.
Нет, это просто у вас разум дальше хеллоуворда не продвинулся.
Это у авторов разум не продвинулся дальше JavaScript.
Куда там до таких как ты, кто чтобы булку съесть хлебзавод покупает.
А чем именно плох JavaScript?
Тем, что он не задумывался как язык программирования общего назначения.
Хм. Java, к примеру, тоже не задумывалась как язык программирования общего назначения.
> Тем, что он не задумывался как язык программирования общего назначения.Не задумывался, но получился очень даже неплохим.
В отличии от ПХП.А по вашему чем именно он не тянет на общего назначения?
Что-то конкретное скажите, кроме пустых выкриков.
На данный момент главная притензия - нестабильный api. Причем не стабильный не изза объектмвных причин а из за самодурства разработчиков.
За каким спрашивается, чертом взять и переместить функцию exists из модуля path в модуль fs, ломая сотни сторонних модулей? А до этого sys взяли переименовали в utils, зачем?
> На данный момент главная притензияВ вашей прЕтензии - баг :)
Если бы я был разработчиком node.js, то вместе с исправлением этого "бага" я бы еще и переписал комментарий на корейском языке. И, соответственно, ваш комментарий, как зависимый, стал бы не корректен.
Но я оставлю так как есть, ради обратной. совместимости.
Вторая претензия - никакая библиотека.
Ну как я на производственный сервер поставлю модуль sqlite авторства ВасиНогибатораПупкина из его github репозитория? [Брат|/usr] то и так еле жив.
И когда они опять сломают api сколько мне ждать пока Вася протрезвеет и обновит модуль?
> На данный момент главная притензия - нестабильный api. Причем не стабильный не изза объектмвных причин а из за самодурства разработчиков.
> Вторая претензия - никакая библиотека.Ну вот вы и попались. Что и следовало ожидать.
Вы просто не знаете чем отличается "ЯП общего назначения", API и библиотеки. У вас в сознании одна большая каша.Ну и на старом добром С понаделано куча ужасных API и кошмарных библиотек, но от этого он ведь не перестает быть языком общего назначения.
> За каким спрашивается, чертом взять и переместить функцию exists из модуля path в модуль fs, ломая сотни сторонних модулей? А до этого sys взяли переименовали в utils, зачем?
> Ну как я на производственный сервер поставлю модуль sqlite авторства асиНогибатораПупкина из его github репозитория? [Брат|/usr] то и так еле жив.
> И когда они опять сломают api сколько мне ждать пока Вася протрезвеет и обновит модуль?Здесь вы лишь продолжаете подтверждать, что вы не знаете, что именно относится к понятию "язык программирования общего назначения".
У любого языка есть свои быдлокодеры. Ну и что?
Первая претензия нестабильный апи.(включая с++ апи)
Вторая претензия слабая стандартная библиотека.> Ну и на старом добром С понаделано куча ужасных API и кошмарных
> библиотек, но от этого он ведь не перестает быть языком общего
> назначения.Это не имеет отношения.
> Здесь вы лишь продолжаете подтверждать, что вы не знаете, что именно относится
> к понятию "язык программирования общего назначения".Я не знаю что такое "язык общего назначения". И тем более я не знаю что ВЫ понимаете под этими словами. И мне это совершенно не интересно.
Для меня есть удобные языки и не удобные.
Язык который имеет большую стандартную библиотеку - удобный.
Язык который не ломает программы при обновлении - удобный.
Язык который сам обновляет библиотеку при установке новой версии - удобный.
Но это все не относится на данный момент к node.js.> У любого языка есть свои быдлокодеры. Ну и что?
Вот возьмем простейшую задачу - отправить письмо pop3.
Некоторые языки предложат оттестированный модуль из стандартной библиотеки,
а node.js? Правильно, заставить ковыряться в творениях юных "погромистов".
Нет спасибо.
> Вот возьмем простейшую задачу - отправить письмо pop3.*получить
> Первая претензия нестабильный апи.(включая с++ апи)
> Вторая претензия слабая стандартная библиотека.
>
>> Ну и на старом добром С понаделано куча ужасных API и кошмарных библиотек, но от этого он ведь не перестает быть языком общего назначения.
>
> Это не имеет отношения.Все правильно, потому что все претензии, которые вы высказываете не имеют отношения к непосредственно к языку. Не нравятся конкретные API и библиотеки - возьмите другие.
>> Здесь вы лишь продолжаете подтверждать, что вы не знаете, что именно относится к понятию "язык программирования общего назначения".
>
> Я не знаю что такое "язык общего назначения". И тем более я не знаю что ВЫ понимаете под этими словами. И мне это совершенно не интересно.Вы не только не знаете, что такое "общего назначения" - вы вообще не знаете, что такое "язык".
Не "язык общего назначения", а "язык _программирования_ общего назначения".
Выше была претензия, что как-будто у js есть проблемы именно с "общим назначением".
Хотите сказать, что это была не ваша претензия? Ну допустим.
Только почему-то точно также, как автор той претензии, вы не знаете, чем ЯП отличается от API и библиотек. Для вас это все одна большая куча.Судя по вашим ляпам - вы и есть тот, кто выше высказал претезии по поводу "общего назначения", только осознав, что не понимаете, что это такое, решили сделать вид, что это как будто были не вы. Только с пониманием всего остального у вас тоже не лучше. Читаем, что вы пишите дальше.
> Для меня есть удобные языки и не удобные.
> Язык который имеет большую стандартную библиотеку - удобный.
> Язык который не ломает программы при обновлении - удобный.
> Язык который сам обновляет библиотеку при установке новой версии - удобный.
> Но это все не относится на данный момент к node.js.Ну понятно, то есть node.js вы считаете именно языком. И кинулись в спор (если это действительно были не вы) даже не посмотрев, что речь в споре вообще-то шла о js, а не о node. Хотя своими высказываниями вы лишь продолжаете подтверждать, что вы не знаете, что такое язык.
Как это непосредственно язык может "ломать программы при обновлении"?Да, у node есть проблемы с его "главным" пакетным менеджером. Поэтому некоторые пользуются другими менеджерами пакетов. Либо делают собственные, что не так уж и трудно.
Только при чем здесь проблемы самого js, как языка?
>> У любого языка есть свои быдлокодеры. Ну и что?
>
> Вот возьмем простейшую задачу - отправить письмо pop3.
> Некоторые языки предложат оттестированный модуль из стандартной библиотеки, а node.js? Правильно, заставить ковыряться в творениях юных "погромистов".
> Нет спасибо.Ну и по-прежнему, при чем здесь язык?
Вот вы сейчас морозите глупости на русском языке - это же не значит, что это следствие проблем русского языка, и что от этого русский язык перестает быть естественным языком общего назначения.
> Все правильно, потому что все претензии, которые вы высказываете не имеют отношения
> к непосредственно к языку. Не нравятся конкретные API и библиотеки -
> возьмите другие.Мне пожалуйста, стандартную библиотеку. Кстати почему вы считаете что стандартная библиотека не является частью языка? Вы о требованиях сертификации java слышали например?
> Вы не только не знаете, что такое "общего назначения" -бла бла бла
Какой то псевдо-теоретический бред. Мне мало интересно как НАЗЫВАЕТСЯ сущность. Мне интересны ее свойства. А споры вида: "Ширенее крокодил чем зеленее или нет", я оставлю яйцеголовым.
> Ну понятно, то есть node.js вы считаете именно языком.
Считаю, я обычно пальцем.
Что не меняет того факта, что нода и javascript разные вещи.
(Или покажите мне в стандарте ECMA-262 такую основополагающую для ноды вещь как Buffer)> Ну и по-прежнему, при чем здесь язык?
Мне совершенно не интересно кто виноват язык, фреймворк, Api или погода на луне.
Мне, как практикующему программисту, их модель не удобна.>Как это непосредственно язык может "ломать программы при обновлении"?
Вы с луны что ли? Python3 слышали? Ruby 1.9?
>> Все правильно, потому что все претензии, которые вы высказываете не имеют отношения к непосредственно к языку. Не нравятся конкретные API и библиотеки - возьмите другие.
> Мне пожалуйста, стандартную библиотеку.Видимо вы считаете, что если библиотека стандартная, то это освобождает вас от необходимости вообще знать, что такое библиотека.
> Кстати почему вы считаете что стандартная библиотека не является частью языка?
Вы пока еще не разобрались, что такое язык, чтобы задавать вопросы, о том, что является частями языка.
> Вы о требованиях сертификации java слышали например?
Видимо свои представления о языках вы черпали исключительно из требований по сертификации java. Понятно теперь, откуда у вашего невежества "ноги растут". Получили какой-то сертификат, и теперь решили, что больше вам ничего знать не нужно.
> Вы не только не знаете, что такое "общего назначения" -бла бла бла
Как вы ловко заменили вторую часть предложения.
>> Вы не только не знаете, что такое "общего назначения" - вы вообще не знаете, что такое "язык".
>
> Какой то псевдо-теоретический бред.Понятно. Понимать что такое язык, и чем он отличается от API и библиотек - вы это считате совершенно ненужной псевдо-теорией.
> Мне мало интересно как НАЗЫВАЕТСЯ сущность. Мне интересны ее свойства. А споры вида: "Ширенее крокодил чем зеленее или нет", я оставлю яйцеголовым.
Дело не в названиях, а во взаимосвязях.
Вам интересны свойства сущностей, а их не названия. Замечательно, какой вы крутой прагматик.
Только вам теперь осталось научить не путать какие именно свойства к каким именно сущностям относятся.>> Ну понятно, то есть node.js вы считаете именно языком.
> Считаю, я обычно пальцем.И программы пишете руками. Все с вами понятно.
> Что не меняет того факта, что нода и javascript разные вещи.
Кажется до вас это стало доходить.
Теперь осталось только выяснить, за что именно вы тут боретесь.> (Или покажите мне в стандарте ECMA-262 такую основополагающую для ноды вещь как Buffer)
Вы сами говорите о недостатках языка, вот вы сами и обоснуйте это хоть на основании стандартов, хоть как-то еще.
А то получается, что вы совсем запутались, где язык, где библиотеки, а где API. И хотите теперь, чтобы я вам помог разобраться, потому что самостоятельное чтение чего-то отличного от серии книг "для чайников", например стандартов, ввело ваше сознание в окончательный ступор.
>> Ну и по-прежнему, при чем здесь язык?
>
> Мне совершенно не интересно кто виноват язык, фреймворк, Api или погода на луне.Вы здесь не рассмотрели вероятность, что виноватым можете оказаться вы сами.
Лозунг все быдлокодеров: - главное чтоб работало!
А как именно, за счет чего, что с чем связано - не важно.> Мне, как практикующему программисту, их модель не удобна.
Модель кого именно "их"? Сразу одна модель на всех "их"? Вы не хотите знать чем одно отличается от другого, но хотите рассуждать о каких-то моделях.
Очень многие бездари, когда не могут в чем-то разобраться, начинают оправдываться, что зато они такие крутые "практики". И что по их мнению практика освобождает от необходимости что-либо знать и понимать, что они делают.
>>Как это непосредственно язык может "ломать программы при обновлении"?
> Вы с луны что ли? Python3 слышали? Ruby 1.9?Это конечно хорошо, что вы слышали про Python3 и Ruby 1.9. Теперь вам только осталось разобраться, что именно в этих системах является языком, а что чем-то другим.
>Тем, что он не задумывался как язык программирования общего назначения.Забавно, что в современных реалиях повсеместного переползания в сеть, он и есть вполне себе общего назначения.
В этом переползании ничего нового нет.
Перевоплощение концепции timesharing из 60-70х годов.
> Перевоплощение концепции timesharingв privacy sharing
Насильно никто не заставляет.
А где сушить трусы, на балконе или в кладовке - пусть каждый решает сам.
> А где сушить трусы, на балконе или в кладовке - пусть каждый
> решает сам.пока есть балкон или кладовка...
ecma .. is final final final.... final standard
Шутки шутками, а скрипты времен второго NN мой браузер 2012 года выпуска проигрывает.
А как дело обстоит с python, ruby, perl ...?
Вот чего чего а прямой и обратной совместимости у js не отнять.
if(!String.prototype.trim) {
String.prototype.trim = function () {
return this.replace(/^\s+|\s+$/g,'');
};
}
для питона в подобных ситуациях приходится все переписывать.
> Вот чего чего а прямой и обратной совместимости у js не отнять.Только к node.js это не относится. Не слушают старика Крокфорда.
Вот уж к Perl-то какие претензии по части обратной совместимости?
domain - отличнейшая штука. Приятно, что разрабы постоянно запиливают именно то, что нужно
Ну и синтаксис
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. Читать такой код - пытка.
Это проблема не js, а node.js, где всё завязано на callback.
> Это проблема не js, а node.js, где всё завязано на callback.Единственное место где js активно используется кроме node.js - это браузеры.
И ты не поверишь...
Кто вас заставляет писать такой код? Выносите всё в отдельные методы, не допуская большой вложенности, и не будет никаких проблем. Это всё равно что написать, например, на питоне код с кучей вложеных конструкций и, показывая на него, говорить что питон - говно.
Меня никто не заставляет.
Это эталонный код с сайта разработчиков
http://nodejs.org/api/domain.html
>Выносите всё в отдельные методы,Так не получится, так как теряется основное преимущество js - замыкания.
> Так не получится, так как теряется основное преимущество js - замыкания.вы сами писать пробовали? Методы отлично соседствуют с замыканиями и не приходится создавать многократную вложенность, всё в пределах разумного.
Кроме методов, для упрощения можно создавать замыкания не в момент передачи ( `foo(function() {})` ), а вынося их в переменную ( `var bar = function() {}; foo(bar);` ), иногда это делает код более понятным.
бла бла бла. Плавали знаем.
Если не использовать замыкания - какой смысл в 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.
Причем для полного счастья для ссылочных типов поведение кардинально отличается
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}
И нафига такой гемор? Только контекстно зависимых языков мне нехватало.
> Причем для полного счастья для ссылочных типов поведение кардинально отличаетсяочевидно, чтобы использовать ссылки, нужно понимать, что такое ссылки. Разве нет?
Что бы что то советовать нужно быть знакомым с предметом. Вы не знакомы.
> a = 10
> setTimeout ->
> console.log a
> ,1
> a = 100такие "трудноуловимые баги" есть везде, достаточно 1 раз наступить на эти грабли, понять как оно работает и больше таких детских ошибок не допускать
> Результат 10 - Приятной отладки сцукu.
казалось бы, причём тут нода и js вообще? Эта ошибка сродни if(a = 1), такая же глупая
Эти баги появились благодаря предложенному вами методу, якобы "упрощающему" написание программ.
>казалось бы, причём тут нода и 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
а не то что вы там выдумали.
> Эти баги появились благодаря предложенному вами методу, якобы "упрощающему" написание
> программ.вообще это баги не благодаря коду, а от непонимания того, как работает замыкание переменных. Если вы не будете этого понимать, то вас и 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 - это всего лишь удобный инструмент для инкапсуляции, не более того. Сам по себе он никак не мешает писать трёхэтажные конструкции в обработчиках.
> Меня никто не заставляет.
> Это эталонный код с сайта разработчиков
> http://nodejs.org/api/domain.htmlЭто всего лишь пример, в который намеренно вставили много асинхронных операций. Код внутри не надо читать и поддерживать, он там только для демонстрации некоторой сложной асинхронной логики.
> Переход от непосредственного использования библиотек libev и libeio к использованию прослойки libuv позволил унифицировать поддержку платформ Unix и Windows, но привёл к некоторому изменению API,У меня один вопрос - ЗАЧЕМ? Зачем Windows?
А зачем Node.js?
А альтернативы?
python
> pythonЕще более стремное угребище.
Мешает вам жить? Вызывает кошмары?
Erlang?
Плохая работа со строками - тяжело в вебе
микрософт - один из спонсоров, и явно не из последних
Микрософт главный спонсор c++11 и что? Где истерика еще и по этому поводу?
>Микрософт главный спонсор c++11 и что? Где истерика еще и по этому поводу?так вот кто натащил столько мусору!(((((( ненависть!!!
> Микрософт главный спонсор c++11 и что? Где истерика еще и по этому
> поводу?где это вы истерику увидели? Я просто ответил на вопрос. Сам я в совместимости с Windows вижу только хорошее, лишь бы не отражалось негативно на никсовой реализации
> У меня один вопрос - ЗАЧЕМ? Зачем Windows?MS наверное доплатил чтобы хоть какой-то нормальный фреймворк для вебни был под их систему в человеческом виде. Правда вот с такими перетрясками апи - на них все забьют, пожалуй.
- (разработчики фреймворка) А теперь вам надо броить все и переделать код!
- (разработчики программ) Да вы обуели?!
- (прожектманагеры, доставая пистолет и целясь себе в висок) Ба-бах!
- (админы, откупоривая порцию спиртного с горя) семь бед - один ответ!
Для общего развития:
- Что мешает Питону и Руби добится скорости V8?
http://stackoverflow.com/questions/5168718/what-blocks-ruby-...
tl;dr - Мешает отсутсвие Ларса Бака, который 25 лет делает виртуальные машины для языков программирования.
http://speed.pypy.org/
"Циклюю полы.
Дешево.
Правда хреново"
Гвидо высказался по поводу PyPy на последнем PyCon
http://www.youtube.com/watch?v=EBRMq2Ioxsc&t=12m34s
(факи правда не показывал)
- "Так, а кто использует PyPy в продакшене поднимите руки. Что никто? Совсем никто? Ну и говорить не о чем."
Эти бы усилия да в нормальное русло. А то прямо как в поговорке: "сон разума рождает чудовищ"
"Нормальное" - это одобренное вами? Ну ну.
"Нормальное" - это
Что б понять что разработчики движутся в сторону обратную здравому смыслу достаточно почитать мануал и попробовать что то написать под ноджс. Вот вы, например, пробовали это сделать?
> "Нормальное" - это одобренное здравым смыслом
> Что б понять что разработчики движутся в сторону обратную здравому смыслу достаточно
> почитать мануал и попробовать что то написать под ноджс. Вот вы,
> например, пробовали это сделать?fixed
>обратную здравому смыслуЧьему здравому смыслу? Вашему? Здравый смысл, в отличие от логики не существует без субъекта которому он принадлежит.
>>обратную здравому смыслу
> Чьему здравому смыслу? Вашему? Здравый смысл, в отличие от логики не существует
> без субъекта которому он принадлежит.Печально то что он может не существовать даже при наличии субъекта которому может принадлежать
>Вот вы, например, пробовали это сделать?Если вы попробовали и это вызвало у вас замешательство, растерянность и дискомфорт то так и пишите. Незачем наводить тень на плетень.
>>Вот вы, например, пробовали это сделать?
> Если вы попробовали и это вызвало у вас замешательство...Мануал начинался с создания веб-сервера, я действительно оказался в замешательстве ибо апач у меня уже был.
>... растерянность ...плюс к предыдущему меня смутило большое количество "асинхронности" в мануале, которая на деле сводилась к каллбак-вызовам которые пихали где надо и где не надо.
>... и дискомфорт...Когда код перевалил за десяток файликов продолжать его писать стало невозможно, отсутствие типизации в жс и макароны каллбаков сделали своё дело. Включение файлика в файлик только увеличило проблемы, т.к. в этом случае все ИДЕ начинали сходить с ума на автокомплите. Это было чрезвычайно неудобно.
> то так и пишите. Незачем наводить тень на плетень.Вот так вас устроит?
Короче говоря выводы оказались простыми: его сделали люди которые не понимают для чего нужны веб-сервера, и как они работают, но обожают передавать функции как как параметры методов.
>ИДЕ начинали сходить с ума на автокомплитеО боже. Какой ужас. Как можно писать без аутокомплита?
Это ведь придется, о страх господень, учить язык и, матерь божья, думать что ты пишешь, а не клацать без перерыва ctrl-space. Решительно невозможно заставлять разработчика так напрягаться. Общество Защиты Животных не позволит.
Нет это означает, что я не хочу помнить что мне нужно вызвать initFooBar(foo, bar) а не initBarFoo(bar, foo). Вы очевидно не писали ничего сложнее хелловорда если так презрительно отзываетесь об автокомплите, я, например, не обезьяна что б тратить своё время на подобную глупость.А то что я замечу эту ошибку только в рантайме (кстати не факт что замечу сразу) - просто приятный бонус.
> я не хочу помнить что мне нужно вызвать initFooBar(foo, bar) а не initBarFoo(bar, foo)Положил клавиатуру на место. Метлы в сарае.
>я, например, не обезьянаАмеба?
>тратить своё время на подобную глупость.
Эта глупость называется программированием. Хотя не берите в голову. Метлы, как я уже сказал, ждут вас в сарае.
Поразительно как упала культура программирования за последние 15 лет.
Подобные вам вместо того, чтобы честно признаться в лени и нехватки ресурсов, отмазывают отсутствие подсветки в Acme тем, что так якобы более простой код пишется.
Луддиты.
И медведя можно научить ездить на велосипеде, но будет ли ему от этого польза или удовольствие.
>Амеба?Вижу вменяемые аргументы у вас кончились.
>Эта глупость называется программированием. Хотя не берите в голову. Метлы, как я уже
>сказал, ждут вас в сарае.
>Поразительно как упала культура программирования за последние 15 лет.Поразительно как упала культура общения
В общем можете до посинения доказывать что земля плоская и мести улицы. А я тихо и спокойно буду писать код в своё удовольствие и получать за это деньги.
И да, я буду пользоваться автокомплитом, ибо машина должна работать а человек думать.
самая главная проблема ребята это однопоточость. причем даже не просто nodejs а самого языка JS - те оно и в будущем таким будет. вот это проблема так проблема...
Вот-вот. Еще крайне не хватает sleep() и блокирующих вызовов. Осильте уже кластер.
Не согласен. Считаю основной проблемой жопорукость архитекторов этого поделия (если они там были).
Считайте, кто вам мешает.
Никто, так же как и вам никто не мешает считать что я не прав.
Осталось дождаться когда bignums.js заменят нативной реализацией.
Кому нужен nodejs если есть v8cgi?
Кому нужен аноним когда можно фейспалмить и так?
Ну кто в своем уме будет использовать заброшенный не документированный проект?
Почему бы вместо велосипедов авторам не пилить в8цги? Или они нашли фатальный недостаток в веб-серверах?
Хорошо, я им передам ваше предложение. Что то еще?
>Что то еще?Розенталь.
Василий. Очень, приятно.
Интересное применение Node.js - http://lecaw.ru/index.php/jquery/item/293-sozdanie-prilozhen...