LINUX.ORG.RU

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

 

Ecryptfs/encfs наоборот. Хранение данных в облаке.

Форум — Security

Всем здрасте!

Как работают указанные в заголовке ФС? Данные хранятся зашифрованными пофайлово на любой файловой системе, расшифровываются налету при доступе через точку монтирования данных псевдофайловых систем.

А бывают прозрачные средства пофайлового шифрования наоборот?
Т.е. файлы хранятся в открытом виде и шифруются на лету, при обращении к ним через точку монтирования специальной ФС.

Нужно для синхронизации файлов через облако. Личные фотографии, некоторые документы, многое в архивах. Ничего сверх секретного, чтобы хранить в зашифрованном виде и нагружать компьютер шифрованием/дешифрованием при любом обращении к этим файлам. Однако, не хотелось бы их просто так показывать посторонним. И было бы удобно, если бы клиент облачного сервиса (Яндекс диск, Google drive или Dropbox, пока ещё не решил, что лучше) забирал их в зашифрованном виде.

Есть что-то такое?

 , , ,

ls-h
()

Wine, OpenGL и Cinema 4D R17

Форум — Desktop

Привет всем!

Direct3D эмулируется внутри WINE. А как обстоят дела с OpenGL, чем определяется версия и набор расширений?

Я пытаюсь использовать Cinema 4D* версии R17 под WINE.
Приложение работает, но отображение сцены очень тормозит.
Проверка параметров OpenGL в настройках показывает, что мой GPU ничего не умеет и вообще какой-то кривой: https://dropmefiles.com/I3JOY
Похоже, что вообще используется программный рендеринг.

Я пробовал и WINE из дистрибутива и пару версий из PlayOnLinux.
Результат одинаковый, ошибки немного разные.

wine-3.0 (Ubuntu 3.0-1ubuntu1)


wine64 .wine/drive_c/Program\ Files/MAXON/CINEMA\ 4D\ R17/CINEMA\ 4D.exe
0009:fixme:heap:RtlSetHeapInformation 0x780000 0 0x23f830 4 stub
0009:fixme:ver:GetCurrentPackageId (0x239260 (nil)): stub
0009:fixme:thread:SetThreadStackGuarantee (0x23f6d0): stub
0009:fixme:reg:GetActiveProcessorCount semi-stub, returning 8
0009:fixme:process:SetProcessPriorityBoost (0xffffffffffffffff,1): stub
0009:fixme:heap:RtlSetHeapInformation 0x1dd0000 0 0x23d520 4 stub
Application start : 08/30/18 at 01:19:04
Executable : 64 Bit
Version / Build : 17.016 / RB136011
Debugger : not available
Memory model : release
Startup path : file:///Z:/home/lsh/.wine/drive_c/Program Files/MAXON/CINEMA 4D R17
Application path : file:///Z:/home/lsh/.wine/drive_c/Program Files/MAXON/CINEMA 4D R17/CINEMA 4D.exe
Application executable : file:///Z:/home/lsh/.wine/drive_c/Program Files/MAXON/CINEMA 4D R17/CINEMA 4D.exe
Resource path : file:///Z:/home/lsh/.wine/drive_c/Program Files/MAXON/CINEMA 4D R17/resource
Module path(s) : file:///Z:/home/lsh/.wine/drive_c/Program Files/MAXON/CINEMA 4D R17/modules
Temporary path : file:///C:/users/lsh/Temp
Prefs path : file:///C:/users/lsh/Application Data/MAXON/CINEMA 4D R17_EB682A3C
Global Prefs path : file:///C:/users/lsh/Application Data/MAXON
OS version : Windows XP Professional Service Pack 3 (build 2600)
Processor : 8(8)x Intel Core i7-4770 CPU
Computer name : lsh-ubu
Thread Count : 8
Cpu Speed (MHz) : 3900.000
Application Type : Modular
Command line arguments : none

