Решил написать продолжение к предыдущей моей статье Операционная система Анна. Назвал "операционной системой" скорее как отсылку к фильму "Она" (Her) - понимаю, что это, конечно, не ОС в классическом смысле, так что прошу воспринимать это как художественное название, а не технический термин. Ну и вот недавно моя жена затеяла вести расходы в Google Sheets. Увидел её мучения о том, как создать формулы, листы и т. д. В итоге ей посоветовал поставить Анну на её домашний компьютер. П…
У меня OpenClaw крутится на VPS уже два месяца. Штука крутая, но есть один момент, который бесит: весь интерфейс личного кабинета на английском. Я-то ладно, привык, но когда показываешь коллегам или знакомым — сразу «а что тут нажимать» и «а это что за Settings».Казалось бы, ну загугли «openclaw на русском» — и найдёшь готовую локализацию. Нет. Нету. В roadmap проекта тоже ничего про i18n. Строки захардкожены прямо в JSX, никакого react-intl или i18next там и близко нет. То есть даже если отпра…
Когда говорят «React перерендерился» — обычно имеют в виду что-то расплывчатое. Новичкам это слово объясняет всё и ничего одновременно. В официальной документации процесс описан точнее: trigger → render → commit. Давайте разберём, что происходит на каждом этапе — без магии, зато с Fiber, флагами и браузерным пайплайном.Render-фаза: вычисление измененийRender-фаза — это не обновление DOM. Это вычисление того, каким DOM должен стать.React рекурсивно обходит дерево компонентов, вызывает их функции…
Как-то я вспоминал, как будучи школьником мы частенько собирались, чтобы поиграть в третьих героев. Как вы понимаете, ни одна из этих партий не только не доводилась до конца (про это будет картинка в статье), но и даже не доходила до битвы между игроками-человеками. И тогда ко мне пришла идея реализовать сетевой вариант игры по мотивам героев. Изначально задумка была сделать что-то типа Kings Bounty: у игрока один герой, он ходит по карте, подбирает сундуки, нанимает отряды и, наконец, находит …
API-тестирование — это та часть QA, которую часто делают на глаз. Открыл Postman, потыкал пару эндпоинтов, всё ответило 200 — окей, работает. Но это не тестирование, это проверка что сервер вообще живой.В этой статье разберу конкретные вещи, которые стоит проверять в API, покажу как это делать в Postman и через автотесты на JavaScript, и дам чеклист который можно взять и использовать прямо сейчас.Что вообще нужно проверять в APIРазобьём на категории — так проще не пропустить ничего важного.1. С…
Frontend Status: Привет! Свежий дайджест фронтенда и AIПривет!Это юбилейный десятый выпуск Frontend Status — дайджеста по фронтенд-разработке и AI.В этом выпуске:📺 TanStack AI генерирует картинки, а не только чат-ботов.🤖 Почему ИИ выдаёт глупый код — и трёхуровневая архитектура, которая это исправляет.🎨 Математическая модель masonry-раскладки на Flexbox — с алгеброй, а не «работающим примером».⚡ TypeScript 6.0, обновления безопасности Node.js, петиция против AI-кода в ядре Node.js и Kafka из No…
Всем привет!Меня зовут Михаил Витик, я занимаюсь разработкой больше двадцати лет, а сейчас работаю в Лемана Тех техлидом в сервисной команде, которая поддерживает команды разработки сайта Лемана ПРО. За это время довелось поработать с разными языками и стеками — от Borland C++ и Delphi до .NET и современного TypeScript. В какой‑то момент у нас возникла задача, которая на первый взгляд казалась довольно рутинной, но при более близком рассмотрении оказалась типичным инженерным болотом: много одно…
Я периодически провожу технические интервью и смотрю pet-проекты кандидатов.И почти всегда вижу одну и ту же картину:Используется localStorage или заглушки вроде jsonplaceholder.Я прекрасно понимаю, почему так происходит:никто не хочет платить за серверне хочется поднимать backend ради тестового проектараньше можно было использовать бесплатный Heroku, но это уже в прошломВ итоге почти все проекты выглядят одинаково:статические данныефейковые APIзагрузка через setTimeout, чтобы "сымитировать…
Когда разработчик приходит в Next.js из обычного React SPA, он часто тащит с собой старую схему мышления. Есть поле ввода, значит будет useState. Есть поиск, значит будет useEffect. Есть список данных, значит будем следить за изменением состояния и вручную запускать новый запрос.На маленьком экране это вроде работает. Но очень быстро выясняется, что в приложении уже не одно состояние, а три. Есть значение в поле, значение в URL, данные, загруженные по одному из этих значений. Потом появляется ч…