Рубрика «nodejs» - 29

в 12:02, , рубрики: Node, node.js, nodejs, обновление ПО

Я необыкновенно рад объявить о выходе новой стабильной версии Node.js.

По сравнению с выпусками Node версий 0.6 новый выпуск обеспечит существенное улучшение многих ключевых показателей производительности, а также более ясные встроенные API и появление новых средств для отладки.

Вкратце

С приходом версии 0.8.0:

  1. Node стал гораздо быстрее.
     
  2. Node стал стабильнее.
     
  3. Снова можно работать с дескрипторами файлов.
     
  4. Модуль cluster стал куда более умопотрясающим.
     
  5. Был добавлен модуль domain.
     
  6. Модуль repl стал лучше.
     
  7. Система сборки waf заменилась на gyp.
     
  8. Также случились некоторые другие изменения.
     
  9. Внизу блогозаписи — ссылки на установочные файлы Node.

Читать полностью »

Послезавтра (25 июня) вероятным будет выпуск очередной стабильной версии (0.8.0) движка Node.jsВерсия 0.8 движка Node.js подготавливалася давно, и вот постепенно становится понятно, что выпуск её вероятен послезавтра — 25 июня 2012 года.

На Гитхабе ужé состоялся коммит с упоминанием послезавтрашней даты, в списке ветвей кода появились ветки «v0.8» и «v0.8.0-release», во блоге Node 19 июня опубликовано сообщение о том, что версия 0.7.12 станет последнею в своей ветке 0.7.

Что же это будет означать для программистов на джаваскрипте, использующих движок Node для запуска своих скриптов? Чем обернётся обновление программного обеспéчения?

Исправления тех или иных ошибок в коде никак не повлияют на наше с вами программирование (если только прежде не приходилося специально обходить их), поэтому обратить внимание придётся прежде всего на накопившиеся мелкие изменения в API. К счастью, в вики Node на Гитхабе есть страница «API changes between v0.6 and v0.8», в которой все они аккуратно перечислены. Нетрудно обнаружить, что там их ≈60 штук, считая и нерекомендуемые, и удалённые, и изменённые, и вновь появившиеся возможности.

Читать полностью »

Bomberman Online и хабраэффект — 450 игроков на одной карте. Отчёт и детали игрового движка

Как и обещали в топике-анонсе нашей игры, выкладываем отчёт о хабраэффекте и детали игрового движка.
Читать полностью »

Сегодня у меня две причины пробежаться по клавишам.

Во-первых, после того, как на прошлой неделе я перевёл документацию по jParser (после ознакомления с RReverserовским примером применения jParser при анализе BMP-файлов), мне представляется уместным перейти к напрашивающемуся последующему шагу: развить тему, поделиться с читателями моим собственным примером применения jParser для анализа несколько более сложной структуры данных. (Отчасти это станет ответом на вопрос, который alekciy задал, интересуясь дальнейшими примерами практического использования jParser.)

Node.js на узле Фидонета: читаем джаваскриптом заголовки эхопочты, хранимой в формате JAMВо-вторых, ≈полгода назад (26 ноября 2011 года) ertaquo поинтересовался, зачем мне хочется использовать Node.js в Фидонете. Тогда я сообщил, что мне просто нравится название (помню те времена, когда термин «node» или «нóда», если употреблялся без уточнения, в российском околокомпьютерном мире по умолчанию означал узел Фидонета), но не мог привести никакого наглядного примера работающего кода, а сейчас приведу.

Итак, пример будет двойным. Предлагаю вашему вниманию анализ заголовков писем фидонетовской эхопочты, хранимой в формате JAM. Этот формат популярен в Фидонете со времён далёких и незапамятных (в Википедии говорится, что появление JAM относится к 1993 году). Сразу скажу, что давно предпочитаю JAM другому популярному формату (Squish), потому что этот последний хранит в заголовке у письма идентификаторы не более чем девяти откликов на него, тогда как JAM вместо массива ограниченной длины использует более гибкую структуру данных (связный список), так что позволяет выстроить полное дерево ответов даже в самых оживлённых и разветвлённых обсуждениях.

Читать полностью »

Bomberman Online — HTML5 мультиплеер онлайн игра от хабраюзеров. Тестируем нагрузку!Bombermine Online — результат последних двух недель тестирования и подготовки движка для большого кол-ва игроков онлайн.

