Типичный программист
✔
78K subscribers
3.83K photos
1.16K videos
14 files
8.48K links
Всё самое интересное по программированию

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

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

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

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

VK: vk.com/tproger

Регистрация в перечне РКН: https://tprg.ru/mJwo
Download Telegram
Человек выровнял 17 000 слов по правому краю, подбирая слова под ширину строки

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

В конце девяностых автор под ником rs1n написал текстовое руководство по игре Super Metroid и всё-таки его выровнял. В FAQ внизу страницы у него спрашивают, какой программой он это сделал. Ответ: «Никакой. Я просто аккуратно подбирал слова, чтобы всё сходилось по правому краю. Всё сделано в обычном текстовом редакторе». Так идут 17 000 слов подряд.

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

#кек
🔥42❤5🤩4👍3⚡2💊2😁1
Сканеры ищут открытые Langflow и Rails: первый выполняет чужой Python от root, второй отдаёт секреты через загруженную картинку

VulnCheck насчитал сотни попыток эксплуатации двух старых дыр на своих ловушках. CVE-2026-0768 в Langflow (CVSS 9,8): эндпоинт /api/v1/validate/code выполняет код из параметра без аутентификации, а Langflow часто крутится в Docker от root. CVE-2026-66066 в Rails Active Storage (CVSS 9,5): специально собранное изображение заставляет libvips прочитать любой файл сервера, включая secret_key_base и пароли к базе.

Для Rails исправление есть, для Langflow версия с патчем в advisory не указана, и ZDI называет единственной мерой ограничение доступа. В запросах ищут OPENAI_API*, AWS_SECRET*, .ssh и .bash_history, то есть цель не сам сервис, а все ключи вокруг него.

Что делать: закрыть API Langflow от интернета за прокси с аутентификацией и следить за релизами; поднять activestorage до 7.2.3.2, 8.0.5.1 или 8.1.3.1; если сервер торчал наружу, ротировать секреты.

Механизм обеих дыр и чек-лист разобрали на сайте.

@tproger
👍5🔥4🎉2❤1👏1👌1🕊1😎1
Разработчик предложил раз в неделю выключать ИИ-ассистентов и писать код руками

30 августа на Hacker News появился сайт No AI Fridays: по пятницам ассистенты выключены, код пишется руками, ответы ищутся в документации. Аргументы авторов: постоянная работа через языковые модели копит «когнитивный долг», снижает вовлечённость и мешает набирать навык, а отдав решение модели, человек перестаёт видеть выбранные за него компромиссы.

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

В нашем канале «Представляешь,» разобрали подробнее, включая спор в комментариях на Hacker News.

#обсуждение
🔥29👍11😁11❤2👏1🤩1🌚1
Домены .ru и .рф теперь требуют владельца с Госуслугами, и большинство администраторов этого ещё не сделали

С 1 сентября действует закон 569-ФЗ: администратор домена в зонах .ru, .рф и .su должен пройти идентификацию через ЕСИА, без неё домен нельзя будет ни зарегистрировать, ни продлить, ни изменить. Руцентр опубликовал готовность: 42,2% его клиентов и 25,7% у Рег.ру. Два регистратора держат 68% рынка.

Ограничения пока не включены: переходный период до попадания регистратора в специальный перечень либо до 18 января 2027 года. Но домены продлеваются раз в год, и у части владельцев дата продления попадёт уже внутрь жёсткого режима.

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

Что проверить в компании и как переоформить домены разобрали на сайте.

@tproger
👎27👍10💊10😁6🔥4❤3😢3🤔1🙏1👌1🤝1
Хостинг-панель раздавала вредоносное обновление полтора дня, сервер при этом никто не взламывал

Softaculous, разработчик панели Virtualizor для управления виртуалками, описал инцидент 28–30 августа: перехват шёл двумя волнами общей длиной около 22 часов внутри окна в 33 часа. Атакующие не трогали серверы компании: они через автономную систему AS62390 объявили в BGP более узкий маршрут /24 к адресам Softaculous, и интернет предпочёл его штатному /16 от Hetzner. Трафик клиентов пошёл к злоумышленникам: на пике подменённый маршрут видели около 72% из 368 наблюдателей RIPE RIS.

