Pull to refresh
0
@mkozyrevichread⁠-⁠only

User

Send message

Node.js Streams для чайников или как работать с потоками

Reading time8 min
Views94K
Я думаю многие не раз слышали про Node js Streams, но так ни разу и не использовали, либо использовали, не задумываясь как же они работают, запайпили (pipe) стрим и норм. Давайте же разберемся что такое стримы, запайпить (pipe), чанки (chunk — часть данных) и все такое))


Читать дальше →
Total votes 7: ↑7 and ↓0+7
Comments10

Node.js: использование веб-потоков. Часть 2

Reading time16 min
Views4.3K


Привет, друзья!


Представляю вашему вниманию перевод второй части этой замечательной статьи.


Ссылка на первую часть.


Веб-потоки (web streams) — это стандарт для потоков (streams), который поддерживается всеми основными веб-платформами: веб-браузерами, Node.js и Deno. Потоки — это абстракция для чтения и записи данных последовательно, небольшими частями из любого вида источника — файлов, данных, находящихся на сервере, и т.д.


Например, глобальная функция fetch (которая используется для загрузки онлайн-ресурсов) асинхронно возвращает ответ (Response), содержащий свойство body с веб-потоком.


В данной статье рассматриваются веб-потоки в Node.js, но то, о чем мы будем говорить, применимо к любой поддерживающей их платформе.

Читать дальше →
Total votes 10: ↑10 and ↓0+10
Comments0

Node.js: использование веб-потоков. Часть 1

Reading time19 min
Views12K


Привет, друзья!


Представляю вашему вниманию перевод первой части этой замечательной статьи.


Ссылка на вторую часть.


Веб-потоки (web streams) — это стандарт для потоков (streams), который поддерживается всеми основными веб-платформами: веб-браузерами, Node.js и Deno. Потоки — это абстракция для чтения и записи данных последовательно, небольшими частями из любого вида источника — файлов, данных, находящихся на сервере, и т.д.


Например, глобальная функция fetch (которая используется для загрузки онлайн-ресурсов) асинхронно возвращает ответ (Response), содержащий свойство body с веб-потоком.


В данной статье рассматриваются веб-потоки в Node.js, но то, о чем мы будем говорить, применимо к любой поддерживающей их платформе.

Читать дальше →
Total votes 10: ↑10 and ↓0+10
Comments0

Тестирование Node.js-проектов. Часть 1. Анатомия тестов и типы тестов

Reading time27 min
Views39K
Автор материала, первую часть перевода которого мы сегодня публикуем, говорит, что он, как независимый консультант по Node.js, каждый год анализирует более 10 проектов. Его клиенты, что вполне оправданно, просят его обратить особое внимание на тестирование. Несколько месяцев назад он начал делать заметки, касающиеся ценных приёмов тестирования и встречающихся ему ошибок. В результате получился материал, содержащий три десятка рекомендаций по тестированию.

image

В частности, речь здесь пойдёт о выборе подходящих в конкретной ситуации типов тестов, об их правильном оформлении, об оценке их эффективности, и о том, где именно в CI/CD-цепочках нужно их размещать. Некоторые из приведённых здесь примеров проиллюстрированы с использованием Jest, некоторые — с использованием Mocha. Этот материал, в основном ориентирован не на инструменты, а на методологии тестирования.

Тестирование Node.js-проектов. Часть 2. Оценка эффективности тестов, непрерывная интеграция и анализ качества кода
Читать дальше →
Total votes 25: ↑24 and ↓1+23
Comments0

Знай свой инструмент: Event Loop в libuv

Reading time6 min
Views65K
image
Юдель Пэн. Часовщик. 1924

«Компьютер — это конечный автомат. Потоковое программирование нужно тем, кто не умеет программировать конечные автоматы» 
Алан Кокс, прим. Википедия


“Знай свой инструмент” — твердят все вокруг и все равно доверяют. Доверяют модулю, доверяют фреймворку, доверяют чужому примеру.

Излюбленный вопрос на собеседованиях по Node.js — это устройство Event Loop. И при всем том, очевидном факте, что прикладному разработчику эти знания будут полезны, мало кто пытается самостоятельно погрузиться в устройство событийного цикла. В основном, всех устраивает картинка сверху. Хоть это и похоже на пересказ фильма, который ты не смотрел, а о котором тебе рассказал друг.
Читать дальше →
Total votes 35: ↑35 and ↓0+35
Comments20

