The future of Node.js: Stable, secure, everywhere

За последнии 4 года разработка на платформе Node.js резко возросла, по данным Node.js Foundation и трендам google. Разработчики отмечают основные приоритеты Node.js, как стабильность и безопасность, и проводят множество исследовательских работ в рамках многопоточности.

Сообщество Node.js все больше пытается популяризировать использование технологии в рамках серверных разработок и интернета. Одним из последних докладчиков стал Rod Vagg, член Node Technical Steering Committee, который представил доклад на Node Summit conference в San Francisco.

Хотите разрабатывать на JavaSciprt ? Взгляните на 17 JavaScript editors and IDEs.

Сообщество и разработчики Node.js стремятся к стабильность релизов. Vagg отметил в своем докладе, — «К сожалению, мы привыкли называть текущую ветку Node.js — стабильной, однако она далека от той стабильности, которой мы бы хотели достичь». За последнии релизы было слишком много дефектов и регрессии. Например, одна из последних статей «The Node.js Foundation revealed a denial-of-service and an out-of-bounds access issue and said the fixes will come next week». Ситуация не критична, но нуждается в улучшении.

В будущих улучшениях языка планируется добавление Zones, для более удобного написания асинхронного кода. Между тем и многопоточность может быть реализована аналогично с браузерами поддерживающими Web Workers.

Так же в планах есть улучшение взаимодействий между Node.js и ECMA TC39 комитетом, который занимается разработкой стандарта ECMAScript. Опять таки более тесная связь с ECMA TC39 поможет улучшить построение асинхронных процессов. И в недалеком будущем обещают реализацию низкоуровневых функций JavaScript tail call, что поможет более удобной отладки кода.

И конечно не обходится без планов на внедрение HTTP/2. При этом не стоит забывать сколько в Node.js было уязвимостей связанных HTTP.

Одним из самых интересных планов является обновление движка V8 при соблюдении стабильность ABI. Google’s V8 JavaScript текущий выбор VM для Node.js, но Microsoft в надежде угнаться за динамичность развивающейся областью — бросается в погоню.

Unit Test with Jasmine 2.0 & RequireJS

Небольшой пример тестирования, с помощью Jasmine 2.0 и RequireJS

Рассматриваются,

  • сравнения
  • spyOn и вызовы

Исходный код на Plunker

 

AngularJS 2.0 Preview

AngularJS Weekley Meeting тут

AngularJS 2.0 это не очередной большой релиз, это полный рефакторинг библиотеки с использованием последних стандартов ES6!

Что же нас ожидает ?

Основные направления разработки: Change Detection, Dependency Injection, Templating, Persistance, Routing, Logging, Annotations, Documentation, Benchmarking, Touch/Animations, Package Repository, Reference App, Scaffolding and Build/Deploy.

Часть данных направлений уже имею рабочие прототипы.

Change Detection

Используется Object.observe() — низкоуровневый метод API позволяющий отслеживать изменение состояния JavaScript объекта.
Более подробное описание можно прочитать тут и тут.

В отсутствие нативной поддержки данного метода (на данный момент), команда AngularJS нашла замену в использовании Watchtower.js

Исоходный код Watchtower.js

Дизайн документ тут

Dependency Injection

Данный прототип уже готов к тестированию. DI сделан с учетом стандарта ES6 и обеспечивает удобный синтаксис, декларативные аннотации и отложенные загрузки.

Ниже пример кода DI. Зависимости передаются в качестве аргументов конструктора.

 

Чтобы уже сейчас попробовать DI,
# Clone репозиторий (или fork).
git clone https://github.com/angular/di.js.git

# устанавливаем dev dependencies, Karma, Gulp, etc.
npm install

# Если захотите использовать «karma» или «gulp»:
npm install -g karma-cli
npm install -g gulp

# Transpile ES6 в ./compiled/*
gulp build

# Детект изменений кода
gulp watch

gulp build_examples
gulp serve

Исходный код di.js
Дизайн документ тут

Continue reading “AngularJS 2.0 Preview” »

The AngularJs Promise Pattern

Или давайте наконец-то уже писать promises «человеческим» языком!

Асинхронные взаимодействия в AngularJS построены на promise. Я не хочу рассматривать в данной записи подробно теорию promise, так что, рассмотрим лучше их применение.

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

Собственно, пример ниже,

Прежде чем раздуть holy war, вы конечно можете спросить — «что же тут не верно? «, собственно «почти» все верно и даже может быть приемлемо в некоторых случаях. Как видно из кода, мы стараемся разделить обработчики, абстрактные обратные вызовы и код более менее чистый. Однако, при таком подходе использования promise, мы столкнемся с некоторыми проблемами. Собственно, давайте обсудим все по порядку.

День первый: Initial code

В один пятничный день, сидя на работе и попивая чай, к Вам вдруг подбегает менеджер со словами — «Нам нужна страничка, которая сохраняет элемент, а затем переходит в другой раздел (другую страницу)».

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

И вуаля, код для нашей страницы готов! Все работает как и было задуманно. Я почти уверен, что большая часть разработчиков написали бы именно такой код (не лукавте, все, хотя бы один раз именно так и писали) .

Continue reading “The AngularJs Promise Pattern” »