Код на салфетке
2.38K subscribers
770 photos
21 videos
2 files
811 links
Канал для тех, кому интересно программирование на Python и не только.

Сайт: https://pressanybutton.ru/
Чат: https://t.me/+Li2vbxfWo0Q4ZDk6
Заметки автора: @writeanynotes

Реклама и взаимопиар: @Murzyev1995
Сотрудничество и др.: @proDreams
Download Telegram
ИИ бот-модератор 1: Начало проекта
Автор: Иван Ашихмин

Это первая статья серии «ИИ бот-модератор», в которой мы закладываем фундамент будущего проекта. Разберём, почему структура и качество кода критичны для роста, познакомимся с базовыми инструментами (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🔥71
Добрый вечер, друзья!

"Школьный автобус" (2025)

Сегодня рассказываем о фильме, который основан на реальных и героических событиях. "Школьный автобус" – это история мужества и самопожертвования в самых экстремальных условиях.

Сюжет фильма разворачивается вокруг водителя Кевина Маккея и учительницы Мэри Людвиг, которые выводят из огня 22 школьника во время разрушительного лесного пожара в Калифорнии. Их решительность, смелость и сила духа буквально спасают жизни, несмотря на все опасности вокруг.

Этот фильм наполнен настоящей драмой и вдохновляющими эмоциями. Он напоминает нам о важности человеческой поддержки и готовности помочь в трудную минуту.
🔥5
Новогодний розыгрыш от Код на салфетке, Bothost и сообщества!

Новый год уже не за горами, а это значит, что наступает пора дарить подарки! Мы тоже не остаёмся в стороне и приготовили для вас розыгрыш с 11-ю крутыми призами!

Что за призы?
- 2x Толстовка с большим принтом
- 2x Футболка с большим принтом
- 3x Футболка с маленьким принтом
- 3x Блокнот с принтом
- RGB светильник-ночник с логотипом

Кто помогает?
Розыгрыш был бы невозможен без наших друзей из хостинга Telegram-ботов Bothost, а также семи добрых подписчиков нашего чата "Кот на салфетке".

Как участвовать?
1️⃣ Подпишитесь на "Код на салфетке".
2️⃣ Подпишитесь на "Хостинг bothost.ru".
3️⃣ Нажмите кнопку «Участвую» 👇.
4️⃣ Ждите результатов — мы объявим победителей 10 января.

Важно:
— Призы будут изготовлены после завершения розыгрыша.
— Отправка призов — только по России.

Заходите, участвуйте и зовите друзей — пусть новый год начнётся с хорошего настроения и сюрприза под "ёлкой". Удачи!
1🔥1912
Код на салфетке pinned a photo
Привет, друзья! 👋

Еще одна неделя позади, и у нас накопилось много интересного контента. Вот самые полезные и увлекательные материалы, которые мы выбрали для вас на этой неделе:

📋 Новое на канале:

🔄 Понедельник, 15.12.2025Дайджест

🐍 Вторник, 16.12.2025Знаете ли вы, как вызвать функцию со 100 аргументами одной строкой?

⚙️ Четверг, 18.12.2025 — ИИ бот-модератор 1: Начало проекта

🎬 Пятница, 19.12.2025Пятничный кинорелакс

🍀 Суббота, 20.12.2025 — Новогодний розыгрыш от Код на салфетке, Bothost и сообщества!


🔗 Будьте ближе к нам:

🌐 Читайте полные статьи на сайте

💬 Присоединитесь к обсуждению в чате

Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе! 🚀

#дайджест #код #python #полезное #код_на_салфетке
🔥41
Всем привет!

Пока у нас идёт новогодний розыгрыш, один из наших стажёров, Олег Семёнов, сделал небольшую новогоднюю страничку.

Без кнопок, без логики и без пользы — зато с атмосферой 🎄
Просто чтобы на пару секунд выдохнуть и словить настроение зимы и грядущего нового года.

👉 https://ny.pressanybutton.ru/

Ну и напомню: розыгрыш всё ещё в процессе, так что можно сначала поймать новогодний вайб, а потом пойти и поучаствовать 😉
🔥6🎄4😁2🦄211😱1
ty: революция в тайп-чекинге
Автор: Иван Ашихмин

Astral представили ty — новый тайп-чекер для Python, который обещает изменить привычный подход к типизации. В статье разбираемся, чем ty отличается от mypy и Pyright, почему он настолько быстрый, как устроен изнутри и стоит ли уже сейчас пробовать его в реальных проектах.

Читать статью на сайте
Читать статью на Хабр

Поддержать проект через YooMoney
Поддержать проект через Tribute в Telegram
Поддержать проект через наш Telegram-бот

#новости #python #uv #ruff #mypy #ty #type_checking #astral
🔥411
Знаете ли вы, что при множественном наследовании метод вызывается не из того класса, откуда ожидается?

Создаете класс с несколькими родителями, вызываете метод, а Питон выбирает его из совершенно неочевидного места. Или пытаетесь понять порядок вызова 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
🔥922
Всем доброго вечера пятницы!

«Хроники хищных городов» (2018)

Это тот фильм, который цепляет уже одной идеей: мир будущего, где города стоят не на картах, а на гусеницах и охотятся друг на друга, как хищники. Огромный Лондон преследует и «поглощает» маленькие города ради ресурсов, а внутри этой железной махины кипят интриги, тайные планы и личные драмы.

В центре истории — молодой историк Том и таинственная девушка Эстер, которая появляется в Лондоне с очень личной целью — отомстить влиятельному человеку из верхушки города. Фильм сочетает в себе зрелищный стимпанк, приключения и драму о людях, которые пытаются не потерять себя в мире, где всё давно превратили в топливо.

Если нравится масштабное кино с оригинальным визуалом, гигантскими машинами и ноткой подросткового бунта против системы — «Хроники хищных городов» отлично зайдут. Это тот случай, когда мироустройство само по себе вызывает желание пересматривать детали, а за зрелищем скрываются темы власти, неравенства и борьбы за право жить по-своему.
👍5🔥31
Всем привет!

Розыгрышу уже неделя — за это время в нём приняли участие 110 человек. Спасибо каждому, кто подключился.

Пора подробнее рассказать о призах и о том, как они будут распределяться.

Что разыгрываем:


- 2x Толстовка с большим принтом
- 2x Футболка с большим принтом
- 3x Футболка с маленьким принтом
- 3x Блокнот с принтом
- RGB светильник-ночник с логотипом

Одежда будет изготавливаться после завершения конкурса — по размерам, которые укажут победители.

И небольшой спойлер 👀
Нам уже есть что показать: ниже — фото толстовки на нашем авторе, макет обложки блокнота и 11-й приз, который до этого момента оставался секретным.
🔥14311👍1🦄1
Привет, друзья! 👋

Еще одна неделя позади, и у нас накопилось много интересного контента. Вот самые полезные и увлекательные материалы, которые мы выбрали для вас на этой неделе:

📋 Новое на канале:

🔄 Понедельник, 22.12.2025Дайджест

🐍 Вторник, 23.12.2025 — 1. ty: революция в тайп-чекинге. 2. Знаете ли вы, что при множественном наследовании метод вызывается не из того класса, откуда ожидается?

Четверг, 25.12.2025 — GitLab: Основы написания Pipeline 1/3

🎬 Пятница, 26.12.2025Пятничный кинорелакс

🎰 Суббота, 27.12.2025 — Розыгрышу уже неделя!


🔗 Будьте ближе к нам:

🌐 Читайте полные статьи на сайте

💬 Присоединитесь к обсуждению в чате

Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе! 🚀

#дайджест #код #python #полезное #код_на_салфетке
🔥81👍1
GitLab: Основы написания Pipeline 2/3
Автор: Иван Ашихмин

Вторая из трёх статья, посвящённая продолжению разбора конфигурирования файла .gitlab-ci.yml


Читать статью на сайте
Читать статью на Хабр

Поддержать проект через YooMoney
Поддержать проект через Tribute в Telegram
Поддержать проект через наш Telegram-бот

#гайды #docker #github #gitlab #pipeline #ci_cd #stage #devops #job #ci #кэш #if #trigger #артефакты
🔥51👌1
Всем привет!

С конца года многие подводят итоги — и мы решили не отставать.

Мы подготовили краткий обзор наших годовых цифр: чистые показатели по каналу и сайту за прошедшие 12 месяцев:
🔥124🦄4