uz
Feedback
Будни разработчика

Будни разработчика

Kanalga Telegram’da o‘tish

Блог Lead JS-разработчика Автор: @bekharsky По рекламе: https://telepost.pro/ch/id2415 или https://t.me/it_adv Чат: https://t.me/htmlshitchat №5001017849, https://www.gosuslugi.ru/snet/679b74f8dad2d930d2eaa978

Ko'proq ko'rsatish

📈 Telegram kanali Будни разработчика analitikasi

Будни разработчика (@htmlshit) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 14 364 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 8 989-o'rinni va Rossiya mintaqasida 46 552-o'rinni egallagan.

📊 Auditoriya ko‘rsatkichlari va dinamika

невідомо sanasidan buyon loyiha tez o‘sib, 14 364 obunachiga ega bo‘ldi.

03 Iyun, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -94 ga, so‘nggi 24 soatda esa -2 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.

  • Tasdiqlash holati: Tasdiqlanmagan
  • Jalb etish (ER): Auditoriya o‘rtacha 11.55% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 6.68% ini tashkil etuvchi reaksiyalarni to‘playdi.
  • Post qamrovi: Har bir post o‘rtacha 1 659 marta ko‘riladi; birinchi sutkada odatda 960 ta ko‘rish yig‘iladi.
  • Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 14 ta reaksiya keladi.
  • Tematik yo‘nalishlar: Kontent css, api, scroll, --fade, bottom kabi asosiy mavzularga jamlangan.

📝 Tavsif va kontent siyosati

Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
Блог Lead JS-разработчика Автор: @bekharsky По рекламе: https://telepost.pro/ch/id2415 или https://t.me/it_adv Чат: https://t.me/htmlshitchat №5001017849, https://www.gosuslugi.ru/snet/679b74f8dad2d930d2eaa978

