текст перенесён в корпоративный блог
https://habr.com/ru/companies/habr_rutube/articles/1028574/
🌲 Открываем регистрацию на Дебаг Кемп
Мы придумали формат, который давно хотели сами: выбираешься из города, два дня в сосновом лесу на Карельском перешейке — маршрут, костёр, мастер-классы по выживанию, нетворкинг без слайдов и питчей. Просто люди, с которыми интересно, и никакого Slack-а.
📅 6–7 июня 2026 (выходные) 👥 Всего 25 мест — маленький формат, это принципиально.
Цена растёт по мере приближения к дате. Оплатить можно частями через сплит → регистрация
Если вы 💎 практик сообщества — скидка 15% применяется при регистрации автоматически. Ещё не практик, но думаете? Сейчас самый разумный момент.
👀 Узнать больше · 📝 Регистрация
Вопросы — в чат, мы там живём.
Как я запускал российское зеркало для SQL-песочниц: гибридное облако и блокировки Composer
Привет, Хабр! Меня зовут Слава, я развиваю SQL-платформы sqltest.online и sqlize.online для бесплатной тренировки запросов на реальных СУБД (PostgreSQL, Oracle, MariaDB 12.3, MS SQL 2025).
Зачем понадобилось зеркало?
От 30% моей аудитории из РФ стали приходить сообщения: «Сайт открывается только через VPN».
Переносить бэкенд целиком - дорого, сервер завязан на тяжелые СУБД в Docker. Поэтому я выбрал гибридную модель: поднять фронтенд в зоне .ru, оставив бэкенд в Германии.
Архитектура: Фронт в РФ, мозг в Германии
Фронтенд: PHP без фреймворков
Нативный PHP, HTML и JS. Меньше зависимостей - проще деплой. Для RU-зеркала я выбрал SpaceWeb*, где есть отличные бюджетные тарифы и классная поддержка.
sqltest-online.ru (SpaceWeb, РФ)
├── PHP (без фреймворков) + HTML/JS
└── Минимум зависимостей
Бэкенд: Docker Compose
Мощный сервер в Германии у Contabo*, где в контейнерах крутятся MySQL, PostgreSQL, ClickHouse и другие базы. Серьезные СУБД требуют ресурсов, так что всё живет на одной полноценной машине.
Как они общаются?
Пользователь отправляет запрос -> браузер делает AJAX-вызов к .ru серверу -> фронт делает HTTP-запрос к бэкенду в Германии (server-to-server) -> бэкенд выполняет SQL и возвращает результат.
Плюсы схемы:
CORS не нужен: браузер общается только со своим доменом.
Бэкенд закрыт: принимает запросы только от white-list IP.
Задержка минимальна: интерфейс грузится из РФ, тяжелые запросы идут по быстрому каналу серверов.
Резервного бэкенда нет - проект бесплатный, на второй сервер пока нет бюджета. Если падает Германия, ложится всё.
Проблемы деплоя: Composer «ушел в отказ»
С git pull всё прошло гладко, но установка зависимостей зависла намертво.
Проблема: Composer не мог достучаться до packagist.org. Просто бесконечный таймаут, вызванный нестабильностью сетевых маршрутов.
Решение: Поддержка SpaceWeb не стала отписываться «проблема на вашей стороне», а сразу дала адрес HTTP-прокси.
Дело одной команды:
export HTTPS_PROXY=http://proxy.host:port
composer install
(Для Windows: set HTTPS_PROXY=...)
Мораль: При деплое на российские площадки проверяйте доступность packagist.org (curl -v https://packagist.org). Если висит - просите прокси у хостера, не тратьте время на Composer.
Итоги
Зеркало sqltest-online.ru работает. Гибридная схема спасает: пользователи получают быстрый интерфейс без VPN, а запросы улетают на проверенный бэкенд.
Я верю, что образование должно быть доступным. Если для практики SQL нужно включать VPN и ждать по 10 секунд - человек не будет учиться. Зеркало .ru - мой способ сказать: «Продолжайте практиковаться».
А как вы деплоите зависимости на RU-площадки? Используете прокси, зеркала или есть решения изящнее?
* P.S. Ссылки на SpaceWeb и Contabo в статье - реферальные. Сервисами пользуюсь сам и смело рекомендую, а бонусы пойдут на оплату серверов проекта.
Обновили Yandex Cloud Video — облачную платформу для управления видеоконтентом

Cloud Video — сервис на базе видеоплатформы Яндекса, созданной командой Yandex Infrastructure. В новой версии появились возможности для защиты и быстрой обработки контента. Теперь можно добавлять логотипы в видео, загружать ролики с других площадок и управлять задержкой и стабильностью видеопотоков.
Защита контента
В Cloud Video появилась возможность добавлять логотипы в загруженное видео. Это позволит защищать контент от переиспользования и применять новые сценарии для брендирования и рекламы.
Стабильный и быстрый просмотр без задержек
Появились возможности самостоятельно управлять задержками онлайн‑трансляций и настроить мониторинг стабильности сигнала, чтобы отслеживать его в процессе эфира. На графиках можно увидеть, были ли проблемы с сигналом трансляции в конкретный момент времени.
Также видео можно выкладывать быстрее — загрузка не задержится из‑за транскодирования. Контент загрузится в оригинальном качестве, а система будет обрабатывать его параллельно.
Новые интеграции
Теперь можно переносить видеоконтент с других хостингов через службу поддержки. Для вузов и образовательных компаний появилась возможность внедрять плеер в LMS‑системы. Это поможет быстрее интегрировать видеоконтент в программы онлайн‑обучения.
Пока везут в Zed нативный diff выделенных кусков кода, с подсветкой, преферансом и барышнями, мы будем пить то, что есть 😁
Скрипт намбер ван:
#!/bin/bash
FILE1="/tmp/clp.saved"
# xclip -o -selection primary > "$FILE1"
wl-paste --primary > "$FILE1"
notify-send "Diff" "Первый фрагмент сохранён"вешаем на одно сочетание клавиш (у меня, например, для удобства, Alt+Shift+1)
(выбираем на вкус для X11 или Wayland)
Скрипт намбер ту:
#!/bin/bash
FILE1="/tmp/clp.saved"
FILE2=$(mktemp /tmp/clp.XXXXXX)
trap 'rm -f "$FILE2"' EXIT
# xclip -o -selection primary > "$FILE2"
wl-paste --primary > "$FILE2"
if [ ! -s "$FILE1" ] || [ ! -s "$FILE2" ]; then
notify-send "Ошибка" "Нет текста для сравнения"
exit 1
fi
meld "$FILE1" "$FILE2"вешаем на другое сочетание клавиш (у меня, например, Alt+Shift+2)
Изолента и реактивный двигатель — вот всё, что нам нужно. Лучше, чем ничего, по крайней мере…
Первый скрипт сохраняет выделенный текст во временный файл /tmp/clp.saved.
Второй скрипт сохраняет выделенный текст в другой временный файл /tmp/clp.XXXXXX, открывает их оба в нашем любимом Meld, мы на всё это дело любуемся, сравниваем, закрываем Meld, после чего скрипт удаляет этот второй временный файл со случайным постфиксом, чтобы не болтался зря. Первый, /tmp/clp.saved пока остаётся, чтобы было удобно с одним и тем же «первовыделенным» сравнивать несколько вариантов, и его всегда можно переопределить первым скриптом.
Итого: Выделили кусок, Alt+Shift+1, выделили другой кусок, Alt+Shift+2 — смотрим, радуемся! 😁

💥 Новое в Gramax💥
Gramax Enterprise Server:
Новая кнопка входа в приложение. Кнопка входа теперь на главной странице в правом верхнем углу.
Уведомления. Появились уведомления об изменениях в статьях. После публикации изменений пользователи видят их на главной странице портала для чтения: в ленте новостей и во всплывающем уведомлении в правом нижнем углу.
Новый вид настроек для проверок по стайлгайду. Теперь проверки вынесены в панель администрирования: Модули → Стайлгайд.
Шаблоны для экспорта без ограничений. В настройках пространства убрали ограничение на количество шаблонов Word и PDF.
Другие улучшения:
Улучшения поиска. Добавили возможность поиска только по разделу и статье. Также теперь в поиске показывается контент из диаграмм и лучше учитывается структура таблиц.
Неподдерживаемые форматы в предпросмотре. Раньше в окне предпросмотра можно было открывать только изображения и диаграммы. Теперь для остальных файлов появилась кнопка Открыть в поддерживаемом приложении — при ее нажатии файл откроется во внешнем приложении.
Превью PPTX-файлов. В редакторе и на портале можно открыть презентации в режиме предпросмотра.
Сжатие изображений. Теперь изображения при вставке автоматически сжимаются, поэтому каталог занимает меньше места и работает быстрее. Включить эту возможность можно в экспериментальных функциях.
Подробнее об изменениях читайте в статье — https://gram.ax/resources/docs/whats-new
Не особо интересный пост.
Я все еще считаю, что стартап — это весело 🐙
Наша разработка hardware продукта напрямую связана с софтом. В нашем случае умный датчик качества воздуха Atmy, становится по настоящему “умным” в связке с целой экосистемой в виде интеграций ML моделей, системы подтверждения качества данных Atmy Trust Rating (хочу об этом написать отдельно позже), токенизации, веб-сайта и приложения для управления устройством.
Всю эту архитектуру приходиться менять практически в real-time. Поймал себя на ощущении, что уже немного вышел в пограничное состояние. Дни заканчиваются не вечером, а как-то плавно перетекают в следующий день. Иногда в голове уже слышен характерный «треск» старого жесткого диска. Но самое странное — мне это нравится. Потому что именно сейчас добрался до тех вещей, которые годами откладывал «на потом, когда будут ресурсы».
Спойлер 👀: ресурсов никогда не будет хватать.
Приведу вам пример того, как мы работаем над платформой atmy.ai
Наша платформа раскладывается на три уровня:
↖️User product ← сейчас мы здесь
Какой воздух вокруг меня?
↖️Device management
Как живут мои станции?
↖️Data intelligence
Дай аналитику, API, выгрузки и объясни, что вообще происходит.
Объем большой. Мы реализуем функционал, которого еще не существует, поэтому выбрали работу по уровням и с быстрым тестированием:
накрутить идеи на максимум → быстро обкатать → выкинуть лишнее → остальное в прод и допиливать API
На практике это выглядит так:
появилась идея → накидываем проект в Figma (важно визуальное, так как делаем для людей) → дорабатываем за пару дней MPV через Cursor → тестируем → а далее либо удаляем без сожалений / либо сразу на git программистам.
Из того, что уже долетело до продакшна:

— Atmy Data Hub
Место, где наконец появилась нормальная аналитика по стране и миру. Скачивание графика по клику или скачать готовый csv файл. Графики, которых мне самому отчаянно не хватало в начале пути, когда заинтересовался экологией в своем городе.
— Режим “Мониторинг”
Внутри я его называю «око Саурона». По клику кнопки “Мониторинг” переходишь в этот режим сразу с карты, где “сейчас” находишься — и просто наблюдаешь за динамикой изменения воздуха в реальном времени. Все элементы в большем масштабе для удобного считывания с расстояния, обновление происходит практически real-time.
Есть ещё несколько фич, но их судьба пока под вопросом.
Например:
Мы тестируем гибридный режим (CAMS+AirMap Local) отображения глобального слоя pm2.5 CAMS совмещенный с локальными данными с земли, чтобы достичь максимальной актуальности данных. Здесь много математики и это тоже очень увлекательно.
И это всё — только первый слой.
В общем, путь, как обычно, не самый простой. Но, кажется, именно так и должно быть в любом стартапе
Больше картинок и общения в нашем маленьком чате разработки телеграм: https://t.me/atmyhub

Вместе с сообществом Moscow JS приготовили классную программу с двумя потоками докладов про:
performance и масштабирование фронтенда,
внедрение LLM в продукты и процессы,
изменение инженерной практики и культуры
От X5 Tech — сразу два прикладных кейса:
Как внедрять LLM в прод без перестройки архитектуры
Web-First в мобильных приложениях: офлайн, файлы, Workbox и ключевые подводные камни
Для тех, кто хочет поучаствовать в дискуссии — круглый стол с холиварами про переход на «бигтех-рельсы».
📆 30 апреля, 18:30
Москва, Мясницкая, 13, с20
Программа:
«Перформанс без головной боли: Системная оптимизация фронтенда в большой команде» (Мирзоев Руслан, Premier.one)
Доклад основан на реальном опыте команды из 24 разработчиков, столкнувшихся с критическими показателями LCP. Мы разберем комплексный подход к ускорению продукта: от «фундамента» (анализ бандла, Tree Shaking и борьба с циклическими зависимостями) до продвинутых стратегий рендеринга, таких как ISR и оптимизация внутренних запросов при SSR (перевод на internal hosts).
Вы получите набор готовых рецептов по работе с ассетами (SVG, шрифты, сжатие) и узнаете, как выстроить культуру производительности с помощью Performance Budgets, чтобы предотвратить регрессии в будущем
«Веб-компоненты: плохая реализация хорошей идеи» (Евгений Кучерявый, larana.tech)
Разберёмся, почему веб-копмоненты не прижились, что нужно сделать, чтобы это исправить, и есть ли им место в современной фронтенд-разработке.
«LLM в продакшене: от идеи до внедрения за неделю» (Артем Шкуренко, Х5 Tech)
Интеграция языковых моделей в существующие продукты не требует масштабных изменений архитектуры. Покажу практические паттерны — от прямой интеграции через API до выделенных сервисов, которые позволяют запускать AI-функциональность за считанные дни.
В докладе — реальные кейсы: интеллектуальные таблицы, ассистенты и аналитика, а также разбор ключевых вызовов — контроль качества, предсказуемость результатов и стабильность работы.
«Вторая жизнь инженерных практик: как ИИ делает сложные подходы наконец-то удобными» (Вадим Царегородцев, Frontend Guild Lead в островке)
За последние годы индустрия накопила множество инженерных практик: ADR, Clean Architecture, TDD, архитектурные границы, строгие правила зависимостей.
Многие из них отличные на уровне идей, но на практике часто оказываются слишком дорогими и трудоёмкими: требуют много документации, boilerplate-кода и ручного контроля правил.
Появление LLM меняет эту ситуацию.
Интересно, что ИИ не столько создаёт новые подходы, сколько делает жизнеспособными старые идеи, которые раньше было сложно применять из-за высокой стоимости их поддержки.
В докладе я покажу несколько реальных примеров из production-разработки, где привычные инженерные практики получили вторую жизнь благодаря ИИ.
«А доки где? Пишем продуктовую документацию» (Егор Левченко, Wildberries & Russ)
У вас самый крутой уникальный продукт или сервис на рынке, вы знаете наверняка, что он делает и как им пользоваться. А понятен ли он вашему клиенту? Надо написать документацию, но как? Давайте разберёмся, чтобы потом не было больно.
«Секретная жизнь фотографий в Клубе Тайных Покупателей X5» (Артур Басак, Х5 Tech)
Поговорим о подходе Web-First в мобильных приложениях. В частности о том, как работать с файлами, про удобство и ограничения Workbox, нюансы оффлайн-режима и о какие подводные камни можно споткнуться.
Инженерная культура и переход на «бигтех-рельсы»
Круглый стол с экспертами: Глеб Михеев, Роман Троицкий (состав уточняется…)
Модератор: Иван Сизов, техлид фронтенд X5 Digital
5 демо-уроков апреля для тех, кто хочет роста в ИТ

Привет, Хабр. Эти уроки проводят преподаватели курсов Отус в преддверии старта новых потоков. На них можно узнать о формате обучения, пообщаться с экспертами и заодно закрыть пробелы в знаниях по интересующей теме. Участие бесплатное. Присоединяйтесь.
9 апреля, 20:00. Angular без RxJS? Пишем реактивные формы на сигналах
Открытый урок курса «Angular-разработчик»13 апреля, 20:00. Flutter GenUI: когда ИИ-агент собирает ваш интерфейс
Открытый урок курса «Flutter-разработчик»15 апреля, 18:00. Основы протокола HTTP
Открытый урок курса «Проектирование API»20 апреля, 20:00. От интерфейса до корзины: создаём мини интернет-магазин на языке JavaScript
Открытый урок курса «JavaScript-разработчик. Базовый уровень»21 апреля, 20:00. Архитектура Angular-приложения: как писать масштабируемый frontend
Открытый урок курса «Angular-разработчик»
Полный список бесплатных уроков апреля смотрите в дайджесте.
Будет слишком по девчачьи сказать, что я плакала из-за код ревью?
Это было года три или четыре назад, когда я ещё не нашла общий язык со своим новым тех.лидом. Тогда много всего накопилось, и каждый новый комментарий, хоть он и был очень корректным, ощущался как еще один удар сверху. Помню было что‑то из серии: «Тут надо изменить нейминг».
Ничего такого, вроде все ок. Но я смотрела на него и зависла в моменте: а что именно не так то? Есть какие то правила в новой команде, о которых я еще не знаю? Нужно переименовать только эту переменную или мне нужно пройтись по всему файлу?
Начинаешь писать ответ, ждешь уточнения, потом опять ответ... В какой то момент я просто закрыла ноут и разревелась. Я уже находилась в состоянии нервного клубка и такие комментарии добивали больше, чем любой жёсткий разнос.
Но самое забавное, спустя время я пересмотрела старые ПР и поняла, что мой техлид был максимально корректным и без токсичности. Просто я уже была на грани выгорания и каждый комментарий превращался в испытание.
Мне захотелось поделиться своими мыслями на тему код-ревью, о том как формулировки влияют на скорость работы и состояния людей:
Если хоть раз сидел и думал: «что от меня тут вообще хотят?» — ты точно поймёшь :)
Мы привыкли воспринимать DevTools как инструмент для разработчиков и тестировщиков. Но на практике это хороший источник информации и для других специалистов: через него можно понять, как устроена страница, где возникают проблемы и как интерфейс ведет себя в разных сценариях.
Попросили Костю, frontend-разработчика Naumen, рассказать, какие возможности DevTools он использует в работе и на что стоит обращать внимание.