Многопоточность в Node.js: модуль worker_threads

Reading time13 min
Views71K
18 января было объявлено о выходе платформы Node.js версии 11.7.0. Среди заметных изменений этой версии можно отметить вывод из разряда экспериментальных модуля worker_threads, который появился в Node.js 10.5.0. Теперь для его использования не нужен флаг --experimental-worker. Этот модуль, с момента появления, оставался достаточно стабильным, поэтому и было принято решение, отражённое в Node.js 11.7.0.

Автор материала, перевод которого мы публикуем, предлагает обсудить возможности модуля worker_threads, в частности, он хочет рассказать о том, зачем нужен этот модуль, и о том, как в JavaScript и в Node.js, по историческим причинам, реализована многопоточность. Здесь же речь пойдёт и о том, какие проблемы сопряжены с написанием многопоточных JS-приложений, о существующих способах их решения, и о будущем параллельной обработки данных с использованием так называемых «потоков воркеров» (worker threads), которые иногда называют «рабочими потоками» или просто «воркерами».
Читать дальше →
Total votes 36: ↑32 and ↓4+28
Comments9

Простейшая нейросеть: еще раз и подробнее

Reading time10 min
Views58K

Машинное обучение это незаменимый инструмент для решения задач, которые легко решаются людьми, но не классическими программами. Ребенок легко поймет, что перед ним буква А, а не Д, однако программы без помощи машинного обучения справляются с этим весьма средне. И едва ли вообще справляются при минимальных помехах. Нейросети же уже сейчас решают многие задачи (включая эту) намного лучше людей. Их способность обучаться на примерах и выдавать верный результат поистине очаровывает, однако за ней лежит простая математика. Рассмотрим это на примере простого перцептрона.
Данная статья представляет собой пересказ-конспект первой части книги Тарика Рашида "Создай свою нейросеть" для тех, кто начал изучать тему, не понял отдельные детали или с трудом охватывает общую картину.

Читать далее
Total votes 84: ↑83 and ↓1+95
Comments27

Как работают нейронные генераторы картинок (в формате ELI5)

Reading time9 min
Views19K

Хочу очень кратко рассказать, на каких принципах построены современные нейронные генераторы картинок, чтобы немножко разбавить флёр волшебства и магии, который окружает публичное обсуждение результатов их работы. Для того, чтобы понимать перспективы собственных профессий в мире, где похожие генераторы производят вообще все виды электронных артефактов (видео, тексты, программы, 3D-модели и так далее), – а этот мир нас, безусловно, ожидает в самом ближайшем будущем – надо понимать, что за генерацией стоит довольно простая математика на основе данных, которые ввели клавиатурой и мышкой и закачали в интернет люди.

(Должен сразу предупредить, что для специалистов текст окажется может оказаться смехотворным. Например, я полностью опускаю детали применения градиентного спуска при обучении, вообще не упоминаю слои в нейронках, уже не говоря о развёртках или там, рекурренции. Также я ловко обхожу вопрос довольно значительного различия между классической многослойной архитектурой и трансформерами. Мне кажется, что это детали реализации, хотя в них, конечно, и вложены мегалитры программистской крови. В общем, если вы работаете в этой области, то вам может быть не очень интересно, зато мне будет интересно прочитать ваши комментарии, чтобы улучшить статью и сделать её ещё более простой и понятной.)

Читать далее
Total votes 24: ↑24 and ↓0+24
Comments1

Все, что вы хотели знать про иерархию инжекторов в Angular

Level of difficultyMedium
Reading time8 min
Views5.2K

Привет. Меня зовут Дмитрий, я фронтенд-разработчик в компании «Цифровая индустриальная платформа». В своей работе мне часто приходится использовать Dependency Injection (DI) в Angular. Это мощный и популярный инструмент, который упрощает работу с зависимостями в наших приложениях. Он позволяет легко интегрировать необходимые сущности в компоненты, упрощает процесс тестирования и поддерживает принцип инверсии зависимостей. Однако часто мы не используем все возможности DI, потому что не знаем, как он работает под капотом. Давайте разберемся, как функционирует DI, что такое иерархия инжекторов и какие изменения принесла версия Angular 14.

