LINUX.ORG.RU

Сообщения ls-h

 

ВОЗ объявил коронавирус глобальной чрезвычайной ситуацией

Форум — Talks

https://www.bbc.com/news/world-51318246
https://meduza.io/news/2020/01/30/voz-ob-yavila-vspyshku-koronavirusa-mezhdun...

В Москве первые случаи?
https://www.mk.ru/incident/2020/01/30/telegramkanal-v-moskve-zafiksirovan-per...

В Нижний новгород привезли больного китайского хоккеиста:
http://www.nn.ru/news/more/kitayskogo_khokkeista_s_virusnoy_infektsiey_gospit...
«Интересно, что матч Китая с Рязанью должен был пройти на территории КНР, но из-за коронавируса его перенесли в Россию.» — молодцы!

Два случая официально подтвердили (Голикова):
https://tass.ru/obschestvo/7656549

Не знаю, при чём тут Linux...

 , , ,

ls-h
()

Кто поддержит Nginx?

Форум — Talks

На Хабре предложили идею, как поддержать Игоря Сысоева:
https://habr.com/ru/post/480204/

В новость писать не стал, т.к. там уже туева хуча комментариев, никто не заметит.

 , ,

ls-h
()

Что происходит с Яндексом?

Форум — Talks

Может быть я плохо искал по форуму, но, мне кажется, новость прошла мимо.

Ъ:Yandex раскрыл подробности взаимоотношений с новым Фондом общественных интересов, который получит влияние на принятие стратегических решений в компании. Фонд сможет блокировать приобретение кем-либо более 10% акций Yandex, влиять на избрание половины членов совета директоров компании, управлять вопросами передачи персональных данных россиян зарубеж и, в случае возникновения угрозы национальной безопасности, отстранять гендиректора российского «Яндекса».


https://www.cnews.ru/news/top/2019-11-21_glavu_yandeksa_smogut_otstranit

 , ,

ls-h
()

OpenCV, обработка событий оконной системы и файловые дескрипторы

Форум — Development

Решение проблемы: OpenCV, обработка событий оконной системы и файловые дескрипторы (комментарий)


Привет всем!

Сразу говорю, хочется достаточно странного. Собственно в тегах это и указано. Пишу на Python небольшую софтинку с использованием OpenCV. Кроме обработки изображений OpenCV используется и для GUI. Это удобно, особенно в процессе отладки, т.к. не возникает необходимости в дополнительных манипуляциях с картинкой перед отображением, а можно просто показать с помощью cv2.imshow(). Да, я знаю, что модуль High-level GUI не предназначен для сложных интерфейсов и об этом прямо говорится в документации.

Проблема в том, что для работы GUI из OpenCV надо периодически дёргать cv2.waitKey(). Обычно это делается в цикле while True:. Но у меня есть другие источники событий, работа с которыми осуществляется через файловые дескрипторы. Т.е. цикл обработки событий через select / poll / epoll. Логичным было бы файловый дескриптор от unix-сокета, соответствующего подключению к X11-серверу добавить в этот цикл обработки событий и cv2.waitKey() вызывать только тогда, когда там есть данные, а не по таймауту или в цикле while True:.

Возникает вопрос. Как узнать номер нужного файлового дескриптора? Есть посмотреть содержимое /proc/self/fd/, то там явно есть нужный дескриптор:

0 -> /dev/pts/1
1 -> /dev/pts/1
2 -> /dev/pts/1
3 -> anon_inode:[eventfd]
4 -> pipe:[576490]
5 -> pipe:[576490]
6 -> socket:[576491]
7 -> socket:[576492]

Дескрипторы с номером больше 2 открываются после вызова cv2.namedWindow(). Как узнать, какой из них какой?

Как вообще в общем случае узнать какому объекту файловой системы соответствует ссылка вида socket:[number] в /proc/self/fd/?

 , ,

ls-h
()

Бывший мэр Мюнхена: «Microsoft ненавидит Linux»

