Pull to refresh
4.7
Karma
0
Rating
Денис Жирков @dolphin4ik

User

  • Followers
  • Following 4
  • Posts
  • Comments

Потоки (Stream) в NodeJS — реки, в которые войдешь дважды

ZeroTech corporate blog JavaScript *Node.JS *
Tutorial
image

Поток — это концепция, которая была сначала реализована в UNIX системах для передачи данных из одной программы в другую в операциях ввода/вывода. Это позволяет каждой программе быть очень специализированной в том, что она делает — быть независимым модулем. Сочетание таких простых программ помогает в создании более сложных систем путем «объединения» их в цепочку вызовов.

Потоки позволяют обмениваться данными небольшими частями, что в свою очередь дает возможность в своей работе не расходовать много памяти. Конечно, это зависит от того, как вы реализуется внутренний функционал потока.

Распространенная задача — парсинг файла большого объема. Например, в текстовом файле с данными логов нужно найти строку, содержащую определенный текст. Вместо того, чтобы файл полностью загрузить в память, и потом начать разбирать в нем строки в поисках нужной, мы можем его считывать небольшими порциями. Тем самым не занимаем память сверх необходимого, а лишь столько памяти, сколько нужно для буферизации считанных данных. Как только найдем требуемую запись, сразу прекратим дальнейшую работу. Или можем передать найденную запись в другой поток по цепочке, например, для преобразование в другой формат, или сохранения в другой файл.

Модуль stream предоставляет базовый API по работе с потоками в Node.JS. Документации Node.JS вполне достаточно, чтобы разобраться в данном вопросе, но мы попытаемся составить что-то вроде шпаргалки с пояснениями некоторых моментов.
Читать дальше →
Total votes 13: ↑11 and ↓2 +9
Views 47K
Comments 2

Работа с cron под Android и добавление shell-скрипта в автозапуск при загрузке устройства

Development for Android *Mobile applications testing *Development for Linux *
Tutorial


В связи с тем, что мобильные устройства уже давно имеют обширный функционал, то задачи автоматизации можно смело переносить и на них. И, как нельзя лучше, здесь так же хорошо подходит cron для их выполнения. Но если в «обычных» Linux системах настройка cron занимает мало времени, то Android устройство требует более сложной работы по его настройке.

Если тебе интересна тема автоматизации и ты хочешь, чтобы твои shell-скрипты запускались сразу же после загрузки устройства, да еще и могли бы запускаться по таймеру — добро пожаловать под кат!
Читать дальше →
Total votes 11: ↑10 and ↓1 +9
Views 11K
Comments 9

6 небольших советов, чтобы подготовить NodeJS к высоким нагрузкам

High performance *JavaScript *Server optimization *Node.JS *DevOps *
Translation

Сервис с распознаванием лиц «Look-A-Like» обслуживал тысячи пользователей одновременно

Разработка на NodeJS в качестве хобби — сплошное удовольствие, но когда речь о продакшене для множества пользователей, есть пара вещей, которые стоит знать, чтобы избежать долгого отклика и сбоев.


В рамках работы в MyHeritage мы разработали сервис doppelgänger для Евровидения 2019 года, с помощью которого, загрузив селфи, можно узнать на кого из участников конкурса вы похожи больше всего.


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

Читать дальше →
Total votes 34: ↑27 and ↓7 +20
Views 8.5K
Comments 7

Что записано в this? Закулисье JavaScript-объектов

RUVDS.com corporate blog Website development *JavaScript *
Translation
JavaScript — это мультипарадигменный язык, поддерживающий объектно-ориентированное программирование и динамическую привязку методов — мощную концепцию, которая позволяет структуре JavaScript-кода меняться во время выполнения программы. Это даёт разработчикам серьёзные возможности, это делает язык гибким, но за всё надо платить. В данном случае платить приходится понятностью кода. Серьёзный вклад в эту цену вносит ключевое слово this, вокруг особенностей поведения которого собрано много такого, что способно запутать программиста.


