Обновить
512K+

Программирование *

Искусство создания компьютерных программ

855,69
Рейтинг
Сначала показывать
Порог рейтинга

Привет хабр! Извиняюсь, что все это время я к сожалению не придерживался старого графика 1 глава - 1 день, так, как был сильно занят, но сейчас за этот день готовы целых 2 главы — 5 и 6 вот как пример перевода отлаженый кусок 5 главы:

5.3 Поисковые системы

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

Поисковая система состоит из следующих частей:

  • Краулеры (обходчики), которые плавают по океану данных и превращают его в структурированные данные

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

  • И интерфейс поиска, используемый для запросов к индексу

Рисунок 5.1: Части поисковой системы

Почему это важно?

Потому что по своей сути OSINT — это построение специализированной поисковой системы о наших целях: вы обходите данные из других баз данных и индексируете только значащую информацию о вашей цели для последующего поиска. Будь то в markdown-отчёте, в maltego или в традиционной базе данных, такой как PostgreSQL.

Как мы увидим, поисковые системы не ограничиваются вебом (как Google или Bing). Существуют также поисковые системы по серверам и IoT (интернету вещей).

К сожалению для нас, большинство публичных поисковых систем вежливы: они уважают файлы robots.txt и потому могут пропускать интересные данные. Более того, они не обходят страницы, скрытые за экраном входа в систему.

Вот почему нам также нужно уметь строить собственные краулеры.

И кусок 6 главы все также отлаженый и переведенный:

6.6 Инъекции

Инъекции — это семейство уязвимостей, в которых в приложение можно внедрить вредоносную нагрузку для достижения различных эффектов.

Корень всех инъекций — неправильная обработка входных данных программ.

Что является примерами входных данных программы?

  • Для веб-приложения — это поля ввода формы или загруженный файл.

  • Для VPN-сервера — это сетевые пакеты.

  • Для wifi-клиента — это, среди прочего, имена обнаруженных wifi-сетей.

  • Для почтового приложения — это письма, их метаданные и вложения.

  • Для чат-приложения — это сообщения, имена пользователей и медиа.

  • Для видеоплеера — это видеофайлы и файлы субтитров.

  • Для музыкального плеера — аудиофайлы и их метаданные.

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

6.7 HTML-инъекции

HTML-инъекция — это уязвимость, при которой атакующий может внедрить произвольный HTML-код в ответы приложения, отображающего HTML-код.

Рисунок 6.1: HTML-инъекция

Она может использоваться для дефейса или обмана пользователей, заставляя их совершать вредные (для них) действия, например подменяя форму входа на вредоносную.

Вот пример псевдокода, уязвимого к HTML-инъекциям:

function comment(req, res) {
  let new_comment = req.body.comment;


    // comment is NOT sanitized when saved to database
    save_to_db(new_comment);


    let all_comments = db.find_comments();


    let html = "";


    // comments are NOT sanitized when rendered
    for comment in comments {
        html += "<div><p>" + comment + "</p></div>";
    }


    res.html(html);
}

6.8 SQL-инъекции

В 2010-е годы SQL-инъекции были в моде благодаря славе PHP и его небезопасным API. Теперь они встречаются всё реже и реже благодаря ORM и другим веб-фреймворкам, которые обеспечивают хорошую безопасность по умолчанию.

Рисунок 6.2: SQL-инъекция

Вот пример псевдокода, уязвимого к SQL-инъекции:

function get_comment(req, res) {
    let comment_id = req.query.id;


    // concataining strings to build SQL queries is FATAL
    let sql_query = "SELECT * FROM comments WHERE id = " + comment_id;


    let comment = db.execute_query(sql_query);


    let html = template.render(comment);


    res.html(html);
}

Который можно эксплуатировать следующим запросом:

GET https://kerkour.com/comments?id=1 UNION SELECT * FROM users

Также там есть еще пару подпунктов по инъекциям но все сюда не влезут, в общем как и раньше эти главы уже лежат на гитхабе.

И не забывайте голосовать в опросе https://forms.gle/35UtZ8Zea95UqKAL9

Теги:
-2
Комментарии7

Montazhnaya - открытый видеоредактор для Windows. Первая публичная Beta

Представляю Montazhnaya - независимый настольный видеоредактор для Windows, который я разрабатываю как открытый проект.

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

Что уже умеет редактор

Многодорожечный таймлайн для видео, изображений и аудио.

Импорт файлов и перетаскивание материалов прямо на дорожки.

Разделение клипов и изменение скорости воспроизведения от 0,25× до 4×.

Библиотека переходов с 21 анимированным демонстрационным примером.

Эффект Fire Whirl на WebGL2.

Экспорт в MP4 (H.264/AAC) и WebM — в зависимости от установленной версии FFmpeg.

Покадровая временная сетка экспорта и проверка готового файла.

Первая публичная версия 3.6.45 Beta прошла 435 автоматических тестов. Установщик и Portable-сборка также проверены на запуск в Windows.

Скачать

Официальный релиз:
https://github.com/DRINKH2SO4pikabu/montazhnaya-1/releases/tag/v3.6.45

Доступны две версии:

Setup - обычный установщик Windows.

Portable - запуск без стандартной установки.

Как запустить

1. Скачайте Setup или Portable со страницы релиза.

