В Python менеджеры контекста используются для управления ресурсами, такими как файлы или сетевые соединения, автоматически освобождая их после использования. Они реализуются с помощью методов
__enter__
и __exit__
.with open('file.txt', 'r') as file:
content = file.read()
Здесь файл автоматически закроется после завершения блока
with
, даже если внутри него возникнет ошибка.🗣️ Менеджеры контекста полезны для автоматического управления ресурсами и обработки исключений.
Please open Telegram to view this post
VIEW IN TELEGRAM
В статье рассказывается, как настроить автоматический деплой Telegram-бота на сервер с использованием GitHub Actions. Это поможет ускорить обновление кода и минимизировать ошибки при ручной загрузке.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
В 2010 году пользователь Stack Overflow не справился с задачей на собеседовании. Обсуждение способов решения этого задания стало одной из самых популярных тем на платформе.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Создайте Python-скрипт, который кэширует данные с внешнего API, сохраняя их на определенное время. Когда срок кэша истекает, данные должны автоматически обновляться при следующем запросе.
•
python app.py fetch
— получает данные из кэша, а если кэш истек, то заново запрашивает данные и обновляет кэш.Решение задачи
import time
import json
import requests
from pathlib import Path
CACHE_FILE = Path("cache.json")
CACHE_TTL = 60 # время жизни кэша в секундах
def update_cache():
data = requests.get("https://api.example.com/data ").json()
cache_data = {"data": data, "timestamp": time.time()}
with open(CACHE_FILE, "w") as file:
json.dump(cache_data, file)
return data
def fetch_data():
if CACHE_FILE.exists():
with open(CACHE_FILE, "r") as file:
cache = json.load(file)
if time.time() - cache["timestamp"] < CACHE_TTL:
print("Данные из кэша:", cache["data"])
return cache["data"]
print("Обновление кэша...")
return update_cache()
# Запрос кэшированных данных
fetch_data()
Please open Telegram to view this post
VIEW IN TELEGRAM
Сегодня поговорим о объектах, объектной архитектуре и способах взаимодействия с ними на примере языков программирования Python и JavaScript. Получилось небольшое исследование, противопоставляющее прототипирование и ООП.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Расскажем, как превратить Django в генератор статических сайтов и сделать полноценный блог с пагинацией, сортировкой записей по тегам, подсветкой синтаксиса кода, контактной формой, подпиской на рассылку и поддержкой 20 различных тем оформления.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
@property
в Python и зачем он нужен?Декоратор
@property
в Python превращает метод класса в атрибут, позволяя работать с ним, как с обычным свойством. Это упрощает доступ к приватным данным и добавляет контроль за их валидацией и изменением.С помощью
@property
можно создавать интерфейс для работы с данными объекта, защищая их от некорректных значений и обеспечивая читаемость кода.@property
используется для создания свойства age
, которое проверяет корректность введенного значения:class Person:
def __init__(self, age):
self._age = age
@property
def age(self):
return self._age
@age.setter
def age(self, value):
if value < 0:
raise ValueError("Возраст не может быть отрицательным.")
self._age = value
p = Person(30)
p.age = 35 # Работает нормально
print(p.age) # 35
p.age = -5 # ValueError: Возраст не может быть отрицательным.
🗣 Использование @property полезно для создания аккуратного интерфейса доступа к данным с их защитой и валидацией, соблюдая при этом принципы инкапсуляции.
Please open Telegram to view this post
VIEW IN TELEGRAM
Делаем анкету с различными виджетами, защищаем форму с помощью капчи, автоматически отправляем данные и вложенные файлы на email.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Создайте Python-скрипт, который проверяет доступность указанного веб-сервера и отправляет уведомление на почту, если сервер недоступен. Скрипт должен выполнять проверку каждые 5 минут и отправлять уведомление только один раз, если сервер падает, а затем повторно — только когда сервер снова станет доступен.
•
python monitor.py https://example.com
— проверяет доступность сервера по адресу https://example.com
, отправляет уведомление на почту, если сервер перестаёт отвечать, и повторно уведомляет при восстановлении работы.Решение задачи
import requests
import time
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import sys
# Настройки для отправки уведомлений
SMTP_SERVER = 'smtp.example.com '
SMTP_PORT = 587
EMAIL = '[email protected] '
PASSWORD = 'your-password'
TO_EMAIL = '[email protected] '
# Функция для отправки уведомления
def send_notification(subject, message):
msg = MIMEMultipart()
msg['From'] = EMAIL
msg['To'] = TO_EMAIL
msg['Subject'] = subject
msg.attach(MIMEText(message, 'plain'))
with smtplib.SMTP(SMTP_SERVER, SMTP_PORT) as server:
server.starttls()
server.login(EMAIL, PASSWORD)
server.sendmail(EMAIL, TO_EMAIL, msg.as_string())
print(f"Уведомление отправлено: {subject}")
# Функция для проверки доступности сервера
def check_server(url):
try:
response = requests.get(url, timeout=5)
return response.status_code == 200
except requests.RequestException:
return False
# Основная функция мониторинга
def monitor(url):
server_is_down = False
while True:
is_up = check_server(url)
if is_up and server_is_down:
send_notification("Сервер восстановлен", f"Сервер {url} снова доступен.")
server_is_down = False
elif not is_up and not server_is_down:
send_notification("Сервер недоступен", f"Сервер {url} перестал отвечать.")
server_is_down = True
time.sleep(300) # Проверка каждые 5 минут
if __name__ == "__main__":
if len(sys.argv) < 2:
print("Укажите URL сервера для мониторинга.")
sys.exit(1)
url = sys.argv[1]
monitor(url)
Please open Telegram to view this post
VIEW IN TELEGRAM
• Всё, что вы хотели знать о Django Channels
• Сборка Python проекта с uv и Docker
• DE-1. DIY ассистент на LLM
• Ваши генераторные выражения сломаны: чиним и разбираемся
• Всё, что вы хотели знать о Django Channels
Please open Telegram to view this post
VIEW IN TELEGRAM
Статья рассматривает особенности разработки ИИ-приложений с использованием RAG, особенно для обработки данных интернет-магазинов. Анализируется отличие статистического подхода от традиционного программирования и его влияние на разработку с LLM.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
В статье описан путь от пет-проекта до системы для трекинга транспорта: нейросети, компьютерное зрение и инструменты, позволяющие «видеть» и анализировать производственные процессы.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
11 сентября (уже в четверг!) в 19:00 по мск приходи на прямой эфир с реальным собеседованием на Middle разработчика.
Почему точно нужно прийти:
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Python-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Реклама.
О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
__name__ == "__main__"
в Python?Конструкция
if __name__ == "__main__"
определяет, выполняется ли скрипт как основная программа или импортируется в качестве модуля. Это позволяет запускать код только при непосредственном запуске скрипта, исключая его выполнение при импорте.def greet():
print("Hello from greet!")
if __name__ == "__main__":
greet() # Этот вызов выполнится только при запуске скрипта напрямую
🗣 В этом примере greet() будет вызвана, если файл запускается напрямую. Если скрипт импортируется как модуль, greet() не вызовется, сохраняя модульную структуру кода.
Please open Telegram to view this post
VIEW IN TELEGRAM
В статье рассказывается, как Okko оптимизировал рекомендации: с помощью Jaeger и Grafana выявили узкие места, улучшили работу сборщика мусора и снизили время отклика для 99% запросов.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Статья исследует методы нечеткого поиска для больших языковых моделей, включая триграммный и фонетический анализ, косинусное и евклидово сходство. Рассматриваются преимущества и ограничения методов для работы с неструктурированными данными.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Ленивый программист
Подборка каналов IT от наших друзей:
🦥 Lazy_Programmer – Для ленивых
🎬 videos_it — База видеоуроков по IT
🐧 Linux_Club — Для Linuxоидов
📔 BOOKS — Читать не перечитать
🇷🇺 our_computer — У нас как в СССР
🔐 LazySecurity — Канал по ИБ
🤩 iwannabeprogrammer — IT-мемы
🔥 floppydisky — ITUMOR
📱 codebase_frontend — Красим кнопки
➡️ LazyDevOps — Канал для дев и псов
🐈⬛️ LazyTester — Протестируй канал!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1