Дальше цепочка сработала сама. Let’s Encrypt проверяет владение доменом по HTTP, а проверка тоже пришла на перехваченный адрес, так что атакующие получили настоящий сертификат. С ним они отдали клиентам панели поддельное обновление Virtualizor, и серверы, проверявшие обновления в эти часы, его установили. Полного списка пострадавших у компании нет, подписи пакетов клиенты тогда не проверяли вовсе, а мошеннический сертификат отозван, пишет The Register.

Для тех, кто раздаёт обновления, урок простой: HTTPS от инфраструктуры интернета не спасает, обновления нужно подписывать своим ключом и проверять подпись на клиенте, а за анонсами своих префиксов следить, например через RPKI и мониторинг BGP.

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

#безопасность
👍13👌3❤2🤩2🤔1🎉1🌚1🤝1🦄1
Превратите камеры наблюдения в круглосуточный определитель птиц

Джейсон Такер взял три уличные IP-камеры, уже висевшие для охраны, и подключил их микрофоны к системе распознавания птиц по голосу. Отдельное железо не понадобилось: хватило адресов аудиопотоков по RTSP.

Звук разбирает BirdNET-Go — открытый самохостящийся анализатор на Go примерно с 1700 звёзд. Ставится в Docker, работает круглосуточно даже на Raspberry Pi и считает всё локально: без облака, внешних API и абонентской платы. Новая модель Google Perch v2 различает 14 795 видов против примерно 6000 у прежней BirdNET 2.4.

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

Я бы начал с проверки, отдаёт ли ваша камера стабильный RTSP-поток со звуком.

#diy #опенсорс
🔥9👍5👏3❤2
Debian 11 остался без обновлений безопасности: LTS закончился 31 августа

Bullseye прожил пять лет: три года под присмотром основных команд Debian и два в LTS силами волонтёров. С сентября новых патчей нет: свежая дыра в ядре, OpenSSL или PostgreSQL из репозиториев Bullseye останется навсегда. Extended LTS существует, но это платная услуга сторонних компаний с неполным покрытием.

Где такие машины прячутся: старые VPS, Docker-образы с базой debian:bullseye или python:3.x-bullseye, которые пересобирают только тегом, и Raspberry Pi с системой 2023 года.

Прямого пути на 13 нет: сначала bullseye → bookworm (LTS до 30 июня 2028 года), потом при желании на Trixie. Для образов достаточно сменить тег базы и пересобрать.

Команды для поиска и порядок обновления собрали на сайте.

@tproger
❤8🔥5👏1😱1🤩1🌚1💯1🤝1
Август-сентябрь — сезон поиска работы, и в IT он сейчас особенно непростой. Не всегда понятно, в какую сторону расти, страшно менять профессию, а после нескольких неудачных собеседований начинает казаться, что дело в вас.

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

Куда двигаться:
Каких спецов сейчас не хватает
Куда расти, если не хочется в менеджмент
Как попасть в QA в 2026

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

Работа в новой компании и карьерный трек:
Что нужно знать про онбординг
Почему сеньоров не слышат
Как построить карьерный трек
Как определять грейды
Как измеряют вашу удовлетворённость работой
👏8❤4💯3👍2🤔2🤩2👌2🌚2🔥1
«Mythos: 0, Aisle: 29»: создатель curl сказал, что ИИ больше ничего не находит, и через день получил 29 отчётов

24 августа Дэниел Стенберг, автор curl, написал: к релизу готовы всего три CVE, а Anthropic Mythos, Zeropath и OpenAI Codex Security «больше ничего не находят». curl проверяют десятилетиями, по оценке AISLE, он стоит более чем в 20 млрд экземпляров, так что три дыры за релиз выглядели как победа.

Потом за curl взялась AISLE, небольшая компания с собственной ИИ-системой поиска уязвимостей. 25 августа Стенберг опубликовал счёт «Mythos: 0 Aisle: 29», а к 28-му число ожидающих CVE выросло с трёх до десяти. В вышедшем сегодня curl 8.22.0 шесть из девяти CVE curl (десятая в релизе относится к обёртке wcurl) подписаны исследователем AISLE: use-after-free в связке с OpenSSL, обход пиннинга сертификата, обход флага secure у куки через символ табуляции и ещё три. Все шесть низкой серьёзности: как объясняет AISLE, в таком зрелом коде дыры остаются только в узких сочетаниях опций.

