Последние посты

JavaScript Ready | Программирование
22 сент., 06:12
Склеивайте множество синхронных обновлений в одно!Иногда функция может вызываться десятки раз за один проход синхронного кода.Можно накопить изменения и запланировать обработку один раз: const pending = new Set();function update(id) { pending.add(id); scheduleFlush(); }queueMicrotask() выполнит flush после текущего синхронного кода, но до перехода к следующей macrotask: function flush() { scheduled = false;process([...pending]); pending.clear(); }


JavaScript Ready | Программирование
21 сент., 06:30
📂 Напоминалка для работы с async/await!Например, await приостанавливает выполнение текущей async-функции до завершения Promise, а try...catch позволяет удобно обрабатывать возникающие ошибки.На картинке — основной синтаксис async/await, принцип его работы, сравнение с цепочками .then() и другие полезные моменты.Сохрани, чтобы не потерять!📣 JS Ready | #ресурс


JavaScript Ready | Программирование
18 сент., 17:12
Получаем только изменённые поля объекта!При изменении состояния приложения можно сравнить предыдущую и текущую версию объекта, чтобы определить только обновлённые значения. Такой diff позволяет отделить изменившиеся поля от тех, которые остались без изменений, и использовать только актуальные данные для дальнейшей обработки. const oldUser = { name: "Alex", age: 30, role: "developer" };const newUser = { name: "Alex", age: 31, role: "developer" };Для получения изменённых полей можно преобразовать объект в массив пар через Object.entries(), отфильтровать только отличающиеся значения и собрать новый объект обратно с помощью Object.fromEntries(). const changes = Object.fromEntries( Object.entries(newUser) .filter(([key, value]) => !Object.is(value, oldUser[key])
JavaScript Ready | Программирование
18 сент., 07:12изменён
📱 Event Sourcing: состояние как история событий!Event Sourcing меняет привычный подход к хранению данных: вместо перезаписи текущего состояния система сохраняет последовательность событий, из которых это состояние можно восстановить.В этом посте: • Разберём, почему в Event Sourcing состояние становится производным;• Отделим команды от событий и поймём их разные роли;• Реализуем восстановление состояния через последовательный replay событий;• Разберём, почему события становятся источником истины, а не просто журналом изменений.Такой подход сохраняет не только результат изменений, но и их причинную историю, позволяя строить новые представления данных и воспроизводить состояние системы на основе событий.📣 JS Ready | #гайд




JavaScript Ready | Программирование
17 сент., 08:12
Array.prototype.fill() — заполнение массивов и особенности работы со ссылками!Array.prototype.fill() — часто используемый метод, который заменяет элементы массива указанным значением. Он изменяет исходный массив и применяется при подготовке структур данных, создании массивов фиксированной длины и инициализации состояний. Пример: const numbers = new Array(5).fill(0);console.log(numbers); // [0, 0, 0, 0, 0]Метод принимает три аргумента: array.fill(value, start, end);value — значение для заполнения, start — индекс начала изменения, end — граница диапазона без включения самого индекса. Например: const values = [10, 20, 30, 40, 50];values.fill(1, 2, 4);console.log(values); // [10, 20, 1, 1, 50]Один из распространённых вариантов использования — создание массивов состояний:
JavaScript Ready | Программирование
16 сент., 08:12
📂 Шпаргалка по Spread и Rest!Одинаковый синтаксис ..., но разные задачи: Spread раскрывает элементы и свойства, а Rest собирает оставшиеся значения в массив или объект.На картинке — различия, синтаксис и примеры использования Spread и Rest при работе с массивами, объектами и функциями.Сохрани как краткую памятку!📣 JS Ready | #ресурс


JavaScript Ready | Программирование
15 сент., 08:12
📂 Напоминалка по архитектурным концепциям!Например, балансировщик нагрузки распределяет входящий трафик между серверами, кэширование снижает нагрузку на базу данных, а очереди сообщений позволяют сервисам работать асинхронно и меньше зависеть друг от друга.На картинке — 12 архитектурных концепций, которые полезно знать разработчику: от CDN и API Gateway до шардинга, consistent hashing и автомасштабирования.Сохрани, чтобы была под рукой!📣 JS Ready | #ресурс


JavaScript Ready | Программирование
14 сент., 13:12
JavaScript умеет освобождать ресурсы сам, без finally!Когда код временно открывает ресурс, соединение, файл, lock или подписку — его обязательно нужно закрыть даже при ошибке. Обычно для этого пишут try/finally: const connection = openConnection();try { await connection.query(sql); } finally { connection.close(); }Современный JS поддерживает явное управление ресурсами. Объект может определить Symbol.dispose, а using гарантированно вызовет его при выходе из области видимости: function openConnection() { return { query(sql) { return db.query(sql); },Symbol.dispose { db.close();


JavaScript Ready | Программирование
14 сент., 08:12
📂 Напоминалка по тестированию API!Например, Smoke Testing проверяет, что критичные эндпоинты вообще доступны, а Contract Testing помогает убедиться, что запросы и ответы по-прежнему соответствуют API-контракту.На картинке — 9 основных видов API-тестирования: от функциональных и интеграционных тестов до нагрузочного, security- и fuzz-тестирования.Сохрани, чтобы не потерять!📣 JS Ready | #ресурс


JavaScript Ready | Программирование
12 сент., 09:10
Создаём индекс данных из массива для быстрого поиска через Map!При работе с данными из API часто требуется получать элементы массива по идентификатору. Самый простой вариант — использовать find(), но при большом количестве повторных поисков такой подход приводит к постоянному перебору коллекции.Например, поиск пользователя по id: const users = [ { id: 1, name: "Alex" }, { id: 2, name: "John" } ];const user = users.find( user => user.id === 2 );
JavaScript Ready | Программирование
12 сент., 06:12
📂 Напоминалка по циклам в JavaScript!Например, for удобно использовать, когда заранее известно количество итераций, а for...of — когда нужно пройтись по массиву или строке.На картинке — 5 циклов, которые постоянно встречаются в коде.Сохрани, чтобы не забыть!📣 JS Ready | #ресурс


JavaScript Ready | Программирование
10 сент., 08:12
📱 Proxy API — перехват операций с объектами и функциями!Разбираем Proxy API, с помощью которого можно перехватывать и переопределять базовые операции с объектами и функциями: контролировать доступ и изменение данных, управлять видимостью и перечислением свойств, отслеживать вызовы функций и создание экземпляров. Используется для валидации, логирования, метапрограммирования и создания гибкого поведения объектов.📣 JS Ready | #шпора




JavaScript Ready | Программирование
9 сент., 15:19
Используйте Proxy для создания объектов с поведением, а не просто данных!Многие используют объекты только как хранилище: const config = { theme: 'dark', lang: 'ru' };Но иногда нужно, чтобы объект сам выполнял логику при чтении или изменении данных.Для этого в JavaScript есть Proxy. const user = new Proxy({}, { get(target, property) { console.log(Reading ${property});return target[property]; } });Теперь обычное обращение к свойству запускает вашу логику:


JavaScript Ready | Программирование
9 сент., 06:12
📂 Шпаргалка по Cache Systems!Например, Redis используется как быстрый in-memory cache для хранения часто запрашиваемых данных, сессий и временных значений, чтобы уменьшить нагрузку на базу данных. А CDN Cache позволяет отдавать статический контент ближе к пользователю, сокращая задержки и количество запросов к основному серверу.На картинке — основные уровни кэширования в современных системах.Сохрани, чтобы не потерять!📣 JS Ready | #ресурс


JavaScript Ready | Программирование
8 сент., 15:12
Не синхронизируйте состояние — вычисляйте его!Одна из частых причин багов — хранить одно и то же состояние в нескольких представлениях: let items = []; let total = 0;items.push(product);// Теперь нужно не забыть обновить totalРано или поздно один участок кода изменит items, но забудет обновить total. Появляются два источника истины.Если значение однозначно получается из других данных — вычисляйте его: const total = items.reduce( (sum, item) => sum + item.price, 0 );Тот же принцип работает для отфильтрованных списков, isEmpty, количества элементов, доступных действий и других производных значений.


JavaScript Ready | Программирование
8 сент., 06:12
📂 Шпаргалка по Git Merge vs Git Rebase!Например, git merge используется для объединения веток с сохранением полной истории изменений, а git rebase позволяет перенести коммиты на новую базу и сделать историю проекта более линейной.На картинке показана разница между двумя подходами работы с ветками Git: как выглядит история коммитов после merge, где появляется отдельный merge-коммит, и после rebase, где изменения перестраиваются поверх актуальной ветки.Сохрани, чтобы не потерять!📣 JS Ready | #ресурс


JavaScript Ready | Программирование
7 сент., 08:12
📂 Шпаргалка по Event Loop в JavaScript!Например, Promise.then() выполняется через Microtask Queue и имеет более высокий приоритет, чем setTimeout(), который попадает в Task Queue.На картинке — основные компоненты JavaScript Event Loop: Call Stack, Web APIs, Microtask Queue, Task Queue и сам цикл событий, который управляет выполнением синхронных и асинхронных операций.Сохрани, чтобы не потерять!📣 JS Ready | #ресурс


JavaScript Ready | Программирование
4 сент., 07:12
👨💻 Мега занимательная статья на Хабре: «Как я перестал бояться и полюбил ассемблер»!В этой статье: • Узнаете, как сегодня разрабатывать программы и игры для легендарного Atari ST 1985 года; • Разберёте оптимизацию кода под Motorola 68000 с помощью C и ассемблера; • Посмотрите, как автор портировал DOOM на Atari ST и заставил его работать на железе с 8 МГц и несколькими мегабайтами памяти.Продолжай читать на Habr!📣 JS Ready | #статья


JavaScript Ready | Программирование
3 сент., 08:12
📱 Iterator API — управление итерацией и ленивые преобразования!Шпаргалка по основным возможностям Iterator API: ручное управление итерацией, досрочное завершение и передача ошибок, создание iterable-объектов и ленивые преобразования через Iterator Helpers. Полезная база для углубления знаний об итераторах, генераторах и обработке последовательностей данных.📣 JS Ready | #шпора




JavaScript Ready | Программирование
2 сент., 07:12
📂 Шпаргалка по JavaScript Promise!Например, then() используется для обработки успешного выполнения, catch() — для ошибок, а finally() позволяет выполнить код независимо от результата.На картинке собраны основные методы Promise, работа с цепочками, обработка ошибок, состояния pending, fulfilled и rejected, а также методы для работы с несколькими Promise — all(), allSettled(), race() и any().Сохрани, чтобы было под рукой!📣 JS Ready | #ресурс