Форум — Talks

https://www.linux-magazin.de/ausgaben/2019/10/interview-2/
http://techrights.org/2019/11/09/christian-ude-on-microsoft/

Бывший мэр Мюнхена Кристиан Уде дал интервью, в котором рассказал как Microsoft борется против использования GNU/Linux и другого свободного программного в правительственных учреждениях Европы, какими способами продвигает Windows и средства слежения за пользователями.

P.S.: Если кто силён в немецком, может переведёт и запилит как новость?

 , ,

ls-h
()

Аффинные преобразования в OpenCV и MXNet

Форум — Development

Привет всем!

Есть, значит, у меня картинка и матрица аффинных преобразований для неё. Нужно исказить картинку и обрезать под требуемый размер. Сейчас это делается так:

result = cv2.warpAffine(img, affine_matrix, (target_w, target_h), borderValue=0.0)
и всё работает. Но не быстро, т.к. на процессоре. В приложении много где используется фреймворк MXNet, который может ускоряться на GPU. Прямого аналога для warpAffine я там не нахожу. Результаты гугления по теме очень скудны, нашлось только немного документации c одним примером. В принципе, это то, что нужно, замена выглядит как-то так:
grid = mx.ndarray.GridGenerator(data=affine_matrix, transform_type='affine', target_shape=(original_h, original_w))
img_nchw = mx.ndarray.array(img)
img_nchw = img_nchw.transpose((2, 0, 1))
img_nchw = mx.ndarray.expand_dims(img_nchw, 0)
result = mx.ndarray.BilinearSampler(img_nchw, grid)
(Понятно, что картинку потом надо превести к прежнему виду, сделать transpose, squeeze...)

Но есть большая проблема: GridGenerator надо передавать совсем не такую матрицу, как в warpAffine. Некоторые элементы матрицы достаточно понятно преобразуются в вид для GridGenerator. Например, в warpAffine увеличение в два раза задаётся как 2, а для GridGenerator - 0.5. Это работает, если задавать только данные элементы, без искажений. А вот с коэффициентами для искажений не понятно совсем, подобрать их не получается.

Может быть кому-то попадалась внятная документация по mx.ndarray.GridGenerator с примерами?

P.S.: Да, можно найти другие варианты, вместо MXNet для издевательств над картинками силами GPU. Но не хочется увеличивать количество зависимостей. Кроме того, MXNet используется много для чего и важно сохранить контекст размещения данных, т.е. чтобы массивы не надо было пересоздавать.

 , , , ,

ls-h
()

Разделяемая память для процессов на Python и не только.

Форум — Development

Привет всем!

Есть большое многопроцессное приложение, с рабочими процессами, всякими GUI и логгерами в отдельных процессах и т.д. Построено с использованием модуля multiprocessing. Рабочие процессы обрабатывают большие данные. Для больших данных используется multiprocessing.Array, вот так:

class Worker(mp.Process):
    def __init__(self, buffers, pipe, other):
        super().__init__()
        self._buffers = buffers
        self._pipe = pipe
    def run(self):
        param = get_message(self._pipe)
        big_calculations(self._buffers[param.a], param.b, ...)

buffers = []
for i in range(10):
    buffers.append(mp.Array(ctypes.c_uint8, buffer_size, lock=False))
...
for i in range(10):
    p1, p2 = mp.Pipe()
    worker = Worker(buffers, p1, other_param)
    worker.start()
Синхронизация от mp.Array не требуется, процессы синхронизируются с помощью посылки/отправки сообщений через p1/p2, поэтому lock=False.

