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

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

@htmlshit

Блог Lead JS-разработчика
Автор: @bekharsky

По рекламе: https://telepost.pro/ch/id2415 или https://t.me/it_adv

Чат: https://t.me/htmlshitchat

№5001017849, https://www.gosuslugi.ru/snet/679b74f8dad2d930d2eaa978
Subscribers
14.4K
Photos
1.4K
Videos
406
Links
2.3K

Showing posts older than #4267 · Back to latest

Older Posts 20 shown
Post #4266 1.21K
#видео дня

Посмотрел выпуск 1×1 с Лёшей Остриковым о разработке ИИ-агентов. Во многом он подтвердил мои мысли о том, как трансформируется подход к работе.

С агентами важнее всего не сам код и даже не умение писать хороший запрос. Нужно понимать процесс, в который ты их встраиваешь: что человек делает шаг за шагом, где он застревает, какие данные использует, где ошибается и что считается эффективным результатом.

Если этого понимания нет, агент, скорее всего, сделает не то.

В выпуске это показано на примере поддержки водителей такси. Агент полезен не потому, что умеет красиво отвечать. Он видит, что водитель не может пройти регистрацию, анализирует экран, находит проблему и помогает завершить процесс.

То же самое с агентами, которые ищут информацию в коде, Wiki и документации. Их ценность не в том, что они «знают всё», а в том, что они встроены в рабочий контекст и сокращают путь от вопроса до решения.

Поэтому сейчас особенно нужны люди, которые умеют разобраться в работе бизнеса, разложить процесс на шаги и понять, где агент действительно поможет. Это касается не только разработчиков — такие процессы есть в любой профессии.

Мне близка и мысль Лёши про любопытство: не ждать идеальных курсов, а брать реальную задачу и пробовать.

Короче, начинать нужно не с вопроса «какой инструмент выбрать», а с вопроса «как устроена моя работа и что в ней можно сделать лучше».

#ai
  • ❤ 4
  • 🔥 1
Post #4265 1.14K
#заметка дня

Надоело сливать лимиты в Sol на каждую вторую задачу? А ты вообще смотрел, насколько дешёвые модели сейчас отстают от дорогих — и сколько при этом стоят?

Узнал от коллеги, что у Datacurve есть DeepSWE — очень наглядный график по агентам и моделям. Там 113 инженерных задач из реальных репозиториев: модель должна покопаться в проекте, найти нужный код, внести изменения и довести всё до рабочего состояния. Примеры задач тоже есть, кстати.

Наверху таблицы ожидаемо сидят самые сильные модели с результатом около 70–74%.

Но дальше...

GPT-5.6 Luna Max — около 67% за $0.61 на задачу.
GLM-5.3 Flash — около 63% за $0.24.

А модели с результатом на несколько пунктов выше могут стоить уже $6–12 за задачу.

То есть условно: получил не 73%, а 67%, зато заплатил в десять раз меньше.

Для многих задач такой разницы в качестве вполне можно не заметить, зато на сотнях запусков разница в цене будет очень даже заметной.

Тем более в агентных сценариях никто не мешает гонять дешёвую модель несколько раз, проверять результат тестами, а только провалы отправлять в Sol или Opus.

Я уже гоняю Luna в Extra High и Max и... доволен.

Так что вопрос уже не только в том, какая модель набрала больше баллов.

Смотреть надо ещё и на то, сколько стоили эти баллы.

https://deepswe.datacurve.ai/

#ai #comparison
  • 👍 8
  • ❤ 1
Post #4264 1.26K
#статья дня

Chrome DevTools умеет включать условный Slow 3G, и очень легко забыть, что это не совсем эмуляция реальной сети.

Throttling в DevTools работает на уровне HTTP-запросов, а настоящая сеть — на уровне пакетов. Из-за этого Chrome не очень точно воспроизводит TCP slow start, handshakes, приоритизацию трафика и вообще не умеет нормально симулировать packet loss. В итоге вполне реальна ситуация, когда 20 КБ картинка в DevTools грузится 12 секунд, а на близком к реальному 3G — 300–500 мс.

То есть для быстрого «а как оно будет на медленной сети» DevTools годится. Для замеров, на основании которых вы собираетесь что-то оптимизировать, — уже не очень.