AISLE продаёт аудит кода, поэтому цифру «6 : 0» стоит читать с поправкой, и что стало с остальными 23 отчётами, компания не пишет. Но вывод для любого проекта прежний: «уязвимостей не найдено» от одного сканера означает только то, что этот сканер ничего не нашёл. Хронологию, список CVE и оговорки собрали на сайте.
👏17👍8❤6🔥3😁2😱1🤩1🕊1😍1🤝1
Нейросети проверили на грибах: даже лучшая называет ядовитый гриб съедобным в 11% случаев

Сезон грибов, и «сфотографировать и спросить у чата» стало привычным жестом. Пётр Мигдал из Quesma проверил, чем это кончается: показал 17 моделям 1040 фото 55 видов грибов с метками, подтверждёнными экспертами и ДНК, и попросил назвать вид.

Лучше всех справилась Gemini 3.8 Flash: 65% верных ответов с первого раза. Claude Fable 5.1 узнаёт гриб в 51% случаев, GPT-5.6 Sol в 42%, локальная Qwen3.8 27B в 13%. Но важнее доля ядовитых грибов, названных съедобным видом: 11% у Gemini, 18% у Fable 5.1, 24% у GPT-5.6 Sol, 36% у Qwen3.8 27B. Ошибки те же, что у людей: смертельную паутинницу в 27% случаев называли лисичкой.

Вывод автора короткий: не есть гриб потому, что так сказала нейросеть. Как устроен тест и какие модели путают что с чем, разобрали на сайте.
😁20👍7👏3❤2😢2🔥1
Трансформер на 75 млн параметров взял 44% на ARC-AGI-1 за 67 центов

ARC-AGI много лет был аргументом в спорах «умеют ли нейросети рассуждать»: тысяча задач на цветных сетках, у каждой своё правило, запомнить ответы нельзя. Исследователь Митхил Вакде обучил маленький трансформер с нуля и получил 44% на публичном eval-наборе. Полтора часа на одной RTX 5090, аренда карты обошлась примерно в $0,67.

Трюк в обучении во время теста: модель дообучается на самих задачах при скрытых ответах, а для двумерных сеток используются обучаемые 3D RoPE. Самое честное место поста: когда автор убрал обучение на входных токенах, результат вырос с 40% до 44%, и он пишет «я не понимаю почему». На ARC-2 та же модель даёт 7%.

Код открыт под MIT, эксперимент можно повторить на игровой видеокарте. Что именно измеряет бенчмарк после такого результата, обсуждаем на сайте.
🔥8🤔4👏2🎉2🤓2❤1👍1👌1🤝1🆒1
Открытый ИИ-агент, который живёт на вашей машине и читает вашу почту по вашим правилам

OpenClaw ставится локально, подключается к мессенджерам и почте и выполняет задачи вроде «следи за письмами из школы и пересылай важное в Telegram». Провайдера модели выбираете сами: подписки ChatGPT и Claude, API-ключи, локальные модели. Вышла версия 2.0, крупнейшая в истории проекта: больше 16 000 pull request от 933 контрибьюторов, половина всех за всё время.

Плата за независимость от одной компании известна: установка и безопасность на вашей стороне. В нашем канале «Инструменты программиста» разобрали подробнее.
👌6🔥4⚡2🥰2👏2❤1
Разработчик переписал 65 тысяч строк Go на Rust за $400 и говорит, что секрет в том, чтобы сначала не просить код

Юрий Красношёк, автор терминального редактора rune, переписал его с Go на Rust с помощью Claude Fable 5. Для сравнения он приводит недавний перенос Bun с Zig на Rust: 535 496 строк Zig без комментариев и $165 000 в токенах по API-тарифам по классической схеме «файл за файлом, потом чинить ошибки компилятора».

