Category : javascript

javascript
Современный Angular: Заменяем жизненные циклы на сигналы

Если вы пишете на Angular, то наверняка часто используете хуки жизненного цикла вроде ngOnChanges, ngOnInit и ngOnDestroy. С появлением сигналов и концепции Zoneless (когда Zone.js уже не обязателен) у нас появились более элегантные и читаемые альтернативы.Давайте разберем, как современный подход позволяет упростить код и избавиться от "шумных" методов жизненного цикла.1. Вместо ngOnChanges — computed()Было: классический подход с ngOnChanges @Component({...}) export class PricingCompon…

  • пятница, 29 мая 2026 г. в 00:00:11
javascript
Структурированное логирование и трейсинг в Node.js: @cleverbrush/log и @cleverbrush/otel

Статья о том, как получить наблюдаемость (observability) в приложении с минимальным кодом, а бонусом получить структурированные логи с типизированными шаблонами, автоматическую корреляцию со спанами OpenTelemetry, всё это с помощью набора библиотек, которые я называю CleverBrush Framework.Все примеры ниже взяты из xpenser — open-source приложения для учёта личных доходов и расходов. С одной стороны, это демонстратор возможностей Cleverbrush Framework, который я сделал для проверки на практике …

  • пятница, 29 мая 2026 г. в 00:00:09
javascript
JavaScript. Работа с большими файлами в браузере. Часть 2/2: Создание 5Gb файлов в браузере

Часть 1/2: Чтение файлов | Часть 2/2: Создание файловОнлайн доска DGRM.net кеширует файлы в постоянном кеше. Постоянный кеш не удаляется при закрытии вкладки. Рассказываю как создавать и хранить большие файлы в браузере.Рис. 1. Расход памяти при полной загрузке файла в памятьКеш файлов на origin private file system (OPFS)Постоянный кеш файлов можно сделать с помощью cache API, indexedDB или OPFS. OPFS считается самым быстрым. OPFS это виртуальная файловая система. Можно делать файлы и папки. Др…

  • пятница, 29 мая 2026 г. в 00:00:07
javascript
Архитектура безопасности во frontend-приложениях: Server Actions и защита данных в эпоху Next.js

Новая парадигма требует новых подходовМир frontend-разработки за последние несколько лет изменился коренным образом. Если еще пять лет назад стандартом де-факто были одностраничные приложения (SPA), где вся логика выполнялась в браузере, а сервер был просто REST API, то сегодня мы наблюдаем массовый переход к гибридным архитектурам. Next.js с его Server Components и Server Actions стал не просто популярным фреймворком, а промышленным стандартом для enterprise-приложений.Этот переход принес с со…

  • четверг, 28 мая 2026 г. в 00:00:05
javascript
Как вредоносный код переписал мой Git-коммит и заразил десятки проектов и несколько рабочих машин

Эта история началась с обычного git push.Я работал над проектом, не буду называть его, потому что статья не про конкретную компанию или проект и не про поиск виноватых. Она про то, как вредоносное ПО может попасть в привычный рабочий процесс разработчика, замаскироваться под нормальные Git-изменения и постепенно заражать другие проекты и машины.Я хочу рассказать это на реальном примере, потому что такие истории обычно кажутся чем-то далеким: «ну это где-то в крупных компаниях», «ну это у тех, к…

  • четверг, 28 мая 2026 г. в 00:00:04
javascript
Веб-терминал для COM-порта без установки: подключается за 2 секунды

Web TerminalПолностью браузерный терминал для работы с последовательными портами (COM-портами). Не требует установки, работает прямо в Chrome или Edge. Весь код одним файлом. Не требует компиляции и сборки, легко править обычным блокнотом — открыл и работаешь. Работает на JavaScript и Web Serial API.Быстро подключается к портуНе нужно узнавать номер COM-порта в диспетчере устройств и вводить его вручную. Просто нажмите «Подключить» — браузер сам покажет список всех доступных последовательных по…

  • среда, 27 мая 2026 г. в 00:00:20
javascript
@tanstack/vue-table: почему я почти отказался от этого…

Привет. Недавно пришлось повозиться с @tanstack/vue-table. Задача была стандартная: нужна таблица с сортировкой, фильтрами и редактированием ячеек. Казалось бы - идеальное время подключить готовое решение. Но не всё так гладко. Делюсь мыслями, граблями и тем, как я в итоге выкрутился. Что это вообще такоеЕсли коротко: это headless-библиотека. То есть она даёт логику, а как это будет выглядеть - решаешь ты сам. Никаких готовых тем, никаких дефолтных стилей. Полный контроль, но и вся ответственн…

  • среда, 27 мая 2026 г. в 00:00:18
javascript
Capacitor: от веба к мобильным приложениям. Часть 4. Интегрируем локальный LLM в проект

Привет, Хабр! Продолжаем серию статей о разработке мобильных приложений с помощью Capacitor. Если вы не читали предыдущие части, лучше начать с них:Часть 0. Зачем нужен CapacitorЧасть 1. Миграция проекта на CapacitorЧасть 2: Как написать свой плагинЧасть 3: OTA-обновленияВ этой части разберём, как запустить языковую модель прямо на телефоне — без сервера, без API-ключей и без постоянного интернета.Зачем локальный AIНа первый взгляд может показаться, что локальная модель на телефоне — это лишняя…

  • среда, 27 мая 2026 г. в 00:00:17
javascript
Как уместить DOOM в QR-код

DOOM известен тем, что запускается где угодно – различные порты игры появляются с 1993 года. Мем «It Runs Doom» живёт в интернете уже больше десяти лет. Люди запускали DOOM на тостерах, на тачбарах макбуков, на умных холодильниках.И, кажется, я – первый человек, который засунул DOOM в QR-код.Абсурдная постановка задачиQR-код может хранить до ~3 КБ текстовых и бинарных данных. Для сравнения:Этот абзац до текущего момента весит около 0,4 КБ.Спрайт «chaingun» из оригинального DOOM – 1,2 КБ.Моя цел…

  • среда, 27 мая 2026 г. в 00:00:15