Читать далее
Total votes 12: ↑12 and ↓0+15
Comments4

Задача коммивояжёра в общем виде. Наибыстрейшее точное решение

Level of difficultyEasy
Reading time6 min
Views16K

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

Тут я хочу подытожить все опробованные подходы и выбрать лучший по моему мнению.

Читать далее
Total votes 36: ↑35 and ↓1+42
Comments29

Создание процессора с нуля для чайников

Reading time18 min
Views40K

В жизни многих программистов наступает момент, когда хочется понять как же работает процессор на самом деле, а не в абстрактных схемах высокоуровневых компонентов. У меня возник такой вопрос некоторое время назад, но все материалы которые я находил по этой теме либо были очень специализированными, требующими хорошего понимания электротехники и опыта работы со схемами дискретной логики, либо общие описания, пропускающие многие этапы, и оставляющие лишь смутное представление о том как же всё-таки тысячи транзисторов должны превратиться в работающий процессор.

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

В данной статьей мы пройдем путь создания процессора от единичного транзистора до работающего 8-битного процессора, и напишем свой ассемблер для него.

Читать далее
Total votes 112: ↑112 and ↓0+138
Comments71

Алгоритмы балансировки нагрузок

Level of difficultyMedium
Reading time8 min
Views39K

Рано или поздно веб-приложения перерастают среду одного сервера. Компаниям требуется увеличить или их доступность, или масштабируемость, или и то, и другое. Чтобы сделать это, они развёртывают своё приложение на нескольких серверах и ставят перед ним балансировщик нагрузок для распределения входящих запросов. Чтобы справляться с нагрузками, большим компаниям могут потребоваться тысячи серверов, на которых запущено веб-приложение.

В этом посте мы рассмотрим способы, которыми один балансировщик нагрузок может распределять HTTP-запросы на множество серверов. Мы начнём снизу и проделаем весь путь вверх до современных алгоритмов балансировки нагрузок.
Читать дальше →
Total votes 88: ↑87 and ↓1+105
Comments16

CSS-классы вредны

Level of difficultyMedium
Reading time13 min
Views22K

Если вы когда-нибудь заглядывали за кулисы пользовательских веб-интерфейсов, то знаете для чего нужно свойство class. Оно ведь нужно для связи HTML с CSS, правда? Сейчас я расскажу о том, почему настало время отказаться от него. Имена классов — это архаичная система, используемая как неудачный посредник для примитивов UI; ещё хуже то, что они создают ужасные сочетания, приводящие к комбинаторному взрыву странных пограничных случаев. Давайте изучим этот вопрос, начав со скучного урока истории, который вы уже слышали миллион раз.
Читать дальше →
Total votes 75: ↑66 and ↓9+79
Comments113

Винтажные портативные игровые консоли, о которых вы могли не знать: 6 моделей конца XX века

Reading time4 min
Views9.6K

Привет, Хабр! Сегодня немного поностальгируем! Многие из нас проводили недели дни с Sega, PS 1 или Dendy. Кто-то отлично знаком с GameBoy разных поколений от Nintendo, не говоря уже о более современных игровых портативных консолях. Но есть девайсы, которые могли пройти мимо вашего внимания — возможно, о некоторых из них вы даже не слышали. О них и рассказываем в сегодняшней подборке.

Читать далее
Total votes 18: ↑17 and ↓1+25
Comments6

JavaScript: структуры данных и алгоритмы. Часть 1

Level of difficultyMedium
Reading time33 min
Views16K


Привет, друзья!


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



Сегодня мы будем говорить о самых простых и популярных структурах данных: односвязном и двусвязном списках, стеке и очереди.


Код, представленный в этой и других статьях серии, можно найти в этом репозитории.


Интересно? Тогда прошу под кат.

Читать дальше →
Total votes 20: ↑18 and ↓2+19
Comments1

Полное визуальное руководство/шпаргалка по CSS Grid

Reading time7 min
Views370K

