This media is not supported in your browser
VIEW IN TELEGRAM
Когда можно спокойно идти в Yandex Cloud, а когда без онпрема и своего железа лучше даже не начинать.
Привет всем. Бизнес хочет «как ChatGPT», но живет в жесткой реальности: 152-ФЗ, Роскомнадзор, ФСТЭК, а иногда и 187-ФЗ про критическую инфраструктуру (КИИ). Игнорировать это нельзя: с 30 мая 2025 года штрафы за нарушения по персональным данным (ПД) и требования к документации (политика ПД, регламенты) выросли, и играть в рулетку уже дорого.
На этом фоне на рынке появился "зоопарк" российских LLM: от GigaChat и YandexGPT в облаке до полностью собственных, кастомных моделей на своем железе.
Главный тезис: Self-hosted - не магическое слово безопасности, а всего лишь один из режимов работы. Вопрос не в том, что лучше, а в том, какая задача и какой регулятор.
Российский рынок LLM делится на три ключевых сегмента:
Это самый простой вход:
Эти облака (включая VK Cloud) активно используются, так как дата-центры находятся в РФ, что снимает базовые вопросы по локализации. Вы платите за токены и вычисления, а не за закупку GPU и команду MLOps.
Это развертывание платформы вендора внутри вашего периметра или в отдельном закрытом сегменте.
Вы берете отечественные модели (GigaChat, YandexGPT, Cotype, T-Pro) как основу, дообучаете их и крутите на своем GPU-сервере в российском ЦОДе. Выполняете все требования 152-ФЗ к ЦОД и физической защите сами.
💻 Self-hosted без своего железа: аренда GPU в российских ЦОД
Важно понимать - self-hosted не всегда значит «купили стойку, притащили GPU и теперь страдаем с охлаждением и апгрейдами».
Есть промежуточный вариант: взять готовые GPU-серверы в аренду у российских провайдеров и крутить опенсорсные LLM уже на них. По сути получается такой компромисс:
Я, например, знаком с Selectel (не реклама): у них можно взять сервера с GPU в аренду и довольно быстро поднять свою Llama, Mistral или другую опенсорсную LLM. Без истории «ждем поставку железа три месяца, потом еще два согласуем с безопасниками». И дополнительно они сами выступают за безопасность. Посмотрим как у них получится.
Чем такой подход отличается от классического облака с готовой LLM:
Юридически и с точки зрения ИБ это ближе к self-hosted, чем к SaaS: провайдер дает ресурсы и площадку, но не лезет в ваш стек и логи. При этом входной билет сильно ниже, чем в сценарии «купили парк GPU-серверов и теперь сами за все отвечаем».
152-ФЗ и ПД: Данные с персональными данными (ПД) обязаны храниться и обрабатываться на территории РФ, особенно если вы предоставляете массовый сервис для граждан. Российское облако (Yandex Cloud, SberCloud) это не запрещает, но провайдер обязан иметь дата-центры в РФ и соответствовать 152-ФЗ, а также стандартам ISO, PCI DSS.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3❤2
187-ФЗ и КИИ — главная болевая точка. Если ваша компания попадает под 187-ФЗ (банки, энергетика, транспорт, крупный завод), то требования к безопасности значимых объектов КИИ сильно выше.
В таких условиях онпрем-платформа или строго изолированный контур обычно проще согласовывается с «безопасниками», чем «просто облачный SaaS».
Я думаю, что про штрафы за нарушение ФЗ мне не стоит упоминать. Там просто «космические масштабы»
⤴️ ⤴️ ⤴️ ⤴️ ⤴️ ⤴️ ⤴️ ⤴️
😋 Когда облако - это оптимальный выбор (и не геройствуем)
Self-hosted не нужен, когда:
0️⃣ Вы генерируете тексты, а не оперируете данными. Генерация маркетинговых текстов, описаний товаров, скриптов продаж - если там нет чувствительных ПД.
1️⃣ Вы делаете внутреннюю поддержку. Поддержка сотрудников в бэкофисе, аналитика, если в запросы не летят паспортные данные, медданные и прочее.
2️⃣ Вы используете RAG с очисткой. RAG по внутренним документам, где вы заранее отфильтровали ПД и секреты, или работаете с обезличенными версиями.
3️⃣ Вы - стартап. У вас нет бюджета и нет команды на свой ML-стек и ИБ. Но только соблюдайте очистку ПД.
Аргументы «за» облако:
🏃♂️ Зрелые облака (Yandex Cloud, SberCloud) уже позиционируют себя для ИИ-задач.
🏃♂️ Готовый SLA, сертификации, резервирование - много инфраструктуры «из коробки».
🏃♂️ Вход дешевле: платите за токены, а не за закупку GPU.
«Можно идти в облако, если...»:
🙂 Регулятор не требует отдельного контура и сертификации системы.
🙂 В запросах к LLM нет сырых ПД или коммерческой тайны целиком.
🙂 Вас устраивает, что частичный контроль над инфраструктурой у облачного провайдера.
⤴️ ⤴️ ⤴️ ⤴️ ⤴️ ⤴️ ⤴️ ⤴️
😐 Когда Self-hosted / Онпрем действительно нужен
Если ваша задача сопряжена с высоким риском, облако - это лотерея. Максимальная локализация необходима, когда:
🐱 Вы работаете с чувствительными доменами. Банки, страховые, медицина, госуслуги, телеком - везде, где много высокоуровневых ПД и подзаконки к 152-ФЗ.
🐱 Запрещена утечка логов. Вы не можете позволить себе, чтобы лог с сырыми запросами улетел хоть куда-то вне вашего контура.
🐱 Вы - объект КИИ. Требования ФСБ/ФСТЭК по защите инфраструктуры (сегментация, сертифицированные СЗИ) крайне жесткие. Тут онпрем-платформа (YandexGPT/GigaChat в контуре) выглядит гораздо реалистичнее, чем абстрактное облако.
🐾 Нужна тонкая кастомизация и guardrails. Если вам нужно допиливать архитектуру модели, дообучать на своих данных, контролировать версионность и встраивать собственные кастомные guardrails.
Плюсы self-hosted:
🙂 Максимальный контроль над данными, логами и контурами доступа.
🙂 Возможность выстроить архитектуру безопасности под свои стандарты и отраслевые регламенты.
🙂 Гибкость в выборе моделей, дообучении, настройке интеграции с KMS/SIEM.
🙂 Можно комбинировать: модель и данные ваши, а железо арендуете у провайдера в РФ (типа Selectel с GPU-серверами), то есть сохраняете контроль над стэком, но не строите свой мини-ЦОД.
Минусы self-hosted:
👊 Железо, GPU, ЦОД, лицензии, сопровождение - все расходы ваши.
👊 Нужна своя команда ML/DevOps/ИБ, а не «пара разработчиков».
👊 Обновления моделей и безопасность стека - ваша головная боль.
⤴️ ⤴️ ⤴️ ⤴️ ⤴️ ⤴️ ⤴️ ⤴️
🤝 Гибридный путь: не выбирать «или-или»
Самое практичное решение часто лежит посередине - сегментация трафика и сценариев.
🟡 Онпрем для чувствительного. На периметре стоит онпрем-платформа (YandexGPT в контуре). Через нее проходят чувствительные сценарии: ПД, финансы, КИИ.
🟡 Облако для легкого. Для «легких» задач (маркетинг, идеягенерация) используются облачные сервисы того же вендора, чтобы не плодить зоопарк.
🟡 Аренда GPU как буфер. Если своего железа пока нет, но команда готова тащить опенсорсные модели, можно начать с аренды GPU в российских ЦОД (Selectel и другие), а потом уже решать, идти ли в свой парк железа.
🟡 Ограничение выхода наружу. Вы лимитируете, какие подсистемы вообще могут ходить наружу, используя API-шлюзы, DLP и WAF.
Этот подход позволяет получить скорость и простоту облака там, где это безопасно, и максимальную защиту там, где это критически важно.
⤴️ ⤴️ ⤴️ ⤴️ ⤴️ ⤴️ ⤴️ ⤴️
В таких условиях онпрем-платформа или строго изолированный контур обычно проще согласовывается с «безопасниками», чем «просто облачный SaaS».
Я думаю, что про штрафы за нарушение ФЗ мне не стоит упоминать. Там просто «космические масштабы»
Self-hosted не нужен, когда:
Аргументы «за» облако:
«Можно идти в облако, если...»:
Если ваша задача сопряжена с высоким риском, облако - это лотерея. Максимальная локализация необходима, когда:
Плюсы self-hosted:
Минусы self-hosted:
Самое практичное решение часто лежит посередине - сегментация трафика и сценариев.
Этот подход позволяет получить скорость и простоту облака там, где это безопасно, и максимальную защиту там, где это критически важно.
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡2🔥2❤1
Ответьте на 5 вопросов, чтобы выбрать путь:
Выбор между облаком и Self-hosted - это выбор между скоростью внедрения/доступностью и глубиной контроля/соответствием жестким регуляторным требованиям (особенно 187-ФЗ КИИ). Не давайте LLM стать «протекающей абстракцией» для ваших критических данных.
Код на салфетке x Мозг в данных
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3⚡2❤1
Привет, друзья! 👋
Еще одна неделя позади, и у нас накопилось много интересного контента. Вот самые полезные и увлекательные материалы, которые мы выбрали для вас на этой неделе:
📋 Новое на канале:
🔄 Понедельник, 24.11.2025 — Дайджест
🐍 Вторник, 25.11.2025 — Смотри, какой репозиторий!, Знаете ли вы, как ускорить вставку в отсортированный список?
🎬 Пятница, 28.11.2025 — Путь от стажёра до ментора, Пятничный кинорелакс
🤖 Воскресенье, 30.11.2025 — Self-hosted против Облака: Как не дать LLM слить ваши данные в 2025 году
🔗 Будьте ближе к нам:
🌐 Читайте полные статьи на сайте
💬 Присоединитесь к обсуждению в чате
Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе! 🚀
#дайджест #код #python #полезное #код_на_салфетке
Еще одна неделя позади, и у нас накопилось много интересного контента. Вот самые полезные и увлекательные материалы, которые мы выбрали для вас на этой неделе:
📋 Новое на канале:
🔄 Понедельник, 24.11.2025 — Дайджест
🐍 Вторник, 25.11.2025 — Смотри, какой репозиторий!, Знаете ли вы, как ускорить вставку в отсортированный список?
🎬 Пятница, 28.11.2025 — Путь от стажёра до ментора, Пятничный кинорелакс
🤖 Воскресенье, 30.11.2025 — Self-hosted против Облака: Как не дать LLM слить ваши данные в 2025 году
🔗 Будьте ближе к нам:
🌐 Читайте полные статьи на сайте
💬 Присоединитесь к обсуждению в чате
Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе! 🚀
#дайджест #код #python #полезное #код_на_салфетке
🔥4⚡2
Forwarded from GitVerse News
#GitVerseКейс
Смотри, какой репозиторий!🐶
Время дайджеста! Мы продолжаем изучать крутые проекты, которые нашли среди заявок грантовой программы, и вдохновлять ими. Сегодня снова принесли вам целых три. Давайте смотреть🚀
1️⃣ Kawai-Focus — приложение для фокусировки внимания на основе техники Pomodoro. Его миссия — сделать работу человека эффективной, предотвратить выгорание и вовремя предупреждать об опасном для здоровья уровне переработки.
Какие фишки?🖱
📌 Современный и аккуратный дизайн в стиле Material Design, который оживил внешний вид приложения на Kivy благодаря обновленному форку KivyMD 2.0.0.
📌 Настраиваемые цепочки таймеров, легко подстраиваемые под индивидуальные потребности пользователя — при этом встроенные ограничения не позволят вам переусердствовать и выгореть.
📌 Приложение работает локально на ПК. Сейчас ведется работа над сборкой пакета под Linux, а также изменение дизайна к Material Design виду.
⛓️💥 Ссылка на репозиторий
2️⃣ Mlut — инструмент для верстки в подходе Atomic CSS, с которым можно создавать стили любой сложности. Что-то похожее на Tailwind, но по некоторым параметрам превосходит все популярные аналоги.
Какие преимущества?🖱
📌 Нейминг коротких классов интуитивно понятен и унифицирован, построен на популярных свойствах CSS.
📌 Мощные возможности генератора сложных стилевых комбинаций, близкие по духу к самому языку CSS.
📌 Полная поддержка препроцессора, позволяющая комбинировать собственные правила CSS с утилитами.
📌 Поддерживает кастомизацию и создание собственных дополнений.
⛓️💥 Ссылка на репозиторий
3️⃣ Orbitalika — сайт для моделирования орбит и орбитальных движений в трех плоскостях, а также визуализации траекторий в 3D пространстве. Как это работает: пользователь вводит шесть Кеплеровских элементов орбиты, и система сама строит реалистичную траекторию движения небесного тела.
Интересные факты🖱
📌 Разработка была начата студентами МГТУ имени Н.Э. Баумана в рамках программы «Инженерный класс» для наглядного представления законов небесной механики и освоения основ космической навигации.
📌 Первая версия появилась в 2024 году и получила положительные отзывы учителей физики и астрономии.
📌 Сайт написан на Python с использованием современных библиотек и инструментов, обеспечивающих высокую производительность и точность расчетов.
⛓️💥 Ссылка на репозиторий
#GitVerse_Разработчикам
Смотри, какой репозиторий!
Время дайджеста! Мы продолжаем изучать крутые проекты, которые нашли среди заявок грантовой программы, и вдохновлять ими. Сегодня снова принесли вам целых три. Давайте смотреть
Какие фишки?
Какие преимущества?
Интересные факты
#GitVerse_Разработчикам
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👎4😱1
Знаете ли вы, как использовать tox для создания матрицы сред тестирования?
Сделаем минимальную структуру проекта:
Представим себе такой
И сделаем тест, который будет вести себя по-разному в разных версиях Питона:
Варианты запуска:
При запуске:
- В py311
- В py310 модуля
Так,
tox позволяет декларативно определить и запустить тесты в матрице изолированных виртуальных окружений. Он автоматизирует создание, установку зависимостей и запуск команд для каждой комбинации версий Питона или конфигураций линтеров, обеспечивает проверку совместимости с разных сторон.Сделаем минимальную структуру проекта:
./tox.ini
./app/__init__.py
./tests/test_version_diff.py
Представим себе такой
tox.ini:[tox]
envlist = py310, py311, flake8
[testenv]
deps =
pytest
pytest-cov
commands =
pytest --cov=app tests/
[testenv:flake8]
deps = flake8
commands = flake8 app tests/
И сделаем тест, который будет вести себя по-разному в разных версиях Питона:
def test_version_diff():
import tomllib # модуль есть только в Python 3.11
data = tomllib.loads("x = 123")
assert data["x"] == 123
Варианты запуска:
# Запуск всей матрицы
tox
# Запуск конкретной версии Python
tox -e py311
tox -e py310
При запуске:
- В py311
import tomllib работает – тест пройдет.- В py310 модуля
tomllib нет – так что ModuleNotFoundError и тест падает.Так,
tox помогает проверять, каждое окружение независимо от других и от основной системы.🔥4🤯3👍2
Приветствую!
Грязная игра (2025)
Любите динамичные фильмы про ограбления с крутыми поворотами сюжета? Тогда «Грязная игра» с Марком Уолбергом — именно то, что вам нужно!
Фильм рассказывает о группе профессиональных преступников, которые планируют дерзкое ограбление с большими ставками. Главный герой — опытный лидер команды, который сталкивается с предательством, опасностями и необходимостью принимать быстрые решения, чтобы выйти из игры победителем.
«Грязная игра» — это не просто экшен, а напряжённый триллер с элементами драмы, где каждая минута на счету. Отличные сцены ограблений, продуманная режиссура и харизма Марка Уолберга создают атмосферу настоящего криминального приключения.
Если вам по душе фильмы в духе «Одиннадцати друзей Оушена» или «Пленниц», но с более жёстким и современным подходом — обязательно посмотрите «Грязную игру».
Грязная игра (2025)
Любите динамичные фильмы про ограбления с крутыми поворотами сюжета? Тогда «Грязная игра» с Марком Уолбергом — именно то, что вам нужно!
Фильм рассказывает о группе профессиональных преступников, которые планируют дерзкое ограбление с большими ставками. Главный герой — опытный лидер команды, который сталкивается с предательством, опасностями и необходимостью принимать быстрые решения, чтобы выйти из игры победителем.
«Грязная игра» — это не просто экшен, а напряжённый триллер с элементами драмы, где каждая минута на счету. Отличные сцены ограблений, продуманная режиссура и харизма Марка Уолберга создают атмосферу настоящего криминального приключения.
Если вам по душе фильмы в духе «Одиннадцати друзей Оушена» или «Пленниц», но с более жёстким и современным подходом — обязательно посмотрите «Грязную игру».
🔥6❤2
Всем привет!
Сегодня, 6 декабря, отмечается шуточный праздник — День Лентяя.
Для нас это уже почти две недели, потому что мы немного затянули со статьями… но мы исправимся 🙂
Откладывайте свои IDE-шки, проекты и задачи. Работа не всегда важнее отдыха — так почему бы не отдохнуть именно в День Лентяя?
Сегодня, 6 декабря, отмечается шуточный праздник — День Лентяя.
Для нас это уже почти две недели, потому что мы немного затянули со статьями… но мы исправимся 🙂
Откладывайте свои IDE-шки, проекты и задачи. Работа не всегда важнее отдыха — так почему бы не отдохнуть именно в День Лентяя?
👏4🎉4❤3🔥1
aiogram 3.23.0 вышел!
Только что вышло обновление библиотеки для написания Telegram-ботов aiogram 3.23.0. Которое не привносит нового функционала взаимодействия с Telegram, а концентрируется на технической стороне.
Поддержка Python 3.14
Ключевым изменением стала полная поддержка Python 3.14. Обновлены зависимости и тесты для полной совместимости.
Python 3.14 вышел совсем недавно, в ноябре 2025 года, и как обычно бывает со свежими релизами языка, далеко не все ключевые библиотеки готовы к этому сразу. В aiogram 3.22.0 на Python 3.14 были проблемы с
Прекращение поддержки Python 3.9
Обратной стороной нововведений, сталол прекращение поддержки Python 3.9. Python 3.9 вышел в ноябре 2020 года, а в ноябре 2025 года, вместе с выходом Python 3.14 он официально прекратил свой жизненный цикл.
Таким образом, минимальная совместимая версия Python стала 3.10.
В процессе отказа от поддержки 3.9, был проведён рефакторинг которой базы, включая замену аннотации типов из пакета
Установка обновления и история изменений
Для установки обновления библиотеки достаточно выполнить команду:
Полный список изменений: https://docs.aiogram.dev/en/latest/changelog.html
#python_3_14 #aiogram #aiohttp #py314 #pydantic #python #telegram #telegram_бот #библиотека #новости
Только что вышло обновление библиотеки для написания Telegram-ботов aiogram 3.23.0. Которое не привносит нового функционала взаимодействия с Telegram, а концентрируется на технической стороне.
Поддержка Python 3.14
Ключевым изменением стала полная поддержка Python 3.14. Обновлены зависимости и тесты для полной совместимости.
Python 3.14 вышел совсем недавно, в ноябре 2025 года, и как обычно бывает со свежими релизами языка, далеко не все ключевые библиотеки готовы к этому сразу. В aiogram 3.22.0 на Python 3.14 были проблемы с
aiohttp и pydantic.Прекращение поддержки Python 3.9
Обратной стороной нововведений, сталол прекращение поддержки Python 3.9. Python 3.9 вышел в ноябре 2020 года, а в ноябре 2025 года, вместе с выходом Python 3.14 он официально прекратил свой жизненный цикл.
Таким образом, минимальная совместимая версия Python стала 3.10.
В процессе отказа от поддержки 3.9, был проведён рефакторинг которой базы, включая замену аннотации типов из пакета
typing (List, Dict) на современный формат аннотирования без лишних импортов (list, dict).Установка обновления и история изменений
Для установки обновления библиотеки достаточно выполнить команду:
pip install -U aiogram
Полный список изменений: https://docs.aiogram.dev/en/latest/changelog.html
#python_3_14 #aiogram #aiohttp #py314 #pydantic #python #telegram #telegram_бот #библиотека #новости
🔥5❤4⚡3
Привет, друзья! 👋
Еще одна неделя позади, и у нас накопилось много интересного контента. Вот самые полезные и увлекательные материалы, которые мы выбрали для вас на этой неделе:
📋 Новое на канале:
🔄 Понедельник, 01.12.2025 — Дайджест
🐍 Вторник, 02.12.2025 — Смотри, какой репозиторий!, Знаете ли вы, как использовать tox для создания матрицы сред тестирования?
🎬 Пятница, 05.12.2025 — Пятничный кинорелакс
🤖 Воскресенье, 07.12.2025 — aiogram 3.23.0 вышел!
🔗 Будьте ближе к нам:
🌐 Читайте полные статьи на сайте
💬 Присоединитесь к обсуждению в чате
Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе! 🚀
#дайджест #код #python #полезное #код_на_салфетке
Еще одна неделя позади, и у нас накопилось много интересного контента. Вот самые полезные и увлекательные материалы, которые мы выбрали для вас на этой неделе:
📋 Новое на канале:
🔄 Понедельник, 01.12.2025 — Дайджест
🐍 Вторник, 02.12.2025 — Смотри, какой репозиторий!, Знаете ли вы, как использовать tox для создания матрицы сред тестирования?
🎬 Пятница, 05.12.2025 — Пятничный кинорелакс
🤖 Воскресенье, 07.12.2025 — aiogram 3.23.0 вышел!
🔗 Будьте ближе к нам:
🌐 Читайте полные статьи на сайте
💬 Присоединитесь к обсуждению в чате
Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе! 🚀
#дайджест #код #python #полезное #код_на_салфетке
🔥4👍3⚡1
Знаете ли вы о TOCTOU-уязвимости и как атомарные операции помогают ее избежать?
TOCTOU (Time-of-Check to Time-of-Use) – тип уязвимости, возникающий из-за race condition между моментом проверки состояния объекта (например, существует ли файл) и моментом его использования.
В многопоточных или многопроцессных средах между проверкой и использованием другой поток может изменить объект, а это приводит к непредсказуемым результатам и проблемам с безопасностью.
Частый случай этой уязвимости – создание файла. Представим функцию, которая пытается создать файл, когда его не существует:
Оба потока прошли проверку
Атомарная операция – это неделимое действие, которое либо выполняется полностью, либо не выполняется вообще, что исключает вмешательство других потоков и устраняет уязвимость TOCTOU. Посмотрим как это поможет:
Флаг
Код на салфетке x Кусочки кода
TOCTOU (Time-of-Check to Time-of-Use) – тип уязвимости, возникающий из-за race condition между моментом проверки состояния объекта (например, существует ли файл) и моментом его использования.
В многопоточных или многопроцессных средах между проверкой и использованием другой поток может изменить объект, а это приводит к непредсказуемым результатам и проблемам с безопасностью.
Частый случай этой уязвимости – создание файла. Представим функцию, которая пытается создать файл, когда его не существует:
import os
import time
import threading
def insecure_create(filename, thread_id):
if not os.path.exists(filename):
time.sleep(0.01)
with open(filename, 'w') as f:
f.write(f"Данные от потока {thread_id}")
print(f"Поток {thread_id}: файл создан")
if os.path.exists("data.txt"):
os.remove("data.txt")
t1 = threading.Thread(target=insecure_create, args=("data.txt", 1))
t2 = threading.Thread(target=insecure_create, args=("data.txt", 2))
t1.start()
t2.start()
t1.join()
t2.join()
with open("data.txt", 'r') as f:
print(f"Файл содержит: {f.read()}")
# Поток 1: файл создан
# Поток 2: файл создан
# Файл содержит: Данные от потока 2
Оба потока прошли проверку
if not os.path.exists(), но в файле остались только данные от потока 2 – он перезаписал данные потока 1. Номер потока в выводе может отличаться из-за race condition.Атомарная операция – это неделимое действие, которое либо выполняется полностью, либо не выполняется вообще, что исключает вмешательство других потоков и устраняет уязвимость TOCTOU. Посмотрим как это поможет:
import os
import errno
def atomic_create(filename, thread_id):
try:
fd = os.open(filename, os.O_CREAT | os.O_EXCL | os.O_WRONLY)
with os.fdopen(fd, 'w') as f:
f.write(f"Данные от потока {thread_id}")
print(f"Поток {thread_id}: файл создан атомарно")
except OSError as e:
if e.errno == errno.EEXIST:
print(f"Поток {thread_id}: файл уже существует")
else:
raise
if os.path.exists("data.txt"):
os.remove("data.txt")
import threading
t1 = threading.Thread(target=atomic_create, args=("data.txt", 1))
t2 = threading.Thread(target=atomic_create, args=("data.txt", 2))
t1.start()
t2.start()
t1.join()
t2.join()
with open("data.txt", 'r') as f:
print(f"Файл содержит: {f.read()}")
# Поток 1: файл создан атомарно
# Поток 2: файл уже существует
# Файл содержит: Данные от потока 1
Флаг
O_EXCL в комбинации с O_CREAT гарантирует, что os.open() создаст файл только если его не существует, иначе выдаст ошибку EEXIST. Эта операция атомарна на уровне ядра ОС.Код на салфетке x Кусочки кода
🤯4🔥3👍1
Вайбкодинг с нейросетью 1: проверяю сборку Flutter-приложения в AppImage
Автор: Eugene Kaddo
Данная статья посвящена сборке Flutter‑приложения в AppImage с помощью нейросетей GigaChat и Perplexity. Статья будет участвовать в конкурсе «Сезон ИИ в разработке» на Habr, посвящённом теме вайбкода в разработке.
Читать статью на сайте
Читать статью на Хабр
Поддержать проект через YooMoney
Поддержать проект через Tribute в Telegram
Поддержать проект через наш Telegram-бот
#Kivy #Эксперименты_с_ИИ #AppImage #Flutter
Автор: Eugene Kaddo
Данная статья посвящена сборке Flutter‑приложения в AppImage с помощью нейросетей GigaChat и Perplexity. Статья будет участвовать в конкурсе «Сезон ИИ в разработке» на Habr, посвящённом теме вайбкода в разработке.
Читать статью на сайте
Читать статью на Хабр
Поддержать проект через YooMoney
Поддержать проект через Tribute в Telegram
Поддержать проект через наш Telegram-бот
#Kivy #Эксперименты_с_ИИ #AppImage #Flutter
🔥6⚡4
Приветствую!
«Орудия» (2025)
Если хочется чего‑то странного, мрачного и не совсем привычного для хоррора, «Орудия» — отличный вариант. Формально это мистический ужастик про пропажу детей и ведьму, но по ощущениям фильм больше похож на чёрную сказку и сатиру на взрослых, власть и то, как старые правила ломают новое поколение.
В маленьком городке исчезают семнадцать шестиклассников, и взрослые в панике пытаются найти виноватого, но постепенно становится ясно, что дело не только в «зле снаружи». В центре истории — тётушка Глэдис: хрупкая старушка, которая оказывается могущественной ведьмой и превращает людей в свои «орудия», управляя ими через чёрную магию, страх и чувство вины.
«Орудия» (2025)
Если хочется чего‑то странного, мрачного и не совсем привычного для хоррора, «Орудия» — отличный вариант. Формально это мистический ужастик про пропажу детей и ведьму, но по ощущениям фильм больше похож на чёрную сказку и сатиру на взрослых, власть и то, как старые правила ломают новое поколение.
В маленьком городке исчезают семнадцать шестиклассников, и взрослые в панике пытаются найти виноватого, но постепенно становится ясно, что дело не только в «зле снаружи». В центре истории — тётушка Глэдис: хрупкая старушка, которая оказывается могущественной ведьмой и превращает людей в свои «орудия», управляя ими через чёрную магию, страх и чувство вины.
🔥4❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Помните мобильный рынок 90-х (если не помните, то вам повезло)? Хаос из кабелей, несовместимых портов и боли. До недавнего времени индустрия ИИ выглядела так же. Хочешь подключить ChatGPT к Google Диску? Пиши один «костыль» (плагин). Хочешь Claude к базе данных? Пиши другой. Локальная LLM? Третий.
Это классическая проблема «N × M», которая тормозила всю отрасль. Но в ноябре 2024 года Anthropic выкатили Model Context Protocol (MCP). Эксперты называют его «портом USB-C для нейросетей».
Но не дайте простоте названия обмануть вас. Под капотом там не просто «труба для данных», а сложная архитектура брокеров, двусторонние диалоги и новые дыры в безопасности, от которых у вашего СБ ИТ дернется глаз.
Попробуем разобраться во всём. От нейминга функций до «Теневого ИИ».
В основе MCP лежит философия разделения ответственности, так скажем - строгий протокол.
Архитектура:
Три кита функциональности (и один секрет):
Если вы назовете инструмент
tool_01 с описанием gets data, модель будет галлюцинировать или игнорировать его.Вы обязаны называть инструмент семантически точно:
get_customer_churn_rate и в описании детально разжевывать: "Используй это, когда пользователь спрашивает про отток клиентов за квартал. Принимает дату в формате YYYY-MM-DD". В MCP описание инструмента - часть исполняемого кода. Ошиблись в слове и сломали логику агента.MCP - не улица с односторонним движением («ИИ, дай команду»). Протокол намного умнее.
Что же под «капотом»?
Это киллер-фича. Обычно человек просит ИИ что-то сделать. В MCP сервер может попросить ИИ: «Эй, я вижу тут сложный лог ошибки, сгенерируй-ка мне его анализ».
Сервер использует «мозг» подключенной модели для своих внутренних задач. И выглядит это уже как не просто подключение, а делегирование (sub-agents delegation).
Механизм, позволяющий серверу сказать: «Мне не хватает данных, спроси у пользователя уточнение».
Это вводит стандартизированный Human-in-the-loop. ИИ перестает быть черным ящиком, который молча творит дичь. Если данных для SQL-запроса не хватает, сервер через протокол заставляет ИИ задать вопрос вам.
Как они общаются физически?
- Stdio: Для локальных агентов. Быстро, безопасно, все внутри одного процесса.
- SSE (Server-Sent Events): Для удаленки. Позволяет серверу самому «пинать» ИИ в реальном времени: «Эй, данные на бирже изменились, пересчитай прогноз!».
Если смотреть на MCP глазами архитектора, это реализация классических паттернов проектирования, спасающая нас от хаоса.
MCP создает центральный реестр. Агенты находят инструменты через единый стандарт. Сложность падает до линейной O(N).
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8
Шутка от СБ ИТ: буква «S» в MCP означает Security. То есть её там нет. Внедрение протокола опережает безопасность.
Наши «грабли»:
Кошмар для службы безопасности. Любой разработчик может запустить локальный MCP-сервер на ноутбуке, дать ему доступ к локальным файлам/документам и подключить к внешнему ИИ.
Поскольку канал связи (Stdio/SSE) инициируется изнутри, корпоративный фаервол этого не видит. Данные улетают в «мозг» модели легально, мимо DLP-систем. Ну если только у вас не локальная корпоративная LLM.
Мы привыкли, что
npm install - риск. Но MCP-серверы пока вообще никак не подписываются.Вы качаете сервер
weather-mcp с GitHub, а он оказывается трояном. Через Prompt Injection он заставляет вашу модель (которой вы доверяете!) слить пароли из подключенной базы данных.Компании обязаны ставить не просто серверы, а Шлюзы MCP. Это прослойка-фильтр (AI Firewall), которая:
MCP сравнивают с USB-C. Хоть это и удачная аналогия, как будто физический разъем, но чтобы устройства «поняли» друг друга, нужны протоколы выше уровнем (как TCP/IP).
MCP - база «Клиент-Сервер». Но рядом растут конкуренты и надстройки:
Мы, так сказать, в самом начале пути стандартизации.
Забудьте про «просто программистов». Для MCP нужны немного иные роли:
MCP превращает ИИ из «умного чат-бота» в реального сотрудника с доступом к рубильникам. Выглядит, вроде, мощно, но требует железной дисциплины в архитектуре и паранойи в безопасности.
ЗЫ: небольшая библиотека всяких готовых MCP. За качество не ручаюсь
https://glama.ai/mcp/servers
Код на салфетке x Мозг в данных
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7❤3
Привет, друзья! 👋
Еще одна неделя позади, и у нас накопилось много интересного контента. Вот самые полезные и увлекательные материалы, которые мы выбрали для вас на этой неделе:
📋 Новое на канале:
🔄 Понедельник, 08.12.2025 — Дайджест
🐍 Вторник, 09.12.2025 — Знаете ли вы о TOCTOU-уязвимости и как атомарные операции помогают ее избежать?
⚙️ Четверг, 11.12.2025 — Вайбкодинг с нейросетью 1: проверяю сборку Flutter-приложения в AppImage
🎬 Пятница, 12.12.2025 — Пятничный кинорелакс
🤖 Воскресенье, 14.12.2025 — ЭРА «USB-C» ДЛЯ ИИ: ПОЛНЫЙ РАЗБОР MODEL CONTEXT PROTOCOL (MCP)
🎁 Небольшой анонс:
Совсем скоро на канале стартует новогодний розыгрыш 🎄
Готовьтесь, будет интересно — и не забудьте позвать друзей, им тоже может повезти 😉
🔗 Будьте ближе к нам:
🌐 Читайте полные статьи на сайте
💬 Присоединитесь к обсуждению в чате
Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе! 🚀
#дайджест #код #python #полезное #код_на_салфетке
Еще одна неделя позади, и у нас накопилось много интересного контента. Вот самые полезные и увлекательные материалы, которые мы выбрали для вас на этой неделе:
📋 Новое на канале:
🔄 Понедельник, 08.12.2025 — Дайджест
🐍 Вторник, 09.12.2025 — Знаете ли вы о TOCTOU-уязвимости и как атомарные операции помогают ее избежать?
⚙️ Четверг, 11.12.2025 — Вайбкодинг с нейросетью 1: проверяю сборку Flutter-приложения в AppImage
🎬 Пятница, 12.12.2025 — Пятничный кинорелакс
🤖 Воскресенье, 14.12.2025 — ЭРА «USB-C» ДЛЯ ИИ: ПОЛНЫЙ РАЗБОР MODEL CONTEXT PROTOCOL (MCP)
🎁 Небольшой анонс:
Совсем скоро на канале стартует новогодний розыгрыш 🎄
Готовьтесь, будет интересно — и не забудьте позвать друзей, им тоже может повезти 😉
🔗 Будьте ближе к нам:
🌐 Читайте полные статьи на сайте
💬 Присоединитесь к обсуждению в чате
Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе! 🚀
#дайджест #код #python #полезное #код_на_салфетке
🔥5⚡4
Знаете ли вы, как вызвать функцию со 100 аргументами одной строкой?
На собеседованиях часто спрашивают про
Именно этими операторами можно, например, распаковать список из 100 элементов в аргументы функции одной строкой, объединить несколько списков или словарей и даже контролировать, как именно пользователь должен передавать параметры. Посмотрим на самые интересные приемы.
Распаковка при вызове функции:
Звездочки – просто соглашение, имя может быть любым:
Keyword-only параметры через
А positional-only параметры через
Порядок параметров строго определен, иначе – SyntaxError:
Распаковка работает не только в функциях:
И на последок, классическая ловушка – распаковка при определении vs при вызове:
Код на салфетке x Кусочки кода
На собеседованиях часто спрашивают про
*args и **kwargs, но не все знают, что это не магические имена, а всего лишь идиоматическое соглашение. На самом деле, звездочки * и ** – это операторы сбора и распаковки (Packing/Unpacking Operators). Вы можете написать *pizza вместо *args, и это будет работать.Именно этими операторами можно, например, распаковать список из 100 элементов в аргументы функции одной строкой, объединить несколько списков или словарей и даже контролировать, как именно пользователь должен передавать параметры. Посмотрим на самые интересные приемы.
Распаковка при вызове функции:
def process_data(a, b, c, d, e, f, g, h, i, j):
return sum([a, b, c, d, e, f, g, h, i, j])
numbers = list(range(10))
result = process_data(*numbers) # Распаковали список в 10 аргументов
print(result) # 45
# Можно комбинировать несколько распаковок
basic = ["Alice", 30]
location = ["NYC", "USA"]
def create_user(name, age, city, country, email):
print(f"{name}, {age}, {city}, {country}, {email}")
create_user(*basic, *location, "alice@example.com")
# Alice, 30, NYC, USA, alice@example.com
Звездочки – просто соглашение, имя может быть любым:
def sum_all(*numbers): # можно *pizza, *data, что угодно
return sum(numbers)
def build_query(**filters): # можно **options, **params
return " AND ".join(f"{k}={v}" for k, v in filters.items())
print(sum_all(1, 2, 3, 4, 5)) # 15
print(build_query(age=30, city="NYC")) # age=30 AND city=NYC
Keyword-only параметры через
* без имени:def create_file(filename, *, mode, encoding):
print(f"Creating {filename} with mode={mode}, encoding={encoding}")
# create_file("data.txt", "w", "utf-8") # Будет TypeError!
create_file("data.txt", mode="w", encoding="utf-8") # А так – OK
А positional-only параметры через
/, могут быть полезны для API, где имена параметров могут измениться в будущем (Python 3.8+):def divide(a, b, /):
return a / b
print(divide(10, 2)) # 5.0
# print(divide(a=10, b=2)) # TypeError – только позиционные!
Порядок параметров строго определен, иначе – SyntaxError:
# Правильно:
def good(a, b, /, c, *args, d, **kwargs):
pass
# Неправильно:
# def bad(*args, **kwargs, a): # SyntaxError
# def bad(/, a, b): # SyntaxError
Распаковка работает не только в функциях:
# В списках
list1 = [1, 2, 3]
list2 = [*list1, 4, 5, *list1]
print(list2) # [1, 2, 3, 4, 5, 1, 2, 3]
# В словарях
defaults = {"host": "localhost", "port": 8080}
user_config = {"port": 3000, "debug": True}
config = {**defaults, **user_config}
print(config) # {'host': 'localhost', 'port': 3000, 'debug': True}
# В присваивании
first, *middle, last = [1, 2, 3, 4, 5]
print(f"first={first}, middle={middle}, last={last}")
# first=1, middle=[2, 3, 4], last=5
И на последок, классическая ловушка – распаковка при определении vs при вызове:
def mystery(*args):
return args
print(mystery([1, 2, 3])) # ([1, 2, 3],) – один аргумент-список
print(mystery(*[1, 2, 3])) # (1, 2, 3) – три аргумента
* и ** это операторы распаковки, они работают при вызове и определении функций. / делает параметры positional-only, а * без имени делает следующие параметры keyword-only.Код на салфетке x Кусочки кода
👍7🤯2
ИИ бот-модератор 1: Начало проекта
Автор: Иван Ашихмин
Это первая статья серии «ИИ бот-модератор», в которой мы закладываем фундамент будущего проекта. Разберём, почему структура и качество кода критичны для роста, познакомимся с базовыми инструментами (
Читать статью на сайте
Читать статью на Хабр
Поддержать проект через YooMoney
Поддержать проект через Tribute в Telegram
Поддержать проект через наш Telegram-бот
#Docker #PostgreSQL #Гайды #aiogram #Telegram_бот #fastapi #AI #ИИ #git #ry #uv #ruff #make #makefile #линтеры #pre_commit #MCP
Автор: Иван Ашихмин
Это первая статья серии «ИИ бот-модератор», в которой мы закладываем фундамент будущего проекта. Разберём, почему структура и качество кода критичны для роста, познакомимся с базовыми инструментами (
git, uv, pre-commit, make) и подготовим проект к дальнейшей разработке Telegram-бота с ИИ.Читать статью на сайте
Читать статью на Хабр
Поддержать проект через YooMoney
Поддержать проект через Tribute в Telegram
Поддержать проект через наш Telegram-бот
#Docker #PostgreSQL #Гайды #aiogram #Telegram_бот #fastapi #AI #ИИ #git #ry #uv #ruff #make #makefile #линтеры #pre_commit #MCP
1🔥7⚡1
Добрый вечер, друзья!
"Школьный автобус" (2025)
Сегодня рассказываем о фильме, который основан на реальных и героических событиях. "Школьный автобус" – это история мужества и самопожертвования в самых экстремальных условиях.
Сюжет фильма разворачивается вокруг водителя Кевина Маккея и учительницы Мэри Людвиг, которые выводят из огня 22 школьника во время разрушительного лесного пожара в Калифорнии. Их решительность, смелость и сила духа буквально спасают жизни, несмотря на все опасности вокруг.
Этот фильм наполнен настоящей драмой и вдохновляющими эмоциями. Он напоминает нам о важности человеческой поддержки и готовности помочь в трудную минуту.
"Школьный автобус" (2025)
Сегодня рассказываем о фильме, который основан на реальных и героических событиях. "Школьный автобус" – это история мужества и самопожертвования в самых экстремальных условиях.
Сюжет фильма разворачивается вокруг водителя Кевина Маккея и учительницы Мэри Людвиг, которые выводят из огня 22 школьника во время разрушительного лесного пожара в Калифорнии. Их решительность, смелость и сила духа буквально спасают жизни, несмотря на все опасности вокруг.
Этот фильм наполнен настоящей драмой и вдохновляющими эмоциями. Он напоминает нам о важности человеческой поддержки и готовности помочь в трудную минуту.
🔥5
Новогодний розыгрыш от Код на салфетке, Bothost и сообщества!
Новый год уже не за горами, а это значит, что наступает пора дарить подарки! Мы тоже не остаёмся в стороне и приготовили для вас розыгрыш с 11-ю крутыми призами!
Что за призы?
- 2x Толстовка с большим принтом
- 2x Футболка с большим принтом
- 3x Футболка с маленьким принтом
- 3x Блокнот с принтом
- RGB светильник-ночник с логотипом
Кто помогает?
Розыгрыш был бы невозможен без наших друзей из хостинга Telegram-ботов Bothost, а также семи добрых подписчиков нашего чата "Кот на салфетке".
Как участвовать?
1️⃣ Подпишитесь на "Код на салфетке".
2️⃣ Подпишитесь на "Хостинг bothost.ru".
3️⃣ Нажмите кнопку «Участвую» 👇.
4️⃣ Ждите результатов — мы объявим победителей 10 января.
Важно:
— Призы будут изготовлены после завершения розыгрыша.
— Отправка призов — только по России.
Заходите, участвуйте и зовите друзей — пусть новый год начнётся с хорошего настроения и сюрприза под "ёлкой". Удачи!
Новый год уже не за горами, а это значит, что наступает пора дарить подарки! Мы тоже не остаёмся в стороне и приготовили для вас розыгрыш с 11-ю крутыми призами!
Что за призы?
- 2x Толстовка с большим принтом
- 2x Футболка с большим принтом
- 3x Футболка с маленьким принтом
- 3x Блокнот с принтом
- RGB светильник-ночник с логотипом
Кто помогает?
Розыгрыш был бы невозможен без наших друзей из хостинга Telegram-ботов Bothost, а также семи добрых подписчиков нашего чата "Кот на салфетке".
Как участвовать?
1️⃣ Подпишитесь на "Код на салфетке".
2️⃣ Подпишитесь на "Хостинг bothost.ru".
3️⃣ Нажмите кнопку «Участвую» 👇.
4️⃣ Ждите результатов — мы объявим победителей 10 января.
Важно:
— Призы будут изготовлены после завершения розыгрыша.
— Отправка призов — только по России.
Заходите, участвуйте и зовите друзей — пусть новый год начнётся с хорошего настроения и сюрприза под "ёлкой". Удачи!
1🔥19⚡12