2. Для Setup запустите установщик и завершите установку. Для Portable достаточно запустить скачанный EXE-файл.

3. При необходимости подтвердите запуск в Windows. Исполняемые файлы пока не подписаны цифровым сертификатом, поэтому SmartScreen может показать предупреждение. Скачивайте программу только с официальной страницы релиза.

4. Для экспорта видео установите отдельно FFmpeg и FFprobe - в сборки редактора они не входят. Добавьте их в системный PATH либо укажите пути через FFMPEG_PATH и FFPROBE_PATH.(

Установка FFmpeg и FFprobe

Для экспорта видео редактору нужны FFmpeg и FFprobe. Они устанавливаются отдельно.

1. Скачивание. Откройте официальный сайт https://ffmpeg.org/download.html, выберите Windows builds → Gyan.dev. Скачайте архив ffmpeg-release-essentials.zip.

2. Распаковка. Распакуйте архив, например, в C:\ffmpeg. В папке bin должны находиться два файла: ffmpeg.exe и ffprobe.exe.

3. Настройка PATH. Нажмите Win + R, введите sysdm.cpl. Откройте «Дополнительно» → «Переменные среды». В разделе пользовательских переменных выберите Path → «Изменить» → «Создать» и добавьте путь:

C:\ffmpeg\bin

Сохраните изменения и перезапустите Montazhnaya.

4. Проверка. Откройте командную строку Windows (Win + R → cmd) и по очереди выполните:

ffmpeg -version

ffprobe -version

Если обе команды показывают информацию о версиях, настройка завершена.

Вместо PATH можно создать пользовательские переменные FFMPEG_PATH и FFPROBE_PATH, указав в них полные пути к соответствующим EXE-файлам.)

Техническая информация

ОС: Windows 10/11, x64.

Лицензия исходного кода: GNU GPL-3.0-or-later.

Репозиторий: https://github.com/DRINKH2SO4pikabu/montazhnaya-1

Сообщения об ошибках и предложения: https://github.com/DRINKH2SO4pikabu/montazhnaya-1/issues

Это ранняя Beta, а не готовая замена профессиональным редакторам, так что сильно не кидайтесь тапками.

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

Проект развивается. Это только начало.

Теги:
+1
Комментарии0

Что должно быть в вашем CLAUDE.md и как вообще устроена архитектура подгрузки этих файлов

Я надеюсь все знают, что при работе с Claude Code / Codex / Cursor / Gemini и т.п агентами, у вас в каждом проекте должны быть файлы, которые агент автоматически подсасывает в контекст.

Так вот, теперь покажу, из чего эта группа файлов может состоять

Эту схему я объясняю на своих лекциях по агентной работе, и по ней у меня устроены почти все проекты на машине

Суть коротко

Если вы работаете с Claude Code / Gemini / Codex / Cursor и практически любым современным аналогом, то все они ищут несколько файлов, которые автоматически загрузят себе в контекст, если наткнутся на них

Зачем?

Чтобы агент всегда помнил самые важные инструкции. И чтобы вам не приходилось рассказывать ему одно и то же

Далее разберу три вещи

Разбирать буду на примере Claude Code, но остальные работают практически также

1. Какие слои бывают и как агент их собирает
2. Что класть в глобальный файл, а что в проектный
3. Как не раздувать контекст

1. Слои

— глобальный ~/.claude/CLAUDE.md — грузится в каждой сессии. Неважно, откуда сам Claude Code был запущен
— CLAUDE.md в папке со всеми вашими проектами — правила распространяются на все проекты внутри
— CLAUDE.md или AGENTS.md проекта — только в этом проекте (AGENTS.md Claude прочитает, только если рядом нет CLAUDE.md)
— CLAUDE.md подпапки — когда агент полез в её файлы
— память проекта — MEMORY.md при старте, заметки по требованию

Claude не выбирает один файл, а складывает все в одно окно, от общего к частному

2. Что хранится в моем глобальном CLAUDE.md

У меня там:

— мой язык и стиль ответов
— профиль: кто я, часовой пояс, тариф
— система: Windows, какая оболочка, как писать пути, какой python
— инвентарь CLI и MCP на машине и правило «сначала CLI, потом браузер»
— правило памяти: «ничего не сохраняй без моего „да“»
— где лежит журнал сессий, если спрошу, что делали три дня назад

Но не все в одну кучу, а через индекс.

В глобальном Claude MD хранятся лишь ссылки, а детали подгружаются отдельно

Проектный CLAUDE.md — про ваш конкретный проект.

Его проектировать лучше тоже в формате индекса

Храните там всю инфу, которая была бы полезна новому сотруднику

Как запустить и проверить, как устроены папки, что нельзя трогать

Если сидите и на Claude, и на Codex, держите общее в AGENTS.md. А в CLAUDE.md подключите его строкой @AGENTS.md

Claude не так давно научился читать не только Claude md, но еще и Agents md (при условии, что Claude md отсутствует)

Один из самых важных блоков в этом файле — структура всей папки и что где лежит

3. Как не раздувать контекст

Сделайте CLAUDE.md оглавлением (ну или индексом). У каждого файла пара строк: зачем и когда его открывать: «например, упоминание вас → ссылка на файл user». Агент открывает его, только когда сработало условие

Итого:

— Глобальный CLAUDE.md — про вас и вашу железку, на которой он крутится
— проектный CLAUDE.md — про проект, соответственно
— есть еще MEMORY.md, но про него в следующий раз расскажу

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

