Всем привет!
Сегодня, 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
Привет, друзья! 👋
Еще одна неделя позади, и у нас накопилось много интересного контента. Вот самые полезные и увлекательные материалы, которые мы выбрали для вас на этой неделе:
📋 Новое на канале:
🔄 Понедельник, 15.12.2025 — Дайджест
🐍 Вторник, 16.12.2025 — Знаете ли вы, как вызвать функцию со 100 аргументами одной строкой?
⚙️ Четверг, 18.12.2025 — ИИ бот-модератор 1: Начало проекта
🎬 Пятница, 19.12.2025 — Пятничный кинорелакс
🍀 Суббота, 20.12.2025 — Новогодний розыгрыш от Код на салфетке, Bothost и сообщества!
🔗 Будьте ближе к нам:
🌐 Читайте полные статьи на сайте
💬 Присоединитесь к обсуждению в чате
Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе! 🚀
#дайджест #код #python #полезное #код_на_салфетке
Еще одна неделя позади, и у нас накопилось много интересного контента. Вот самые полезные и увлекательные материалы, которые мы выбрали для вас на этой неделе:
📋 Новое на канале:
🔄 Понедельник, 15.12.2025 — Дайджест
🐍 Вторник, 16.12.2025 — Знаете ли вы, как вызвать функцию со 100 аргументами одной строкой?
⚙️ Четверг, 18.12.2025 — ИИ бот-модератор 1: Начало проекта
🎬 Пятница, 19.12.2025 — Пятничный кинорелакс
🍀 Суббота, 20.12.2025 — Новогодний розыгрыш от Код на салфетке, Bothost и сообщества!
🔗 Будьте ближе к нам:
🌐 Читайте полные статьи на сайте
💬 Присоединитесь к обсуждению в чате
Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе! 🚀
#дайджест #код #python #полезное #код_на_салфетке
🔥4⚡1
Всем привет!
Пока у нас идёт новогодний розыгрыш, один из наших стажёров, Олег Семёнов, сделал небольшую новогоднюю страничку.
Без кнопок, без логики и без пользы — зато с атмосферой 🎄
Просто чтобы на пару секунд выдохнуть и словить настроение зимы и грядущего нового года.
👉 https://ny.pressanybutton.ru/
Ну и напомню: розыгрыш всё ещё в процессе, так что можно сначала поймать новогодний вайб, а потом пойти и поучаствовать 😉
Пока у нас идёт новогодний розыгрыш, один из наших стажёров, Олег Семёнов, сделал небольшую новогоднюю страничку.
Без кнопок, без логики и без пользы — зато с атмосферой 🎄
Просто чтобы на пару секунд выдохнуть и словить настроение зимы и грядущего нового года.
👉 https://ny.pressanybutton.ru/
Ну и напомню: розыгрыш всё ещё в процессе, так что можно сначала поймать новогодний вайб, а потом пойти и поучаствовать 😉
🔥6🎄4😁2🦄2☃1⚡1😱1
ty: революция в тайп-чекинге
Автор: Иван Ашихмин
Astral представили
Читать статью на сайте
Читать статью на Хабр
Поддержать проект через YooMoney
Поддержать проект через Tribute в Telegram
Поддержать проект через наш Telegram-бот
#новости #python #uv #ruff #mypy #ty #type_checking #astral
Автор: Иван Ашихмин
Astral представили
ty — новый тайп-чекер для Python, который обещает изменить привычный подход к типизации. В статье разбираемся, чем ty отличается от mypy и Pyright, почему он настолько быстрый, как устроен изнутри и стоит ли уже сейчас пробовать его в реальных проектах.Читать статью на сайте
Читать статью на Хабр
Поддержать проект через YooMoney
Поддержать проект через Tribute в Telegram
Поддержать проект через наш Telegram-бот
#новости #python #uv #ruff #mypy #ty #type_checking #astral
🔥4❤1⚡1
Знаете ли вы, что при множественном наследовании метод вызывается не из того класса, откуда ожидается?
Создаете класс с несколькими родителями, вызываете метод, а Питон выбирает его из совершенно неочевидного места. Или пытаетесь понять порядок вызова
Классический пример ромбовидного наследования:
Питон идет слева направо: D -> B -> C -> A -> object. Поэтому вызывается
Теперь поменяем порядок родителей:
Порядок в скобках имеет значение – первый родитель имеет приоритет.
Особенно интересно с
Здесь
А вот случай когда Python откажется создавать класс:
Python не может построить MRO, где X идет до Y (требование
Чтобы посмотреть MRO любого класса используйте
Код на салфетке x Кусочки кода
Создаете класс с несколькими родителями, вызываете метод, а Питон выбирает его из совершенно неочевидного места. Или пытаетесь понять порядок вызова
super(), а он идет против всякой логики. Дело в Method Resolution Order (MRO) – алгоритме, который Python использует, чтобы решить, откуда брать методы при наследовании.Классический пример ромбовидного наследования:
class A:
def method(self):
print("A.method")
class B(A):
def method(self):
print("B.method")
class C(A):
def method(self):
print("C.method")
class D(B, C):
pass
d = D()
d.method() # B.method
print(D.__mro__)
# (<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>,
# <class '__main__.A'>, <class 'object'>)
Питон идет слева направо: D -> B -> C -> A -> object. Поэтому вызывается
B.method, хотя C тоже наследует от A.Теперь поменяем порядок родителей:
class D(C, B): # C теперь первый
pass
d = D()
d.method() # C.method – результат изменился
print(D.__mro__)
# (<class '__main__.D'>, <class '__main__.C'>, <class '__main__.B'>,
# <class '__main__.A'>, <class 'object'>)
Порядок в скобках имеет значение – первый родитель имеет приоритет.
Особенно интересно с
super():class A:
def method(self):
print("A")
class B(A):
def method(self):
print("B")
super().method()
class C(A):
def method(self):
print("C")
super().method()
class D(B, C):
def method(self):
print("D")
super().method()
d = D()
d.method()
# D
# B
# C
# A
Здесь
super() идет не к родителю, а к следующему в MRO: D -> B -> C -> A. Поэтому из B вызывается C, хотя C не родитель B.А вот случай когда Python откажется создавать класс:
class X: pass
class Y(X): pass
class Bad(X, Y): # TypeError: Cannot create a consistent method resolution
pass
Python не может построить MRO, где X идет до Y (требование
X, Y) и одновременно Y идет до X (требование наследования). Он использует алгоритм C3 linearization для построения MRO. Правила простые: класс всегда идет раньше своих родителей, порядок родителей из определения сохраняется, каждый класс появляется один раз. Если эти правила конфликтуют – получается TypeError.Чтобы посмотреть MRO любого класса используйте
.__mro__ или .mro().Код на салфетке x Кусочки кода
🔥7🤯5
GitLab: Основы написания Pipeline 1/3
Автор: Иван Ашихмин
Первая из трёх статья посвящённая разбору отличий GitLab CI от GitHub Action и основам написания Pipeline.
Читать статью на сайте
Читать статью на Хабр
Поддержать проект через YooMoney
Поддержать проект через Tribute в Telegram
Поддержать проект через наш Telegram-бот
#гайды #github #gitlab #pipeline #actions #ci_cd #stage #devops #runner #job
Автор: Иван Ашихмин
Первая из трёх статья посвящённая разбору отличий GitLab CI от GitHub Action и основам написания Pipeline.
Читать статью на сайте
Читать статью на Хабр
Поддержать проект через YooMoney
Поддержать проект через Tribute в Telegram
Поддержать проект через наш Telegram-бот
#гайды #github #gitlab #pipeline #actions #ci_cd #stage #devops #runner #job
🔥9❤2⚡2
Всем доброго вечера пятницы!
«Хроники хищных городов» (2018)
Это тот фильм, который цепляет уже одной идеей: мир будущего, где города стоят не на картах, а на гусеницах и охотятся друг на друга, как хищники. Огромный Лондон преследует и «поглощает» маленькие города ради ресурсов, а внутри этой железной махины кипят интриги, тайные планы и личные драмы.
В центре истории — молодой историк Том и таинственная девушка Эстер, которая появляется в Лондоне с очень личной целью — отомстить влиятельному человеку из верхушки города. Фильм сочетает в себе зрелищный стимпанк, приключения и драму о людях, которые пытаются не потерять себя в мире, где всё давно превратили в топливо.
Если нравится масштабное кино с оригинальным визуалом, гигантскими машинами и ноткой подросткового бунта против системы — «Хроники хищных городов» отлично зайдут. Это тот случай, когда мироустройство само по себе вызывает желание пересматривать детали, а за зрелищем скрываются темы власти, неравенства и борьбы за право жить по-своему.
«Хроники хищных городов» (2018)
Это тот фильм, который цепляет уже одной идеей: мир будущего, где города стоят не на картах, а на гусеницах и охотятся друг на друга, как хищники. Огромный Лондон преследует и «поглощает» маленькие города ради ресурсов, а внутри этой железной махины кипят интриги, тайные планы и личные драмы.
В центре истории — молодой историк Том и таинственная девушка Эстер, которая появляется в Лондоне с очень личной целью — отомстить влиятельному человеку из верхушки города. Фильм сочетает в себе зрелищный стимпанк, приключения и драму о людях, которые пытаются не потерять себя в мире, где всё давно превратили в топливо.
Если нравится масштабное кино с оригинальным визуалом, гигантскими машинами и ноткой подросткового бунта против системы — «Хроники хищных городов» отлично зайдут. Это тот случай, когда мироустройство само по себе вызывает желание пересматривать детали, а за зрелищем скрываются темы власти, неравенства и борьбы за право жить по-своему.
👍5🔥3❤1
Всем привет!
Розыгрышу уже неделя — за это время в нём приняли участие 110 человек. Спасибо каждому, кто подключился.
Пора подробнее рассказать о призах и о том, как они будут распределяться.
Что разыгрываем:
- 2x Толстовка с большим принтом
- 2x Футболка с большим принтом
- 3x Футболка с маленьким принтом
- 3x Блокнот с принтом
- RGB светильник-ночник с логотипом
Одежда будет изготавливаться после завершения конкурса — по размерам, которые укажут победители.
И небольшой спойлер 👀
Нам уже есть что показать: ниже — фото толстовки на нашем авторе, макет обложки блокнота и 11-й приз, который до этого момента оставался секретным.
Розыгрышу уже неделя — за это время в нём приняли участие 110 человек. Спасибо каждому, кто подключился.
Пора подробнее рассказать о призах и о том, как они будут распределяться.
Что разыгрываем:
- 2x Толстовка с большим принтом
- 2x Футболка с большим принтом
- 3x Футболка с маленьким принтом
- 3x Блокнот с принтом
- RGB светильник-ночник с логотипом
Одежда будет изготавливаться после завершения конкурса — по размерам, которые укажут победители.
И небольшой спойлер 👀
Нам уже есть что показать: ниже — фото толстовки на нашем авторе, макет обложки блокнота и 11-й приз, который до этого момента оставался секретным.
🔥14 3⚡1❤1👍1🦄1