Как всё уснулоПолгода назад я построил себе в Obsidian продуманную структуру хранилища. PARA-подобная иерархия, аккуратные папки под проекты и области, шаблоны, теги. Я честно верил, что вот теперь заживём.Прошло несколько месяцев, и структура уснула. Не развалилась, не сломалась, именно уснула. Заметки продолжали появляться, но раскладывать их по местам мне стало банально лень. Каждая новая мысль требовала маленького ритуала: решить, куда её положить, как назвать, с чем связать, какие теги пов…
Не каждый код «после рендера» должен становиться useEffect. Сначала ищем причину выполнения.На code review я регулярно встречаю один и тот же вопрос, только записанный разным кодом: «Как правильно синхронизировать эти значения через useEffect?» Часто полезнее спросить иначе:А эффект здесь вообще нужен?Я больше семи лет занимаюсь frontend-разработкой, последние два с лишним года руковожу кросс-функциональной командой, а раньше преподавал React. Со временем повторяющиеся замечания на review сложи…
(Серия: Сельскому учителю в помощь)Оглавление***Вступление Раздел: переход к математикеГлазами математика: объяснение, генезисПредикаты: переход от объектов физики к образам математикиО точности языка Раздел: дискретные множестваДискретные множества или «ассемблер» числовой математикиИнженерная математика, полнота и детерминизмКольца и поля в эвмЭлементы комбинаторики. Декартово произведениеЭлементы комбинаторики. БулеанОтношениеОпределение функции отношениемВычислимость функцииКомпозиция функц…
Данное изображение продукт генерации ИИ и моих скринов. Количество языков в данный момент на картинке не соответствует количеству готовых языковых пакетов!В одной из предыдущих статей я поднимал вопрос о том, что интерфейс системы целиком и полностью работает на Английском языке. Я пообещал, что в будущем реализую поддержку нескольких языков, и вот этот момент настал. Но, как это часто бывает, пока я копался в коде ради мультиязычности, попутно переписал пару системных модулей, чтобы они наконе…
Разбор архитектуры локального клиента для агрегации вакансий, который я, senior backend-инженер, написал для себя — потому что искать работу через классические job-борды оказалось неожиданно трудоёмкой инженерной задачей. Внутри: фронтенд без сборки и без virtual DOM, маршрутизация с управляемым фокусом, клиентский API-слой поверх SSE, двухфазный сканер с детерминированным завершением, SSRF-envelope на DNS-pinning, локализация на 13 локалей с RTL, запуск всей системы одной командой и тестовая п…
Дисклеймер: Данный кейс основан на архитектуре нашего проекта (~2600 файлов). В проектах другого масштаба или с другой структурой зависимости результаты могут отличаться. Это не «серебряная пуля», а мой личный опыт оптимизации конкретной инфраструктуры.Буду краток, на проекте, где я сейчас работаю, мы с командой заметили огромную проблему со скоростью сборки и весом проекта после билда. Стек у нас React, Next.js, FSD Monorepo. Изначальный набор инструментов был такой:БилдTurbopackЛинтинг Eslint…
Мир сильно изменился с начала 21 века. В том числе, что касается систем авторизации. Мы продвинулись от авторизации через обычный логин и пароль к использованию централизованных сервисов вроде Google и Apple. Но так ли хорошо это для пользователя? И можно ли сказать, что его данные принадлежат ему?Давайте я покажу вам интересную вещь. SecretAuth – UX-решение для авторизации приватным ключом. Конечно, ничего нового в подписании данных приватным ключом, а потом в проверке их через публичный ключ …
В прошлых статьях мы рассказывали про архитектуру ГИГАХРУЩА — браузерного survival horror с процедурной генерацией, WebGL-рейкастером и полноценным симулируемым миром (A-Life, Самосбор, физика) без использования готовых движков вроде Unity или Godot. Проект работает полностью локально, загружаясь в браузер за секунды.Но что, если мы хотим добавить мультиплеер, где игроки смогут вместе ходить по одним и тем же бесконечным бетонным коридорам, встречать друг друга, отстреливаться от монстров и пря…
Хочу анонсировать свой фреймворк Point0. Это первый Bun FullStack фреймворк сопоставимый по функционалу с Next.js и TanStack Start. Однако, имеет кардинально другой DX, ради которого и был создан.Мне всегда не нравились существующие фреймворки, особенно Next.js и Remix (React Router). Но я думал, что, видимо, по-другому фреймворки просто не получаются, поэтому и не делают. А громоздкость, чужие строгие соглашения, неповоротливость архитектуры, это просто необходимое зло, с которым я должен смир…