Loading file:///Z:/home/lsh/.wine/drive_c/Program Files/MAXON/CINEMA 4D R17/modules/c4dplugin.xdl64 with module(s) net.maxon.c4d.c4dplugin
Loading file:///Z:/home/lsh/.wine/drive_c/Program Files/MAXON/CINEMA 4D R17/modules/crashhandler.module.xdl64 with module(s) net.maxon.crashhandler
Loading file:///Z:/home/lsh/.wine/drive_c/Program Files/MAXON/CINEMA 4D R17/modules/crypt.module.xdl64 with module(s) net.maxon.crypt
Loading file:///Z:/home/lsh/.wine/drive_c/Program Files/MAXON/CINEMA 4D R17/modules/glcl_trace.module.xdl64 with module(s) net.maxon.glcl_trace
Loading file:///Z:/home/lsh/.wine/drive_c/Program Files/MAXON/CINEMA 4D R17/modules/image.module.xdl64 with module(s) net.maxon.image
Loading file:///Z:/home/lsh/.wine/drive_c/Program Files/MAXON/CINEMA 4D R17/modules/mesh.module.xdl64 with module(s) net.maxon.mesh
Loading file:///Z:/home/lsh/.wine/drive_c/Program Files/MAXON/CINEMA 4D R17/modules/misc.module.xdl64 with module(s) net.maxon.misc
Loading file:///Z:/home/lsh/.wine/drive_c/Program Files/MAXON/CINEMA 4D R17/modules/network.module.xdl64 with module(s) net.maxon.network
Loading file:///Z:/home/lsh/.wine/drive_c/Program Files/MAXON/CINEMA 4D R17/modules/triangulation.module.xdl64 with module(s) net.maxon.triangulation
0009:fixme:iphlpapi:NotifyIpInterfaceChange (family 0, callback 0xa371700, context (nil), init_notify 0, handle 0xa5462e0): stub
0009:fixme:msg:ChangeWindowMessageFilter 233 00000001
0009:fixme:win:DisableProcessWindowsGhosting : stub
0009:err:wgl:X11DRV_wglCreateContextAttribsARB Context creation failed (error 1)
0009:err:wgl:X11DRV_wglCreateContextAttribsARB Context creation failed (error 1)
ZeroConf error: Couldn't get bonjour version [sys_bonjour.cpp(1411)]
QTGuiAgent: Waiting for a connection...
QTGuiAgent: RegisterClient
QTGuiAgent: Waiting for a connection...
QTGuiAgent: Waiting for a connection...
0009:fixme:msvideo:DrawDibDraw wFlags == 0x00001000 not handled --- таких строчек очень много, одинаковые я выкинул.
Error: OS error loading plugin slapi.dll. Could not load dll. (file:///Z:/home/lsh/.wine/drive_c/Program Files/MAXON/CINEMA 4D R17/resource/modules/i_skp/slapi.dll) [win_dll.cpp(237)]
Cause: Windows System Error #998: No access to memory location. [win_dll.cpp(232)]

Тут есть явно что-то не то с OpenGL: 0009:err:wgl:X11DRV_wglCreateContextAttribsARB Context creation failed (error 1)

Теперь результат из POL:

[08/30/18 01:10:17] - Running wine-3.10-staging CINEMA 4D.exe (Working directory : /home/lsh/.PlayOnLinux/wineprefix/3.10st_c4dr18/drive_c/Program Files/MAXON/CINEMA 4D R17)
0028:fixme:heap:RtlSetHeapInformation 0x460000 0 0x23e7e0 4 stub
0028:fixme:thread:SetThreadStackGuarantee (0x23f6e0): stub
0028:fixme:reg:GetActiveProcessorCount semi-stub, returning 8
0028:fixme:process:SetProcessPriorityBoost (0xffffffffffffffff,1): stub
0028:fixme:heap:RtlSetHeapInformation 0x1bc0000 0 0x23d550 4 stub
Application start : 08/30/18 at 01:10:17
Executable : 64 Bit
Version / Build : 17.016 / RB136011
Debugger : not available
Memory model : release
Startup path : file:///C:/Program Files/MAXON/CINEMA 4D R17
Application path : file:///C:/Program Files/MAXON/CINEMA 4D R17/CINEMA 4D.exe
Application executable : file:///C:/Program Files/MAXON/CINEMA 4D R17/CINEMA 4D.exe
Resource path : file:///C:/Program Files/MAXON/CINEMA 4D R17/resource
Module path(s) : file:///C:/Program Files/MAXON/CINEMA 4D R17/modules
Temporary path : file:///C:/users/lsh/Temp
Prefs path : file:///C:/users/lsh/Application Data/MAXON/CINEMA 4D R17_8DE13DAD
Global Prefs path : file:///C:/users/lsh/Application Data/MAXON
OS version : Windows 7, 64 Bit, Ultimate Edition Service Pack 1 (build 7601)
Processor : 8(8)x Intel Core i7-4770 CPU
Computer name : lsh-ubu
Thread Count : 8
Cpu Speed (MHz) : 3900.000
Application Type : Modular
Command line arguments : none

Loading file:///C:/Program Files/MAXON/CINEMA 4D R17/modules/c4dplugin.xdl64 with module(s) net.maxon.c4d.c4dplugin
Loading file:///C:/Program Files/MAXON/CINEMA 4D R17/modules/crashhandler.module.xdl64 with module(s) net.maxon.crashhandler
Loading file:///C:/Program Files/MAXON/CINEMA 4D R17/modules/crypt.module.xdl64 with module(s) net.maxon.crypt
Loading file:///C:/Program Files/MAXON/CINEMA 4D R17/modules/glcl_trace.module.xdl64 with module(s) net.maxon.glcl_trace
Loading file:///C:/Program Files/MAXON/CINEMA 4D R17/modules/image.module.xdl64 with module(s) net.maxon.image
Loading file:///C:/Program Files/MAXON/CINEMA 4D R17/modules/mesh.module.xdl64 with module(s) net.maxon.mesh
Loading file:///C:/Program Files/MAXON/CINEMA 4D R17/modules/misc.module.xdl64 with module(s) net.maxon.misc
Loading file:///C:/Program Files/MAXON/CINEMA 4D R17/modules/network.module.xdl64 with module(s) net.maxon.network
Loading file:///C:/Program Files/MAXON/CINEMA 4D R17/modules/triangulation.module.xdl64 with module(s) net.maxon.triangulation
0028:fixme:iphlpapi:NotifyIpInterfaceChange (family 0, callback 0xa161700, context (nil), init_notify 0, handle 0xa3362e0): stub
0028:fixme:msg:ChangeWindowMessageFilter 233 00000001
0028:fixme:win:DisableProcessWindowsGhosting : stub
ZeroConf error: Couldn't get bonjour version [sys_bonjour.cpp(1411)]
QTGuiAgent could not be launched
QTGuiAgent could not be launched
0028:fixme:msvideo:DrawDibDraw wFlags == 0x00001000 not handled --- таких строчек очень много, одинаковые я выкинул.
0028:err:winediag:SECUR32_initNTLMSP ntlm_auth was not found or is outdated. Make sure that ntlm_auth >= 3.0.25 is in your path. Usually, you can find it in the winbind package of your distribution.
0028:fixme:kerberos:kerberos_SpInstanceInit 65536,0x7f0eb40602e0,(nil): stub

Тут такой ошибки с wgl:X11DRV_wglCreateContextAttribsARB не наблюдается, но результат такой же, что и в дистрибутивном WINE.

Система: Ubuntu 18.04
Видеокарта: AMD Radeon R9 270X
Драйвер: AMDGPU (не PRO), lsmod:

amdgpu 2703360 31
chash 16384 1 amdgpu
ttm 106496 1 amdgpu
i2c_algo_bit 16384 2 amdgpu,i915
drm_kms_helper 172032 2 amdgpu,i915
drm 401408 28 amdgpu,i915,ttm,drm_kms_helper

Выхлоп из glxinfo: http://paste.ubuntu.com/p/JGZxj8kzr2/
* - Blender не предлагать! Он, конечно, крут, но в данной ситуации требуется конкретный софт.

 , , ,

ls-h
()

Дырень (бекдор?) в X86 процессорах VIA

Форум — Talks

Немного ассемблерной магии и полный доступ получен:
https://www.youtube.com/watch?v=GQE3a8WLeds

Для Ъ не будет, лень с видео переписывать.

 , , ,

ls-h
()

Как использовать CUDA внутри LXC контейнера?

Форум — Admin

Привет!

Хост система Ubuntu 18.04. На хосте CUDA софт работает без проблем:


./deviceQuery Starting...

CUDA Device Query (Runtime API) version (CUDART static linking)

Detected 1 CUDA Capable device(s)

Device 0: «GeForce GTX 1050 Ti»
CUDA Driver Version / Runtime Version 9.1 / 9.1
CUDA Capability Major/Minor version number: 6.1
Total amount of global memory: 4039 MBytes (4234936320 bytes)
( 6) Multiprocessors, (128) CUDA Cores/MP: 768 CUDA Cores
GPU Max Clock rate: 1392 MHz (1.39 GHz)
Memory Clock rate: 3504 Mhz
Memory Bus Width: 128-bit
L2 Cache Size: 1048576 bytes
Maximum Texture Dimension Size (x,y,z) 1D=(131072), 2D=(131072, 65536), 3D=(16384, 16384, 16384)
Maximum Layered 1D Texture Size, (num) layers 1D=(32768), 2048 layers
Maximum Layered 2D Texture Size, (num) layers 2D=(32768, 32768), 2048 layers
Total amount of constant memory: 65536 bytes
Total amount of shared memory per block: 49152 bytes
Total number of registers available per block: 65536
Warp size: 32
Maximum number of threads per multiprocessor: 2048
Maximum number of threads per block: 1024
Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
Max dimension size of a grid size (x,y,z): (2147483647, 65535, 65535)
Maximum memory pitch: 2147483647 bytes
Texture alignment: 512 bytes
Concurrent copy and kernel execution: Yes with 2 copy engine(s)
Run time limit on kernels: Yes
Integrated GPU sharing Host Memory: No
Support host page-locked memory mapping: Yes
Alignment requirement for Surfaces: Yes
Device has ECC support: Disabled
Device supports Unified Addressing (UVA): Yes
Device supports Compute Preemption: Yes
Supports Cooperative Kernel Launch: Yes
Supports MultiDevice Co-op Kernel Launch: Yes
Device PCI Domain ID / Bus ID / location ID: 0 / 130 / 0
Compute Mode:
< Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 9.1, CUDA Runtime Version = 9.1, NumDevs = 1
Result = PASS


В контейнере происходит ошибка:

./deviceQuery Starting...

CUDA Device Query (Runtime API) version (CUDART static linking)

cudaGetDeviceCount returned 30
-> unknown error
Result = FAIL


Но при этом nvidia-smi внутри контейнера работает нормально:

Sat Aug 4 22:49:53 2018
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 390.48 Driver Version: 390.48 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 105... Off | 00000000:82:00.0 On | N/A |
| 29% 35C P8 N/A / 75W | 291MiB / 4038MiB | 0% Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
+-----------------------------------------------------------------------------+

Для проброса в конфиге контейнера присутствуют таки строки:

# GPU Passthrough config
lxc.cgroup.devices.allow = c 195:* rwm
lxc.cgroup.devices.allow = c 243:* rwm
lxc.mount.entry = /dev/nvidia0 dev/nvidia0 none bind,optional,create=file
lxc.mount.entry = /dev/nvidiactl dev/nvidiactl none bind,optional,create=file
lxc.mount.entry = /dev/nvidia-uvm dev/nvidia-uvm none bind,optional,create=file
lxc.mount.entry = /dev/nvidia-modeset dev/nvidia-modeset none bind,optional,create=file


В контейнере стоят пакеты:

libcudart9.1 nvidia-cuda-dev nvidia-cuda-doc nvidia-cuda-gdb nvidia-cuda-toolkit


Файлы устройства присутствуют в /dev:

crw-rw-rw- 1 root root 195, 254 Jul 27 21:19 /dev/nvidia-modeset
crw-rw-rw- 1 root root 238, 0 Jul 27 21:18 /dev/nvidia-uvm
crw-rw-rw- 1 root root 195, 0 Jul 27 21:18 /dev/nvidia0
crw-rw-rw- 1 root root 195, 255 Jul 27 21:18 /dev/nvidiactl

Контейнер привилегированный.

Что я упустил в настройке?

 , ,

ls-h
()

Синхронизация потоков. std::condition_variable.

Форум — Development

Привет!

Есть два потока: первый наполняет буфер (на самом деле буфера два, один наполняется, второй обрабатывается, потом меняются) данными из сети, второй ждёт данные в бесконечном цикле и должен их обрабатывать, как буфер заполнился, а остальное время спать.
Второй может работать дольше первого, соответственно пропустить несколько наполнений. Данные, которые второй поток обработать не успел, нужно отбрасывать.

Сейчас для синхронизации используется std::condition_variable, прямо в виде из примера: https://en.cppreference.com/w/cpp/thread/condition_variable

Проблема в том, что, если второй поток работал слишком долго и пропустил несколько циклов заполнения, то первый поток уже установил переменную, используемую в предикате, в состояние true и вызвал (один или несколько раз) notify_one().
И «cv.wait(lk, []{return ready;});», насколько я понимаю, снимает блокировку сразу, не дожидаясь нового события (новых данных). Второй поток при этом начинает обрабатывать старые данные. Мне это не нужно. Нужно, чтобы он ждал свежие, а те, что не успел обработать, просто отбрасывались бы.

Можно было бы использовать «cv.wait(lk);», т.е. без предиката. Тогда, насколько я понимаю, notify_one() вызванный до wait() будет проигнорирован, а сработает тот notify_one(), что вызывался уже после wait(). Что мне и нужно. Но везде пишут, что без предиката может произойти некое состояние «spurious wakeup» (ложное пробуждение), когда никто не делал notify_one() или notify_all(), а wait() вернул управление и поток-обработчик проснулся просто так.

Как такая задача правильно решается?
Каким чудом эти spurious wakeup вообще случаются?

 , ,

ls-h
()

Постоянная синхронизация двух машин.

Форум — Admin

Добрый вечер!

В основном работа происходит удалённо из дома. Заключается в написании кода на Python, C++, взаимодействии с оборудованием по USB. Но иногда прямо очень надо что-то делать в офисе, например, когда случается показывать наработки начальству или когда надо отлаживать код с другим комплектом оборудования. Поскольку работа в офисе не ограничивается только демонстрациями, то бывает нужно дописать/собрать что-то по месту, поэтому и среды разработки со всеми библиотеками, исходниками и вообще всем желательно иметь под рукой. Возникает желание сделать синхронизацию двух систем по сети. И не только какого-нибудь каталога /home/user/mycode, а вообще всей ОС. Чаще всего только в одну сторону, но иногда и в обратную.

Вопрос: Как это лучше сделать? Может есть какие-то готовые решения?
На компьютерах различаются материнские платы и процессоры, видеокарты одинаковые. Но Linux не винда, от разного оборудования проблем быть не должно.
ОС Ubuntu 18.04, машины находятся в одной VPN. Никаких MySQL и других БД в системе не имеется, т.е. нет особой опасности получить нецелостное состояние.

Думал делать просто rsync'ом по расписанию. На домашней машине создавать LVM снапшот, и с него копировать на удалённую. Но не уверен, можно ли на удалённой
просто так переписывать все системные файлы во время работы или надо установить ещё одну ОС для использования во время копирования.

Возможно это лучше делать через какое-то перевалочное сетевое хранилище (сервер с расшаренной директорией).

Пока не придумал, как обезопаситься от конфликтных ситуаций. Например, если изменения с домашней машины ещё не все скопировались, а на офисной уже произошли свои.

Или лучше разделить копирование файлов ОС и файлов в /home? Приходила мысль монтировать /home по сети, но это не вариант, т.к. с устройств надо много и быстро писать.

Что посоветуете?

 , , , ,

ls-h
()

GUI удалённый доступ с 3D ускорением и работой с отдельными окнами.

Форум — Desktop

Доброго времени суток!

Есть удалённый сервер в другом городе на котором я работаю.
Нужно запускать как 2D, так и 3D приложения.
Сейчас используется связка VirtualGL+TigerVNC(и клиент и сервер).
Ускорение на GPU сервера, скорости отрисовки 2D и 3D меня устраивают.

Не нравится, что работа происходит с целым рабочим столом.
Буфер обмена часто не синхронизируется и переключаться между локальными и удалёнными окнами очень не удобно.
Я бы хотел запускать отдельные приложения и видеть отдельные окна.

Пробовал SSH+X11Forwarding+VirtualGL, но оно работает медленно.

Что можно использовать в связке с VirtualGL, более быстрое нежели обычный X11 протокол? Чтобы при этом пробрасывались только нужные окна. Желательно, чтобы управлялись локальным оконным менеджером.

 , , , ,

ls-h
()

Очень странное желание. Множественные владельцы одного файла/директории.

Форум — Admin

Привет всем!

Надобно это для совместной разработки от разных пользователей одного проекта.

Да, я знаю, что для совместной разработки надо использовать VCS. Но сейчас начальный активный этап разработки с исследовательским уклоном. На месте (в одной директории) получаются данные с устройства для анализа, на месте пишется и компилируется короткий говнокод для разбора этих данных. Потом это будет структурировано, причёсано и т.п.

Да, я в курсе про chmod g+s на директорию и ACL (хотя может не разобрался?).
Всё равно не удобно. Нужно не просто иметь доступ к файлам/поддиректориям директории на чтение/запись/выполнение (в комбинациях по необходимости), но и иметь возможность менять права на файлы от имени любого пользователя, как если бы он был владельцем.
Вот со сменой прав не получается.

Работать от одного пользователя не удобно. Присвоить им один UID - изврат ещё больший, чем то, о чём я пишу.

Я знаю, что штатно такой функциональности нет и у каждого объекта ФС есть только один владелец. Но, может быть, есть обходные пути через какое-нибудь хитрое монтирование с FUSE?
Файловая система ext4.

-----------------------------
Всем спасибо. Нашёл bindfs, который вполне подходит.

 , , ,

ls-h
()

Всё есть файл и это прикольно! Почему в GNU/Linux эта идея не развивается?

Форум — Talks

Короткое видео: https://www.youtube.com/watch?v=YCho-wOAtOU
В принципе, ничего принципиально нового. Но оно напоминает, как это удобно и здорово.

Интересно, почему в современном Linux этот подход вроде бы используется, а вроде бы и нет?

Например, в Gnome можно смонтировать архив штатными средствами, также есть отдельные FUSE файловые системы для этих целей. Но при этом, например, Midnight Commander архивы открывает через что-то своё встроенное и в нём уже нельзя нажать Ctrl+O и выполнить несколько bash команд. KDE, насколько я помню, аналогично Midnight Commander'у.

Или ещё пример. Недавно было обсуждение, о том, как будут работать скриншоты и скринкасты с переходом на Wayland. И там что-то с D-Bus+PipeWire. Я так понимаю, к последнему будет своё API. Почему бы не реализовать интерфейс получения скриншота также как в видео? И с правами всё просто. Запретил через AppArmor-профиль браузеру получать доступ к /run/user/self/wayland/screen-0/ и подлый браузер за тобой не подглядывает.

Почему D-Bus не выглядит как файловая система? echo 100 > /run/user/self/volume-control. Удобно же! Опять же правами рулить просто и быстро. Можно через стандартные группы и пользователи, через ACL, всякие SELinux тоже в тему.

Единообразие интерфейсов это же так здорово!
И примеров можно придумать ещё миллион...

 , ,

ls-h
()

checkinstall создаёт пустой пакет. Есть ли альтернатива checkinstall?

Форум — Desktop

Привет!

Собираю из исходников библиотеку Open3D.
https://github.com/IntelVCL/Open3D
Чтобы не засорять систему, как воспитанный дрессировщик пингвинов, решил использовать checkinstall. Но оно создаёт пустой пакет.

Выхлоп:

( читать дальше... )


При просмотре файлов из «Some of the files created by the installation are inside the home directory» там есть некоторые тестовые файлы и примеры, но основных файлов библиотеки там нет. А пакет при этом совсем ничего не содержит.

Ubuntu 18.04
checkinstall 1.6.2, Copyright 2009 Felipe Eduardo Sanchez Diaz Duran

Как починить? Или может есть какие альтернативы этой штуке?
Похоже, что программка не особо активно развивается.

 , ,

ls-h
()

Анимация облаков точек с использованием библиотеки Point Cloud Library

Форум — Development

Привет всем!

Есть у меня кучка PLY файлов, которые получены путём 3D реконструкции, в формате три координаты+три составляющие цвета.
Пытаюсь написать простой топорный просмотрщик анимации из серии файлов.

#include <iostream>

#include <list>
#include <iterator>
#include <string>

#include <pcl/io/pcd_io.h>
#include <pcl/io/ply_io.h>
#include <pcl/point_cloud.h>
#include <pcl/console/parse.h>
#include <pcl/common/transforms.h>
#include <pcl/visualization/pcl_visualizer.h>

#include <unistd.h>
#include <signal.h>

static bool change_frame = true;

static void handler(int sig){
    change_frame = true;
}

int main (int argc, char** argv){
    bool tr = true;
    std::list<pcl::PointCloud<pcl::PointXYZRGB>::Ptr> sources_list;

    for(int i = 1; i < argc; i++)
    {
        pcl::PointCloud<pcl::PointXYZRGB>::Ptr srccld (new pcl::PointCloud<pcl::PointXYZRGB> ());
        if (pcl::io::loadPLYFile (argv[1], *srccld) < 0)  {
            std::cout << "Error loading point cloud " << argv[1] << std::endl << std::endl;
            return -1;
        }
        sources_list.push_back(srccld);
    }

    signal(SIGALRM, handler);
    ualarm(500000, 500000);

    std::list<pcl::PointCloud<pcl::PointXYZRGB>::Ptr>::iterator it1 = sources_list.begin();
    pcl::visualization::PCLVisualizer viewer ("Matrix transformation example");
    viewer.addCoordinateSystem (1.0, "cloud", 0);
    viewer.setBackgroundColor(0.05, 0.05, 0.05, 0);

    while (!viewer.wasStopped ()) {
        if (change_frame) {
            std::cout << "Changing frame\n";
            change_frame = false;
            if (it1 == sources_list.end()) it1 = sources_list.begin();
            std::cout << *it1 << "\n";
            if (tr) { // Change background for testing
                tr = false;
                viewer.setBackgroundColor(0.05, 0.05, 0.05, 0);
            } else {
                tr = true;
                viewer.setBackgroundColor(0.5, 0.5, 0.5, 0);
            }
            viewer.removeAllPointClouds();
            pcl::visualization::PointCloudColorHandlerRGBField<pcl::PointXYZRGB> source_cloud_color_handler (*it1);
            viewer.addPointCloud (*it1, source_cloud_color_handler, "cld");
            viewer.setPointCloudRenderingProperties (pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 2, "cld");
            it1++;
        }
        viewer.spinOnce ();
    }
    return 0;
}

Проблема в том, что на экране всё время одно и тоже облако.
Пробовал каждую итерацию присваивать разные идентификаторы, вроде «cld»+номер_кадра, но это ничего не дало.
Для теста сделал смену цвета фона. Вот это работает и фон мигает с нужной частотой.
То ли viewer.removeAllPointClouds(); ничего не удаляет, или надо апдейт сцены какой-то сделать... Не понятно!

P.S.: Ну да, через SIGALRM, наверное, глупая идея делать, но мне не для продакшена, для себя.

 , ,

ls-h
()

В чём люди пишут художественные книги/сеттинги/сценарии?

Форум — Talks

Привет всем!

Придумываем в соавторстве фантастический мир в котором будет развиваться сюжет эпичной борьбы добра и зла ну надо же, как это ново!. Завели общий google doc. Совершенно не удобно даже на раннем этапе, а что будет когда доберёмся до объёмов «Войны и мира» и помыслить страшно.

Посему вопрос. А в чём же это нормальные люди творят?

Хотелось бы:
= Визуальной графоподобной структуры всего документа. Т.е. есть нод/сущность (допустим, животное), у неё есть название, описание, есть зависимости от других нодов/сущностей (допустим, еды), между ними связи, другие в свою очередь зависят по цепочке и т.п.
-= Удобное представление, сворачивание связей, масштабирование.
-= Удобная и быстрая навигация между нодами, поиск
-= Поддержание целостности. Т.е. при удалении одного нода, зависимости помечаются как нарушенные.
-= Слои связей. Скажем, между разными нодами могут быть отношения в разных категориях, удаление связей в одной не нарушает целостность связей в другой.

= Переменные. Назвал животное лупоглазиком, потом не понравилось, и поправил сразу во всех местах, где встречается.

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

= Версионность как всего документа, так и отдельных нодов.
-= Внутри одного нода может быть несколько версий. Например, можно переписывать отдельные характеристики отдельного предмета, при этом связи не нарушаются и версия связей не меняется.
-= Версия связей всего документа.

= Совместное редактирование.

Ну вот как-то так...

 , ,

ls-h
()

GNOME Shell. Как сделать меню в заголовке окна? И ещё немного вопросов...

Форум — Desktop

Привет всем!

Поставил свежую Ubuntu 18.04, GNOME Shell 3.28.1.
Дефолтное расположение панелей ну никак не нравится.
Две вполне можно совместить в одну панель снизу (как Windows 7).
Для чего было использовано расширение «Dash to panel».
Но есть проблема в том, что пропадает меню текущего приложения, которое было в панели сверху и нигде его нет.
Где-то мне раньше попадалось расширение (или просто настройка), чтобы это меню переехало в заголовок окна в виде отдельной кнопки.
Но никак найти не могу, не помню, как называется.

Как вообще сейчас модно, современно использовать меню?
Когда-то давно следил за этим вопросом, ещё на заре Unity и даже в других средах делал аля macOS. Потом забил на это дело, в Unity было вполне нормально. А потом в GNOME сделали что-то непонятное. Меню на верхней панели, но там всегда какие-то стандартные три пункта.
Я понимаю смысл меню в стиле macOS, оно всегда на виду и всегда у края экрана. За счёт этого можно быстро мышкой попадать в нужные пункты. Хотя у него есть и недостатки, например, нужно сначала передать фокус нужному окну, а потом уже лезть в меню. В меню в стиле классического Windows всё наоборот: целиться неудобно, но зато не надо кликать дополнительно. А меню в GNOME Shell зачем такое?

Ещё хочется настроить тени у окон. Где и как это сделать?

А также отучить панель менять стиль при прижатии окна к ней.
Это вообще очень странная концепция. Пусть уж будет либо прозрачной и светлой, либо чёрной. Но никак не меняющейся постоянно. Раздражает!

 , , ,

ls-h
()

Торговлю криптовалютами на официальных биржах не разрешат. Налог на майнинг и регистрацию майнеров подготовят к июлю

Форум — Talks

!Ъ: https://geektimes.ru/post/295481/

Ъ:
Замминистра финансов Алексей Моисеев в интервью телеканалу «Россия 24» высказал позицию министерства финансов по поводу легализации торговли криптовалютами. Он напомнил, что по этому поводу проходила «достаточно публичная» дискуссия между Минфином и Центробанком, где последний высказывал более жёсткую позицию по запрету криптовалют, а Минфин — более мягкую. В частности, Минфин предлагал всё-таки разрешить физлицам и квалифицированным инвесторам торговлю криптовалютами на лицензированных биржах. Но в итоге всё-таки взяла верх запретительная политика Центробанка. Так что такого разрешения не будет. Судя по всему, сохранится нынешний статус-кво: торговля будет осуществляться только на подпольных биржах в интернете без государственных гарантий.

Моисеев против изменения Гражданского кодекса для создания статуса криптовалют. Он считает, что они вполне вписываются в имеющееся определение «иного имущества», но дискуссии на этот счёт продолжаются. Статус криптовалют должен быть описан в законодательстве до 1 июля 2018 года, также как понятие технологии распределённых реестров (блокчейна), токена и смарт-контракта.

Вообще, министерство финансов ожидает спада интереса к криптовалютам и падения цены биткоина.

Чиновник отметил, что официально покупать и продавать криптовалюты будет нельзя, но вот сделки в рамках ICO предполагается законодательно разрешить с неким механизмом защиты инвесторов, то есть юридически оформленными обязательствами эмитента в процессе размещения токенов и «дубликацией смарт-контрактов хотя бы в одном экземпляре». Сейчас готовятся правила регулирования ICO в России. Предложения по криптовалютам и рынку ICO должны сформировать к 1 февраля 2018 года, законопроект по ним может быть принят Госдумой в весеннюю сессию.

Крипторубль, по словам Моисеева, станет развитием национальной валюты в электронном виде (что уже существует) с возможным расширением такого её использования. Моисеев при этом предложил использовать вместо термина «крипторубль» более подходящий термин «киберрубль»: «Когда говорят о крипторубле, то немножко смешивают понятия. Все-таки более привычно его называть киберрублем. В принципе, что в крипто-, что в кибер- присутствует криптография. Поэтому не будет ошибкой назвать любой «Яндекс»-кошелек или любой другой «кошелек» крипторублем. Но здесь речь идет о развитии электронного рубля в том виде, в котором он существует. Но возможно некоторое расширение его использования», — сказал замминистра финансов.

Кроме введения в законодательство статуса криптовалют, токена и смарт-контракта, к 1 июля 2018 года регуляторы должны выработать требования к майнингу и определить механизм налогообложения майнеров.

Центробанк РФ поддерживает введение налога на майнинг. Первый зампред Банка России Ольга Скоробогатова сказала, что налогом должны облагаться как юридические лица, так и частные предприниматели. Этот вид деятельности должен быть зарегистрирован в законном порядке и облагаться налогом: «Майнинг — не только деятельность по производству криптовалют и даже не столько, это более широкое понятие. Майнинг используется при применении технологии блокчейн и является валидацией транзакции, которая в виде блоков представлена в этой технологии, — пояснила Скоробогатова. Она добавила, что для майнинга «требуется большая инфраструктура, поэтому мы считаем, что это вид деятельности».

Позиции ЦБ, Минфина, Минкомсвязи и Минэкономразвития, совпадают «по основным моментам», сказала Скоробогатова.

 , ,

ls-h
()

В Казани биткоины продают уже в продуктовом магазине

Форум — Talks

https://geektimes.ru/post/295077/

Что за зверь? Какой-то развод, фейк или реально работает?

Ъ: Биткоин-банкомат появился в Казани. Установлен он в небольшом продуктовом магазине на улице Восстания. Терминал позволяет обменять рубли на электронные деньги и криптовалюту на рубли.

 , ,

ls-h
()

Нагрузка на процессор. Top, accton и sa

Форум — Admin

Привет всем!

Хочу померить, сколько процессорного времени потребляет группа процессов, запущенная от одного пользователя. Но дело происходит в контейнере LXC, поэтому «sa -m» ничего не показывает, т.к. accton не работает, ругается сообщением «accton: Operation not permitted».

Я ведь правильно понимаю, что можно взять поле «TIME+» из вывода команды top и сложить для нужных процессов нужного пользователя? Результат будет тот же, что и вывод «sa -m» в графе с обозначением «cp» или нет? При запуске «sa -m» за пределами контейнера похожих цифр не наблюдаю. Однако сумма «TIME+» из top для всего контейнера совпадает с полем «CPU use:» в выводе «lxc-info --name контейнер» (если секунды последнего пересчитать в минуты).

Суть всех этих манипуляций в том, что планируется перенос сайта из этого контейнера на виртуальный хостинг, у которого есть ограничение нагрузки на процессор, измеряемое в CP. Как ответили в техподдержке, измеряют они это CP через «sa -m» и это время использования процессора в минутах.

Интересно, что в одних доках пишут, что «TIME+» измеряется в минутах, в других - секундах.
Кстати, как оно считается по факту и насколько корректно сравнивать значения для разных систем? Это ведь для какого-то абстрактного процессора в вакууме?

Ubuntu 16.04.3 LTS
Проц AMD Opteron(tm) Processor 6338P
64 гига оперативы

 , ,

ls-h
()

Выбор роутера для дома

Форум — Talks

Привет всем!

Скончался роутер, подбираю что-то на замену в районе 3000 руб.
В приоритете мощность wifi (чтобы через стену на улицу добивал), два диапазона и гибкость настроек.

Интернет потребляют 2 планшета, 3 телефона, 2 компа, один престарелый нетбук и один телевизор.

Интернет PPPoE, оптика и медиа конвертер. Сейчас 25 Мбит, но хочу перейти на тариф шустрее.

Из хотелок:
DDNS (no-ip), port knocking для проброса портов, VPN и заворачивание трафика в socks5, ssh клиент и сервер.

Вообще, что лучше, Mikrotik с кучей настроек из коробки или обычный роутер с OpenWRT? Как у Mikrotik с расширяемость, там какая-то пакетная система? Можно ли использовать USB для установки ПО?

Пока присматриваюсь к:
Mikrotik RB952Ui-5ac2nD - встроенная антенна. что у него с дальнобойностью?
TP-LINK Archer C59 - не понятно, что тут с OpenWRT.
TP-LINK Archer C50 - вроде, что OpenWRT ставится без проблем, но в отзывах пишут о большом количестве аппаратного брака.

 , , ,

ls-h
()

Посоветуйте годную книжку о компьютерах «Не для чайников*» ребёнку

Форум — Talks

Привет всем!

Есть племянник, 7 лет. У него есть игровой (с контроллерами) планшет на Android и ноутбук родителей. Кроме игорей у него часто появляются вопросы, как чего устроено, зачем надо и т.п. Хочу купить ему годную книжку.

Требования:
+ Чтобы книжка была рассчитана на неподготовленного читателя, но при этом не останавливалась на уровне чайников или совсем детском. Т.е., я понимаю, что в этом возрасте объяснить про логические схемы и регистры может быть сложно, но чуши вроде «процессор это сердце компьютера» очень хочется избежать.
+ Чтобы она охватывала широкий спектр вопросов: что внутри компьютера, что вне его (сети, интернет, разное оборудование), какой и зачем бывает софт, зачем нужна ОС и т.п.
+ Читалась бы при этом достаточно легко.

Читает он бодро (для своего возраста) и это дело любит, поэтому можно и толстую. Кроме того родители настаивают, чтобы больше читал и меньше играл.

P.S.: GNU/Linux тут при том, что если в книжке про него будет написано, то это будет очень здорово.
P.P.S.: Раньше, когда подсаживал не сильно опытных знакомых на GNU/Linux, обнаружил, что нет хороших книжек с азов и до хорошего уровня для пользователей GNU/Linux. Везде подразумевается, что пользователь уже достаточно подкован в общих вопросах. Т.е. хочется, чтобы рассказывалось, про общие вопросы информатики, затем начинку компа, а потом плавно перетекало к вопросом ОС. А вот с виндой таких книг завались. Почему-то книгописатели не рассматривают вариант, что знакомство с компьютером вообще может начаться сразу с GNU/Linux.

* - мне кажется, что книги серии «Для чайников» только их создают.

 , , ,

ls-h
()

Как завести себе домашнюю нейронную сеть для рисования? =)