Читать дальше →
Total votes 38: ↑32 and ↓6 +26
Views 17K
Comments 8

Как реализовать деплой с GitHub на продакшн сервер, использовав Webhook

Skillbox corporate blog Programming *Git *GitHub
Translation


У меня давно вошло в привычку создавать репозитории на GitHub. Это куда эффективнее, чем держать все на Google Drive или, того хуже, на жестком диске. Но здесь сразу появляется вопрос: как выполнить деплой на рабочий сервер?

Большинство поисковых запросов выводили меня на Jenkins и другие средства непрерывного развертывания. Но мне хотелось найти иное решение. Так я вышел на бесплатный сервис Webhook.
Читать дальше →
Total votes 26: ↑19 and ↓7 +12
Views 19K
Comments 2

Figma — как единая точка правды в дизайне

Design
Sandbox

Как мы построили все процессы разработки и внедрения дизайна вокруг одного инструмента.


Привет! Я — Ваня Соловьёв, дизайн-директор в DocDoc (входит в группу Сбербанк). Сегодня рубрика Тим-тим, в которой я расскажу, как мы уживаемся с другими командами.


В 2017 году наши интерфейсы создавались в Sketch, прототипы собирались в Marvel, а в разработку передавались через Zeplin. Всё было стандартно для того времени, пока не появилась Figma.


Эта статья не про сравнение инструментов, таких статей уже написано в избытке. Она про то, как в нашей компании Figma помогла:


  • дизайну стать публичным, а не привилегией одного дизайнера;
  • организовать весь процесс работы над дизайном без лишней документации;
  • избавиться от ненужных инструментов и ресурсов на их поддержку.

Для дизайнера


Дизайнер больше не хранит макеты локально, в виде файлов. Не обменивается скриншотами интерфейсов с менеджером и не пересылает нужные макеты другим дизайнерам. У макета есть ссылка и она доступна всем участникам процесса.


Создал макет → собрал интерактивный прототип → передал в разработку — и всё это по одной ссылке.
Читать дальше →
Total votes 31: ↑27 and ↓4 +23
Views 9.5K
Comments 12

Процедура нотаризации Electron приложения для macOS 10.14.5

JavaScript *Development for MacOS *
Sandbox

С выходом macOS 10.14.5, Apple добавила обязательную процедуру нотаризации (Notarization process) приложений перед их распространением. Что это и какие сложности возникли с этим обновлением при разработке на Electron.js я и хотел бы рассказать.


Читать дальше →
Total votes 19: ↑18 and ↓1 +17
Views 9.5K
Comments 33

Разрабатываем игру на Svelte 3

Website development *JavaScript *Game development *SvelteJS *
Tutorial

Чуть больше месяца назад вышел релиз Svelte 3. Хороший момент для знакомства, — подумал я и пробежался по отличному туториалу, который еще и переведен на русский.


Для закрепления пройденного я сделал небольшой проект и делюсь результатами с вами. Это не one-more-todo-list, а игра, в которой нужно отстреливаться от черных квадратов.


image

Читать дальше →
Total votes 27: ↑26 and ↓1 +25
Views 11K
Comments 32

graphql — подводные камни

JavaScript *Node.JS *
Наверное, не существует идеальных технологий. Не является исключением и graphql. Если у Вас еще не было опыта работы с этой технологией, то нужно хорошо представлять, какие проблемы могут у Вас возникнуть и заблаговременно к ним подготовиться.
Читать дальше →
Total votes 10: ↑6 and ↓4 +2
Views 7.1K
Comments 33

Как сделать из сайта приложение и выложить его в Google Play за несколько часов. Часть 1/2: Progressive Web App

VK corporate blog Website development *Development of mobile applications *Development for Android *
Tutorial


Наверное, все близкие к веб-разработке люди уже наслышаны о Progressive Web App. Ещё бы! Эта технология практически уравняла веб и мобильную разработку с точки зрения распространения продуктов и вовлечённости пользователей.