Сегодня мы с вами рассмотрим свойства CSS Grid (далее также — Грид), позволяющие создавать адаптивные или отзывчивые макеты веб-страниц. Я постараюсь кратко, но полно объяснить, как работает каждое свойство.


Что такое CSS Grid?



Грид — это макет для сайта (его схема, проект).


Грид-модель позволяет размещать контент сайта (располагать его определенным образом, позиционировать). Она позволяет создавать структуры, необходимые для обеспечения отзывчивости сайтов на различных устройствах. Это означает, что сайт будет одинаково хорошо смотреться на компьютере, телефоне и планшете.


Вот простой пример макета сайта, созданного с помощью Грида.

Читать дальше →
Total votes 34: ↑33 and ↓1+39
Comments4

Гайд по деплою web-приложений для новичков. Часть 1. Shared-хостинг

Level of difficultyEasy
Reading time15 min
Views17K

В web-разработке процесс деплоя играет важную роль. Это ответственный момент (даже торжественный), когда все усилия, потраченные на написание и тестирование кода, воплощаются в "живое" приложение, доступное пользователям. Ведь для этого приложение и делается, чтобы им кто-то пользовался. Каждый разработчик, независимо от уровня и специализации, регулярно сталкивается с задачей деплоя. Это статья рассчитана на новичков, которые учатся разворачивать приложения на сервере и хотят узнать различные варианты, сравнить их и выбрать подходящий.

В этой статье пошагово разберем самый простой вариант - деплой приложения на хостинг.

Читать далее
Total votes 26: ↑21 and ↓5+22
Comments31

Неожиданная полнота по Тьюрингу повсюду

Reading time13 min
Views64K
Каталог программных конструкций, языков и API, которые неожиданно являются полными по Тьюрингу; последствия этого для безопасности и надёжности. Приложение: сколько компьютеров в вашем компьютере?

Любая достаточно сложная программа на Си или Фортране содержит заново написанную, неспецифицированную, глючную и медленную реализацию половины языка Common Lisp. — Десятое правило Гринспена

Полнота по Тьюрингу (Turing-completeness, TC) — это свойство системы при некотором простом представлении ввода и вывода реализовать любую вычислимую функцию.

Тьюринг-полнота — фундаментальное понятие в информатике. Она помогает ответить на многие ключевые вопросы, например, почему невозможно создание идеальной антивирусной программы. Но в то же время она является поразительно распространённым явлением. Казалось бы, компьютерной системе трудно достичь такой универсальности, чтобы выполнять любую программу, но получается наоборот: трудно написать полезную систему, которая немедленно не обратится в полную по Тьюрингу. Оказывается, что даже небольшой контроль над входными данными и преобразованием их в результат, как правило, позволяет создать тьюринг-полную систему. Это может быть забавным, полезным (хотя обычно нет), вредным или чрезвычайно небезопасным и настоящим подарком для хакера (см. о «теоретико-языковой безопасности», которая изучает методы взлома «странных машин»1). Удивительные примеры такого поведения напоминают нам о том, что полнота по Тьюрингу таится повсюду, а защитить систему чрезвычайно сложно.
Читать дальше →
Total votes 54: ↑53 and ↓1+52
Comments15

Микрофронтенды — универсальное решение всех проблем или просто удобный подход?

Level of difficultyEasy
Reading time8 min
Views33K

Сейчас понятие «микрофронтенды» встречается довольно часто, но что это такое и какие задачи они решают? Зачем нам микрофронтенды, если есть микросервисы или монолит? И стоит ли тащить микрофронтенды в свой проект только потому, что это модно? Расскажу об этом, а также о трёх способах организации микрофронтендов: Podium, Single-SPA и Module Federation. Какой среди них лучший и нашли ли разработчики в нём панацею? Об этом читайте под катом.

Читать далее
Total votes 22: ↑21 and ↓1+29
Comments25

Объяснение микрофронтендов

Reading time4 min
Views31K

Я написал данный пост, так как чувствую, что Микрофронтенды это стало не просто модное слово, они уже начали распространятся на большие проекты.

Микрофронтенды могут быть следующей важной вехой в фронтенд разработке.

Давайте я вам расскажу почему!

Читать далее
Total votes 4: ↑2 and ↓20
Comments7
1
23 ...

Information

Rating
Does not participate
Registered
Activity