У Ивана Акулова хороший короткий разбор, почему так происходит и чем тестировать вместо этого: WebPageTest, Network Link Conditioner, @sitespeed.io/throttle и другие инструменты с packet-level throttling.

https://3perf.com/blog/chrome-throttling/

#devtools
  • ❤ 14
  • 👍 3
Post #4262 1.3K
#инструмент дня

Когда-то давно ещё на Ubuntu я пользовался колорпикером Pick.

Он был настолько прост и удобен, с этими милыми названиями цветов, что я не мог себе представить работу как-то иначе. И вот, наконец, я сделал его клон для macOS!

И назвал его Pipetka.

Как оказалось, macOS не умеет записывать видео выбора цвета :)

Pipetka умеет брать цвет с рабочего стола и окон, умеет генерировать палитры из одного изображения или целого их каталога. Даёт названия цветам, позволяет переключаться между разными их представлениями и экспортировать в разных форматах.

Проект открытый, на гитхаб автоматически выкладываются неподписанные релизы: https://github.com/bekharsky/pipetka

Правда, неподписанный релиз означает, что, собственно, разрешения работать не будут :) Так что я в процессе загрузки бесплатного подписанного релиза туда же.

Upd. Подписанный релиз загружен на гитхаб, всё хорошо! Но запускать приложение надо из Applications.

А если есть желание поддержать — Pipetka лежит в App Store: https://apps.apple.com/fi/app/pipetka/id6784390987?mt=12

Пользуйтесь :)

#colorpicker #app #macos
  • ❤ 15
Post #4261 1.29K
#статья дня

Мы как-то с вами уже обсудили, какими разными бывают .*ignore-файлы. И что не .gitignore-ом единым, вот тут: https://t.me/htmlshit/3989

Но я упустил из виду, что у автора есть ещё статья-продолжение! И она — конкретно про разные вспомогательные файлы уже самого git.

Ну, например, с .gitignore всё уже понятно. А что насчёт .gitattributes?

А этот файл помогает разобраться, как поступать с разными файлами. Например, merge strategy:

package-lock.json merge=ours

и всё, разрулится как надо. Или вот шипите вы мультиплатформу:

*.sh text eol=lf
*.bat text eol=crlf

А? По-моему, очень круто. Но давайте дальше.

.gitmodules — конфигурация подмодулей git, .mailmap — хендлит обновление почты в старых коммитах, .gitmessage — шаблон сообщения коммита, .git-blame-ignore-revs — позволяет не включать преттиер и линтер в blame (Привет, Саша!).

Ну и, например, как зашиппить пустую папку в git? Положите в неё файл .gitkeep! Но это не стандартный файл, это просто соглашение. Таких много.

Короче, всё это — вот тут: https://nesbitt.io/2026/02/05/git-magic-files.html

Я вообще этот блог люблю, автор жёстко упарывается по менеджерам пакетов и гиту. Алгоритмы разбора зависимостей, диффов, уязвимости — вот это вот всё.

#git #config
  • 👍 7
  • 🔥 1
Post #4259 1.3K
#инструмент дня

Этого стоило ожидать. Вашему вниманию — Quake на CSS.

Реализован он с помощью движка PolyCSS, а выбрать карту можно просто передав значение в параметр. Например, вот второй уровень первого эпизода: https://cssquake.com/?map=e1m2

Итак, а что же такое PolyCSS?

PolyCSS — 3D-движок, который рендерит модели обычными DOM-элементами через CSS matrix3d(). Без WebGL и без canvas для самой сцены. Загружает OBJ/MTL, STL, glTF/GLB и VOX, умеет в текстуры, свет, тени, камеры, orbit/map/first-person controls, плюс есть обёртки для React и Vue.

Полигоны при этом реально остаются HTML-элементами. Их можно увидеть в DevTools, стилизовать через CSS, повесить click, анимацию или вообще работать с ними как с обычным DOM. Отсюда же и довольно специфичная модель производительности: важны количество DOM-узлов и объём работы, который потом достаётся браузеру на рендер и композитинг.