Вопросы:
* Размер/количество буфера(ов) задаются до запуска рабочих процессов. Как правильно реализовать изменение количества/размера после того, как рабочие процессы уже стартовали? Т.е. понятно, как отправить сообщение. Непонятно как закрыть существующий буфер и открыть новый.
* Что у mp.Array под капотом? Я заметил, что python открывает много файлов с именами вида /tmp/pymp-ixc54qx7/pym-27111-h7wi_sy3. Это как-то связано с mp.Array?
* Очень желательно, чтобы к этой общей памяти можно было обращаться не только из процессов на Python. Возможно как-либо её открыть из другого стороннего процесса, написанного на чём-то ещё? Может быть мне тогда что-то другое использовать, а не mp.Array?

Аналогичные вопросы про mp.Pipe():
* Как в работающий процесс передать конец новой трубы?
* Как передать в не Python'овский процесс конец трубы?

Спасибо!

 , , , ,

ls-h
()

Вешается диалог открытия файла

Форум — Development

Привет всем!

Пишу приложение на Python+GTK. Наблюдаю очень странный баг, который не проявляется на одном компе и проявляется на другом. На втором он не сразу стал проявляться, а появился только недавно. При этом код моего приложения не менялся, обновлений систем не было. На обоих машинах одинаковая Ubuntu 18.04.

Из приложения надо открыть обычный диалог выбора файла:

dialog = Gtk.FileChooserDialog("Dialog", self._gui_main_window, action=Gtk.FileChooserAction.OPEN)
print("New dialog!")
response = dialog.run()
...
При этом выполнение программы наглухо вешается на первой строке, т.е. ещё до вызова response = dialog.run() и даже print не отрабатывает. Через секунд 30 в консоль выводится сообщение:
Error creating proxy: Error calling StartServiceByName for org.gtk.vfs.UDisks2VolumeMonitor: Timeout was reached (g-io-error-quark, 24)
И всё... Дальше глухо висит, диалог так и не показывается, основное окно перестаёт перерисовывать себя при изменении размеров. Если нажать Ctrl+C, то главное окно продолжает висеть, хотя консоль освобождается. Убивается через обычный kill.

Что интересно, если приложение запускать без всякой сессии, просто xterm и Xorg, то всё работает как надо, диалог открывается. А в полноценной сессии (пробовал GNOME и XFCE) случается описанный выше зависон.

Я погуглил и нашёл отдалённо похожее поведение: https://gitlab.gnome.org/GNOME/gtk/issues/1066 тут в консоль выводится аналогичное сообщение. Но, у меня этот баг срабатывает только в одном приложении (на Python, которое я пишу), в других приложениях всё нормально. /etc/fstab не содержит сетевых монтирований.

Куда копать?

=== UPD ===
Запустил с отладкой сообщений D-Bus. Перед зависанием вот что выводится в консоль:
GDBus-debug:Call:
 <<<< ASYNC COMPLETE org.freedesktop.DBus.StartServiceByName() (serial 0)
      FAILED: Timeout was reached
Как бы вообще отключить любое общение по D-Bus для GTK в рамках моего приложения? Мне оно нафиг не надо, как и UDisks2. У меня задача выбрать локальный файл.

=== UPD 2 ===
Заработало после того, как убрал из переменной GTK_MODULES запись «appmenu-gtk-module».
Вот такое содержимое данной переменной в стандартной сессии:
GTK_MODULES=appmenu-gtk-module:appmenu-gtk-module:gail:atk-bridge
, при этом не работает. А вот так:
GTK_MODULES=gail:atk-bridge
- работает.

Пока не отмечаю задачу решённой, т.к. связь одного с другим непонятная.

 , ,

ls-h
()

Резервирование памяти для определённых процессов.

Форум — Desktop

Привет всем!

Последнее время часто попадаются новости и обсуждения относительно работы GNU/Linux в условиях нехватки памяти. Встроенный в ядро OOM-Killer, более гибкий вариант из пространства пользовательских процессов... есть разные способы прибить разжиревшее приложение.

А нет ли возможности пойти с другой стороны? Для группы процессов зарезервировать место в оперативной памяти. Например, чтобы процессы, составляющие DE (оконный и файловый менеджеры, терминал, т.д.) + базовые утилиты консоли) всегда имели резерв мегабайт 500. И этот резерв не могли бы использовать другие процессы.

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

 , , ,