А проверить, что лежит в контексте вашего агента, можно через команду /context (в Claude Code)

А какая самая полезная секция в вашем CLAUDE.md?

Я конечно не рассказал и 10% правил по работе с этими файлами, но лучше так, чем никак

Ну и да, у меня намного больше картинок, но на Habr в посте можно только 1 разместить

Теги:
+3
Комментарии13

Почему в CustomTkinter не работают Ctrl+C / Ctrl+V и как это починить

Писал админку на CustomTkinter и наткнулся на классический баг: стандартное контекстное меню (правая кнопка мыши) с «Копировать/Вставить» просто не работает. Точнее, оно появляется, но при нажатии ничего не происходит.

Проблема в том, что CTkEntry наследуется от tkinter, но не обрабатывает системные виртуальные события (<<Copy>>, <<Paste>>) так, как мы привыкли.

Как это выглядит в коде (не работает):

menu.add_command(label="Вставить", command=lambda: entry.event_generate("<<Paste>>"))

Как это реально починить:
Нужно обращаться напрямую к системному буферу обмена (clipboard) через методы самого виджета.

import tkinter as tk

def paste_text(entry_widget):
    try:
        text = entry_widget.clipboard_get()
        if entry_widget.selection_present():
            entry_widget.delete(tk.SEL_FIRST, tk.SEL_LAST)
        entry_widget.insert(tk.INSERT, text)
    except tk.TclError:
        pass

menu.add_command(label="Вставить", command=lambda: paste_text(my_entry))

Для «Копировать» логика похожая: проверяем selection_present(), берем selection_get() и кидаем в clipboard_append().

В итоге меню заработало идеально. Кто еще сталкивался с таким в CTk? Или вы юзаете pyperclip для таких задач?

Теги:
+1
Комментарии0

И снова привет хабру! Сегодня подправил 4 главу, исправил опять таки то, что режет слух. 4 глава уже лежит на гитхабе путь тот же. И вот как пример правленого перевода подраздел 4.2 Трейты:

4.2 Трейты

Трейты — это эквивалент интерфейсов из других языков (с некоторыми отличиями).

Так как определение термина через его синоним не очень полезно, посмотрим, что это означает в коде:

pub trait Dog {
    fn bark(&self) -> String;
}


pub struct Labrador{}


impl Dog for Labrador {
    fn bark(&self) -> String {
         "wouf".to_string()
    }
}


pub struct Husky{}

impl Dog for Husky {
    fn bark(&self) -> String {
         "Wuuuuuu".to_string()
    }
}


fn main() {
    let labrador = Labrador{};
    println!("{}", labrador.bark());


    let husky = Husky{};
    println!("{}", husky.bark());
}


// Output:


// wouf
// Wuuuuuu

Определив интерфейс Dog, все типы, реализующие этот трейт в нашей программе, будут считаться «собакой».

Именно поэтому говорят, что трейты (и интерфейсы) позволяют программистам определять разделяемое поведение: поведение, которое разделяется несколькими типами.

Остальные наработки и все остальное также можно найти у меня на гитхабе по ссылке https://github.com/smokeplay250-png/black-hat-ru

Теги:
+3
Комментарии0

Альтернатива postman.

Postman как отдельную программу уже не открываю. А расширение в VS Code тоже не выручает: это тоже самое веб-приложение во вкладке. Оно долго стартует, заметно ест память и живёт отдельно от файлов проекта. Коллекция остаётся в аккаунте, а не рядом с кодом, который её вызывает. Считаю что самый удобный http клиент у Jetbrains. Поэтому решил повторить его формат.

Сделал свою IDE и в нее встроил HTTP-клиент, который повторяет JetBrains HTTP Client. Файл .http или .rest — это запросы: слева текст, справа ответ и история. Формат привычный: блоки ###, переменные {{baseUrl}}, окружения http-client.env.json. После ответа можно сохранить значение для следующих запросов:

Запросы и коллекции можно группировать в .http файлах или в папках средствами IDE
Запросы и коллекции можно группировать в .http файлах или в папках средствами IDE

> {%

> client.global.set("token", response.body.token);

> %}

Дальше в том же файле работает {{token}}. Логин и вызовы API лежат в репозитории, их видно в diff и на ревью. Ответ можно скопировать как curl.

Готовую коллекцию переписывать не нужно. У открытого .http в меню «Действия» есть «Импорт из swagger» и «Импорт из Postman». OpenAPI 3, Swagger 2 или коллекцию Postman v2.1 вставляют JSON либо указывают URL. Импорт раскладывает пути, заголовки и тело в тот же формат: {id} и :id становятся {{id}}.

Почему это удобнее Postman:

  • запрос — файл проекта, а не запись в чужом облаке;

  • нет отдельного тяжёлого окна и веб-вью, которое тормозит;

  • окружения и скрипты лежат рядом с кодом;

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

В итоге HTTP-клиент встроенный в IDE можно использовать и в браузере, и как отдельное приложение. Он работает в обеих версиях (в Web-версии будут ограничения на CORS, но можно использовать прокси). В десктопе запросы идут напрямую, свой прокси задаётся в тулбаре или в окружении. А если нужно еще и что либо подправить, то есть редактор кода, который покрывает популярные языки: TypeScript и JavaScript, Python, Go, Rust, PHP, Java, C и C++, C#, Kotlin и другие.

