Страницы

суббота, 3 сентября 2016 г.

VS Code Node.js Debugging

В VS Code есть встроенный дебаггер, но не смотря на то, что я использую этот инструмент уже давно, Node.js код я дебажу с помощью node-inspector. Сначала запускаю дебаггер: node-inspector --web-port 8088 --save-live-edit true --preload false, затем приложение: node --debug app или node --debug-brk app (по ситуации), после чего открываю в браузере интерфейс дебаггера по адресу http://127.0.0.1:8088/?ws=127.0.0.1:8088&port=5858. Расскажу как я пытался перейти на встроенный дебаггер VS Code.

пятница, 19 августа 2016 г.

Node.js HTTP/2

На прошлой неделе среди разработчиков Node.js началось обсуждение реализации протокола HTTP/2. Ждать появления HTTP/2 в Node.js core еще очень долго, но уже сейчас можно затестить фичи этого протокола с помощью модуля node-spdy, который работает как с протоколом SPDY - предшественником HTTP/2, который кстати Google Chrome больше не поддерживает, так и с HTTP/2, обязательно поверх TLS. Расскажу как я тестил фичу по имени HTTP/2 Server Push.

вторник, 9 августа 2016 г.

JavaScript trampolining

Самой ожидаемой фичей ES6 для меня остается proper tail calls (уже рассказывал об этом), которая на сегодня в V8 так и не реализована. Далее покажу один из способов эмуляции "правильного" вызова tail-recursive функций с помощью одного приема по имени trampolining. Название не очень отражает суть, я бы назвал эту технику "развинчивание стэка вручную". Для примера возьмем "традиционную" рекурсивную реализацию функции, возвращающей факториал:

четверг, 4 августа 2016 г.

JavaScript curry

Случилось мне недавно каррировать функцию. Наверное проще было бы заимствовать уже готовый вариант у специально предназначенных для подобных практик инструментов - Lodash или Rambda, но мне этот вопрос показался тривиальным и вряд ли заслуживающим более 30 секунд времени на реализацию. Высказывание уважаемого Douglas Crockford отражает суть: "The making of good software takes time. If you try to make it take less time, it will take more time.".

суббота, 9 июля 2016 г.

VS Code with Tabs

Свершилось чудо! Вчера вышла версия 1.3 текстового редактора Visual Studio Code с поддержкой вкладок! Я использую VS Code уже около года, и отсутствие вкладок было единстенным неудобством этого инструмента. Конец моим страданиям и разочарованиям. Из расширений у меня установлены ESLint и Go, что позволяет вполне комфортно работать с Node.js и Go, в случае необходимости можно найти еще. В общем мелкомягким зачет, хороший инструмент, мне нравится.

пятница, 8 июля 2016 г.

ES6 split unicode string

Вчера увидел пост о том, как разбить строку в массив символов юникода с помощью регулярного выражения. Хотел было предложить автору попробовать использовать спред, но он волшебным образом меня опередил и в постскриптуме привел результаты своих тестов, которые показывают более высокую производительность регулярного выражения против спреда. По теме производительности JavaScript хочу предложить пару на мой взгляд наивкуснейших материалов: блог Вячеслава Егорова, а также свежее видео его доклада на конференции HolyJS 2016.

суббота, 14 мая 2016 г.

JavaScript Symbol.species

Наверное самой ожидаемой фичей ES6 для меня является proper tail calls, которая в V8 похоже на сегодня не реализована. Недавно обратил внимание на то, что в Node.js версии 6.0.0 реализовали другую полезную фичу по имени Symbol.species, которая позволяет подклассам переопределить конструктор, используемый по умолчанию для создания новых объектов. Правда пока только под флагом --harmony, поэтому с наследованием от встроенных конструкторов я бы повременил.

воскресенье, 1 мая 2016 г.

Go Tail MongoDB

На днях написал простенький Go пакет по имени mgotail, предназначенный для получения свежих документов из MongoDB capped collections с помощью tailable cursors. Node.js модуль mongodb-tail справляется с этой задачей, но в силу своей природы не эффективен если использовать несколько процессорных ядер. Писать код на Go я начал совсем недавно, пока как говорится "верхушек нахватался", может быть поэтому решение на Go мне кажется и быстрее, и надежнее.

суббота, 2 апреля 2016 г.

JavaScript Role Based Access Control

На днях по случаю увидел один пост, посвященный реализации контроля доступа в Node.js, и предложенный вариант меня немного удивил. После просмотра реализации "ролей" я понял в каком ключе написано все остальное, пролистал пост до конца и был удивлен еще больше - автор поста пишет книги по безопасности Node.js приложений! Тут "Остапа понесло" и я решил прокомментировать промо этого поста: "It could be implemented much easier using bit masks".