Всем привет! Кажется, настала пора поделиться изменениями в Азбуке, которые произошли с 2022 года, когда я выпускал прошлую статью. Несмотря на то, что в данный момент я уже не руководитель фронта, интересно рассказать, к чему мы пришли за это время. Я, конечно, рекомендую ознакомиться с прошлой статьей, но в целом буду рассказывать "с нуля". Наш текущий стэк: Vue 3, Nuxt 4, TS. На данный момент, мы практически полностью переехали с jQuery, оставив за собой относительно небольшое количе…
У меня есть платформа для работы с метафорическими ассоциативными картами. Это инструмент психологов, коучей: колода картинок, вопросы, разговор. Звучит нишево, но суть задачи универсальна – авторский визуальный контент в вебе, который надо защитить от массового скачивания и пиратства. При этом контент загружают сами пользователи.Если вы делаете галерею, маркетплейс иллюстраций, образовательную платформу с визуалами или любой сервис, где картинки – это ценность, а не декорация, эта статья для в…
Всем привет, меня зовут Сергей Прощаев, и в этой статье расскажу про то, что обычно остаётся за кадром для многих бэкенд‑разработчиков — про «вторую половину» API.Много лет пишу на Java и Kotlin, проектирую высоконагруженные системы и, честно говоря, долгое время относился к фронтенду немного свысока. Ну подумаешь, дёрнул наш эндпоинт, получил JSON и отрисовал. Что там сложного? Пока однажды не пришлось плотно разбираться с производительностью одного внутреннего портала. Бэкенд летал, база данн…
Последние пару лет изменили то, как пишется код. Copilot, Cursor, ChatGPT, Claude - все это генерирует вполне работающий JavaScript быстрее, чем успеваешь сформулировать задачу. Это удобно. Но у этого удобства есть обратная сторона, сгенерированный код работает правильно в смысле делает что просили, но не всегда правильно в смысле не течет по памяти и не роняет прод под нагрузкой.Модели хорошо знают синтаксис и паттерны. Они значительно хуже разбираются в том, что происходит под капотом конкрет…
Меня зовут Алекс Гусев и сегодня я расскажу о том, как ChatGPT убедил меня переписать библиотеку @teqfw/di, которую я бережно "выращиваю" с 2019-го года, и почему я всё-таки убедился.Эта JS-библиотека позволяет мне использовать в своих веб-приложениях позднее связывание и даёт возможность писать изоморфный код, который без изменений работает и в браузере, и на бэке. Без транспиляции исходников, без ручной регистрации зависимостей - так, как я привык делать в Java и PHP. Я почти 7 лет вр…
Долгое время я использовал пакет request (теперь устаревший) для выполнения HTTP-запросов в Node.js. Затем в моду вошли промисы (promises), и я переключился на request-promise (также ныне устаревший). Затем я начал использовать axios и думал, что на этом все... но ошибался. История HTTP в Node.js продолжает эволюционировать, и это прекрасно.Выполнение запросов HTTP - одна из самых распространенных задач в Node.js. Будь то обращение к API, получение данных из внешнего сервиса или разработка веб-…
Привет, друзья!В этой небольшой статье я расскажу вам о новом свойстве события toggle — source, а также о новом атрибуте HTML-элемента dialog — closedby.Свойство source позволяет определять источник переключения видимости поповера (popover), а атрибут closedby позволяет декларативно управлять логикой закрытия dialog, но обо всем по порядку.❯ ToggleEvent.sourceДоступное только для чтения свойство source интерфейса ToggleEvent - это экземпляр объекта Element, представляющий собой элемент управлен…
OpenIDE 2025.3 базируется на обновлённой IntelliJ IDEA Platform 2025.3 и включает изменения как из апстрима, так и собственные доработки консорциума. Ниже разберём все заметные нововведения по порядку.Наш ответ Чемберлену! Дополнение через ".."В OpenIDE 2025.3 появилась фича под названием Command Completion. Идея в том, чтобы вызывать действия IDE прямо из автодополнения кода, без необходимости запоминать горячие клавиши или лезть в меню.Работает просто: ставите точку после выражения и …
В части 1 мы выяснили, что объекты в Heap не освобождаются сами по себе этим занимается Garbage Collector. Но как именно GC решает, что можно удалить? Если подумать, задача не такая очевидная, объект не нужен - понятие логическое, а GC работает с физическим графом ссылок.Ответ в том, что GC не пытается угадать намерения программы. Он задаёт более простой вопрос, можно ли добраться до этого объекта из работающего кода? Если нельзя объект недостижим, и никакой код уже не сможет его использовать. …