TGViewer
Channel ✦ Verified Channel
Типичный программист

Типичный программист

@tproger_official

Всё самое интересное по программированию

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels

Сайт: https://tprg.ru/site

VK: vk.com/tproger

Регистрация в перечне РКН: https://tprg.ru/mJwo
Subscribers
78.3K
Photos
3.8K
Videos
1.2K
Links
8.4K

Showing posts older than #14813 · Back to latest

Older Posts 20 shown
Post #14812 8.07K
Плагин для GitHub Accessibility Scanner ловит alt-текст, который проходит обычные проверки

Проверки доступности отвечают на один вопрос: есть ли у картинки атрибут alt. Поэтому alt="IMG_2847.png" проходит, и одинаковое alt="3/5 stars" на пяти разных иконках тоже. По отчёту WebAIM Million за 2026 год alt нет у 16,2% изображений на миллионе главных страниц, а ещё у 10,8% он ничего не описывает.

Плагин GitHub для Accessibility Scanner добавляет пять правил, которым не нужна сама картинка: атрибут отсутствует или состоит из пробелов; вместо описания имя файла вроде hero.png; забытая заглушка TODO или tbd; одно общее слово вместо описания: image, logo, chart; один и тот же alt у соседних изображений.

Где пригодится: прогнать по своей вёрстке и увидеть места, где alt формально есть, а незрячему пользователю не даёт ничего.

#инструменты
  • 👍 8
  • 👎 6
  • ❤ 4
  • 👏 3
  • ⚡ 2
  • 🐳 2
  • 🆒 2
  • 🤔 1
  • 🙏 1
  • 🤝 1
  • 🤷 1
Post #14811 7.4K
С днем программиста, коллеги!

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

И конечно, пусть в жизни будет больше приятных сюрпризов — один из них мы уже подготовили. Скорее переходите по ссылке, трясите коробку и забирайте свой подарок ко Дню программиста: https://tprg.ru/SDml
  • ❤ 53
  • 🎉 14
  • 🔥 6
  • 💯 6
  • 👌 2
  • 🍾 2
  • 👏 1
  • 🕊 1
  • 😍 1
  • 🍌 1
  • 🆒 1
Post #14810 7.59K
В Claude Code точное разрешение не перебивает общий запрет

Claude Code проверяет права в жёстком порядке: запреты (deny), запрос подтверждения (ask), разрешения (allow). Срабатывает первое совпадение, а точность правила ничего не меняет. Поэтому Bash(aws *) в запретах заблокирует даже отдельно разрешённую команду Bash(aws s3 ls).

Запрет Bash вообще убирает инструмент из доступных агенту. Правило Bash(rm *) оставляет его, но блокирует подходящие команды. Отдельная проверка защищает .git, .claude, .vscode и .mcp.json ещё до обработки разрешений: автоматически разрешить запись туда может только режим bypassPermissions.

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

@neuro_channel
  • 👍 8
  • 🎉 6
  • 💊 5
  • ❤ 4
  • 🤪 3
  • 🤷‍♂ 1
  • 🌚 1
  • 🍌 1
  • 💔 1
  • 🎄 1
  • 🙉 1
Post #14809 7.42K
Cloudflare лёг на 27 минут из-за одной регулярки, и ошибки в коде там не было

2 июля 2019 года edge-серверы Cloudflare упёрлись почти в 100% CPU, и сайты по всему миру перестали открываться.

Шаблон был устроен как (a+)+b: два вложенных квантификатора над одним классом символов. Дайте движку строку, которая почти совпадает, но в конце ломается, и он перебирает все способы разложить её между двумя плюсами. На 20 символах это полмиллиона попыток, на 40 — около 500 миллиардов, и одно ядро занято.

Ревью бессильно: регулярка компилировалась, тесты проходила, на обычном вводе работала. Это известный класс дыр, CWE-1333. Помогает выбор движка: re2, regexp в Go и regex в Rust собирают шаблон в детерминированный автомат и работают линейно, но обратные ссылки вроде \1 они не умеют.

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

#безопасность
  • ⚡ 13
  • ❤ 10
  • 👍 4
  • 👏 2
  • 🌚 2
  • 👌 1
  • 🐳 1
  • 🍌 1
  • 🙉 1
  • 🦄 1
  • 😘 1
Post #14808 7.22K
Пока все спорили про новые фичи нейронок, команда разработчиков VK два года перестраивала процессы изнутри и подготовила единый технологический фундамент для всех своих продуктов.

Раньше на запуск нового сервиса уходило 20-30 дней, а теперь уходит около часа: через внутреннюю платформу разработки команда уже создала более 300 сервисов. Внутреннее облако One-cloud выдаёт вычислительные мощности за пару минут, а единая система A/B-тестирования OneAB каждый месяц прогоняет больше тысячи экспериментов сразу для нескольких продуктов.