В итоге для меня Postman закрыт. Теперь пользуюсь легковесной IDE как http-клиентом.

Теги:
+3
Комментарии2

ИИ уже умеет многое. Почему заставить его решать реальные задачи всё ещё сложно?

LLM генерируют код, AI‑агенты берут на себя целые процессы, а нейросети помогают анализировать данные. Но между работающим демо и инструментом, которому можно доверить реальную задачу, остаётся немало препятствий: потеря контекста, сложные интеграции и непредсказуемые результаты.

Как разобраться в устройстве моделей, научиться управлять агентами и встроить ИИ в разработку так, чтобы он действительно сокращал рутину? Собрали открытые уроки, на которых можно изучить ключевые технологии и разобрать их применение на практике. Их бесплатно проводят наши преподаватели - можно задать вопросы и протестировать формат обучения.

LLM и генеративный ИИ

  • 12 ноября в 20:00. «Что надо знать про работу LLM моделей». Записаться.

  • 16 ноября в 18:00. «Тенденции LLM и генеративного ИИ (GenAI)». Записаться.

AI‑агенты и автоматизация

  • 11 ноября в 20:00. «ИИ‑агент по расписанию: как заставить Claude Code работать, пока вы заняты другим». Записаться.

  • 23 ноября в 20:00. «Команда ИИ‑агентов в разработке Python‑проекта: как организовать совместную работу специализированных агентов». Записаться.

  • 24 ноября в 20:00. «Архитектурные паттерны ИИ‑агентов: как проектировать автономные решения для бизнеса». Записаться.

ИИ в разработке

  • 12 ноября в 20:00. «Интеграция ИИ в среду разработки на Python». Записаться.

  • 19 ноября в 20:00. «Инструменты на базе ИИ для Python‑разработчиков». Записаться.

RAG, векторный поиск и базы данных для ИИ

  • 18 ноября в 20:00. «C# и векторный поиск». Записаться.

  • 19 ноября в 18:00. «Qdrant: поиск по документам с фильтрацией по метаданным». Записаться.

  • 30 ноября в 20:00. «AI вместе с PostgreSQL». Записаться.

Машинное обучение и компьютерное зрение

  • 18 ноября в 20:00. «Нейросети в алгоритмической торговле — учим модель принимать торговые решения». Записаться.

  • 23 ноября в 20:00. «Edge AI баттл: Raspberry Pi 5 + Hailo-8 против Jetson Orin Nano». Записаться.

Прикладной ИИ: аналитика и управление

  • 16 ноября в 20:00. «AI для Delivery Manager: какие управленческие задачи уже можно автоматизировать». Записаться.

  • 30 ноября в 20:00. «ИИ‑инструменты аналитика данных». Записаться.

Что почитать по теме

Материалы, которые помогут глубже разобраться в устройстве ИИ‑агентов:

Теги:
+5
Комментарии1

Привет хабр еще раз! Сегодня мы обсудим тему из книги Black Hat Rust, а именно подраздел первой главы «Почему Rust?». Этот кусок текста уже полностью адаптирован и ничего больше не должно резать слух.

Итак: Почему Rust?

Мир безопасности (и, в более широком смысле, софта) страдает от слишком большого количества языков программирования со слишком большим количеством граблей. Приходится выбирать между быстрым, но небезопасным (C, C++…) и медленным, но в основном безопасным (Python, Java…).

Может ли кто‑то быть экспертом во всех этих языках одновременно? Я так не думаю. Бесчисленные баги и уязвимости в инструментах атакующих доказывают, что я прав.

А что, если бы вместо этого у нас был один‑единственный язык?

Язык, который, будучи освоенным, удовлетворял бы все потребности области:

  • Шеллкоды

  • Кроссплатформенные инструменты удалённого доступа (RAT)

  • Многоразовые и встраиваемые эксплойты

  • Сканеры

  • Фишинговые наборы инструментов

  • Встраиваемое программирование

  • Веб‑серверы

  • и так далее

А что, если бы у нас был единственный язык, который достаточно низкоуровневый, но при этом предоставляет высокоуровневые абстракции, исключительно быстр и легко кросс‑компилируется? И всё это при безопасности памяти, высокой переиспользуемости и исключительной надёжности.

Никаких больше странных тулчейнов, странных сборщиков бинарников, уязвимого сетевого кода, инжектируемых фишинговых форм…

Вы поняли: Rust — язык, чтобы править всеми.

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

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

Также можете почитать еще несколько моих уже готовых наработок, это главы с 0 по 3. Там текста гораздо больше! Найти их можно в моем репо на гитхабе вот ссылка еще раз: https://github.com/smokeplay250-png/black‑hat‑ru/ чтобы найти мои наработки вам надо перейти из main в /black hat books/in work/ru black hat rust/

Теги:
+1
Комментарии2

Привет хабру! Снова.

В общем пока вы голосуете в опросе и пока побеждает Malware Development for Ethical Hackers от Zhassulan Zhussupov

Я исправляю некоторые неправильности перевода, которые режут слух пока что почти закончил 3 главу Black Hat Rust поэтому довольно скоро будет релиз уже полностью исправленной книги и потом возьмусь за Black Hat Ruby и надеюсь за то время, что я буду править перевод книг в опросе проголосует побольше людей вот ссылка если кто не видел прошлый пост https://forms.gle/pny2pD7G7f5Fhtno7

