Код на салфетке

channel icon
Канал для тех, кому интересно программирование на Python и не только.

Чат канала: @pressanybutton_chat
Заметки автора: https://t.me/writeanynotes
Буст канала: https://t.me/boost/press_any_button

Условия размещения

Цена за 24 часа в ленте 600,00
Цена за 1 час закрепления 100,00
Взаимопиар ≥ 600 подписчиков

Казино, мошенничества, пирамиды, ставки и всё в этом духе.

+4
823
подписчиков
+1
249
охват 1 публикации
0
~1
постов / день
-0,1%
30,3%
ERR % ?

Статистика

Последние публикации

Код на салфетке
14 ноября 2024 г. 11:41
Вхожу в IT - telegram-bot (часть 2)
Автор: Eugene Kaddo

Данная статья продолжает цикл статей о том как я вхожу в IT product уровня в сфере Telegram-ботов на aiogram3. Тут я описываю сложности вхождения в коммерческий мир IT, высказываю свои мысли, рассказываю через какие трудности приходится пройти на старте продуктовой карьеры в IT.


Читать пост в TelegramЧитать пост в Telegram

Пост на сайте
Поддержать проект на Boosty
Поддержать проект в Telegram

#Python #Стажировка #Бот #Aiogram #Курсы #Путь_в_IT #Обучение #Менторство #Код_Ревью
Код на салфетке
13 ноября 2024 г. 10:00
🔬🚀 Неожиданные открытия, которые изменят будущее! 🚀🔬

Вы когда-нибудь задумывались, как технологии могут изменить вашу жизнь уже завтра? 🤔✨ В нашем телеграмм-канале мы раскрываем самые шокирующие факты о науке и технологиях, которые вы не найдете в учебниках! 📚💡

🔥 Что внутри?
- Удивительные достижения ученых, о которых никто не говорит!
- Инновационные гаджеты, которые сделают вас супергероем!
- Тайны Вселенной, которые ждут своего открытия!

👉 Подписывайтесь сейчас и станьте частью научной революции! Не упустите шанс быть в курсе самых горячих новостей и обсуждений! 🔥🔗
Код на салфетке
12 ноября 2024 г. 14:01
Хотите узнать, как использовать генераторы в Python для эффективной работы с большими данными?

Генераторы в Python - это особый тип функций, которые возвращают объект-итератор. В отличие от обычных функций, они не выполняют весь код сразу, а "замораживаются" на каждом yield и возобновляют работу только при запросе следующего значения.

Генераторы позволяют создавать итераторы, элементы которых вычисляются "лениво", то есть по мере необходимости. Это особенно полезно при работе с большими файлами, когда загрузка всего содержимого в память может привести к проблемам.

def read_logs(filename):
with open(filename) as file:
for line in file:
if '[ERROR]' in line:
yield line.strip()

for error in read_logs('server.log'):
print(f"Error found: {error}")


- Файл читается построчно, а не целиком
- В памяти хранится только одна строка в каждый момент времени
- Если в файле миллион строк, но нас интересуют только ошибки, мы не тратим память на хранение ненужных строк
Код на салфетке
11 ноября 2024 г. 11:00
Привет, друзья!

Прошла еще одна неделя, и у нас накопилось много интересных материалов: статьи, новости и полезные советы. Вот наш недельный дайджест:

Понедельник (04.11.2024) Дайджест за предыдущую неделю

Вторник (05.11.2024) Знаете ли вы, как Python управляет памятью с помощью подсчета ссылок и сборщика мусора?

Среда (06.11.2024)

Четверг (07.11.2024)

Пятница (08.11.2024) Пятничный кинорелакс

Суббота (09.11.2024) Что выведет этот код?

Воскресенье (10.11.2024) Объяснение задачи


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

С уважением,
Команда канала "Код на салфетке".

#дайджест #материалы #новости #код_на_салфетке
Код на салфетке
11 ноября 2024 г. 8:02
Приветствуем 👋

Делимся с Вами каналом #️⃣КОД ЗАКОНА#️⃣КОД ЗАКОНА, который поможет использовать инновационные технологии и ИИ в юридической практике (и не только).

