Как правило против ложных срабатываний ослепило линтер
Автор линтера не проверял поле
В четырёх конфигурациях стояло
Разбор слепого пятна советует проверять исключения: нет ли внутри них ошибки, которую можно найти без внешних данных.
Автор линтера не проверял поле
tools: список допустимых инструментов меняется, и сохранённая копия быстро устаревает. Защита от лишних предупреждений скрыла ошибки синтаксиса, для которых список вообще не нужен.В четырёх конфигурациях стояло
tools: *. Документация не считает одиночную звёздочку допустимым шаблоном, а для доступа ко всем инструментам советует убрать поле. Четыре зелёных прогона ошибку не заметили, ручное чтение заметило.Разбор слепого пятна советует проверять исключения: нет ли внутри них ошибки, которую можно найти без внешних данных.
❤9👏6🙏5🎉4👾3❤🔥2🔥2🌚2⚡1👍1
This media is not supported in your browser
VIEW IN TELEGRAM
У Anthropic есть команда
/claude-api-prompt-audit
которая проверяет CLAUDE
.md, AGENTS.md, skills и промпты.Please open Telegram to view this post
VIEW IN TELEGRAM
❤20🔥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 у
В разборе с кодом на C показаны буфер, защита от неудачного разбиения и обработка малых участков.
Процессор теряет время, когда ошибается в предсказании условий. Автор разбора переписал разбиение массива: элементы распределяются относительно опорного значения без условных переходов.
На Apple M1 сортировка 50 млн чисел заняла 1,70 секунды вместо 3,70. После дополнительных оптимизаций вариант показал 0,86 секунды против 1,19 у
std::sort. На Intel Xeon соотношение другое, поэтому результат нужно проверять на своём процессоре.В разборе с кодом на C показаны буфер, защита от неудачного разбиения и обработка малых участков.
easylang.online
Branchless Quicksort
❤13👍13😁11😍6🔥5🥰5👏5👾5
This media is not supported in your browser
VIEW IN TELEGRAM
LibreTranslate — переводчик, который живёт прямо на твоём ПК.
А значит, можно переводить даже если вырубили свет или заглушили связь
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26❤11😁8😍4💯4⚡3🙏3😢2🌚2👾2
Как модернизировать устаревшее приложение с ИИ без полного переписывания
ИИ может перенести старый код на новый стек вместе с неясными правилами и проблемами развёртывания. Получится та же система, только переписанная быстрее.
Сначала составьте карту кодовой базы: правила, зависимости, побочные эффекты и внешние вызовы. Затем зафиксируйте текущее поведение характеристическими тестами, чтобы видеть изменения после переработки.
Функциональность лучше переносить небольшими частями, а ИИ использовать для анализа, тестов и повторяющихся преобразований. Решения о том, что сохранять, остаются за инженером.
Полный процесс миграции разобран на TypeScript и Vitest.
ИИ может перенести старый код на новый стек вместе с неясными правилами и проблемами развёртывания. Получится та же система, только переписанная быстрее.
Сначала составьте карту кодовой базы: правила, зависимости, побочные эффекты и внешние вызовы. Затем зафиксируйте текущее поведение характеристическими тестами, чтобы видеть изменения после переработки.
Функциональность лучше переносить небольшими частями, а ИИ использовать для анализа, тестов и повторяющихся преобразований. Решения о том, что сохранять, остаются за инженером.
Полный процесс миграции разобран на TypeScript и Vitest.
❤12👏6👍5😁5🌚5🎉4👾4🙏3⚡2🤩2
Как сделать системную утилиту понятнее и приятнее
Системная утилита не должна молча выполнять команду и исчезать. Если программа не показывает ход работы и итог, пользователю сложнее понять результат и доверять ему.
Автор предлагает объяснять действие до запуска, показывать изменения по ходу процесса и завершать сценарий ясным результатом.
Подход команды MacPaw к служебным приложениям пригодится и для внутренних инструментов: человек должен понимать, что произошло.
Системная утилита не должна молча выполнять команду и исчезать. Если программа не показывает ход работы и итог, пользователю сложнее понять результат и доверять ему.
Автор предлагает объяснять действие до запуска, показывать изменения по ходу процесса и завершать сценарий ясным результатом.
Подход команды MacPaw к служебным приложениям пригодится и для внутренних инструментов: человек должен понимать, что произошло.
❤8😢7🤔6💯5👍4🔥4🎉4❤🔥3🙏2😍2
После Go 1.24 обычный map внутри работает уже не так, как раньше: вместо старой схемы с overflow buckets используется Swiss Tables.
И там довольно много интересного: хеш делится на части, поиск идёт группами по 8 слотов, SIMD сразу сравнивает несколько значений, а при росте таблица может дробиться.
Если хочется понять, почему 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 показывает, почему перед оптимизацией стоит измерять свою нагрузку: результат зависит от заполнения хеш-таблицы, ключей и удалений.
Автор создал hashbrowns, набор тестов для массивов, связных списков и хеш-таблиц. В замерах линейный поиск по массиву обгонял хеш-таблицу до примерно 150 элементов: вычисление хеша съедало выигрыш от быстрого доступа.
На создание тестов ушло четыре месяца: пришлось исключить влияние виртуальных вызовов, добавить прогрев процессора и фиксировать условия запуска.
Разбор устройства hashbrowns показывает, почему перед оптимизацией стоит измерять свою нагрузку: результат зависит от заполнения хеш-таблицы, ключей и удалений.
🔥8❤7🙏6🤔5😁4👍2🥰2
git add --resolved — безопаснее закрывать merge-конфликтыmerge-base в некоторых репозиториях стал в десятки раз быстрееgit history drop — удалять коммиты из историиgit bisect теперь может сам вернуться после нахождения проблемного коммитаИ это только часть изменений
🔥 — пора обновляться
👾 — забираю новые команды
👍 — я всё ещё на Git 2.4
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25🔥12❤10👾7🙏4😁3🎉2😍2
Кодить — это хорошо, а разбираться в том, что происходит за кадром, тоже полезно. Что там анализируют, зачем нужны метрики, кто такой этот ваш UX, какие задачи решает дизайн? Материалы ниже как раз об этом. Вникать во всё на сто процентов, конечно, не нужно, но базовое понимание поможет находить общий язык с коллегами и видеть чуть дальше кодовой базы.
💵 Как один лотерейный билет превратился в несколько сотен требований, десятки интеграций и пять месяцев Discovery
👍 Очнуться от мрака метрик: три истории от продакта о том, как решать неочевидные проблемы бизнеса
👨🎓 Как проверять продукт на UX на примере личного кабинета студента
🟠 Как тестировать пуши и диплинки в финансовом приложении
🏨 Дизайн в маркетинге: как фирменный стиль решает бизнес-задачи
🐸 Библиотека программиста
👨🎓 Как проверять продукт на UX на примере личного кабинета студента
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🥰6😢5❤🔥4🎉3🔥2💯2🤔1👾1
Как спроектировать память ИИ-агента, а не склад контекста
Один индекс для диалогов, правил и предпочтений смешивает временные обходы с утверждёнными процедурами: агент помнит всё, но не понимает, чему доверять.
Рабочая память хранит состояние задачи, эпизодическая хранит прошлые случаи, семантическая — устойчивые факты, процедурная хранит проверенные действия. Записям нужны тип, источник, уровень уверенности и срок жизни.
Схема архитектуры памяти агента показывает, как проверять эпизоды перед превращением в знания и удалять устаревшие данные.
Один индекс для диалогов, правил и предпочтений смешивает временные обходы с утверждёнными процедурами: агент помнит всё, но не понимает, чему доверять.
Рабочая память хранит состояние задачи, эпизодическая хранит прошлые случаи, семантическая — устойчивые факты, процедурная хранит проверенные действия. Записям нужны тип, источник, уровень уверенности и срок жизни.
Схема архитектуры памяти агента показывает, как проверять эпизоды перед превращением в знания и удалять устаревшие данные.
1👾8😁7❤5⚡4👍4🤔4😍4🤩3🌚3💯1
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