ls-h
()

Граф состояний в приложении на GTK

Форум — Development

Приветствую, товарищи!

Пишу значит я на Python (хотя, думаю не суть) frontend к некоему подобию базы данных. Интерфейс рисую в Glade. Ничего особо сложного, просто множество списков свойств, полей ввода и т.п. Штука в том, что у формы есть состояния: просмотр, редактирование набора свойств A, редактирование набора свойств B и т.д. Они взаимоисключающие, переход между ними заключается в скрытии/отображении и активации/блокировании разных виджетов. Переход заключается в вызовах методов hide(), show(), set_sensitive(). И строчек таких вызовов получается около 300. Это немного, но и само приложение пока в состоянии прототипа. Потом элементов формы будет многократно больше.

Возможно ли состояния отрисовать в Glade, а потом переходить между ними одним вызовом с названием состояния?
Что-то я такого не нашёл.

 , , ,

ls-h
()

Мошенники и Сбербанк

Форум — Talks

Привет всем!

Рано утром позвонил и разбудил подозрительный товарищ:
«ls-h, с вашей карты была попытка мошеннического перевода. Некто из другого города вошёл в ваш личный кабинет Сбербанка и пытался перевести деньги в Урюпинск Василию Пупкину. Мы, доблестная служба безопасности, всё предотвратили. Но нам надо проверить, что вы это вы. Назовите сумму последнего платежа и баланс по карте иначе мы заблокируем ваш счёт». СМС о входе в ЛК, конечно же, не приходило.

Товарищ был послан. Это я спросонья зря так сделал, не сообразил. Надо было сказать левую сумму и неправильный остаток и посмотреть, что будет дальше. Позвонил в Сбер, они предложили не делать ничего, по их словам данных недостаточно. Какой смысл в таких данных, они мне не сказали.

Теперь вот интересно стало, что можно сделать, если знать сумму последнего платежа и остаток на карте? Так же, собственно, им известно моё ФИО, город проживания и наличие карты Сбера (ну, тут можно просто наугад, они много у кого есть).
Я могу предположить, что дальше должна была быть какая-то атака на настоящую службу поддержки. Но вот что может дать служба поддержки по ФИО+адрес+сумма платежа+баланс? Привязать другой номер к мобильному банку? Или что? Может быть знает кто?

P.S.: Номер: +7 495 005 56 15

 , , , ,

ls-h
()

Как найти, кто использует подсистему (модуль) ядра?

Форум — General

Привет всем!

На телефоне (Asus Zenfone 2) в топе постоянно висит процесс "[hwrng]" и грузит одно ядро на 100%. Прошивка LineageOS 16. Ядро: Linux 3.10.108-Minimal #1 SMP PREEMPT Sun Apr 14 10:24:02 UTC 2019 aarch64. Поискал на профильных форумах, не нашёл ничего.

Я так понимаю, это какая-то подсистема (модуль?) генератора случайных чисел. Хотя, скорее всего, это не модуль, т.к.:

# lsmod                                                                     
lsmod: No file /proc/modules: No such file or directory
Соответствующего файла устройства не обнаружено:
# ls -l /dev/hwrng
ls: /dev/hwrng: No such file or directory
Как узнать из-за чего hwrng потребялет так много ресурсов?
Какой-то процесс постоянно генерирует случайные числа? Как узнать, какой?
Вопрос задаю сюда, а не в Mobile, т.к. вопрос, как мне кажется, не сильно привязан к Android, а скорее про Linux вообще.

 , , , ,

ls-h
()

ГНОМЭ!

Форум — Talks

И Nautilus. Давно пользуюсь, но всё хуже и хуже...

Почему в корень надо ходить через «Other locations -> Computer»?
А если зайти в директорию, которая находится внутри домашней, то из пути сверху корень пропадает. При этом нет кнопки «Наверх», а есть только «Назад» и «Вперёд». Экономия места? Тогда почему кнопки прокрутки пути висят всегда, даже если путь влезает? Где логика? Её нет, её съел HIG.