Поэтому PolyCSS много возится с самой геометрией: убирает внутренние грани, объединяет подходящие поверхности и выбирает разные способы рендера для разных типов полигонов. По умолчанию используется lossy`-оптимизация, которая может немного упростить исходную сетку ради меньшего количества DOM-элементов; если это нежелательно, есть `lossless. С текстурами похожая история: движок собирает texture atlas, а элементы показывают нужные участки, вместо того чтобы тупо вешать отдельную картинку на каждый треугольник.

До Three.js или Babylon.js по возможностям тут далеко: освещение проще, у теней и текстур есть ограничения, а большие сцены довольно быстро начинают упираться в DOM. Но для небольших интерактивных сцен, моделей и всяких веб-экспериментов подход вполне рабочий, и при этом весь результат остаётся частью обычной страницы.

PolyCSS: https://github.com/layoutit/polycss
cssQuake: https://github.com/layoutit/cssQuake

Демонстрация квейком, конечно, это мощно.

#3d #polycss #quake
  • 🔥 9
  • ❤ 3
Post #4258 1.37K
#инструмент дня

Слово «модель» сейчас обычно вызывает в голове что-нибудь на 7–70 миллиардов параметров и десятки гигабайт весов. Но модель вообще не обязана быть такой.

Vercel Labs сделали gpu-lexer — библиотеку подсветки кода, в которой вместо набора грамматик используется одна обученная модель на 41 321 параметр.

Веса упакованы в 6 бит, а весь браузерный пакет занимает 27.4 KB, в сжатом состоянии.

Работает через WebGPU.
Код сначала режется на слова, пробелы, переводы строк и символы. Потом модель для каждого токена выбирает класс: keyword, string, function, type, operator и т.д. Язык заранее указывать не нужно.

У классических хайлайтеров подход другой. Prism и Highlight.js хранят правила для отдельных языков. Shiki использует TextMate-грамматики. Больше языков — больше правил и больше данных.
Здесь одна модель занимает два десятка килобайт и пытается покрыть всё сразу.

Для сравнения, автор приводит примерно 162 KB для Prism, 240 KB для Highlight.js и 992 KB для полного набора Shiki.

Но это именно ML: результат не гарантирован правилами. С Shiki модель совпадает примерно на 88–90% токенов. На TypeScript и Python лучше, на менее популярных языках и шаблонизаторах заметно хуже.

Да, такой подход не вчера появился, но мне нравится, что он снова обретает право на жизнь в не слишком сильно детерменированных задачах.

https://gpu-lexer.vercel.app/

#syntax #ml #highlight
  • ❤ 12
  • 👍 1
  • 🫡 1
Post #4256 1.37K
cursor: ew-resize;
  • 👍 1
Post #4255 1.55K
#релиз дня

Вышел React 19.3, и на этот раз в релизе есть несколько вполне заметных вещей.

Главное — две экспериментальные фичи наконец стали стабильными:

— <ViewTransition> — React теперь умеет нормально работать с браузерным View Transition API: enter/exit/update/shared-element анимации, интеграция с Suspense, свои переходы.

— refs на <Fragment> — можно получить доступ к группе DOM-элементов без лишнего wrapper-div: повесить event listener, IntersectionObserver, управлять фокусом, вызвать scrollIntoView() и т.д.

Ещё появилась довольно приятная мелочь для SSR:


use(browser())


Компонент таким образом можно явно исключить из серверного рендера. На сервере он уйдёт в ближайший Suspense, а в браузере продолжит рендериться как обычно. Никаких typeof window !== 'undefined' и mounted через useEffect.

Плюс React теперь поддерживает Trusted Types. Это браузерная защита от DOM XSS: через CSP можно запретить передавать обычные строки в опасные API вроде innerHTML и разрешать только заранее проверенный TrustedHTML. Раньше React такой объект превращал обратно в строку и ломал механизм. В 19.3 trusted-значения наконец проходят в DOM как есть.

Штош, мне нравится этот островок стабильности.

https://react.dev/blog/2026/09/09/react-19-3

#react
  • 🔥 13
  • ❤ 3
  • 👍 2
Post #4253 1.57K
#такое дня

Ничего такого, просто макбук с линуксом (конкретно, Omarchy) смотрит на себя в зеркало через вебкамеру, чтобы дать агенту нужную информацию для оптимизации драйвера AMD Radeon GPU.

