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

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

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

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

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

VK: vk.com/tproger

Регистрация в перечне РКН: https://tprg.ru/mJwo
Download Telegram
Есть недооценённый приём в отладке: не ковырять огромный вход руками, а автоматически сжимать его до минимального случая, на котором баг всё ещё воспроизводится.

Laurence Tratt написал разбор про test-case reducers — инструменты, которые берут большой файл, программу или набор данных и постепенно выкидывают из него всё лишнее. Остаётся маленький пример, который всё ещё ломает систему. Дальше отлаживать уже гораздо приятнее и легче.

Обычно такие штуки вспоминают рядом с компиляторами, но идея шире. Если у вас парсер падает на большом JSON, генератор кода ломается на странном input или тест фейлится только на огромной фикстуре, reducer может сократить воспроизводимый пример до нескольких строк.
❤13👍7😢2🆒2🤩1🐳1😈1😴1🤗1🤪1💊1
В блоге Альфа-Банка вышла статья о метриках в разработке. Команда перепробовала аж 7 штук и путём проб и ошибок собрала свой минимальный набор, который реально приносит пользу. Основой стала Cycle Time — она показывает, сколько времени задача провела внутри процесса разработки, от старта до релиза.

Метрик часто опасаются: если внедрить их неправильно или использовать как дубинку, цифры начинают подгонять, а толку — ноль. Как этого избежать и подобрать правильный набор показателей под себя — читайте в статье: https://tproger.ru/articles/kak-my-sbezhali-iz-kpi-karaoke-naw-bazovyj-minimum-metrik-kot
❤29✍23👍9🤔4👎3💅3🙉2🤷2⚡1🤗1🆒1
Кодовую базу можно диагностировать ещё до чтения кода

Обычно новый проект начинают с `src/`, README и попытки понять, где тут вход. Автор предлагает сначала открыть Git и посмотреть на историю как на рентген.

Пять команд показывают файлы с самым высоким churn, bus factor, места, где чаще всего чинят баги, месячную динамику коммитов и частоту hotfix/revert. Это не заменяет ревью кода, зато быстро подсказывает, куда смотреть первым и где команда, возможно, ходит по минному полю.

Материал хорош тем, что превращает `git log` из справки по прошлому в инструмент инженерной диагностики.
👍26❤‍🔥5❤2🎉2😍2🤷‍♂1👏1🌚1🤝1
Clojure пересобрали на Go ради старта за миллисекунды

let-go выглядит как эксперимент из серии “а что, если Lisp можно сделать маленьким, быстрым и удобным для встраивания?”. Автор собрал Clojure-подобный язык на Go: свой байткод, VM, standalone binaries и запуск примерно за несколько миллисекунд.

Это не попытка заменить Clojure целиком. Скорее, хороший инженерный вопрос: какие части языка действительно нужны, если хочется получить REPL-мышление, immutable data и макросы, но без тяжёлого рантайма.

Код интересен как разбор компромиссов между выразительностью языка и ценой его запуска.
✍11💅4❤3🔥3👍2🤔2😁1🌭1🤪1💘1🤷1
История файлов для моментов, когда git уже поздно

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

UNF предлагает другой слой страховки: локально версионировать изменения файлов независимо от того, каким инструментом они сделаны. Можно откатить не только осознанный коммит, но и “кажется, я разрешил не той команде править проект”.

Идея особенно актуальна сейчас, когда код всё чаще меняют не только люди, но и ассистенты с очень уверенным курсором.
🔥17❤6👍5🎉1😍1🤣1
В большинстве компаний 1С и облачная инфраструктура живут в параллельных мирах: DevOps смотрит в Grafana, финдиректор — в 1С, а когда падает оплата, все смотрят друг на друга. На самом деле подружить 1С с современными инструментами мониторинга вполне реально всего за один спринт. В блоге Centicore рассказали, как это сделать.

В статье разбирается, как вытащить метрики из 1С через OData без единой строчки кода, написать Prometheus Exporter на Python и собрать бизнес- и технические метрики на одном дашборде. А заодно — где интеграция обычно ломается и как это пережить.
👎5😴3👍2👏2🤣2🙊2❤1😱1😍1😨1
x86-эмулятор, который работает на одном CSS

Разработчица собрала x86 CPU emulator без JavaScript, без WebAssembly и без привычного runtime — только на CSS.