Движок написан на Java + Jetty (бекэнд). Фронтэнд — HAProxy + Nginx + Node.js. Клиентсайд — GWT, который транслируется в HTML5/canvas + javascript + websockets. Хостится всё в облаке.

На данный момент рекорд — 50 игроков онлайн. Настроен весь необходимый софт для мониторинга нагрузки. После хабраэффекта обещаем выложить отчёт. Ждём гостей :-)

Читать полностью »

Внутри HTTP сервера, встроенного в Node, обнаружена уязвимостьМэтью Дэйли (Matthew Daley) выяснил, что в коде HTTP-сервера, встроенного в движок Node, есть ошибка или даже просто опечатка (используется «size» вместо «size_»), так что специально сформированным запросом к серверу можно добиться того, что сервер существенно переоценит реальный размер запроса и включит в него содержимое соседних чужих HTTP-запросов (например, частью переданной на сервер переменной станут чьи-нибудь чужие cookies; и если это будет переменная из числа тех, которые тотчас же выводятся на экран, то крякерская атака легко может оказаться успешною).

Всем пользователям Node версий 0.5.x и 0.6.x следует без промедления обновить Node до версии 0.6.17, а обладателям экспериментальных версий из ветки 0.7 следует обновиться до 0.7.8. (Версии 0.4.x не содержат этой ошибки, однако на вашем месте я бы их всё равно обновил, ибо они старьё.)

Об этом опубликовано оповещение во блоге Node.

Читать полностью »

в 5:09, , рубрики: Node, node.js, nodejs, метки: , ,

node getВ движке Node встроенным средством отсылки запросов к отдалённым web-серверам (и обработки полученных откликов) является метод http.request(), однако он оказывается чрезмерно низкоуровневым: если на дальнем конце настроено серверное перенаправление, то этот метод выдаст вам страницу с кодом HTTP 301 (или HTTP 302, или HTTP 303…), а не ту страницу или файл, на который перенаправление указывает.

Преодолеть этот недостаток помогает модуль node-get, разработанный организацией «Development Seed»: он автоматически обрабатывает перенаправления и получает окончательный отклик на отосланный запрос.

Читать полностью »

Это небольшая история страданий, боли, взлетов и падений в попытках ускорить работу RaphaelJS на больших и сложных SVG. Если вы страдаете от подобных проблем, то не стоит ждать в конце этой статьи серебряной пули, но, надеюсь, что про наш путь поиска решения будет интересно прочитать всем.

Читать полностью »

Документация — одна из самых важных составляющих любого проекта, особенно если этот проект с открытым кодом, который будут читать другие люди. Чтобы сделать мир opensource чуточку лучше, я попытался собрать свои знания в области организации модулей nodejs проектов и сделать такой инструмент как Makedoc!. Ремарка для адептов ruby: это почти то же, что и rdoc.info для руби.

Этот инструмент анализирует код проекта, выделяет потенциально документируемые куски кода (не важно, с документацией или без), и генерирует статический набор страничек, описывающих проект.

В кратце шаблон использования такой: идем на makedoc.node-js.ru/[githubusername]/[projectname] и видим готовую документацию по проекту. Либо идем на makedoc.node-js.ru/[githubusername] и получаем список проектов для которых можно сгенерировать документацию.

За деталями реализации прошу под кат.
Читать полностью »

Здравый смысл веборазработчика подсказывает, что во браузерном джаваскрипте глобальные переменные являются свойствами объекта window — так что window.чегоНибудь и просто чегоНибудь должны быть синонимами и вести себя одинаково (если, конечно, мы не находимся в какой-нибудь такой функции, где переменную чегоНибудь переопределили локально).

Здравый смысл веборазработчика также ещё подсказывает, что неопределённая переменная должна иметь значение undefined — так что чегоНибудь и undefined должны быть синонимами и вести себя одинаково, если переменную чегоНибудь не упоминали в джаваскрипте, и если какой-нибудь чудила не дерзнул переопределить undefined.

Но если вы собираетесь программировать для Opera 11 (будь то начальная версия Opera 11.01 или новёхонькая Opera 11.61), то будьте готовы отречься от здравого смысла в обоих сих случаях! (Да и не только в Opera, как я покажу чуть ниже.)

Чтобы нагляднейше убедиться в этом, воспользуемся библиотекою Underscore.js, в которой как раз имеется удобная функция тестирования неопределённых переменных — это функция _.isUndefined(), в исходном коде определённая самоочевидным способом:

// Is a given variable undefined?
_.isUndefined = function(obj) {
   return obj === void 0;
};

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js