https://x.com/jpschroeder/status/2097758256420565442

#ai
  • 🤩 28
  • 🔥 5
  • 👍 3
  • 👏 1
Post #4252 1.53K
#ссылка дня

Если вдруг этим дождливым (ничо не знаю, у меня дождь) вечером нечем заняться, предлагаю вам попробовать покрасить кнопку!

И не просто покрасить кнопку, а покрасить кнопку с помощью Клода. И ничего более.

https://opusfived.dev/

Думаете, получится? :)

#claude #opus
  • 🤩 4
  • 🔥 2
  • 👎 1
Post #4250 1.56K
#книга дня

Data Structures and Algorithms от Kirupa

Сегодня не совсем книга, а большой набор связанных статей по структурам данных и алгоритмам.

https://www.kirupa.com/data_structures_algorithms/introduction_book_tutorials.htm

Темы обычные: Big O, массивы, стеки, деревья, графы, DFS/BFS, Дейкстра, сортировки. Но часть материала сделана специально под веб, а не просто перенесена туда из учебника.

Например, офигенская глава про движение по двумерной сетке:

https://www.kirupa.com/data_structures_algorithms/moving_around_a_grid.htm

Там есть чувачок-инопланетянин, которого можно гонять стрелками или WASD по сетке 10×10. На нём разбираются смещения координат, проверки границ и обновление позиции.

Ах, да. Естественно, все изученные структуры данных даются не просто так, а чтобы написать простые игры, представленные в конце цикла.

#algorithms #data_structures
  • ❤ 8
  • 👍 1
Post #4248 1.46K
Проект от подписчика!

Напоминаю, что я выкачу любую статью или проект от вас, не стесняйтесь писать.

Презентация? Выступили на митапе? Хотите поделиться интересной статьёй — добро пожаловать!

Всем привет, меня зовут Виталий. Я иженер по автоматизации тестирования и по совместительству нагрузочный инженер. Проект такого масштаба никогда не планировал делать, но обо всем по порядку...

Все началось с того, что когда я пришел на проект - надо было поднимать нагрузку с абсолютного нуля. Поскольку у нас использовался JS стек(playwright) то было принято решение взять k6. Конечно, это позволило нам быстро стартануть, но чем дальше в лес, тем сложнее было поддерживать решение.

Начнем с того, что у k6 есть ограничение на VUS(virtual users) ~50k. И это стартовая точка костылей. Затем нам понадобился sidecar — helper сервер, чтобы производить определенные манипуляции, затем еще один за другим велосипедом. И в какой-то момент я решил, что управлять сложностью стало проблематично и решил, что хочу решить эти проблемы, но плавно.

Так появилась первая версия perfscale. Простой генератор нагрузки, который умеет еще и запускать k6, чтобы переход был максимально гладким.

Затем я начал думать над тем, что меняется от проекта к проекта и вывел закономерность - надо делить конфигурацию (configuration/config) от самого теста. Затем надо было добавить простой UI для отображения тестов и конфигураций, затем сделать интеграцию с OIDC и поместить внутрь контура. И вот так, постепенно, шаг за шагом, я пришел уже к полноценному продукту - https://perfscale.ru/ , который закрывает все типы тестов. А для большего комфорта я движок опенсорснул - 🧑‍💻 https://github.com/Perfscale/perfscale. Считаю, что это правильный шаг.

Единственное, что нет в OSS - fix protocol (прим. 📊fix protocol - финансовый протокол для передачи финансовых данных), ну и самих фич: OIDC, multi tenant, AI inference ,integrations (git, prometheus, allure testops, slack, webhooks, etc.) вобщем все то, что накладывается поверх самого движка.

Из последних вещей, которые я сделал в perfscale OSS (на момент написания) - это gRPC, child_process(sidecar) а впереди еще и поддержка других клиентов: databases, webrtc, graphql, и даже собственный marketplace для того,чтобы не городить ворох велосипедов. А еще я веду sponsr / habr - где пишу о еженедельных новостях, связанных с perfscale.

Ну а если я лично вам приглянулся , то еще и веду свой TG канал - ✈️ Haradkou SDET, где пишу обо всяком, связанным с автоматизацией тестирования
  • 🔥 8
  • ❤ 4
Post #4247 1.26K
#заметка дня