Да, современный фронтенд, написанный, например, на React, работает как приложение. Но вот только скачивается это приложение в браузер и запускается из него. В этом и заключается огромный гандикап, который всегда имела мобильная разработка. Давайте подумаем, чем с точки зрения обычного пользователя, «приложение» отличается от «сайта». Сразу в голову приходит, что приложение в телефоне, а сайт на компьютере. Но ведь есть мобильный браузер, так что сайт и в телефоне тоже. Тогда остаётся 3 существенных отличия:
Читать дальше →
Total votes 52: ↑52 and ↓0 +52
Views 70K
Comments 31

Руководство по Docker Compose для начинающих

RUVDS.com corporate blog Website development *Virtualization *
Translation
Tutorial
Автор статьи, перевод которой мы сегодня публикуем, говорит, что она предназначена для тех разработчиков, которые хотят изучить Docker Compose и идут к тому, чтобы создать своё первое клиент-серверное приложение с использованием Docker. Предполагается, что читатель этого материала знаком с основами Docker. Если это не так — можете взглянуть на эту серию материалов, на эту публикацию, где основы Docker рассмотрены вместе с основами Kubernetes, и на эту статью для начинающих.

image
Читать дальше →
Total votes 40: ↑37 and ↓3 +34
Views 288K
Comments 11

Учимся общаться между микросервисами на Node.js через RabbitMQ

Website development *JavaScript *Programming *Node.JS *Microservices *
Tutorial

Это продолжение статьи «Пишем первый микросервис на Node.js с общением через RabbitMQ», которая была неплохо принята пользователями хабра.


В этой статье я расскажу о том, как нужно правильно общаться между микросервисами, чтобы микросервисы оставались изолированными.

Читать дальше →
Total votes 23: ↑18 and ↓5 +13
Views 21K
Comments 3

Подробности о GraphQL: что, как и почему

RUVDS.com corporate blog Website development *
Translation
Tutorial
GraphQL сейчас, без преувеличения, это — последний писк IT-моды. И если вы пока не знаете о том, что это за технология, о том, как ей пользоваться, и о том, почему она может вам пригодиться, значит статья, перевод которой мы сегодня публикуем, написана специально для вас. Здесь мы разберём основы GraphQL на примере реализации схемы данных для API компании, которая занимается попкорном. В частности, поговорим о типах данных, запросах и мутациях.


Читать дальше →
Total votes 27: ↑23 and ↓4 +19
Views 43K
Comments 23

Editor.js прекрасный редактор сохраняющий исходный код в JSON формате

Open source *JavaScript *API *Content-marketing
CodeX крутые ребята, которые базируются в Университете ИТМО. На базе этого университета студенты и выпускники создают интересные и полезные проекты: Hawk.so, Capella, AR-tester и другие.

Один проект очень помог нашему бизнесу. Редактор Editor.js сохраняющий исходный код в JSON.


Читать дальше →
Total votes 24: ↑22 and ↓2 +20
Views 19K
Comments 29

Пентест приложений с GraphQL

Digital Security corporate blog Information Security *


В последнее время GraphQL набирает всё большую популярность, а вместе с ней растёт и интерес со стороны специалистов информационной безопасности. Технологию используют такие компании, как: Facebook, Twitter, PayPal, Github и другие, а это значит, что пора разобраться, как тестировать такое API. В этой статье мы расскажем о принципах этого языка запросов и направлениях тестирования на проникновение приложений с GraphQL.
Читать дальше →
Total votes 28: ↑27 and ↓1 +26
Views 13K
Comments 11

Строим простой GraphQL API сервер на express и nodeJS

JavaScript *Node.JS *
Sandbox
Предлагаю к прочтению свободный перевод небольшой статьи по практическому применению 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 и обеспечивают чистую и легко поддерживаемую базу кода.
Читать дальше →
Total votes 15: ↑13 and ↓2 +11
Views 25K
Comments 4

