Справочник Программиста
6.37K subscribers
1.28K photos
374 videos
64 files
1.61K links
По рекламе - @it_start_programmer
Мои курсы - @courses_from_it_start_bot
Сайт - https://it-start.online/
YouTube - https://www.youtube.com/@it_start
Реклама на бирже - https://telega.in/c/programmersGuide_1

Предложить идею: @it_start_suggestion_bot
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
🖼 Код для массового сжатия изображений в папке на Python

Для массового сжатия изображений в коде используется библиотека Pillow, для добавления прогресс-бара - tqdm.

➡️Установка модуля: pip install Pillow tqdm

from pathlib import Path
from PIL import Image
from tqdm import tqdm


def process_images_compact(input_path: str, output_folder: str = 'out', max_width: int = 1920, quality: int = 85):
out_dir = Path(output_folder)
out_dir.mkdir(parents=True, exist_ok=True)

allowed_exts = {'.jpg', '.jpeg', '.png'}

# Собираем список всех файлов в input_path (и подпапках), которые имеют разрешенные расширения
# rglob('*') рекурсивно ищет все файлы и папки
files = [p for p in Path(input_path).rglob('*') if p.suffix.lower() in allowed_exts]

for p in tqdm(files, leave=False):
# Открываем изображение с помощью Pillow
im = Image.open(p)
# Получаем текущие ширину и высоту изображения
w, h = im.size

# Проверяем, превышает ли ширина изображения заданную максимальную ширину
if w > max_width:
# Вычисляем коэффициент масштабирования
ratio = max_width / w
# Изменяем размер изображения, сохраняя пропорции
im = im.resize((max_width, int(h * ratio)))

# Определяем полный путь для сохранения обработанного изображения в выходной папке
output_file_path = out_dir / p.name

# Сохраняем изображение
if p.suffix.lower() == '.png':
im.save(output_file_path, optimize=True)
else:
im.save(output_file_path, quality=quality, optimize=True)


if __name__ == "__main__":
process_images_compact('my_photos', output_folder='resized_photos', max_width=1024, quality=80)


➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤‍🔥2🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
🗣 parler‑tts — это полностью открытая система синтеза речи с управляемыми характеристиками.

Основные возможности:
🔵Открытый синтез речи с управляемыми характеристиками
🔵Генерация голоса на основе текстового описания
🔵Выбор из 34 предобученных голосов
🔵Поддержка Mini и Large моделей с разным числом параметров
🔵Управление скоростью, тембром, шумом и реверберацией
🔵Возможность дообучения на собственных записях
🔵Ускорение работы через Torch Compile и Flash Attention 2
🔵Поддержка потоковой генерации аудио
🔵Инструменты для автоматической аннотации речи

📱 Репозиторий

➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5❤‍🔥2👍1
🔥 scrubadub — это Python‑библиотека, которая предназначена для удаления личной и конфиденциальной информации из произвольного текста.

Основные возможности:
🔵Удаление личной и конфиденциальной информации (PII) из текста.
🔵Поддержка распознавания имён, email‑адресов, телефонов, URL, адресов, дат рождения, номеров документов и карт.
🔵Возможность подключения дополнительных детекторов.
🔵Настройка замены (текстовые метки, хеши, форматирование).
🔵Локализация для поддержки региональных форматов данных.
🔵Добавление пользовательских паттернов для поиска и удаления.
🔵Гибкая конфигурация детекторов (добавление, удаление, приоритеты).

➡️Установка: pip install scrubadub

📱 Репозиторий
⚙️ Документация

➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥3👍1
This media is not supported in your browser
VIEW IN TELEGRAM
🗂 Код для отслеживания изменений в папке на Python

Для отслеживания изменений в директории в коде используется библиотека watchdog.

➡️Установка библиотеки: pip install watchdog

import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
import os

class MyEventHandler(FileSystemEventHandler):
def on_any_event(self, event):
"""Логирует любое событие файловой системы."""
if event.is_directory:
event_type = "Каталог"
else:
event_type = "Файл"

if event.event_type == 'created':
print(f"СОЗДАН: {event_type} {event.src_path}")
elif event.event_type == 'deleted':
print(f"УДАЛЕН: {event_type} {event.src_path}")
elif event.event_type == 'modified':
print(f"ИЗМЕНЕН: {event_type} {event.src_path}")
elif event.event_type == 'moved':
print(f"ПЕРЕМЕЩЕН: {event_type} из {event.src_path} в {event.dest_path}")

def start_watching(path):
event_handler = MyEventHandler()
observer = Observer()
observer.schedule(event_handler, path, recursive=True)
observer.start()
print(f"Мониторинг папки: {path}. Нажмите Ctrl+C для остановки.")
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
print("Мониторинг остановлен.")


if __name__ == "__main__":
# Замените 'путь_к_папке' на фактический путь к папке, которую вы хотите отслеживать
folder_to_watch = 'путь_к_папке'

# Создаем папку, если она не существует (необязательно, для демонстрации)
if not os.path.exists(folder_to_watch):
os.makedirs(folder_to_watch)
print(f"Создана папка для демонстрации: {folder_to_watch}")

start_watching(folder_to_watch)


➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍2❤‍🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
🚀 notebookllama – это полностью open‑source альтернатива Google NotebookLM, использующая LlamaCloud для своей инфраструктуры.

Ориентирован на конвертацию документов (PDF) в подкаст‑формат, где AI генерирует скрипт и превращает его в аудио разговор между двумя «ведущими».

Основные возможности:
Распознавание и извлечение содержимого PDF
Генерация сценария подкаста с драматическими вставками
Конвертация текста в речь через открытые TTS-модели, такие как bark и Parler‑tts
Полностью настраиваемый open-source код, включая API, UI-компоненты, поддержку LlamaCloud и возможность замены компонентов под собственные нужды

📱 Репозиторий

➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4❤‍🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
📱 vizro — это Python‑библиотека для быстрого и удобного создания высококачественных приложений визуализации данных в low‑code стиле.

Основные особенности
🔵Компоненты: графики, таблицы, KPI-карточки, формы и другие элементы интерфейса.
🔵Контролы: фильтры и параметры с селекторами (выпадающие списки, ползунки и др.).
🔵Действия: взаимодействия между компонентами, drill-through, экспорт и прочее.
🔵Макеты: сеточные layout или гибкие контейнеры с предустановленными стилями.
🔵Навигация: поддержка вложенных страниц и различных вариантов построения интерфейса

➡️Установка: pip install vizro

📱 Репозиторий
⚙️ Документация

➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4❤‍🔥1
💻 cai — это легковесный, эргономичный и открытый фреймворк для создания специализированных AI‑агентов, предназначенных для помощи в выполнении задач Bug Bounty — от разведки до валидации уязвимостей и составления отчётов.

Основные особенности:
🔵Создание кастомных AI-агентов для задач Bug Bounty
🔵Работа с более чем 300 моделями (GPT-4o, Claude, DeepSeek, Ollama и др.)
🔵Поддержка модульной архитектуры для лёгкого расширения
🔵Встроенная система трассировки и логирования
🔵Интеграция с инструментами анализа уязвимостей
🔵Поддержка локальных и облачных LLM
🔵Автоматизация задач: разведка, эксплуатация, отчётность
🔵Возможность использования через CLI и веб-интерфейс
🔵Поддержка командной работы и многоагентных сценариев
🔵Повышенная производительность и эффективность по сравнению с ручным пентестингом

⚠️ Информация предоставлена исключительно в образовательных целях. Использование в незаконных действиях запрещено.

➡️Установка: pip install cai-framework

📱 Репозиторий
⚙️ Документация

➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥3🔥2👍1
📱 pyopencl — это обёртка на Python для OpenCL, обеспечивающая "питонический" доступ к популярному API для параллельных вычислений на GPU, многоядерных CPU и других ускорителях.

Основные возможности:
🔵Полный доступ ко всем функциям OpenCL из Python
🔵Автоматическое управление ресурсами (RAII)
🔵Преобразование ошибок OpenCL в исключения Python
🔵Высокая производительность благодаря C++‑ядру
🔵Поддержка всех популярных платформ и GPU (Nvidia, AMD, Intel и др.)
🔵Возможность компиляции и исполнения OpenCL‑ядер на лету
🔵Поддержка буферов, изображений и прочих объектов памяти OpenCL
🔵Работа с несколькими устройствами и очередями команд
🔵Интеграция с NumPy

➡️Установка: pip install pyopencl

📱 Репозиторий
⚙️ Документация

➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥2👍2🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
🔍 Код для поиска строки по файлам

Для работы с файлами в коде используется стандартный модуль os.

Как работает скрипт:
🔵os.walk — рекурсивно обходит все папки и файлы.
🔵Открывает каждый файл в режиме чтения (utf-8, игнорируя ошибки кодировки).
🔵Проверяет каждую строку на наличие искомого текста.
🔵Выводит путь к файлу, номер строки и саму строку.

import os


def search_string_in_files(folder_path, search_string):
# Проходимся по всем файлам и папкам, начиная с указанного пути
for root, _, files in os.walk(folder_path):
# Итерируемся по каждому файлу в текущей папке
for file_name in files:
file_path = os.path.join(root, file_name)

try:
# Открываем файл для чтения в режиме "r" с кодировкой "utf-8"
with open(file_path, "r", encoding="utf-8", errors="ignore") as file:
# Итерируемся по каждой строке в файле, начиная нумерацию с 1
for line_number, line in enumerate(file, start=1):
# Проверяем, содержится ли искомая строка в текущей строке файла
if search_string in line:
print(f"[Найдено] {file_path} (строка {line_number}): {line.strip()}")
except (IOError, OSError):
print(f"[Ошибка] Не удалось открыть файл: {file_path}")


if __name__ == "__main__":
folder = input("Введите путь к папке: ")
query = input("Введите строку для поиска: ")
search_string_in_files(folder, query)


➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥4🔥4
🔍 statsmodels — это Python-библиотека для статистического моделирования, анализа данных и проведения эконометрических исследований.

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

Основные особенности:
🔵Поддержка регрессионных моделей (линейная, нелинейная, GLM)
🔵Анализ временных рядов (ARIMA, SARIMAX, VAR)
🔵Методы оценки параметров (OLS, MLE, GMM)
🔵Широкий набор статистических тестов
🔵Средства для проверки гипотез
🔵Поддержка моделей с фиксированными и случайными эффектами
🔵Встроенные примеры и датасеты
🔵Гибкая интеграция с NumPy, pandas, SciPy
🔵Подробные отчёты и результаты моделей

➡️Установка: pip install statsmodels

📱 Репозиторий
⚙️ Документация

➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥2👍2
⚒️ pyrsistent — это Python-библиотека для работы с персистентными (иммутабельными) структурами данных, которая обеспечивает безопасное и предсказуемое поведение объектов без их изменения.

Полезна, когда требуется неизменяемость данных, например, в функциональном программировании или при многопоточности.

Основные возможности:
🔵Неизменяемые коллекции: список, словарь, множество и другие.
🔵Эффективное копирование — изменения создают новую структуру без полного копирования данных.
🔵Вложенные структуры с безопасными обновлениями.
🔵Высокая производительность за счёт структурных оптимизаций.
🔵Удобна для тестирования и работы с чистыми функциями.

➡️Установка: pip install pyrsistent

📱 Репозиторий
⚙️ Документация

➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍1
This media is not supported in your browser
VIEW IN TELEGRAM
👩‍💻 The Fuck — это инструмент командной строки, который помогает исправлять ошибки в предыдущих командах терминала, экономя время и избавляя от необходимости повторно вводить исправленные команды.

Анализирует последнюю введённую команду, пытается сопоставить её с набором правил и предлагает исправленную версию, которую можно выполнить с помощью команды fuck.

Основные особенности:
🔵Быстрое исправление опечаток и ошибок в командах терминала
🔵Поддержка множества правил для разных инструментов и команд
🔵Возможность автоматически выполнять исправленную команду
🔵Настраиваемые пользовательские правила исправления
🔵Поддержка популярных оболочек: Bash, Zsh, Fish, PowerShell
🔵Экономия времени и повышение продуктивности при работе с консолью
🔵Интуитивно понятный и простой в использовании интерфейс командной строки

➡️Установка: pip install thefuck

📱 Репозиторий

➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤‍🔥3👍1
🚀 Django Channels — это официальное расширение фреймворка Django, которое добавляет поддержку асинхронных протоколов, таких как WebSockets, MQTT, а также возможности для долгосрочных соединений и фоновых задач.

Это позволяет создавать приложения с реальным временем, такие как чаты, уведомления, игры и системы мониторинга, при этом сохраняя привычную архитектуру Django.

Основные особенности:
Поддержка WebSocket и других асинхронных протоколов
Использование ASGI вместо WSGI для асинхронной работы
Возможность обработки долгосрочных соединений
Концепция потребителей (Consumers) для обработки событий
Интеграция с Redis для межпроцессного обмена сообщениями
Поддержка фоновых задач и событий
Совместимость с синхронными и асинхронными представлениями
Встроенный ASGI-сервер Daphne
Простота интеграции в существующие проекты Django
Подходит для приложений с реальным временем (чаты, уведомления, игры и др.)

➡️Установка: pip install channels

📱 Репозиторий
⚙️ Документация

➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥2🔥2
Шпаргалка по регулярным выражениям

🔥Сохрани, чтобы не потерять!

➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥3👍2🔥2
⚒️ pluggy — это минималистичная, готовая к производственному использованию система плагинов.

Основные возможности:
🔵Объявление и использование hook-спецификаций для точек расширения.
🔵Регистрация и управление плагинами через PluginManager.
🔵Поддержка нескольких реализаций одного hook-а.
🔵Контроль порядка выполнения плагинов по приоритету.
🔵Возможность динамического подключения и отключения плагинов.
🔵Интеграция с entry points для автозагрузки плагинов.
🔵Безопасная передача и сбор результатов от всех hook-ов.
🔵Минимальный размер и высокая производительность.

