Кто-нибудь под линуксом пользовался платами Asus ProArt?
У неё есть порт DP IN. Как оно будет работать и видеться в системе, если я внешнюю видеокарту, установленную в эту же материнскую плату воткну в DP IN, а монитор в HDMI OUT?
У неё есть порт DP IN. Как оно будет работать и видеться в системе, если я внешнюю видеокарту, установленную в эту же материнскую плату воткну в DP IN, а монитор в HDMI OUT?
Кто может показать версию питона в 8-й шапке? Интересует, обновляют ли они минорные версии или он также уходит в EoS.
В общем патчи они завозят после EoS:
3.6.8-39.module+el8.10.0+20784+edafcd43|
Только я не понял, это в Альма:
platform-python-3.6.8-62.el8_10.alma.1.x86_64.rpm
Перемещено hobbit из general
Как в pyo3 rust завернуть несовместимый с python объект и вернуть его в пайтон? Мне надо вернуть client_channels не используя pyclass (просто представьте что я его использовал с внешнего моделя). sleep тут здесь для теста GIL.
use pyo3::{prelude::*, wrap_pyfunction};
use tokio;
struct ClientChannels {
vendor_id: u16,
product_id: u16,
}
#[pyfunction]
fn sleep(py: Python) -> PyResult<Bound<PyAny>> {
let client_channels = ClientChannels {
vendor_id: 1,
product_id: 2,
};
pyo3_async_runtimes::tokio::future_into_py(py, async move {
tokio::time::sleep(tokio::time::Duration::from_secs(3)).await;
Ok(client_channels)
})
}
#[pymodule]
fn libhidproxy(_py: Python, m: &Bound<'_, PyModule>) -> PyResult<()> {
m.add_function(wrap_pyfunction!(sleep, m)?)?;
Ok(())
}
Всё оказалось проще, достаточно указатель в виде целого вернуть.
use pyo3::{prelude::*, wrap_pyfunction};
use std::boxed::Box;
#[pyfunction]
fn create_client_channels() -> usize {
let client_channels = ClientChannels {
vendor_id: 1,
product_id: 2,
};
let boxed = Box::new(client_channels);
Box::into_raw(boxed) as usize
}
#[pyfunction]
fn get_vendor_id(ptr: usize) -> PyResult<u16> {
let channels = unsafe { &*(ptr as *const ClientChannels) };
Ok(channels.vendor_id)
}
#[pyfunction]
fn get_product_id(ptr: usize) -> PyResult<u16> {
let channels = unsafe { &*(ptr as *const ClientChannels) };
Ok(channels.product_id)
}
#[pyfunction]
fn free_client_channels(ptr: usize) -> PyResult<()> {
unsafe {
drop(Box::from_raw(ptr as *mut ClientChannels));
}
Ok(())
}
#[pymodule]
fn libhidproxy(_py: Python, m: &Bound<'_, PyModule>) -> PyResult<()> {
m.add_function(wrap_pyfunction!(create_client_channels, m)?)?;
m.add_function(wrap_pyfunction!(get_vendor_id, m)?)?;
m.add_function(wrap_pyfunction!(get_product_id, m)?)?;
m.add_function(wrap_pyfunction!(free_client_channels, m)?)?;
Ok(())
}
Был странный глюк с мисфокусом (misfocus, misclick), когда после закрытия приложения xwayland внезапно по клику открывалось другое окно.
Это проблема electron, но не chromium. Исправляется через добавление аргументов --ozone-platform=wayland
Был ещё другой глюк, курсор в gtk приложениях менял размер. Это баг gtk, который упорно не желали исправлять. Исправляется либо обновлением на 4.18 или выше, либо export GDK_BACKEND=x11
Вот есть ассиметричные процессоры: 12 и 16 ядерные Ryzen X3D, Intel Core начиная с 12ххх и новее, ARM big.LITTLE based.
Влияет ли приоритет на распределение нагрузки по ядрам планировщиком? Например процесс с повышенным приоритетом будет выполняться на нормальных ядрах. Потому что я так понимаю, ядро об открытых окнах не знает ничего.
https://www.linux.org.ru/search.jsp?range=COMMENTS&user=Bioreactor&sort=DATE&group=&offset=10000
Странное ограничение, это от L7 DoS?
Все настройки облазил, вроде такая очевидная функция, а найти как увеличить размер вывода логов в konsole не могу.
Несколько раз запускал для теста плазму, но каждый раз профиль хрома гробился из kwallet. Как правильно настроить kwallet до запуска хрома, чтобы он подхватил хранилище, а не стёр его?
Запилил тут сильно оптимизированную функцию поиска строки и штампа времени в базе данных sqlite. В данный момент эта функция расходует 75% процессорного времени. Вопрос, эта функция является оптимизированной в плане того, что сначала идёт выборка по time_t, а потом только по char?
int has_been_used(sqlite3 *db, const char *l_path, time_t epoch)
{
const char *sql = "SELECT 1 FROM files WHERE path = ? AND mtime = ?;";
sqlite3_stmt *stmt;
int rc, exists = 0;
rc = sqlite3_prepare_v2(db, sql, -1, &stmt, NULL);
if (rc != SQLITE_OK)
{
fprintf(stderr, "Failed to prepare statement: %s\n", sqlite3_errmsg(db));
return 0;
}
sqlite3_bind_text(stmt, 1, l_path, -1, SQLITE_STATIC);
sqlite3_bind_int64(stmt, 2, (sqlite3_int64)epoch);
rc = sqlite3_step(stmt);
sqlite3_finalize(stmt);
return rc;
}
Есть файл с чёрным списком:
blacklist dwc2
Надо до его чтения запустить скрипт modinfo dwc2_dkms && echo "blacklist dwc2" > /etc/modprobe.d/blacklist_dwc2.conf
А потом уже прочитать blacklist_dwc2.conf
Как это можно сделать?
Или другой вопрос, как настроить приоритет модулей?
Как можно сделать контейнер с Alpine, чтобы я мог перейти в любой каталог своей хостовой ОС и запустить в нём команду из контейнера? Типа cd ~/projects/opcua_method_poc && gcc_alpine -lopen62541 client_method_async.c и в нём оказалась сборка под Alpine, а не хостовую систему?
С точки зрения разработки, как лучше заменить шаблон:
пройти рекурсивной функцией по словарю и заменить значение
Завернуть в JSON, заменить, развернуть обратно в словарь?
По-любому cython виноват.
https://github.com/pyca/cryptography/security/advisories/GHSA-6vqw-3v5j-54x4
Под иксами или в вейланде есть возможность привязать раскладку клавиатуры к устройству, чтобы при вводе с него был всегда английский язык?
Не могу убрать сообщение про сабрепозиторий:
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
(commit or discard the untracked or modified content in submodules)
modified: modules/dclua/configs (modified content, untracked content)
Пробовал restore, stash, commit. Бесполезно :(
Из-за чего не могу выполнить stash apply.
Потыкал тут три приложения: mi, roborock и dreame. Все требуют соединение с интернетом и регистрацию. Зная количество датчиков на роботах пылесосах, задумался, бывают ли пылесосы без товарищей из компартии или АНБ?
Гипотетическую ситуацию ESP32 на пылесосе + роутер ZTE/HUAWEI у соседей не учитываем.
Есть такой оверрайд для подсистемы логов:
def emit(self, record):
"""Overwrite emit method to publish logs to MQTT."""
msg = self.format(record)
try:
self.logs_bridge_queue.put_nowait(msg)
except asyncio.QueueFull:
self.logs_bridge_queue.get_nowait()
self.logs_bridge_queue.put_nowait(msg)
C другой стороны приёмник:
while True:
msg = await self.logs_bridge_queue.get()
В документации написано:
Although asyncio queues are not thread-safe, they are designed to be used specifically in async/await code.
Я не могу понять, что они имеют в виду под thread-safe. Все функции вне асинхронного контекста или только threading?
И чем может грозить использование asyncio.Queue вне асинхронного контекста?
Подскажите, а существует адекватное ПО, которое работает под линуксом, для российского рынка, для кассы общепита?
Ну или хотя бы Android.
Есть устройство, как запретить иксы обращаться к нему, сохранив доступ к нему через hipapi.
Я пробовал:
echo "0003:0EB8:EA00.0049" | sudo tee /sys/bus/hid/drivers/hid-generic/unbind
и
SUBSYSTEM=="usb", DRIVER=="usbhid", ATTRS{idVendor}=="0eb8", ATTRS{idProduct}=="ea00", ATTR{authorized}="0"
В обоих случаях терял доступ через hidapi.
[680907.803898] usb 3-1.2: new high-speed USB device number 86 using xhci_hcd
[680907.895167] usb 3-1.2: New USB device found, idVendor=0eb8, idProduct=ea00, bcdDevice= 1.00
[680907.895171] usb 3-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[680907.895174] usb 3-1.2: Product: SevenCompact pH/Ion S220
[680907.895176] usb 3-1.2: Manufacturer: METTLER TOLEDO
[680907.895177] usb 3-1.2: SerialNumber: XXXXXX
[680907.898125] input: METTLER TOLEDO SevenCompact pH/Ion S220 as /devices/pci0000:00/0000:00:01.3/0000:02:00.2/0000:03:00.0/0000:04:00.0/usb3/3-1/3-1.2/3-1.2:1
==> /sys/bus/hid/drivers/hid-generic/0003:0EB8:EA00.0049/input/input81/name <==
METTLER TOLEDO SevenCompact pH/Ion S220
Bus 003 Device 086: ID 0eb8:ea00 Mettler Toledo SevenCompact pH/Ion S220
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x0eb8 Mettler Toledo
idProduct 0xea00
bcdDevice 1.00
iManufacturer 1 METTLER TOLEDO
iProduct 2 SevenCompact pH/Ion S220
iSerial 3
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x0029
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 4 Full Speed Configuration
bmAttributes 0x80
(Self Powered)
MaxPower 100mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 1 Boot Interface Subclass
bInterfaceProtocol 1 Keyboard
iInterface 5 HID Interface
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.01
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 63
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0008 1x 8 bytes
bInterval 4
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0008 1x 8 bytes
bInterval 4
Device Qualifier (for other device speed):
bLength 10
bDescriptorType 6
bcdUSB 2.00
bDeviceClass 0
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
bNumConfigurations 1
can't get debug descriptor: Resource temporarily unavailable
Device Status: 0x0000
(Self Powered)
Вот интересно, скачал я ESP-IDF SDK. Собрал образец, который в конце мне выдал сообщение:
esptool.py -p (PORT) -b 460800 --before default_reset --after hard_reset --chip esp32 write_flash --flash_mode dio --flash_size 2MB --flash_freq 40m 0x1000 build/bootloader/bootloader.bin 0x8000 build/partition_table/partition-table.bin 0x10000 build/oneshot_read.bin
А для чего ему параметры?
--flash_size 2MB --flash_freq 40m
Неужели оно исполнение на месте не поддерживает как те же stm32?
| следующие → |