В своем проекте, мне понадобился функционал, который позволил бы не терять внесенные данные, в случае разрыва интернет соединения и я придумал очень простой «Брокер», который позволял не терять данные при потере соединения, а отправлять их когда соединение будет снова восстановлено. Возможно «Брокер» для него не очень хорошее название, но не судите строго. Хочется поделиться, может кому-то станет полезным.
Читать полностью »
Рубрика «nodejs» - 7
Оффлайн брокер на JavaScript
2018-11-06 в 19:57, admin, рубрики: javascript, node.js, nodejs, offline broker, queueКротовые норы в JavaScript
2018-10-30 в 7:34, admin, рубрики: javascript, nodejs, performance optimization, переводы, чёрные дырыПривет! Представляю вашему вниманию перевод статьи "Wormholes in JavaScript" автора Mathius Buus.
Компьютеры — интересные машины. В теории они представляются нам идеальными механическими математиками работающими с цифрами и хорошо выполняющими операции сложения, умножения и вычитания.
Однако, такая абстракция довольно обманчива. Она уводит нас от понимания того, что компьютер обрабатывает разные математические операции с разной скоростью. Если вы пишите на JavaScript (или на любом другом языке) и заботитесь о производительности написанных вами алгоритмов, очень важно понимать как работают компьютеры под капотом.
Если мы знаем на что способен компьютер, мы можем использовать кратчайшие пути или кротовые норы, чтобы сделать наши программы намного быстрее, чем мы ожидали.
Как не нужно использовать Node.js Stream API
2018-10-26 в 17:46, admin, рубрики: javascript, node.js, nodejs, stream apiВ интернете опять кто-то не прав – во вчерашнем Node Weekly была ссылка на пост в котором автор пытается измерить и сравнить с "аналогами" производительность Stream API в Node.js. Грусть вызывает, то как автор работает со стримами и какие он выводы он пытается на основе этого сделать:
...this worked pretty well on smaller files, but once I got to the biggest file, the same error happened. Although Node.js was streaming the inputs and outputs, it still attempted to hold the whole file in memory while performing the operations
Давайте попробуем разобраться, что не так с выводами и кодом автора.
100 видео-лекций по программированию
2018-10-26 в 1:01, admin, рубрики: javascript, JS, node.js, nodejs, обучение программированию, Программирование, Разработка веб-сайтов
Товарищи инженеры, уже четвертый год пошел, как я взялся преподавать в Киевском политехническом институте. За это время у меня накопилось огромное количество примеров кода и материалов, примерно на 90 лекций. Должен сказать, что за весь период своей профессиональной деятельности (а это 24 года почти ежедневного написания кода), я никогда не подымал свой уровень программирования, как за последние годы, работая со студентами. Если раньше мне казалось, что написать кратко, сложно и внушительно — это верх мастерства, то теперь я осознал, что мой код должны понимать студенты после минимальных объяснений, иначе он никуда не годится. Я пришел к выводу, что способность эту можно и нужно распространить не только на обучающий код, но и на весь рабочий код. Более того, обучающий код не должен существенно отличаться от рабочего кода, потому, что мы учим будущих инженеров делать настоящие системы, а не учебные. А после многочисленных просьб, я решил записывать все лекции в виде скринкастов, которые сразу после завершения лекции отправляются на ютюб. За этот учебный год я планирую записать 100 лекций, из которых уже опубликованы 23, готовы материалы еще для 67 лекций и новых 10 лекций еще в процессе подготовки.
Самое краткое введение в Reactive Programming
2018-10-24 в 10:59, admin, рубрики: functional programming, javascript, node.js, nodejs, reactive programming, функциональное программированиеЦель данной статьи – показать на примере зачем нужно reactive programming, как оно связано с функциональным программированием, и как с его помощью можно писать декларативный код, который легко адаптировать к новым требованиям. Кроме того, хочется сделать это максимально кратко и просто на примере приближенном к реальному.
Возьмем такую задачу:
Есть некий сервис c REST API и endpointом /people
. При POST-запросе на этот endpoint'a создается новая сущность. Написать функцию которая принимает массив объектов вида { name: 'Max' }
и создают набор сущностей посредством API(по-английски, это называется batch-операция).
Давайте решим эту задачу в императивном стиле:
const request = require('superagent')
function batchCreate(bodies) {
const calls = []
for (let body of bodies) {
calls.push(
request
.post('/people')
.send(body)
.then(r => r.status)
)
}
return Promise.all(calls)
}
Давайте, для сравнения, перепишем этот кусочек кода в функциональном стиле. Для простоты, под функциональным стилем мы будем понимать:
- Применение функциональных примитивов(.map, .filter, .reduce) вместо императивных циклов(for, while)
- Код организован в "чистые" функции – они зависят только от своих аргументов и не зависят от состояния системы
PeerTube 1.0: видеохостинг без дата-центра и капитальных затрат
2018-10-12 в 19:55, admin, рубрики: angular, Framasoft, nodejs, open source, PeerTube, YouTube, высокая производительность, гипертекстовый Фидонет, контент-маркетинг, Работа с видео, Управление медиа
Состоялся первый продакшн-релиз децентрализованной платформы PeerTube для организации видеохостинга и видеовещания. PeerTube представляет собой независимую легковесную масштабируемую альтернативу для YouTube, Dailymotion и Vimeo и использует браузеры посетителей в реальном времени для создания сети распространения контента. Наработки проекта распространяются на GitHub под свободной лицензией AGPLv3.
Идея PeerTube состоит в том, чтобы создать технологию, способную объединить разрозненные серверы с видео в общую федеративную сеть с взаимным обменом информацией, в которой посетители участвуют в доставке контента и имеют возможность подписки на каналы и получения уведомлений о новых видео.Читать полностью »
Пятница программиста, или как я писал библиотеку для лексического и синтаксического анализа кода
2018-10-12 в 8:47, admin, рубрики: javascript, lexer, node.js, nodejs, syntaxВсем привет! Я, как программист, всегда ищу пути для улучшения своих навыков. В один пятничный вечер, в мою голову пришла мысль — «А не написать ли мне компилятор?»
Кому интересно узнать, что из этого получилось, добро пожаловать под кат.
Читать полностью »
Elm. Удобный и неловкий. Http, Task
2018-10-01 в 9:49, admin, рубрики: elm, javascript, nodejs, функциональное программированиеПродолжим говорить о Elm 0.18.
Elm. Удобный и неловкий
Elm. Удобный и неловкий. Композиция
Elm. Удобный и неловкий. Json.Encoder и Json.Decoder
В этой статье рассмотрим вопросы взаимодействия с серверной частью.
Elm. Удобный и неловкий. Json.Encoder и Json.Decoder
2018-09-26 в 8:51, admin, рубрики: elm, javascript, nodejs, функциональное программированиеПродолжим говорить о Elm 0.18.
Elm. Удобный и неловкий
Elm. Удобный и неловкий. Композиция
В этой статье рассмотрим вопросы энкодеров/декодеров.
Декодеры/энкодеры используются для:
- преобразование ответов от сторонних ресурсов (Http, WebSocket и прочее);
- взаимодействия через порты. Подробнее про порты и нативный код расскажу в следующих статьях.
Строим простой GraphQL API сервер на express и nodeJS
2018-09-24 в 7:28, admin, рубрики: express, graphql, javascript, node.js, nodejsПредлагаю к прочтению свободный перевод небольшой статьи по практическому применению GraphQL. Оригинал доступен по ссылке (En).
Пару слов о GraphQL
GraphQL это язык запросов для API, который предлагает декларативный подход к получению данных. Он позволяет клиентам запрашивать только нужные данные с веб-сервера и ничего лишнего. Разработанный еще в 2012 году Facebook’ом, которым по-прежнему и поддерживается, GraphQL стал использоваться многими другими крупными и не очень компаниями. Среди прочих Yelp, Shopify и Github.
При использовании REST APIs обычно запросы отправляются по нескольким адресам, для получения всех необходимых данных в приложении. GraphQL API же позволяет тебе отправлять все запрос по адресу с указанием, какие именно данные ты бы хотел получить этим запросом. Поэтому, к слову, GraphQL отлично подходит при использовании в условиях медленного мобильного соединения.
Версии API могут быть головной болью для команд разработчиков. С GraphQL вы можете с этим не беспокоиться. GraphQL позволяет тебе добавить новые поля и типы (это будет обсуждаться позже) в твой GraphQL API, не затрагивая существующие запросы, старые и неиспользуемые же поля могут быть скрытыми от клиентов API. Используя единую эволюционирующую версию, GraphQL API предоставляет вашему приложению постоянный доступ к новым реализациям API и обеспечивают чистую и легко поддерживаемую базу кода.
Читать полностью »