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

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

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

Для обратной связи: @proglibrary_feeedback_bot
Download Telegram
🔥 Последний день для разработчиков

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

На курсе «ИИ для разработчиков» собираете AI-workflow на своём проекте: от задачи и планирования до тестов, ревью и PR 🤩


Разберёте AI-агентов, MCP, контекст проекта, безопасность и контроль расходов на модели.

📍 Только сегодня, 30 сентября — скидка 10 000 ₽

Промокод: LastcallAI

🤩 ⁠Присоединиться к курсу
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10😁6👏5👾4🙏3🌚3
This media is not supported in your browser
VIEW IN TELEGRAM
Вот почему оперативная память стоит так дорого 🙄🙄🙄

🐸 Библиотека программиста
Please open Telegram to view this post
VIEW IN TELEGRAM
😁46👏8🤩8😢6🌚6🔥5🤔4⚡1👍1
Как защитить API от повторного выполнения операций

Клиент отправил POST, сервер выполнил операцию, но ответ потерялся из-за тайм-аута. Клиент повторяет запрос, и без защиты сервер может второй раз создать ресурс, изменить состояние или отправить письмо.

Идемпотентный эндпоинт связывает уникальный ключ операции с отпечатком тела запроса и сохранённым результатом. Первый обработчик атомарно резервирует ключ, поэтому параллельные запросы не запускают операцию заново. Повтор с тем же содержимым получает прежний результат, а тот же ключ с другим содержимым возвращает 409 Conflict.

Контракт идемпотентного API также охватывает статус незавершённой обработки, срок хранения ключей и внешние эффекты. Например, событие для очереди записывают вместе с результатом в одной транзакции, чтобы повторный запрос не породил второе действие.
👍15🔥8🤔5👾5❤4😁4🥰3👏3💯3⚡2
Как собрать интерфейс обработки изображений на Gradio Workflow

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

Каждый узел оборачивает функцию Python, модель, другой Gradio Space или строку набора данных. Входы и выходы становятся портами, которые разработчик соединяет в многошаговый процесс. Независимые ветви запускаются параллельно, а локальные функции могут обрабатывать данные без сетевого запроса.

Выходные узлы автоматически превращаются в REST-методы, а при включении MCP-сервера их может вызывать ИИ-ассистент. В разборе Workflow1111 показано, как связать узлы, подключить собственные функции и модели, запустить обработку на своей видеокарте и развернуть готовый интерфейс в Gradio Space.
❤8👍5🤔4💯4🌚3🔥2👏2🎉2
🎹 Что делать после ChatGPT?

Следующий шаг — AI-агенты. Они не просто отвечают на запросы, а сами работают с данными, инструментами и выполняют цепочки действий.

На курсе «Разработка ИИ-агентов» разбираем всё, что нужно для этого уровня:

⬇️ RAG и работа с данными
⬇️ MCP и инструменты
⬇️ структурированный вывод
⬇️ контроль качества и стоимости
⬇️ мультиагентные системы
⬇️ AgentOps

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

⏰ 4 октября цена вырастет на 10 000 ₽.

Если давно хотели разобраться в AI-агентах — сейчас ещё можно зайти по текущей цене.

🔗 ⁠Посмотреть курс
Please open Telegram to view this post
VIEW IN TELEGRAM
🌚7😢6😍5💯5👍3👏3
Как вручную переносить код от ИИ и не терять понимание проекта

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

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

Подход пригодится разработчикам, которым ИИ ускоряет рутину, но мешает понимать собственный репозиторий. Цена контроля: по личной оценке автора, с таким процессом он работает примерно вдвое быстрее, чем без ИИ, а не в десять раз.
❤16😁13🔥7😢4😍4
🖥 GitHub ускорил интерфейс, убрав CSS-in-JS

Иногда интерфейс тормозит не из-за запросов к API, а из-за того, как вы подключаете стили.