Yuqori yangilanish chastotasi (oxirgi ma’lumot 05 Iyun, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.

14 364
Obunachilar
-224 soatlar
-217 kunlar
-9430 kunlar
Postlar arxiv
#фишка дня Аккордионы и прочие схлопывающиеся сценарии. Скажи, как ты их анимируешь, и я скажу, кто ты. Если ты их до сих пор анимируешь через max-height, скорее всего, ты — LLM-ка, которая застряла где-то там. Ну буквально, только что сессию демонстрационную проводил. Согласен, height ещё плохо анимируется в auto, хоть и появился interpolate-size. Но ведь гриды никто у нас не отбирал! Да-да, давненько я не напоминал, что гриды прекрасно анимируются и что уже давно не нужны извращения. Но сегодня я пришёл с маленьким дополнением. Все же в курсе, что классика — одна строка грида и 0fr ↔ 1fr?

.accordion-panel {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows 0.28s ease;
}
.accordion-panel[data-open="true"] {
  grid-template-rows: 1fr;
}
.panel-inner {
  overflow: hidden;
  min-height: 0;
}
Внутренний блок клипится — высота анимируется без max-height: 9999px. А вот дополнение: в grid-template-rows можно и пиксели, и minmax(). Например, свёрнуто, но кусочек текста виден:

grid-template-rows: minmax(48px, 0fr); /* закрыто */
grid-template-rows: minmax(48px, 1fr); /* открыто */
Демонстрация: https://codepen.io/alinaki/pen/QwGryqN Первый аргумент в minmax — минимум, не максимум: 48px снизу, а не «не больше 48». Полное скрытие — по-прежнему 0fr. И да: padding на clip-слой не вешайте — только внутрь контента, иначе и под 0fr торчит, и при открытии прыгает. #css #grid #accordion

#статья дня Выпускник Школы анализа данных рассказал, как попасть на научную стажировку в ML. Степан Платинский работает в международном поиске Яндекса, а параллельно занимается экстремальной статистикой — разрабатывает нейросетевые модели для предсказания редких событий вроде наводнений и обвалов рынка. Исследования вывели его на стажировку в университет KAUST в Саудовской Аравии — один из топ-100 университетов мира. «Стажировка помогла понять, что наука существует не только на Физтехе. Важно выбираться из привычной среды, видеть другие университеты и другие подходы. У меня была возможность поработать с большой исследовательской группой, Ну и наконец, это сильная строчка в резюме: с таким опытом шансы поступить на PhD за границей заметно выше», — отмечает Степан. Сейчас его цель — создать универсальную статистическую модель для предсказания экстремальных событий. Тоже хотите получить международный опыт? Читайте советы Степана.

#статья дня Кармен Ансио написал отличный материал про CSS-функцию linear(). Она появилась уже довольно давно, но в реальных
#статья дня Кармен Ансио написал отличный материал про CSS-функцию linear(). Она появилась уже довольно давно, но в реальных проектах встречается редко — большинство по привычке ограничивается ease, ease-in-out и разными вариантами cubic-bezier(). Причина понятна: обычно linear() воспринимают как способ вручную задать несколько точек на кривой анимации. Не самый удобный инструмент и не очень понятно, зачем он вообще нужен. Ансио показывает гораздо более интересный сценарий. Если заранее рассчитать движение какой-нибудь физической системы — например, пружины — то результат можно представить как последовательность значений и скормить её linear(). Браузер потом просто воспроизведёт эту траекторию.

.card {
  transition:
    transform 647ms
    linear(
      0, 0.04, 0.15, 0.30,
      0.46, 0.59, 0.69,
      0.75, 0.79, 0.80
      /* ... */
    );
}
Автор начинает с модели затухающей пружины, показывает уравнение, объясняет параметры системы и сопровождает всё это интерактивными примерами. Можно менять коэффициенты и сразу видеть, как меняется движение. В общем, если у вас есть модель движения и набор точек, CSS уже умеет её воспроизводить. Короче, linear() — это вам не это. Ссылка ещё раз: https://www.carmenansio.com/articles/spring-physics-css #css #easing #spring #linear

#такое дня Знаменитое внимание компании Apple к деталям. И это в 2026 году, когда у нас даже The CSS anchor positioning API имеется... #apple #anchor

IT-сфера снова переживает бурные времена. AI-технологии влияют на классические подходы, а компании, которые не успевают адаптироваться - теряют позиции. В этой ситуации решает не количество информации, а её качество. Мы собрали папку каналов для тех, кто не просто «следит за трендами», а реально работает с цифрами, тестирует AI инструменты и адаптирует свои процессы под новые реалии. Только практические советы и реальные кейсы👇🏻 Сохранить папку 📨 Доступно 48 часов❗️

#баг дня В Chrome 147 случилась регрессия. Всем известно, что input type="number" реагирует на колесо мыши, это никогда не было проблемой, потому что браузер прекрасно понимал, когда случится прокрутка страницы и отменял событие. Но вот, случилось что случилось: https://issues.chromium.org/issues/508306805 Демо: https://jsfiddle.net/7389xv1z Исправление приземлится только в Chrome 150, так что если вас заденет... работаем по-старинке:

input.addEventListener('wheel', e => e.preventDefault(), { passive: false });
#chrome #bug

Так, не прошло и месяца (на самом деле, конечно, прошло), а я выкатил небольшое будущее обновление к пульту! Итак, теперь я поддерживаю Android/Google TV. К сожалению, оттестировано только на паре телевизоров Sony, так что я буду благодарен любым инсайтам. Пришлось попотеть, потому что вместо протокола SSDP телевизоры ищутся по mDNS. А это значит никакого широковещания, только мультикаст. А это значит, письмо в Apple с разъяснениями, получение разрешения, обновление конфига сборкию... Общение с телевизором тоже происходит оригинально — через бинарный формат protobuf, всё как у взрослых. В общем, у кого есть айфоны и телевизоры на Android TV — ссылка на TestFlight: https://testflight.apple.com/join/XXPPYAHN У кого Android-телефоны, могу скинуть APK 🙂 Просьба всё та же — включить логи, попробовать, прислать мне. Никаких данных автоматически не собирается. Спасибо, котаны!

#инструмент дня В прошло мгоду я уже показывал, как удаление фона с изображений постепенно переезжает прямо в браузер: https:
#инструмент дня В прошло мгоду я уже показывал, как удаление фона с изображений постепенно переезжает прямо в браузер: https://t.me/htmlshit/3797 Тогда речь шла про Transformers.js и WebGPU — мол, многие ML-задачи уже спокойно работают локально, без серверов и сервисов. Теперь вот наткнулся на removerized: https://github.com/yossTheDev/removerized Это открытый AI image toolkit, который целиком работает в браузере. Под капотом — ONNX Runtime Web, WebGPU и client-side inference. То есть модели запускаются прямо у вас на устройстве, без отправки изображений на сервер. Из того, что есть сейчас: — удаление фона — апскейл изображений — пакетная обработка — офлайн-режим — кэширование моделей — расширенные настройки А главное, работает. Демо: https://getremoverized.yoss.pro/removerized Да, кстати. ONNX Runtime Web — это браузерный рантайм для запуска ML-моделей через ONNX. Если очень грубо: штука, которая позволяет запускать нейронки прямо в браузере через WebGPU/WebAssembly, без Python, CUDA и отдельного бэкенда. Сайт: https://onnxruntime.ai/docs/get-started/with-javascript/web.html GitHub: https://github.com/microsoft/onnxruntime #ai #opensource #webgpu #ml

Не удержался.
Не удержался.

#фишка дня Есть пропозал, который предлагает добавить в canvas возможность напрямую использовать результат рендера DOM-элемента. Вот: https://wicg.github.io/html-in-canvas/ Он вводит метод drawElementImage(): ты передаёшь HTML-элемент, браузер сам делает для него layout, применяет стили и рассчитывает текст, а затем этот уже готовый результат можно рисовать в canvas. В отличие от текущих подходов вроде html2canvas, здесь не происходит пересборки DOM в изображение вручную. Используется нативный рендеринг браузера, поэтому сохраняются точность текста, layout и поведение, которое уже есть в DOM. В Chrome это уже можно попробовать через флаг: chrome://flags/#canvas-draw-element Собственно, это уже вполне себе рабочая реализация! А в качестве примера сегодня — библиотека Liquid DOM. Ага, очередной Liquid Glass! Только очень красивый и рабочий: https://github.com/AndrewPrifer/liquid-dom Демо: https://liquid-dom-showcase.vercel.app/ Потрясающая штука получается. И примеров использования уже полно! Но, как обычно, ждём другие браузеры :( #canvas #webgl

Вебинар «Быстрый запуск AI-сценариев с vGPU» 21 мая эксперт VK Tech в прямом эфире покажет, как использовать облачные GPU, чт
Вебинар «Быстрый запуск AI-сценариев с vGPU» 21 мая эксперт VK Tech в прямом эфире покажет, как использовать облачные GPU, чтобы сэкономить на аренде полного объема ресурсов GPU. Регистрируйтесь, чтобы узнать: — какие сценарии бизнеса закрывают GPU VK Cloud, — как выбрать видеокарту или кластер GPU под свою задачу, — когда аренда доли GPU выгоднее целой карты, — где прячется реальная выгода при использовании vGPU. Во время вебинара мы развернем виртуальную машину с vGPU и покажем, какую пользу бизнесу могут принести эмбеддинговая модель и модель высокоэффективного распознавания текста и анализа документов. Вы узнаете, как быстро поднять виртуальную машину, выбрать профиль vGPU под задачу и подготовить среду для ML-работы. Регистрируйтесь и смотрите трансляцию 21 мая в 17:00. Зарегистрироваться

#фишка дня Я не думал, что доживу, но, похоже, скоро можно будет вписывать текст в контейнер без хаков с vw/vh и даже без скриптов. Сразу пример (нужны флаги! ниже): https://codepen.io/cssgrid/pen/emBZzPL Фича называется text-fit. Это часть экспериментального CSS (обсуждается в рамках CSS Text / Sizing), и идея тут очевидна: вписать текст в контейнер. Вот спека в процессе: https://drafts.csswg.org/css-text-4/#text-fit-property Пока это всё работает только за флагом chrome://flags → Experimental Web Platform features. Но уже хорошо же! #css #text #fit

#заметка дня А помните (конечно же помните!) как мы с вами обсуждали CSS Custom Highlight API для реализации подсветки кода? Ну вот же, положила: https://t.me/htmlshit/2715 Так вот, а почему бы не объединить подсветку CSS с поиском по тексту? Ну в самом деле, интересно же, как это реализовано, например, в текстовых редакторах или браузерах при поиске по странице. Хотя бы на минимальном уровне. А реализовано это через, простите, обход дерева! Алгориииииитмы Ладно, нам не придётся самим писать обходчик, он уже имеется! Вот: https://developer.mozilla.org/en-US/docs/Web/API/Document/createTreeWalker Главное — это понять, какой параметр фильтрации узлов передать. Ведь объектная модель документа она не только из тегов состоит, там как минимум параллельно идут атрибуты, текст, комментарии... Нам незачем искать вообще по всему. Ну в нашем случае всё просто: NodeFilter.SHOW_TEXT — ищем по текстовым нодам, словам. Ну а дальше всё просто: проверяем регуляркой на совпадения и запускаем подсветку. Уж это за нас теперь может и браузер делать: https://codepen.io/alinaki/pen/zxvPbRJ Да, теперь можно и ваших камтомных селектах красиво подсветить результат фильтрации. Пользуемся, котаны. #css #highlight

Поздравляем, вы на 1 шаг ближе к работе мечты 🥳 Осталось только прочитать этот пост, подписаться на канал и откликнуться на
Поздравляем, вы на 1 шаг ближе к работе мечты 🥳 Осталось только прочитать этот пост, подписаться на канал и откликнуться на вакансию 😉 Avito Career* — место, где Авито делится актуальными вакансиями и стажировками для бэкенд-разработчиков. Подписывайтесь, чтобы найти ту самую работу ✨ *карьера

#статья дня GitHub выкатил отличный пост о том, как они ускоряли рендеринг диффов в пулл-реквестах (исконно русские слова) —
#статья дня GitHub выкатил отличный пост о том, как они ускоряли рендеринг диффов в пулл-реквестах (исконно русские слова) — и внезапно выяснили, что браузеру становится плохо, когда в PR десятки тысяч строк. Вот ссыль сразу: https://github.blog/engineering/architecture-optimization/the-uphill-climb-of-making-diff-lines-performant/ Главная проблема оказалась в том, что каждая строка diff-а была маленьким React-стартапом: 8–13 компонентов, куча DOM-нод и отдельные event handlers почти на всё подряд. Старый подход выглядел примерно так:

<DiffLine>
  <LineNumber />
  <SyntaxHighlight>
    <Token />
    <Token />
  </SyntaxHighlight>
</DiffLine>
И конечно же:

<div
  onMouseEnter={...}
  onMouseLeave={...}
  onClick={...}
/>
Когда таких строк 10 000+, Chrome начинает потреблять память не в себя. А дальше случилось прекрасное: GitHub героически переоткрыл event delegation — технику, которую jQuery нормально объяснял ещё лет 15 назад. Оказалось, что один обработчик событий на контейнер внезапно быстрее, чем 30 тысяч onMouseEnter на каждую строку. Кто бы мог подумать. Новый вариант:

<table onMouseMove={handleHover}>
  <tr data-line="42">
    <td>const value = 1;</td>
  </tr>
</table>
function handleHover(e) {
  highlight(e.target.dataset.line)
}
В итоге GitHub выкинул 74% React-компонентов, почти вдвое снизил потребление памяти и ещё удалил пару лишних <code>-тегов из каждой строки, потому что 20 000 ненужных DOM-элементов — это всё ещё 20 000 ненужных DOM-элементов. Мораль истории максимально простая: abstraction is not free. Иногда один обработчик событий и туповатый плоский код работают лучше, чем архитектура мечты из 400 reusable-компонентов, custom hooks и трёх уровней composition. #github #react #virtualization

Вам нужно отправить 8 полей информации боту/форме. Каждое поле - это одно слово или число. 1️⃣ Разговорный - один вопрос за раз, вы отвечаете, появляется следующий. 2️⃣ Шаблонный - вы видите все 8 полей сразу, заполняете и отправляете одним сообщением.

#инструмент дня Раньше утилиты были максимально простыми. Открыл файловый менеджер, скопировал файл, переименовал, удалил. Или упаковал всё через PKZIP и перенёс дальше. Это были отдельные программы под конкретные действия, без лишней обвязки. Потом появился GUI, и инструменты начали разрастаться. Простые вещи превратились в громоздкие приложения с окнами, кучей настроек и аккаунтами. То, что раньше было секундным действием, стало местом, куда нужно специально заходить. Позже началось обратное движение к упрощению. Интерфейсы стали легче, а инструменты — более однофункциональными. Появились менюбарные утилиты, CLI-скрипты и маленькие инструменты под одну задачу. Я на этой волне решил сделать свой Color Picker, экранную пипетку: чтобы можно было брать цвет с любой точки экрана, собирать палитру и экспортировать в разных форматах. Получилась небольшая, но удобная утилита, которой уже даже пользуюсь. Вот: https://github.com/bekharsky/clrpkr И тут в разговоре мелькнула тема MCP (Model Context Protocol). Я подумал: а ведь таким вещам уже не обязательно жить как отдельным приложениям. Их можно вызывать прямо там, где работаешь — в Cursor, Claude, GitHub Copilot Workspace или VS Code. В итоге я вынес свой пикер в MCP tool: описал входы (координаты или изображение) и выходы (цвет, палитра, export), убрал интерфейс и оставил только функцию, которую можно вызывать напрямую. Пришлось повозиться, чтобы нормально отображался swatch выбранного цвета и чтобы всё стабильно работало, но в итоге получилось ровно то, что хотелось. Здесь, конечно, потоковая сущность общения с моделью не очень к месту, но уж как есть. Utilities are dead. Long live utilities. #mcp #llm #color

Совет на ближайшие годы — изучайте ВАЙБ-КОДИНГ ИИ уже пишет код, чинит баги, генерирует тесты, документацию и помогает запуск
Совет на ближайшие годы — изучайте ВАЙБ-КОДИНГ ИИ уже пишет код, чинит баги, генерирует тесты, документацию и помогает запускать продукты быстрее, чем это делали классические команды разработки. И это уже не "будущее когда-нибудь", а реальность, которая меняет рынок уже сегодня И те, кто научится вайбкодить сейчас, будут увереннее конкурировать на рынке и зарабатывать больше тех, кто по-прежнему делает всё вручную. Стартовать с нуля поможет канал Вайб-кодинг. Там ребята круглосуточно мониторят более 320 российских и зарубежных источников и публикуют только главное: релизы, инструменты, гайды, курсы и практические кейсы. Подписывайтесь, нас уже 35 тысяч: @vibecoding_tg

#фишка дня Итак, все мы знаем, что при добавлении скроллбара (если этот скроллбар, конечно, виден) у нас происходит сдвиг по
#фишка дня Итак, все мы знаем, что при добавлении скроллбара (если этот скроллбар, конечно, виден) у нас происходит сдвиг по фазе полей справа. Ну или слева, если вы араб. Но это же можно исправить! Используя правило scrollbar-gutter: stable можно зарезервировать место под скроллбар, не прибегая к иным методам вроде overflow: scroll (который буквально этот самый скроллбар заранее покажет, даже если он не нужен). Демо от Ахмада Шадида в его Defensive CSS: https://defensivecss.dev/tip/scrollbar-gutter/ Can I Use: https://caniuse.com/?search=scrollbar-gutter Поддержка в Chrome и Firefox. В Safari пока только в TP, но на Apple-устройствах скроллбары, как правило, скрыты и отображаются поверх контента, не занимая места. Выглядит это, правда, как дополнительный паддинг, но! Есть интересное но в виде scrollbar-gutter: stable both-edges, которое зарезервирует место под скроллбар, и такое же — на другой стороне. Что, в целом, избавит нас от разных паддингов. Раньше за похожее решение отвечало правило overflow: overlay, но его отменили в пользу gutter. Лучше всего это работает, впрочем, для попапов. Мало кого волнует скроллбар на тексте, а вот прыгающий body при появлении модалки — это уже перебор. #css #scrollbar #gutter

#такое дня Когда в следующий раз будете ворчать на коллегу за PR в 200 строк — вспомните это: https://github.com/oven-sh/bun/
#такое дня Когда в следующий раз будете ворчать на коллегу за PR в 200 строк — вспомните это: https://github.com/oven-sh/bun/pull/30412 Ментейнеры Bun, конечно, могут сколько угодно рассказывать нам о бессонных ночах в попытке отдебажить утечку памяти в Zig (будучи крупнейшим проектом на этом языке), но без этих ночей ничего бы не вышло. Штош. #rust #zig