fa
Feedback

فریب کلاهبرداران را نخورید! تل‌متریو این کانال‌ها را شناسایی و برچسب‌گذاری می‌کند 👉 برای مشاهده برچسب، اشتراک تهیه کنید

Python/ django

Python/ django

رفتن به کانال در Telegram

📈 تحلیل کانال تلگرام Python/ django

کانال Python/ django (@pythonl) در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 58 512 مشترک است و جایگاه 2 246 را در دسته فناوری و برنامه‌ها و رتبه 10 308 را در منطقه روسيا دارد.

📊 شاخص‌های مخاطب و پویایی

از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 58 512 مشترک جذب کرده است.

بر اساس آخرین داده‌ها در تاریخ 29 اکتبر, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر -174 و در ۲۴ ساعت گذشته برابر -25 بوده و همچنان دسترسی گسترده‌ای حفظ شده است.

  • وضعیت تأیید: تأیید نشده
  • نرخ تعامل (ER): میانگین تعامل مخاطب 6.05% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 3.03% واکنش نسبت به کل مشترکان کسب می‌کند.
  • دسترسی پست‌ها: هر پست به طور میانگین 3 541 بازدید دریافت می‌کند. در اولین روز معمولاً 1 771 بازدید جمع‌آوری می‌شود.
  • واکنش‌ها و تعامل: مخاطبان به‌طور فعال حمایت می‌کنند؛ میانگین واکنش به هر پست 21 است.
  • علایق موضوعی: محتوا بر موضوعات کلیدی مانند github, claude, контекст, архитектура, api تمرکز دارد.

📝 توضیح و سیاست محتوایی

نویسنده این فضا را محل بیان دیدگاه‌های شخصی توصیف می‌کند:
“по всем вопросам @workakkk @itchannels_telegram - 🔥 все ит каналы @ai_machinelearning_big_data -ML @ArtificialIntelligencedl -AI @datascienceiot - 📚 @pythonlbooks РКН: clck.ru/3Fm...”

به لطف به‌روزرسانی‌های پرتکرار (آخرین داده در تاریخ 30 اکتبر, 2026)، کانال همواره به‌روز و دارای دسترسی بالاست. تحلیل‌ها نشان می‌دهد مخاطبان به‌طور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته فناوری و برنامه‌ها تبدیل کرده‌اند.

58 512
مشترکین
-2524 ساعت
-1017 روز
-17430 روز
آرشیو پست ها
🐍 Часть2: ещё 20 полезных Python-однострочников для тех, кто пишет в прод Первая часть зашла — вот ещё 20 трюков, которые реально экономят время и делают код лаконичнее и чище: 1. 📥 Считать все строки из файла, убрав перевод строки

lines = Path('file.txt').read_text().splitlines()
2. 🔐 Получить SHA256-хеш строки

hash = hashlib.sha256(b"your text").hexdigest()
3. 🧮 Конвертация списка чисел в строку

s = ','.join(map(str, numbers))
4. 🛑 Быстро остановить выполнение скрипта

raise SystemExit("Done")
5. 🧠 Распечатать размер объекта в памяти

print(sys.getsizeof(obj))
6. 🧬 Плоское разворачивание вложенных списков

flat = [i for sub in nested for i in sub]
7. 🔄 Инвертировать булеву маску NumPy

inv_mask = ~mask
8. 🧽 Удалить дубликаты из списка, сохранив порядок

seen = set(); uniq = [x for x in lst if not (x in seen or seen.add(x))]
9. 📦 Распаковка аргументов из словаря в функцию

result = func(**params)
10. 🔎 Получить словарь с топ-N частыми значениями

top_n = dict(Counter(lst).most_common(5))
11. 🪓 Ограничить длину строки с троеточием

s_trunc = s[:n] + '…' if len(s) > n else s
12. 🎛️ Массив из 0 и 1 случайной длины

binary = [random.randint(0, 1) for _ in range(n)]
13. 🗓️ Получить сегодняшнюю дату в формате ISO

today = date.today().isoformat()
14. 📁 Получить размер файла в мегабайтах