В статье рассказываем, как устроен этот фундамент, какие принципы легли в его основу и что изменилось в работе команд. Будет интересно тем, кто хочет понять, как выглядит инженерная культура в компании такого масштаба.
  • 😁 24
  • 👍 22
  • 👎 18
  • 🤪 12
  • ❤ 11
  • 🔥 10
  • 🌚 3
  • 🍌 3
  • 🏆 1
  • 👻 1
  • 🆒 1
Post #14807 6.9K
Помнишь, как выбирал скин для Winamp часами, подписывал маркером диски и смотрел на солнце через дискету? Пройди опрос и мы скажем, каким накопителем ты бы был!
  • 🌚 10
  • 😐 6
  • 👍 5
  • 🎉 4
  • 🐳 3
  • 👾 3
  • 💯 2
  • 🤯 1
  • 🙏 1
  • 🤓 1
  • 😨 1
Post #14806 7K

Forwarded from Сохранёнки программиста

Почему Cloudflare пересжимает кэш в zstd, а не хранит байты как есть

Диски и память за год подорожали, а объём кэша упирается в закупленное железо. Cloudflare разбирает прототип Cache Transcoding: ответ на входе в кэш кодируется zstd в прокси Pingora, лежит сжатым на диске, в таком же виде едет между дата-центрами через Tiered Cache и раскодируется перед отдачей клиенту.

Что в разборе:
— почему хранение ответа в кодировке, которую прислал сервер-источник, тратит диск впустую;
— почему zstd, а не Brotli: на прошлых тестах Cloudflare он сжимал на 42% быстрее при том же размере;
— где проходит граница по CPU и почему остановились на третьем уровне zstd.

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

Сохраните, если считаете стоимость хранилища или выбираете, чем сжимать холодные данные.
  • ❤ 11
  • 👌 5
  • 👍 3
  • 🤔 3
  • 💯 3
  • 😱 2
  • 🎉 2
  • ❤‍🔥 1
  • 🔥 1
  • 🙈 1
  • 🗿 1
Post #14804 7.48K

Forwarded from Точка входа в программирование

Карта из 14 шагов: что нужно знать новичку, кроме синтаксиса

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

Роадмап на freeCodeCamp закрывает как раз это: 14 тем, с которыми разработчики имеют дело каждый день — от устройства компьютера и данных до Git, который хранит историю правок в коде. Задача не выучить всё сразу, а узнать, что эти вещи вообще существуют.

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

#основы
  • 😁 7
  • ❤ 5
  • 🔥 3
  • 🍓 2
  • 😨 2
  • ☃ 1
  • 🏆 1
  • 🎃 1
  • 💘 1
  • 🙉 1
  • 😘 1
Post #14803 18.4K
Страшно представить код для Cannibal Corpse
  • 🤣 43
  • 😁 10
  • 👍 7
  • 🎉 5
  • 🗿 3
  • 🔥 2
  • 💯 2
  • ❤ 1
  • 👏 1
  • 🎄 1
  • 🙉 1
Post #14802 9.47K
Интерпретатор Python уместился в 1024 байта кода на C

Остин Хенли пишет такой код по выходным и ставит жёсткие условия: никаких макро-трюков и подключённых библиотек, а на выходе должен работать fizzbuzz с def, двоеточиями и отступами. Стартовый лимит был 512 байт.

Не влезло. Первая версия дожила до x = 1 + 2 * 3 и if x > y: z = 3, лимит кончился, а получился калькулятор. Потолок поднялся до 1024, а порядок работы поменялся: сначала заставить работать, потом ужимать.

Внутри ничего похожего на CPython: ни токенизации, ни синтаксического дерева, ни байткода. Всё состояние держат несколько глобальных переменных: массив на 999 символов под исходник без пробелов и int vars[256] под таблицу имён, где переменные и функции лежат вперемешку.

Разбор с полным кодом.

#python
  • 👍 36
  • ❤ 5
  • 🤔 5
  • 🙉 5
  • 💊 5
  • 👏 4
  • 🔥 3
  • 🥰 3
  • 😁 3
  • 👀 2
  • 🤷‍♀ 1
Post #14801 8.39K
Одна функция «забыл пароль» оставляет вору живую сессию

Сброс обычно пишут одним вызовом: отправить письмо, поменять хеш, вернуть 200. В разборе на dev.to предлагают считать письмо сообщением очереди, а не событием интерфейса, и разложить сброс на три перехода с записью в аудит.

Заявка создаёт запись с коротким сроком жизни: хеш токена, время истечения, статус pending. Подтверждение в одной транзакции сверяет хеш и срок и переводит запись в consumed ровно один раз. И только потом меняется пароль и запускается отзыв старых сессий. Без третьего шага укравший куку переживает смену пароля.

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

