fa
Feedback
Сохранёнки программиста

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

رفتن به کانال در Telegram

Заметки и ссылки на будущее, чтобы изучить когда будет время. Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Другие наши проекты: https://tprg.ru/med

نمایش بیشتر
6 638
مشترکین
اطلاعاتی وجود ندارد24 ساعت
اطلاعاتی وجود ندارد7 روز
+630 روز
آرشیو پست ها
Как ломаются мобильные приложения: пять багов на стыке систем Разбор кейсов из практики мобильного тестирования. Общее у всех одно: формально каждая часть системы работала правильно, а баг появлялся там, где две части впервые встречались с реальными данными и железом. Перечислять конкретные кейсы не буду, лучше сразу статью глянуть: https://tproger.ru/articles/kak-lomayutsya-mobilnye-prilozheniya @prog_stuff

Саймон Уиллисон выступил на PyCon US 2026 с пятиминутным докладом про последние полгода в LLM, а потом разложил всю презентацию с комментариями к каждому слайду. Получился сжатый, но плотный обзор с ноября 2025 по май 2026. Главная мысль: ноябрь 2025 года стал точкой перелома, особенно для агентов-программистов. До ноября они «часто работают». После ноября они «работают почти всегда» и могут стать основным инструментом, не отнимая половину времени на правку их ошибок. Условное звание «лучшей модели» сменило хозяина пять раз за полгода: Claude Sonnet 4.5, потом GPT-5.1, дальше Gemini 3, GPT-5.1 Codex Max, и наконец Anthropic вернул лидерство с Opus 4.5. Уиллисон тестирует это всё на личном бенчмарке «сгенерируй SVG пеликана на велосипеде»: задача, под которую ни одна лаборатория модели не обучает. Второй большой тренд: модели с открытыми весами выросли быстрее ожиданий. Gemma 4 от Google, крупнейшая серия с открытыми весами от американской лаборатории. GLM-5.1 от китайской GLM, открытая модель на 1,5 ТБ. И Qwen3.6-35B-A3B на 20,9 ГБ запускается на ноутбуке Уиллисона и рисует пеликана лучше, чем Claude Opus 4.7. Февральская часть посвящена «эпохе Claws»: после OpenClaw и подобных персональных ИИ-агентов в индустрии прижился общий термин Claws. Mac Mini начали раскупать в Силиконовой долине именно под локальный запуск этих агентов. Полный разбор со слайдами и оригинальными подписями: https://simonwillison.net/2026/May/19/5-minute-llms/ @prog_stuff

Как российская антивирусная индустрия выросла из дискет На Tproger вышла вторая часть истории российского IT, про 90-е и нулевые. Один из больших разделов — про то, как защита от вирусов из академического побочного проекта превратилась в экспортную технологию. В начале 90-х вирусы расползались через дискеты: принесли программу, заодно принесли вирус. Чем больше компьютеров появлялось в офисах и институтах, тем быстрее расходились заражённые файлы. Первой отечественной попыткой был Tadpole, затем антивирусный сканер Tornado, которые потом объединились в Spider's Web. В 1993 году появился Dr.Web, а в 1994-м вышла его первая коммерческая версия. Параллельно Евгений Касперский после работы в НИИ Министерства обороны ушёл в коммерческий IT, занимался антивирусами в КАМИ и в итоге собрал собственную фирму. Самое интересное случилось в 1996–1997: команда договорилась с иностранными вендорами, и зарубежные антивирусные продукты стали использовать российский движок внутри. Технология заработала на экспорт раньше, чем большая часть индустрии. В этом же материале: про Контур и переход налоговой на дискеты, рождение Rambler и Яндекса, дефолт 1998 года и появление первых онлайн-банков. Полная статья: https://tproger.ru/articles/kakim-bylo-it-v-90-h-i-nulevyh-modemy-kompy-defolt-i-pervye-o @prog_stuff