Связаться со мной или сообщить о некоторый неправильностях перевода например можно в группе в тг вот ссылка https://t.me/+Xome2X_nj-wyMDcy только не переусердствуйте!

Также хочу выразить огромную благодарность человеку с ником @stxdtm на хабре за то, что он единственный сказал про то, что в переводе некоторые слова режут слух.

Теги:
+2
Комментарии0

Поля этой IDE слишком узки

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

Ну вот, например, комментарии. Какого чёрта они вообще должны находиться внутри исходников — очевидно же, что изначально «от бедности» — инструментальной бедности. Ферма́ с его «слишком узкими полями» улыбается и машет. Так вот — почему бы не хранить комментарии отдельно, привязывая к конкретным функциям, фрагментам или даже взаимодействиям между компонентами? Чтобы при необходимости можно было перейти по условной гиперссылке и прочитать, что, как и, главное, почему устроено именно так.

Особенно теперь, когда всё больше кода пишут LLM. Объяснение причин инженерного решения может быть куда ценнее самой реализации.

Закинул вопрос в ChatGPT: существуют ли уже подобные системы?

Оказалось, существуют. Он накидал несколько вариантов, от внешних аннотаций с привязкой к исходникам до довольно развитых систем документации. А заодно вспомнил Дональда Кнута и его концепцию Literate Programming.

1984 год, между прочим.

И вот тут меня слегка вштырило. Нет, не потому что Оруэлл. Просто Кнут предлагал писать программы прежде всего как текст, понятный человеку, в который встроены фрагменты программного кода. Специальные инструменты затем превращали это хозяйство в исходники для компиляции и документацию.

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

Ничего не напоминает?

Разумеется, у Кнута программные фрагменты приходилось писать самому, а tangle был детерминированным инструментом сборки, а не генератором кода из естественного языка.

Но сама архитектурная мысль-то какая!

1984: Literate Programming.

2026: Literate Prompting.

42 года спустя мы наконец додумались заменить tangle стохастическим компилятором.

Получается, Дональд Кнут придумал prompt engineering для LLM ещё в 1984 году. Просто LLM тогда немного не завезли.

Разумеется, после такого открытия я задал следующий вопрос: интересно, а кто-то уже замечал это?

Я так часто делаю, если что — и ChatGPT довольно часто портит мне «праздник первооткрывателя».

Итак,

оказывается, ещё в 2024 году прямо сравнивали prompt engineering с мечтой Кнута. В 2025-м Devin Weaverпришёл к практически той же мысли, обсуждая её с Claude. А в ноябре 2025 года вышла целая научная работа в IEEE Transactions on Software Engineering — Literate Programming with LLMs? — где авторы уже сопоставляют архитектуру WEB Кнута с генерацией программ посредством LLM.

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

Так что да — не только заметили, но уже и публикации написали, и прототипы наколхозили.

Но первоначальный вопрос никуда не делся.

Если реализация всё чаще генерируется машиной, а понимание её назначения, ограничений и причин инженерных решений живёт отдельно, то не пора ли пересмотреть само представление программного проекта?

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

Ирония в том, что для этого нам, возможно, пришлось пройти практически 42 (42, Карл!) года технологического развития, чтобы снова прийти к идее Кнута — теперь с пряниками печеньками и токенами.

Теги:
+3
Комментарии18

Почему мы до сих пор не уволены (или немного марксизма вам в ленту)?

Кого-нибудь посещала данная мысль? Агентная разработка вокруг нас уже пару лет. Уже около года она приносит несомненно огромные плоды, некоторые люди уже не пишут код руками, но работодатель всё ещё держит их при себе.

Всем (разрабам) приходят мысли — «сколько ещё это продлится?», «где граница, за которой AI-агенты достигнут того уровня, чтобы меня заменить» и т.д. А всё тянется как в том мемном ролике про грузовик и столб.

Почему всё так? Потому что капитализм.

Работодатель существует только потому, что существует свободный рынок труда. В этом дело. Каким бы ни был современный (или завтрашний) искусственный интеллект, он бесполезен (вреден?) для работодателя до тех пор, пока этот работодатель не сможет купить труд AI-агента на свободном рынке, а пока что этого и близко не видно.

Второй аспект — это свободный рынок средств производства для воспроизведения труда AI-агентов — его тоже нет и не предвидится.

Без свободного рынка труда и доступа к средствам производства для «производства труда AI-агентов» (я понимаю, как это звучит:) никакого перехода к замене человека на AI не произойдёт. Если работодатель решится на это, то он поставит себя в крайне нерыночные условия зависимости от (буквально) двух с половиной поставщиков услуг AI-агентов, что ставит под удар (делает невозможным) ведение бизнеса.

Для наших широт это ещё усугубляется и полной недоступностью этих 2.5 поставщиков.

Так что пока можно выдохнуть.

Теги:
-1
Комментарии0

Кто виноват, если ИИ ошибается — нейросеть или человек, который поставил ей задачу? 

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

В новом выпуске «Свободного слота» Паша Федотов и Саша Афёнов рассказывают, как ошибается ИИ. Обсуждают, почему руководителю опасно верить отчётам нейросети без проверки и почему с ИИ работать вроде стали быстрее, а результатов не всегда становится больше. И пробуют разобраться, кто виноват в ошибке агента, если задачу ему ставил человек.