Его метод из трёх шагов: сначала попросить модель представить код как данные (граф, онтологию, иерархический конечный автомат, ограничения, формулы), потом упростить это представление, например сократить число состояний или убрать скрытые каналы связи через общую таблицу, и только затем попросить код, хоть на другом языке. Плюс совет главному агенту поменьше дёргать Grep, Glob и Edit самому и отдавать это субагентам.

Оговорка от самого автора: цифр о покрытии тестами и проценте собравшегося с первого раза кода в заметке нет, есть только счёт и метод.

Верите, что представление «код как данные» реально экономит порядок денег, или $400 объясняются размером проекта?

#обсуждение
❤9👍5🔥3👏2🙉2🤔1🕊1😍1💔1
GitHub разрешил Copilot ставить approve, который засчитывается в merge-требования

С 1 сентября Copilot code review не только комментирует, но и может одобрить pull request как обычный ревьюер. Если в репозитории merge закрыт правилом «нужно одно одобрение», при включённой настройке код доедет до main без единого человека.

Настройка выключена по умолчанию и включается администратором на уровне enterprise, организации или репозитория. В репозитории можно ограничить approve списком путей: документацию и тесты Copilot одобряет, к src/auth/ не прикасается. Новый коммит снимает одобрение, как и у людей. Функция в public preview для тарифов Pro, Pro+, Max, Business и Enterprise.

Я бы прямо сегодня проверил правила защиты веток: если требуется ровно одно одобрение, а бот попал в число допустимых ревьюеров, стоит поднять планку до двух или прописать обязательного человека в CODEOWNERS. Настройки и подводные камни разобрали на сайте.
🙈11❤9👍4👎2🎉2💯2👏1😁1😱1🕊1
NGINX теперь читает тело запроса до того, как решит, куда его отправить

Классический nginx сортирует запросы как почту по адресу на конверте: смотрит на URI, выбирает location, и только потом кто-то вскрывает письмо. В NGINX 1.31.5, который вышел 2 сентября, конверт можно вскрыть раньше: директива client_body_early_read читает тело до выбора location, новый JSON-модуль кладёт поля в переменные, а location $json_method {} разводит запросы на общий /graphql или /mcp по бэкендам. Всё на C, без njs и Lua.

Ещё в открытую версию перенесли Control API из NGINX Plus: перезагрузка конфига по HTTP с ошибкой в ответе вместо чтения error.log. Аутентификации у него нет, поэтому только UNIX-сокет. Обновиться стоит и без новых фич: исправлен use-after-free в буферизованном проксировании по HTTP/2, а njs 1.0.1 закрыл обход проверки js_access. Что менять в конфиге и кому обновляться первыми, разобрали на сайте.
✍11❤4👍3👏3⚡2🕊1💯1🤝1🤪1
Файл на 21 байт роняет FFmpeg делением на ноль

Четыре нулевых байта на нужном смещении, и либа падает с делением на ноль. Ломается разборщик формата VPK, звука из игр для PS2, о котором почти никто не слышал. Безвестность и есть причина: OSS-Fuzz, гугловый сервис фаззинга, долбит FFmpeg годами, но такие углы достаются ему последними.

Фаззер, нашедший баг, собран с помощью модели: 10 часов 43 минуты и 495 211 запусков на одной машине. Оговорка важная: на обычном ffmpeg из командной строки файл не падает. Краш ловится только через собственный ввод-вывод фаззера, где данные при опознании формата и при чтении пакета расходятся и делению достаётся ноль каналов.

Такую же проверку предлагали в рассылку ffmpeg-devel почти два года назад, и до нужного пути она не доехала. В разборе ценна честность: автор выкладывает и находку, и собственное неудавшееся воспроизведение.

#безопасность #ffmpeg
❤9👍6🙏2🤝2😎2☃1❤‍🔥1🔥1🎉1💋1😨1
OpenAI начала выпуск GPT-6 Astra: модель придёт всем на Plus, в API $10 и $50 за миллион токенов

Сегодня модель получил ограниченный круг организаций, в ближайшие дни она появится у всех подписчиков ChatGPT Plus, Pro, Business и Enterprise, в API под именем gpt-6-astra и в Amazon Bedrock. Fast-режим до 2,5 раза быстрее за двойную цену.