Сразу нелишним будет напомнить, что я уже 6 лет живу и работаю в Финляндии, и даже в финской компании.

Есть одна вещь, которая мне очень нравится в том, как финны в IT обращаются с английским: они совершенно не считают нужным оставлять английские слова английскими.

Финский вообще довольно буквальный язык: a читается как «а», e как «э», i как «и», j как «й», ударение почти всегда на первый слог. И английское слово, попав в финскую речь, часто просто прогоняется через эти правила.

Jira — «йира».
Cache — примерно «кацхе».
Done — «до́нэ».
System — «сюстэм»
Apple — буквально «аппле».
Google — guugle.
YouTube — juutuubi.

А дальше слово ещё и становится грамматически финским:

sprint → sprintti
ticket → ticketti
server → serveri
bug → bugi
commit → committi
deploy → deployata

Есть даже отдельный термин — rallienglanti, «раллийный английский»: английский финских гонщиков, где слова английские, а фонетика, ритм и интонация остаются совершенно финскими.

Для человека из русскоязычной IT-среды это сначала непривычно. У нас долго было ощущение, что английское слово надо хотя бы на секунду произнести правильно.

А «яваскрипт», «микрософт», «аппле», «питон» или «докер» легко могли звучать либо как плохой английский, либо как намеренный айтишный китч.

Получалось смешно: всё предложение по-русски, но перед словом framework человек на секунду становился американским радиоведущим.

А потом садился в свой Mini с Union Jack на крыше.

В Финляндии этого переключения как будто нет. Человек может прекрасно говорить по-английски, но в финской фразе Jira всё равно будет «йира», Apple — «аппле», а что-нибудь вполне можно deployata.

Слово попало в язык — всё, поздно. Теперь оно немного финское. Или русское, смотря кто произнёс.

Иллюстрация: Jutta Mykrä.

#finland #it
  • 👍 10
  • ❤ 7
  • 🔥 2
Post #4246 1.4K
#фишка дня

CSS Grid умеет сам перекладывать карточки при ресайзе, но делает это мгновенно. Брамус не каратист Ван Дамм придумал довольно занятный способ добавить плавность без JS и View Transitions.

Трюк в том, что анимируется вообще не Grid. Карточки вынимаются из потока и привязываются к своим ячейкам через CSS Anchor Positioning. Grid пересчитывает раскладку, координаты anchor() меняются, а transition плавно двигает карточку к новому месту.

Сам Anchor Positioning уже добрался до современных Chrome, Safari и Firefox и считается Baseline 2026.

Firefox уже понимает anchors, но изменение координат из anchor() пока не анимирует — карточки просто прыгают. Но зато в Safari 26 всё отлично! Я удивлён.

Так-то забавно выходит.

Ах, да.

Ссылка:
https://www.bram.us/2026/09/07/animating-css-grid-layouts-with-css-anchor-positioning/

Сразу на демо: https://codepen.io/editor/bramus/pen/01a07dd4-4d23-7e7b-9f41-3e0aa126751f

#css #grid
  • 🔥 17
  • ❤ 6
  • 👍 2
Post #4238 1.5K
#инструмент дня

TanStack выпустили Hotkeys — библиотеку обработки клавиатурных сокращений.

Да, давно уже есть react-hotkeys-hook, hotkeys-js, Mousetrap, у части из них тоже есть scopes, refs, sequences и запись макросов.

Но у TanStack Hotkeys всё это сразу считается одной командной системой.

Скоупы, последовательности, удержание клавиш, keyup, rebinding, конфликты, Mod для Ctrl/Cmd, platform-aware отображение сочетаний, работа с editable-элементами и даже devtools. По отдельности почти всё это уже где-то было. Вопрос в том, сколько библиотек и собственного кода вам нужно было собрать вокруг простого keydown, чтобы получить всё сразу.

Ах, да. Framework-agnostic, конечно же.

С Query, Table и Virtual у них уже получалось примерно то же самое. Они редко приносят новую идею как таковую, зато дорабатывают прекрасно.

Hotkeys пока alpha, но почитать документацию стоит хотя бы ради того, чтобы посмотреть, сколько нюансов там вообще.

#tanstack #hotkeys #library
  • 🔥 10
