Библиотека программиста
77.7K subscribers
4.78K photos
295 videos
98 files
7.94K links
Все самое полезное для программиста в одном канале.

Наши курсы: https://clc.to/Jil6fg

По рекламе: @tproger_sales_bot

Для обратной связи: @proglibrary_feeedback_bot
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
📊 Архитектурные диаграммы теперь можно не рисовать

Archify превращает описание системы в интерактивную схему. А если дать ему кодовую базу — сам покажет, как связаны компоненты.

Можно менять диаграмму прямо в чате: «добавь Redis», «покажи rollback».


Поддерживает 5 типов схем, экспорт в PNG/SVG и работает через Claude Code, Codex, Cursor и OpenCode.

🔗 GitHub

🔥 — забираю
❤️ — прощай, draw.io

🐸 Библиотека программиста
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥32❤12🤔9😢7👏4🙏4💯4🎉3🌚3🥰2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁50👏15❤6🥰5🤩5👍4🤔3💯3👾3❤‍🔥2
👁️‍🗨️ Возможно, главный bottleneck следующего этапа AI — вовсе не модель

Всё чаще предлагают притормозить ИИ, пока он не вышел из-под контроля. Но проблема может быть прозаичнее: AI становится слишком дорогим в обслуживании.

Новые дата-центры требуют всё больше электричества, а производство GPU и памяти не успевает за спросом.


В итоге лидеры AI одновременно обсуждают риски сверхмощных моделей и упираются в ограничения собственной инфраструктуры 🤡

🌚 — Значит, дальше будет только дороже
🔥 — И куда ещё столько GPU

🐸 Библиотека программиста
Please open Telegram to view this post
VIEW IN TELEGRAM
🌚60🔥20⚡6🎉6😢4😁3🙏3❤2🤩2😍2
Почему C++ ring buffer читает данные раньше записи

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

Причина: порядок памяти relaxed позволял потребителю увидеть новый индекс tail раньше данных в слоте. Запись tail с release публикует изменения, а чтение с acquire заставляет увидеть их до обращения к слоту.

Разбор ошибки и тестового стенда показывает, как поймать повреждение по контрольной сумме. Проверяйте такую очередь и с ThreadSanitizer, и в оптимизированной сборке.
❤8😁5🔥4🤔4😍4👏3🙏3🌚3😢2👾2
🤡 На Reddit рассказали историю собеседования, которое пошло максимально не по плану

Кандидат быстро решил тестовое и дошёл до финального раунда. Там руководитель засыпал его техническими вопросами. На одном кандидат не смог ответить сразу — и услышал:

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


В комментариях теперь спорят не столько о технических вопросах, сколько о том, где заканчивается стресс-интервью и начинается обычное хамство 🫠

💬 Вам когда-нибудь хамили на собесе?

🐸 Библиотека программиста
Please open Telegram to view this post
VIEW IN TELEGRAM
😢28❤17🌚8👾5⚡4😍4👍2🎉2
Как собрать первый модуль ядра Linux и понять ошибки сборки

Минимальный модуль занимает 22 строки, но на машине автора сборка создала файл размером около 106 000 байт. После удаления отладочных данных осталось 4 864 байта. Точный размер зависит от компилятора, конфигурации ядра и даже пути к каталогу сборки.

Для эксперимента нужны компилятор и заголовки именно запущенного ядра. Makefile передаёт исходник в kbuild, систему сборки ядра. Она компилирует код, проверяет обращения к экспортированным символам и собирает модуль в файл .ko.

Если сборка не начинается, проверьте ссылку /lib/modules/$(uname -r)/build. Перед загрузкой также стоит проверить Secure Boot и режим блокировки ядра: они могут отклонить уже собранный модуль. Полный путь от hello.c до диагностики ошибок включает Makefile, устройство файла .ko, параметры модуля и причины несовместимости старых руководств.
👍17❤7😍4😁3😢3
💻 Если Kubernetes пока выглядит как набор терминов, вот удобная шпаргалка:

🟡 Services — как Pod’ы находят друг друга
🟡 Networking — как устроен трафик
🟡 Storage — где и как хранятся данные
🟡 Scheduling — как Kubernetes выбирает Node для Pod

🐸 Библиотека программиста
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🌚9❤8🤔7😢7💯7😁4🎉4👾4❤‍🔥3
Как правило против ложных срабатываний ослепило линтер

Автор линтера не проверял поле tools: список допустимых инструментов меняется, и сохранённая копия быстро устаревает. Защита от лишних предупреждений скрыла ошибки синтаксиса, для которых список вообще не нужен.

В четырёх конфигурациях стояло tools: *. Документация не считает одиночную звёздочку допустимым шаблоном, а для доступа ко всем инструментам советует убрать поле. Четыре зелёных прогона ошибку не заметили, ручное чтение заметило.

