LINUX.ORG.RU

Избранные сообщения zoroaster

А вот зачем программистам нужен матан!

Форум — Talks

Нет, нет, да и брякнет кто-то, что не нужно. Навеяло топиком Столько просмотрщиков картинок... И ни одного годного

Крайне желательно изучать, чтобы хотя бы знали какие есть штуки, которые могут быть полезными в практической работе с данными. Даже хотя бы приблизительно, что вообще есть разные методы и чем они могут быть хороши/плохи. Например, сплайны и другие методы интерполяции.

 ,

praseodim
()

Ушат помоев в сторону крестолюбов

Форум — Development

Восседая в уютненьком кресле с чашечкой сладкого чая, внезапно ощутил приток жопной боли напополам с лирическим настроением и решил излить сию благодать куда руки дотянулись.

Последние 7 лет я пишу сугубо на C, и только под Linux (да, да -std=gnu99 и accept4, dup3, __attribute__((cleanup(dtor))) и прочие приятности, позволяющие сделать волосы шелковистее на 15.5%) и не понимаю, для чего вообще нужен C++? То, что на сишке делается красиво и элегантно, в крестах напоминает соитие парализованных дцпшников (к сожалению, утерял картинку, но именно этот образ всплывает в голове, когда вижу очередную порцию крестолапши).

Давайте посмотрим на типичного C++ разработчика: он использует STL, boost, многие любят Qt (не только для GUI), якобы чтобы «писать кроссплатформенный код». В итоге болезный не знает током ни WinAPI, ни POSIX — ничерта. Он абсолютно не разбирается, как работает целевая система, для которой пишет код! Крестокодер просто не осознает, какой лютый ужас кроется за его любимыми iostream-ами, какое лютое говно лежит в boost::filesystem::path, насколько убого-низкоуровневым является boost::asio в 2016 году.

Только крестораб может эпично обосраться и просадить производительность, забыв передавать по ссылке параметры для «горячих» функций (то есть, просто забыв написать «&» в нужном месте).

Также эти убогие завистливо смотрят на type inference в языках, проектировавшихся не как «C на стероидах», и в ответ начинают лепить template и auto не к месту, от чего код адово пухнет и даже IDE перестает его понимать.

Серьезно, просто прекратите писать на этом языке. В следующий раз, начиная новый проект, выберите java (щютка)/go/swift/rust/c. Прекратите насиловать труп и отравлять зловонием все вокруг!

Перемещено true_admin из talks

 , , ловите наркомана,

kawaii_neko
()

Не получается создать правило для udev

Форум — Linux-hardware

Перейду сразу к делу. При подключении/отключении некоторых USB устройств должен выполняться какой-то скрипт. Пусть это будут USB мыши. udevadm monitor --env при подключении мыши выдаёт кучу всякой каши, я выбираю следующее:

UDEV  [3972.485338] add      /devices/pci0000:00/0000:00:14.0/usb2/2-2/2-2:1.0/0003:046D:C05F.000C/input/input28/mouse2 (input)
.INPUT_CLASS=mouse
.MM_USBIFNUM=00
ACTION=add
DEVLINKS=/dev/input/by-id/usb-Logitech_USB_Optical_Mouse-mouse /dev/input/by-path/pci-0000:00:14.0-usb-0:2:1.0-mouse
DEVNAME=/dev/input/mouse2
DEVPATH=/devices/pci0000:00/0000:00:14.0/usb2/2-2/2-2:1.0/0003:046D:C05F.000C/input/input28/mouse2
ID_BUS=usb
ID_INPUT=1
ID_INPUT_MOUSE=1
ID_MODEL=USB_Optical_Mouse
ID_MODEL_ENC=USB\x20Optical\x20Mouse
ID_MODEL_ID=c05f
ID_PATH=pci-0000:00:14.0-usb-0:2:1.0
ID_PATH_TAG=pci-0000_00_14_0-usb-0_2_1_0
ID_REVISION=5300
ID_SERIAL=Logitech_USB_Optical_Mouse
ID_TYPE=hid
ID_USB_DRIVER=usbhid
ID_USB_INTERFACES=:030102:
ID_USB_INTERFACE_NUM=00
ID_VENDOR=Logitech
ID_VENDOR_ENC=Logitech
ID_VENDOR_ID=046d
MAJOR=13
MINOR=34
SEQNUM=3078
SUBSYSTEM=input
USEC_INITIALIZED=3972254002

Я так понимаю, для всех мышей нужно указать ключи KERNEL="mouse*" и SUBSYSTEM="input". В итоге получается что-то вроде этого:

SUBSYSTEM=="input", KERNEL=="mouse*", ACTION=="add", RUN+="/home/common/scripts/xswitch 'DLLC6AD:00 06CB:75BF Touchpad'"
SUBSYSTEM=="input", KERNEL=="mouse*", ACTION=="remove", RUN+="/home/common/scripts/xswitch 'DLLC6AD:00 06CB:75BF Touchpad'"