Автор канал собрала всё, чтобы вы смогли раскрыть секреты ИИ в юриспруденции:

✔️ Лайфхаки и советы, как экономить часы на рутинных задачах
✔️ Алгоритмы по созданию процессуальных документов
✔️ Обзоры мощных нейросетей и AI-ассистентов, в том числе и Докзиллы
✔️ Эксклюзивные новости об ИИ в праве
✔️ Автор помогает подписчикам с различными кейсами про ИИ

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

Подписывайся, если готов раскрыть ИИ на максимум 👍 Подписывайся, если готов раскрыть ИИ на максимум 👍
Код на салфетке
10 ноября 2024 г. 19:00
Интересный факт
Конструкция [for ... in ...], используемая в нашем коде, называется списковое включение (или list comprehension на английском). Это удобный способ быстро создать новый список на основе существующей коллекции, применяя к его элементам условия или преобразования. Хотя правильное название — списковое включение, его часто называют просто "генератором" — это не совсем корректно, но распространено среди разработчиков.
Код на салфетке
10 ноября 2024 г. 19:00
Вчерашняя задача была несложной, но требовала знаний простых чисел и внимательности. Правильный ответ выбрали около 50% участников! Давайте разберём подробно как работает данный код. Это поможет лучше понять использование функций для проверки числовых свойств и работы с условными выражениями.

Задача:
Вы разрабатываете алгоритм, который отбирает из списка только те числа, которые либо простые, либо чётные. Программа вызывает несколько функций и использует списковые включения, которые помогают сделать код более компактным. Разберём, как он работает и что вернёт.

Код задачи:
def filter_numbers(
numbers: list[int],
) -> list[int]:
return [
x
for x in numbers
if is_prime(x) or is_even(x)
]


def is_prime(num: int) -> bool:
if num < 2:
return False
return all(
num % i != 0
for i in range(2, int(num**0.5) + 1)
)


def is_even(num: int) -> bool:
return num % 2 == 0


sequence = [2, 3, 5, 10, 15, 21, 22]
result = filter_numbers(sequence)
print(result)


Пояснения по коду:

1. Функция `filter_numbers`:
- Эта функция принимает список чисел numbers и возвращает новый список, содержащий только те числа, которые проходят проверку на простоту или чётность.
- Используется списковое включение: [x for x in numbers if is_prime(x) or is_even(x)].
- Здесь каждый элемент x из numbers добавляется в результат, если он проходит проверку: is_prime(x) or is_even(x). То есть число добавляется в новый список, если оно простое (функция is_prime) или чётное (функция is_even).

2. Функция `is_prime`:
- Эта функция проверяет, является ли число простым.
- Простое число — это число, большее 1, которое делится только на 1 и само на себя. Например, 2, 3, 5 — простые числа.
- Сначала проверяется, меньше ли число 2. Если да, то оно точно не простое (например, 0 и 1 не являются простыми).
- Если число больше 2, то с помощью функции all() проверяется, что оно не делится на числа от 2 до квадратного корня из него. Это оптимизация, позволяющая сократить количество делений, ведь если число делится на какое-то число больше квадратного корня, то это уже не простое число.

3. Функция `is_even`:
- Она возвращает True, если число чётное, и False — если нечётное.
- Для этого проверяется, делится ли число на 2 без остатка: num % 2 == 0.

4. Применение функций к списку `sequence`:
- В переменной sequence хранится список чисел [2, 3, 5, 10, 15, 21, 22].
- Функция filter_numbers проверит каждый элемент списка на чётность или простоту. Если хотя бы одно из этих условий выполнено, число попадёт в результирующий список.

Шаги выполнения и результат:

1. 2 — чётное, добавляем.
2. 3 — простое, добавляем.
3. 5 — простое, добавляем.
4. 10 — чётное, добавляем.
5. 15 — не чётное и не простое, пропускаем.
6. 21 — не чётное и не простое, пропускаем.
7. 22 — чётное, добавляем.

Ожидаемый результат: [2, 3, 5, 10, 22].