Главная заявка в агентных задачах: на Terminal-Bench 4.0 модель чуть впереди Claude Fable 5.1 и далеко впереди GPT-5.6 Sol, при этом задача по оценке OpenAI обходится дешевле. Не везде первая: на Humanity's Last Exam и в индексе Artificial Analysis уступает Fable 5.1 и Opus 5.

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

В нашем канале «Нейроканал» разобрали подробнее, там пишем и про другие темы, полезные для всех, кто программирует с ИИ.
❤20👍5⚡3🎉3🔥2😁2🥰1🤔1🌭1💔1💊1
Модель на 125 миллиардов параметров запустили на ноутбуке с 48 ГБ памяти

Веса Qwen3.8-Flash-Next занимают 105 ГБ на диске, и обычный загрузчик на MacBook с 48 ГБ уходил в подкачку и умирал до первого токена. Карлос Галарса написал slotstream: модель устроена как mixture of experts, на каждый токен нужны 10 экспертов из 512, поэтому инструмент держит в памяти фиксированный пул слотов и дочитывает нужных экспертов с SSD через pread.

Итог: 3,8 ГБ постоянно в памяти, около 33 ГБ на процесс, 12 токенов в секунду генерации. Плата за это: промпт на 8000 токенов обрабатывается 39 секунд, на 32 000 три минуты. Только Apple Silicon и macOS 14, API совместим с Ollama и OpenAI, так что Open WebUI подключается сразу.

Почему ленивый mmap тоже не спас и что проверить перед запуском, разобрали на сайте.
❤19👍9🔥3👏2🤔2💯2⚡1🤯1🎉1🕊1😍1
CERN уходит с CentOS на Debian: последней каплей стал один флаг компилятора

Организация, которая сама сопровождала Scientific Linux и десять лет жила на CentOS, объявила на MiniDebConf, что 2200 с лишним промышленных компьютеров управления ускорителями переезжают на Debian 13 до конца 2026 года. Последней каплей инженеры назвали -march=x86-64-v2 по умолчанию в RHEL: система собирается под инструкции, которых нет у процессоров старше примерно 2009 года, и старое сертифицированное железо просто перестаёт грузиться. В CERN это назвали принудительным устареванием.

Дата-центры и вычисления экспериментов остаются на RHEL и AlmaLinux. А в Debian им не хватило инструментов для автоматической сборки пакетов и хранения нескольких версий одного пакета, это придётся собирать самим.

Проверить свой парк можно одной командой: /lib64/ld-linux-x86-64.so.2 --help | grep supported покажет, какие уровни x86-64 тянет машина. Что делать, если ниже v2, на сайте.
💅11👍10👏2🙈2😨2🤝2❤‍🔥1❤1🔥1🤔1🎉1
Переключение на резервный регион не доедет до вашего сервиса на Java

Инженер разобрал свой ночной инцидент, и повторить его может любой, кто ходит наружу стандартным HTTP-клиентом Java и не трогал настройки.

В 3:40 один регион начал сыпать пятисотыми примерно на 8% запросов. Дежурные перевели запись в DNS целиком на здоровый регион. Ошибки не ушли: сорок пять минут часть серверов долбилась в мёртвый регион, притом что dig показывал новый адрес через пару секунд.

Причина в самой JVM. Она не смотрит на время жизни вашей DNS-записи: у неё свой кеш и два свойства, о которых почти никто не знает, networkaddress.cache.ttl и negative.ttl. Под SecurityManager удачный ответ кешируется навсегда, без него тридцать секунд, и это тоже константа внутри JVM, а не то, что настроил ваш DNS. Правило приехало из начала двухтысячных, когда так защищались от подмены адресов в апплетах.

Проверьте оба свойства у себя, иначе узнаете о них в момент аварии. Рабочие значения: 30 секунд на удачные ответы и 10 на отрицательные. И не через -Dsun.net.inetaddr.ttl, под SecurityManager оно не работает вовсе, на чём авторы инцидента потеряли ещё двадцать минут.

#devops #java
👍11❤6👏4🔥2💯2🤔1💊1😎1