🎧 Слушайте выпуск подкаста на подкаст-платформах:
VK Видео 
YouTube
Яндекс Музыка

Ещё больше экспертизы собрали для вас на сайте: смотрите наши лонгриды, новости, и видео. А узнать, как стать частью команды AvitoTech, можно вот здесь.

Теги:
+3
Комментарии0

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

Так вот, открыл я его и добавил осенних обновок. Теперь там есть несколько виньеток. Но, что ещё интереснее, теперь там есть две осенние (для северного полушария) текстуры: дождь на стекле и пятна крови.

Порадуйте себя кровавым кодом или плачущим кодом в картинках!
(на самом деле там также есть поддержка обычного текста и markdown)

Текстуры - не картинки. Они генерируются случайным образом.
Текстуры - не картинки. Они генерируются случайным образом.

Кровь можно даже сделать зелёной, как у инопланетян в фильмах.

Отличного всем настроения!
(поделитесь звездой за то, что не публикую тут свой Телеграм-канал :) )

Теги:
+1
Комментарии2

Ближайшие события

Обсудили побеги ИИ-агентов и безопасность с сооснователем HiveTrace

На подкаст к нашему директору департамента стратегического развития ИИ-продуктов Диме Юдину заглянул Евгений Кокуйкин — ко-фаундер компании HiveTrace, которая занимается разработкой решений для безопасного использования генеративного ИИ. 

Что обсудили:

  • как сломать системный промпт с помощью манной каши;

  • чему побег агента OpenAI и взлом Hugging Face могут научить рынок;

  • как работают троянские MCP-серверы и как пропущенный pull-request может обернуться rug pull-ом;

  • проблему мисалайнменета и как агенты срезают путь к решению задачи;

  • теневое использование ИИ в компаниях и способы от него защититься;

  • отставание секьюрити-практик от технологий.

Добавляйте в закладки и смотрите, где удобно: YouTube | VK Видео | Rutube

Теги:
0
Комментарии0

Что же мне перевести следующим?

Вижу вам зашел перевод книг особенно Black Hat Rust в посте я обещал сделать опрос если вам понравится перевод ну чтож ссылка на опрос в конце поста.

В общем, как я и обещал вот опрос https://docs.google.com/forms/d/e/1FAIpQLSdZnLR_qH0_Yiutv_F4KNBEH4GWYlgLzo-yWOjObn_2UdScjg/viewform?usp=header

Теги:
+2
Комментарии0

Агент написал код. Где его запускать?

Привет, Хабр! Мы продолжаем серию инженерных разборов о том, как в Just AI изменилась разработка с использованием LLM.

В прошлый раз показывали, как агенты помогают с разработкой: делают MR, запускают сборки, переводят задачи и помогают с дежурством.

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

Допустим, вы попросили агента разобраться в незнакомом сервисе и нарисовать схему того, как через него проходит запрос. Агент написал код и собрал страницу. Чтобы посмотреть результат, нужно установить зависимости, запустить веб-сервер и открыть страницу в браузере. А чтобы показать ее коллеге, придется придумать, как дать ему доступ. Если к странице понадобится вернуться через месяц, чтобы что-то дополнить, еще нужно будет найти исходники и понять, как ее обновить.

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

Обычно путь от просьбы до результата выглядит примерно так: 

  1. попросить агента написать код, 

  2. установить зависимости на своем компьютере,

  3. запустить локально, 

  4. отправить коллеге скриншот или архив.

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

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

Так же можно организовать обработку файлов. Агент может установить в песочнице инструмент вроде Stirling-PDF и проверить, как он работает, на тестовом документе. После этого человек загружает рабочий файл через браузер — сам файл не попадает в диалог с моделью.  

3 ноября в 15:00 МСК на вебинаре «Агенту нужен компьютер: как поручать повседневные задачи и пользоваться результатом», мы покажем записи реальных рабочих сессий и объясним, как устроено решение. 

Вы узнаете:

  • как ассистент через MCP и скиллы получает отдельную Linux-машину и почему, если агент что-то сломает, пострадает она, а не ваш ноутбук;

  • как агент собирает страницу со схемами и графиками и публикует ее по ссылке;

  • что делать, когда страниц становится много и непонятно, где последняя версия;

  • как запустить чужой Jupyter Notebook без установки его стека;

  • как поручить агенту установку софта для обработки файлов, не передавая ему сами файлы;

  • где агент ошибался и что пришлось проверять вручную.

Спикер: Дмитрий Мирошниченко, старший разработчик ПО Just AI.

Это второй вебинар серии «Инженерные разборы». На первом мы разбирали, как превратили правила команды разработки в инструкции для LLM-агента. Подробнее об этом — в нашей статье. 

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

Зарегистрироваться можно по ссылке.

Теги:
+2
Комментарии0

AI‑агенты, баги в API и деградация моделей: бесплатные уроки этой недели

Модель отлично работала на тестах, а в продакшене начала ошибаться. API ведёт себя непредсказуемо, интеграция с соседней системой превращается в отдельный проект, а AI‑агента пора научить делать что‑то полезнее генерации текста. Знакомые ситуации?

