Один из ведущих провайдеров IT-инфраструктуры Selectel подготовил бесплатный мини-курс по Django. Программа начинается с создания и настройки простых проектов: блога и канбан-доски, а завершается подключением автоматических бэкапов.
Всего за час вы научитесь: 1️⃣ Работать с бэкендом и API 2️⃣ Создавать веб-приложение по шаблону от Django 3️⃣ Настраивать Nginx и Gunicorn 4️⃣ Автоматизировать резервное копирование
🎮Oh My ~God~ Git — необычная и полезная игра с открытым исходным кодом, которая помогает разобраться с GIT не через скучные туториалы, а с помощью наглядных карточек и геймплея.
🧠 В процессе ты: • Поймёшь, как устроен GIT под капотом • Научишься работать с ветками, коммитами, merge и rebase • Запомнишь команды на практике, играя
1. Что будет выведено на экран? 2. Почему результат может оказаться неожиданным при использовании других вариантов реализации? 3. Что изменится, если использовать make_dict() без функции-обёртки?
🔍Разбор
✅Ожидаемый вывод:
defaultdict(<function make_dict at 0x...>, {'a': {'count': 2}, 'b': {'count': 1}})
🔧Почему так происходит
- defaultdict вызывает make_dict() каждый раз, когда ключа нет в словаре. - Для каждого нового ключа (`"a"` и "b"`) создаётся **новый** словарь `{"count": 0}. - d["a"]["count"] += 1 увеличивает значение "count" у собственного словаря a.
⚠️Подвох
Если бы вместо make_dict использовали один и тот же объект (например, через `lambda: some_dict`), то все ключи ссылались бы на один и тот же словарь — и значения начали бы "перетекать" между ключами:
shared = {"count": 0} d = defaultdict(lambda: shared)
- Никогда не используйте изменяемый объект напрямую как значение по умолчанию в defaultdict. - Используй функции-фабрики, чтобы избежать общих ссылок между элементами. - Проверяй поведение при работе со сложными структурами (`list`, `dict`) в качестве значений по умолчанию.
# Правильно: defaultdict(lambda: {"count": 0})
# Ошибочно: defaultdict(lambda: some_shared_dict)
📌 Используй copy.deepcopy() или фабричные функции, если создаёшь вложенные структуры.
🚀AЭРОДИСК ищет Senior Python-разработчика — в команду, где решают инженерные задачи, а не просто пишут код!
Что будешь делать: — Разработка ядра СХД: репликация, метрокластеры, отказоустойчивость; — Глубокая работа с Linux, сетями и архитектурой ПО; — Погружение в продукт — от идеи до запуска; — Кросс-функциональное взаимодействие с архитекторами, QA, DevOps;
📌 Что важно: — Уверенный Python (3+ лет), Linux на уровне профи; — Понимание сетей, систем хранения, архитектурных подходов; — Желание копать вглубь, брать ответственность и расти;
👨💻 У нас: — Сильная команда инженеров, обучение, внутренние митапы; — Работа в офисе рядом с м. Калужская, ДМС, спорт, обучение, внутренний больничный;
🐍Хитрая задача на Python для опытных разработчиков
🔹Уровень: Advanced 🔹Темы: изменяемые объекты, ссылки, list multiplication, side effects
📌Условие
Что выведет следующий код?
matrix = [[0] * 3] * 3
matrix[0][0] = 1
for row in matrix: print(row)
❓Вопросы
1. Почему изменяется весь первый столбец, а не только [0][0]? 2. Как работает [[0]*3]*3 и почему это опасно? 3. Как правильно создать независимую матрицу 3×3 из нулей?
🔍Разбор
✅Ожидаемый (и удивительный!) вывод:
[1, 0, 0] [1, 0, 0] [1, 0, 0]
🔧Почему так происходит
- Выражение [[0] * 3] * 3 создаёт три ссылки на один и тот же вложенный список. - matrix[0][0] = 1 меняет все строки, потому что они указывают на один и тот же объект в памяти.
⚠️Подвох
Это один из самых частых скрытых багов в Python, особенно при создании вложенных списков.
🧠Решение
Нужно использовать генератор списка, чтобы создать три независимых объекта:
matrix = [[0] * 3 for _ in range(3)]
Теперь matrix[0][0] = 1 затронет только первую строку:
[1, 0, 0] [0, 0, 0] [0, 0, 0]
📌 Всегда проверяй, создаёшь ли ты уникальные объекты, особенно если работаешь с вложенными структурами.
🧠 AI-репетитор: диктовка на слух с проверкой — учим язык с ИИ
Хочешь прокачать английский или французский, как в старой доброй школе — диктантами на слух? Только теперь вместо учителя — нейросеть, которая читает тебе текст клонированным голосом, а потом проверяет, насколько правильно ты всё понял и набрал.
📚 Это идеальный способ: • тренировать восприятие на слух • учить грамматику, орфографию и пунктуацию • делать всё без учителя, когда удобно
🧰 Что умеет скрипт
1. Генерирует аудио по заданному тексту (можно голосом носителя или твоим клонированным) 2. Диктует текст — ты вводишь, что услышал 3. Проверяет результат, выводит ошибки, % совпадения 4. Даёт подробный разбор отличий
🔧 Установка зависимостей
pip install TTS torchaudio gradio difflib
🧪 Пример скрипта
from TTS.tts.configs.xtts_config import XttsConfig from TTS.tts.models.xtts import Xtts import difflib
# Инициализация TTS config = XttsConfig() model = Xtts.init_from_config(config) model.load_checkpoint("tts_models/multilingual/multi-dataset/xtts_v2")
# Текст диктанта text = "Artificial intelligence is transforming education worldwide."
• использовать микрофон и распознавание речи (Whisper) • генерировать несколько уровней сложности • выводить количество ошибок по категориям: пунктуация, слова, пропуски • озвучивать ошибки вслух после проверки • вести личную статистику прогресса по дням
🧠 Зачем это нужно
• идеально для изучающих иностранные языки • может использоваться как проверка ученика в интерактивной форме • подойдёт даже для диктовок детям или взрослым
🐳Docker без боли: Огромный гайд от новичка до профи
🚀 Пришло время расставить всё по полочкам. В этом большом гайде ты узнаешь:
• как устроен Docker изнутри • как упаковать любое приложение в контейнер • как запускать десятки сервисов одной командой • как дебажить, оптимизировать и защищать контейнеры • как не сойти с ума с volumes, networks и образами
🎯 Без скучной теории — только практические команды, схемы и лайфхаки от тех, кто использует Docker в продакшене. Сохраняй и делись с коллегами, чтобы не потерять
Спустя чуть больше двух месяцев, Tencent опубликовала веса и код инференса проекта HunyuanPortrait - системы на основе диффузионных моделей для создания реалистичных анимированных портретов.
На вход подается видео, с которого движения переносятся на целевое изображение для "оживления". Режима "тext-to-motion", судя по всему - нет.
Под капотом - набор моделей на основе SVD, DiNOv2, Arc2Face и YoloFace.
Разработчики уверяют, что инференс заводится на 24 Гб VRAM и их метод лучше контролирует анимацию и делает более плавные переходы между кадрами, чем существующие аналоги.
⚠️ WebUI нет, адаптации под ComfyUI - пока тоже нет.
🖥Руководство по ускорению и оптимизации Python-кода
В этом руководстве рассмотрены продвинутые техники оптимизации Python-программ, особенно актуальные для backend-разработки.
Здесь разобрано профилирование, выбор структур данных и алгоритмов, эффективное использование стандартной библиотеки, оптимизацию циклов, применение таких инструментов как Numba/Cython/PyPy, параллелизм и асинхронность, работу с вводом-выводом, кеширование, обработку больших данных, компиляцию/упаковку кода и общие советы по написанию быстрого и поддерживаемого кода.
🐳 Зачем и как контейнеризировать Python-приложения?
Контейнеризация — не просто модный DevOps-термин. Это способ упаковать твоё Python-приложение так, чтобы оно запускалось одинаково везде — локально, на сервере и в облаке.
🔥 Зачем это нужно: ▪ никакого "у меня работает, а у него — нет" ▪ изолированные зависимости и окружение ▪ быстрый деплой и масштабирование ▪ меньше багов при переносе между средами
📦 Простой Dockerfile для Python:
FROM python:3.10-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . CMD ["python", "main.py"]
🧪 Дальше всё просто:
docker build -t my-python-app . docker run -it my-python-app
🎯 Добавь .dockerignore, настрой .env, используй docker-compose, а для продакшена — оптимизируй образ под размер и безопасность.
📌 Если твой Python-проект всё ещё живёт в "сыром" виде — пора пересесть на контейнеры.
✅ Не требует изменений в коде ✅ Работает с чужими процессами ✅ Без тормозов, можно запускать в проде
py-spy top --pid <PID> py-spy record -o profile.svg -- python your_script.py
👉 Показывает flame graph: удобная визуализация bottleneck-функций.
🔥 `Scalene` — профайлинг CPU, памяти и аллокаций
✅ Отслеживает: - сколько времени тратит CPU - где происходят аллокации - сколько памяти реально используется
pip install scalene scalene your_script.py
👉 Выделяет проблемные строки, показывает выделение памяти по строчкам кода, а не только по функциям.
🧮 `memory_profiler` — анализ использования памяти
✅ Показывает, сколько памяти потребляет каждая строка ✅ Полезен для data science скриптов
pip install memory-profiler
Добавь декоратор:
from memory_profiler import profile
@profile def my_func(): ...
Запуск:
python -m memory_profiler your_script.py
💡 Как выбрать?
| Инструмент | Что профилирует | Подходит для | |--------------------|----------------------|------------------------------| | `cProfile` | Время (встроенно) | Быстрый старт, базовый анализ | | `py-spy` | Время (sampling) | Прод, чужие процессы, flame graphs | | `Scalene` | Время + память + аллокации | Глубокий анализ по строкам | | `memory_profiler` | Только память | Data science, отладка RAM |
✔️Cursor 1.0 — стабильный релиз с полезными фичами
Новая стабильная версия Cursor, и в ней появилось много обновлений, которые делают работу с кодом удобнее.
Вот что стоит отметить:
🐞Bugbot Автоматически проверяет Pull Request'ы на баги и предлагает исправления. Можно внести правку прямо в редакторе — в один клик.
🧠Memory (beta) Cursor теперь запоминает контекст проекта, что помогает при командной работе и упрощает навигацию по коду.
⚙️One-Click MCP Setup Настройка подключения к Model Context Protocol — теперь через одну кнопку, без ручной конфигурации.
📌Дополнительно в 1.0: • Возможность редактировать несколько мест в коде одновременно • Поддержка таблиц, Markdown и диаграмм Mermaid в чате • Обновлённые настройки и админ-панель • Фоновая работа агентов — можно интегрировать их со Slack и Jupyter Notebooks
Cursor постепенно становится более удобной средой для совместной работы с ИИ-помощником.
🧠 Объяснение: Этот хак позволяет временно перенаправить стандартный вывод print() внутрь объекта StringIO, чтобы «тихо» перехватить и сохранить его. Полезно для:
• тестирования CLI-приложений • логирования скрытого вывода • подавления шума в stdout во время исполнения кода
Работает как контекстный менеджер, не требует сторонних библиотек, и легко встраивается в production-код.
🔍 В Яндекс Поиске появились технологии Алисы: теперь он рассуждает в ответ на вопрос и генерирует контент
Поиск Яндекса обновился. Там появился режим рассуждений, возможность генерировать контент, получать развёрнутые ответы, и помогать с выбором товаров. Всё это — благодаря объединению с технологиями Алисы, которые унаследовали и расширили возможности Нейро.
Что поменялось: — Новые ответы Алисы:готовая небольшая статья с картинками, видео и ссылками на источники. — Можно попросить сгенерировать текст или картинку прямо в поисковой строке — например, по запросам “напиши” или “нарисуй”. — Появился режим рассуждений: для сложных задач, где важно углубиться в тему. В этом режиме Алиса тратит больше времени на анализ информации, задействует больше источников и может дать ответ в виде таблицы. Пользователь может посмотреть, как она подходит к задаче и какие выводы делает. — Пользователи Браузера теперь могут задавать Алисе вопросы не только в Поиске, но и по открытой веб-странице. Она проанализирует текст на сайте и даст ёмкий ответ со ссылками на конкретные фрагменты.
Эти большие обновления — результат работы сразу нескольких команд. Команда Яндекс Поиска создает LLM технологии в поиске, проектирует интерфейсы, создает инфраструктуру, позволяющую сервису работать бесперебойно 24/7.