Дальше в статье развилка: своя машина состояний на Go или managed-провайдер. Мне ценнее оказались сами инварианты: приложите их к своей реализации и увидите, какого перехода не хватает.
  • 👍 11
  • ❤ 10
  • 🥰 2
  • 😁 2
  • 🙏 2
  • 🍌 2
  • 🤓 2
  • 🎉 1
  • 👌 1
  • 😇 1
  • 🫡 1
Post #14800 8.13K
Треть патча Linux 7.3-rc1 заняли заголовки регистров AMD

Когда пишут «огромный релиз-кандидат ядра», полезно посмотреть, из чего складывается этот объём. В 7.3-rc1 около трети всего диффа занял дамп заголовков AMD DCN6: аппаратные определения нового поколения графики, выгруженные обычными #define, плюс код под это поколение.

Линус сам говорит: замаскируйте этот кусок, и merge window выглядит рядовым, хотя по числу коммитов rc1 один из крупнейших. Судить о вложенной работе по строкам диффа бессмысленно, заметную часть «роста» дают сгенерированные константы под новое железо.

Ценно, что в том же письме он признался в собственном факапе: посреди merge window затеял обновление системы, словил из-за этого проблему и сам себя назвал балбесом. Письмо и список изменений на Phoronix: там же поддержка AMD Zen 6, ускорение Btrfs и Steam Controller 2026.

#новости
Phoronix Linux 7.3-rc1 With AMD Zen 6 Additions, Better Btrfs Performance & 2026 Steam Controller Like clockwork, the Linux 7.3 merge window has concluded after two weeks and the Linux 7.3-rc1 kernel now available for testing.
  • 👍 6
  • 😁 4
  • ❤ 3
  • 🎉 2
  • 🤷‍♂ 1
  • 🤷‍♀ 1
  • 💔 1
  • 👨‍💻 1
  • 😇 1
  • 🤝 1
  • 🗿 1
Post #14799 8.14K
Первую жертву новой дыры в Magento взломали на самой свежей сборке от Adobe

Sansec выпустила предупреждение досрочно: магазины ломают прямо сейчас. Атаки идут с 4 сентября, дыру назвали StyleSmuggler, она даёт выполнение кода на сервере без логина и ставит постоянный бэкдор.

Цепочку воспроизвели на чистых Magento Open Source 2.4.7, 2.4.8 и 2.4.9. Первая жертва работала на 2.4.6-p15 с июльским и августовским патчами: выше для этой линейки Adobe ничего не выпускала. На 6 сентября у Adobe нет ни CVE, ни фикса, ни обходного пути.

Совет Sansec на время: отключить GraphQL. Хостер Disrex, чинивший два взломанных магазина, уточняет, что классическим витринам и Hyvä он не нужен, а headless и PWA без него не работают. Плановый релиз Adobe сегодня, 8 сентября, будет ли там фикс, неизвестно.

Я бы на месте владельца headless-витрины уже читал логи: детали в разборе The Hacker News.

#безопасность
  • 👍 6
  • ❤ 3
  • 🔥 3
  • 👏 3
  • 😁 2
  • 👌 2
  • ☃ 1
  • 😍 1
  • 🎄 1
  • 🆒 1
Post #14798 8.11K
Сорок символов на входе уронили сеть Cloudflare на 27 минут

2 июля 2019 года процессор ушёл под 100% на каждом пограничном сервере Cloudflare, принимавшем HTTP и HTTPS. Сайты по миру лежали 27 минут из-за одной регулярки.

Схема известная: вложенные квантификаторы на одном классе символов, структурно вроде (a+)+b. Движку с бэктрекингом подсовывают строку, которая почти совпала, и он перебирает все способы разложить её между плюсами: на 20 символах это полмиллиона попыток, а сорока хватает, чтобы забить ядро.

В разборе есть таблица откатов по длине входа.

#безопасность
  • 🔥 12
  • ❤ 3
  • 👍 3
  • 👏 3
  • 🤔 3
  • 🎉 2
  • 😁 1
  • 🙏 1
  • 👌 1
  • 😴 1
  • 🤝 1
Post #14797 8.28K
CUDA готова пустить к себе RISC-V, если платформа дорастёт до серверной

Процессор, который раздаёт видеокарте работу в CUDA, может быть только x86-64 или aarch64. На Hot Chips 2026 Nvidia назвала условия, при которых к ним добавится RISC-V.

Требования серверные: профиль RVA23, спецификации RISC-V для серверного SoC и платформы, поддержка ACPI, через которую система узнаёт у железа, что оно умеет, и когерентность PCIe.