И всё. Если перезагрузить udev service udev restart нужного эффекта не происходит. Пробовал запускать udevadm test /devices/pci0000:00/0000:00:14.0/usb2/2-2/2-2:1.0/0003:046D:C05F.000C/input/input28/mouse2, он даёт следующий выхлоп:

... МНОГА "Reading rules file:", затем ...
rules contain 393216 bytes tokens (32768 * 12 bytes), 36838 bytes strings
24589 strings (207569 bytes), 20980 de-duplicated (174341 bytes), 3610 trie nodes used
value '[dmi/id]sys_vendor' is 'Dell Inc.'
value '[dmi/id]sys_vendor' is 'Dell Inc.'
IMPORT builtin 'input_id' /lib/udev/rules.d/50-udev-default.rules:14
capabilities/ev raw kernel attribute: 17
capabilities/abs raw kernel attribute: 0
capabilities/rel raw kernel attribute: 103
capabilities/key raw kernel attribute: 70000 0 0 0 0
properties raw kernel attribute: 0
test_key: checking bit block 0 for any keys; found=0
test_key: checking bit block 64 for any keys; found=0
test_key: checking bit block 128 for any keys; found=0
test_key: checking bit block 192 for any keys; found=0
GROUP 135 /lib/udev/rules.d/50-udev-default.rules:30
IMPORT builtin 'usb_id' /lib/udev/rules.d/60-persistent-input.rules:7
/sys/devices/pci0000:00/0000:00:14.0/usb2/2-2/2-2:1.0: if_class 3 protocol 0
LINK 'input/by-id/usb-Logitech_USB_Optical_Mouse-mouse' /lib/udev/rules.d/60-persistent-input.rules:22
IMPORT builtin 'path_id' /lib/udev/rules.d/60-persistent-input.rules:31
LINK 'input/by-path/pci-0000:00:14.0-usb-0:2:1.0-mouse' /lib/udev/rules.d/60-persistent-input.rules:32
RUN '/home/common/scripts/xswitch 'DLLC6AD:00 06CB:75BF Touchpad'' /etc/udev/rules.d/99-local.rules:1
handling device node '/dev/input/mouse2', devnum=c13:34, mode=0660, uid=0, gid=135
preserve permissions /dev/input/mouse2, 020660, uid=0, gid=135
preserve already existing symlink '/dev/char/13:34' to '../input/mouse2'
found 'c13:34' claiming '/run/udev/links/\x2finput\x2fby-id\x2fusb-Logitech_USB_Optical_Mouse-mouse'
creating link '/dev/input/by-id/usb-Logitech_USB_Optical_Mouse-mouse' to '/dev/input/mouse2'
preserve already existing symlink '/dev/input/by-id/usb-Logitech_USB_Optical_Mouse-mouse' to '../mouse2'
found 'c13:34' claiming '/run/udev/links/\x2finput\x2fby-path\x2fpci-0000:00:14.0-usb-0:2:1.0-mouse'
creating link '/dev/input/by-path/pci-0000:00:14.0-usb-0:2:1.0-mouse' to '/dev/input/mouse2'
preserve already existing symlink '/dev/input/by-path/pci-0000:00:14.0-usb-0:2:1.0-mouse' to '../mouse2'
.INPUT_CLASS=mouse
.MM_USBIFNUM=00
ACTION=add
DEVLINKS=/dev/input/by-path/pci-0000:00:14.0-usb-0:2:1.0-mouse /dev/input/by-id/usb-Logitech_USB_Optical_Mouse-mouse
DEVNAME=/dev/input/mouse2
DEVPATH=/devices/pci0000:00/0000:00:14.0/usb2/2-2/2-2:1.0/0003:046D:C05F.000C/input/input28/mouse2
ID_BUS=usb
ID_INPUT=1
ID_INPUT_MOUSE=1
ID_MODEL=USB_Optical_Mouse
ID_MODEL_ENC=USB\x20Optical\x20Mouse
ID_MODEL_ID=c05f
ID_PATH=pci-0000:00:14.0-usb-0:2:1.0
ID_PATH_TAG=pci-0000_00_14_0-usb-0_2_1_0
ID_REVISION=5300
ID_SERIAL=Logitech_USB_Optical_Mouse
ID_TYPE=hid
ID_USB_DRIVER=usbhid
ID_USB_INTERFACES=:030102:
ID_USB_INTERFACE_NUM=00
ID_VENDOR=Logitech
ID_VENDOR_ENC=Logitech
ID_VENDOR_ID=046d
MAJOR=13
MINOR=34
SUBSYSTEM=input
USEC_INITIALIZED=3972254002
run: '/home/common/scripts/xswitch 'DLLC6AD:00 06CB:75BF Touchpad''
Unload module index
Unloaded link configuration context.

То есть моё моё правило он с устройством вроде как сопоставил, добавил скрипт на выполнение. Не могу понять что означает «Unload module index Unloaded link configuration context.». Насколько я понял скрипт не выполняется (во всяком случае побочного эффекта я не вижу).

Машинка бегает под Ubuntu 16.04. Рассчитываю на вашу помощь, заранее спасибо.

 

zoroaster
()