Разбор слепого пятна советует проверять исключения: нет ли внутри них ошибки, которую можно найти без внешних данных.
❤9👏6🙏5🎉4👾3❤‍🔥2🔥2🌚2⚡1👍1
This media is not supported in your browser
VIEW IN TELEGRAM
🧹 Claude Code умеет чистить старые промпты

У Anthropic есть команда

/claude-api-prompt-audit


которая проверяет CLAUDE.md, AGENTS.md, skills и промпты.

📍 Она находит старые конструкции, которые больше не помогают моделям: лишние MUST/ALWAYS, think step by step, устаревшие примеры и конфликтующие правила.

🐸 Библиотека программиста
Please open Telegram to view this post
VIEW IN TELEGRAM
❤21🔥8🌚5👍4😁4💯4😢3🥰2👾2
🔥 Курс «ИИ для разработчиков» уже стартовал

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

⏬ ⁠Первое занятие — в открытом доступе

А дальше — практика на собственном проекте. Ваш код: контекст, планирование, subagents, тесты, ревью и PR.


По ходу работы разберёте MCP и научитесь контролировать расходы на модели.

Если хотите попасть в этот поток — ещё не поздно, присоединяйся 🫡
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤8😍5🔥4🤔4🎉4🙏4🤩3😁2🌚2
Как ускорить Quicksort на C, сократив ветвления

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

На Apple M1 сортировка 50 млн чисел заняла 1,70 секунды вместо 3,70. После дополнительных оптимизаций вариант показал 0,86 секунды против 1,19 у std::sort. На Intel Xeon соотношение другое, поэтому результат нужно проверять на своём процессоре.

В разборе с кодом на C показаны буфер, защита от неудачного разбиения и обработка малых участков.
❤13👍13😁11😍6🔥5🥰5👏5👾5
This media is not supported in your browser
VIEW IN TELEGRAM
⌨️ Google Translate, подвинься

LibreTranslate — переводчик, который живёт прямо на твоём ПК.

⬆️ ~40 языков
⬆️ без интернета
⬆️ бесплатно
⬆️ open source

А значит, можно переводить даже если вырубили свет или заглушили связь 😈

🔗 Ссылка на GitHub

🐸 Библиотека программиста
Please open Telegram to view this post
VIEW IN TELEGRAM
👍27❤11😁8😍4💯4⚡3🙏3😢2🌚2👾2
Как модернизировать устаревшее приложение с ИИ без полного переписывания

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

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

Функциональность лучше переносить небольшими частями, а ИИ использовать для анализа, тестов и повторяющихся преобразований. Решения о том, что сохранять, остаются за инженером.

Полный процесс миграции разобран на TypeScript и Vitest.
❤12👏6👍5😁5🌚5🎉4👾4🙏3⚡2🤩2
Как сделать системную утилиту понятнее и приятнее

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

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

Подход команды MacPaw к служебным приложениям пригодится и для внутренних инструментов: человек должен понимать, что произошло.
❤8😢7🤔6💯5👍4🔥4🎉4❤‍🔥3🙏2😍2
👩‍💻 Что на самом деле происходит внутри Go map?

После Go 1.24 обычный map внутри работает уже не так, как раньше: вместо старой схемы с overflow buckets используется Swiss Tables.

И там довольно много интересного: хеш делится на части, поиск идёт группами по 8 слотов, SIMD сразу сравнивает несколько значений, а при росте таблица может дробиться.


📍 В статье всё это разбирают буквально по шагам — от m["cow"] = 4 до устройства directory и таблиц.

Если хочется понять, почему Go map работает быстро, а не просто знать, что он O(1) — почитать стоит.

🐸 Библиотека программиста
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10❤‍🔥5👍5🙏5⚡4🤩4🥰3👾2💯1
Почему Big O недостаточно для выбора структуры данных в C++

Автор создал hashbrowns, набор тестов для массивов, связных списков и хеш-таблиц. В замерах линейный поиск по массиву обгонял хеш-таблицу до примерно 150 элементов: вычисление хеша съедало выигрыш от быстрого доступа.

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

Разбор устройства hashbrowns показывает, почему перед оптимизацией стоит измерять свою нагрузку: результат зависит от заполнения хеш-таблицы, ключей и удалений.
🔥8❤7🙏6🤔5😁4👍2🥰2
🖥 Git ускорили и добавили несколько полезных фишек:

🟡 git add --resolved — безопаснее закрывать merge-конфликты
🟡 поиск merge-base в некоторых репозиториях стал в десятки раз быстрее
🟡 git history drop — удалять коммиты из истории
🟡 массовая очистка уже смерженных веток
🟡 git bisect теперь может сам вернуться после нахождения проблемного коммита
🟡 Git умеет подсказывать очевидные ошибки в командах

И это только часть изменений 🔗

🔥 — пора обновляться
👾 — забираю новые команды
👍 — я всё ещё на Git 2.4

🐸 Библиотека программиста
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25🔥12❤10👾7🙏4😁3🎉2😍2