Последний пункт объясняет, почему дешёвой платформой не отделаться. Без когерентности процессор записал данные, а они ещё лежат в его кэше; копирование в память видеокарты идёт мимо процессора, прямо из DRAM, и утаскивает устаревшую версию. Спасают только ручные сбросы кэшей на каждой передаче.

Чего Nvidia хочет от векторных расширений, разбирают в Chips and Cheese.
  • ❤ 8
  • 🎉 3
  • 👍 2
  • ⚡ 1
  • 🔥 1
  • 👏 1
  • 😁 1
  • 🤔 1
  • 🙏 1
  • 👻 1
  • 🆒 1
Post #14796 7.98K

Forwarded from Точка входа в программирование

Почему шифровать по-новому советуют сейчас, хотя квантового компьютера ещё нет

Криптография, которая сегодня защищает ваши ключи, HTTPS и подписи, опирается на задачи, которые обычные компьютеры не решают за разумное время. Достаточно большой квантовый компьютер часть из них решит. Постквантовая криптография это алгоритмы, устойчивые и к тем и к другим.

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

Отсюда правило, которое стоит запомнить в начале пути: если данные должны остаться тайной через десять лет, угроза уже настоящая, а не будущая. Разбор объясняет это без математики.
DEV Community ¿Qué es la criptografía post-cuántica y por qué deberías migrar ya? Explicación clara de la amenaza cuántica, el ataque 'harvest now, decrypt later', los estándares ML-KEM y ML-DSA del NIST, y por qué la migración empieza hoy.
  • 👍 14
  • 🔥 3
  • 👏 3
  • 😁 3
  • 🌚 3
  • 😢 2
  • 🥰 1
  • 💯 1
  • 😴 1
  • 🎃 1
  • 🗿 1
Post #14795 7.96K
Есть один разработчик, который искренне верит, что отпуск случится сразу после релиза. Проблема в том, что релизы у него не заканчиваются никогда. 😅

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

Играть
  • ❤ 9
  • 😁 7
  • 👍 5
  • 👎 2
  • 🔥 2
  • 👏 2
  • 👀 2
  • 🤝 2
  • 🤯 1
  • 🆒 1
Post #14794 8.3K
Разработчик собрал фоторедактор, который ни разу не отправляет фото на сервер

Любая онлайновая удалялка фона работает одинаково: вы загружаете снимок, модель крутится на чужой машине, вы забираете результат. Копия уже ушла, и что с ней дальше, вам не расскажут. В APIC-Web фон, объекты, фильтры, конвертация и сжатие живут прямо в браузере, на Canvas, WebAssembly и локальной модели.

Вырезать фон просто, пока в кадре нет волос. Очевидный путь через ImageSegmenter из MediaPipe с флагом outputCategoryMask отдаёт на пиксель жёсткий ноль или единицу. По волосам получается лесенка, и размытием её не спасти: промежуточные значения округлились и потерялись.

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

Грабли: число каналов уверенности у моделей разное, так что проверяйте длину массива вместо confidenceMasks[1]. Оба сложных куска редактора расписаны с кодом.
  • 🔥 9
  • 💊 6
  • 👏 4
  • 😁 3
  • 🎉 2
  • ⚡ 1
  • 👍 1
  • 🤔 1
  • 🌚 1
  • 🤝 1
  • 🦄 1
Post #14793 20.8K
  • 😁 69
  • 🤣 27
  • ❤ 11
  • 💯 5
  • 🔥 3
  • 🤔 2
  • 🎉 2
  • 🙏 2
  • 👀 1
  • 🎃 1
  • 🫡 1
Post #14792 8.6K
Кеш с 99 процентами попаданий работает вдесятеро быстрее, чем с 90

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

Разница между 90 и 99 процентами читается как «лучше на девять процентов». Считать надо промахи. Их доля падает с десяти процентов до одного, то есть в десять раз, а вся работа базы сидит именно в промахах.

Разработчик проверил это на стенде. Один и тот же запрос 10 000 раз без кеша занял почти две секунды работы базы. С обёрткой на обычном ConcurrentHashMap вышло 0,6 миллисекунды и ровно один поход в базу: ускорение в 3084 раза там, где он предсказывал сотню. Долю попаданий он задавал руками, а время мерил по-настоящему.

Пригодится, когда придётся объяснять, зачем тратить спринт на подъём попаданий с 90 до 99. В таблице замеров выигрыш посчитан для четырёх разных долей.
DEV Community Why a 99% Cache Hit Rate Is 10x Faster Than 90% (Not 9%) I ran the same query 10,000 times: almost 2 seconds of database work for an answer that never...
  • 💊 10
  • ❤ 5
  • 👏 5
  • 👍 4
  • ❤‍🔥 1
  • 🎉 1
  • 🌚 1
  • 🌭 1
  • 🤣 1
  • 😨 1
  • 🫡 1
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 →