Рубрика «node.js» - 99

Вступление

За время существования Дневник.ру (а это более 4-х лет) скопился огромный объем JavaScript кода: часть находилась в отдельном проекте в виде подключаемых файлов, часть определялась прямо на разметке контролов, а часть собиралась прямо в code-behind при помощи StringBuilder. К этому прибавлялись:

  • растущее количество HTTP запросов для получения статичного контента – так, например, на всех страницах только в теге <head> загружалось 11 JavaScript файлов;
  • глобальные переменные, которые иногда перекрывали друг друга;

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

В этой статье мы расскажем вам о том, как решили эту задачу, и, разумеется, не умолчим о проблемах, с которыми при этом столкнулись.
Читать полностью »

Возникла у нас на проекте прихоть — рисовать на стороне сервера графики, да не простые, а максимально похожие на уже имеющиеся графики на клиентской стороне.
Да-да, именно так, на клиенте уже были всевозможные красивости, реализованные на d3.js.
Node + Phantom
Для исследования возможностей был применен комплексный метод анализа «google-driven investigation» и в первой итерации выбор пал на ноду + фантом.

За подробностями прошу в глубины поста.

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

Около двенадцати часов назад Джон Резиг нащебетал в Твиттер, что на конференции Google I/O было объявлено о поддержке Asm.js в движке V8 и во браузере Google Chrome.

Так как про Asm.js упоминали на Хабрахабре (1, 2), то достоинства его могли стать известны многим читателям. Тем приятнее им предвкушать теперь в самом скором времени появление этих достоинств не только во браузере Firefox (где они впервые были внедрены Фондом Мозиллы), но и в движке V8 (а значит — в построенном на его основе движке Node.js!), и во браузере Google Chrome.

Но для тех читателей, которые до сих пор пропускали эту новинку мимо себя, я также вкратце напомню суть. Asm.js — это особое подмножество языка JavaScript: ограничившись им в своём скрипте, автор скрипта обеспечивает возможность оптимизации интерпретируемого кода не только в момент исполнения (just-in-time, JIT), но даже и заблаговременно (ahead-of-time, AOT), то есть такому джаваскрипту становится возможно один раз однозначно заранее поставить в соответствие некоторый машинный код. Эффект этот достигается ценою заметных усилий по самоограничению. (В частности, при помощи операции «|0» и других специальных приёмов тип значения каждого входного параментра функции, равно как и выходного значения, оказывается однозначно заданным и неизменным.) Зато его итогом становится небывалый рост скорости исполнения джаваскрипта — теперь по скорости он уступает скомпилированной программе (на Си или Си++) не более чем в два раза.

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

«Битва балансеров» — это нагрузочный тест балансеров / прокси, которые поддерживают WebSockets. Данные технологии незаменимы при масштабировании инфраструктуры.

Тестировались следующие технологии:

— http-proxy, версия: 0.10.0
— HAProxy, версия: 1.5-dev18 (девелопмент релиз)
— элементарный “echo сервер”, для контрольного теста.

Были сомнения относительно hipache. Причина по которой он был исключен проста — он построен на базе http-proxy. В данный момент они используют форк проекта, в котором попросту отсутствуют патчи, связанные с производительностью.
Читать полностью »

Новая версия WebMatrix 3: интеграция с облаком, TFS, Git, удаленный доступ к сайтам
Выпущена очередная версия бесплатного редактора кода и интегрированного средства разработки приложений WebMatrix 3. Среди функциональных возможностей WebMatrix 3 можно выделить следующие:

  • поддержка кода проектов HTML/CSS/JS, ASP.NET, PHP, Node.js;
  • встроенный редактор БД SQL Server и MySQL;
  • поддержка редакторами Jade, EJS, LESS, CoffeeScript;
  • галерея шаблонов популярных open source CMS: Joomla, Drupal, DotNetNuke, Orchard CMS, WordPress, phpBB и десятков других;
  • готовые стартовые проекты, в том числе Node.js c Express и Socket.io;
  • поддержка автодополнения и intellisense для ASP.NET, PHP, Node.js;
  • мобильная разработка: эмуляторы для мобильной веб-разработки, шаблоны мобильных сайтов;
  • инструменты анализа сайтов на вопросы SEO, ошибки, производительности;
  • система и галерея расширений от сообщества разработчиков;
  • поддержка галереи NPM-модулей для Node.js и репозитория Nuget для ASP.NET;
  • встроенная интеграция с системами контроля версий Git и TFS;
  • интеграция с облаком Windows Azure, публикация в облако проектов PHP, Node.js и ASP.NET, удаленный доступ к сайтам;
  • удаленный доступ к сайтам и публикация через протоколы FTP, WebDeploy, доступ к облачным размещениям.