Вывод:
Этот код фильтрует список, оставляя только чётные или простые числа. Это может быть полезно для задач, где важны свойства чисел, такие как простота или чётность.
Код на салфетке
9 ноября 2024 г. 11:00
Что выведет код с изображения? №44
Опрос
  • [2, 3, 5, 22]
  • [3, 5, 10, 22]
  • [2, 3, 5, 10, 22]
  • [2, 3, 10, 21, 22]
  • [2, 3, 5, 10, 15, 21, 22]
Код на салфетке
9 ноября 2024 г. 11:00
Что выведет этот код? №44

Задача:
Вы работаете над алгоритмом, который должен выбрать из списка только те числа, которые соответствуют определённым условиям. Однако коллега написал код, и теперь вам нужно понять, что этот код вернёт. В коде используются хитрые конструкции и работа с функциями. Попробуйте предугадать результат, не запуская код.
Код на салфетке
8 ноября 2024 г. 18:00
Приветствую!

На этой неделе мы предлагаем вам комедийно-драматический фильм, который рассказывает о простом сапожнике. Главный герой, мастерски сыгранный Адамом Сэндлером, проходит через череду комичных и трогательных ситуаций, открывая для себя новые грани жизни и понимания других людей. Фильм наполнен теплом, юмором и добротой, что делает его идеальным для семейного просмотра или уютного вечера в компании друзей.

Фильм: Сапожник

Год: 2014

Макс Симкин занимается ремонтом обуви в Нью-Йорке. Он работает в магазине, который передавался его семьей из поколения в поколение. Однажды, разочарованный своей скучной жизнью, Макс натыкается на волшебную реликвию, которая позволяет ему увидеть мир по-новому.

Устраивайтесь поудобнее и готовьтесь к увлекательному просмотру. Не забывайте делиться своими впечатлениями и мыслями в комментариях. Приятного просмотра!
Код на салфетке
5 ноября 2024 г. 17:03
Знаете ли вы, как Python управляет памятью с помощью подсчета ссылок и сборщика мусора?

Python использует комбинацию подсчета ссылок и циклического сборщика мусора. Каждый объект имеет счетчик ссылок, увеличивающийся при создании новой ссылки и уменьшающийся при ее удалении. Когда счетчик достигает нуля, память освобождается автоматически.

Однако подсчет ссылок не справляется с циклическими ссылками, где объекты ссылаются друг на друга. Такие ситуации возникают, например, в деревьях, где узлы хранят ссылки на родителей, или в связанных списках с двунаправленными связями. Например:
class Employee:
def __init__(self, manager=None):
self.manager = manager

alice = Employee()
bob = Employee(alice)
alice.manager = bob
del alice
del bob

Здесь объекты alice и bob ссылаются друг на друга. Счетчики ссылок не достигнут нуля, и память не будет освобождена. Для решения этой проблемы Python использует циклический сборщик мусора, который обнаруживает и удаляет такие циклы, предотвращая утечки памяти.
Код на салфетке
4 ноября 2024 г. 8:01
Привет, друзья!

Прошла еще одна неделя, и у нас накопилось много интересных материалов: статьи, новости и полезные советы. Вот наш недельный дайджест:

Понедельник (28.10.2024) Дайджест за предыдущую неделю

Вторник (29.10.2024) Знаете ли вы как использовать Docker Compose для оркестрации многоконтейнерных приложений?

Среда (30.10.2024)

Четверг (31.10.2024)

Пятница (01.11.2024) Пятничный кинорелакс

Суббота (02.11.2024)

Воскресенье (03.11.2024) Обновление библиотеки - AIOgram 3.14


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

С уважением,
Команда канала "Код на салфетке".

#дайджест #материалы #новости #код_на_салфетке
Код на салфетке
3 ноября 2024 г. 18:28
Обновление библиотеки - AIOgram 3.14
Автор: Иван Ашихмин

🚀 Вышла новая версия Aiogram 3.14.0!
Подробности релиза со списком изменений на русском языке.


Читать пост в TelegramЧитать пост в Telegram

Пост на сайте
Поддержать проект на Boosty
Поддержать проект в Telegram

#Telegram #aiogram #Код_на_салфетке #changelog #боты #обновление_библиотеки
Код на салфетке
1 ноября 2024 г. 18:01
Приветствую!

