LINUX.ORG.RU

Сообщения Xintrea

 

Передача ассоциативного массива из QML в C++. Преобразование QJSValue в QVariantMap

 , , , ,

Имеется Qt 5.11.

Вызываю функцию из QML через JavaScript. В качестве параметра передается ассоциативный массив (индексы - строки и значения - строки).

var a;
a["one"]=odin;
a["two']=dva;

ourExemplar.ourMethod(a);

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

https://doc.qt.io/qt-5/qtqml-cppintegration-data.html

Однако все, что я могу вытащить из QJSValue - это QVariantList (это алиас QList<QVariant>). Да и то этот список будет нуливого размера.

Вот код:
void OurClass::ourMethod(QJSValue jsVal)
{
    qDebug() << Q_FUNC_INFO << "Слот ourMethod()";

    qDebug() << "Результат isObject(): "  << jsVal.isObject();
    qDebug() << "Результат isQObject(): " << jsVal.isQObject();
    qDebug() << "Результат isArray(): "   << jsVal.isArray();
    qDebug() << "Результат isVariant(): " << jsVal.isVariant();

    qDebug() << "QJSValue содержит тип " << jsVal.toVariant().userType();
    qDebug() << "Тип QVariant "     << qMetaTypeId<QVariant>();
    qDebug() << "Тип QVariantList " << qMetaTypeId<QVariantList>();
    qDebug() << "Тип QVariantMap "  << qMetaTypeId<QVariantMap>();
    qDebug() << "Тип QJSValue: "    << qMetaTypeId<QJSValue>();

    QVariantList list=jsVal.toVariant().toList();
    qDebug() << "Длинна list: " << list.size();

Вот результат:
void OurClass::ourMethod(QJSValue) Слот ourMethod()
Результат isObject():  true
Результат isQObject():  false
Результат isArray():  true
Результат isVariant():  false
QJSValue содержит тип  9
Тип QVariant  41
Тип QVariantList  9
Тип QVariantMap  8
Тип QJSValue:  1056
Длинна list:  0

Здесь видно, что isObject() и isArray() одновременно выдают true. Не знаю, должно ли так быть.

Узнать какой тип содержится в QVariant элемента списка я не могу придумать как, так как нет даже первого элемента, ведь список пустой.

В общем, задача - передать ассоциативный массив из QML в C++, но я не могу разобраться как это сделать. Везде пишется как конвертить из C++ в QML, а мне надо наоборот. У буржуев нашел вот такое:

https://lists.qt-project.org/pipermail/development/2014-September/018513.html

Но тут тоже направление из C++ в QML. Как будто из QML в C++ никто ничего структурированного не передает.

Xintrea
()

Использование Linux в качестве цифровой музыкальной студии для записи гитары (видео)

 , ,

Группа Мультимедиа

На YouTube появился видеоролик русскоязычного автора, в котором рассказывается о настройке и использовании Lubuntu Linux в качестве цифровой звукозаписывающей станции для записи гитары.

Linux для ГИТАРИСТА 🎸 Вместо ИМПОРТОЗАМЕЩЕНИЯ

По словам автора, он два года решал задачу использовать Linux для своего творчества, и наконец у него получилось. Поэтому он решил поделиться своими весьма специфичными знаниями с аудиторией гитарного Ютуба.

В качестве стенда используется достаточно слабый двухядерный процессор Intel E2180 без технологии Hyper Threading (т. е. всего два аппаратных потока) в рабочей станции HP DC5800 образца 2007 года. Но для задач обработки звука такой аппаратуры, на удивление, хватает.

В видео демонстрируется использование Linux в качестве гитарного процесора, показывается настройка ALSA и сервера Jack, рассказывается как настраивать задержку обработки звука в единицы миллисекунд. Так же рассказывается о запуске проприетарных и свободных программ: ToneLib, Cadense, Catia, Reaper. Автор даже смог одновременно работать в связке ALSA+Jack+PulseAudio и у него ничего не трещало. Очень подробно автор рассказал про настройку звуковой коммутации внутри Linux.

Всем, кто интересуется возможностями музыкального софта в Linux, строго рекомендуется к просмотру.

>>> Подробности (youtube.com)

Xintrea
()

Четыре ошибки «Нет маршрута до узла» а потом «соединение установлено» - что это?

 , , , ,

Что-то мой VPS-хостер крутил в своей сети, зачем-то вчера перегрузил мою VPS-ку, и стал мой сайт работать медленно.

Nginx показывает ошибку 504 Gateway Time-out.

В логах ошибки вида:

[error] 440#440: *103214 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 193.124.188.214, server: webhamster.ru, request: "GET /mytetrashare/index/mtb0/1510587037z3ybjqq0cv HTTP/1.0", upstream: "fastcgi://unix:/var/run/php5-fpm.sock", host: "webhamster.ru"
Проц не нагружен, памяти половина не используется, I/O небольшой, все в порядке, не знал на что грешить.

И походу нашел проблему. Фишка в том, что мои скрипты активно берут информацию с raw.githubusercontent.com. И я решил со своего сервера взять какой-нибудь файл:

И мне в ответ:
> wget https://raw.githubusercontent.com/xintrea/mytetra_syncro/master/base/0000003425/text.html             
--2022-09-08 13:53:07--  https://raw.githubusercontent.com/xintrea/mytetra_syncro/master/base/0000003425/text.html                                                                                                    
Распознаётся raw.githubusercontent.com (raw.githubusercontent.com)… 2606:50c0:8000::154, 2606:50c0:8001::154, 2606:50c0:8002::154, ...                                                                                
Подключение к raw.githubusercontent.com (raw.githubusercontent.com)|2606:50c0:8000::154|:443... ошибка: Нет маршрута до узла.                                                                                         
Подключение к raw.githubusercontent.com (raw.githubusercontent.com)|2606:50c0:8001::154|:443... ошибка: Нет маршрута до узла.                                                                                         
Подключение к raw.githubusercontent.com (raw.githubusercontent.com)|2606:50c0:8002::154|:443... ошибка: Нет маршрута до узла.                                                                                         
Подключение к raw.githubusercontent.com (raw.githubusercontent.com)|2606:50c0:8003::154|:443... ошибка: Нет маршрута до узла.                                                                                         
Подключение к raw.githubusercontent.com (raw.githubusercontent.com)|185.199.108.133|:443... соединение установлено.                                                                                                   
HTTP-запрос отправлен. Ожидание ответа… 200 OK
Длина: 8105 (7,9K) [text/plain]
Сохранение в: «text.html»                                                                                  
text.html 100%[=======================================>]   7,92K  --.-KB/s in 0,001s
2022-09-08 13:53:19 (12,0 MB/s) - «text.html» сохранён [8105/8105]

Похоже из-за этого подвисают веркеры php5-fpm, и весь сайт начинает тормозить.

Вопрос: что теперь надо крутить, чтобы соединение с raw.githubusercontent.com устанавливалось нормально? Раньше такой проблемы не было. Смогу ли я решить проблему, конфигурируя свой сервер, или без пинания хостера не обойтись? Тогда что требовать от хостера? Проблема на моей стороне? У кого-то DNS кривой? Что-то еще?

Xintrea
()

Как в SED обработать только заданную строку?

 ,

Файл состоит из строк вида:

имя_опции=значение опции
или
имя_опции="значение опции"

Необходимо в значении опции, например с именем OUR_NAME, удалить повторяющиеся пробелы.

Как удалить повторяющиеся пробелы во всем файле понятно, например так:
sed -i -E 's/ */ /g' имя_файла

А как удалить повторяющиеся пробелы только в нужном месте?

Xintrea
()

Викторина по истории компьютерного железа с фестиваля Undefined 2022. А вы смогли бы? (+бонус)

 , ,

Привет!

В видеотрансляции с фестиваля Undefined 2022 можно посмотреть викторину на знание истории компьютерного железа:

Викторина по истории компьютерного железа

Вопрос к аудитории ЛОРа: являются ли такие вопросы слишком легкими / слишком сложными? На сколько вопросов вы смогли ответить (всего 12 вопросов).

Какие вопросы вы сами могли бы предложить?


Бонус: для любителей и знатоков демосцены еще одна викторина:

Викторина по демомейкингу и демосцене

Что о ней думаете? Сложно? Столько вопросов из одолели?

Отвечать надо сразу, не гуглить.


UPD: Эти же викторины в текстовом формате:

https://pastebin.com/MCKYVRHi
https://pastebin.com/A7mvVnTe

Xintrea
()

Напоминаю: конференция Undefined 2022 - уже на этих выходных

 demoparty,

В ближайшую субботу, 20.08.2022, в поселке Рощино близ Петербурга, в комфортабельном конференц-зале состоится фестиваль компьютерного искусства Undefined 2022.

Сайт фестиваля: https://undefined.c-c.ru

Кто еще не определился, чем будет заниматься на выходных, рекомендую взять и приехать. Если вы конечно недалеко от Питера :) а Сапсан для вас - как проехаться на метро.

Задумано много всяких разных конкурсов и активностей. Команда фестиваля делает все в первый раз, будет много неразберихи, факапов и драмы, в общем, все как вы тут на ЛОРе любите.

Для ценителей так же работает hidden-конференция под названием Бухаос.

Xintrea
()

Конвертация из SVG в PDF в консоли через Inkscape упакованный в AppImage

 , , , ,

Имеется Inkscape 1.2.1, который запускается из AppImage.

Графический запуск происходит без проблем. Но мне нужен запуск bash-команды, которая использует этот InkScape для преобразования одностраничного SVG в одностраничный PDF.

Вот пример команды (образец взят отсюда: https://graphicdesign.stackexchange.com/questions/5880/how-to-export-an-inksc...)

/opt/inkscape_1_2_1/Inkscape-9c6d41e-x86_64_1_2_1.AppImage /home/xi/work/develop/php/undefinedVictorin2022/src/../svg/victorine01/page00.svg --export-area-drawing --batch-process --export-type=pdf --export-filename=/home/xi/work/develop/php/undefinedVictorin2022/src/../pdf/victorine01/page00.pdf

Однако, эта команда, вместо того чтобы сконвертировать SVG в PDF, открывает SVG-файл в графическом интерфейсе и ничего не делает. В консоли никаких ошибок нет.

Вопрос: как сконвертировать SVG в PDF через InkScape из AppImage?

PS: Использовать для конвертирования утилиту rsvg-convert невозможно, она криво конвертит SVG, и как минимум не знает о переносе строк и различных режимах выравнивания текста по горизонтали.

Xintrea
()

Что за странная синяя палочка в Konsole возле области прокрутки?

 konsile, ,

Имеется Konsole 20.12.3 в Debian Stable 11.

В ней появляется вот такая палочка:

https://dropmefiles.com/hLmMV

Ее высота и положение как-то зависит от колеса мышки.

Как ее убрать?

Xintrea
()

Где и как найти официальную документацию на утилиту (встроенную команду) [[ ?

 , , ,

Не могу разобраться, каким образом и где заполучить документацию на утилиту (встроенную команду) [[.

На утилиту [ документацию можно получить по команде man test, ибо [ - это алиас test.

А как заполучить документацию для [[ ?

Xintrea
()

Как в Firefox блокировать отдельные изображения?

 , ,

Вот например не нравится мне у кого-то аватарка на ЛОР-е. И я хочу ее простым способом заблокировать. В древней Опере можно было нажать на картинку правой кнопкой и выбрать «Заблокировать изображение».

А как это сделать в Firefox? Все что нахожу - это аддоны, которые отключают все картинки на странице. А нужно чтобы единичные картинки отключались.

Xintrea
()

Не понимаю формата файла расширений MC

 , , ,

Имеется следующий общесистемный файл: /etc/mc/mc.ext

В нем есть такие строки:

### Images ###

type/^GIF
<------>Include=image

type/^JPEG
<------>View=%view{ascii} /usr/lib/mc/ext.d/image.sh view jpeg
<------>Include=image

type/^PC\ bitmap
<------>Include=image

type/^PNG
<------>Include=image

type/^JNG
<------>Include=image

type/^MNG
<------>Include=image

type/^TIFF
<------>Include=image

type/^PBM
<------>Include=image

type/^PGM
<------>Include=image

type/^PPM
<------>Include=image

type/^Netpbm
<------>Include=image

shell/.xcf
<------>Open=/usr/lib/mc/ext.d/image.sh open xcf

shell/.xbm
<------>Open=/usr/lib/mc/ext.d/image.sh open xbm

shell/.xpm
<------>Include=image
<------>View=/usr/lib/mc/ext.d/image.sh view xpm %f

shell/.ico
<------>Include=image

shell/i/.svg
<------>View=%view{ascii} /usr/lib/mc/ext.d/image.sh view svg
<------>Open=/usr/lib/mc/ext.d/image.sh open svg

Вопрос в том, что такое Include=image ? Как эта опция настраивает программу для просмотра и открытия картинки?

В самом файле есть ничего не говорящая подсказка:
keyword can be:
        include (matches an include directive)

Что такое include directive, откуда, куда, и что она подключает?

Xintrea
()

Почему в Git получается удалить из истории только один файл?

 , ,

Нужно мне в локальном репозитарии удалить из Git несколько pyc-файлов.

Я даю такие команды:

$ git filter-branch --tree-filter 'rm -f configScript/mt2/lib/__pycache__/libCommand.cpython-35.pyc' HEAD
Rewrite 72e4719f86a600568a1a387a632a18fbdc1c6c03 (5/5) (1 seconds passed, remaining 0 predicted)
Ref 'refs/heads/master' was rewritten

$ git filter-branch --tree-filter 'rm -f configScript/mt2/lib/__pycache__/libConfig.cpython-35.pyc' HEAD
Cannot create a new backup.
A previous backup already exists in refs/original/
Force overwriting the backup with -f

Видно, что первая команда сработала нормально. А вторая точно такая же команда для другого файла - нет, хотя имя удаляемого файла правильное.

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

Xintrea
()

Как исправить пакетную базу в Debian-базед дистрибутиве?

 , , ,

Дистрибутив Astra 1.6.

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

Пробовали делать во всяких последовательностях:

apt update
apt upgrade
apt -f install
apt-get clean

Толку никакого.

Решил проверить, сколько пакетов вообще видно:
apt list | wc -l
1616

А должно быть over 11000, то есть в несколько раз больше. На трех соседних серверах с теми же самыми репозитариями количество пакетов 11293, это никак не 1616.

Вопрос: как восстановить пакетную базу?



Перемещено hobbit из general

Xintrea
()

Почему minicom не пишет русскую букву Л?

 ,

Сейчас натолкнулся на такой баг.

На двух Linux-компьютерах запущен minicom 2.7 через COM-порт. Все бы ничего, но когда печатается текст, невозможно напечатать русскую букву «Л», именно большую букву.

Почему так? Кому помешала эта буква?

Xintrea
()

Не работает Proxy через SSH - соединение устанавливается, траффика нет

 ,

Нужно мне скачать пару файлов с репозитария Debian через proxy. Напрямую скачать не могу, потому что в сети стоит серверное MitM-оборудование и подменяет сертификаты.

Proxy решил сделать через ssh и собственный сервер serverinweb.ru в интернете.

Создаю соединение и порт:

ssh -D 8888 user@serverinweb.ru -f -N


Проверяю наличие порта:

netstat -pan | grep 8888
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:8888          0.0.0.0:*               LISTEN      11223/ssh
tcp6       0      0 ::1:8888                :::*                    LISTEN      11223/ssh


Пытаюсь скачать файл:

wget -e use_proxy=yes -e http_proxy=127.0.0.1:8888 http://ftp.debian.org/debian/dists/unstable/Release
--2022-06-22 15:04:17--  http://ftp.debian.org/debian/dists/unstable/Release
Подключение к 127.0.0.1:8888... соединение установлено.
Proxy-запрос отправлен. Ожидание ответа… Не получено никаких данных.
Повтор.

--2022-06-22 15:04:18--  (попытка: 2)  http://ftp.debian.org/debian/dists/unstable/Release
Подключение к 127.0.0.1:8888... соединение установлено.
Proxy-запрос отправлен. Ожидание ответа… Не получено никаких данных.
Повтор.


На самом mainserver.ru в его консоли я могу гулять по интернету через lynx например.

Что где надо донастроить, чтобы proxy-соединение работало?

Xintrea
()

Репозиторий Debian Linux не содержит файла Release

 ,

Для одного эксперимента я добавил в /etc/apt/sources.list строки:

deb http://ftp.debian.org/debian unstable main contrib non-free
deb-src http://ftp.debian.org/debian unstable main contrib non-free


Проверил, что url существует и отвечает по HTTP: http://ftp.debian.org/debian/dists/unstable/

Index of /debian/dists/unstable
[ICO]	Name	Last modified	Size
[PARENTDIR]	Parent Directory	 	-
[ ]	InRelease	2022-06-22 08:21 	162K
[ ]	Release	2022-06-22 08:21 	160K
[ ]	Release.gpg	2022-06-22 08:21 	1.6K
[DIR]	contrib/	2022-06-22 08:21 	-
[DIR]	main/	2022-06-22 08:21 	-
[DIR]	non-free/	2022-06-22 08:21 	-
Apache Server at ftp.debian.org Port 80


Однако при работе команды apt update возникает ошибка:

W: Репозиторий «http://ftp.debian.org/debian unstable Release» не содержит файла Release.

Как так не содержит? Что не так с адресом репозитария?

Xintrea
()

WordPress в качестве OpenID-провайдера уже не работает?

 

Привет, народ.

Помнится, WordPress когда-то работал в качестве OpenID провайдера:

https://wordpress.com/blog/2007/03/06/openid/

Сейчас лазаю по аккаунту на wordpress.com и не нахожу никаких упоминаний про OpenID.

Пробую проверить вход на LiveJournal через OpenID, потому что они были иницатором этой технологии. Указываю wordpress-овый OpenID и дальше страницы с надписью «LiveJournal поддерживает систему единой авторизации OpenID, что позволяет соотнести ваши аккаунты на разных сайтах – благодаря этому даже не зарегистрированные в LiveJournal пользователи могут войти в LJ в любой момент» никуда продвинуться не могу.

Что это значит? WordPress перестал поддерживать OpenID? LiveJournal разломал авторизацию по OpenID? Что-то еще?

Xintrea
()

Рабочее место школьника: ремонт материнки Asus H97M-E

 , , ,

Иногда так бывает: выключил компьютер, все было в порядке. На следующий день его включаешь, а он не включается. Кто знает, какие гремлины порезвились в нем? Но факт остается фактом: экран черный, POS-коды не пищат, материнка по неведомой причине не стартует.

Вот так и у меня стала выкаблучиваться маманька Asus H97M-E. Что делать? Поперетыкал память во все слоты, понажимал все возможные клавиши типа ESC, F2, F10, Del, ничего. Сбросил CMOS - ничего. Сгонял к знакомым, взял заведомо рабочую память на проверку, воткнул ее - ничего. Вот уж свезло так свезло.

Начинаю вдумчиво читать Интернет, проверяю известные напряжения, и закрадывается у меня подозрение, что все это дело похоже на то, что в материнке слетел BIOS. Внимательно смотрю на материнку и вижу, что висьминожная микросхема GD25B64BPIG заботливо установлена на разъемные контакты самим производителем. Звоню знакомым электронщикам: есть ли программатор для SPI-флешки? Нет говорят, для SPI нет.

Роюсь и интернете дальше по запросам «Самодельный программатор SPI FLASH из STM32 быстро и просто на коленке» - нет, ничего простого и вменяемого не нахожу. Тогда может быть есть на Arduino? Опа, есть такое: у какого-то любителя паять в разделе тенохрень. Вроде должно получиться!

Разбираю чудо-лампу, которую делал сын для школьного проекта на адресной цветной светодиодной ленте, внутри которой спрятана Arduino Uno. Конпеляю, прошиваю Ардуину, собираю схему на макетке, вставляю микросхему FLASH, и... ничего! Ничего из нее не читается. Пару часов разбираюсь что не так: прошивка Ардуино не та? Ардуино не видит SPI флешки? Дохлая флешка? В итоге оказывается, что фраза автора «Понадобится Arduino Pro Micro ну или любая другая, будет отличаться только распиновка на Ардуино» - эта фраза означает «ну вы сами разберитесь что куда подключать». Оказалось, что в схеме все контакты надо было подключать к одноименным сигналам, за исключением одной ножки. Все контакты SPI подключаются по именам MISO, MOSI, CLCK. А загадочный контакт 2, который в Pro Micro называется SDA и является частью I2C, надо подключать не к SDA в Arduino UNO, а так и оставить висеть на 2-й ножке. Вот такой ребус.

В результате программатор-на-коленке заработал. Фуллдамп снялся, но понять битый он или не битый никак не представлялось возможным. Да и вообще неясно было, в БИОСе ли вообще дело. Чтобы можно было зашить обратно, на всякий случай второй раз снял фуллдамп, проверил различия с первым, различий не было. Но коль есть программатор, решил прошить новый БИОС. Взял с сайта производителя самый свежий бинарь, оторвал 2Кб заголовок через утилиту dd и ее опцию skip. Насколько я понял, этот заголовок используется фирменным флешером, а для прямой прошивки он не нужен. Прошил флешку, перепроверил фуллдамп, увидел что все прошилось байт в байт. Вставил и материнку, и... результат на фото! Материнка завелась и работает на новом БИОСе.

Оборудование:

- Материнка Asus H97M-E
- Проц Intel Core i3-4130 @ 3.40GHz, подаренный вместе с памятью товарищем TolkoSprosit
- Память Crucial DDR3 4Gb
- Кусок железки вместо кулера на время экспериментов, помазанный капелькой Baraf-S
- Arduino Uno из 2010 года
- Ноутбук Samsung 2013 года выпуска для прошивки Ардуины
- «Стеклянная» макетка
- Мультиметр Mastech MY68

Полный размер: https://ibb.co/v14xwbT

Xintrea
()

Почему команда «bash -c cd /tmp notDir» не выдает ошибку?

 

Если попробовать выполнить команду:

bash -c cd /tmp notDir

То она молча выполнится и никакой ошибки не будет выдано.

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

Xintrea
()

Почему составная команда с ошибкой не генерирует ошибку?

 , ,

Есть bash-скрипт со следующей командой:

#!/bin/bash
sudo -u postgres bash -c cd /tmp ; psql -f /tmp/sql.txt
В нем есть ошибка: под пользователем postgres выполняется команда до символов ";", а бинарник psql вызывается уже не под пользователем postgres. И это дает ошибку:
psql: СБОЙ:  роль "root" не существует
Так и должно быть.

* * *

А теперь есть такой скрипт, в котором та же самая команда конструируется через переменную:
#!/bin/bash
psqlRun="sudo -u postgres bash -c cd /tmp ; "
$psqlRun psql -f /tmp/sql.txt
Запускаем это дело и... Ошибки нет! Вот только никаких действий, записанных в /tmp/sql.txt в БД PostgreSQL этот скрипт не выполнит. Но и не скажет об этом. Просто молча не сработает и все.

Вопрос: почему так? По-сути, создается команда, всеми символами совпадающая с командой из первого скрипта. Но почему этот скрипт не генерирует ошибку?

Xintrea
()