Самое простое объяснение принципа работы современных алгоритмов симметричного шифрования

Information Security *Website development *Cryptography *Programming *Algorithms *
Translation

(Нашёл в твиттере тред с очень крутым объяснением работы симметричных шифров. Его написал Colm MacCárthaigh один из основных контрибьюторов Apache. Я спросил разрешение Колма на перевод, он любезно согласился).


Я объясню вам доступным языком, что происходит при шифровании данных. Надеюсь, что без мистики и сложных штук, которые были придуманы криптографами.


Итак, симметричное шифрование — это именно то, что мы используем в большинстве случаев, когда хотим зашифровать кучу данных. Ваш браузер отправляет и получает данные, используя симметричное шифрование. Если вы шифруете файлы или диск, в этом случае тоже работает симметричное шифрование. iMessage, Signal, WhatsApp — все они используют симметричное шифрование для безопасности вашей переписки.


Если вы думаете, что при шифровании данные перемешиваются так, что их никто не может прочитать без ключа, так оно и происходит на самом деле.


Вот простой пример. Допустим, у меня есть строка "Ovaltine" и я хочу её зашифровать. Я мог бы воспользоваться rot13 — очень простым олдскульным шифром Цезаря, который делает хоровод из букв, где a и z держатся за ручки, и заменяет каждую букву другой буквой алфавита, которая находится от заменяемой буквы на расстоянии 13 символов. Таким образом "O" превращается в "B", а "v" становится "i", в итоге "Ovaltine" превращается в "Binygvar". Конечно, это не очень безопасно. Это наивный пример, который очень легко взломать, так как атакующий может выяснить, какая буква встречается чаще всего (обычно в оригинальном тексте это "e") и найти оставшиеся буквы подобным образом.

Читать дальше →
Total votes 31: ↑26 and ↓5 +21
Views 30K
Comments 25

WebRTC – еще проще (EasyRTC)

Google Chrome
Sandbox
Я пока не сумел побороть сигнальный сервер при написании многопользовательского чата, поэтому стал искать уже готовые фреймворки. Самым легким из всех мне показался EasyRTC.
Читать дальше →
Total votes 18: ↑16 and ↓2 +14
Views 16K
Comments 3

bitКонтейнер (для еды) — самодельная Яндекс.Станция

DIY
Sandbox
Вчера в чате на работе предложили скидки на Яндекс станцию. Посмотрел обычную цену — 9900.

В общем, она мне не нужна.

image

А так как без дела лежала плата Orange PI PC, купленная за 700 рублей на Алиэкспресс, решил собрать свою Станцию, а точнее «bitКонтейнер для еды».
Total votes 30: ↑18 and ↓12 +6
Views 26K
Comments 17

[в закладки] Инструменты JS-разработчика, на которые стоит обратить внимание

RUVDS.com corporate blog Website development *JavaScript *Node.JS *Web services testing *
Translation
Программист Трэвис Фишер, перевод статьи которого мы публикуем сегодня, решил рассказать о самых полезных, с его точки зрения, модулях и вспомогательных инструментах для JS-разработки. Полезными он считает технологии, которыми пользуется постоянно и в ценности которых убедился на собственном опыте. В частности, речь пойдёт о библиотеках и утилитах, предназначенных для серверной и клиентской разработки на JavaScript. Трэвис говорит, что не стремился к тому, чтобы включить в свой материал нечто узкоспециализированное, или сделать что-то вроде очередного awesome-списка, которые сами по себе весьма полезны, но обычно оказываются несколько перегруженными. Здесь речь пойдёт лишь о том, самом лучшем, что он с полной уверенностью может порекомендовать другим.

image
Читать дальше →
Total votes 32: ↑28 and ↓4 +24
Views 21K
Comments 12

Information

Rating
Does not participate
Location
Санкт-Петербург и область, Россия
Date of birth
Registered
Activity