Как нормально ходить вверх? Да, можно нажимать Alt+⇧. Но это неудобно делать одной рукой. Правда это давнишнее «удобство», но всё же. Shortcuts можно посмотреть в меню «Files -> Keyboard Shortcuts», но там ничего нельзя поменять. А ведь когда-то давно, когда в GTK приложениях были нормальные меню сверху, для любого можно было менять Shortcuts для любого пункта. О самом меню ещё позже...

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

Раньше была быстрая навигация по содержимому директории. Можно было напечатать начало названия файла и сразу перейти к нему. А теперь запускается убогий поиск.

Очень убогий поиск. Есть выбор параметров поиска «Full text» и «File name», при этом одна строка ввода. Как тут искать, если текст внутри файла и имя искомого файла не одно и тоже?

Nautilus тупит. Вечно какие-то проблемы с обновлением содержимого директории если в неё происходит запись другой программой. Когда обновляет, а когда надо вручную. И это я про локальную директорию говорю. Иногда он тупит ещё прикольнее: открываю директорию с тремя файлами, он показывает только два и надпись «Loading...» внизу.

Странности в отображении файлов. Для символьных ссылок на файлы .so не показывается значок символьной ссылки. Для директорий и для других файлов - показывается. Что за прикол?

Меню. Это относится не только к Nautilus, но и к другим приложениям. Что за изнасилование идеи глобального меню? Меню типа macOS можно понять и оправдать лёгкостью попадания мышкой по пунктам, т.к. мышку можно просто толкнуть до края экрана. Тут же всё меню поделено на две части: сверху в панельке и в гамбургере внутри окна. Очень удобно! Пока не нажмёшь, не видно где какие пункты. В macOS есть поиск по пунктам меню, раньше в Unity такое тоже было. Зачем выпилили удобную вещь? Ах, да! Пункты меню же тоже все выпилили. Меню-гамбургер отвратительное! При открытии подменю оно открывается не рядом с родительским, а вместо. И быстро пробежаться по пунктам уже не получится.

Диалоги прибитые к родительским окнам. Какой HIG-онатик это придумал? Как во время открытого диалога, например, посмотреть что-то в основном окне приложения?

 ,

ls-h
()

Мой прекрасный ЛОР!

Форум — Talks

Трям!

Хочу свой ЛОР. Ты тоже хочешь свой ЛОР, и он хочет свой ЛОР. Все хотят.

И опять и опять звучат предложения «добавить возможность вставлять SVG изображения» (соседний топик, был соседний, пока тему не перенесли из раздела «linux-org-ru»), «добавить ёможи», «убрать ёможи», «новая тема», «древовидное представление», «пусть ссылки на картинки открываются в попапах». Так пусть же они исполнятся все и никто не уйдёт обиженным!

Гениальное предложение:
+ Каждому ЛОРчанину - возможность загружать себе html+js+css, выделить на это по 1 МиБ. Ну, можно не всем, а начиная с определённого уровня ★-нутости.
+ Сделать API для получения списка тем, комментариев, добавления, редактирования, т.п.

Профит:
! Каждый сможет сам себе сделать фичу, тему, более удобное представление...
! Быстрое развитие сайта, без вот этого вот «позязя, добавьте возможность»
! Обмен шаблонами в отдельном разделе, совместная разработка - отличный повод полить фекалиями код товарища для дружеского общения!
! Новый раздел галереи «Мой ЛОР» круче вашего
! Уникальность. Ни на каком форуме такого нет. Должен же лор чем-то выделяться, кроме эпичности срачей.

