AI уже пишет код. Теперь важнее научиться встраивать его в разработку так, чтобы он действительно экономил время.
На курсе «ИИ для разработчиков» собираете AI-workflow на своём проекте: от задачи и планирования до тестов, ревью и PR🤩
Разберёте AI-агентов, MCP, контекст проекта, безопасность и контроль расходов на модели.
Промокод:
LastcallAIPlease open Telegram to view this post
VIEW IN TELEGRAM
❤10😁6👏5👾4🙏3🌚3
Please open Telegram to view this post
VIEW IN TELEGRAM
😁46👏8🤩8😢6🌚6🔥5🤔4⚡1👍1
Как защитить API от повторного выполнения операций
Клиент отправил POST, сервер выполнил операцию, но ответ потерялся из-за тайм-аута. Клиент повторяет запрос, и без защиты сервер может второй раз создать ресурс, изменить состояние или отправить письмо.
Идемпотентный эндпоинт связывает уникальный ключ операции с отпечатком тела запроса и сохранённым результатом. Первый обработчик атомарно резервирует ключ, поэтому параллельные запросы не запускают операцию заново. Повтор с тем же содержимым получает прежний результат, а тот же ключ с другим содержимым возвращает 409 Conflict.
Контракт идемпотентного 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.
Workflow1111 воссоздаёт большую часть возможностей AUTOMATIC1111 на одном рабочем поле: 11 конвейеров для генерации и редактирования изображений, удаления фона, создания масок, увеличения разрешения и других задач собраны из 73 узлов.
Каждый узел оборачивает функцию Python, модель, другой Gradio Space или строку набора данных. Входы и выходы становятся портами, которые разработчик соединяет в многошаговый процесс. Независимые ветви запускаются параллельно, а локальные функции могут обрабатывать данные без сетевого запроса.
Выходные узлы автоматически превращаются в REST-методы, а при включении MCP-сервера их может вызывать ИИ-ассистент. В разборе Workflow1111 показано, как связать узлы, подключить собственные функции и модели, запустить обработку на своей видеокарте и развернуть готовый интерфейс в Gradio Space.
❤8👍5🤔4💯4🌚3🔥2👏2🎉2
Следующий шаг — AI-агенты. Они не просто отвечают на запросы, а сами работают с данными, инструментами и выполняют цепочки действий.
На курсе «Разработка ИИ-агентов» разбираем всё, что нужно для этого уровня:
Курс полностью в записи — проходите материалы в своём темпе, без привязки к расписанию.
Please open Telegram to view this post
VIEW IN TELEGRAM
🌚7😢6😍5💯5👍3👏3
Как вручную переносить код от ИИ и не терять понимание проекта
В разборе своего рабочего процесса Анкур Сетхи описывает намеренно медленный режим: ассистент показывает изменения в чате, а автор вручную переносит каждую строку в редактор. Менять файлы, устанавливать зависимости и выполнять команды агент может только по отдельному разрешению.
По наблюдениям Сетхи, ручной набор помогает остановиться на незнакомом API или алгоритме, заметить галлюцинацию либо неудачное решение и сразу переработать код под проект. Заодно сохраняется карта кодовой базы: автор знает, где находится каждая функция и куда идти за следующей правкой.
Подход пригодится разработчикам, которым ИИ ускоряет рутину, но мешает понимать собственный репозиторий. Цена контроля: по личной оценке автора, с таким процессом он работает примерно вдвое быстрее, чем без ИИ, а не в десять раз.
В разборе своего рабочего процесса Анкур Сетхи описывает намеренно медленный режим: ассистент показывает изменения в чате, а автор вручную переносит каждую строку в редактор. Менять файлы, устанавливать зависимости и выполнять команды агент может только по отдельному разрешению.
По наблюдениям Сетхи, ручной набор помогает остановиться на незнакомом API или алгоритме, заметить галлюцинацию либо неудачное решение и сразу переработать код под проект. Заодно сохраняется карта кодовой базы: автор знает, где находится каждая функция и куда идти за следующей правкой.
Подход пригодится разработчикам, которым ИИ ускоряет рутину, но мешает понимать собственный репозиторий. Цена контроля: по личной оценке автора, с таким процессом он работает примерно вдвое быстрее, чем без ИИ, а не в десять раз.
Ankur Sethi's Lab Notebook
Prevent cognitive debt by manually retyping LLM-generated code — Ankur Sethi's Lab Notebook
❤16😁13🔥7😢4😍4
Иногда интерфейс тормозит не из-за запросов к 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 1.27 появился экспериментальный платформонезависимый API: векторные операции можно описывать на Go, не переписывая их под каждый процессор.
На поддерживаемом железе используются SIMD-инструкции, а недостающие возможности эмулируются. Пригодится для обработки изображений, численных расчётов и других тяжёлых циклов.
API пока экспериментальный. Насколько он ускорит вашу задачу, лучше проверить бенчмарком.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10❤5💯5😍4👍3🤩3👾3👏2
В GitHub Copilot app открыли PR на 2200 файлов, больше миллиона изменённых строк и 400+ комментариев.
Отрисовывать всё сразу — плохая идея. Поэтому на экране остаются только видимые строки, подсветка работает вне основного потока, а элементы кода переиспользуются при прокрутке.
Сложнее всего оказались комментарии: у каждого своя высота, и интерфейс должен учитывать её, не теряя позицию прокрутки.
Полезный разбор, если ваш список начинает задумываться уже на тысяче элементов.
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
Без привычной цепочки «измерить высоту → отправить postMessage → обновить родительскую страницу».
В Chrome 154 для этого появилось CSS-свойство frame-sizing: content-height. Встроенный документ должен разрешить такое поведение через метатег responsive-embedded-sizing.
Но постоянно следить за всем внутри iframe браузер не будет. Загрузили новые комментарии или раскрыли блок — вызывайте window.requestResize().
Для браузеров без поддержки старый способ можно оставить как запасной.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍8
Противоречия нет: старые поды ещё отвечают пользователям, а новые так и не запустились.
В лабораторной работе разбирают три причины:
Показывают, где смотреть условия Deployment, проблемный ReplicaSet и события.
Available=True не означает, что обновление прошло: рядом может стоять ProgressDeadlineExceeded.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤18
Собираем первое окружение Docker Compose для Go, MySQL и phpMyAdmin
Если на другом компьютере нет Go или отличается окружение, приложение может не запуститься как у разработчика. Пошаговое руководство для начинающих показывает, как упаковать Go-приложение со средой выполнения и зависимостями: написать Dockerfile, собрать образ и запустить контейнер.
Затем автор переносит пример в Docker Compose: описывает три сервиса, общую сеть, порты, переменные окружения и том MySQL для хранения данных. В результате поднимается учебное окружение с HTTP-эндпоинтом
Это основа для знакомства с контейнерами, а не готовая конфигурация для рабочего сервера. Go-код в примере ещё не подключён к базе данных.
Если на другом компьютере нет Go или отличается окружение, приложение может не запуститься как у разработчика. Пошаговое руководство для начинающих показывает, как упаковать Go-приложение со средой выполнения и зависимостями: написать Dockerfile, собрать образ и запустить контейнер.
Затем автор переносит пример в Docker Compose: описывает три сервиса, общую сеть, порты, переменные окружения и том MySQL для хранения данных. В результате поднимается учебное окружение с HTTP-эндпоинтом
/health и phpMyAdmin, веб-интерфейсом для MySQL.Это основа для знакомства с контейнерами, а не готовая конфигурация для рабочего сервера. Go-код в примере ещё не подключён к базе данных.
❤20
ORM безопасно передаёт параметры, пока вы не начинаете собирать SQL вручную: в сырых запросах, вспомогательных функциях или динамической сортировке.
В разборе на Sequelize есть и менее очевидный случай: строку сохранили в базе, потом достали и подставили в новый запрос. От хранения в БД она безопасной не стала.
Значения передавайте параметрами, а имена столбцов для сортировки выбирайте из разрешённого списка.
Хороший материал для ревью участков, где ORM заканчивается и начинается склейка строк.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩11👾7👍6
Граф вызовов можно собрать прямо через 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.
Участие бесплатное!
Количество мест для очного участия ограничено – успейте оставить заявку по ссылке⚡️
Конференция AI Driver & RecSys — главное событие года для тех, кто создаёт, исследует и развивает рекомендательные системы.
— главные тренды и вызовы RecSys
— реальные кейсы и новейшие исследования
— передовые IT-решения для рекомендательных систем
Вы сможете сами пообщаться с теми, кто создает рекомендации для миллионов пользователей.
Участие бесплатное!
Количество мест для очного участия ограничено – успейте оставить заявку по ссылке
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9😁9👍4🥰4🤔2
Учиться никогда не поздно — особенно когда технологии меняются быстрее, чем успеваешь привыкнуть к прошлому инструменту.
Поэтому на этой неделе дарим скидку 10 000 ₽ на любой курс Proglib по промокоду
LastcallAI 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 по-прежнему требует соблюдения контракта.
🐸 Библиотека программиста
Раньше 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