Vite+ — один CLI вместо разрозненного стека Исчерпывающий гайд по инструменту от VoidZero: один бинарник vp заменяет пять отд
Vite+ — один CLI вместо разрозненного стека Исчерпывающий гайд по инструменту от VoidZero: один бинарник vp заменяет пять отдельных конфигов (Vite, Vitest, Oxlint, Oxfmt, Rolldown, Vite Task и управление версиями Node.js). Раньше всё это жило в разных файлах: .eslintrc, .prettierrc, vitest.config.ts, .nvmrc. Теперь всё в одном vite.config.ts. vp check запускает форматирование, линтинг и типы разом. vp env заменяет NVM. Vite Task работает как кэшированный аналог Turborepo для монорепо. Гайд разбирает каждый компонент: где Vite+ хорошо подходит (новые проекты, стандартный стек) и где нужна осторожность, например в production-базах с кастомными ESLint-плагинами. Читать полный гайд, чтобы понять, стоит ли переезжать.

Страуструп в своём FAQ отвечает на вопрос «Как бороться с утечками памяти?» — коротко: «Пишите код, в котором их нет». Если new, delete и арифметика указателей разбросаны по всей кодовой базе, рано или поздно вы ошибётесь — сложность превысит усилия, которые можете себе позволить. Решение — прятать выделение и освобождение памяти внутри управляемых типов: контейнеры (vector, string) сами следят за своей памятью. Страустроп приводит пример программы без единого явного управления памятью, макросов, кастов и проверок переполнения. Ключевая идея — сократить количество объектов, за которыми программист следит вручную, с десятков тысяч до нескольких десятков. Тогда задача становится управляемой. Если в вашей области нет готовых библиотек, то стройте их сами, используя шаблоны и стандартную библиотеку. Если не получается систематически применять эти техники, то используйте детектор утечек или сборщик мусора. Полная версия: https://www.stroustrup.com/bs_faq2.html#memory-leaks @prog_stuff

Автор финско-английского словаря Taskusanakirja рассказал, как сжал 3-гигабайтную SQLite-базу до 10-мегабайтного бинарника. Проблема была в финском языке — он агглютинативный, у одного слова может быть больше ста форм с разными окончаниями. Trie, который использовался для поиска по префиксам, справлялся с 400 тысячами слов (~50 МБ), но отказался масштабироваться на десятки миллионов форм. Временный костыль — SQLite с полнотекстовым поиском на 3 ГБ, с которым нужно было таскать трёхгигабайтную загрузку. Решение — finite state transducer (FST) из Rust-крейта fst от BurntSushi. FST, в отличие от trie, сжимает и суффиксы тоже, а для финского с его повторяющимися окончаниями это идеально. Итог: 10 МБ вместо 3 ГБ, сжатие в 300 раз, и весь словарь теперь помещается в один статический бинарник. Полная версия: https://til.andrew-quinn.me/posts/replacing-a-3-gb-sqlite-database-with-a-7-mb-fst-finite-state-trandsucer-binary/ @prog_stuff

C3 — системный язык в традициях C — пять лет использовал unsigned типы для размеров и индексов, как C, C++, Rust и Zig. Казалось логичным: размер не может быть отрицательным. Но на практике это порождало классические баги: бесконечные циклы при декременте, сломанные сравнения при смешивании signed и unsigned, неявные конвертации, которые превращали -1 в огромное положительное число. Точкой перелома стал невинный пример (foo + a) % 2. В C3 операция int + uint продвигалась в signed, что чаще работало правильно. Но если foo оказывался больше INT_MAX, результат становился непредсказуемым. Проблема не в сложности исправления, а в том, что это неожиданно: везде «просто работало», а тут вдруг ломается. Ещё один показательный случай — кольцевой буфер. С signed типами ((start + offset) % length + length) % length корректно обрабатывает отрицательный offset. С unsigned та же формула молча даёт неправильный результат, и компилятор не подскажет, что offset_back обработан неверно. Автор языка отмечает, что Java в 90-х полностью отказалась от unsigned типов, а Go — язык низкого уровня от разработчиков, прекрасно знавших цену unsigned, — изначально выбрал signed размеры. Границы unsigned (0 и 4 млрд для 32-бит) лежат критически близко к рабочему диапазону, тогда как у signed опасная зона — где-то в районе ±2 млрд. Переполнение unsigned не бросается в глаза: оно даёт вполне правдоподобное число, просто неправильное. После перехода на signed тип sz (вместо usz) код оказался проще и очевиднее. Неявные конвертации между signed и unsigned убраны полностью. Автор признаётся, что привычка использовать unsigned была настолько глубоко внутренней, что переход казался «запрещённым» — но данные оказались неумолимыми. Полная статья: https://c3-lang.org/blog/unsigned-sizes-a-five-year-mistake/ @prog_stuff