Это не кандидат на прод и не новая платформа для вычислений. Ценность в другом: CSS здесь используют как странную вычислительную модель с состояниями, селекторами и каскадом, которые внезапно начинают напоминать машину выполнения.

История хороша как инженерный фокус. Подробности по ссылке
👍25😱12❤4👌3❤‍🔥2🔥2👏2🍾2😢1🤨1🆒1
Язык программирования, который думает на корейском

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

Проект написан на Rust, использует LLVM, имеет REPL, LSP и примеры реального кода. То есть это уже не мем про ключевые слова, а инженерный эксперимент про то, насколько глубоко английский зашит в привычный способ программировать.

Код стоит смотреть как на языковой дизайн, а не как на экзотику ради экзотики.
👎21❤6👍5👀3☃2🔥2🎄2💘2⚡1🤣1🗿1
curl на месяц перестаёт принимать отчёты об уязвимостях

Daniel Stenberg объявил «summer of bliss»: в июле 2026 года curl не будет принимать и обрабатывать vulnerability reports. HackerOne-форма закроется 1 июля, security-почта тоже не будет рабочим обходным путём, приём вернётся 3 августа.

Звучит резко, но контекст важный: последние месяцы проект жил под сильным давлением из-за потока отчётов. Релиз 8.22.0 из-за этого сдвинули на 2 сентября, а мейнтейнеры прямо говорят: им нужен реальный отдых.
👏20❤5👍5🔥4💯2
Интернет, где устройство ищут не по IP, а по ключу? Почему бы и нет

IP-адреса ведут себя как временный пропуск: сегодня есть, завтра поменялся, послезавтра устройство сидит за NAT, firewall или мобильной сетью. Iroh предлагает другой подход — соединяться не с адресом, а с криптографическим ключом устройства. Это фундаментальная технология, призванная коренным образом изменить интернет.

В версии 1.0 у них уже стабильный wire protocol, QUIC, NAT traversal, multipath, локальный поиск устройств без интернета и API для Rust, Python, Node.js, Swift и Kotlin. В идеале это выглядит как «secure localhost», только между любыми устройствами.

Для приложений с синком, IoT, файлами и P2P это очень здравый поворот.
❤12👍9🔥4🤷2🤓1🎅1
Виртуальная машина, которая стартует быстрее вкладки

Обычно VM воспринимается как тяжёлая штука: образ, загрузка, ожидание. smolvm пробует другой режим — маленькие переносимые машины с cold start меньше секунды.

Идея в том, чтобы упаковать окружение в один артефакт и запускать изолированный код почти как обычный процесс. Это уже интересно для CI, песочниц, временных dev-окружений и задач, где контейнеров мало, а полноценные VM слишком дороги.
👀11👍7🤯3❤1🔥1🤔1🌭1🤗1💅1
Forwarded from Нейроканал
В топе трендов Hugging Face сейчас стоит хобби-проект одного человека под ником yuxinlu1. Это маленькая кодинг-модель на базе Gemma 4 12B в формате GGUF: запускается локально, самый лёгкий вариант весит 4,5 ГБ и влезает почти в любую видеокарту или в общую память Mac. Работает оффлайн, без облака и API, за неделю уже 146 тысяч загрузок.

Самое интересное в том, на чём её учили. Это дистиллят рассуждений двух коммерческих моделей: основным учителем был Composer 2.5 от Cursor, а задачи, где он ошибался, отдавали Fable 5, чтобы тот переписал решение заново. В обучающий набор брали только те цепочки рассуждений, чей итоговый код реально прошёл тесты. Поэтому модель сначала думает над задачей вслух, потом выдаёт решение.

Через несколько дней после релиза доступ к Fable 5 автору закрыли, так что для второй версии он теперь присматривается к GLM-5.2. И ещё момент: модель специально без выравнивания на безопасность, отказывается реже базовой Gemma.

@neuro_channel
👀29❤9🤔3💋2😇1🗿1
Я тут наткнулся на исследование рынка ПО для ИИ-технологий. И вот как бы мы не шутили про вайбкодеров, а внедрение ИИ-моделей для работы и, в частности, для разработки уже становится «базовым инфраструктурным слоем, доступным большинству компаний». Так во всяком случае говорят эксперты, участвовавшие в исследовании.

Вообще рекомендую почитать вам подробнее. Там интересная информация. Но я вас вот о чем спросить хотел... Как считаете, с учётом развития агентов, не уйдут ли классические разработчики в сторону? Может они уступят место «ИИ-ревьюерам», которые умеют читать код и правильно давать задачи агентам, но недостаточно глубоко знают все нюансы стека, который используют?
🌚14😱5🔥3👏2👍1🤔1
Epic делает Git для репозиториев, где код — не главная проблема

