TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки

TGINSIGHT SIMILAR POSTS

Најди сличен содржај

Изворен канал @pythonotes · Post #381 · 23 окт.

Установить свойства виджета в PySide можно не только через соответствующие методы и конструктор класса. Можно их изменять с помощью метода setProperty по имени. btn = QPushButton("Click Me") btn.setProperty("flat", True) Это аналогично вызову btn.setFlat(True) Если указать несуществующее свойство, то оно просто создается btn.setProperty("btnType", "super") Получить его значение можно методом .property(name) btn_type = btn.property("btnType") Когда это может быть полезно? ▫️Можно просто хранить какие то данные в виджете и потом их доставать обратно widget = QWidget() widget.setProperty('my_data', 123) print(widget.property('my_data')) ▫️ Назначая эти свойства разным виджетам можно потом отличить виджеты во время итераци по ним. Например, найти все кнопки со свойством my_data="superbtn". Но ведь вместо кастомного свойства можно использовать objectName, будет тот же результат. Да, но y ObjectName есть ограничение - только строки. ▫️ Если нам потребуется не просто поиск а, например, сортировка по числу, то свойства позволяют нам это сделать. Поддерживается любой тип данных widget.setProperty('my_data', {'Key': 'value'}) widget.setProperty('order', 1) all_widgets.sort(key=w: w.property('order')) Но ведь Python позволяет всё вышеперечисленное сделать простым созданием атрибута у объекта widget.order = 1 widget.my_data = 123 Да, но я думаю что не надо объяснять почему не стоит так делать. К тому же, если у виджета нет свойства то метод .property(name) вернет None, а отсутствующий атрибут выбросит исключение. ▫️ Действительно полезное применение кастомным свойствам - контроль стилей. Здесь атрибутами не обойтись, нужны именно свойства. Дело в том, что в селекторах стилей можно указывать конкретные свойства виджетов на которые следует назначать стиль. Просто запустите этот код from PySide2.QtWidgets import * if __name__ == "__main__": app = QApplication([]) widget = QWidget(minimumWidth=300) layout = QVBoxLayout(widget) btn1 = QPushButton("Action 1") btn2 = QPushButton("Action 2") btn3 = QPushButton("Action 3", flat=True) layout.addWidget(btn1) layout.addWidget(btn2) layout.addWidget(btn3) # добавим кастомное свойство одной кнопке btn1.setProperty("btnType", "super") # добавляем стили widget.setStyleSheet( """ QPushButton[btnType="super"] { background-color: yellow; color: red; } QPushButton[flat="true"] { color: yellow; } """ ) widget.show() app.exec_() С помощью селектора мы избирательно назначили стили на конкретные кнопки. Как получить список всех кастомный свойств? Функция получения списка кастомных свойств отличается от получения дефолтных. def print_widget_dyn_properties(widget): for prop_name in widget.dynamicPropertyNames(): property_name = prop_name.data().decode() property_value = widget.property(property_name) print(f"{property_name}: {property_value}") #tricks#qt

Hashtags

Резултати

Пронајдени 3 слични објави

Пребарај: #proxmox

当前筛选 #proxmox清除筛选
infosecurity

@tg_infosec · Post #2941 · 16.02.2025 г., 12:33

👨‍💻 Доступная виртуализация: Proxmox. • Когда потребности перерастают один, ответственный за все, железный сервер, но еще не настолько велики, чтобы использовать Kubernetes, на помощь приходят разные решения, позволяющие управлять кластером из нескольких хостов, организовать High Availability, репликацию и централизованный бэкап контейнеров и виртуалок. Proxmox — одно из них: • Разворачиваем Linstor хранилище ч.1; • Разворачиваем Linstor хранилище ч.2; • Разворачиваем Linstor хранилище ч.3; • Proxmox VE - обновляем 6ку на 7ку (Proxmox 6 to 7 upgrade); • Proxmox: бекапы и факапы (и ресторы); • Proxmox + NFS сервер - внешнее хранилище для iso и дисков; • Proxmox API - автоматизируем рутинную операцию; • Proxmox + Kerio Control - удобные песочницы; • Proxmox + Kerio Control - удобные песочницы; • Вводная; • Урок 1 - вебинар, инсталляция; • Урок 2.1 - Обновления; • Урок 2.2 - Контейнеры; • Урок 2.3 - Виртуальные машины; • Урок 2.4 - Настройки в машинах и контейнерах; • Урок 2.5 - Снапшоты; • Урок 2.6 - Бекапы; • Урок 2.7 - Пользователи и права; • Урок 2.8 - Сети; • Урок 2.9 - Внешнее хранилище; • Урок 2.10 - SSL сертификаты; • Урок 3.1 - Кластер: вводная; • Урок 3.1.2 - Кластер: подготовка нод; • Урок 3.2.1 - Кластер: добавление нод; • Урок 3.2.2 - Кластер: безопасность нод; • Урок 3.3 - Кластер: реплики нод; • Урок 3.4 - Кластер: HA; • Урок 4.1 - time drift; • Урок 4.2 - LB Proxy; • Урок 4.3 - LVM; • Урок 4.4 - Кеш; • Бекапим в облака. #Proxmox