Post #4237 1.74K
#заметка дня

Nvidia покупает Hugging Face за $12.93 млрд, и кто-то явно решил, что просто круглой суммы для сделки такого масштаба недостаточно.

Берём число 129303 и проверяем в консоли:


String.fromCodePoint(129303)


Получаем:


🤗


Потому что 129303 — это U+1F917, Unicode-код эмодзи 🤗, который называется Hugging Face.

Но на этом пасхалки не заканчиваются. Если те же цифры прочитать как HEX цвет:


document.body.style.background = '#129303'


получим очень характерный зелёный, довольно близкий к Nvidia.

То есть число одновременно можно прочитать как Hugging Face и как зелёный Nvidia.

Где-то между due diligence, юристами и оценке на миллиарды долларов нашлось место шуточкам за 300.

#nvidia #ai #huggingface
  • ❤ 18
  • 🤩 10
  • 🔥 6
Post #4236 1.56K
#инструмент дня

Разобраться в концепциях Git просто не только лишь всем. Кто-то схватывает на лету, кто-то продирается сквозь ветки и листья документации. Кто-то забивает на всё, использует UI любимой IDE и ничего сложнее git pull origin master не разруливает.

Но насколько проще было бы, если появился бы симулятор происходящего под капотом. И ведь такой есть!

И называется он git-sim, вот так вот буквально.

Нужно разрулить конфликтный cherry-pick? Слить несколько веток вместе? Посмотреть последствия reset, stash, rebase? Да запросто! Просто вместо git команда пишете git-sim команда и наслаждаетесь.

Ах да, ссылки на примеры от авторов (много видео и иллюстраций): https://initialcommit.com/tools/git-sim

И на GitHub проекта: https://github.com/initialcommit-com/git-sim

Очень уютная штука.

#git #sim #tool #бородач
  • 👍 4
  • 🤩 4
Post #4235 1.77K
💳Как платить за Spotify, Cursor, ChatGPT и другие любимые подписки?▫️

Если ты читаешь это, скорее всего, у тебя уже была проблема: надо оплатить подписку или купить иностранный софт, а российскую карту не принимают.

Mirocard решает это за пару минут:

Это сервис, где можно выпустить виртуальную карту, пополнить рублями через СБП🏦 и платить за:

- Midjourney
- ChatGPT
- Figma
- ElevenLabs
- Claude
- Netflix
- Spotify и еще сотни подписок 💎

По промокоду HTML50 выпуск карты со скидкой 50%


Открывайте карту в пару кликов и с ней более удобный способ оплаты любимых сервисов!

⚡️ОТКРЫТЬ КАРТУ⚡️
  • 👎 3
  • 👍 1
Post #4234 1.7K
#статья дня

Один из самых популярных вопросов на технических собеседованиях: «Что происходит после того, как вы ввели URL в браузере и нажали Enter?»

Хорош он тем, что начать можно с «ну, DNS → HTTP → страница», а закончить где-нибудь глубоко в TCP, TLS, системных вызовах, планировщике ОС и внутренностях рантайма. По глубине ответа довольно быстро становится понятно, насколько человек вообще представляет себе весь стек целиком.

200ms — очень хорошая интерактивная версия ответа на этот вопрос.

Авторы берут один HTTP-запрос и проводят его через примерно 200 миллисекунд жизни: DNS, TCP, TLS, ядро ОС, Node.js, event loop, Postgres — и затем обратно к клиенту.

Причём это не просто очередной огромный лонгрид со схемами. Статья сделана как интерактивное путешествие: запрос буквально двигается по системе, а ты шаг за шагом смотришь, куда он попал, что там происходит и почему.

Есть, правда, и небольшой перегиб: местами авторы ныряют в детали уже буквально до уровня железа вашего телефона — что именно делает процессор, память и всё вокруг. Для понимания веб-разработки это далеко не всегда необходимо, но материал от этого скорее выигрывает: появляется ощущение, что ты реально проваливаешься через весь стек слой за слоем.

В общем, отличный способ освежить в голове тот самый собеседовательный вопрос, только не в виде заученного ответа на пять минут, а нормально, со вкусом.

https://200ms.thenodebook.com/

#web #interview #request
  • ❤ 15
  • 🔥 2
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →