и посмотреть медиа
Код на салфетке - Python кодинг
и посмотреть медиа
Канал о программировании на Python и других языках. Простые объяснения и коды.
Канал о программировании на Python и других языках. Простые объяснения и коды.
AI бот для озвучки текста и клонирования голоса в Telegram. Создавай аудио с помощью нейросети быстро и просто.
Ресурс для интересующихся программированием. Фокус на Python, но охватывает и другие темы. Простые примеры и разборы.
Привет, друзья! 👋 Еще одна неделя позади, и у нас накопилось много интересного контента. Вот самые полезные и увлекательные материалы, которые мы выбрали для вас на этой неделе: 📋 Новое на канале: 🔄 Понедельник, 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
Открыть канал и посмотреть медиаТолько зарегистрированные пользователи могут делиться своим мнением.
Станьте первым, кто поделится своим впечатлением об этом ресурсе!