Появившиеся в JavaScript новые асинхроные конструкции async/await выглядят проще, чем Promise, и, конечно, значительно читабельнее, чем «callback-джунгли». Но одна вещь беспокоила меня — это использование try-catch. Сначала я подумал, что это не проблема, но, к несчастью, мне пришлось работать с цепочкой вызовов API, в которой каждый вызов API имел свое сообщение об ошибке, которое должно было прологировано. Вскоре я понял, что создаю «try/catch-джунгли», которые ничем не лучше «callback-джунглей».
Читать полностью »
Рубрика «nodejs» - 9
JavaScript. Работаем с исключениями и данными в конструкциях async-await без блоков try-catch
2018-05-18 в 16:58, admin, рубрики: async, async/await, await, await/async, javascript, node.js, nodejs, Разработка веб-сайтовЕще один вариант генерации превьюшек для изображений с использованием AWS Lambda & golang + nodejs + nginx
2018-05-06 в 5:30, admin, рубрики: Amazon Web Services, aws lambda, aws s3, Go, nginx, nodejs, redisЗдравствуйте уважаемые пользователи !
Меня зовут Никита, в текущий момент времени я тружусь backend-разработчиком в стартапе мобильного приложения. Наконец у меня появилась действительно нетривиальная и достаточно интересная задача решением которой хочу поделиться с Вами.
О чем собственно пойдет разговор? В разрабатываемом мобильном приложении имеется работа с изображениями. Как можно нетрудно догадаться: где есть картинки, там скорее всего появятся превьюхи. Еще одно условие, практически первая общая задача которая была мне поставлена: сделать чтобы все это работало и масштабировалось в облаке на Амазоне. Если немного лирики: был телефонный разговор со знакомым партнера по бизнесу в режиме громкой связи, где я получил пачку ценных указаний главная мысль которых звучит просто: уходите от серверного мышления. Ну ок, уходим так уходим.
Генерация изображений это достаточно дорогая операция в плане ресурсов. Этот участок бэкэнда предсказуемо плохо показал себя на таком, своего рода «нагрузочном тестировании», которое я проводил на очень дохлой VDS-ке при практически дефолтных настройках LAMP, по крайней мере без дополнительного тюнинга, где все неоптимизированные места вылезут сразу и гарантированно. По этой причине я принял решение данную задачу убрать подальше от пхп-бэкэнда. Пусть он занимается тем что дает более-менее однородную нагрузку, а именно запросы к БД, логика приложения и JSON-ответы и тому подобная малоинтересная API-шная рутина. Те, кто знаком с Амазоном скажут: а в чем проблема? Почему нельзя настроить масштабирование EC2 инстансов в автоматическом режиме и оставить на PHP эту задачу? Отвечаю: «так микросервиснее». А если серьезно — есть масса нюансов в контексте архитектуры бэкэнда, выходящих за пределы данной статьи, по этому оставлю данный вопрос без ответа. Каждый на него ответит сам в контексте своей архитектуры, если он возникнет. Я всего лишь хочу предложить решение и милости прошу под кат.
Bobaos — KNX TP-UART, Raspberry Pi и Unix Domain Socket
2018-04-25 в 0:29, admin, рубрики: baos, DIY, IoT, javascript, knx, node.js, nodejs, Программирование, умный домВ первой статье я рассказал о цели, сделал небольшое описание проекта. В данной публикации я расскажу о текущем положении дел и развитии проекта.
История не повторяется, история улучшается.
Цитата с пачки табака. Далее я показажу, что улучшилось за четыре месяца работы над проектом.
Релиз Node.js 10 и NPM 6
2018-04-24 в 17:53, admin, рубрики: javascript, node.js, nodejs, npm, обновление, релиз
Сегодня состоялся двойной релиз Node.js v10 (LTS) и NPM v6. Данное событие особенно важно, оно знаменует собой новую веху для всей платформы и привносит много значимых изменений и улучшений во всей кодовой базе Node.js. В сфере безопасности появилась поддержка новых форматов шифрования.
Асинхронные циклы и Stream API в Node.js 10
2018-04-19 в 19:27, admin, рубрики: javascript, node.js, nodejs, Stream, streaming api, Программирование
В этом месяце выходит десятая версия Node.js, в которой нас ждет изменение поведения потоков (readable-stream), вызванное появлением асинхронных циклов for-await-of. Давайте разберемся что это такое и к чему нам готовиться.
Разработка AI для пошаговой игры на Node.js (часть 1)
2018-04-04 в 5:58, admin, рубрики: moba, node.js, nodejs, rpg, дерево решений, игровая механика, игростроение, игры, машинное обучение, нейронная сеть, разработка игр, теория игр
Всем привет!
Прошло целых полтора года с момента написания моей первой статьи на Хабре. С тех пор проект FOTM претерпел ряд изменений. В начале пройдёмся вкратце по всем модернизациям, а затем перейдём к детальному разбору основной фичи — AI.Читать полностью »
Онлайн имплементация localStorage
2018-03-16 в 16:26, admin, рубрики: javascript, key-value, localStorage, mongodb, node.js, nodejs, onlineStorage, storage, хранилища данныхХочу поделиться тем, как приватный режим Safari привел к разработке простого ключ-значение хранилища на Node.js с резервным копированием, доступом к данным с определенных доменов и защитой паролем от записи и очистки хранилища.
Все началось с того, что мне дали задачу, реализовать тестовый заказ в веб-приложении, которая встроена через iframe в одном популярном ресурсе.
Задача была решена и работала следующим образом:
- неавторизованный пользователь кликает на магазин (ссылка «_blank»);
- в новом окне отображаются тестовые товары, а в iframe мы перенаправляем пользователя в профиль тестового пользователя и ждем появления данных покупки в localStorage;
- после совершения покупки, данные о ней сохраняем в localStorage (сумма, количество, магазин, время покупки и количество бонусов)
- в iframe при появлении данных тестовой покупки в localStorage, мы отображаем информацию в блоке «история покупок»;
Все работало в большинстве браузеров, и даже в IE11, но только не в Safari, чья политика безопастности (более известный как porno-mode) не разрешала получить доступ к данным localStorage одного и того же домена внутри iframe и снаружи (в новом окне).
Нужно где-то хранить промежуточные данные, привлечь к этой задачи бэкенд разработчиков для создания какого-либо API для хранения данных разрешения не получил, оставалось только найти какое-нибудь онлайн хранилище, с возможностью создание для каждого пользователя своего токена.
Читать полностью »
Модульное тестирование react компонетнов withRouter (jest, enzyme)
2018-03-05 в 13:51, admin, рубрики: airbnb, enzyme, javascript, jest, node.js, nodejs, ReactJS, веб-дизайн, Разработка веб-сайтовПри разработке модульных тестов для react компонента, обернутого в вызов withRouter(Component) столкнулся с сообщением об ошибке, что такой компонент может существовать только в контексте роутера. Решение этой проблемы очень простое и не должно по идее вызывать вопрсов. Хотя почему-то ссылки на документацию https://reacttraining.com/react-router/web/guides/testing Google упорно отказывался выдавать. Меня это совсем не удивляет, т.к. документация написано как чистое SPA-приложение без всякого там SSR и с точки зрения поисковой машины выглядит вот так:
Кому достаточно документации может на этом закончить чтение. А для себя я сделаю несколько заметок под катом.
Читать полностью »
Parcel — пишем плагин
2017-12-22 в 5:34, admin, рубрики: jade, javascript, node.js, nodejs, parcel, plugin, pug, TypeScript, Программирование, Разработка веб-сайтов
В прошлой статье я рассказал про новый бандлер Parcel, который не требует конфигурирования и готов к бою сразу после установки. Но что делать, если вдруг стандартного набора ассетов не хватает? Ответ прост — написать свой плагин.
Домашняя метеостанция на esp8266 + aqara-xiaomi, часть 2
2017-12-19 в 19:22, admin, рубрики: aqara, arduino, DHT22, diy или сделай сам, esp8266, nodejs, Raspberry Pi, xiaomi, Здоровье гика, Интернет вещей, метеостанция, погодная станция, умный домПривет всем.
Прошло уже полтора года с момента, как я опубликовал свою первую статью про мой проект Домашней метеостанции. За это время я получил многочисленные отзывы от читателей насчет функциональности и безопасности системы, а так же исправил порядочное количество багов, которые обнаружились при установке и развертывании системы у других пользователей (спасибо самым активным пользователям — HzXiO, enjoyneering, dimitriy16).
КДПВ.
Но это всё лирика, пора к делу!