Страницы

суббота, 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 не меньше четвертой версии.

воскресенье, 7 февраля 2016 г.

Node.js FFmpeg Stream

Как определить наличие обложки в аудио файле и вытащить ее из потока с помощью FFmpeg на Node.js. Может пригодиться для загрузки музыки на веб-сайт, создания каталога музыкальных произведений из уже существующих файлов и т.п. Для приготовления понадобится аудио файл в формате mp3, без обложки, плюс пара картинок в формате JPG и PNG.

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

ES6 Iterators

Пара этюдов на тему итераторов, по мотивам The Carpenter Interviews for a Job - эпизода книги JavaScript Allongé, а также поста блога Реджинальда Брэйтуэйта (имя которого я упоминал в предыдущем посте) - Solving a Coding Problem with Iterators and Generators. Первый лишний раз подтверждает принцип KISS (в контексте изложения у меня ассоциируется с библейскими бисером и свиньями), второй... просто моя интерпретация с вариациями на тему.

пятница, 1 января 2016 г.

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

На исходе только что ушедшего года мне удалось прочитать еще пару трудов по JavaScript: JavaScript Allongé и JavaScript Spessore. На мой взгляд очень интересное чтиво: "вектор" обоих мануалов (приятно думать что я его правильно "вкурил") показался мне очень близким, да и манера изложения автора по имени Reginald Braithwaite, мне понятна. По ссылкам можно "читать онлайн" (я так и сделал) или собрать из HTML свои экземпляры в какой-нибудь PDF. Еще один ресурс автора "в мемориз", теперь и я слежу за тобой :). А вот еще несколько ссылок по теме:

вторник, 22 декабря 2015 г.

ES6 Lazy vs Eager

Небольшой этюд на тему работы c объектами, реализующими протоколы iterable и iterator, принятые стандартом ECMAScript 6 (он же 2015). Попробуем реализовать "горячий" и "ленивый" варианты итерируемой коллекции, с итераторами (само собой), генераторами, символами (куда же без них) и прочими свистелками (нововведениями стандарта), а также добавим "немного экстрима" в финале, не пытайтесь повторить это дома :).

четверг, 10 декабря 2015 г.

MongoDB Many to Many

Всех, кто работает с MongoDB, поздравляю с релизом версии 3.2.0! Там столько вкусного, это просто праздник какой-то! Предлагаю провести дегустацию одной из самых вкусных, и наверняка самых ожидаемых, вкусняшек - оператора $lookup. Реализуем варианты запросов к коллекциям, которые находятся в отношениях "один ко многим" (left outer join) и "многие ко многим". По ходу используем еще один свежий оператор - $arrayElemAt, а также новые фичи оператора $unwind.