size_mb = os.path.getsize(path) / 1024**2
15. 🔀 Перемешать словарь (Python 3.7+ сохраняет порядок)

shuffled = dict(random.sample(d.items(), len(d)))
16. ⏳ Измерить время выполнения блока

with contextlib.redirect_stdout(io.StringIO()): exec('code')
17. 🧱 Разделить список на чанки по N

chunks = [lst[i:i+n] for i in range(0, len(lst), n)]
18. 🕵️ Проверить, работает ли хост (без ping)

ok = socket.create_connection((host, port), timeout=2)
19. 🛠️ Быстро заменить подстроку без re

s = s.replace('from', 'to', 1)
20. 🧪 Убедиться, что все элементы списка — числа

is_all_numbers = all(isinstance(x, (int, float)) for x in lst)
📌 Если нужна часть 3 — ставь лайк. @pythonl

⚙️ Подменяй любые импорты в Python “на лету” — без изменения кода Если ты хочешь протестировать модуль, подменить зависимость, замокать внешний сервис или обмануть импорт — не обязательно редактировать исходники. Python позволяет перехватывать импорты прямо во время выполнения, через sys.modules. Вот минимальный приём, который делает это прозрачно:

import sys
import types

# Создаём фейковый модуль
fake = types.SimpleNamespace()
fake.get_data = lambda: "подмена работает"

# Подменяем импорт
sys.modules['external_service'] = fake

# Теперь даже import будет работать
import external_service
print(external_service.get_data())  # → "подмена работает"
@pythonl

👩‍💻 Всем программистам посвящается! Вот 17 авторских обучающих IT каналов по самым востребованным областям программирования
👩‍💻 Всем программистам посвящается! Вот 17 авторских обучающих IT каналов по самым востребованным областям программирования: Выбирай своё направление: 👩‍💻 Python — t.me/python_ready 🤔 InfoSec & Хакинг — t.me/hacking_ready 🖥 SQL & Базы Данных — t.me/sql_ready 🤖 Нейросети — t.me/neuro_ready 👩‍💻 C/C++ — https://t.me/cpp_ready 👩‍💻 C# & Unity — t.me/csharp_ready 👩‍💻 Linux — t.me/linux_ready 📖 IT Книги — t.me/books_ready 👩‍💻 Frontend — t.me/frontend_ready 📱 JavaScript — t.me/javascript_ready 👩‍💻 Backend — t.me/backend_ready 📱 GitHub & Git — t.me/github_ready 👩‍💻 Java — t.me/java_ready 👩‍💻 Весь IT — t.me/it_ready 👩‍💻 Bash & Shell — t.me/bash_ready 🖼️ DevOps — t.me/devops_ready 🖥 Design — t.me/design_ready 📌 Гайды, шпаргалки, задачи, ресурсы и фишки для каждого языка программирования!

🧠 Ускоряй Python циклы без NumPy — через встроенный `array.array` Если ты используешь большие списки чисел в Python и работаешь с ними в цикле — знай: list медленный и неэффективный по памяти. Есть способ ускорить операции в 2–5 раз без внешних библиотек — просто используй array точка array. Попробуй и напиши в комментах результат, на сколько ускорились твои функции. from array import array data = array('f', [0.1] * 10_000_000) # вместо обычного list # быстрая арифметика for i in range(len(data)): data[i] *= 2.5 @python_job_interview

🌟 Odigos — распределенный трейсинг без модификации кода. Этот open-source проект меняет правила игры в observability-инструм
🌟 Odigos — распределенный трейсинг без модификации кода. Этот open-source проект меняет правила игры в observability-инструментах. Инструмент умеет автоматически генерировать распределенные трейсы для приложений на Java, Python, .NET, Node.js и Go без необходимости правки исходного кода. Под капотом используется eBPF для низкоуровневой инструментации, что особенно ценно для скомпилированных языков вроде Go. Трейсы сразу экспортируются в формате OpenTelemetry, что позволяет интегрироваться с любыми совместимыми системами мониторинга. 🤖 GitHub @pythonl

🐍 20 реально полезных однострочных функций на Python — для тех, кто пишет в прод Забудь про [::-1] и lambda x: x*2. Вот подборка, где однострочники реально ускоряют работу, убирают лишний код и улучают читаемость кода: 1. 📁 Получить все файлы с расширением .py рекурсивно

