LINUX.ORG.RU

Сообщения steemandlinux

 

Как убрать этот старый бич линуксов right button to click

 ,

Какие-то наркоманы упорно толкают десятилетиями в линуксе клик правой кнопкой по контекстному, из-за чего тот же yakuake случайно закрывается, гробя все экспорты. Можно как-нибудь в plasma 6 убрать это поведение?

steemandlinux
()

Кто-нибудь под линуксом пользовался платами Asus ProArt?

 , , ,

У неё есть порт DP IN. Как оно будет работать и видеться в системе, если я внешнюю видеокарту, установленную в эту же материнскую плату воткну в DP IN, а монитор в HDMI OUT?

steemandlinux
()

Нужна версия питона в обновленном RHEL 8.

 ,

Кто может показать версию питона в 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

steemandlinux
()

Как энкапсулировать объект?

 ,

Как в 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(())
}
steemandlinux
()

Выловил последний глюк wayland на kwin, который был у меня.

 

Был странный глюк с мисфокусом (misfocus, misclick), когда после закрытия приложения xwayland внезапно по клику открывалось другое окно.

Это проблема electron, но не chromium. Исправляется через добавление аргументов --ozone-platform=wayland

Был ещё другой глюк, курсор в gtk приложениях менял размер. Это баг gtk, который упорно не желали исправлять. Исправляется либо обновлением на 4.18 или выше, либо export GDK_BACKEND=x11

steemandlinux
()

Как зависит поведение планировщика от приоритета?

 

Вот есть ассиметричные процессоры: 12 и 16 ядерные Ryzen X3D, Intel Core начиная с 12ххх и новее, ARM big.LITTLE based.

Влияет ли приоритет на распределение нагрузки по ядрам планировщиком? Например процесс с повышенным приоритетом будет выполняться на нормальных ядрах. Потому что я так понимаю, ядро об открытых окнах не знает ничего.

steemandlinux
()

А как посмотреть первые сообщения пользователя? Или less then 10000 error.

 

steemandlinux
()

Увеличить размер вывода konsole/yakuake

 , , ,

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

steemandlinux
()

Как перейти с Gnome/XFCE4 на Plasma не сломав хромого?

 , ,

Несколько раз запускал для теста плазму, но каждый раз профиль хрома гробился из kwallet. Как правильно настроить kwallet до запуска хрома, чтобы он подхватил хранилище, а не стёр его?

steemandlinux
()

Можно ли ещё лучше оптимизировать данную функцию?

 ,

Запилил тут сильно оптимизированную функцию поиска строки и штампа времени в базе данных 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;
}
steemandlinux
()

Как до блеклиста модуля запустить скрипт?

 

Есть файл с чёрным списком:

blacklist dwc2

Надо до его чтения запустить скрипт modinfo dwc2_dkms && echo "blacklist dwc2" > /etc/modprobe.d/blacklist_dwc2.conf

А потом уже прочитать blacklist_dwc2.conf

Как это можно сделать?

Или другой вопрос, как настроить приоритет модулей?

steemandlinux
()

Максимально прозрачный контейнер.

 

Как можно сделать контейнер с Alpine, чтобы я мог перейти в любой каталог своей хостовой ОС и запустить в нём команду из контейнера? Типа cd ~/projects/opcua_method_poc && gcc_alpine -lopen62541 client_method_async.c и в нём оказалась сборка под Alpine, а не хостовую систему?

steemandlinux
()

Какой быдлокод лучше для замены шаблона в словаре?

 

С точки зрения разработки, как лучше заменить шаблон:

  1. пройти рекурсивной функцией по словарю и заменить значение

  2. Завернуть в JSON, заменить, развернуть обратно в словарь?

steemandlinux
()

Питон полюбил ржавого и родили NULL pointer deference.

 ,

steemandlinux
()

Привязать раскладку к устройству.

 

Под иксами или в вейланде есть возможность привязать раскладку клавиатуры к устройству, чтобы при вводе с него был всегда английский язык?

steemandlinux
()

Git restore и git stash не убирают Changes not staged for commit:

 

Не могу убрать сообщение про сабрепозиторий:

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.

steemandlinux
()

Робот пылесос без майора с зонтом.

 

Потыкал тут три приложения: mi, roborock и dreame. Все требуют соединение с интернетом и регистрацию. Зная количество датчиков на роботах пылесосах, задумался, бывают ли пылесосы без товарищей из компартии или АНБ?

Гипотетическую ситуацию ESP32 на пылесосе + роутер ZTE/HUAWEI у соседей не учитываем.

steemandlinux
()

Чем грозит использование asyncio.Queue.put_nowait в синхронном коде?

 ,

Есть такой оверрайд для подсистемы логов:

    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 вне асинхронного контекста?

steemandlinux
()

Софт для кассового оборудования в баре под Linux в РФ

 

Подскажите, а существует адекватное ПО, которое работает под линуксом, для российского рынка, для кассы общепита?

Ну или хотя бы Android.

steemandlinux
()

Забрать hid устройство у системы, сохранив к нему доступ через hidapi

 

Есть устройство, как запретить иксы обращаться к нему, сохранив доступ к нему через 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)
steemandlinux
()

RSS подписка на новые темы