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

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

Реклама и взаимопиар: @Murzyev1995
Сотрудничество и др.: @proDreams
Download Telegram
Привет, друзья! 👋

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

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

🔄 Понедельник, 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
Знаете ли вы, как 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 Кусочки кода
🔥14😱1🤣1
С наступающим новым годом!

Вот и подходит к концу очередной год. Год был, скажем так, насыщенным... В нём были как хорошие моменты, так и плохие и много, много неожиданных. Но, год вот-вот закончится и самое время зарядиться позитивными мыслями на предстоящий 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🔥1676👍2
Приветствую!

«Живая сталь» (2011)

Если хочется чего-то тёплого, драйвового и немного олдскульного, «Живая сталь» — идеальный выбор для вечернего просмотра. В будущем привычный бокс заменили бои огромных боевых роботов, а люди теперь ставят на железных гигантов, а не на живых бойцов. На этом фоне бывший боксёр Чарли Кентон пытается выживать, таская по ярмаркам и подпольным аренам своих списанных железяк.

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

«Живая сталь» — кино, которое одинаково хорошо работает и как зрелищный робот-файтинг, и как эмоциональная история про отцов и детей. Отличный вариант, если хочется мотивации, динамики и фильма, после которого остаётся приятное послевкусие.
🔥85
Всем привет!

Осталась всего неделя до окончания розыгрыша! уже скоро определятся 11 счастливчиков!

Самое время принять участие и позвать друзей!

https://t.me/press_any_button/1384
4🔥3😱21
Гайд по первоначальной настройке VPS

Полностью обновлена статья:
- Улучшено форматирование.
- Добавлено много пояснений.
- Добавлены новые блоки.

Статья стала комплекснее и полезнее.

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

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

#linux #vps #debian #ubuntu #гайды #настройка_сервера #ssh
🔥17
Привет, друзья! 👋

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

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

🔄 Понедельник, 29.12.2025Дайджест и GitLab: Основы написания Pipeline 2/3

🐍 Вторник, 30.12.2025Итоги года и Знаете ли вы, как Microsoft Azure упал на 8 часов из-за 29 февраля, которого не существует?

🎊 Среда, 31.12.2025 — Поздравления

Четверг, 01.01.2026 — Telegram Bot API 9.3: Революция в ИИ-чатах

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

🍀 Суббота, 03.01.2026 — Новогодний розыгрыш и Гайд по первоначальной настройке VPS

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

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

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

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

#дайджест #код #python #полезное #код_на_салфетке
🔥9
Знаете ли вы, что генераторы помнят где остановились между вызовами?

Пишете генератор с локальными переменными, вызываете next(), потом через час снова next() – а он продолжает с того же места, будто и не останавливался. Все переменные на месте, счетчики не сбросились, состояние сохранилось. Это работает благодаря тому, что yield не просто возвращает значение, а замораживает весь стек функции: локальные переменные, позицию выполнения – все.

Простой пример – генератор считает и помнит счетчик:

def counter():
count = 0
while True:
count += 1
yield count

gen = counter()
print(next(gen)) # 1
print(next(gen)) # 2
# Сходили за чаем, вернулись
print(next(gen)) # 3 - помнит где остановился


Каждый next() продолжает с того места где yield остановился. Переменная count не исчезает между вызовами – она заморожена внутри генератора.

Еще интереснее с несколькими переменными и сложным состоянием:

def fibonacci():
a, b = 0, 1
while True:
yield a
a, b = b, a + b

fib = fibonacci()
print(next(fib)) # 0
print(next(fib)) # 1
print(next(fib)) # 1
print(next(fib)) # 2
# 2_days_later.jpg
print(next(fib)) # 3 - обе переменные a и b сохранились
print(next(fib)) # 5


Обе переменные a и b остаются в памяти между вызовами. Генератор не пересоздается каждый раз, он просто продолжает с замороженной точки.

Проверим, что состояние действительно сохраняется внутри объекта:

def stateful_gen():
state = {'calls': 0, 'sum': 0}
while True:
value = yield state['sum']
state['calls'] += 1
state['sum'] += value

gen = stateful_gen()
next(gen) # Инициализация
print(gen.send(10)) # 10
print(gen.send(20)) # 30
print(gen.send(5)) # 35
# state живет внутри генератора между вызовами


Словарь state существует в памяти генератора постоянно. Это не просто локальная переменная функции – это часть состояния генератора, которое Python сохраняет в специальной структуре.

А вот пример где генератор обрабатывает файл порциями и помнит позицию:

def read_chunks(filename, chunk_size=1024):
with open(filename, 'r') as f:
position = 0
while True:
chunk = f.read(chunk_size)
if not chunk:
break
position += len(chunk)
yield f"Read {len(chunk)} bytes, total: {position}"

# Создаем тестовый файл
with open('test.txt', 'w') as f:
f.write('x' * 5000)

reader = read_chunks('test.txt', 1000)
print(next(reader)) # Read 1000 bytes, total: 1000
print(next(reader)) # Read 1000 bytes, total: 2000
# Делаем другие задачи...
print(next(reader)) # Read 1000 bytes, total: 3000
# position не сбросился, файловый дескриптор жив


Переменная position и открытый файл живут между вызовами. Генератор держит весь контекст выполнения включая file handle.

Как это работает под капотом? Python создает специальный объект генератора с полями gi_frame (stack frame), gi_code (байткод), gi_yieldfrom (для yield from); все локальные переменные хранятся в gi_frame.f_locals. А когда вызываем next(), Python восстанавливает stack frame и продолжает выполнение с инструкции после yield.

Генераторы сохраняют полное состояние выполнения между вызовами через замороженный stack frame. Это позволяет писать итераторы которые помнят где остановились, обрабатывать бесконечные последовательности, держать открытые ресурсы между вызовами. Но – если генератор держит открытый файл или соединение, не забывайте вызывать gen.close() для cleanup.

Код на салфетке x Кусочки кода
🔥131👍1
173 человека. 11 призов. 3 дня.

Статистика на вашей стороне, друзья. Шансы выиграть неприлично высокие 🔥

Если вы ждали знака свыше, чтобы испытать удачу — это он. Результаты уже совсем скоро, так что не тяните!

Прыгай сюда 👉 https://t.me/press_any_button/1384
И другу перешли, пусть тоже попробует!
🔥7😱3
Всем привет!

На сайте небольшое, но важное обновление: мы объединяем комментарии!

Раньше обсуждения на сайте и в Telegram-канале жили разными жизнями. К тому же, чтобы написать на сайте, нужно было регистрироваться, а это лишнее время.

Теперь всё работает через виджет Telegram.

В чём плюсы для вас:
Одна дискуссия: комментарии под статьей на сайте и постом в канале теперь синхронизированы.
Никаких лишних регистраций: чтобы написать на сайте, достаточно просто залогиниться через Telegram.

Теперь обсуждать новости стало намного проще и удобнее. Заходите проверить!

Пост на сайте

Как вам изменение? 👇
🔥63👍1
Kawai-Focus 2.1: переезд на новый стек
Автор: Eugene Kaddo

Данная статья посвящена:
- Причинам ухода с Kivy;
- Переезду проекта на новый стек: FastApi + Vue.js + Tauri + Ionic;
- Сборке приложения под Linux в AppImage.


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

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

#Python #Kivy #Open_source #Наши_Open_Source_проекты #Kawai.Focus #Tauri #Nuitka #Ionic #Vue.js #FastApi
🔥51🥰1🎉1