🎨 Как сделать современный GUI
|
WxPython – одна из лучших альтернатив стандартному Tkinter. WxPython часто используют для разработки кроссплатформенных настольных приложений, утилит, программ для научных и инженерных расчетов, а также прототипов интерфейсов. На WxPython сделан интерфейсы первого торрент-клиента BitTorrent, Dropbox и десктопной версии Google Drive. Среди преимуществ wxPython: - Широкий набор виджетов и GUI-элементов – меню, кнопки, текстовые поля, деревья, списки и многое другое.
- Поддержка OpenGL для создания 3D графики.
- Возможность проигрывания аудио и видео форматов.
- Множество инструментов для работы с файлами, сетями, потоками и базами данных.
Для первого знакомства с библиотекой Майк Дрисколл предлагает подробный туториал по созданию простого проекта – калькулятора. |
На macOS и Windows 10 калькулятор выглядит по-разному |
💼 Паттерн проектирования Unit of Work
|
Шаблон Unit of Work используется для обеспечения согласованности данных при выполнении операций с базами данных: паттерн помогает поддерживать целостность данных и обеспечивает правильное управление транзакциями. Идея шаблона заключается в том, что объекты, участвующие в операциях с данными, регистрируются в централизованном объекте, называемом Unit of Work. Этот объект отслеживает все изменения, внесенные в объекты, и откладывает их применение до момента, когда все изменения будут готовы к сохранению. После этого Unit of Work выполняет необходимые действия для обеспечения согласованности данных, например, начинает транзакцию и применяет все отложенные изменения. Основные компоненты паттерна: - Unit of Work – центральный объект, который координирует работу с источниками данных и управляет транзакциями.
- Repository – репозиторий, который обеспечивает доступ к объектам данных и их сохранение в источнике данных.
- Entity – объекты данных, которые необходимо добавить или изменить в источнике данных.
Последовательность действий при использовании шаблона выглядит так: - Получение объектов данных из репозитория.
- Изменение объектов в соответствии с бизнес-логикой.
- Регистрация изменений в Unit of Work.
- Начало транзакции в источнике данных.
- Применение изменений – Unit of Work передает все зарегистрированные изменения в соответствующие репозитории, которые обновляют источник данных.
- Завершение транзакции – после успешного применения всех изменений Unit of Work подтверждает транзакцию, а в случае ошибки транзакция откатывается.
Преимущества использования паттерна: - Согласованность данных – шаблон гарантирует, что все изменения будут успешно применены или полностью отменены в случае ошибки.
- Централизованное управление транзакциями в объекте Unit of Work упрощает код и улучшает его поддерживаемость.
- Отделение бизнес-логики от операций с данными повышает модульность и гибкость системы.
|
🎸 Как использовать PostgreSQL для управления очередями задач в Django | Для управления очередями задач в Django-приложениях чаще всего используют Celery и Redis. Однако для небольших и средних проектов, которым не требуется особо сложная функциональность, оптимальным решением может стать PostgreSQL. Главное преимущество этого подхода – простота, особенно в сравнении с Celery, который часто вызывает приступы отчаяния у начинающих разработчиков. Процесс настройки Django, создания класса Task и написания воркера подробно показан здесь. |
📧 Как отправлять зашифрованные имейлы с помощью собственного SMTP-сервера
|
Для отправки писем из Python-приложений можно использовать сторонние API или напрямую подключаться к SMTP-серверу. Первый способ (на примере SMTP Yandex) изложен в нашем туториале, а в этой статье пошагово разобран второй метод. Автор демонстрирует, как можно программно отправлять имейлы через собственный SMTP-сервер: - Импортируются необходимые библиотеки для работы с SMTP и форматирования писем.
- Создается класс EmailSender, который инициализируется настройками SMTP-сервера (адрес, порт, учетные данные).
- В классе определяются методы для подключения к SMTP-серверу (connect) и отправки письма (send_email).
- Метод send_email формирует письмо в формате HTML и текстовом виде, добавляет необходимые заголовки и отправляет его через SMTP-соединение.
- В основном коде создается экземпляр EmailSender, устанавливается соединение с SMTP.
- Загружается HTML-шаблон письма из файла.
- Создается список адресов получателей (batch) из текстового файла.
- В цикле для каждого получателя отправляется сформированное ранее письмо через send_email.
- После отправки всех писем соединение с SMTP закрывается.
|
Для шифрования используется модуль симметричного шифрования cryptography |
🗑️ Что выбрать для сбора онлайн-данных: Scrapy или Crawlee
|
Scrapy и Crawlee – фреймворки для скрапинга. Первый – заслуженный ветеран, второй появился относительно недавно. Этот обзор поможет определить, какой из инструментов лучше подойдет для вашего проекта, а этот туториал на Хабре научит основам работы со Scrapy. Особенности Scrapy: - Написан на Python и бесшовно интегрируется с любыми другими Python-инструментами для сбора и обработки данных.
- Имеет многокомпонентную архитектуру с «пауками» (автономными краулерами), промежуточным ПО, конвейерами для обработки собранных данных и всевозможными настройками.
- Поддерживает распределенный режим работы через Scrapyd и Scrapy Cluster.
- Изначально ориентирован на работу со статическими HTML-страницами.
Преимущества Scrapy: - Широко используется и имеет большое сообщество разработчиков.
- Имеется множество бесплатных туториалов.
- Расширить функциональность можно с помощью плагинов.
- Поддерживает множество форматов хранения данных (CSV, JSON, XML и др.)
Недостатки Scrapy: - Работа с JavaScript-рендерингом требует дополнительных плагинов и настроек.
- Для ротации прокси и user agent нужны дополнительные плагины.
- Сложность может быть барьером для начинающих.
Особенности Crawlee: - Поддерживает JavaScript и TypeScript в качестве языков разработки.
- Предоставляет готовые шаблоны для быстрого старта с Playwright и Puppeteer.
- Имеет встроенную поддержку headless-браузеров и отлично работает с JavaScript-рендерингом.
- Обладает функциями автомасштабирования, управления очередями, автоматической смены прокси и хранения данных.
- Предоставляет единый интерфейс для HTTP-запросов и работы с браузерами.
Преимущества Crawlee: - Простой в освоении, особенно для разработчиков, знакомых с JavaScript/TypeScript.
- Поддерживает современные фреймворки (Puppeteer, Playwright).
- Имеет встроенную обработку JavaScript-рендеринга.
Недостатки Crawlee: - Относительно молодой проект (по сравнению со Scrapy), меньшее сообщество.
- Для разработчиков Python, не знакомых с JavaScript/TypeScript – необходимость вникать в новый синтаксис.
|
На Хабре опубликовали несколько статей о крутых пет-проектах: |
Тян можно оставлять без присмотра |
На этом все, увидимся через неделю! |
|
|
Вы получили это письмо, потому что подписались на нашу рассылку. Если вы больше не хотите получать наши письма, нажмите здесь.
|
|
|
|