1️⃣ Как открыть DevTools, если F12 не сработал
Самый простой способ — клавиша F12 для Windows/Linux. На macOS сочетание отличается, но открыть DevTools можно не только с клавиатуры.
Например, через контекстное меню — нажать правой кнопкой мыши на элемент страницы и выбрать «Исследовать элемент». DevTools откроются сразу на нужном месте.
Иногда DevTools пытаются ограничить на уровне страницы, и стандартный способ не работает. В таких случаях выручают браузерные расширения с похожими возможностями.
2️⃣ Как работать с версткой во вкладке Элементы
Вкладка Элементы показывает DOM-дерево страницы — структуру документа, из которого собран интерфейс.
Здесь можно:
навести курсор на элемент и посмотреть, где он находится на странице
быстро найти нужный блок через селектор
посмотреть размеры, фон и отступы
А еще можно посмотреть доступность — как элементы переключаются через Tab.
3️⃣ Как находить итоговые стили
Если у элемента много CSS-правил, я перехожу во вкладку Вычисленные.
Там собраны все итоговые стили элемента — включая те, что пришли через наследование или заданы браузером. Можно быстро найти нужное свойство, например, border-radius, и понять, какое значение реально применяется.
4️⃣ Как проверять изменения без правок в коде
Элементы можно менять прямо в браузере: редактировать текст, менять цвет, удалять элементы или добавлять их — можно вручную вставить длинный текст и посмотреть, не ломается ли верстка.
После обновления страницы все возвращается как было.
5️⃣ Как разбирать запросы во вкладке Сеть
Во вкладке Сеть видно, какие запросы отправляет страница и что приходит в ответ. А еще в этой вкладке есть не только список запросов, но и инструменты для фильтрации, поиска и просмотра этапов выполнения. Если нужно исключить что‑то из поиска, можно использовать инверсию или минус в строке фильтра.
Также можно сохранить HAR-файл и передать его разработчику — в нем будет вся история сетевых запросов. Но в HAR попадут только те запросы, которые видны с учетом текущих фильтров.
6️⃣ Как подменять ответ бэка
В DevTools можно изменить ответ запроса и посмотреть, как на него отреагирует интерфейс.
Я использую это, когда нужно проверить нестандартный кейс. Например, подставить более длинный текст или другие данные и посмотреть, что произойдет на странице.
7️⃣ Как проверять работу при медленном интернете
DevTools позволяют проверить, как работает интерфейс при плохом соединении. Во вкладке Сеть можно:
выбрать готовые профили — 3G, 4G
настроить собственную скорость сети
протестировать поведение приложения в режиме офлайн
8️⃣ Как работать с локальными данными
Во вкладке Приложение можно посмотреть данные, которые браузер сохраняет на стороне пользователя:
Локальное хранилище — данные, которые сохраняются надолго и не исчезают после перезагрузки страницы.
Сессионное хранилище — данные, которые живут только пока открыта вкладка.
Файлы cookie — похожи на локальное хранилище, но у них есть срок жизни и дополнительные ограничения по источнику.
Все это можно просматривать, изменять и очищать.
9️⃣ Как менять геолокацию и часовой пояс
DevTools позволяют изменить геолокацию и часовой пояс, не меняя настройки операционной системы.
Можно выбрать готовую точку или указать координаты вручную. Полезно, когда нужно проверить поведение элементов в другом городе, регионе или стране.
🔟 Как записывать пользовательские сценарии
Инструмент Регистратор умеет записывать действия пользователя на странице — фиксируются шаги, например, клики и переходы по интерфейсу.
После записи сценарий можно воспроизвести, отредактировать, сохранить и отправить коллегам.
Как стать тестировщиком?
Тестирование — востребованная специализация, в которую зайди гораздо проще, чем во многие другие направления в IT. Но как только начинаешь разбираться, быстро сталкиваешься с проблемой: информации слишком много и непонятно, что и как учить в первую очередь.
Чтобы не тратить время на поиски курсов, заглядывайте на Хабр Карьеру — там уже собраны актуальные учебные программы по всем основным инструментам тестировщика:
— Chrome DevTools. Тестирование и оптимизация веб-страниц.
— Postman. Тестирование API.
— Grafana. Визуализация данных и мониторинг.
— Selenium WebDriver. Эмуляция действий пользователя.
— JUnit. Модульное тестирование.
— SQL. Работа с базами данных.
Ближайшие события
Solid.js должен был исправить React…но доказал, что React был прав
Все ругали React за массивы зависимостей, странные хуки и непонятные стадии рендеринга. Возникало чувство, что они усложнили фронтенд и добавили в него отложенную реакцию. Команда Solid.js решила это исправить: убрать лишние рендеры и магию по капоту. Идея была проста — использовать реактивность. Solid создавался, чтобы заменить React, но когда они работали над второй версией, тут они уперлись в проблему, которую невозможно решить — ассинхронность.
Представьте: одни данные загрузились, другие ещё нет. Что покажет интерфейс? Фейковый фронтенд, который обманывает пользователя. React решал это с помощью отложенного обновления. Тогда Solid решили встроить ассинхронность прямо в реактивность. Появилось управление загрузкой, ожиданием и обновлениями — реактивность как она есть. Становится понятно, что и та, и та команда приходят к одному выводу с разных сторон, но Solid делает ее частью системы, засовывает ассинхронность прямо в реактивность и внезапно оказывается, что React не был таким уж и плохим дизайном, просто команда React-а пришла к этой проблеме гораздо раньше, чем остальные.
И главный вопрос: что важнее — устоявшийся подход React или более чистая, но сложная реактивность Solid? Или дело вовсе не в фреймворке, а в том, как ты управляешь асинхронностью?
https://dev.to/playfulprogramming/two-react-design-choices-developers-dont-like-but-cant-avoid-d6g
Я так и не смог понять логику фильтра ленты (почему материалы скрытых авторов отображаются в «Другие новости» и «Другие статьи»?), поэтому с целью сохранения позитивного настроения написал свой фильтр для uBlockOrigin (добавлять в My filters, имена вымышлены, совпадения случайны — без сарказма):
habr.com##:is(article.tm-articles-list__item, li.tm-bordered-card):has(a.tm-user-info__username:is([href*="PropagandaTV"], [href*="SpammersInc"], [href*="AISlop"]))В отличие от Stylus, uBO требует перезагрузки страницы после каждого изменения фильтров. Если же воспользоваться Stylus, то, понятное дело, надо дополнительно дописать к селектору тело { display: none; } и привязать правило к домену.
Во избежание коллизий для коротких имён рекомендуется заменять [href*="UserName"] на более длинный, но однозначный [href="/ru/users/UserName/"].
Какие навыки развивать, чтобы прокачиваться в английском языке?
Исследования в области изучения языков показывают: интегрированный подход — когда аудирование, чтение, письмо и говорение развиваются одновременно — даёт более высокий результат, чем фокус на одном навыке. Поэтому к изучению английского нужно подходить комплексно — прокачивать навыки в связке, но уделять особое внимание тем сферам, которые у вас проседают.
Освоить язык проще, если учиться по структурированной программе — например, подобрав курс на Хабр Карьере под свои конкретные цели. Выбирайте направление и погнали учиться:
— Аудирование. Понимание речи на слух.
— Чтение. Расширение словарного запаса.
— Грамматика и лексика. Корректное построение предложений.
— Письмо. Структурирование языка.
— Говорение. Умение быстро формулировать мысли.