Всех с пятницей, друзья! На этой неделе мы предлагаем вам погрузиться в захватывающую атмосферу триллера, который обещает держать вас в напряжении с первой до последней минуты, раскрывая перед вами историю, полную неожиданных поворотов и интригующих загадок.

Вас ждут великолепные актерские работы, напряженная атмосфера и глубокие размышления о человеческой природе и инстинкте самосохранения. Каждый персонаж сталкивается с собственными страхами и моральными дилеммами, что делает сюжет еще более увлекательным и непредсказуемым. Фильм заставит вас задуматься о том, на что способен человек, когда его жизнь висит на волоске.

Фильм: Ловушка

Год: 2024

Мужчина приводит 12-летнюю дочь на концерт восходящей поп-звезды и замечает, что вокруг слишком много полицейских. Разболтав продавца мерча, он выясняет, что данное мероприятие — ловушка для давно разыскиваемого серийного убийцы.

Приятного просмотра!
Код на салфетке
29 октября 2024 г. 17:03
Знаете ли вы как использовать Docker Compose для оркестрации многоконтейнерных приложений?

Docker Compose упрощает управление многоконтейнерными приложениями, позволяя описывать сервисы, сети и тома в едином docker-compose.yml. Это облегчает развертывание и масштабирование сложных систем.

Пример файла для веб-приложения с PostgreSQL:
version: '3.8'

services:
web:
image: examplewebapp:latest
build: ./web
ports:
- "8000:8000"
depends_on:
- db
environment:
- DATABASE_URL=postgres://user:password@db:5432/mydb

db:
image: postgres:13
volumes:
- db_data:/var/lib/postgresql/data
environment:
- POSTGRES_USER=user
- POSTGRES_PASSWORD=password
- POSTGRES_DB=mydb

volumes:
db_data:

Web-сервис строится из Dockerfile в ./web, маппит порт 8000, использует db с данными в db_data, а volumes сохраняет данные между перезапусками.

docker-compose up -d

Это поднимет все сервисы в фоне, настроит сети и тома автоматически.
Код на салфетке
29 октября 2024 г. 8:00
Репост:
Всем привет!

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

Такая мысль посетила недавно и меня, когда в работе над одним проектом, мне понадобилось использовать ЮКассу как способ оплаты. Однако, официальная библиотека имеет ряд недостатков, главный из которых заключается в том, что она синхронная.

И я задумался, а почему бы не переписать её на современных технологиях? Подумано - сделано! Я начал работу по переписываю официальной библиотеки.

И так, версия 0.1.1, что сделано на данный момент?
- Написаны модели данных платежа для запроса и ответа.
- Написан класс конфигурации и АПИ клиента
- Начат класс платежа. Написан и работает метод создания платежа.

Работы ещё много... Но, надеюсь, что это всё не зря)

Буду рад, если поставите звёздочку в репозитории проекта.

Ссылки:
- Репозиторий: https://github.com/proDreams/async_yookassa
- PyPi: https://pypi.org/project/async_yookassa/
Код на салфетке
28 октября 2024 г. 8:00
Привет, друзья!

Прошла еще одна неделя, и у нас накопилось много интересных материалов: статьи, новости и полезные советы. Вот наш недельный дайджест:

Понедельник (21.10.2024) Дайджест за предыдущую неделю

Вторник (22.10.2024) Хотите узнать, как использовать multiprocessing в Python для обхода ограничений GIL?

Среда (23.10.2024)

Четверг (24.10.2024) Сравнение hashmap C/C++ с dict Python (часть 3)

Пятница (25.10.2024) Пятничный кинорелакс

Суббота (26.10.2024) Задача

Воскресенье (27.10.2024) Текстовый разбор задачи


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

С уважением,
Команда канала "Код на салфетке".

#дайджест #материалы #новости #код_на_салфетке
Код на салфетке
27 октября 2024 г. 15:47
Вчерашняя задача оказалась не сложной для большинства из вас. Правильный ответ выбрали 67% участников. Давайте разберем подробно, почему именно так и как работает данный код. Это поможет лучше понять тонкости работы Pydantic, особенно с валидацией и обработкой данных в моделях.