Предпосылки:
Я вот не могу читать и разводить срачибез древовидного представления. Да, есть скриптик, LORTreeView. Но его надо везде с собой носить, устанавливать. А без него так блеват и кидат неудобно очень! Вот и в соседней теме на предложение по показу картинок отвечают «Прикрути себе user script». Но это же костыль жуткий. У меня при использовании LORTreeView часто мелькает оригинальная страница до того, как скрипт успеет её переделать. И это печалит!


Перемещено Shaman007 из linux-org-ru

 , ,

ls-h
()

Правильного монтирования, печалей и страдания пост.

Форум — Desktop

Приветствую, ЛОРчане!

Начну с вопроса:
Где правильно создавать директории для монтирования от имени пользователя?
Например, надо мне получить доступ к удалённой файловой системе через sshfs, куда подмонтировать? Я было подумал, что в /media/$USERNAME. Не зря же сделали в /media поддиректорию $USERNAME. Но нет, владелец у /media/$USERNAME есть root:root - «permission denied».
Смонтировал в ~/.local/mnt/$REMOTE_MACHINE_NAME.
Где это делать по фэн-шую?

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

У GNOME есть своя балалайка подсистема GVfs для монтирования удалённых FS, различных архивов, образов дисков и т.п. И (Ура!) к подмонтированному содержимому можно получить доступ из любой программы через директорию /run/user/$UID/gvfs/. Т.е. это нормальное монтирование, можно удобно из терминала что-то сделать. А ещё файловые менеджеры показывают смонтированный ресурс в боковой панели. Но оно тормозное и путь к точке монтирования длинный достаточно. Почему в /run/user/$UID/gvfs/? Что это за место такое? Ну и без GNOME как его смонтировать?

Из-за медлительности варианта из GNOME пришлось переключиться на sshfs. Работает быстрее, но окружение рабочего стола про такое монтирования уже ничего не знает. Смонтировать/размонтировать можно только через терминал. Но быстрее, да.

Есть также KDE со своим KIO. Работает бодро, но эти «монтирования» видны только приложениям из KDE и никому больше, т.к. не монтирования это вовсе, а какие-то костыли кривые. С Midnight Commander - аналогично.

Где же единое средство, чтобы из терминала и из GUI можно было монтировать и размонтировать (именно монтировать, а не как в KIO) одинаково удобно любые файловые системы, удалённые и локальные, архивы, образы дисков и прочие штуки? Чтобы при этом окружение рабочего стола знало про это.


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

 , , , ,

ls-h
()

ЛОР, посоветуй годную мышь!

Форум — Talks

Привет, ЛОРчане!

Сразу хочу уточнить, я ищу мышь. Не тачпад, не трекбол, не клавиатуру с пипкой-теребонькой, а мышь. А то бывает, спросишь тут совета о покупке, и начинается: «Это тебе не надо, я знаю!», «У меня вообще руль и мне так удобно» и т.п.

Чего хочется:
* Большая. Длина от 125мм или около того. Не то, чтобы у меня огромная рука, но когда кисть полностью лежит, это гораздо удобнее, чем зажимать мелкую мышь.
* Под правую руку. Но можно и симметричную.
* Беспроводная. У меня на столе часто навалено непойми что, поэтому провод будет цепляться, мешаться. С беспроводной свободы больше. В соревновательные шутеры я не играю, дополнительный лаг не так страшен, если в разумных пределах.
* Свой USB передатчик, Bluetooth'а в настольном компе нет. Да и попадалось, что Bluetooth мыши в Linux заводятся более геморройно.
* Элементы питания формата АА или ААА, более предпочтительны. А то аккумулятор ёмкость потеряет, фиг заменишь потом.
* Программируемые дополнительные боковые кнопки. Например, не особо люблю нажимать на колесо и предпочёл бы переназначить на боковую кнопку.
* Изменяемое DPI/Скорость по нажатию дополнительной кнопки. Редко, но иногда случается, что мне надо потыкать в графический редактор, попасть там во всякие сетки/направляющие, поэтому замедление курсора по требованию будет очень кстати.
* Естественно, чтобы дополнительные кнопки, DPI, варианты пробуждения после бездействия, чтобы всё можно было настроить в Linux. Пусть с шаманством, но можно было в принципе.
* Желательно, чтобы продавалась просто в магазине. Старая уже разваливается, нет желания два месяца ждать из Китая.
* Разумная цена, до 2000 - 2500 руб. Мне не надо супер точный лазер для супер геймеров задротов, не надо RGB-подсветки, вибрации, грузиков для регулировки веса и прочей ерунды.

