и посмотреть медиа
Код на салфетке - Python кодинг
и посмотреть медиа
Канал о программировании на Python и других языках. Простые объяснения и коды.
Канал о программировании на Python и других языках. Простые объяснения и коды.
AI бот для озвучки текста и клонирования голоса в Telegram. Создавай аудио с помощью нейросети быстро и просто.
Ресурс для интересующихся программированием. Фокус на Python, но охватывает и другие темы. Простые примеры и разборы.
Привет, друзья! 👋 Еще одна неделя позади, и у нас накопилось много интересного контента. Вот самые полезные и увлекательные материалы, которые мы выбрали для вас на этой неделе: 📋 Новое на канале: 🔄 Понедельник, 04.05.2026 — ⚙️ Вторник, 05.05.2026 — Ловушка для стартапов, из-за которой MVP так и не доходят до запуска и Знаете ли вы, что a + b и b + a в Python могут вернуть разное? 🔧 Среда, 06.05.2026 — Изолированные пространства (SmetApp) 🎬 Пятница, 08.05.2026 — Обсуждаем наболевшее: почему ИИ на самом деле губит обучение программированию и почему слепая вера нейросетям — это ловушка и Пятничный кинорелакс ⚙️ Суббота, 09.05.2026 — Telegram Bot API 10.0: Взамодействие ботов и бесплатные ассистенты 🔗 Будьте ближе к нам: 🌐 Читайте полные статьи на сайте 💬 Присоединитесь к обсуждению в чате Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе! 🚀 #дайджест #код #python #полезное #код_на_салфетке 😼 @napkincode
Открыть канал и посмотреть медиаTelegram Bot API 10.0: Взамодействие ботов и бесплатные ассистенты Автор: Иван Ашихмин Ждали прорывное обновление от Telegram? Bot API 10.0 переворачивает игру! Никакой мишуры: бизнес-боты стали бесплатными, появился «гостевой режим», а боты наконец-то научились общаться друг с другом. Это идеальная инфраструктура для создания сложных AI-агентов. Разбираем главные фичи обновления. Все детали в статье! Читать статью на сайте Читать статью на Хабр Поддержать проект через YooMoney Поддержать проект через Tribute в Telegram Поддержать проект через наш Telegram-бот #BOT_API #Telegram #aiogram #Обновление #новости
Открыть канал и посмотреть медиаПриветствую! В преддверии праздника сегодня у нас тематический кинопост. Из огромного разнообразия фильмов в подобном жанре, выбрал именно этот. В какой версии смотреть (цвет или ЧБ) - решать вам, друзья. Всех с праздником! В бой идут одни "старики" (1974) «В бой идут одни “старики”» — один из самых тёплых и честных фильмов о войне, без парадного пафоса. Действие разворачивается летом 1943‑го в гвардейском истребительном полку, где вторая эскадрилья носит прозвище «поющая», а её командир, капитан Титаренко по кличке Маэстро, набирает в часть ребят, которые умеют и летать, и петь. Фильм одновременно лёгкий и очень болезненный: в нем много юмора, живых диалогов и чарующих песен, но за всем этим стоит реальное ощущение фронтовой жизни — когда люди держатся друг за друга и продолжают смеяться, даже понимая, что завтра кто‑то может не вернуться. Приятного просмотра! 😼 @napkincode
Открыть канал и посмотреть медиаВсем привет! Помните мой доклад для ВШЭ? Решил выжать из него самый сок и порезать на короткие шортсы с главными мыслями. Ловите первый ролик! В нём обсуждаем наболевшее: почему ИИ на самом деле губит обучение программированию и почему слепая вера нейросетям — это ловушка. Как вам такой формат? Согласны с мыслью из видео или считаете иначе? Делитесь в комментах! 👇 Ну и традиционно — буду очень благодарен за ваши лайки и просмотры. Выбирайте удобную платформу (или жмите везде, я только за 😁): 🔴 YouTube 🔵 VK Видео 🟢 RuTube 🟠 Дзен
Открыть канал и посмотреть медиаВ большинстве приложений твои деньги лежат в одном большом котле. Смешать личные расходы, бюджет на ремонт квартиры и деньги от проектов — классическая боль. Разделять их по виртуальным счетам тоже неудобно. В SmetApp всё начинается с проектов. Это полностью изолированные пространства. На картинках выше — готовые макеты экрана твоих проектов и модалки создания (сразу в светлой и тёмной темах). Как это работает: — Проекты разделены на личные и командные. — Для каждого ты задаёшь свою валюту и иконку. — Главная фича — шаблоны. Выбираешь «Базовый расчет», и в проекте появляются только нужные модули (доходы, расходы, аналитика). Всё остальное отключено и не перегружает интерфейс. Дизайн уже согласован. Фронтенд скоро заберёт макеты и начнёт превращать их в код. Как вам визуал? → Дневник в вебе: smetapp.ru/news → Главная: smetapp.ru → @smetapp
Открыть канал и посмотреть медиаЗнаете ли вы, что a + b и b + a в Python могут вернуть разное? Сложение выглядит симметрично, но под капотом Python сначала вызовет type(a).__add__(a, b). Левый и правый операнды идут через разные методы – __add__ и __radd__. Если у __add__ левого типа нет реализации для типа правого – он вернет NotImplemented, и Python вызовет __radd__ правого. class Money: def __init__(self, n): self.n = n def __radd__(self, other): return Money(self.n + other) result = 10 + Money(5) print(result.n) # 15 int.__add__(10, Money(5)) возвращает NotImplemented – тип int ничего не знает о Money. Тогда Python вызывает Money.__radd__(Money(5), 10) – и он-то знает что делать с int. Важно: NotImplemented это значение-синглтон, не исключение NotImplementedError. Возврат NotImplemented – сигнал для того чтобы попробовать другой метод, а не ошибка. Бывает исключение из обычного порядка: если правый операнд – подкласс левого и определяет свой __radd__, он вызывается первым, до __add__ левого: class A: def __add__(self, other): return "A.__add__" class B(A): def __radd__(self, other): return "B.__radd__" print(A() + B()) # B.__radd__ – а не A.__add__ Это сделано чтобы подкласс мог переопределить поведение базового класса. Если бы порядок был как обычно, то A.__add__ отработал бы первым и B никогда бы не получил шанс вмешаться, даже специально определив __radd__. Если оба метода возвращают NotImplemented (или их вообще нет) – случится TypeError: class X: pass class Y: pass try: X() + Y() except TypeError as e: print(e) # unsupported operand type(s) for +: 'X' and 'Y' Именно это сообщение Python выдает когда исчерпаны все варианты диспетчеризации. + может попробовать сделать сложение в два захода. Сначала через левый объект. И если через левый не получилось – то через правый. NotImplemented здесь – способ сказать "передай дальше", а не ошибка. Те же правила распространяются на __rsub__, __rmul__, __rtruediv__ и остальные reflected-методы. В следующий вторник – / vs // и отрицательное деление: почему -7 // 2 == -4, а не -3. Код на салфетке x Кусочки кода
Открыть канал и посмотреть медиаЗа годы запусков продуктов и работы с нетехническими фаундерами, я заметил повторяющиеся факторы, которые из раза в раз срывают выход на рынок. И, как ни парадоксально, половина из них связана с ИИ. Представьте, что пока вы работаете над фичей или фиксом, ваш нетехнический партнер или заказчик из лучших побуждений проработал эту проблему, общаясь с нейронкой, и теперь предлагает вам почитать трехчасовой лог своего общения с ChatGPT, потому что "кажется, там что-то важное". Какие еще проблемы возникают и что с этим можно делать – я расписал в статье на Хабре. Ссылка скрыта
Открыть канал и посмотреть медиаВсем доброго вечера пятницы! «Горничная» (2025) «Горничная» — психологический триллер о том, как прошлое и насилие умеют маскироваться под идеальную картинку. Милли, только что вышедшая из тюрьмы, устраивается горничной в дом успешной пары Нины и Эндрю и быстро понимает, что за фасадом роскоши что‑то не так. Нина кажется хрупкой и запертой в золотой клетке, Эндрю — идеальным мужем, но их история трещит по швам: манипуляции, контроль и страшные тайны прошлого постепенно вылезают наружу. Милли всё глубже втягивается в их игру, пытаясь спасти и себя, и ребёнка Нины, не превратившись в очередную жертву. Фильм подойдёт, если нравятся напряжённые камерные триллеры про абьюз, власть и женскую попытку вырваться из чужого сценария. Здесь меньше про скримеры и больше про психологическое давление, ложь и то, как легко спрятать ад за идеально выкрашенными стенами. Приятного просмотра! 😼 @napkincode
Открыть канал и посмотреть медиаЗнаете ли вы, что [[]] * 3 в Python – это три ссылки на один список, а не три списка? Удобный способ создать матрицу нулей [[0] * 3] * 3 оборачивается ловушкой: одно изменение элемента меняет сразу все строки. Причина в том, что * на последовательности повторяет ссылки, а не копирует объекты. Внутренний список создается один раз, а внешнее умножение дает три ссылки на него. Классика – матрица 3×3: matrix = [[0] * 3] * 3 matrix[0][0] = 1 print(matrix) # [[1, 0, 0], [1, 0, 0], [1, 0, 0]] – здесь изменились все строки matrix[0], matrix[1] и matrix[2] – один и тот же объект. Запись в любой из рядов видна через остальные, потому что ряд по сути один. Проверить это можно через id(): rows = [[]] * 3 print(id(rows[0]) == id(rows[1]) == id(rows[2])) # True rows[0].append("a") print(rows) # [['a'], ['a'], ['a']] – один список под тремя именами Все три элемента указывают на один и тот же пустой список. append на любом из них дописывает в этот единственный список, и изменение видно через все остальные ссылки. Правильный способ – list comprehension, который создает новый объект на каждой итерации: matrix = [[0] * 3 for _ in range(3)] matrix[0][0] = 1 print(matrix) # [[1, 0, 0], [0, 0, 0], [0, 0, 0]] – так изменилась только первая строка Внутреннее [0] * 3 тоже умножение, но там оно безопасно: нули неизменяемы, и наличие тысячи ссылок на один и тот же 0 ничего не ломает. Проблема возникает только когда * повторяет ссылку на изменяемый объект – список, словарь, set. * на последовательности экономит память, повторяя ссылки. Для неизменяемых элементов это незаметно, для изменяемых – ломает изоляцию между "копиями". Вложенные структуры безопаснее создавать через list comprehension. В следующий вторник – + и reflected operators: как Python решает чей метод звать, когда складываются объекты разных типов, и при чем тут __radd__. Код на салфетке x Кусочки кода
Открыть канал и посмотреть медиаТолько зарегистрированные пользователи могут делиться своим мнением.
Станьте первым, кто поделится своим впечатлением об этом ресурсе!