files = list(Path('.').rglob('*.py'))
2. 🧪 Быстрое тестирование скорости любого выражения

timeit(lambda: your_func(), number=1000)
3. 🔎 Показать все публичные методы объекта

[m for m in dir(obj) if not m.startswith('_')]
4. 🧼 Очистить DataFrame от строк с NaN

df_clean = df.dropna()
5. 🔄 Быстрое многопоточное выполнение функций

list(ThreadPoolExecutor().map(func, iterable))
6. 🗜️ Получить частоты значений в списке

dict(Counter(my_list))
7. 🔍 Найти дубликаты в списке

dups = [x for x, c in Counter(lst).items() if c > 1]
8. 📦 Сжать список без None

filtered = list(filter(None, data))
9. 🕵️‍♂️ Ловить и логировать все исключения в одном выражении

try: foo() except Exception as e: logging.exception(e)
10. 📊 Преобразовать список словарей в DataFrame

pd.DataFrame(list_of_dicts)
11. 🔄 Инвертировать словарь с проверкой на коллизии

inv = {v: k for k, v in d.items() if list(d.values()).count(v) == 1}
12. ⏳ Простой таймер

start = time(); result = fn(); print(f'{time() - start:.2f}s')
13. 🔢 Перемешать и взять подмножество

sample = random.sample(big_list, k=100)
14. 🧠 Получить максимальный элемент по ключу

max(data, key=lambda x: x.score)
15. 📐 Убрать отступ у многострочной строки

dedented = textwrap.dedent(multiline_string)
16. 🛠️ Простой retry без библиотек

[func() for _ in range(5) if not success()][-1]
17. 📚 Преобразовать JSON-файл в объект

data = json.loads(Path('file.json').read_text())
18. 🧮 Быстрая нормализация NumPy-вектора

v /= np.linalg.norm(v)
19. 🧾 Отобразить все переменные окружения, отсортированные по имени

print('\n'.join(f'{k}={v}' for k, v in sorted(os.environ.items())))
20. 🔄 Преобразовать словарь в query string

query = urlencode(params)
@pythonl

🧠 Как превратить любой Python-объект в читаемый словарь — даже если это класс с кучей вложенных полей Когда работаешь с API, логами или дебажишь сложные объекты — хочется увидеть весь объект как словарь, без .__dict__, без сериализации, без ручного разбора. Вот приём, который делает это рекурсивно, красиво и гибко — с помощью dataclasses и asdict, даже если объект не был dataclass изначально.
python 
from dataclasses import dataclass, asdict, is_dataclass
from types import SimpleNamespace

def deep_to_dict(obj):
    if isinstance(obj, dict):
        return {k: deep_to_dict(v) for k, v in obj.items()}
    elif isinstance(obj, list):
        return [deep_to_dict(i) for i in obj]
    elif is_dataclass(obj):
        return asdict(obj)
    elif isinstance(obj, SimpleNamespace):
        return deep_to_dict(vars(obj))
    elif hasattr(obj, '__dict__'):
        return deep_to_dict(vars(obj))
    else:
        return obj
🧠 Рекурсивный разбор любых Python-объектов 📌 Подходит для логирования, сериализации, отладки 📌 Работает с dataclass, обычными классами, объектами из types, JSON-like структурами 📌 Можно расширить: добавить фильтрацию полей, вывод в YAML или сохранение в файл Теперь любой “монстр из API” — превращается в читаемый словарь за одну строчку.

