Category : javascript

javascript
Вопросы на собеседование: Рефакторинг TypeScript

Собеседования по TypeScript всё чаще проверяют не только знание синтаксиса, но и умение видеть «узкие места» в уже работающем коде. Задача кандидата - не просто сказать «тут ошибка», а предложить более безопасное, читаемое и поддерживаемое решение.В этой статье собраны практические вопросы, основанные на реальных принципах рефакторинга TypeScript. Каждый пример показывает типичный код, который можно улучшить, и задаёт направление для размышлений.🔹 Типы и сужение типовВопрос:«У нас есть код, где…

  • вторник, 12 мая 2026 г. в 00:00:13
javascript
Я реализовал Double Ratchet в React Native мессенджере. Разбор протокола и кода

Уровень: senior · нужно базовое понимание криптографии (AES, ECDH, KDF) Стек: React Native, Expo SDK 54, WebCrypto API, expo-secure-store, TypeScript Что внутри: разбор протокола Signal Double Ratchet, реализация на ~300 строк, грабли, оговорки про отступления от канонаЗачем мне понадобился Double RatchetВ прошлой статье про трёхуровневый кэш сообщений я уже упоминал, что делаю мессенджер ONEMIX на React Native. Базовое E2E у меня было простое: ECDH P-256 для обмена ключами при первом контакте,…

  • вторник, 12 мая 2026 г. в 00:00:07
javascript
Бэкдор вместо тестового

TL;DR:В GitHub-репозитории для тестового задания был вредоносный код, спрятанный в tailwind.config.js. Сначала файл выглядел как обычный Tailwind-конфиг, но в конце была длинная обфусцированная JS-строка. При загрузке конфига код подключал fs, os, request, path, node:process и child_process, связывался с C2 на 78.142.218.26:1244 или 66.235.168.17:1244, отправлял минимальный фингерпринт машины, скачивал второй payload в ~/.vscode/f.js, создавал ~/.vscode/package.json, выполнял npm install и запу…

  • понедельник, 11 мая 2026 г. в 00:00:06
javascript
Как я сделал трёхуровневый кэш сообщений в мессенджере на React Native — и что узнал по дороге

Уровень: middle/senior мобильная разработка, React Native, SQLite Стек: Expo SDK 54, React Native, expo-sqlite, drizzle-orm, AsyncStorage, TypeScript Что внутри: архитектура, код из продакшна, грабли, цифрыВступлениеЯ делаю мессенджер ONEMIX на React Native. К моменту, когда я начал писать этот пост, в нём уже больше десятка экранов, групповые WebRTC-звонки через LiveKit, E2E на Double Ratchet + Sealed Sender, push-нотификации с cold-start навигацией и десктоп-версия на Electron. Но самым важны…

  • понедельник, 11 мая 2026 г. в 00:00:04
javascript
Разбираем Bulletproof React: как не утонуть в хаосе собственного кода

Если вы не стыдитесь свой код, написанный полгода назад — значит, вы недостаточно выросли как разработчик — «Дядюшка Боб»Для кого эта статья?Для того, кто только начинает и уже чувствует: «что-то здесь не так, но как правильно — никто не объяснил».А еще — для того парня, которым я был много лет назад. Который только начинал, радостно накидал компонентов в src/components, порадовался, что всё работает, закрыл задачу и пошел пить чай. А через три месяца открыл этот же проект и не узнал собственны…

  • понедельник, 11 мая 2026 г. в 00:00:04
javascript
Структура Vue проекта

Правильная файловая структура - скелет любого фронтенд-приложения. В Vue 3 нет строгих предписаний, как раскладывать файлы по папкам, кроме базового разделения components/, views/. Но с ростом проекта хаотичное размещение кода быстро превращается в проблему. В этой статье разберём популярные подходы к организации Vue-проектов: от простейшего плоского до микрофронтендов.Плоская структура: быстрота и минимализмС этой схемы стартуют почти все небольшие проекты (пет-приложения). Суть в том, что все…

  • воскресенье, 10 мая 2026 г. в 00:00:11
javascript
Как правильно управлять диалогами в QML: Singleton + JavaScript Promise

Почему управление диалогами в QML почти всегда сделано плохоУже не первый раз сталкиваюсь в проектах на Qt QML с проблемой управления диалогами и всплывающими окнами.QML — декларативный язык и это здорово! Мы описываем, что хотим видеть на экране, и, если всё сделали правильно, при запуске программы получаем желаемый результат.Но иногда хочется динамики — и именно с диалогами начинаются проблемы, которые все решают по-разному. Кто-то продолжает так же декларативно описывать диалог для очередног…

  • суббота, 9 мая 2026 г. в 00:00:12
javascript
React stack 2026: карта лучших библиотек по категориям

Открываете очередной React-проект в 2026 году и смотрите на белый экран package.json. Какой роутер? Vite или Next.js? shadcn/ui или Mantine? Zustand или всё-таки Redux Toolkit? React Hook Form или TanStack Form? И как вообще теперь делать таблицы — TanStack Table или AG Grid?Каждая из этих категорий за последние 2-3 года прошла через смену лидера. То что было стандартом в 2022 (Redux, Material UI, Webpack, styled-components, Formik), в 2026 либо в legacy-режиме, либо проиграло свежим конкурента…

  • суббота, 9 мая 2026 г. в 00:00:11
javascript
Frontend Status: свежий дайджест фронтенда и AI — 06.05.2026

Frontend Status: Привет! Свежий дайджест фронтенда и AIПривет!Это 15-й выпуск Frontend Status — дайджеста по фронтенд-разработке.В этом выпуске:📺 MoscowJS 70 про инженерную культуру в действии: доклады и круглый стол показывают, как командам быстрее синхронизироваться и принимать сильные технические решения.⚛️ React Server Components и кеширование страниц: разбираем partial page caching, чтобы ускорять загрузку и снижать стоимость рендеринга без потери актуальности контента.🤖 AI из «вау-демо» п…

  • пятница, 8 мая 2026 г. в 00:00:10