Задача:
Вы разрабатываете API для обработки информации о заказах в интернет-магазине. Требуется создать Pydantic-модель Order, которая принимает список товаров, каждый из которых представлен как словарь с полями id и quantity. Используйте Pydantic для преобразования и проверки данных:

- id должен всегда быть строкой;
- quantity — целым числом, и если меньше или равен нулю, должно автоматически подставляться значение по умолчанию — 1.

Код задачи:
from pydantic import BaseModel, Field, ValidationError, field_validator

class Item(BaseModel):
id: str
quantity: int = Field(default=1, gt=0)

@field_validator("id", mode="before")
def id_to_str(cls, v):
return str(v)


class Order(BaseModel):
items: list[Item]


order_data = {"items": [{"id": 123, "quantity": -5}, {"id": "456", "quantity": "3"}, {"id": 789}]}

order = Order(**order_data)
print(order.items)


**Что происходит в коде?**

1. Класс Item

Для каждого товара в заказе создается отдельный объект Item. Он содержит два поля: id и quantity.

- Преобразование id к строке: К полю id применяется валидатор @field_validator("id", mode="before"). Этот валидатор срабатывает перед основной валидацией и преобразует переданное значение в строку. Это значит, что, например, числовой id 123 автоматически конвертируется в строку "123". Таким образом, независимо от исходного типа данных, id всегда становится строкой.

- Проверка quantity на положительное значение: Поле quantity имеет ограничение gt=0, что означает "должно быть больше нуля". Если в данных указывается значение, не соответствующее этому условию (например, отрицательное число), Pydantic выбрасывает ValidationError. Также quantity имеет значение по умолчанию — 1. Если quantity не указано, автоматически подставится это значение.

2. Класс Order

Класс Order содержит список товаров items, где каждый элемент должен соответствовать модели Item. Благодаря этому, при создании заказа Pydantic автоматически проверяет каждый элемент items и применяет к ним правила, заданные в Item.


Передаваемые данные `order_data`

- Первый элемент: {"id": 123, "quantity": -5}
- Поле id преобразуется в строку "123" с помощью валидатора id_to_str.
- Поле quantity указано как -5, что нарушает условие gt=0 (больше нуля). Поэтому при попытке создать объект Item с такими данными Pydantic выбросит ValidationError.
- Второй элемент: {"id": "456", "quantity": "3"}
- id уже строка, и ваПосмотрим на передаваемые данные:лидатор оставляет его как есть.
- quantity передан как строка "3", но Pydantic автоматически конвертирует её в целое число 3, что удовлетворяет условию gt=0.
- Третий элемент: {"id": 789}
- Поле id преобразуется в строку "789".
- Поле quantity не указано, поэтому используется значение по умолчанию 1.


Почему возникает ошибка?

При создании объекта Order Pydantic проверяет каждый элемент в списке items. Первый элемент нарушает условие gt=0 из-за отрицательного значения quantity, и это приводит к ValidationError. В результате объект Order не создается, и программа останавливается на этом этапе.

Правильный ответ: ValidationError

Таким образом, ValidationError помогает нам избежать ошибок при создании заказа с некорректными данными, таких как отрицательное количество. Этот инструмент позволяет создавать более надежные API, автоматически преобразуя и проверяя данные.
Код на салфетке
26 октября 2024 г. 12:20
Что выведет код с изображения? №43
Опрос
  • [Item(id='123', quantity=-5), Item(id='456', quantity=3), Item(id='789', quantity=1)]
  • [Item(id='123', quantity=1), Item(id='456', quantity=3), Item(id='789', quantity=1)]
  • [Item(id='123', quantity=5), Item(id='456', quantity=3), Item(id='789', quantity=1)]
  • ValidationError
Код на салфетке
26 октября 2024 г. 12:20
Что выведет этот код? №43

Задача:
Вы разрабатываете API для обработки информации о заказах в интернет-магазине. Требуется создать Pydantic-модель Order, которая принимает список товаров, каждый из которых представлен как словарь с полями id и quantity. Используйте Pydantic для преобразования и проверки данных:

- id должен всегда быть строкой;
- quantity — целым числом, и если меньше или равен нулю, должно автоматически подставляться значение по умолчанию — 1.

Посмотрите на код ниже и выберите, что он выведет: