О проекте Mind Hub

Mind-Hub - личный сборник описания технологий

Рендер кадров в блендер с последующей кодировкой через FFmpeg

Посколку распрастранённые потребительские кодеки(h.264AVC и h.265HEVC) которые поддерживает Blender, заточены на быстрое декадирование и сжатие видео, они не годятся для монтажа

Нужен кодек который умеет быстро кодироват и декодироват видео, например DNxHR! Разработаный компанией AVID. К тому же следует использовать професиональный контейнер. MP4 точно не получится использовать вместе с кодеком DNxHR. Нужно использовать контейнеры которые поддерживают наш кодек. Лично я люблю использовать .MXF, он достоточно распрастранённый, множество методанных (Они нам точно пригодятся если мы работаем над крупным проектом) открывается во всех популярных монтажных программах

Фото

threading и asyncio - запуск функций в фоне

Если func_async — асинхронная функция (с async def), можно делать так:

import asyncio def func1(): print("func1 start") # длительная синхронная работа import time; time.sleep(1) print("func1 end") def func2(): print("func2 start") import time; time.sleep(1) print("func2 end") async def func_async(): print("func_async start") await asyncio.sleep(5) # имитация долгой работы print("func_async end") def func4(): print("func4 start") import time; time.sleep(1) print("func4 end") async def main(): func1() func2() # запускаем асинхронную задачу, но не ждём её asyncio.create_task(func_async()) func4() print("Все остальное завершено") asyncio.run(main())

✅ Здесь func_async() выполняется параллельно, func4 не ждёт её завершения.

 

threading:

import threading import time # небольшая обёртка, чтобы запускать любую функцию в фоне def run_async(func, *args, **kwargs): threading.Thread(target=func, args=args, kwargs=kwargs, daemon=True).start() # Примеры функций def func1(): print("func1 start") time.sleep(1) print("func1 end") def func2(): print("func2 start") time.sleep(1) print("func2 end") def func_async(): print("func_async start") time.sleep(5) # имитация долгой работы print("func_async end") def func4(): print("func4 start") time.sleep(1) print("func4 end") # Основной код func1() func2() # Запускаем функцию в фоне run_async(func_async) # Продолжаем основной код сразу func4() print("Основной поток завершён, func_async выполняется в фоне...")

Можно запускать любую функцию в фоне, просто вызвав run_async(твоя_функция, аргументы...)

Работа с файлами в Python

1. Открытие файлов

file = open("example.txt", "r") # "r" = read (чтение)

Для работы с файлом используется функция open(). Она возвращает объект файла, с которым можно работать.

 

2. Чтение данных из файлов

Читать все сразу:

with open("example.txt", "r") as file: content = file.read() print(content)

Читать построчно:

with open("example.txt", "r") as file: for line in file: print(line.strip()) # strip убирает лишние переносы строк

Читать определенное количество символов:

with open("example.txt", "r") as file: print(file.read(5)) # прочитает первые 5 символов

3. Запись

Перезапись:

with open("example.txt", "w") as file: file.write("Привет, мир!\n") file.write("Это новая строка.\n")

Добавление (дозапись):

with open("example.txt", "a") as file: file.write("Добавленная строка.\n")

4. Работа с бинарными файлами

with open("image.png", "rb") as file: data = file.read() with open("copy_image.png", "wb") as file: file.write(data)

 

Python делает работу с файлами очень удобной и безопасной через with, который автоматически закрывает файлы.

FTP сервер на Python

У проекта есть зависимость, пакет pyftpdlib

pip install pyftpdlib
from pyftpdlib.authorizers import DummyAuthorizer from pyftpdlib.handlers import FTPHandler from pyftpdlib.servers import FTPServer import os # Константы для настройки сервера FTP_HOST = "0.0.0.0" # Адрес для прослушивания (0.0.0.0 - для всех интерфейсов) FTP_PORT = 5000 # Порт сервера (по умолчанию 21) FTP_USER = "user" # Имя пользователя FTP_PASSWORD = "password" # Пароль FTP_DIRECTORY = "./" # Каталог для файлов def run_ftp_server(): # Создаем авторизатор для управления пользователями authorizer = DummyAuthorizer() # Добавляем пользователя с правами "r" (чтение) и "elrw" (чтение, запись, удаление, создание) authorizer.add_user(FTP_USER, FTP_PASSWORD, FTP_DIRECTORY, perm="elradfmwMT") # Создаем обработчик FTP handler = FTPHandler handler.authorizer = authorizer # Создаем и запускаем сервер server = FTPServer((FTP_HOST, FTP_PORT), handler) print(f"FTP-сервер запущен на {FTP_HOST}:{FTP_PORT}") print(f"Каталог: {FTP_DIRECTORY}") print(f"Пользователь: {FTP_USER}, Пароль: {FTP_PASSWORD}") server.serve_forever() if __name__ == "__main__": # Создаем каталог для FTP, если его нет os.makedirs(FTP_DIRECTORY, exist_ok=True) # Запускаем сервер run_ftp_server()

Простой логер на Python

Первая версия:

import os import threading from datetime import datetime _log_lock = threading.Lock() _log_path = "log.txt" # путь по умолчанию def set_log(message: str): timestamp = datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S.%f")[:-3] log_line = f"[{timestamp}] {message}" with _log_lock: try: os.makedirs(os.path.dirname(_log_path), exist_ok=True) with open(_log_path, "a", encoding="utf-8") as f: f.write(log_line + "\n") f.flush() os.fsync(f.fileno()) except Exception as e: print(f"[set_log Error] {e}")

Запуск 32 бит приложений

Для запуска приложений под 32 битную архитектуру i386(x86) добавить ее и обновить список пакетов:

sudo dpkg --add-architecture i386 sudo apt update

Далее устанавливаем библиотеки:

sudo apt install libc6:i386 libstdc++6:i386

Но лучше всего установить полный набор:

sudo apt install gcc-multilib

Теперь у вас есть возможность запускать 32 бит программы

Проксирование с https через nginx

Допустим у нас есь простой веб сервер ра ботающий на протоколе http и слушающий порт 5000. Например flask.

Необходимо использовать домен и шифрование для безопасности и для отображения в поисковиках, тоесть ssl шифрование он же https

Для этого сначала сделаем проксирование через веб-сервер Nginx, первым делом установим его:

sudo apt install nginx -y

После установки мы можем посмотреть всю директорию машего веб сервера

/etc/nginx/ ├── nginx.conf # Основной конфиг ├── sites-available/ # Доступные конфиги │ ├── default # Стандартный конфиг │ └── your-site.conf # Ваш конфиг ├── sites-enabled/ # Активные конфиги (симлинки) └── snippets/ # Общие фрагменты

Команды управления:

# Проверка конфигурации sudo nginx -t # Перезагрузка Nginx sudo systemctl reload nginx # Перезапуск Nginx sudo systemctl restart nginx # Просмотр логов sudo tail -f /var/log/nginx/error.log sudo tail -f /var/log/nginx/access.log

Теперь установим Certbot для получения SSL:

sudo apt install certbot python3-certbot-nginx -y
...
Мануал магнитофона JVC CD-1740 Даташит К157УЛ1 усилитель воспроизведения Даташит UTC2822H Даташит К548УН1 двухканальный малошумящий усилитель LA3161 CD4051B,CD4052B,CD4053B Аналоговый ключ SPDT (один полюс -два направления) NLASB3157 Stereo Cassette Recorder Tape Recording Technology
ЭЛЕМЕНТНАЯ БАЗА И УСТРОЙСТВА АНАЛОГОВОЙ ЭЛЕКТРОНИКИ Григорьев Б.И.