Как именно контейнеры создают иллюзию полноценной Linux-системы внутри, используя только базовые инструменты Linux: unshare,
Как именно контейнеры создают иллюзию полноценной Linux-системы внутри, используя только базовые инструменты Linux: unshare, mount и pivot_root. Что разбирается в статье: — Mount namespace — почему это фундамент изоляции, а PID, cgroup, UTS и network играют второстепенные роли. —Mount propagation — как mount-события распространяются между namespaces и почему просто unshare недостаточно. — pivot_root — как меняем корневую файловую систему процесса, чтобы он видел только то, что ему положено. — Собираем вручную Docker-подобный контейнер, который запускается стандартными командами Linux. Полная статья: https://labs.iximiuz.com/tutorials/container-filesystem-from-scratch @prog_stuff

Microsoft выложила в open source самый ранний известный исходный код DOS — ядро 86-DOS 1.00, несколько development-снапшотов PC-DOS 1.00 и классические утилиты вроде CHKDSK. Исторический контекст: Tim Paterson написал 86-DOS (тогда ещё QDOS — «quick and dirty operating system») для Intel 8086-компьютера от Seattle Computer Products. Microsoft лицензировала его для IBM PC 5150, выкупила права, переименовала в MS-DOS — и запустила эпоху PC. Релиз позволяет посмотреть, как выглядела самая ранняя версия системы, которая стала фундаментом для десятилетий доминирования Microsoft на рынке персональных компьютеров. Полная статья: https://arstechnica.com/gadgets/2026/04/microsoft-open-sources-the-earliest-dos-source-code-discovered-to-date @prog_stuff

Современные CPU ненавидят непредсказуемые условные переходы. Если данные случайные, branch predictor постоянно ошибается, и процессор сбрасывает pipeline снова и снова. Пример из статьи: фильтруем массив, оставляя элементы меньше 500. Классический подход с if:
if (numbers[i] < 500) {
    small_numbers[j] = numbers[i];
    j += 1;
}
Результат на Apple M1: 0,329 сек за 1000 итераций. Branchless версия — без ветвления, unconditional store + conditional increment:
small_numbers[j] = numbers[i];
j += (numbers[i] < 500);
Результат: 0.036 сек. Разница в 9 раз.

Откуда в России взялись программисты — история, которую вам не рассказывали Если вы думаете, что российский IT начался с нуле
Откуда в России взялись программисты — история, которую вам не рассказывали Если вы думаете, что российский IT начался с нулевых — нет. Всё началось на несколько десятилетий раньше, в закрытых НИИ и институтских подвалах. В конце 1940-х Советскому Союзу понадобились вычислительные машины — моделировать ядерные реакции и считать ракетные траектории вручную было нереально. Учёный Сергей Лебедев построил первую советскую ЭВМ, а потом серию БЭСМ. Пиковая модель, БЭСМ-6, выпускалась почти 20 лет — именно на ней учили программированию в лучших технических вузах. Культура, сложившаяся в условиях жёстких ограничений, никуда не исчезла. Она и стала фундаментом для Яндекса, Контура и всего остального российского бигтеха. Читайте все 7 фактов на Tproger @tproger Читайте также в VK, Max и Дзен

Ребята из SourceCraft и Tproger пофантазировали и выкатили интерактивный 3D-квест Получилась классная игра с космической карт
Ребята из SourceCraft и Tproger пофантазировали и выкатили интерактивный 3D-квест Получилась классная игра с космической картой, где можно летать по орбитам и разгадывать загадки. Исследуйте инструменты для разработчиков, отвечайте на вопросы про космос и программирование и выигрывайте космические призы: https://tprg.ru/xc3T