🔍Открытое собеседование на Python-бекендера с разработчиком из Avito и Яндекс во вторник 10 июля(уже в четверг!) в 19:00 по
🔍Открытое собеседование на Python-бекендера с разработчиком из Avito и Яндекс во вторник 10 июля(уже в четверг!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Python-разработчика. Как это будет: 📂 Савва Демиденко, ТехЛид с опытом в Яндексе и Авито, будет задавать реальные вопросы и задачи разработчику-добровольцу 📂 Савва будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью 📂 В конце можно будет задать любой вопрос Савве Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Python-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы. Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_py_bot Реклама. ООО "ШОРТКАТ", ИНН: 9731139396, erid: 2VtzqwZX5NF

🪶 DotDotGoose — open-source инструмент для ручного подсчёта объектов на изображениях Нужен простой способ разметить объекты
🪶 DotDotGoose — open-source инструмент для ручного подсчёта объектов на изображениях Нужен простой способ разметить объекты на фото — вручную и без лишних настроек? DotDotGoose — идеальный выбор. Это десктоп‑приложение, написанное на Python, для учёта объектов путём простого "тыкания" точек. 🔧 Возможности: - Быстрое добавление точек и классов объектов - Зум, панорама, тёмная тема - Экспорт в CSV, JSON и изображения с разметкой - Поддержка пользовательских метаданных - Готовые билды под Windows и macOS Установка: git clone https://github.com/persts/DotDotGoose python3 -m venv ddg-env source ddg-env/bin/activate python -m pip install --upgrade pip python -m pip install -r ./DotDotGoose/requirements.txt 👨‍🔬 Для всех, кому нужен точный ручной подсчёт на изображениях. 🔗 GitHub: @pythonl

🧠 Ускорь import в Python-проектах с помощью lazy loading — без изменения логики Если у тебя проект с тяжёлыми модулями (`pandas`, torch, tensorflow`), но они не всегда нужны — не загружай их зря. Python позволяет **отложить импорт до первого использования**, через встроённый `importlib. Вот как это выглядит на практике:


import importlib

# Обёртка для ленивого импорта
def lazy_import(name):
    return importlib.util.LazyLoader(importlib.import_module(name))

# Использование
np = lazy_import('numpy')
# numpy ещё не загружен

# Теперь загрузится:
print(np.array([1, 2, 3]))
@pythonl

⚡ Ускорь Python без переписывания — скомпилируй код в .so через Cython Нужно ускорить медленные куски Python-кода (циклы, численные вычисления, парсинг)? Не обязательно лезть в C или переписывать всё под NumPy. Можно взять свой .py`-файл, добавить одну строчку и превратить его в бинарный .so`‑модуль через Cython — без изменения логики.


# 1. Устанавливаем Cython и компилятор
pip install cython
sudo apt install build-essential

# 2. Переименовываем файл
mv myscript.py myscript.pyx

# 3. Создаём setup.py
echo '
from setuptools import setup
from Cython.Build import cythonize
setup(ext_modules=cythonize("myscript.pyx"))
' > setup.py

# 4. Компилируем
python3 setup.py build_ext --inplace

# 5. Используем как обычный модуль
python3 -c 'import myscript; myscript.main()'
@pythonl

ML-инженеры, какая встреча! 19 июля в Москве снова пройдет Turbo ML Conf от группы Т-Технологий. В этом году — еще масштабнее
ML-инженеры, какая встреча! 19 июля в Москве снова пройдет Turbo ML Conf от группы Т-Технологий. В этом году — еще масштабнее! В программе 5 тематических потоков, продовые кейсы и технологии. Среди спикеров — эксперты Т-Банка, Сбера, Яндекса и других ведущих специалистов. Будет много нетворкинга, прикладные доклады, настольные игры, лимитированный мерч. Участие бесплатное. Успейте оставить заявку

👾 GREMLLM — теперь у ваших багов есть сознание GREMLLM — это необычный Python-класс, в котором все методы и свойства создают
👾 GREMLLM — теперь у ваших багов есть сознание GREMLLM — это необычный Python-класс, в котором все методы и свойства создаются динамически с помощью LLM. Вы описываете, *что за объект вы хотите*, и дальше GREMLLM сам решает, что должно происходить при вызове методов или обращении к полям. 📦 Установка:

pip install gremllm
🔧 Пример:


from gremllm import Gremllm

counter = Gremllm('counter')
counter.value = 5
counter.increment()
print(counter.value)               # → 6?
print(counter.to_roman_numerals())  # → VI?
🧩 Возможности: – Динамическое поведение: всё определяется "на лету" с помощью LLM – Поддержка OpenAI, Claude, Gemini, и локальных моделей – Wet Mode: можно строить цепочки вызовов (методы возвращают объекты) – Verbose Mode: выводит, какой код был сгенерирован – Умная обработка ошибок и настройка через наследование ⚠️ Это экспериментальный инструмент. Не для продакшена. Но очень интересен для изучения LLM-интеграций в Python-код. 🔗 Репозиторий: https://github.com/ur-whitelab/gremllm @pythonl

Repost from Machinelearning
📓🦙 NotebookLlama — open-source альтернатива NotebookLM! Практически полный функционал NotebookLM — в опенсорсе. ✔️ Собирает базу знаний из документов — с точным разбором через LlamaCloud ✔️ Автоматически пишет резюме и строит mind map-графы ✔️ Позволяет генерировать подкасты (работает на базе ElevenLabs) ✔️ Позволяет вести чат с агентом по документам ✔️ Метрики и аналитика через opentelemetry 🛠 Всё в открытом репо — можешь форкать, кастомизировать, заменять компоненты под себя. Установка:

git clone https://github.com/run-llama/notebookllama
▪GitHub: https://github.com/run-llama/notebookllama ▪Попробовать в LlamaCloud: https://cloud.llamaindex.ai @ai_machinelearning_big_data #AI #ML #LLM #opensource #NotebookLM

📊 Vizro — low-code инструмент для создания дашбордов на Python. Интересный проект для аналитиков и дата-инженеров, позволяющий собирать интерактивные дашборды буквально в несколько строк кода. Основан на связке Plotly + Dash + Pydantic, но скрывает сложность за простым декларативным синтаксисом в JSON/YAML/Python-словарях. Библиотека имеет встроенные best practices по визуализации данных и возможность кастомизировать всё через Python/JS, когда low-code возможностей недостаточно. Готовые дашборды выглядят профессионально и сразу готовы к продакшену. 🤖 GitHub @pythonl

⚡️ Почему лучшие разработчики всегда на шаг впереди? Потому что они знают, где брать настоящие инсайд! Оставь “программирование в вакууме” в прошлом, выбирай свой стек — подпишись и погружайся в поток идей, лайфхаков и знаний, которые не найдёшь в открытом доступе. ИИ: t.me/ai_machinelearning_big_data Python: t.me/python_job_interview Linux: t.me/linuxacademiya Devops: t.me/DevOPSitsec Базы данных: t.me/sqlhub Мл собес t.me/machinelearning_interview C++ t.me/cpluspluc Docker: t.me/DevopsDocker Хакинг: t.me/linuxkalii МЛ: t.me/machinelearning_ru Data Science: t.me/data_analysis_ml Javascript: t.me/javascriptv C#: t.me/csharp_ci Java: t.me/java_library Python собеседования: t.me/python_job_interview Мобильная разработка: t.me/mobdevelop Golang: t.me/Golang_google React: t.me/react_tg Rust: t.me/rust_code ИИ: t.me/vistehno PHP: t.me/phpshka Android: t.me/android_its Frontend: t.me/front Big Data: t.me/bigdatai МАТЕМАТИКА: t.me/data_math Kubernets: t.me/kubernetc Разработка игр: https://t.me/gamedev Физика: t.me/fizmat SQL: t.me/databases_tg Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy Папка FRONTEND: https://t.me/addlist/mzMMG3RPZhY2M2Iy 🎓954ГБ ОПЕНСОРС КУРСОВ: @courses 😆ИТ-Мемы: t.me/memes_prog 🇬🇧Английский: t.me/english_forprogrammers 🧠ИИ: t.me/vistehno 🖥 Chatgpt для кода в тг: @Chatgpturbobot - 📕Ит-книги: https://t.me/addlist/BkskQciUW_FhNjEy 💼ИТ-вакансии t.me/addlist/_zyy_jQ_QUsyM2Vi Подпишись, чтобы всегда знать, куда двигаться дальше!

🔥 CAI — ИИ для поиска багов от Alias Robotics Что это такое? CAI — лёгкий фреймворк для создания AI-агентов, которые помогаю
🔥 CAI — ИИ для поиска багов от Alias Robotics Что это такое? CAI — лёгкий фреймворк для создания AI-агентов, которые помогают автоматизировать поиск и проверку уязвимостей. Как это работает? - Загружаете YAML-конфиги Опишите сценарии поиска багов, тестов и отчётов в простых текстовых файлах. - LLM-агенты AI-модель эмулирует протоколы (SSH, HTTP, TCP и другие) и взаимодействует с целевыми системами как настоящий тестировщик. - Генерация и «разогрев» данных Создавайте синтетические запросы для обучения и быстро запускайте агента на своих данных. - Оффлайн-оценка Собирайте результаты тестов и анализируйте их без постоянного подключения к интернету. Зачем использовать CAI? - Ускоряет подготовку и запуск тестов безопасности - Позволяет гибко настраивать шаги проверки - Повышает прозрачность и повторяемость отчётов о найденных уязвимостях Установка и запуск:

git clone https://github.com/aliasrobotics/cai.git
cd cai
# отредактируйте config.yaml и запустите агента
📌 Github @pythonl

🧩 Задача для разминки Что выведет этот код? Попробуй догадаться без запуска.

class Sneaky:
    def __eq__(self, other):
        print("Comparing!")
        return True

a = Sneaky()
b = [a]

print(a in b)
print(a == b[0])
print(b.count(a))
🤔 Подумай: сколько раз вызовется eq? 🎯 Разбор: print(a in b) 🔍 Проверка a in b вызывает b.__contains__(a), который по умолчанию использует ==. 👉 Вызовется eq, будет True. print(a == b[0]) 🔍 Прямое сравнение — снова eq. print(b.count(a)) 🔍 list.count сравнивает каждый элемент с ==. В нашем списке один элемент — a. 👉 Опять вызывается eq. 💥 Вывод будет: Comparing! True Comparing! True Comparing! 1 📌 Вывод: __eq__ сработал 3 раза, и каждый раз напечатал "Comparing!". 🧠 Уловка: Python-списки используют ==, даже если это один и тот же объект! Да, a == a всё равно вызовет __eq__, если он определён. ⚠️ Фишка для интервью: Можно подменить поведение ==, но is (сравнение идентичности) всегда быстрее и не вызывает магии. @pythonl

⚡️ PyOpenCL — ускоряем Python вычисления на GPU. Этот проект даёт доступ к технологии OpenCL прямо из Python, позволяя задейс
⚡️ PyOpenCL — ускоряем Python вычисления на GPU. Этот проект даёт доступ к технологии OpenCL прямо из Python, позволяя задействовать не только видеокарты, но и любые параллельные вычислительные устройства. Он сочетает низкоуровневый контроль с автоматической обработкой ошибок и привязкой жизненного цикла объектов. Инструмент имеет обширную документацию с примерами: от простого поэлементного умножения массивов до сложных алгоритмов с использованием локальной памяти GPU. Проект работает с реализациями OpenCL от Apple, AMD и Nvidia, а установка через Conda занимает буквально пару команд. 🤖 GitHub @pythonl

Общий сбор питонистов на митапе ЮMoney ™️ Питоняшки — бесплатный митап ЮMoney для Python-разработчиков. ✅ 3 июля, в четверг,
Общий сбор питонистов на митапе ЮMoney ™️ Питоняшки — бесплатный митап ЮMoney для Python-разработчиков. ✅ 3 июля, в четверг, в 19:00 (мск) — приходите на митап в Санкт-Петербурге или подключайтесь онлайн. О чём будут доклады? 🟣 Это не те метрики, что вы ищете. Разберёмся, почему стандартного экспортёра может не хватать, и как написать свой на Python. 🟣 Кодогенерация: как компьютеры учатся писать код за нас. Поговорим про прошлое, настоящее и будущее кодогенерации в разных языках программирования. 🟣 Ruff: как не положить всё, переходя на новые правила? Поговорим про линтеры, форматтеры и подводные камни при переходе на Ruff. 🟣 Секреты успеха змеи в мире пауков. Обсудим, как мы применяли scrapy и playwright в ЮMoney, чтобы создать сервис модерации сайтов. Зарегистрируйтесь, чтобы принять участие. Все подробности — на сайте митапа Питоняшки 🔥