localStorage кажется простым решением, пока приложение не начинает расти. useEffect, useState, рассинхронизация между компонентами, проблемы с SSR и отсутствие типизации быстро превращают его в источник багов и хаоса.
В этой статье я показываю, почему localStorage стоит рассматривать как external store, а не как обычный state React, и как правильно работать с ним с помощью useSyncExternalStore. Мы шаг за шагом усложняем реализацию: добавляем строгую типизацию, реактивность между компонентами и вкладками, поддержку sessionStorage, валидацию данных и SSR-совместимость — без Redux и лишней инфраструктуры.
Материал основан на реальном коде и практических сценариях. В конце я показываю финальную архитектуру и готовую библиотеку, которую можно использовать в продакшене, если вам нужен безопасный и предсказуемый доступ к localStorage в React-приложениях.
Читать далееМы, кажется, пробили новое дно.
И что особенно удивительно, Карл! – аккуратно, без паники, с хорошей формулировкой и абзацами.
Я сначала не понял, что стало происходить. Было ощущение странного дежавю: читаю change request или баг-репорт, киваю, вроде всё логично... но что-то не так, как будто где это уже читал. Слова правильные. Причинно-следственные связи на месте. Термины употреблены верно. Пытаюсь понять в чём проблема – ноль. Как будто читаешь инструкцию к микроволновке, а не описание реальной проблемы. Пытаюсь прочитать ещё раз и ещё раз - с трудом продираюсь через текст с каким-то смутным понимаем того, что написано.
И тут до меня доходит - как обухом по голове.
Мои дорогие гении из техподдержки и продакт менеджер нашли "идеальный" способ сэкономить на обсуждении технической стороны проблемы со мной. И действительно, зачем? Клиент что-то спросил. Они прогнали это через ИИ. И ИИ вник. Глубоко. Старательно. Затем сгенерировал текст, старательно объясняя мне что нужно добавить, починить и даже каким образом это сделать (не имея даже понятия о нашей кодовой базе).
И вот тут я реально взбесился. И не тихо так, а очень даже громко.
Читать далееОбзор на браузерные API, которые стали Widely available в декабре 2025. Раз в месяц я буду вам напоминать, что вы уже можете использовать в проде.
Каждый месяц выходят новые CSS-свойства, HTML-атрибуты, JavaScript-методы и WebAPI, но применять в проде мы их конечно же не будем. 2.5 года назад также каждый месяц выходили новые фичи в браузере, а вот их уже пора начинать применять.780
Узнать, что можно применять в продеДанная статья была впервые опубликована в июле 2024 года. В ней разбирается, пожалуй, самый популярный миф о свободном программном обеспечении. Будто критерии свободы, обозначенные проектом GNU лишь снижают свободу пользователей. Поскольку этот миф столь же живуч, что и иные мифы о свободном ПО, разобранные в статье о соотношении свободы и приватности с безопасностью, — данная работа также не потеряла актуальности. Ее текст остался без изменений, однако, как и в случае с упомянутой статьей, некоторые ссылки на источники были заменены на более удобные.
Читать далееНа маркетплейсе главная ловушка простая: вы управляете бизнесом по цене и “выручке”, а живёте на выплате “к перечислению” — то есть на деньгах, которые реально приходят на счёт.
Читать далее“Надо увеличить ценность нашего продукта!” - фраза, которую произнес, пожалуй, каждый продакт хотя бы раз за свою карьеру. Эта фраза уже так набила оскомину, что уже потеряла всякий смысл.
А вот такой фразой “это не увеличивает ценность продукта для пользователей” отшиваются многие неугодные инициативы будь-то от команды или от СЕО.
Но что скрывается за этим мифическим термином “ценность для пользователя”?
Давайте разбираться.
Читать статьюВ предыдущей статье "Почему нейросети не заменят прикладных специалистов: простая логика против вероятностных подходов" рассматривались общие вопросы поиска решений управляемого данными. Эта информационная технология, основанная на простой логике, позволяет оперативно вести диалог с пользователем, используя накопленные в процессе поиска решения данные. Для того чтобы это работало - требуется фрагментировать знания предметной области в виде функций с заданными областями допустимых значений входящих в них параметров.
В данной статье рассматривается вопрос о представлении предметных знаний в виде общедоступных документов, позволяющих интерпретировать их, как вышеозначенные функции и затем использовать в качестве компонентов базы знаний.
Всё нижеследующее, хорошо всем известно, но в контексте поиска управляемого данными обретает новый смысл и функциональность.
ПРИМЕЧАНИЕ. В качестве примера выбрана реальная задача из медицинской практики связанная с назначением антирабической помощи. Антирабическая помощь необходима для исключения заболевания бешенством после контакта с домашним или диким животным. Бешенство смертельно опасное заболевание. От правильности врачебных назначений зависит жизнь обратившегося за медицинской помощью. Имеется инструкция, регламентирующая действия по оказанию антирабической помощи, которая и является первоисточником базы знаний. Несмотря, на кажущуюся простоту выбор лечения (профилактики) требует чёткого анализа ситуации и учёта многих факторов. Экспертная система в диалоге управляемом данными не позволит ничего пропустить и предложит безошибочное решение.
Читать далееГрафика в видеоиграх не главное. Однако именно она олицетворяет технологический прогресс индустрии. Сложные системы освещения, фотореалистичные материалы, физика, которая ощущается в каждом движении, и лицевые анимации, от которых трудно отвести взгляд — это именно то, для чего энтузиасты сегодня покупают флагманские видеокарты и OLED-панели.
В прошедшем игровом году мы лицезрели, как мрачное средневековье превращается в почти осязаемую реальность, как феодальная Япония оживает в мельчайших деталях, как Сицилия начала XX века дышит солнцем и пылью, а постапокалиптические пейзажи Америки снова зовут в путь.
В нашей подборке 10 игр, которые в 2025 году стали эталоном визуального и технического исполнения: от исторических реконструкций, до театральных постановок и научной фантастики, снятой на старую видеокассету.
Читать далееКажется, что цели ставить легко: мы вроде бы чётко понимаем, чего хотим. «Хочу быть богатым». «Хочу начать ходить в зал и быть спортивным» и тд.
Но то, что большинство целей и всех наших «с понедельника начну» проваливаются — тоже правда. А значит, легко не то, чтобы ставить цели — легко мечтать.
А вот ставить цели, да так, чтобы действительно к ним прийти, и не увязнуть в прокрастинации, не так уж и легко.
Тем, как правильно это делать, мы сегодня и займёмся.
Читать далееПродолжаю разрабатывать Minecraft на движке Unity. В этой статье я покажу мою реализацию разрушения блоков - перестройки чанков. Это будет моя вторая реализация.
Перед прочтением этой статьи, советую ознакомиться с моей предыдущей статьей https://habr.com/ru/articles/982608/
Моя первая логика основывалась на полной перестройке чанка после удаления блока. Это работало без багов и не сильно влияло на производительность. Но я решил поэкспериментировать со своей игрой, поставил высокую скорость разрушения и блоки разрушались 1 блок за кадр или около 100 - 300 блоков в секунду. При таком раскладе игра начинала тормозить, не сильно, но заметно. Конечно я не планировал оставлять такую скорость разрушения, но, если я могу увеличить производительность, то нужно реализовывать.
Как же на меня ругался ИИ, когда я скидывал ему свой код. Он мне советовал остановиться на полной перестройке чанков (моя первая логика), но я все же ее переделал, и остался доволен результатом.
Далее расскажу о всех деталях:
Первым делом я вынес Mesh и его параметры (Vertices, Triangles и т.д.)
Читать далееРазработка собственных языков и языковых серверов может быть сложной и рутинной задачей. Langium — инструмент на TypeScript, который упрощает создание предметно‑ориентированных языков (DSL) с готовым LSP‑сервером.
Меня зовут Денис Маматин, я работаю в R&D‑отделе СберТеха. В ходе разработки одного из наших проектов мы столкнулись с необходимостью создания собственного DSL, и в этом нам существенно помог Langium. В этой статье я рассмотрю, как устроена грамматика Langium, как создать первый проект и какие преимущества он даёт разработчику.
Читать далееВ компаниях регулярно всплывает спор, который очень похож на инженерный: «Мы делаем правильно, но медленно» vs «Мы делаем быстро, но криво».
На уровне разговоров это обычно превращается в конфликт стилей:
Читать далееПрости, дружище, я обманул тебя. Никаких 100 миллионов подписчиков у меня нет. Но не спеши уходить. Обещаю - будет интересно.
Я микро-автор канала DevOps Brain и это рассказ о том как у меня не получается раскрутить свой канал про инфраструктуру, сети и программирование не смотря прилагаемые усилия.
Тут не будет “успешного успеха”, который сочится из любой дырки. Тут будет про боль, ошибки, предрассудки, разочарования и почему я не сдамся.
Читать далееЦикл научного метода для AI в коде Python:
Hypothesis — формируешь гипотезу
Action — действуешь на её основе
Data — собираешь данные
Insight — делаешь вывод
Удивительное наблюдение. Товарищ жалуется на нехватку сил:
— А как ты отдыхаешь? — интересуюсь я.
— А как-как — дела закончу и могу в комп поиграть. — рассказывает он хвастая своими игровыми новинками.
— И играешь небось с того же компа на котором 5 минут назад работать закончил? — Ну да…
Мы с вами знаем таких людей: может отпахать 10-ти часовую смену, а потом засесть еще и в игру.
Парадокс. Люди часами-днями рубят монстров в игре на износ. Тратят время, силы, ресурсы, разгоняют психику. Устают, а усталости не чувствуют.
И внедряя геймификацию в бизнес мы формируем такой же эффект. Нам надо, чтобы люди тратили (или зарабатывали нам) деньги и не задумывались. Чтобы были увлечены процессом, как игрой.
Как так получается?
Есть одна вещь, которая хорошо объясняет этот феномен.
Привет, Хабр! Меня зовут Дмитрий Фролов, я ведущий разработчик в Центре компетенций Data Science МТС Web Services. За каждым показом онлайн-рекламы стоит очень сложный механизм. Одно из его ключевых понятий — Real-Time Bidding (RTB). Это аукцион онлайн-рекламы, где решается, какое объявление будет показано пользователю на определенном веб-сайте или в приложении. Особенность RTB — необходимость максимально быстро принять решение, для чего системы обучаются с помощью технологии reinforcement learning (RL).
Это достаточно сложная задача — доступных материалов по ней не так много и непонятно, с какой стороны подступиться. Вместе с коллегами мы собрали репозиторий, который может помочь разработчикам погрузиться в специфику онлайн-аукционов. Он содержит датасет с данными RTB, подборку теоретических материалов, симулятор аукционов и примеры работающих RL-алгоритомов. Все подробности и ссылки — под катом.
Читать далееЛичный опыт постройки меридианного радиотелескопа для приёма линии водорода с длиной 21 см. Подробно о конструкции, борьбе с шумами и том волнующем моменте, когда на экране из хаоса возникает пик от облаков Млечного Пути. А также о том, как из этих пиков своими руками модно сложить схематичную, но настоящую карту спиральных рукавов нашей Галактики.
Читать далееСистема на базе Claude Code, которая планирует мой день, обрабатывает встречи, следит за здоровьем и питанием. Показываю архитектуру, команды и как собрать такое у себя.
Как это работаетПривет, Хабр! Мы — бизнес-линия разработки кредитных продуктов для физических лиц в Т. Нам крайне важно использовать актуальное, безопасное и предсказуемое решение в проектировании бизнес-процессов. Для автоматизации выдачи кредитных продуктов мы используем движок бизнес-процессов Camunda.
В прошлом году компания объявила о завершении бесплатной поддержки Camunda 7. Платформа больше не будет получать обновления, включая критические исправления безопасности и уязвимостей. Для нас, как для финансовой организации, где безопасность, стабильность и соответствие стандартам играют ключевую роль, такой поворот стал серьезным сигналом.
Мы решили проанализировать текущее состояние оркестрации бизнес-процессов во всем банке. Хотели собрать потребности команд и найти подходящие решения, которые будут безопасными, масштабируемыми, надежными и готовыми к изменениям. Мы провели многоэтапный анализ существующих решений и сформировали итоговые рекомендации в виде дерева. В статье делимся тем, что получилось.
Читать далееВ мире, где стартапы сгорают за год, а технологические гиганты рушатся за десятилетия, существуют редкие примеры экстремальной стабильности. Японская строительная компания Kongō Gumi — это «legacy-проект» мирового масштаба. Основанная в 578 году, она просуществовала почти полторы тысячи лет под руководством одной семьи.
Читать далее