Присмотрел вот такую: A4Tech Bloody R7 Black USB
Да, не всем требованиям соответствует, что я описал, но вроде ничего. Смущает то, что ПО под Windows только. Насколько я понимаю, все настройки хранятся в самой мышке и запущенного драйвера не надо, но менять их в Linux нечем. Единственное ПО, что я нашёл для Linux - https://github.com/maxmati/a4tech-bloody-linux-driver
Но, как я понимаю, тут можно только подсветкой управлять, что вообще не надо ни разу. Может быть есть что-то более полноценное для неё или других из этой серии?

 , , ,

ls-h
()

Как заставить работать OpenCV DNN на Vulkan?

Форум — Development

Привет всем!

Ковыряюсь с OpenCV и моделями Caffe. Пытаюсь ускорить это дело, т.к. средствами процессора скорость получается очень печальной.
К своему сожалению выяснил, что OpenCL, похоже пролетает. Встроенный GPU от Intel HD Graphics 4600 не поддерживается проприетарным драйвером Intel, на свободном beignet тоже какое-то шаманство и не собирается ядро. Есть отдельная видеокарта AMD R9 270x, и на ней шаманство с драйверами и поддержкой OpenCL. AMDGPU-Pro официально её не поддерживает. Включить можно опцией при загрузке. Старый Blender (2.78) даже что-то рендерит в Cycles, но при запуске OpenCV опять не собирается ругается так:

Status -11: CL_BUILD_PROGRAM_FAILURE
-DT=float -Dconvert_T=convert_float -DRELU_NO_SLOPE -D AMD_DEVICE
Остаётся попробовать Vulkan, вроде у меня он работает, vulkan-smoketest чайники рисует. Но как его вообще включить?
cv2.dnn_Net.setPreferableBackend(net, cv2.dnn.DNN_BACKEND_VKCOM)
cv2.dnn_Net.setPreferableTarget(net, cv2.dnn.DNN_TARGET_VULKAN)
- не приводит ни к чему. OpenCV просто молча использует процессор. Куда копать?
opencv-contrib-python - 4.0.0.21
python - 3.6.6

 , , , ,

ls-h
()

Обнаружена уязвимость в Polkit, которая позволяет выполнять любую команду systemctl пользователю с низкими привилегиями

Новости — Безопасность
Группа Безопасность

Уязвимость CVE-2018-19788 присутствует на большинстве операционных систем GNU/Linux и позволяет пользователю, чей UID превышает 2147483647, выполнить любую команду systemctl, равно как и получить root-права.

Проблема существует из-за ошибки в библиотеке Polkit (другое название PolicyKit), заключающейся в неправильной проверки запросов от пользователей с UID > INT_MAX. Где INT_MAX это константа определяющая максимальное значение переменной типа int, равняющаяся 0x7FFFFFFF в шестнадцатеричной или 2147483647 в десятичной системе счисления.

Исследователь по безопасности Rich Mirch (аккаунт в Twitter 0xm1rch) представил успешно работающий эксплоит, демонстрирущий данную уязвимость. Для его корректной работы требуется наличие пользователя с идентификатором 4000000000.

В Twitter'е предлагают гораздо более простой способ получения root-прав:

systemd-run -t /bin/bash

Компания Red Hat рекомендует системным администраторам не создавать аккаунты с отрицательными значениями UID или UID превышающими 2147483647 до тех пор, пока не будет выпущен патч, исправляющий уязвимость.

>>> Подробности

 , , ,

