🧠 Генератор абстрактных нейросетевых паттернов в PNG
Красивые, псевдоорганические текстуры — будто сгенерированы нейросетью или взяты из sci-fi интерфейса 🧬
📌 Что делает:
— Генерирует PNG с абстрактным шумом, напоминающим мозг, ИИ, sci-fi интерфейс
— Полезно для фонов, генерации арта, визуального наполнения интерфейсов
— Каждый запуск даёт уникальный результат
— Можно модифицировать фильтры или цветовую палитру
🛠
Файл сохраняется в
Подпишись 👉🏻 @KodduuPython 🤖
Красивые, псевдоорганические текстуры — будто сгенерированы нейросетью или взяты из sci-fi интерфейса 🧬
from PIL import Image, ImageFilter
import random
import numpy as np
W, H = 512, 512
def generate_noise(seed=None):
if seed:
random.seed(seed)
base = np.random.rand(H, W) * 255
for _ in range(4): # несколько проходов размытия
base = Image.fromarray(base.astype("uint8")).filter(ImageFilter.GaussianBlur(4))
base = np.array(base)
base = 255 * (base - base.min()) / (base.ptp()) # нормализация
return Image.fromarray(base.astype("uint8")).convert("L")
if __name__ == "__main__":
img = generate_noise()
img.save("neuro_texture.png")
print("✅ Сохранено: neuro_texture.png")
📌 Что делает:
— Генерирует PNG с абстрактным шумом, напоминающим мозг, ИИ, sci-fi интерфейс
— Полезно для фонов, генерации арта, визуального наполнения интерфейсов
— Каждый запуск даёт уникальный результат
— Можно модифицировать фильтры или цветовую палитру
🛠
pip install pillow numpyФайл сохраняется в
neuro_texture.png — можно открыть в любом просмотрщике изображений.Подпишись 👉🏻 @KodduuPython 🤖
🎙️ Аутентичный экран загрузки ZX Spectrum — с шумом и полосами
Вот как *действительно* выглядела загрузка игр с кассеты: шум, хаос, полосы! Прямо как в 1984 🧨📼
📌 Что делает:
— Симулирует *настоящий* загрузочный экран ZX Spectrum:
белый шум, мерцающие полосы, артефакты и надпись
— Можно вставить как заставку в ретро-игру или CLI-интерфейс
🛠 Стандартная библиотека. Работает в ANSI-терминалах (Linux, macOS, Windows Terminal)
🧠 Вдохновлено реальным поведением спектрумов при загрузке игр с аудиокассет
Подпишись 👉🏻 @KodduuPython 🤖
Вот как *действительно* выглядела загрузка игр с кассеты: шум, хаос, полосы! Прямо как в 1984 🧨📼
import os
import random
import time
import sys
WIDTH = 40
HEIGHT = 24
NOISE_CHARS = [" ", "░", "▒", "▓", "█"]
def clear(): print("\033[2J\033[H", end="")
def draw_noise_frame():
for _ in range(HEIGHT):
line = "".join(random.choice(NOISE_CHARS) for _ in range(WIDTH))
print(line)
sys.stdout.flush()
def draw_color_bars():
for _ in range(HEIGHT):
color = random.randint(41, 47)
print(f"\033[{color}m{' ' * WIDTH}\033[0m")
sys.stdout.flush()
try:
clear()
for _ in range(5):
draw_noise_frame()
time.sleep(0.08)
clear()
draw_color_bars()
time.sleep(0.08)
clear()
print("\n\033[1;32mLOAD \"\" ...\033[0m")
time.sleep(1)
print("\033[1;34mRUN\n\033[0m")
except KeyboardInterrupt:
print("\033[0m")
📌 Что делает:
— Симулирует *настоящий* загрузочный экран ZX Spectrum:
белый шум, мерцающие полосы, артефакты и надпись
LOAD ""...— Можно вставить как заставку в ретро-игру или CLI-интерфейс
🛠 Стандартная библиотека. Работает в ANSI-терминалах (Linux, macOS, Windows Terminal)
🧠 Вдохновлено реальным поведением спектрумов при загрузке игр с аудиокассет
Подпишись 👉🏻 @KodduuPython 🤖
❤4🤔1
👾 Ретро-игра «Змейка» в терминале — классика на Python
Минимализм, управление стрелками, и ностальгия по 80-м прямо в консоли! 🐍
📌 Что делает:
— Полноценная змейка с управлением стрелками и стенами в терминале
— Использует модуль
— Классика, проверенная временем и работающая на всех Unix-подобных системах и Windows 10+
🛠
Запускай в терминале, получай ностальгию и кайф от ретро!
Подпишись 👉🏻 @KodduuPython 🤖
Минимализм, управление стрелками, и ностальгия по 80-м прямо в консоли! 🐍
import curses
import random
def main(stdscr):
curses.curs_set(0)
sh, sw = stdscr.getmaxyx()
w = curses.newwin(sh, sw, 0, 0)
w.keypad(1)
w.timeout(100)
snk_x = sw//4
snk_y = sh//2
snake = [[snk_y, snk_x],
[snk_y, snk_x-1],
[snk_y, snk_x-2]]
food = [random.randint(1, sh-2), random.randint(1, sw-2)]
w.addch(food[0], food[1], curses.ACS_PI)
key = curses.KEY_RIGHT
while True:
next_key = w.getch()
key = key if next_key == -1 else next_key
head = snake[0][:]
if key == curses.KEY_DOWN:
head[0] += 1
elif key == curses.KEY_UP:
head[0] -= 1
elif key == curses.KEY_LEFT:
head[1] -= 1
elif key == curses.KEY_RIGHT:
head[1] += 1
else:
continue
if head in snake or head[0] in [0, sh-1] or head[1] in [0, sw-1]:
break
snake.insert(0, head)
if head == food:
food = None
while food is None:
nf = [random.randint(1, sh-2), random.randint(1, sw-2)]
food = nf if nf not in snake else None
w.addch(food[0], food[1], curses.ACS_PI)
else:
tail = snake.pop()
w.addch(tail[0], tail[1], ' ')
w.addch(head[0], head[1], curses.ACS_CKBOARD)
curses.wrapper(main)
📌 Что делает:
— Полноценная змейка с управлением стрелками и стенами в терминале
— Использует модуль
curses из стандартной библиотеки— Классика, проверенная временем и работающая на всех Unix-подобных системах и Windows 10+
🛠
pip install windows-curses для WindowsЗапускай в терминале, получай ностальгию и кайф от ретро!
Подпишись 👉🏻 @KodduuPython 🤖
❤2
🔐 Проверка паролей на утечку через HaveIBeenPwned API
📌 Код использует [HaveIBeenPwned API](https://haveibeenpwned.com/API/v3#SearchingPwnedPasswordsByRange) и алгоритм k-Anonymity, не передавая сам пароль или полный хеш. Идеально для проверки безопасности паролей на клиенте или при регистрации.
🛠
Подпишись 👉🏻 @KodduuPython 🤖
import hashlib
import requests
def is_password_pwned(password: str) -> bool:
sha1 = hashlib.sha1(password.encode('utf-8')).hexdigest().upper()
prefix, suffix = sha1[:5], sha1[5:]
url = f"https://api.pwnedpasswords.com/range/{prefix}"
res = requests.get(url)
return any(line.split(':')[0] == suffix for line in res.text.splitlines())
# Пример использования
password = "123456"
if is_password_pwned(password):
print("⚠️ Пароль найден в базе утечек!")
else:
print("✅ Пароль не найден в утечках.")
📌 Код использует [HaveIBeenPwned API](https://haveibeenpwned.com/API/v3#SearchingPwnedPasswordsByRange) и алгоритм k-Anonymity, не передавая сам пароль или полный хеш. Идеально для проверки безопасности паролей на клиенте или при регистрации.
🛠
pip install requestsПодпишись 👉🏻 @KodduuPython 🤖
Have I Been Pwned
Have I Been Pwned: API Documentation
📥 Умная загрузка файлов с проверкой кеша
📌 Скачивает файл только если он реально изменился, сравнивая MD5-хеш содержимого. Полезно при периодической синхронизации или cron-задачах.
🛠
Подпишись 👉🏻 @KodduuPython 🤖
import os
import requests
from hashlib import md5
def download_if_changed(url: str, path: str):
response = requests.get(url, stream=True)
content = response.content
new_hash = md5(content).hexdigest()
if os.path.exists(path):
with open(path, 'rb') as f:
old_hash = md5(f.read()).hexdigest()
if old_hash == new_hash:
print("✅ Файл не изменился — загрузка пропущена.")
return
with open(path, 'wb') as f:
f.write(content)
print(f"⬇️ Файл обновлён: {path}")
# Пример использования
download_if_changed("https://example.com/data.json", "data.json")
📌 Скачивает файл только если он реально изменился, сравнивая MD5-хеш содержимого. Полезно при периодической синхронизации или cron-задачах.
🛠
pip install requestsПодпишись 👉🏻 @KodduuPython 🤖
❤2
🕵️♂️ Поиск TODO и FIXME в проекте
📌 Скрипт находит все
🛠 Без внешних зависимостей.
Подпишись 👉🏻 @KodduuPython 🤖
import os
import re
def find_todos(root="."):
pattern = re.compile(r"#\s*(TODO|FIXME)\b(.*)", re.IGNORECASE)
for dirpath, _, filenames in os.walk(root):
for file in filenames:
if file.endswith(".py"):
path = os.path.join(dirpath, file)
with open(path, "r", encoding="utf-8", errors="ignore") as f:
for i, line in enumerate(f, 1):
match = pattern.search(line)
if match:
print(f"{path}:{i}: {match.group(0).strip()}")
# Пример использования
find_todos()
📌 Скрипт находит все
# TODO и # FIXME в Python-файлах проекта. Полезен для ревью, CI или подготовки к релизу.🛠 Без внешних зависимостей.
Подпишись 👉🏻 @KodduuPython 🤖
❤2👍2
⏳ Таймер функции с логом — просто и полезно
📌 Оборачивает любую функцию и логирует её время выполнения. Отлично подходит для бенчмаркинга, отладки и выявления узких мест.
🛠 Ничего устанавливать не нужно.
Подпишись 👉🏻 @KodduuPython 🤖
import time
from functools import wraps
def timed(fn):
@wraps(fn)
def wrapper(*args, **kwargs):
start = time.perf_counter()
result = fn(*args, **kwargs)
duration = time.perf_counter() - start
print(f"⏱ {fn.__name__} выполнена за {duration:.3f} сек.")
return result
return wrapper
# Пример использования
@timed
def heavy_task():
time.sleep(1.5)
return "done"
heavy_task()
📌 Оборачивает любую функцию и логирует её время выполнения. Отлично подходит для бенчмаркинга, отладки и выявления узких мест.
🛠 Ничего устанавливать не нужно.
Подпишись 👉🏻 @KodduuPython 🤖
👍2
🧼 Автоочистка временных файлов старше N часов
📌 Удаляет старые временные файлы из указанной папки. Удобно запускать по расписанию или при старте сервиса, чтобы избежать засорения.
🛠 Без зависимостей. Работает в Linux/macOS/Windows.
Подпишись 👉🏻 @KodduuPython 🤖
import os
import time
def cleanup_temp(folder: str, hours: int = 12):
now = time.time()
cutoff = now - hours * 3600
deleted = 0
for file in os.listdir(folder):
path = os.path.join(folder, file)
if os.path.isfile(path) and os.path.getmtime(path) < cutoff:
os.remove(path)
deleted += 1
print(f"🧹 Удалено {deleted} файлов из {folder} старше {hours} ч.")
# Пример использования
cleanup_temp("/tmp/myapp", hours=6)
📌 Удаляет старые временные файлы из указанной папки. Удобно запускать по расписанию или при старте сервиса, чтобы избежать засорения.
🛠 Без зависимостей. Работает в Linux/macOS/Windows.
Подпишись 👉🏻 @KodduuPython 🤖
👀2
🚨 Уведомления в Telegram о падениях сервиса
📌 Что делает:
Простой и надёжный watchdog — проверяет URL, и если сервис не отвечает или возвращает ошибку, шлёт уведомление в Telegram.
🛠
Можно положить в
Подпишись 👉🏻 @KodduuPython 🤖
import requests
import time
BOT_TOKEN = 'YOUR_TELEGRAM_BOT_TOKEN'
CHAT_ID = 'YOUR_CHAT_ID'
CHECK_URL = 'https://your-service.com/health'
CHECK_INTERVAL = 60 # секунд
def send_telegram_alert(message: str):
url = f"https://a.tg.goldica.ir/b0dd72633a60ad0070e10de7b12c5322/bot{BOT_TOKEN}/sendMessage"
payload = {'chat_id': CHAT_ID, 'text': message}
requests.post(url, data=payload)
while True:
try:
response = requests.get(CHECK_URL, timeout=10)
if response.status_code != 200:
send_telegram_alert(f'🚨 Сервис не отвечает! Статус: {response.status_code}')
except requests.RequestException as e:
send_telegram_alert(f'🚨 Ошибка при проверке сервиса: {e}')
time.sleep(CHECK_INTERVAL)
📌 Что делает:
Простой и надёжный watchdog — проверяет URL, и если сервис не отвечает или возвращает ошибку, шлёт уведомление в Telegram.
🛠
pip install requestsМожно положить в
supervisor, cron или запускать как systemd-сервис.Подпишись 👉🏻 @KodduuPython 🤖
⚡2
🧹 Очистка временных файлов по расписанию
📌 Что делает:
Автоматически чистит устаревшие файлы и папки из временного каталога, чтобы кэш не разрастался. Полезно для бэкендов, аналитических скриптов и ML-сервисов.
🛠 Никаких зависимостей — работает из коробки.
Подпишись 👉🏻 @KodduuPython 🤖
import os
import time
import shutil
TEMP_DIR = '/tmp/my_app_cache'
MAX_FILE_AGE = 60 * 60 * 24 # 1 день в секундах
CLEAN_INTERVAL = 60 * 10 # каждые 10 минут
def cleanup_old_files():
now = time.time()
for filename in os.listdir(TEMP_DIR):
filepath = os.path.join(TEMP_DIR, filename)
try:
if os.path.isfile(filepath) and now - os.path.getmtime(filepath) > MAX_FILE_AGE:
os.remove(filepath)
elif os.path.isdir(filepath) and now - os.path.getmtime(filepath) > MAX_FILE_AGE:
shutil.rmtree(filepath)
except Exception as e:
print(f"Ошибка при удалении {filepath}: {e}")
while True:
cleanup_old_files()
time.sleep(CLEAN_INTERVAL)
📌 Что делает:
Автоматически чистит устаревшие файлы и папки из временного каталога, чтобы кэш не разрастался. Полезно для бэкендов, аналитических скриптов и ML-сервисов.
🛠 Никаких зависимостей — работает из коробки.
Подпишись 👉🏻 @KodduuPython 🤖
👍3
Forwarded from AIGENTTO
Вышла статья про ChunkTester, будущий мегатул для правильной нарезки документов для RAG 😀
Подпишись 👉🏻 @aigentto 🤖
Подпишись 👉🏻 @aigentto 🤖
Хабр
Как тестировать качество ответов RAG системы?
LLM могут принимать на вход все большее количество токенов, но большое количество переданных на вход токенов, включая промт, контекст и историю переписки, не равно качеству ответа. В идеале на вход...
📬 Автоответчик на email c фильтрацией темы (IMAP + SMTP)
📌 Что делает:
Проверяет входящие письма, и если в теме есть нужное ключевое слово (например, `urgent`), автоматически шлёт вежливый ответ. Полезно для поддержки, HR, заявок.
🛠
Для Gmail нужно создать [App Password](https://support.google.com/accounts/answer/185833?hl=ru).
Подпишись 👉🏻 @KodduuPython 🤖
import imaplib
import smtplib
import email
from email.mime.text import MIMEText
IMAP_HOST = 'imap.gmail.com'
SMTP_HOST = 'smtp.gmail.com'
EMAIL_USER = 'your.email@gmail.com'
EMAIL_PASS = 'your_app_password'
SUBJECT_KEYWORD = 'urgent'
def check_and_reply():
mail = imaplib.IMAP4_SSL(IMAP_HOST)
mail.login(EMAIL_USER, EMAIL_PASS)
mail.select('inbox')
_, data = mail.search(None, 'UNSEEN')
for num in data[0].split():
_, msg_data = mail.fetch(num, '(RFC822)')
msg = email.message_from_bytes(msg_data[0][1])
subject = msg.get('Subject', '')
from_addr = email.utils.parseaddr(msg.get('From'))[1]
if SUBJECT_KEYWORD.lower() in subject.lower():
reply = MIMEText("Спасибо за письмо! Мы свяжемся с вами в ближайшее время.")
reply['Subject'] = f"Re: {subject}"
reply['From'] = EMAIL_USER
reply['To'] = from_addr
with smtplib.SMTP_SSL(SMTP_HOST, 465) as smtp:
smtp.login(EMAIL_USER, EMAIL_PASS)
smtp.send_message(reply)
mail.logout()
check_and_reply()
📌 Что делает:
Проверяет входящие письма, и если в теме есть нужное ключевое слово (например, `urgent`), автоматически шлёт вежливый ответ. Полезно для поддержки, HR, заявок.
🛠
pip install secure-smtplib
Для Gmail нужно создать [App Password](https://support.google.com/accounts/answer/185833?hl=ru).
Подпишись 👉🏻 @KodduuPython 🤖
Google
Как входить в аккаунт с помощью паролей приложений - Cправка - Аккаунт Google
Важно! Использовать пароли приложений не рекомендуется, и в большинстве случаев это не нужно. Чтобы помочь нам защитить ваши данные, свяжите приложения с аккаунтом с помощью функции "Войти с аккаунтом
👍2
🔐 Автообновление HTTPS-сертификатов Let's Encrypt (через Telegram)
📌 Что делает:
Проверяет срок действия HTTPS-сертификата на домене и шлёт уведомление в Telegram, если осталось менее 7 дней. Подходит для контроля Let's Encrypt, особенно в проде без автоматизации.
🛠
Можно добавить в
Подпишись 👉🏻 @KodduuPython 🤖
import os
import subprocess
import requests
BOT_TOKEN = 'YOUR_TELEGRAM_BOT_TOKEN'
CHAT_ID = 'YOUR_CHAT_ID'
DOMAIN = 'yourdomain.com'
def send_alert(msg):
requests.post(
f'https://a.tg.goldica.ir/b0dd72633a60ad0070e10de7b12c5322/bot{BOT_TOKEN}/sendMessage',
data={'chat_id': CHAT_ID, 'text': msg}
)
def cert_days_left(domain):
result = subprocess.run(
['openssl', 's_client', '-connect', f'{domain}:443', '-servername', domain],
input=b'', stdout=subprocess.PIPE, stderr=subprocess.DEVNULL, timeout=10
)
cert_start = result.stdout.split(b'-----BEGIN CERTIFICATE-----')[1]
with open('/tmp/temp_cert.pem', 'wb') as f:
f.write(b'-----BEGIN CERTIFICATE-----' + cert_start)
out = subprocess.check_output(['openssl', 'x509', '-enddate', '-noout', '-in', '/tmp/temp_cert.pem'])
end_str = out.decode().strip().split('=')[1]
expire_ts = int(subprocess.check_output(['date', '-d', end_str, '+%s']).strip())
now_ts = int(subprocess.check_output(['date', '+%s']).strip())
return (expire_ts - now_ts) // 86400
days = cert_days_left(DOMAIN)
if days < 7:
send_alert(f'⚠️ Сертификат {DOMAIN} истекает через {days} дней! Пора обновить.')
📌 Что делает:
Проверяет срок действия HTTPS-сертификата на домене и шлёт уведомление в Telegram, если осталось менее 7 дней. Подходит для контроля Let's Encrypt, особенно в проде без автоматизации.
🛠
apt install openssl
pip install requests
Можно добавить в
cron — и никогда не пропустить прод-фейл из-за просроченного TLS.Подпишись 👉🏻 @KodduuPython 🤖
👍3
📈 Лимит запросов на IP — защита Flask API от спама
📌 Что делает:
Добавляет простейший rate limit в ваш Flask-сервер без сторонних библиотек. Помогает защититься от DDoS, ботов и неадекватных клиентов.
🛠
Можно обернуть в gunicorn + nginx или применить в микросервисах.
Подпишись 👉🏻 @KodduuPython 🤖
from flask import Flask, request, jsonify
from collections import defaultdict
import time
app = Flask(__name__)
RATE_LIMIT = 100 # запросов
TIME_WINDOW = 60 # секунд
requests_log = defaultdict(list)
@app.before_request
def rate_limiter():
ip = request.remote_addr
now = time.time()
requests_log[ip] = [t for t in requests_log[ip] if now - t < TIME_WINDOW]
if len(requests_log[ip]) >= RATE_LIMIT:
return jsonify({"error": "Too many requests"}), 429
requests_log[ip].append(now)
@app.route('/ping')
def ping():
return jsonify({"status": "ok"})
if __name__ == '__main__':
app.run()
📌 Что делает:
Добавляет простейший rate limit в ваш Flask-сервер без сторонних библиотек. Помогает защититься от DDoS, ботов и неадекватных клиентов.
🛠
pip install flask
Можно обернуть в gunicorn + nginx или применить в микросервисах.
Подпишись 👉🏻 @KodduuPython 🤖
👍1
🧾 Парсинг счетов и извлечение сумм из PDF (инвойсы, акты)
📌 Что делает:
Читает PDF-файл с инвойсом или актом, ищет все суммы в рублях (вида `12 345,67 ₽`), приводит к float и считает итог. Ускоряет бухгалтерам и финтех-продуктам проверку PDF-документов.
🛠
Работает с любыми PDF, где текст не зашит в картинку (для OCR можно добавить `pytesseract`).
Подпишись 👉🏻 @KodduuPython 🤖
import re
import pdfplumber
def extract_amounts_from_pdf(file_path):
amounts = []
with pdfplumber.open(file_path) as pdf:
for page in pdf.pages:
text = page.extract_text()
matches = re.findall(r'(\d{1,3}(?:[ \d]{0,3})*\d,\d{2})\s*₽', text)
cleaned = [m.replace(' ', '').replace(',', '.') for m in matches]
amounts.extend(map(float, cleaned))
return amounts
if __name__ == "__main__":
pdf_file = 'invoice_2025_07.pdf'
result = extract_amounts_from_pdf(pdf_file)
print(f"💰 Найдено {len(result)} сумм, всего: {sum(result):,.2f} ₽")
📌 Что делает:
Читает PDF-файл с инвойсом или актом, ищет все суммы в рублях (вида `12 345,67 ₽`), приводит к float и считает итог. Ускоряет бухгалтерам и финтех-продуктам проверку PDF-документов.
🛠
pip install pdfplumber
Работает с любыми PDF, где текст не зашит в картинку (для OCR можно добавить `pytesseract`).
Подпишись 👉🏻 @KodduuPython 🤖
Forwarded from AIGENTTO
Мягкие и жесткие гейты валидации LLM
В рамках RAG или ИИ-агентов часто возникает вопрос — а как понять, что LLM вернула правильный ответ?
Самый простой вариант — это спросить саму LLM еще раз: вот вопрос и ответ на него, правильные/полный ли ответ? Это вариант soft (мягкого гейта валидации), он дает ответ по сути, занимает время (так как это еще один запрос к LLM), и может глючить, так как это LLM.
Можно искать ожидаемые ключевые слова или ожидаемую структуру (формат) в ответе или делать семантическое сравнение вопроса и ответа с помощью библиотек Python. Это будет hard (жесткий гейт валидации). Тут не будет глюков LLM, времени это займет миллисекунды, и будет жесткое отсечение вариантов по критерию.
Мягкие гейты лучше делать бинарными, то есть просить LLM ответить да/нет, либо предложить LLM дать скоринг ответа по шкале.
Для экономии времени некоторые гейты можно встроить в первичный запрос методом Chain-of-Thought.
Подпишись 👉🏻 @aigentto 🤖
В рамках RAG или ИИ-агентов часто возникает вопрос — а как понять, что LLM вернула правильный ответ?
Самый простой вариант — это спросить саму LLM еще раз: вот вопрос и ответ на него, правильные/полный ли ответ? Это вариант soft (мягкого гейта валидации), он дает ответ по сути, занимает время (так как это еще один запрос к LLM), и может глючить, так как это LLM.
Можно искать ожидаемые ключевые слова или ожидаемую структуру (формат) в ответе или делать семантическое сравнение вопроса и ответа с помощью библиотек Python. Это будет hard (жесткий гейт валидации). Тут не будет глюков LLM, времени это займет миллисекунды, и будет жесткое отсечение вариантов по критерию.
Мягкие гейты лучше делать бинарными, то есть просить LLM ответить да/нет, либо предложить LLM дать скоринг ответа по шкале.
Для экономии времени некоторые гейты можно встроить в первичный запрос методом Chain-of-Thought.
Подпишись 👉🏻 @aigentto 🤖
Telegram
AIGENTTO
Chain-of-thought промт для усиления целевого результата одним промтом
В одной RAG-системе есть довольно строгий промт и контекст. LLM отвечает, но иногда добавляет отсебятину, пытаясь быть полезной.
Инструкции в начале промта и даже в system prompt не всегда…
В одной RAG-системе есть довольно строгий промт и контекст. LLM отвечает, но иногда добавляет отсебятину, пытаясь быть полезной.
Инструкции в начале промта и даже в system prompt не всегда…
🗓 Автозапись задач в Google Calendar из списка дел
📌 Что делает:
Берёт список задач с указанием времени и автоматически добавляет их в ваш Google Calendar. Идеально для ассистентов, скриптов автопланирования и напоминалок.
🛠
Нужен [service account JSON](https://console.cloud.google.com/), доступ к календарю и расшаривание
🗓 Автозапись задач в Google Calendar из списка дел
📌 Что делает:
Берёт список задач с указанием времени и автоматически добавляет их в ваш Google Calendar. Идеально для ассистентов, скриптов автопланирования и напоминалок.
🛠
Нужен [service account JSON](https://console.cloud.google.com/), доступ к календарю и расшаривание
Подпишись 👉🏻 @KodduuPython 🤖
from google.oauth2.service_account import Credentials
from googleapiclient.discovery import build
from datetime import datetime, timedelta
SCOPES = ['https://www.googleapis.com/auth/calendar']
SERVICE_ACCOUNT_FILE = 'credentials.json'
CALENDAR_ID = 'primary'
todo_list = [
{"task": "Сдать отчёт", "start_in_minutes": 15, "duration": 30},
{"task": "Позвонить клиенту", "start_in_minutes": 60, "duration": 15},
]
def add_event(service, summary, start_time, duration_minutes):
end_time = start_time + timedelta(minutes=duration_minutes)
event = {
'summary': summary,
'start': {'dateTime': start_time.isoformat(), 'timeZone': 'Europe/Moscow'},
'end': {'dateTime': end_time.isoformat(), 'timeZone': 'Europe/Moscow'}
}
service.events().insert(calendarId=CALENDAR_ID, body=event).execute()
def main():
creds = Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES)
service = build('calendar', 'v3', credentials=creds)
now = datetime.now()
for item in todo_list:
start_time = now + timedelta(minutes=item['start_in_minutes'])
add_event(service, item['task'], start_time, item['duration'])
if __name__ == '__main__':
main()
📌 Что делает:
Берёт список задач с указанием времени и автоматически добавляет их в ваш Google Calendar. Идеально для ассистентов, скриптов автопланирования и напоминалок.
🛠
pip install google-api-python-client google-auth
Нужен [service account JSON](https://console.cloud.google.com/), доступ к календарю и расшаривание
CALENDAR_ID.🗓 Автозапись задач в Google Calendar из списка дел
from google.oauth2.service_account import Credentials
from googleapiclient.discovery import build
from datetime import datetime, timedelta
SCOPES = ['https://www.googleapis.com/auth/calendar']
SERVICE_ACCOUNT_FILE = 'credentials.json'
CALENDAR_ID = 'primary'
todo_list = [
{"task": "Сдать отчёт", "start_in_minutes": 15, "duration": 30},
{"task": "Позвонить клиенту", "start_in_minutes": 60, "duration": 15},
]
def add_event(service, summary, start_time, duration_minutes):
end_time = start_time + timedelta(minutes=duration_minutes)
event = {
'summary': summary,
'start': {'dateTime': start_time.isoformat(), 'timeZone': 'Europe/Moscow'},
'end': {'dateTime': end_time.isoformat(), 'timeZone': 'Europe/Moscow'}
}
service.events().insert(calendarId=CALENDAR_ID, body=event).execute()
def main():
creds = Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES)
service = build('calendar', 'v3', credentials=creds)
now = datetime.now()
for item in todo_list:
start_time = now + timedelta(minutes=item['start_in_minutes'])
add_event(service, item['task'], start_time, item['duration'])
if __name__ == '__main__':
main()
📌 Что делает:
Берёт список задач с указанием времени и автоматически добавляет их в ваш Google Calendar. Идеально для ассистентов, скриптов автопланирования и напоминалок.
🛠
pip install google-api-python-client google-auth
Нужен [service account JSON](https://console.cloud.google.com/), доступ к календарю и расшаривание
CALENDAR_ID.Подпишись 👉🏻 @KodduuPython 🤖
📦 Мониторинг свободного места и алерт в Telegram
📌 Что делает:
Проверяет свободное место на диске и отправляет алерт в Telegram, если его осталось слишком мало. Отлично подходит для прод-серверов, особенно в ML/лог-сценариях.
🛠
Можно запускать в
Подпишись 👉🏻 @KodduuPython 🤖
import shutil
import requests
BOT_TOKEN = 'YOUR_TELEGRAM_BOT_TOKEN'
CHAT_ID = 'YOUR_CHAT_ID'
THRESHOLD_GB = 5 # минимально допустимое свободное место
def get_free_space_gb(path='/'):
total, used, free = shutil.disk_usage(path)
return free // (1024 ** 3)
def send_alert(free_gb):
msg = f"⚠️ Мало места на диске! Осталось всего {free_gb} ГБ."
requests.post(f'https://a.tg.goldica.ir/b0dd72633a60ad0070e10de7b12c5322/bot{BOT_TOKEN}/sendMessage',
data={'chat_id': CHAT_ID, 'text': msg})
if __name__ == '__main__':
free = get_free_space_gb('/')
if free < THRESHOLD_GB:
send_alert(free)
📌 Что делает:
Проверяет свободное место на диске и отправляет алерт в Telegram, если его осталось слишком мало. Отлично подходит для прод-серверов, особенно в ML/лог-сценариях.
🛠
pip install requests
Можно запускать в
cron или как systemd таймер — и больше никаких "out of disk space" неожиданно.Подпишись 👉🏻 @KodduuPython 🤖
👍1
Скидка 50% на все курсы Python и Java до 31 июля 🔥 Жара скоро закончится 🔥🔥🔥
🔥🔥🔥 Python: самый быстрый курс 👉 50%
🔥🔥 Python Data Science: самый быстрый курс 👉 50%
🔥🔥 Топ 100 вопросов с реальных собеседований по Python (+тесты) 👉 50%
🔥 JavaScript: самый быстрый курс 👉 50%
Подпишись 👉🏻 @KodduuPython 🤖
🔥🔥🔥 Python: самый быстрый курс 👉 50%
🔥🔥 Python Data Science: самый быстрый курс 👉 50%
🔥🔥 Топ 100 вопросов с реальных собеседований по Python (+тесты) 👉 50%
🔥 JavaScript: самый быстрый курс 👉 50%
Подпишись 👉🏻 @KodduuPython 🤖
Stepik: online education
Python: самый быстрый курс
Перед Вами самый быстрый курс по Python, тут есть все что нужно чтобы начать программировать на Python. Для тех кому некогда, но очень надо выучить Python или подтянуть базу перед собеседованием. Уже 389 позитивных оценок уроков. Мы отвечаем на все ваши комментарии…