➡️Установка: pip install pluggy

📱 Репозиторий
⚙️ Документация

➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥2👍2🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
🖼 Код для поиска повторяющихся изображений на Python

Для сравнения изображений в коде используется библиотека imagehash, а для работы с изображениями - Pillow.

➡️Установка модуля: pip install Pillow imagehash

from PIL import Image
import imagehash
import os


def find_duplicate_images(folder):
hashes = {} # Словарь для хранения хэшей изображений и соответствующих им имен файлов
for filename in os.listdir(folder):
# Проверяем, что файл имеет расширение изображения
if filename.endswith(('.png', '.jpg', '.jpeg')):
path = os.path.join(folder, filename)
hash_val = imagehash.average_hash(Image.open(path)) # Создаем хэш изображения
if hash_val in hashes: # Если такой хэш уже встречался
print(f"Дубликат: {filename} и {hashes[hash_val]}") # Выводим найденный дубликат
else:
hashes[hash_val] = filename # Сохраняем хэш и имя файла в словарь


if __name__ == '__main__':
folder = input("Введите путь к папке с изображениями: ")
find_duplicate_images(folder)


➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥3🔥3
📝datatable — это Python-библиотека, предназначенная для эффективного и высокопроизводительного анализа табличных данных.

Основные возможности:
🔵Высокая производительность при обработке данных
🔵Поддержка очень больших наборов данных (в том числе больше объёма ОЗУ)
🔵Реализация на C/C++ для ускорения вычислений
🔵Автоматическая многопоточность
🔵Гибкая фильтрация, сортировка, группировка и агрегации
🔵Интеграция с pandas, NumPy и PyArrow
🔵Поддержка memory-mapping для работы с файлами напрямую с диска
🔵Совместимость с производственным использованием

➡️Установка: pip install datatable

📱 Репозиторий
⚙️ Документация

➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥3👍1🔥1
⚒️ LIEF — это библиотека для анализа и модификации исполняемых форматов, совместимая с различными операционными системами и языками программирования.

Основные особенности:
🔵Поддержка форматов ELF, PE, Mach-O, OAT, DEX, VDEX и ART
🔵Единая абстрактная модель для работы с разными бинарными форматами
🔵Возможность анализа и модификации исполняемых файлов
🔵Поддержка языков C++, Python, Rust и частично C
🔵Расширенная версия LIEF Extended с поддержкой DWARF, PDB, Objective-C, dyld shared cache, дизассемблера и ассемблера
🔵Интеграции с Ghidra и Binary Ninja
🔵Кроссплатформенная работа на Windows, Linux и macOS

➡️Установка: pip install lief

📱 Репозиторий
⚙️ Документация

➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥3👍2
🌐 Код для сканирования открытых вкладок в Google Chrome на Python

Для отправки GET-запроса для получения данных о вкладках в формате JSON в коде используется библиотека requests.

➡️Установка библиотеки: pip install requests

import requests


def get_chrome_tabs(debug_port=9222):
"""
Получает и выводит список открытых вкладок Chrome через удаленную отладку.

Args:
debug_port (int): Порт, на котором включена удаленная отладка.
По умолчанию используется порт 9222.
"""
try:
response = requests.get(f"http://localhost:{debug_port}/json")
tabs = response.json()

if not tabs:
print("Нет открытых вкладок или отладка не включена.")
return

for i, tab in enumerate(tabs, start=1):
title = tab.get('title', 'Без названия')
url = tab.get('url', 'Без URL')
print(f"{i}. {title} — {url}")

except requests.exceptions.ConnectionError:
print(f"Не удалось подключиться к Chrome (порт {debug_port}).")
print("Убедитесь, что Chrome запущен с ключом: chrome.exe --remote-debugging-port=9222")


if __name__ == "__main__":
get_chrome_tabs()


Как использовать:

Запустить Chrome с отладочным портом: chrome.exe --remote-debugging-port=9222
Запустить скрипт — он выведет список всех открытых вкладок (название + URL).


➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4🤔2❤‍🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
📰 drawdata — это небольшая Python-библиотека, которая добавляет интерактивные виджеты прямо в Jupyter Notebook (а также совместима с VSCode и Colab), позволяя вам рисовать собственные датасеты вручную, а затем использовать их для анализа или обучения моделей машинного обучения.

Основные возможности:
🔵Рисование собственных датасетов вручную
🔵Создание scatter-датасетов
🔵Создание гистограмм и баров
🔵Экспорт данных в pandas или polars DataFrame
🔵Получение данных в формате (X, y) для scikit-learn
🔵Поддержка интерактивной работы в Jupyter, VSCode и Colab

➡️Установка: pip install drawdata

📱 Репозиторий
💬 Демо

➡️Справочник Программиста. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥2🤨1