ls-h
()

Как найти узкое место в многопроцессном приложении?

Форум — Development

Привет всем!

Пишу высоко нагруженное приложение на python, состоящее из множества процессов. Тяжёлые работы (вычисления) производятся с помощью numpy и dlib. Разделение на процессы сделано с через модуль multiprocessing. Отдельный процесс на источник данных, несколько процессов рабочих, один процесс сбора статистики и вывода результатов. Обмен большими данными производится через общую память (несколько объектов multiprocessing.Array(ctypes.c_uint8, buffer_size, lock=False)). Обновление состояния, сообщения о событиях - multiprocessing.Pipe(). Изначально была очередь, но работало совсем медленно, с переписыванием на Pipe стало более-менее.

Проблема в том, что рабочие процессы грузят ядра процессора процентов на 60 - 70. Т.е. по неизвестной причине они простаивают 30% времени. Я никак не могу найти это узкое место.

Мне нужно некое средство профилирования, для работы с множеством процессов. В моём понимании примерно следующее:
В нужных местах кода добавляются вызовы для вывода (в файл или stdout) точных отметок времени с комментариями (что за функция, какие-то параметры, т.п.). По этим отметкам потом строится график, где по оси X отмечается время, по Y - процессы, а на плоскости графика - сами отметки с комментариями.
Так я бы смог понять, какой процесс кого и когда ждёт и где искать это узкое место.
Вывод временных отметок можно и самому навелосепедировать, не сложно. Но, может быть, есть что-то готовое? А вот с графиком сложнее, в идеале он должен быть векторным и масштабируемым, с поиском и инструментами измерения (сколько времени прошло от события А до события Б), т.к. временных отметок предполагается ну очень много.

Как-то так...
P.S.: Переписать с Python'а на что-то другое не вариант.

 , ,

ls-h
()

X2Go. Несколько вопросов. Как сделать его лучше?

Форум — Desktop

Привет всем!

Попробовал эту штуку... второй раз. Первый - не распробовал.
Вполне ничего, сопоставимо с VirtualGL+TigerVNC. Иногда даже чуть быстрее. В прошлый раз (когда я тут спрашивал, что вообще выбрать для удалённого GUI) было медленнее, но с тех пор на рабочем месте улучшился интернет и лидер скорости удалённых рабочих столов поменялся. Хотя, до виндового RDP (особенно свежего, в десяточке) ещё не дотянуло.

Но жить можно. Вот только бы победить некоторые трудности:

* Как отключить перехват Alt+Tab в полноэкранном режиме? Т.е. нужно, чтобы моя локальная система переключала окна, для удалённой у меня другое сочетание клавиш. Клиент Qt x2goclient.

* Что сделать, чтобы в нём работало воспроизведение видео? Хотя бы 720р. Ну да, мне по работе надо смотреть видео. Точнее, я пишу софт который его обрабатывает и который запускается на этом самом ну очень мощном сервере. Иногда таки бывает нужно запустить его в интерактивном режиме. Тестил VLC, перепробовал там наверное все варианты вывода, всегда чёрный экран и сессия X2Go зависает, пока VLC не грохнуть. Мой софт без всяких расширений X11 просто показывает кадры как картинки. Работает, но очень медленно. В сети попадались видео-демки как в X2Go можно удалённо использовать плеер. Но инструкцию я не встретил.

* В режиме отдельных приложений очень тормозит перемещение окон. На случай, если перехват Alt+Tab отключить не получится, мне вполне подойдёт режим отдельных приложений. А может быть он и вообще окажется лучше. Но есть большая проблема: если одним окном провезти над другим, то остаётся «стёртая» область, которая ооочень медленно отрисовывается, буквально 10 секунд. Выглядит это как старый комп, со старым X11 сервером без расширения Composite.

P.S.: Как там в Wayland, уже сделали что для удалённой работы? Хочется попробовать альтернативные варианты.

 , , , ,

ls-h
()

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