Страницы

суббота, 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".

суббота, 12 марта 2016 г.

Что еще почитать по JavaScript

Очередная порция мануалов по JavaScript, с которыми я познакомился за период, прошедший с момента предыдущей публикации по теме: Exploring ES6Speaking JavaScript и Setting up ES6 от Dr. Axel Rauschmayer (автора ②ality - блога по веб-разработке), а также Understanding ECMAScript 6 от Nicholas C. Zakas (не менее известного веб-девелопера). Весь материал по ссылкам полностью читабелен онлайн. Кроме того рекомендую просто обалденное на мой взгляд видео - JavaScript Combinators, the “six” edition - свежий доклад с NDC Conferences от уважаемого Reginald Braithwaite. Для "гурманов" могу предложить Category theory for JavaScript programmers: плейлист состоящий из 28 видео на тему "Теория категорий".

понедельник, 22 февраля 2016 г.

Node.js Stream. Promise vs. Callback

Пайпинг потоков в Node.js - дело нехитрое. Главное не забывать слушать ошибки в каждом потоке. И на сегодня это единственный кейс, где я нахожу оправданным использование промисов вместо функций обратного вызова. Объясню почему на простом примере. Для начала напишем три кастомных конструктора, которые наследуют от ReadableTransform, Writable и работают в Object Mode:

среда, 10 февраля 2016 г.

Node.js MongoDB Iterate Cursor

Три паттерна итерации по курсору MongoDB: первый - "классический" - на старых добрых функциях обратного вызова, второй - "на любителя" - на промисах, третий - "для извращенцев эстетов" - на промисах и генераторах с использованием co, второй и третий можно применять только со второй версией MongoDB Native NodeJS Driver и Node.js не меньше четвертой версии.