и посмотреть медиа
Code on a Napkin - Python coding
и посмотреть медиа
Channel about programming in Python and other languages. Simple explanations and codes.
Channel about programming in Python and other languages. Simple explanations and codes.
AI bot for text-to-speech and voice cloning in Telegram. Create audio using neural network quickly and easily.
Resource for those interested in programming. Focus on Python, but covers other topics as well. Simple examples and breakdowns.
Привет, друзья! 👋 Еще одна неделя позади, и у нас накопилось много интересного контента. Вот самые полезные и увлекательные материалы, которые мы выбрали для вас на этой неделе: 📋 Новое на канале: 🔄 Понедельник, 20.04.2026 — Дайджест ⚙️ Вторник, 21.04.2026 — Открываем закулисье и Знаете ли вы, что += в Python это не просто сокращение x = x + y? 🔧 Четверг, 23.04.2026 — Kawai-Focus 2.6: путь к MVP1 — создание экрана Таймер 🎬 Пятница, 24.04.2026 — Пятничный кинорелакс 🔗 Будьте ближе к нам: 🌐 Читайте полные статьи на сайте 💬 Присоединитесь к обсуждению в чате Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе! 🚀 #дайджест #код #python #полезное #код_на_салфетке 😼 @napkincode
Открыть канал и посмотреть медиаВсем привет! «Зелёная книга» (2018) «Зелёная книга» — тёплая дорожная драма по реальной истории дружбы, которая не должна была случиться. В 60‑е годы грубоватый вышибала Тони Валлелонга становится водителем и охранником утончённого чернокожего пианиста Дона Ширли в туре по расистскому югу США. Они ездят по городам, ориентируясь на «Зелёную книгу» — справочник мест, где чернокожих вообще готовы обслуживать. На фоне унижений, конфликтов и культурной пропасти между ними постепенно возникает уважение, а потом и настоящая дружба. Фильм легко смотрится, сочетая юмор, серьёзные темы и очень живые диалоги. Подойдёт, если хочется добротного кино «про людей» с послевкусием тепла и верой в то, что люди могут меняться. Приятного просмотра! 😼 @napkincode
Открыть канал и посмотреть медиаЗнаете ли вы, что += в Python это не просто сокращение x = x + y? Выглядит как короткая запись – но под капотом это два разных оператора. x = x + y всегда создает новый объект и присваивает его переменной слева. += сначала пытается изменить сам существующий объект, не создавая новый – через метод __iadd__. И только если у типа такого метода нет – работает как обычный +: создает новый объект. Для изменяемых типов (list, bytearray) разница принципиальна. Если на один список смотрят две переменные, две внешне одинаковые операции дают разный результат: a = [1, 2, 3] b = a a += [4] print(a) # [1, 2, 3, 4] print(b) # [1, 2, 3, 4] – b изменился, теперь это тот же список a = [1, 2, 3] b = a a = a + [4] print(a) # [1, 2, 3, 4] print(b) # [1, 2, 3] – новый объект, b нетронут Для списка += вызывает метод list.__iadd__ – он дописывает элементы в существующий объект и возвращает тот же самый объект. + всегда создает новый список. Поэтому когда на один список уже есть другая ссылка, результаты двух операций расходятся. Еще одна ситуация – кортеж, внутри которого лежит изменяемый объект: t = ([1, 2, 3],) try: t[0] += [4] except TypeError as e: print(e) # 'tuple' object does not support item assignment print(t) # ([1, 2, 3, 4],) – список ВНУТРИ обновился Python выполняет t[0] += [4] в два шага: сначала вызывает list.__iadd__ на внутреннем списке – список меняется и становится [1, 2, 3, 4]. Потом Python пытается записать результат обратно через t[0] = ... – и падает, потому что кортеж неизменяем. Операция и упала с ошибкой, и сработала одновременно. Понять, создает ли += новый объект или меняет старый – можно через id(): x = 10 print(id(x)) x += 1 print(id(x)) # другой id – int неизменяем, += создал новый объект lst = [1, 2] print(id(lst)) lst += [3] print(id(lst)) # тот же id – сам список поменялся, новый объект не создавался Для неизменяемых типов (int, str, tuple, frozenset) += действительно эквивалентен x = x + y – создается новый объект и присваивается переменной. Для изменяемых – меняется тот же объект, к которому уже были привязаны и другие переменные. Отсюда и расхождение ссылок, и парадокс с кортежем. += это не синтаксический сахар, а отдельный оператор со своим dunder-методом __iadd__. Для изменяемых типов он меняет сам существующий объект, не создавая новый – из-за этого ломаются разделяемые ссылки и появляется парадокс с кортежем, в котором операция падает и срабатывает одновременно. То же самое относится к -=, *=, /= и остальным – у каждого свой __isub__, __imul__, __itruediv__. В следующий вторник – * на списке: почему [[]] * 3 это не три копии, а три ссылки на один объект. Код на салфетке x Кусочки кода
Открыть канал и посмотреть медиаНаш лендинг висел в сети с самого старта разработки. Просто как заглушка, чтобы поисковики начали его индексировать. Теперь мы прикрутили туда раздел «Новости». Это полное зеркало нашего дневника разработки из Telegram. Зачем? Не все сидят в Telegram. Мы хотим, чтобы любой человек из поиска мог зайти и увидеть: здесь реальные люди делают реальный продукт. С багами, спорами об архитектуре и честными отчётами. Если вы читаете это на сайте (случайно зашли по ссылке) — добро пожаловать за кулисы. И запрыгивайте к нам в Telegram, чтобы голосовать за фичи вместе с командой. Если вы читаете это в Telegram — сходите посмотреть, как интерфейс наших новостей выглядит в вебе. → Дневник в вебе: smetapp.ru/news → Главная: smetapp.ru → @smetapp
Открыть канал и посмотреть медиаПривет, друзья! 👋 Еще одна неделя позади, и у нас накопилось много интересного контента. Вот самые полезные и увлекательные материалы, которые мы выбрали для вас на этой неделе: 📋 Новое на канале: 🔄 Понедельник, 13.04.2026 — Дайджест ⚙️ Вторник, 14.04.2026 — 4 недели разработки. Первая контрольная точка. 🔧 Среда, 15.04.2026 — Знаете ли вы, что defaultdict создает записи при чтении? ⚙️ Четверг, 16.04.2026 — Вместо 8 разных VPS: как я организовал практику студентам на одном сервере 🎬 Пятница, 17.04.2026 — Пятничный кинорелакс 🔗 Будьте ближе к нам: 🌐 Читайте полные статьи на сайте 💬 Присоединитесь к обсуждению в чате Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе! 🚀 #дайджест #код #python #полезное #код_на_салфетке 😼 @napkincode
Открыть канал и посмотреть медиаВсем доброго вечера пятницы! «Остров проклятых» (2009) «Остров проклятых» — плотный психологический триллер Мартина Скорсезе с ДиКаприо, который начинаетcя как детектив, а заканчивается ударом по психике. В 1954 году маршал США Тедди Дэниэлс отправляется на остров Шаттер расследовать исчезновение пациентки психбольницы для особо опасных преступников. Чем глубже он копает, тем более странными кажутся и врачи, и пациенты, и сам остров: заговоры, эксперименты на людях, намёки на промывку мозгов. Вопрос «кто тут сумасшедший?» постепенно меняется на «а можно ли доверять самому себе». Это фильм, который держит атмосферой, тревогой и финалом, после которого хочется пересмотреть всё заново, уже зная правду. Приятного просмотра!
Открыть канал и посмотреть медиаВместо 8 разных VPS: как я организовал практику студентам на одном сервере Автор: Иван Ашихмин Выдать студентам по серверу, не плодя виртуалки и не покупая VPS? Легко! Я разделил один сервер на изолированные среды с помощью Incus. Внутри — пошаговый гайд и разбор полетов: починка сети на IPv6, конфликт Docker с ZFS и проброс портов. Делюсь реальным опытом и шишками! Читать статью на сайте Читать статью на Хабр Поддержать проект через YooMoney Поддержать проект через Tribute в Telegram Поддержать проект через наш Telegram-бот #Debian #DevOps #Incus #LXC #LXD #Ubuntu #VPS #Гайд #Контейнеризация
Открыть канал и посмотреть медиаЗнаете ли вы, что defaultdict создает записи при чтении? Удобно использовать defaultdict чтобы не проверять наличие ключей. Но с ним есть подвох: обращение к несуществующему ключу через d[key] не просто вернет значение по умолчанию, а создаст запись в словаре. Словарь растет просто от того, что его читают: from collections import defaultdict d = defaultdict(list) print(len(d)) # 0 # Читаем несуществующий ключ result = d["users"] print(len(d)) # 1 print(d) # defaultdict(, {'users': []}) # Ключ 'users' теперь существует в словаре Обращение через d["users"] вызвало factory-функцию (list), создало пустой список и записало его в словарь. Это не баг – так работает __missing__, который defaultdict переопределяет. Проблема становится особенно заметной в циклах: from collections import defaultdict config = defaultdict(str) config["host"] = "localhost" config["port"] = "5432" # Проверяем наличие опциональных ключей optional_keys = ["timeout", "ssl", "pool_size"] for key in optional_keys: value = config[key] # Вместо проверки – создаются записи print(dict(config)) # {'host': 'localhost', 'port': '5432', 'timeout': '', 'ssl': '', 'pool_size': ''} # Три мусорных ключа из ниоткуда Каждый config[key] для несуществующего ключа создал пустую строку и сохранил ее. Если потом итерироваться по config или сериализовать его – в данных будет мусор. Безопасная альтернатива – .get(), который не трогает словарь: from collections import defaultdict d = defaultdict(list) # .get() не вызывает __missing__ result = d.get("users") print(result) # None print(len(d)) # 0 # Проверка через in тоже безопасна print("users" in d) # False print(len(d)) # 0 .get() возвращает None (или указанный default), но не создает запись. Оператор in тоже не вызывает __missing__. defaultdict вызывает factory-функцию и создает запись при любом обращении через d[key] к несуществующему ключу. Для безопасного чтения без побочных эффектов лучше использовать .get() или проверку через in. Код на салфетке x Кусочки кода
Открыть канал и посмотреть медиа4 недели разработки. Первая контрольная точка. Вчера прошло закрытое промежуточное демо проектов в IT-академии Lad. Наш ПМ Игорь показывал, что команда из 13 человек успела за месяц, и главное — куда мы идём. Публичный релиз с гостями будет только в июле, а пока сверяем часы. Короткая выжимка (слайды с питча — на картинках выше): — Концепция. Мы не делаем очередной блокнот для расходов или перегруженную CRM. SmetApp — это конструктор. Есть лёгкое базовое ядро, на которое ты сам навешиваешь нужные модули (счета, операции, бюджет, аналитика). Ничего лишнего в интерфейсе не будет. — Под капотом. Бэкенд на Python + FastAPI (PostgreSQL, Redis, строим модульный монолит). Фронт на Nuxt 4 (Vue 3). Заложили управление фича-флагами на лету. — Прогресс. Авторизация и регистрация на бэке готовы. Фронт сейчас перекладывает макеты в код (веб + мобилка, с обработкой всех негативных сценариев). Дизайн первого экрана после входа уже отрисован (покажем попозже😉). — Дедлайн. Публичное демо MVP — в июле. До этого времени идём по жёсткому роадмапу (Апрель — авторизация, Май — структура, Июнь — ядро). Движемся дальше. Спасибо команде, что тянет этот темп. → @smetapp
Открыть канал и посмотреть медиаOnly registered users can share their opinion.
Be the first to share your impression of this resource!