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
Привет, друзья! 👋
Еще одна неделя позади, и у нас накопилось много интересного контента. Вот самые полезные и увлекательные материалы, которые мы выбрали для вас на этой неделе:
📋 Новое на канале:
🔄 Понедельник, 22.12.2025 — Дайджест
🐍 Вторник, 23.12.2025 — 1. ty: революция в тайп-чекинге. 2. Знаете ли вы, что при множественном наследовании метод вызывается не из того класса, откуда ожидается?
⚙ Четверг, 25.12.2025 — GitLab: Основы написания Pipeline 1/3
🎬 Пятница, 26.12.2025 — Пятничный кинорелакс
🎰 Суббота, 27.12.2025 — Розыгрышу уже неделя!
🔗 Будьте ближе к нам:
🌐 Читайте полные статьи на сайте
💬 Присоединитесь к обсуждению в чате
Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе! 🚀
#дайджест #код #python #полезное #код_на_салфетке
Еще одна неделя позади, и у нас накопилось много интересного контента. Вот самые полезные и увлекательные материалы, которые мы выбрали для вас на этой неделе:
📋 Новое на канале:
🔄 Понедельник, 22.12.2025 — Дайджест
🐍 Вторник, 23.12.2025 — 1. ty: революция в тайп-чекинге. 2. Знаете ли вы, что при множественном наследовании метод вызывается не из того класса, откуда ожидается?
⚙ Четверг, 25.12.2025 — GitLab: Основы написания Pipeline 1/3
🎬 Пятница, 26.12.2025 — Пятничный кинорелакс
🎰 Суббота, 27.12.2025 — Розыгрышу уже неделя!
🔗 Будьте ближе к нам:
🌐 Читайте полные статьи на сайте
💬 Присоединитесь к обсуждению в чате
Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе! 🚀
#дайджест #код #python #полезное #код_на_салфетке
🔥8❤1👍1
GitLab: Основы написания Pipeline 2/3
Автор: Иван Ашихмин
Вторая из трёх статья, посвящённая продолжению разбора конфигурирования файла
Читать статью на сайте
Читать статью на Хабр
Поддержать проект через YooMoney
Поддержать проект через Tribute в Telegram
Поддержать проект через наш Telegram-бот
#гайды #docker #github #gitlab #pipeline #ci_cd #stage #devops #job #ci #кэш #if #trigger #артефакты
Автор: Иван Ашихмин
Вторая из трёх статья, посвящённая продолжению разбора конфигурирования файла
.gitlab-ci.ymlЧитать статью на сайте
Читать статью на Хабр
Поддержать проект через YooMoney
Поддержать проект через Tribute в Telegram
Поддержать проект через наш Telegram-бот
#гайды #docker #github #gitlab #pipeline #ci_cd #stage #devops #job #ci #кэш #if #trigger #артефакты
🔥5⚡1👌1
Всем привет!
С конца года многие подводят итоги — и мы решили не отставать.
Мы подготовили краткий обзор наших годовых цифр: чистые показатели по каналу и сайту за прошедшие 12 месяцев:
С конца года многие подводят итоги — и мы решили не отставать.
Мы подготовили краткий обзор наших годовых цифр: чистые показатели по каналу и сайту за прошедшие 12 месяцев:
🔥12❤4🦄4
Знаете ли вы, как Microsoft Azure упал на 8 часов из-за 29 февраля, которого не существует?
29 февраля 2012 года облако Microsoft Azure легло на 8+ часов. Сертификаты для виртуальных машин создавались с датой истечения "текущая дата + 1 год", а 29 февраля 2012 плюс год дает 29 февраля 2013. Такой даты не существует, потому что 2013 год не високосный.
Система пыталась создать сертификат с невалидной датой, падала с ошибкой. Агент в виртуалке не мог стартовать, хост ждал 25 минут, не получал ответа, решал что сервер умер, переносил виртуалку на другой сервер – та же проблема повторялась снова, каскадом по всем серверам кластера.
Через 75 минут система решила что проблема в железе и отключила автоматическое восстановление – так Azure начал падать по всему миру.
Microsoft отключил управление сервисами глобально в 18:55 PST 28 февраля, первый раз в истории Azure. Клиенты не могли деплоить, обновлять и масштабировать приложения. Не упавшие приложения продолжали работать, но часть виртуалок была недоступна.
Баг нашли в 18:38, фикс накатили к 05:23 следующего утра. Azure вернулся в строй для большинства кластеров.
Но это было ненадолго: в 7 кластерах система была в процессе обновления когда случился тот же баг с високосным годом. Microsoft решил откатиться на старую версию с фиксом. Протестировали на одном из серверов, все выглядело нормально – накатили сразу на все сервера в этих 7 кластерах. И забыли проверить сеть.
В пакете обновления оказался новый сетевой плагин, несовместимый со старой версией. Все виртуалки в этих кластерах потеряли сеть, включая те что работали нормально. В этих кластерах крутились Access Control Service и Service Bus, от которых зависело множество других сервисов.
Окончательно все починили только к 02:15 ночи 1 марта.
После окончательной починки, Microsoft выдал всем клиентам Azure Compute кредит на 33% от стоимости за весь месяц, даже тем кого не затронуло.
Это стало одним из самых громких отключений в истории облачных сервисов – баг в одной строке кода с датами положил всю клиентскую инфраструктуру. Так что в Новом Году желаем вам не повторять судьбу Microsoft и помнить про время!
Код на салфетке x Кусочки кода
29 февраля 2012 года облако Microsoft Azure легло на 8+ часов. Сертификаты для виртуальных машин создавались с датой истечения "текущая дата + 1 год", а 29 февраля 2012 плюс год дает 29 февраля 2013. Такой даты не существует, потому что 2013 год не високосный.
Система пыталась создать сертификат с невалидной датой, падала с ошибкой. Агент в виртуалке не мог стартовать, хост ждал 25 минут, не получал ответа, решал что сервер умер, переносил виртуалку на другой сервер – та же проблема повторялась снова, каскадом по всем серверам кластера.
Через 75 минут система решила что проблема в железе и отключила автоматическое восстановление – так Azure начал падать по всему миру.
Microsoft отключил управление сервисами глобально в 18:55 PST 28 февраля, первый раз в истории Azure. Клиенты не могли деплоить, обновлять и масштабировать приложения. Не упавшие приложения продолжали работать, но часть виртуалок была недоступна.
Баг нашли в 18:38, фикс накатили к 05:23 следующего утра. Azure вернулся в строй для большинства кластеров.
Но это было ненадолго: в 7 кластерах система была в процессе обновления когда случился тот же баг с високосным годом. Microsoft решил откатиться на старую версию с фиксом. Протестировали на одном из серверов, все выглядело нормально – накатили сразу на все сервера в этих 7 кластерах. И забыли проверить сеть.
В пакете обновления оказался новый сетевой плагин, несовместимый со старой версией. Все виртуалки в этих кластерах потеряли сеть, включая те что работали нормально. В этих кластерах крутились Access Control Service и Service Bus, от которых зависело множество других сервисов.
Окончательно все починили только к 02:15 ночи 1 марта.
После окончательной починки, Microsoft выдал всем клиентам Azure Compute кредит на 33% от стоимости за весь месяц, даже тем кого не затронуло.
Это стало одним из самых громких отключений в истории облачных сервисов – баг в одной строке кода с датами положил всю клиентскую инфраструктуру. Так что в Новом Году желаем вам не повторять судьбу Microsoft и помнить про время!
Код на салфетке x Кусочки кода
🔥14😱1🤣1
С наступающим новым годом!
Вот и подходит к концу очередной год. Год был, скажем так, насыщенным... В нём были как хорошие моменты, так и плохие и много, много неожиданных. Но, год вот-вот закончится и самое время зарядиться позитивными мыслями на предстоящий 26-й год!
Этот год для канала вышел вполне неплохим (хотя мог бы быть и лучше!):
- Число подписчиков за год удвоилось! Цель на будущий год - превзойти этот показатель и набрать 4-5 тысяч!
- Статьи выходили практически без пропусков в течение всего года по четвергам, а иногда и в другие дни, если был на то повод. Постараемся держать планку и дальше! Также, воспользуюсь моментом и скажу, что мы будем рады новым авторам!
- Сайт в течение года претерпевал изменения. Обновился внешний вид, он стал, как мне кажется, вполне неплохим, хоть и не без косяков. Однако, у меня всё ещё есть цель кардинальной переделки из "сайт-блог" в полноценный Content Hub...
Были в этом году и проекты. Часть Open Source, а часть закрытые:
- Taigram - Telegram-бот для оповещений из системы управления проектами Taiga. Одно из самых полезных приложений, поскольку пользуемся им регулярно, однако, код требует переработки и оптимизации.
- ReVu - Self-Hosted ревьюер Pull Request с помощью ИИ. Проект получился интересным, но он ещё не закончен.
- Napkin Random Bot - Бот для проведения розыгрышей. Именно в нём вы принимаете участие в нашем новогоднем розыгрыше =). Также как и Taigram, он требует доработки и улучшений, но он уже вполне рабочий.
- SmetApp - Тот самый проект, в который я набирал стажёров для участия. Мы его начали, но забуксовали из-за того, что я не смог уделять ему достаточно времени, а также, потому, что у нас нет фронтендера. С самого начала нового года растормошу всех и продолжим разработку!
Хочу поблагодарить тех, кто радует вас контентом на канале и сайте:
- Сергея, автора рубрики "Кусочки кода", который, вроде бы, не пропустил ни одного вторника! Подписывайтесь на его одноимённый канал!
- Эльшада, автора воскресной рубрики (у которой почему-то всё ещё нет названия!), в которой он периодически рассказывает о работе с ИИ и других интересных вещах с которыми ему приходится сталкиваться как СТО. Также подписывайтесь на его канал "Мозг в данных".
- Евгения, который пишет для вас статьи на сайте и развивает свой проект.
Поздравление от Эльшада:
Поздравление от Евгения:
Хочу пожелать всем хорошо отдохнуть в новогодние праздники и набраться сил на весь предстоящий год. Мыслите позитивно и тогда неудачи будут просто небольшой преградой к успеху. Пробуйте новое, изучайте и развивайтесь!
Пусть те, кто ищут работу найдут её без трудностей, а те, кто только учатся будут схватывать всё "на лету".
Успехов в новом 2026-м году!
Расскажите, как прошёл ваш год и какие планы на грядущий?
Вот и подходит к концу очередной год. Год был, скажем так, насыщенным... В нём были как хорошие моменты, так и плохие и много, много неожиданных. Но, год вот-вот закончится и самое время зарядиться позитивными мыслями на предстоящий 26-й год!
Этот год для канала вышел вполне неплохим (хотя мог бы быть и лучше!):
- Число подписчиков за год удвоилось! Цель на будущий год - превзойти этот показатель и набрать 4-5 тысяч!
- Статьи выходили практически без пропусков в течение всего года по четвергам, а иногда и в другие дни, если был на то повод. Постараемся держать планку и дальше! Также, воспользуюсь моментом и скажу, что мы будем рады новым авторам!
- Сайт в течение года претерпевал изменения. Обновился внешний вид, он стал, как мне кажется, вполне неплохим, хоть и не без косяков. Однако, у меня всё ещё есть цель кардинальной переделки из "сайт-блог" в полноценный Content Hub...
Были в этом году и проекты. Часть Open Source, а часть закрытые:
- Taigram - Telegram-бот для оповещений из системы управления проектами Taiga. Одно из самых полезных приложений, поскольку пользуемся им регулярно, однако, код требует переработки и оптимизации.
- ReVu - Self-Hosted ревьюер Pull Request с помощью ИИ. Проект получился интересным, но он ещё не закончен.
- Napkin Random Bot - Бот для проведения розыгрышей. Именно в нём вы принимаете участие в нашем новогоднем розыгрыше =). Также как и Taigram, он требует доработки и улучшений, но он уже вполне рабочий.
- SmetApp - Тот самый проект, в который я набирал стажёров для участия. Мы его начали, но забуксовали из-за того, что я не смог уделять ему достаточно времени, а также, потому, что у нас нет фронтендера. С самого начала нового года растормошу всех и продолжим разработку!
Хочу поблагодарить тех, кто радует вас контентом на канале и сайте:
- Сергея, автора рубрики "Кусочки кода", который, вроде бы, не пропустил ни одного вторника! Подписывайтесь на его одноимённый канал!
- Эльшада, автора воскресной рубрики (у которой почему-то всё ещё нет названия!), в которой он периодически рассказывает о работе с ИИ и других интересных вещах с которыми ему приходится сталкиваться как СТО. Также подписывайтесь на его канал "Мозг в данных".
- Евгения, который пишет для вас статьи на сайте и развивает свой проект.
Поздравление от Эльшада:
С наступающим 2026🎄
Желаю, чтобы в 2026-м восстание машин снова отложили!🤖 🥂 Пусть ваши модели будут умными и послушными, а аптайм серверов будет длиннее, чем список покупок к новогоднему столу (Ну конечно же 100%). Пусть ИИ берет на себя всю рутину, а вы - только премии. Держите сервера в холоде, а ключи шифрования - ближе к сердцу.🤗 🤗
Поздравление от Евгения:
Дорогие подписчики, гости канала, а также команда «Код на салфетке» — поздравляю всех с наступающим Новым 2026 годом! В новом году Kawai-Focus переедет на новый стек: он станет современнее, удобнее и визуально ещё приятнее. Желаю каждому, чтобы в 2026-м исполнились самые заветные мечты, а также чтобы год принёс рост, интересные задачи и успехи в IT-карьере.
Хочу пожелать всем хорошо отдохнуть в новогодние праздники и набраться сил на весь предстоящий год. Мыслите позитивно и тогда неудачи будут просто небольшой преградой к успеху. Пробуйте новое, изучайте и развивайтесь!
Пусть те, кто ищут работу найдут её без трудностей, а те, кто только учатся будут схватывать всё "на лету".
Успехов в новом 2026-м году!
Расскажите, как прошёл ваш год и какие планы на грядущий?
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥16❤7⚡6👍2
Telegram Bot API 9.3: Революция в ИИ-чатах
Автор: Иван Ашихмин
Telegram представил обновление Bot API 9.3. Подробнее в статье...
Читать статью на сайте
Читать статью на Хабр
Поддержать проект через YooMoney
Поддержать проект через Tribute в Telegram
Поддержать проект через наш Telegram-бот
#Telegram #Новости #aiogram #bot_api #обновление #темы #подарки
Автор: Иван Ашихмин
Telegram представил обновление Bot API 9.3. Подробнее в статье...
Читать статью на сайте
Читать статью на Хабр
Поддержать проект через YooMoney
Поддержать проект через Tribute в Telegram
Поддержать проект через наш Telegram-бот
#Telegram #Новости #aiogram #bot_api #обновление #темы #подарки
🔥9❤2⚡2👍1