WebMatrix 3 доступен бесплатно для загрузки на официальном сайте http://webmatrix.net/.

Быстрый обзор новинок третей версии доступен в этом видео на сайте Channel9. Для более подробного описания возможностей редактора обратитесь к этой статье и этому анонсу самой первой версии. Ниже вы найдете информацию о нововведениях в третей версии средства разработки.
Читать полностью »

Позавчера (27 апреля) из праведных недр интеловского Центра технологий с открытым исходным кодом (а это тот самый Центр, который hshhhhh обозревал неделю назад во блогозаписи «Печеньки для пингвина») вышла в свет новая версия движка node-webkit — могучего объединения Node и WebKit (точнее даже не просто WebKit, а Chromium — и в дальнейшем, вероятно, Blink), обеспечивающего быстрое и бесхитростное создание GUI-приложений методами веборазработки (код на JavaScript с употреблением API от Node.js, а интерфейс на HTML да на CSS) под операционные системы Windows, Mac OS X и Linux.

Новая версия имеет номер 0.5.1; на её основе нетрудно составить и запустить, например, вот такое окно:

[скриншот]

Одну из предыдущих версий node-webkit (0.4.1) мне довелось обозреть в начале февраля, а теперь на дворе конец апреля. Настала пора рассказать обо всех тех изменениях, которыми сопровождался выход версии 0.4.2, за нею 0.5.0, и затем 0.5.1 наконец. Рассказываю:

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

в 5:45, , рубрики: node.js, npm, метки: ,

Создание npm пакета

Типичная ситуация — в проекте существует некий модуль. Модуль развивается, становится самостоятельным элементом и копируется в другой проект. Потом еще один проект. И еще.

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

Да ладно, «не понятно где актуальная версия»! Вполне возможно, что в каждом проекте у модуля будут свои модификации, в которые будет достаточно сложно привести в порядок для использования в следующем проекте.

Вполне можно ограничиться созданием отдельного репозитория для модуля, например на GitHub или Bitbucket. Но добавлять репозиторий как субмодуль для GIT — это путь к приключениям.

Можно пойти дальше, и создать на основе такого модуля npm-пакет.

Работать с такими пакетами очень просто. Установить npm-пакет можно с помощью команды npm install, а обновить с помощью npm update.
Читать полностью »

Что такое GruntJS

Большинство JS разработчиков уже используют какие-то инструменты компоновки для своих разработок, даже если не знают или не используют этот термин. Они объединяют файлы при разработке, уменьшают код JavaScript-а, чтобы ускорить загрузку страниц и конвертировать Sass, или уменьшают количество файлов в CSS для браузера, и много чего другого. Чаще всего это разные инструменты, что есть не очень удобно.

Grunt помогает управлять всеми этими шагами в одном месте и организовать сторонние компоненты.
Читать полностью »

CodingDead — события, технологии и новости Ruby/Rails/Javascript сообщества

Чуть больше года назад мы открыли информационный поток на Google+ посвященный Ruby/Rails. Не смотря на разные отзывы в духе «а давайте здесь рекламировать группы Вконтакте» и скромный +1 посту, к сообществу присоединилось более 500 разработчиков, которые и по сей день получают (более или менее регулярно) новости, ссылки и пищу для размышлений.
Читать полностью »

Большинство современных языков программирования позволяют использовать асинхронно выполняемые блоки кода. Вместе с гибкостью, получаемой при использовании асинхронного подхода, рискнувший его применить также получает более сложный для понимания и поддержки код. Однако, любое усложнение, с которым сталкиваются программисты, как правило, находит практическое решение в виде нового подхода или повышения уровня абстракции. В случае асинхронного программирования таким средством служит объект типа отложенный результат или deferred (англ. deferred — отложенный, отсроченный).

В статье будет рассказано о базовых подходах к возврату асинхронных результатов, функциях обратного вызова, объектах deferred и их возможностях. Будут приведены примеры на языке JavaScript, а также произведён разбор типового объекта deferred. Статья будет полезна программистам, начинающим постигать асинхронное программирование, а также знакомым с ним, но не владеющим объектом deferred.
Читать полностью »


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