Как Shazam узнаёт песню за секунды — разбор от Perthirtysix Микрофон ловит звук и превращает его в waveform, по сути последовательность чисел, давление воздуха во времени. Сырые волны бесполезны: та же песня громче даёт другой waveform. Поэтому телефон прогоняет звук через Fast Fourier Transform. Каждые 23 миллисекунды FFT раскладывает кусок волны на частоты — какие чистые тона нужно сложить, чтобы получить этот фрагмент. Складываем срезы рядом, получаем spectrogram: время по X, частота по Y, яркость = громкость. Но хранить весь spectrogram невозможно. Алгоритм выкидывает почти всё и оставляет только самые громкие пики — sparse constellation map. Это делает систему устойчивой к шуму: фон добавляет низкий уровень энергии, но редко создаёт самый громкий пик в регионе. Понятно, что один пик ничего не значит, 1200 Hz встречается в тысячах песен. Но пара пиков: 1200 Hz и 2400 Hz с разницей в 0,3 секунды уже специфична. Алгоритм берёт каждый пик как anchor, определяет target zone справа от него и создаёт hash из двух частот и временного интервала. Поиск работает через inverted index: вместо «какая песня совпадает?» система спрашивает «для каждого звука из клипа, в каких песнях он есть?». O(1) lookup, независимо от размера базы. Финальная проверка по timing: если хэши в клипе разделены 1,2 секунды, в песне тоже должны быть на том же расстоянии. В полной статье, конечно, понятнее и с интерактивными демо, рекомендую: https://perthirtysix.com/how-the-heck-does-shazam-work Интерактивы типа как на видео в этом посте. @prog_stuff

Если вам кажется, что рынок уже разобрался с AI в разработке, то цифры там довольно отрезвляющие: по опросу Stack Overflow 20
Если вам кажется, что рынок уже разобрался с AI в разработке, то цифры там довольно отрезвляющие: по опросу Stack Overflow 2025, AI используют 84% разработчиков, но агентами пользуются только 4%. Ещё 52% так и остаются на уровне базовых инструментов. Опрос Naition на русскоязычном рынке показывает ту же картину. Ребята собрали бесплатный roadmap с 40+ концептами и ссылками на первоисточники, чтобы вы не теряли месяцы на эксперименты в попытках перейти от «я иногда хожу в ChatGPT» к «у меня AI встроен в разработку как система». Но если вы хотите настоящего погружения, то Naition проводят буткемп про этот переход: — настройка AI-окружения под свой стек: RAG, MCP, SPEC, контекст-инжиниринг; — ускорение разработки фич от планирования до внедрения; — работа с командой AI-агентов для backend, frontend, аналитику и DevOps. Формат позволяет изучить всё на практике: за 12 недель участники успеют не просто поговорить про агентов, а собрать их под реальные задачи. Среди спикеров и экспертов практики из Meta, Google, Yandex Cloud, Сбера и других сильных команд. Бонусы: • есть оплата частями; • можно получить грант и снизить цену после отбора через анкету: участников лично выбирают топ-разработчики Naition; • для первого потока предусмотрены 3 месяца доступа в закрытый клуб после окончания курса. По промокоду TPROGER вы получите скидку 20% Старт потока: 5 мая, онбординг с 28 апреля Записаться на буткемп: https://naition.ai/ Это #партнёрский пост

А вот и продолжение истории про то, как ИИ-агент Kiro от Amazon снёс всё продакшен-окружение из-за мелкого бага. Помните, Amazon заявил, что это была «ошибка пользователя», и просто ввёл обязательное код-ревью человеком для любых изменений в проде? Как выяснилось, это была только часть решения. Внутри компании проблему решили устранить радикально — добавить ещё больше ИИ. Вместо того чтобы забрать у агента расширенные права или ограничить его песочницей, Amazon внедрил систему, где один ИИ следит за другим. Теперь рядом с Kiro работает агент-надзиратель. Его задача: — Выступать в роли «архитектурного критика» (circuit breaker), который в реальном времени оценивает план действий первого агента. — Проверять, не нарушают ли действия базовые правила (anomaly thresholds) вроде «не удалять ресурсы без бэкапа». — Блокировать выполнение скрипта (kill switch), если первый ИИ внезапно отклонился от изначального плана. Паттерн, когда модели спорят друг с другом для поиска оптимального решения, сейчас активно применяется в ИИ-разработке. Но на практике это выглядит так, будто компания просто не хочет снижать KPI по использованию нейросетей, поэтому лечит архитектурные проблемы новыми костылями. Интересно, когда агент-надзиратель решит, что для максимальной безопасности проще всего отключить дата-центр от интернета? @prog_stuff