Epic Games показала Lore — open-source VCS для проектов, где рядом с кодом живут гигабайты ассетов, билдов и бинарников.

В обычной разработке Git чаще всего страдает от истории и конфликтов. В геймдеве он ещё и упирается в тяжёлые файлы, partial checkout, хранение чанков и нормальную работу с большими деревьями.

Lore как раз смотрит в эту сторону: Merkle trees, chunked storage, sparse/on-demand hydration и API для C/C++/C#/Rust/Go/Python/JS. Хороший повод посмотреть, как VCS выглядит, если проект начинается не с src/, а с мира, моделей, текстур и билд-артефактов.
👍26💊9❤3🎉3⚡1❤‍🔥1
Команда, которая объясняет, почему процесс вообще запущен

ps aux
показывает, что в системе что-то живёт.есс воопоказывает, что оно ест ресурсы. А вот вопрос “кто это поднял и зачем?” обычно начинается с прогулки по systemd, cron, контейнерам и истории шелла.

witr пытается закрыть именно этот разрыв. Утилита ищет цепочку причин: сервис, родительский процесс, порт, контейнер, socket activation и другие следы, которые помогают понять происхождение процесса.

Репозиторий я бы держал под рукой.
👍29👎3😁2👾2❤1🤯1🤣1🏆1🍾1🙈1🙉1
Как мы проскочили путь от первого iPhone и сложной разработки под мобильные устройства до эпохи ИИ? Что случилось и к чему это привело — в третьей части цикла об истории российского IT.

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

Приложений, проектов и стартапов становилось больше — начался расцвет российского IT. Но разработчиков не хватало, и на сцену вышли курсы, школы и онлайн-уроки. Желающих войти в профессию оказалось огромное количество, и рынок быстро перегрелся. Теперь новичков заменяет ИИ, а найти работу — задача со звёздочкой. Сегодня гонка за лучшими программистами превратилась в гонку ИИ-инфраструктур.

Так решения порождали новые проблемы, а российская IT-индустрия вышла на новый уровень сложности. Подробнее — в материале на Tproger.
👍9😭6❤3😱2🙈2🤔1🤯1🐳1🤨1💊1🙊1
115 тысяч строк BASIC, которые не хотели умирать

Автор Wall Street Raider три года восстанавливал финансовый симулятор, который впервые вышел ещё в 1986 году. Внутри не аккуратный учебный legacy, а огромная живая программа на BASIC, росшая десятилетиями.

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

Разбор хорошо читается как археология кода.
👍32✍3🤔3🤩2🙏2😇2💊2😢1🍾1🗿1🙉1
Интерпретатор Wasm, который одновременно доказывает свою правоту

Talos не разделяет код, который запускает WebAssembly, и код, который описывает её правила. В одном репозитории на Lean 4 одни и те же определения выполняют Wasm-инструкции и служат основой для рассуждений о них.

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

Код лежит на GitHub.
🤓13❤8🤔4🤩2🍾2😴2🗿2🆒2🤷‍♀1✍1😈1
Кто-то завернул антидетект-браузер в REST API, чтобы ИИ-агенты ходили в сеть без шума

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

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

Репозиторий на GitHub.
🥰9👏6👍4❤3❤‍🔥1☃1🔥1🎉1😈1
Почему в больших компаниях пишут плохой код хорошие инженеры

Кажется, в крупном бизнесе у инженеров есть время и деньги делать всё аккуратно. На практике там постоянно работают люди, которые только недавно разобрались в кодовой базе. Средний срок работы в big tech: год-два, а реорганизации случаются ещё чаще, поэтому систему правят те, кто осваивался в ней последние полгода.

Старые кодовые базы живут десятилетиями и меняют владельцев разными командами. Опытные «старые руки» ловят проблемы на ревью, но их знания никак не формализованы, и их могут перекинуть на другой сервис. Экспертиза уйдёт вместе с ними. Автор статьи показывает: плохой код в больших компаниях — это не про квалификацию, а про зарплату и ротацию команд.

Если кодом владеют вечные новички, качество зависит не от найма звёзд, а от того, удержатся ли те, кто знает, где собаки зарыты.
❤32🤔4💯3🎄3🤷‍♀1🥰1👏1🆒1