Hashtags

DOFH - DevOps from hell

@dofh_ru · Post #3270 · 08.02.2024 г., 06:14

​​До появления Proxmox Backup Server я часто отдавал предпочтение при выборе гипервизора Hyper-V из-за того, что для Proxmox VE не было функционального инструмента для бэкапов VM, кроме его встроенного средства, которое делало только полные бэкапы. С выходом PBS этот вопрос был закрыт, причём бескомпромиссно. Предложенное решение было лучше, чем любое другое бесплатное. Так что связка Proxmox VE + PBS аналогов сейчас не имеет по удобству, простоте настройки и эксплуатации. Отдельно отметить и рассказать более подробно я хочу про Proxmox Backup Client. Это консольная утилита для Linux, которая позволяет делать бэкап на уровне файлов из виртуальной машины в PBS, даже если система находится на другом гипервизоре. То есть это полностью отвязанный от инфраструктуры Proxmox клиент, который позволяет складывать резервные копии в PBS. Таким образом этот сервер бэкапов может объединять в себе разнородную инфраструктуру. Сразу перечислю основные ограничения этого клиента: ▪ бэкап только на уровне файлов или образов дисков, не системы целиком; ▪ официальная поддержка только deb дистрибутивов, для rpm люди сами собирают пакеты, так как исходники открыты; ▪ нет поддержки windows, вариант бэкапа данных оттуда только один - монтирование диска по smb к linux машине и бэкап этого примонтированного диска. Использовать proxmox-backup-client очень просто. Я не буду подробно описывать его возможности, так как в оригинальной документации представлена исчерпывающая информация. Если хочется на русском, то можно обратиться к документации от altlinux. Кратко покажу пример установки и бэкапа. Ставим Proxmox Backup Client на Debian: # wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg # mcedit /etc/apt/sources.list.d/pbs-client.list Вставляем туда для Debian 12 deb http://download.proxmox.com/debian/pbs-client bookworm main Для Debian 11: deb http://download.proxmox.com/debian/pbs-client bullseye main Для Debian 10: deb http://download.proxmox.com/debian/pbs-client buster main Ставим клиента: # apt update && apt install proxmox-backup-client Теперь бэкапим корень сервера без примонтированных дисков. То есть делаем бэкап системы: # proxmox-backup-client backup root.pxar:/ --repository 10.20.1.47:main Здесь мы указали: ◽root.pxar - имя архива в формате pbs ◽/ - бэкапим корень системы ◽10.20.1.47 - адрес pbs сервера ◽main - имя datastore По умолчанию используется учётная запись root@pam, то есть дефолтный админ. Разумеется, на проде так делать не надо, потому что у него полные права, в том числе на удаление архивов. Делайте отдельные учётки для разных систем с ограниченными правами. В PBS это организовано удобно и просто, так что разобраться не трудно. Для указания имени пользователя, нужно использовать такой вид репозитория: user01@[email protected]. То есть мы указали созданного вручную пользователя user01@pbs. Для того, чтобы не вводить пароль пользователя вручную, можно задать его через переменную окружения PBS_PASSWORD. Смотреть содержимое бэкапов можно как через веб интерфейс, так и тут локально. Причём бэкап можно примонтировать через fuse. Сморим снэпшоты и выбираем любой для монтирования: # proxmox-backup-client snapshot list --repository 10.20.1.47:main # proxmox-backup-client mount host/debian12-vm/2024-02-06T19:19:12Z root.pxar --repository 10.20.1.47:main /mnt/backup Очень быстро и удобно. При желании бэкапы можно шифровать. #proxmox#backup

DOFH - DevOps from hell

@dofh_ru · Post #3851 · 03.09.2025 г., 12:20

Proxmox: привязка CPU к виртуальным машинам Не всегда очевидно, зачем вообще нужна привязка CPU к виртуальным машинам, особенно если речь идёт о небольших развертываниях - там этот параметр чаще всего просто игнорируют. Но в реальном продакшене использование CPU affinity становится действительно важным для повышения производительности виртуалок. https://telegra.ph/Proxmox-privyazka-CPU-k-virtualnym-mashinam-09-03 #ит_статьи#devops#proxmox#linux#numa