Приглашаем на вебинар по frontend разработке
26 марта эксперты AXENIX проведут вебинар, посвященный современной фронтенд архитектуре и гибким подходам к разработке.
🔘Разберем реализацию подхода Server Driven UI и рассмотрим, как эффективно интегрировать в него ИИ-агентов.
🔘Поговорим о долгосрочном здоровье проекта и преимуществах изоляции бизнес-логики от фреймворков на примере Feature-Sliced Design (FSD) и реальном опыте перехода на Effector.
🔘Проведем анализ гибридных решений: как из единой кодовой базы собирать и облачный сервис, и десктопное Electron-приложение с офлайн-режимом, преодолевая ограничения браузерной среды.
Участие в вебинаре бесплатное, необходимо только зарегистрироваться по этой сcылке и подключиться к нам 26 марта в 18:00.
Будет интересно!

Гибкое управление фокусом элемента
Chrome в 145 версии добавил параметр focusVisible в метод focus:
input.focus({ focusVisible: true });
Как вы уже, наверное, догадываетесь, это позволяет самостоятельно управлять тем, будет ли элемент при ручном вызове фокуса, помимо CSS-псевдокласса :focus, соответствовать ещё и :focus-visible.
Ранее без данного параметра браузер самостоятельно решал этот вопрос.
⚙️ Поддержка браузерами широкая
🔗 Мой телеграм канал
Сделал тут небольшое приложение для прослушивания музыки из сине белой соцсети
• бесплатно
• без рекламы
• с офлайн режимом
• не нужно скачивать
Актуально больше всего для ios, так для андроидов есть всякие vkX, но при этом моё приложение не требует авторизации
Написано на $mol
P.S. Закрепите на рабочем столе как веб приложение
P.P.S Если актуально и нужны новые функции, сделаю за небольшой Донати

🌟 505 звездочек на GitHub у российского Open Source-проекта 🌟

И ровно 505 участников в комьюнити. Друзья, спасибо, что вы с нами 💝
Gramax — это база знаний для ИТ-команда и платформа для документации. Присоединяйтесь к сообществу лучших практик документирования!
Узнать о Gramax — https://gram.ax/ru
Поставить звездочку на GitHub — https://github.com/Gram-ax/gramax
Вступить в комьюнити — https://t.me/gramax_chat