На этой неделе разбираем, как находить причины таких проблем, выбирать подходящие инструменты и применять их в реальных проектах. Собрали 15 бесплатных демо-уроков OTUS — от тестирования FastAPI и мониторинга LLM до архитектуры систем и управления процессами.

Искусственный интеллект и машинное обучение

  • 26 октября, 20:00. «Data Drift в машинном обучении: почему модели деградируют в продакшене и как это контролировать». Записаться

  • 27 октября, 18:00. «Langfuse в AgentOps: наблюдаемость и оценка LLM‑агентов». Записаться

  • 27 октября, 20:00. «Что надо знать про работу LLM моделей». Записаться

  • 27 октября, 20:00. «Сверточные сети: от распознавания изображений до прогнозирования курса биткоина». Записаться

  • 28 октября, 18:00. «ИИ агенты на основе LLM и мультиагентные системы». Записаться

Разработка и интеграция систем

  • 26 октября, 20:00. «Tool Calling и MCP: интеграция ИИ‑агентов с корпоративными системами». Записаться

  • 26 октября, 20:00. «Тестирование FastAPI: проверяем API с помощью pytest». Записаться

  • 28 октября, 20:00. «JDBC: как Java‑приложения взаимодействуют с базами данных». Записаться

  • 29 октября, 20:00. «uv как инструмент управления зависимостями Python‑проекта». Записаться

  • 29 октября, 20:00. «Магические слова async/await». Записаться

Архитектура и системный анализ

  • 26 октября, 20:00. «Интеграция приложений: пошаговая инструкция для системного аналитика». Записаться

  • 27 октября, 19:00. «Киберпанк 2027: Возвращение Корпоративного Архитектора». Записаться

Управление проектами и бизнес‑процессами

  • 26 октября, 20:00. «Бизнес‑процессы в Битрикс24». Записаться

  • 26 октября, 20:00. «Цифры решают все: как внедрение метрик и KPI ускоряет достижение целей». Записаться

  • 27 октября, 20:00. «Анатомия сопротивления: превращаем токсичных стейкхолдеров в союзников проекта». Записаться

Теория — это хорошо, но самые интересные вопросы возникают в продакшене. Приходите разбираться в них вместе с преподавателями OTUS.

ЧТО ПОЧИТАТЬ

Пока ждёте открытые уроки, предлагаем разобраться в нескольких темах подробнее:

Теги:
+4
Комментарии0

В Интернете распространяют якобы объявление в тренажёрном зале Сан-Франциско. В вирусном твите утверждается, будто в сети заведений Fitness SF призывают не тратить время на вайб-кодинг между подходами и вместо этого дать мышцам отдохнуть. Каких-либо других причин (к примеру не занимать инвентарь больше нужного) для такого правила физкульт-этикета не приводится.

@iansbrash

На деле эта картинка скорее всего была сгенерирована в ChatGPT. Указывают на это срабатывание детектора по адресу openai.com/research/verify/ и выданный изданию Business Insider комментарий от само́й сети фитнес-центров, где глава отдела по маркетингу назвал картинку фейком. Это, конечно, никак не мешает другим шутникам распространять скриншоты электронных писем от Fitness SF, где их просят не вайбкодить в зале.

На деле проблема реальная, пусть до подобных объявлений далеко даже в Сан-Франциско, где концентрация программистов на квадратный метр выше, чем в любом другом городе мира. Как описывал его автор OpenClaw Питер Штайнбергер, вайбкодинг — это не только продуктивно, но и увлекательно настолько, чтобы ломать режим дня и вторгаться в офлайновую жизнь.

Для начала нужно настроить устройства. Поскольку в macOS в настройках некоторое поведение для энергосбережения поменять невозможно, в Интернете массово распространяют физические (1, 2, 3, 4) и программные (1, 2, 3, 4, 5) инструменты для предотвращения засыпания Macbook при закрытии крышки. Всё это нужно для того, чтобы вайбкодить на ходу.

Как рассказывает Business Insider, вайбкодер с полуоткрытым ноутбуком наперевес — частое явление в аэропортах, офисах и даже ледовых катках. В последнем случае в этом признался сам виновник, который рассказал изданию, как пронёс ноутбук в раздевалку на ледовой арене. Сотрудники бунтуют против требования закрывать ноутбуки на офлайн-встречах, в кафе отключают бесплатный Wi-Fi, агенты для программирования разрушают семейные отношения. Кстати, отчасти помогают договорённости между парами: заниматься вайбкодингом только тогда, когда дети либо спят, либо не дома.

Встречаются также жалобы на вайбкодинг в качалке. В посте пятимесячной давности один из гостей Сан-Франциско рассказал, что многие из залов фитнес-клубов Equinox были больше похожи на коворкинг — ноутбуков уже больше, чем тренажёров. Например, посетитель зала между подтягиваниями что-то программировал с агентом. Большое число схожих сообщений встречается на Reddit (1, 2, 3, 4). Жалуются всегда на примерно одно и то же: посетители проносят ноутбук (или даже несколько), упражнениями занимаются вяло и неинтересно, а в перерывах между подходами работают.

Поэтому в реальность картинки поверить легко. Удивительнее даже, почему такое объявление ещё где-то не висит.

Теги:
+6
Комментарии3

Дайджест: новости за сентябрь и октябрь 2026

