ПредысторияВ одном из моих проектов мы использовали библиотеку Inversify для внедрения зависимостей (DI). Хотя это мощное и гибкое решение, его избыточная гибкость со временем обернулась против нас: управление зависимостями становилось всё более запутанным по мере роста приложения. С каждым новым модулем или компонентом код усложнялся, а процесс рефакторинга становился всё более болезненным.Я выделил несколько ключевых требований, которые хотел бы видеть в новом решении:Прозрачность зависимосте…
Ссылочка на видео НЕ из ЮтубаК сожалению, редактор Хабра смог отобразить видео только с Ютуба, поэтому здесь оставлю ссылку на Вконтакт для тех, кто не хочет сталкиваться с ограничениями скорости: https://vk.com/video251305991_456239023Всем привет! Меня зовут Дмитрий и я разработчик в команде GoogleSheets.ru. Продолжаем нашу совместную с платформой "Озон для разработчиков" рубрику «Ozon и Google-таблицы: продаем товары “в клеточках”» для продавцов на маркетплейсе Ozon, в которой мы расс…
Привет, Хабр!Я начинающий разработчик с полуторагодовым опытом программирования на Python и чуть меньшим на JavaScript. Меня всегда интересовало особенное различие в этих двух языках, про которое далее пойдет речь. Это и привело меня к небольшому исследованию и, как следствие, моей первой статье.Данная статья является сравнением двух подходов в двух разных ЯП. Каких-либо похожих материалов в рунете я не обнаружил (кроме редких упоминаний о том, что такое различие в целом существует), поэтому с …
Привет, Хабр! В прошлый раз мы с вами создавали «Игру жизни» на Godot. Движок показал себя отлично, но для такой простой задачи это всё равно что забивать микроскопом гвозди. Особенно когда речь идёт о веб‑экспорте.В последнее время стоит заикнуться про генерацию изображений, как все сразу вспоминают про нейросети. Stable Diffusion, Midjourney и прочие модели впечатляют, не спорю. Но давайте взглянем на другую сторону генеративного искусства. Ту, где картинки создаются не гигабайтами весов нейр…
Я написал много JS-кода, и мне нравится JavaScript. Самое же главное, я выработал необходимые навыки для понимания, оптимизации и отладки этого кода, от которых не хочу отказываться. Поэтому у меня вполне естественно возникает беспокойство по поводу охватившей сферу разработки одержимости переписывать каждый инструмент Node.js на быстрых языках вроде Rust, Zig, Go и прочих. Причём ценность этих языков я нисколько не преуменьшаю. Я даже принимал некоторое участие в разработке Servo, да и на с…
Признаюсь, поначалу я была скептиком ручного кодирования SVG. Будучи фронтенд-разработчиком, привыкшим приводить в порядок "плохие" SVG-файлы, я никогда всерьез не задумывалась о том, чтобы самой рисовать с помощью кода. Однако, прошлой зимой я создавала проект для рисования каллиграфических сеток и с головой погрузилась в изучение спецификаций SVG. Оказалось, что, несмотря на знание базовых структур и правил работы с SVG, по-настоящему понять значение всех этих цифр и их взаимодейст…
Декабрь 2023 года стал значимой датой в истории развития CSS-свойства mask: все современные браузеры в своих последних версиях обеспечили его полную поддержку, теперь без использования своих вендорных префиксов. А это означает, что данное свойство прочно и надолго вошло в жизнь каждого фронтенд-разработчика. Осталось лишь фронтенд-разработчикам принять его в свою жизнь и перестать его бояться!В статье я кратко напомню основные теоретические идеи свойства и подробно расскажу о реальных примерах …
В разработке ПО важно обеспечивать чистоту и качество кода, чтобы проект оставался легко поддерживаемым.Однако в ежедневной работе разработчики часто сталкиваются с необходимостью быстро решить задачу, и тогда они начинают оставлять в коде комментарии типа TODO или FIXME для последующего улучшения.Спустя какое-то время проект оказывается перегружен невыполненными задачами. Подобные комментарии накапливаются и превращаются в невидимый технический долг, который может негативно сказаться на проект…
Привет, Хабр!Во фронтенде часто приходится вызывать асинхронные функции одну за другой, а потом отменять всю цепочку. У каждого опытного разработчика есть свои методы. В этой статье я хочу поделиться своим опытом: как прервать выполнение цепочки вызовов изнутри и снаружи, как обрабатывать ошибки, как перестать ждать результат асинхронной функции и как её можно отменить. Интересно? Тогда добро пожаловать под кат! Supercat думает над цепочками вызововТипичная задачаНа странице есть поле для ввода…