SourceCraft — российская платформа для разработчиков. Внутри много разных инструментов (я не про всё знал!), исследовать их м
SourceCraft — российская платформа для разработчиков. Внутри много разных инструментов (я не про всё знал!), исследовать их можно в космическом квесте. Кратко, что под капотом у платформы: — Code Assistant. ИИ-плагин в IDE, консольный агент, ИИ-навыки и отдельный автономный агент, который по одному запросу поднимает репу с кодом, тестами и конфигами. — Нейроревью. Автоматический code review каждого PR. — Безопасность со сканером уязвимостей, проверкой зависимостей и нейротриажем (ИИ-фильтр ложных срабатываний сканеров). — Миграция с GitHub. Переносит репу со всеми PR и issue за минуту, GitHub Actions автоматически конвертит в свой формат. Но лучше сам квест посмотрите, там и про SourceCraft больше узнаете, и сможете получить сертификат на Яндекс Маркет с космическими призами вроде профессионального телескопа: https://tprg.ru/TI2Z @prog_stuff

Семь вопросов — и вы знаете, куда идти стажироваться Речь про оплачиваемую стажировку «Импульс» от YADRO. Читаете вопросы про
Семь вопросов — и вы знаете, куда идти стажироваться Речь про оплачиваемую стажировку «Импульс» от YADRO. Читаете вопросы про повседневные задачи, отмечаете «о, это прям про меня» — и на выходе получаете одно из направлений. С ориентирами по зарплатам на старте и в мидле. YADRO годами вкладывается в инженерную культуру, а по итогам 2025 года компания стала самой быстрорастущей технологической компанией в рейтинге работодателей HH․ru. Стажировка там — это реальные задачи в реально растущей компании. Пройти: https://tprg.ru/BTMA

Три ИТ-события, которые вы могли пропустить (а зря) Пока все гонятся за хайповыми новостями, мы вместе с коллегой Андреем Дмитриевым из JUG.ru собрали события, которые уже повлияли на мир разработки. В пилотном выпуске нового подкаста: — Хакеры стерли десятки тысяч ПК через Microsoft Intune — Дефицит оперативной памяти до 2030 года — Оптимизация glibc под x86_64 О других событиях вы можете узнать, послушав подкаст. Особое внимание предлагаем уделить рефлексии. В выпуске мы подсветили, почему те или иные истории важны для ИТ-сообщества. А теперь призываем вас в комменты под видео: что уже вошло в вашу жизнь из этих кейсов? И как думаете, что из этого не производит резонанса? Смотрите подкаст и присоединяйтесь к дискуссии: https://tprg.ru/S7jD

Постоянный доступ в Kubernetes: как атакующие закрепляются в кластере и остаются незамеченными Вы думаете, что если злоумышле
Постоянный доступ в Kubernetes: как атакующие закрепляются в кластере и остаются незамеченными Вы думаете, что если злоумышленник получил доступ к ноутбуку администратора на пять минут — это не страшно? А зря. Чтобы изменить мнение, советуем почитать перевод статьи Рори Маккьюна «Beyond the Surface» — детальный разбор одного реального вектора атаки на Kubernetes. Автор показывает, как с помощью встроенных механизмов (kubectl debug, containerd, статические манифесты, CSR API, Token Request API) можно: — получить root-доступ к узлу; — запустить скрытый контейнер в обход API; — организовать удалённое управление через Tailscale; — создать вечные учётные данные, которые невозможно отозвать без ротации корневого сертификата. В статье — не только техники атак, но и чёткие признаки обнаружения, а главное — меры защиты: изоляция API-сервера от интернета, минимальные привилегии RBAC, централизованные логи узлов. Полный текст: https://tprg.ru/gfJ6

TanStack тихо съедает экосистему React — история про то, как реально меняются экосистемы Два года назад TanStack означал одно
TanStack тихо съедает экосистему React — история про то, как реально меняются экосистемы Два года назад TanStack означал одно — React Query. Сегодня это восемь взаимосвязанных библиотек: Query, Router, Table, Form, Start, Store, DB и AI. Они постепенно вытесняют Next.js, React Router, Redux, React Hook Form и Zustand — не анонсами и не виральными твитами, а по одной зависимости за раз. Цифры из State of React 2026 показательны: у TanStack Query 68% использования и 1% негатива, у Next.js — тот же охват, но негатива в 17 раз больше. Причина структурная: библиотеки headless, сквозная типизация идёт от URL до server functions, и вы владеете кодом, а не воюете с фреймворком. Перевод колонки с dev.to стоит сохранить, даже если вы не пишете на React. Редкий случай, когда видно, как технологический сдвиг идёт снизу — через решения отдельных разработчиков, а не через маркетинг. Полезная оптика, если строите долгосрочный фронтенд-проект.