Рассказываем, какие изменения произошли на платформах Cloud.ru за последние два месяца, и чем это может быть полезно.

🧠 AI Factory
Evolution Distributed Train — обновили образы Jupyter Server: новый интерфейс, две темы оформления, совместная работа с GPU. В регионе SR005 добавили временное хранилище.

Playground — теперь есть возможность запуска ML и ИИ-приложений с GPU без развертывания инфраструктуры. Готовые образы, init-скрипты, подключение S3/NFS, автовыключение по нагрузке.

Мониторинг — появились метрики DCGM: энергопотребление, активность графических движков, температура GPU, активность памяти.

☁️ Cloud.ru Evolution
Evolution Workflow Studio — представили облачный инструмент для выпуска приложений разработчиками и ИИ-агентами. Автоматизирует сборку и развертывание в управляемых процессах.

Evolution Repo — добавили новую фичу RepoWiki для автоматического анализа кода и формирования документации. Хорошо работает даже с обширной кодовой базой, поддерживает инкрементные обновления: при изменении кода документация обновляется, а не переписывается заново.

Evolution Managed OpenSearch — выпустили в коммерческую эксплуатацию готовый кластер для поиска, аналитики и работы с логами, который подходит для промышленных нагрузок. Теперь можно сосредоточиться на логике продукта, а не развертыванием и обслуживанием решений для анализа логов. 

Evolution Managed DocumentDB — вывели на стадию публичного тестирования управляемую документную NoSQL-базу с репликацией и шардированием. Пока можно подключить и пользоваться бесплатно. Дает возможность заниматься разработкой, а не администрированием кластера, ручным масштабированием и настройкой бэкапов.

Evolution Artifact Registry — новая версия API, выпустили кеширующие реестры в коммерческий доступ: теперь можно пользоваться сервисом как складом быстрого доступа для программных пакетов из зарубежных репозиториев. Это очень удобно для команд: один скачал — все пользуются, сборки не падают. Уже доступны Docker-образы, Helm-чарты, deb-пакеты, RPM-пакеты, PyPI-пакеты, NPM-реестры пока на стадии публичного тестирования.

Evolution Managed Kubernetes — добавили поддержку Agent Sandbox 1.0.1/1.0.4 и аннотации для Magic Router.

Evolution Compute — cloud-init для всех образов, дашборд производительности дисков.

📈 Evolution Data Platform
Evolution Managed Airflow — добавили выбор источника DAG-файлов: Object Storage или Git. Упрощает интеграцию с пайплайнами, обновление инстансов через личный кабинет без простоя.

Evolution Managed BI — появилась роль bi.viewer для управления доступом в Superset. Безопасный просмотр дашбордов для аналитиков.

Evolution Managed Flink — теперь есть роль flink.viewer для контроля доступа к задачам потоковой обработки.

Evolution Managed Trino — интегрировали консоль WebSQL 0.4.0 для SQL-запросов в браузере. Теперь быстрая аналитика возможна без установки клиентов.

Evolution Managed ClickHouse — подключили мультизональность для отказоустойчивости и выделенный режим хостов.

🏢 Cloud.ru Advanced
Advanced Relational Database Service — теперь поддерживается PostgreSQL 18.

Advanced Cloud Container Engine — добавили поддержку Kubernetes 1.36, Full-Port Forwarding, резервные копии кластера.

🖥 Облако VMware
VMware Cloud Director — сделали MCP Server и выложили код на GitHub, чтобы можно было управлять виртуальными машинами текстом. Подробно про это писали здесь.

Резервное копирование ВМ — теперь можно хранить в Object Storage.

В личном кабинете появилась функция контроля затрат через Гига-помощник. Он покажет баланс, статус автосписания, остаток грантов. 

Маркетплейс
Добавили: MySQL, Elasticsearch, MongoDB, PostgreSQL. Запуск в несколько кликов.

📽️ Вебинары и обучение
Делимся записями прошедших встреч:

💼 Свежие кейсы ждут вас на следующей неделе.

До связи и хороших выходных! ✌️

Теги:
+2
Комментарии0

В ИИ сейчас все джуны

ИИ уже меняет профессии, и реагируют на это по-разному. Одни боятся, что ИИ их заменит и обесценит знания, на которые ушли годы. Другие видят огромные возможности, но не уверены, что завтра ИИ не заберёт и их.

Каким будет будущее, не знает никто. Но направление уже видно. Искусственный интеллект — это инструмент, и выигрывает тот, кто умеет им пользоваться.

Специалистов с многолетним опытом работы с ИИ пока нет, технология молодая. Но кто-то начал раньше, разобрался в принципах и уже умеет применять ИИ по-настоящему эффективно. Представьте пешего курьера без навигатора, которому дали самокат 🛴 и навигатор 🗺️. Ими тоже надо научиться пользоваться. Но усилий на это нужно немного, а преимущество огромное.

Пользуюсь LLM с выхода ChatGPT и выработал процесс, который на подписке за $20 позволяет совмещать сложные инженерные проекты, участвовать в хакатонах и делать пет-проекты.

А какой основной воркфлоу с ИИ-агентами у вас? Вы даёте агенту задачу целиком и проверяете результат? Сначала составляете с ним план, потом просите сразу все реализовать? Доверяете только точечные правки? Или вообще не пускаете агента в свой код?

Теги:
+2
Комментарии16
1
23 ...