GitHub перевёл компоненты Primer на CSS Modules: время серверного рендеринга сократилось на 55%, а инициализации компонентов — на 25%. Стили больше не нужно вычислять через JavaScript во время рендеринга.

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

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

🔗 Разбор миграции

🐸 Библиотека программиста
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🎉8😁6🔥4👏4🤔3⚡2🥰2
👀 Обработчик завершился. А горутина осталась

Она ждёт отправки в канал, но получателя уже нет. И так может ждать сколько угодно.

В Go 1.27 для таких случаев появился профилировщик утечек горутин. Он работает и в продакшене, а результаты можно изучать через pprof.

Есть ограничение: инструмент ищет горутины, навсегда заблокированные на каналах или примитивах sync. Все утечки он не поймает, зато почти не даёт ложных срабатываний.

🔗 Пример утечки и исправление

🐸 Библиотека программиста
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥6🌚5❤4❤‍🔥3🎉2👏1😍1
👩‍💻 SIMD в Go: меньше поводов писать ассемблер

Сложить несколько пар чисел одной инструкцией вместо цикла по одному элементу — именно для этого нужен SIMD.

В Go 1.27 появился экспериментальный платформонезависимый API: векторные операции можно описывать на Go, не переписывая их под каждый процессор.

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

API пока экспериментальный. Насколько он ускорит вашу задачу, лучше проверить бенчмарком.

🔗 Устройство SIMD API

🐸 Библиотека программиста
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10❤5💯5😍4👍3🤩3👾3👏2
📊 Миллион строк в PR. И интерфейс не завис

В GitHub Copilot app открыли PR на 2200 файлов, больше миллиона изменённых строк и 400+ комментариев.

Отрисовывать всё сразу — плохая идея. Поэтому на экране остаются только видимые строки, подсветка работает вне основного потока, а элементы кода переиспользуются при прокрутке.

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

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

🔗 Как устроен просмотр diff

🐸 Библиотека программиста
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9🔥7🤔6😁4🙏4👍3
🧠 ИИ-агент берёт на себя рутину фаззинга

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

Taskflow Agent от GitHub Security Lab автоматизирует этот цикл для C/C++: готовит обвязку, запускает AFL, смотрит покрытие и подбирает новые входные данные.

Падения воспроизводит, примеры сокращает, дубли объединяет. Набор тестовых данных сохраняется между запусками.

Запускать стоит в одноразовой VM или Codespace: агент выполняет команды сборки на хосте, встроенной контейнерной изоляции нет.

🔗 Как устроен агент

🐸 Библиотека программиста
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11⚡8👾4
💻 Сторонний скрипт больше не сможет ходить куда угодно

В Chrome 152 появился Connection-Allowlist — HTTP-заголовок со списком разрешённых сетевых адресов для страницы или worker.

Браузер проверяет соединения и блокирует всё, что не попало в список. Это дополнение к CSP, в том числе для сетевых механизмов, которые она охватывает не полностью.

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

Для недоверенного кода авторы советуют отдельный cross-origin или sandboxed iframe с собственной политикой.

🔗 Примеры заголовков и настройки

🐸 Библиотека программиста
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14🔥8⚡5
⌨️ iframe научился подстраиваться под содержимое

Без привычной цепочки «измерить высоту → отправить postMessage → обновить родительскую страницу».

В Chrome 154 для этого появилось CSS-свойство frame-sizing: content-height. Встроенный документ должен разрешить такое поведение через метатег responsive-embedded-sizing.

Но постоянно следить за всем внутри iframe браузер не будет. Загрузили новые комментарии или раскрыли блок — вызывайте window.requestResize().

Для браузеров без поддержки старый способ можно оставить как запасной.

🔗 Примеры адаптивных iframe

🐸 Библиотека программиста
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍8
💻 Сайт работает. Kubernetes говорит, что деплой не удался

Противоречия нет: старые поды ещё отвечают пользователям, а новые так и не запустились.