Форум — Talks

Привет!

Все уже давно видели как всевозможные deep dream и прочую наркоманию, так и достаточно годные вещи, вроде стилизации фотографии под стиль определённого художника.

Меня интересует второй вариант.
Может кто в курсе, есть ли какие-то варианты, чтобы можно было скачать себе на компьютер, натренировать (да, я понимаю, что это не быстро) на картинах нужного стиля, а потом дать фото на растерзание?

Мне удалось нагуглить только онлайн сервисы. Но стили там предопределённые и размеры сильно ограничены. А я бы хотел достаточно большое разрешение, чтобы потом напечатать.

 , ,

ls-h
()

CEFDK, RedBoot, загрузка... Как это работает?

Форум — Linux-hardware

Привет всем!

Есть NAS на некоем SoC от Intel. Наверное там ce4100 или что-то типа того. Устройство работает на старом линуксе. Хочется старый линукс поменять на новый. После включения и до загрузки ОС там можно початиться с CEFDK и RedBoot (кстати, интересно, зачем делать два загрузчика) через UART на плате. Оба они прошиты в NAND. Вероятно и ядро тоже где-то там. Т.к. файл ядра в /boot - фикция и ни на что не влияет.

Пробовал в CEFDK выполнить bootata, но оно просто вешается, перед этим сообщив что сектор прочитан и управление в него передано.
В RedBoot пробовал загрузить ядро по аналогии с существующим конфигом, но тоже всё вешается с выхлопом мусора в консоль.

Где бы про это всё почитать доходчиво и подробно?

 , ,

ls-h
()

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