В лабораторной работе разбирают три причины:

🟡 образ недоступен;
🟡 readiness probe не проходит;
🟡 для пода не нашлось места на узле.

Показывают, где смотреть условия Deployment, проблемный ReplicaSet и события.

Available=True не означает, что обновление прошло: рядом может стоять ProgressDeadlineExceeded.

🔗 Разобраться с зависшим rollout

🐸 Библиотека программиста
Please open Telegram to view this post
VIEW IN TELEGRAM
❤18
Собираем первое окружение Docker Compose для Go, MySQL и phpMyAdmin

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

Затем автор переносит пример в Docker Compose: описывает три сервиса, общую сеть, порты, переменные окружения и том MySQL для хранения данных. В результате поднимается учебное окружение с HTTP-эндпоинтом /health и phpMyAdmin, веб-интерфейсом для MySQL.

Это основа для знакомства с контейнерами, а не готовая конфигурация для рабочего сервера. Go-код в примере ещё не подключён к базе данных.
❤20
👀 ORM есть. SQL-инъекция тоже может быть

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

В разборе на Sequelize есть и менее очевидный случай: строку сохранили в базе, потом достали и подставили в новый запрос. От хранения в БД она безопасной не стала.

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

Хороший материал для ревью участков, где ORM заканчивается и начинается склейка строк.

🔗 Уязвимый код и исправления

🐸 Библиотека программиста
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩11👾7👍6
📊 Кто кого вызывает в вашем TypeScript-проекте?

Граф вызовов можно собрать прямо через API VS Code: Call Hierarchy отдаёт функции и связи между ними.

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

Автор показывает, как собрать данные и вывести граф в webview расширения.

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

🔗 Руководство с кодом

🐸 Библиотека программиста
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8⚡6❤6🤔6
В субботу, 17 октября, Москва станет точкой притяжения для всех специалистов в области RecSys 🔥

Конференция AI Driver & RecSys — главное событие года для тех, кто создаёт, исследует и развивает рекомендательные системы.

🔝 Весь день ведущие эксперты индустрии из крупнейших IT-компаний проведут на площадке Сбера, чтобы обсудить:
— главные тренды и вызовы RecSys
— реальные кейсы и новейшие исследования
— передовые IT-решения для рекомендательных систем

Вы сможете сами пообщаться с теми, кто создает рекомендации для миллионов пользователей.

📍Офис Сбер, Москва, Кутузовский проспект, 32.

Участие бесплатное!
Количество мест для очного участия ограничено – успейте оставить заявку по ссылке ⚡️
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9😁9👍4🥰4🤔2
🎓 С Днём учителя!

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

Поэтому на этой неделе дарим скидку 10 000 ₽ на любой курс Proglib по промокоду LastcallAI 📌

➡️ Хотите разобраться с ИИ-агентами? ⁠
➡️ Прокачать Python? ⁠
➡️ Изучить ML, алгоритмы или математику для AI?

🎁 Промокод действует до 09.10.2026

⏬ Выбрать новое направление
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🌚5💯4🔥3👾3
🦀 Rust научился писать C-функции с переменным числом аргументов

Раньше Rust мог вызвать внешнюю функцию вроде printf, но определить такую же на стабильном языке было нельзя. В Rust 1.99 поддержка C-ABI функций с аргументами через многоточие стала стабильной.

В разборе релиза показывают работу с VaList, новые функции для получения размера и выравнивания по raw pointer и изменения в стандартной библиотеке.

Есть и уточнение для Box::leak: документация теперь советует избегать схемы «утекло — потом освободили». Если память собираетесь возвращать, выбирайте Box::into_raw или Box::into_non_null. Для кода на стыке Rust и C это повод проверить свои обёртки: unsafe по-прежнему требует соблюдения контракта.

🐸 Библиотека программиста
Please open Telegram to view this post
VIEW IN TELEGRAM
👾13🌚9👍8❤7