LINUX.ORG.RU

Сообщения Xintrea

 

Останавливается видео в Blender 2.93 после 1 секунды проигрывания

Форум — General

Стоит значит у меня Blender 2.93 на Debian Linux.


Открываю я Video Editing Workspace. Перетягиваю на Timeline видеоролик. Пытаюсь его проиграть. Для этого нажимаю клавишу Пробел или кнопку внизу с названием Play Animation (треугольная такая). Видео проигрывается ровно 1 секунду и останавливается.

Причем, кнопка Play Animationиз треугольничка превращается в кнопку паузы. Типа все в порядке, видео проигрыватеся, ты можешь нажать паузу. Но видео стоит на месте, номер текущего кадра тоже стоит на месте.

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


Что это за дичь? Может быть, где-нибудь есть какая-то настройка, которая ограничивает проигрывание вперед одной секундой? Я ничего не нашел.

 , ,

Xintrea
()

Qt. Как проще сделать виджет, сильно похожий на заданный?

Форум — Development

Имеется следующий виджет-меню:

http://i.piccy.info/i9/c7c16510d27ba4873ffec2e649009df0/1626854321/67618/1436...

Нужно сделать такой же на Qt5 (обычные виджеты, не QML), всеми пикселями похожий на заданный.

Стиль Windows для QToolButton или для QFrame, в принципе, подходит. Я бы мог понапихать слева-направо или кнопки или фреймы, чтобы составить такое меню. Но если присмотреться, то между секциями вертикальные разделители не «на полную глубину» а как бы «в половину глубины».

Вот я и думаю, каким макаром проще всего сделать меню с такими разделителями секций?

 , , отрисовка

Xintrea
()

Новая версия низкоуровневого переключателя клавиатуры LoLo Switcher 0.39 для X11 с поддержкой KVM-switch

Новости — Open Source
Новая версия низкоуровневого переключателя клавиатуры LoLo Switcher 0.39 для X11 с поддержкой KVM-switch
Группа Open Source

Выпущена новая версия низкоуровневого переключателя клавиатуры LoLo Switcher v.0.39, в которой реализована поддержка работы через «тупые» KVM-свитчи, не поддерживающие эмуляцию присутствия устройств на отключенных портах. Для этого были доработаны механизмы первичной инициализации устройства ввода, и добавлен механизм удержания устройства ввода, первую версию которого сделал товарищ bodqhrohro.

Низкоуровневый переключатель клавиатуры LoLo Switcher работает напрямую с файлом устройства ввода, вычленяя в потоке скан-кодов нужные последовательности, которые должны приводить к переключению раскладки. С помощью него решаются все существующие проблемы конфигурирования клавиш-модификаторов, когда у пользователей Linux не работают хоткеи Ctrl+Shift+Буква или Alt+Shift+Буква при настроенном переключении языка через сочетания Ctrl+Shift или Alt+Shift. Кроме того, LoLo Switcher позволяет настраивать переключение по отпусканию клавиш, а не только по нажатию. LoLo Switcher не имеет графического интерфейса настройки, все конфигурирование происходит через конфиг-файл. Для вычленения последовательностей скан-кодов используются регулярные выражения, компилируемые во время старта переключателя.

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


На официальной странице проекта LoLo Switcher размещена готовая бинарная сборка.

Unofficial:
А еще, в этом году переключателю LoLo Switcher исполняется 10 лет! Историческая новость на Лоре: Вышел LoLo Switcher v.0.25 (когда доллар был по 32 рубля).

>>> Новость на сайте автора

 , , ,

Xintrea
()

Куда должен пойти ученик, чтобы купить книгу про Гарри Поттера?

Форум — Talks

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

Сидим все и думаем, каков правильный ответ, и в каких загадочных местах продаются книжки про Гарри. Рассмотрели даже вариант «в стене», но такого варианта нет.

Что думает коллективный разум?

Задание: http://i.piccy.info/i9/5cbb7534eeea4c8f11ca5b5b2edee6e4/1618855970/139100/142...

 , mystery,

Xintrea
()

Как правильно запустить очередь в Laravel с именованными очередями?

Форум — Web-development

Восстанавливаю сейчас к работе проект двухлетней давности.

В нем используется Laravel 5.5.45.

Сам забыл уже и PHP, и Laravel, и что там где там надо крутить.

Проблема вот в чем. Очереди в проекте настроены на драйвер database, используется MySQL (MariaDB). Таблицы jobs и failed_jobs созданы. Задания очереди успешно создаются, и появляются в таблице jobs. Для заданий предусмотрено 3 очереди:

- email
- phone
- telegram

В таблице jobs в поле queue видно соответствующее имя очереди.

Если согласно документации запустить очередь командой:

php artisan queue:work

то задания выполняться не будут, и поле attempt (количество попыток запуска) для всех заданий будет содержать значение 0.

В какой-то момент я нащупал, что если запустить команду:
php artisan queue:work --queue=telegram,default

то задания из очереди telegram таки выполнятся.

Но в документации я не нашел описания того, что для работы обработчика очереди требуется обязательно указывать имя очереди. Вроде как команда php artisan queue:work должна обрабатывать все очереди, но этого не происходит.

Вопрос: а какой командой таки можно запустить обработку всех именованных очередей? Я ее пропишу в Supervisor.

 , ,

Xintrea
()

А у меня одного в Firefox 86.0.1 не работают ссылки на сообщения из уведомлений ЛОР-а?

Форум — General

Поставил Firefox 86.0.1, и обнаружил что при нажатии ссылок на сообщения в уведомлениях происходит переход на страницу, но прокрутка на этой странице не проматывается до нужного сообщения, а останавливается на совершенно случайных местах. Так и должно быть?

 

Xintrea
()

Почему не работает monospace в font-family?

Форум — Web-development

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

Есть, к примеру, такая страничка:

Как разобраться, почему некоторые каталоги в DropBox не синхронизируются под Linux

На ней есть следующий HTML-код:

<p style=" margin-top:0px; 
           margin-bottom:0px; 
           margin-left:20px; 
           margin-right:0px; 
           -qt-block-indent:0; 
           text-indent:0px;">
  <span style=" font-family:'monospace'; color:#6a1009;">
    chmod 755 ./dropbox.py
  </span>
</p>

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

Вопрос: почему не применяется monospace для вывода текста?

Проблема есть в Crome 89.0.4389.72 (Официальная сборка), (64 бит).

 ,

Xintrea
()

Как запустить скрипт через at от non-root пользователя?

Форум — General

У меня есть два простых скрипта:

/opt/script/loloswitcher.sh

#!/bin/bash

echo "/opt/script/loloswitcherPostRun.sh" | at now

/opt/script/loloswitcherPostRun.sh
#!/bin/bash

logFile="/tmp/loloswitcherLog.txt"

/bin/date > $logFile
/bin/echo "Label 1" >> $logFile


/bin/sleep 3


/bin/date >> $logFile
/bin/echo "Label 2" >> $logFile

Права на эти скрипты следующие:
$ ls -la | grep lolo 
-rwxrwxrwx  1 root root  391 мар  2 10:47 loloswitcherPostRun.sh 
-rwxrwxrwx  1 root root  204 мар  2 10:24 loloswitcher.sh

Проблема в том, что если запустить loloswitcher.sh от root, то произойдет запуск loloswitcherPostRun.sh, будет создан файл /tmp/loloswitcherLog.txt, в него будут записаны обе метки Label 1 и Label 2.

Но если удалить /tmp/loloswitcherLog.txt и запустить loloswitcher.sh от обычного пользователя, то скрипт loloswitcherPostRun.sh не будет выполнен, и файл /tmp/loloswitcherLog.txt вообще не будет создан. В системных логах полное молчание, никаких ошибок или предупреждений.

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

 , , ,

Xintrea
()

Как выкачать определенный pack-файл с Git-репозитария?

Форум — Development

Сижу сейчас на мобильном интернете.

У меня в локальной копии репозитария оказался поломанный pack-файл. Я бы мог перевыкачать весь репозитарий, но размер репозитария несколько гигабайт.

Я знаю точно название pack-файла, и мне надо выкачать только его:

.git/objects/pack/pack-dd181d6ed4ebbcf10347fb0908a2f644ef40b993.pack

Вопрос: как это сделать? Репозитарий на Гитхабе.

 , gitfs,

Xintrea
()

Как вставить значение переменной в одинарные кавычки?

Форум — Development

В bash есть особенность: внутри одинарных кавычек значение переменной не разворачивается:

networkByte="205"

result1=`echo $networkByte`
result2=`echo '$networkByte'`

echo $result1
echo $result2

Выхлоп:
205
$networkByte

В связи с этим вопрос: а как тогда подставлять значения переменных в grep/sed? Вот есть такая команда:
projectType=`cat ./config.xml | \
 grep '^\s*<\s*App\s*name.*project.*network\s*=\s*\"$networkByte\".*>\s*' | \
 sed -E 's/(^.*project\s*=\s*\")(.*)(\"\s*network\s*=\s*\"$networkByte\".*>\s*)/\2/'`

Здесь используется переменная $networkByte, но ее значение не вставляется в команду, как хотелось бы, а вместо этого всовывается строка «$networkByte».

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

 , , ,

Xintrea
()

Почему работает доступ к значению без $ в условном выражении?

Форум — Development

Сейчас наткнулся вот на такую особенность:

#!/bin/bash

regExpLen="1"

if [[ regExpLen -eq 1 ]]; then
  echo "Равно 1"
fi

Вопрос: почему в условии можно не писать $regExpLen, почему работает просто имя переменной?

 , ,

Xintrea
()

Как выполнить команду в Bash из переменной?

Форум — Development

Проблема при выполнении следующего куска кода. Скрипт запускается от обычного текущего пользователя:

#!/bin/bash

    hostIp="192.168.150.101"
    userPwd="12345"

    echo "Настройка хоста $hostIp"

    command="sshpass -p '$userPwd' ssh-copy-id -i ~/.ssh/id_rsa.pub user@$hostIp"
    echo "Выполняется команда:"
    echo "$command"
    $command

При запуске этого когда, в консоли видим следующую ошибку:
Настройка хоста 192.168.150.101
Выполняется команда:
sshpass -p '12345' ssh-copy-id -i ~/.ssh/id_rsa.pub user@192.168.150.101

/usr/bin/ssh-copy-id: ERROR: failed to open ID file '~/.ssh/id_rsa.pub': Нет такого файла или каталога

Но дело в том, что, файл открытого ключа существует. Мало того, если в консоли скопировать «сконструированную» скриптом команду, и выполнить ее:
sshpass -p '12345' ssh-copy-id -i ~/.ssh/id_rsa.pub user@192.168.150.101

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

Вопрос: почему не выполняется команда внутри скрипта? При этом почему она нормально выполняется в консоли?

 , , ,

Xintrea
()

Как в SED обработать диапазон строк?

Форум — Development

Есть такой текст:

...
[AC]
icon=battery-charging

[AC][DPMSControl]
idleTime=3600

[AC][HandleButtonEvents]
lidAction=64
powerButtonAction=8

[Battery]
icon=battery-060

[Battery][DPMSControl]
idleTime=300

[Battery][HandleButtonEvents]
lidAction=64
powerButtonAction=16

[LowBattery]
icon=battery-low

[LowBattery][BrightnessControl]
value=30

[LowBattery][HandleButtonEvents]
lidAction=64
powerButtonAction=16
...

Я хочу обработать диапазон строк между:
[AC][HandleButtonEvents]
...
[.*

В этом диапазоне надо изменить значение powerButtonActions.

Я пытаюсь сделать так:
cat f.txt | sed /\[AC\]\[HandleButtonEvents\]/,/\[.*/s/powerButtonAction\s*=\s*.*/powerButtonAction=125/

Но получаю ошибку:

sed: -e выражение #1, символ 81: незавершенное адресное регулярное выражение

Вопрос: как правильно написать эту команду?

 , диапазон

Xintrea
()

Как в Python 2.7.13 изменить INI-файл с субсекциями?

Форум — Development

Имеется INI-файл с вот такой структурой:

...
[AC]
icon=battery-charging

[AC][DPMSControl]
idleTime=3600

[AC][HandleButtonEvents]
lidAction=64
powerButtonAction=8

[Battery]
icon=battery-060

[Battery][DPMSControl]
idleTime=300

[Battery][HandleButtonEvents]
lidAction=64
powerButtonAction=16

[LowBattery]
icon=battery-low

[LowBattery][BrightnessControl]
value=30

[LowBattery][HandleButtonEvents]
lidAction=64
powerButtonAction=16
...

Здесь видно, что HandleButtonEvents - это «субсекция», а основная секция задается перед субсекцией в той же строке. Не знаю, является ли это стандартом для INI-файлов или нет, не я этот файл создавал.

Задача - поменять значения powerButtonAction в различных субсукциях.

Пробовал достучаться до нужного значения так (хотя бы считать):
import ConfigParser
config=ConfigParser.ConfigParser()
config.read('$fileName')

print( config.get('AC][HandleButtonEvents', 'powerButtonAction' ) )

Но возникает ошибка:
      "Traceback (most recent call last):",
      "  File \"<stdin>\", line 5, in <module>",
      "  File \"/usr/lib/python2.7/ConfigParser.py\", line 607, in get",
      "    raise NoSectionError(section)",
      "ConfigParser.NoSectionError: No section: 'AC][HandleButtonEvents'"

Вопрос: как работать с такими файлами?

UPD: При необходимости могу поставить Python 3.5.3, если это будет нужно для решения.

 ,

Xintrea
()

Как установить Linux-шрифты в Windows?

Форум — General

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

А мне сейчас потребовалось сделать обратное действие: нужно стандартный набор шрифтов, который стоит по-умолчанию в Debian 9, установить в Windows. Как это сделать?

Может быть, есть какие-то LinuxFontPack или еще что-то такое для Windows? Или можно установить пачку шрифтов ручками? Откуда эту пачку взять? Как установить?

 , ,

Xintrea
()

Нужно ли пробрасывать mouseMoveEvent в QTableView?

Форум — Development

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

void MyView::mouseMoveEvent(QMouseEvent *event)
{
  ...
  QTableView::mouseMoveEvent(event);
}

Можно ли вообще не делать вызова родительского mouseMoveEvent? На что отсутствие вызова родительского mouseMoveEvent может повлиять?

На первый взгляд действительно, родительский обработчик mouseMoveEvent можно вообще не вызывать. Но может быть, есть какие-то неочевидные ситуации? Например, если не вызывать, то перестанет правильно работать драг-анд-дроп в режиме мультивыбора, или там перестанет выделяться строка при настройке QAbstractItemView::SelectRows после клика мышки на незаполненной строками области таблицы, или еще какая-нибудь замудренная хрэнь?

 , , обработчик,

Xintrea
()

Как выполнить несколько SQL-команд для PostgreSQL в Ansible?

Форум — General

Имеется Astra Linux 1.3, PostgreSQL 9.1.6, Ansible 2.9.16

В инстансе базы данных неожиданно перестали создаваться таблицы.

Создание таблицы приводит к ошибке:

  - name: Create a new database impulse
    postgresql_db:
      name: impulse
      encoding: UTF-8
      lc_collate: ru_RU.UTF-8
      lc_ctype: ru_RU.UTF-8
      owner: impUser
...
FAILED! => 
{"changed": false, 
 "msg": "Database query failed: 
         new encoding (UTF8) is incompatible with the encoding 
         of the template database (SQL_ASCII)\n
         ПОДСКАЗКА:  Use the same encoding as in
         the template database, or use template0 as template.\n"}

Чтобы исправить эту ошибку, необходимо выполнить следующий SQL-скрипт (взят отсюда):
  - name: Исправление кодировки шаблона базы данных
    postgresql_query:
      query: |
        update pg_database set datallowconn = TRUE where datname = 'template0';
        update pg_database set datistemplate = FALSE where datname = 'template1';
        drop database template1;
        create database template1 with encoding = 'UTF-8' lc_collate = 'ru_RU.UTF8' lc_ctype = 'ru_RU.UTF8' template = template0;
        update pg_database set datistemplate = TRUE where datname = 'template1';
        update pg_database set datallowconn = FALSE where datname = 'template0';

Однако выполнение такого плейбука завершается ошибкой:
FAILED! => {"changed": false, 
"msg": "Cannot execute SQL 'drop database template1;\n
create database template1 with encoding = 'UTF-8' 
lc_collate = 'ru_RU.UTF8' lc_ctype = 'ru_RU.UTF8' 
template = template0;\n'

None: DROP DATABASE cannot run inside a transaction block\n"}

То есть, похоже, что Ansible сама заворачивает выполнение SQL-команд в транзакцию. Я нашел тему, что можно принудительно сначала завершить транзакцию, а потом ее открыть. То есть получится, что сначала выполняется пустая транзакция, потом SQL-команды вне транзакции, и потом опять пустая транзакция:
  - name: Исправление кодировки шаблона базы данных
    postgresql_query:
      query: |
        end; 
        update pg_database set datallowconn = TRUE where datname = 'template0';
        update pg_database set datistemplate = FALSE where datname = 'template1';
        drop database template1;
        create database template1 with encoding = 'UTF-8' lc_collate = 'ru_RU.UTF8' lc_ctype = 'ru_RU.UTF8' template = template0;
        update pg_database set datistemplate = TRUE where datname = 'template1';
        update pg_database set datallowconn = FALSE where datname = 'template0';
        begin;

Но тогда появляется другая ошибка:
FAILED! => {
"changed": false, 
"msg": "Cannot execute SQL 
'end;\n
update pg_database set datallowconn = TRUE where datname = 'template0';\n
update pg_database set datistemplate = FALSE where datname = 'template1';\n
drop database template1;\n
create database template1 with encoding = 'UTF-8' lc_collate = 'ru_RU.UTF8' lc_ctype = 'ru_RU.UTF8' template = template0;\n
update pg_database set datistemplate = TRUE where datname = 'template1';\n
update pg_database set datallowconn = FALSE where datname = 'template0';\n
begin;\n' 

None: DROP DATABASE cannot be executed from a function
or multi-command string\n"}

Далее я уже не могу придумать как обходить эти ограничения.

Вопрос: как в Ansible сделать простейшее действие: выполнить несколько SQL-команд?

 , ,

Xintrea
()

Как превратить «узкий неразрывный пробел» E2 80 AF в обычный пробел?

Форум — General

Имеется файл в кодировке UTF-8 с национальными символами, в котором встречаются «узкий неразрывный пробел» с кодами E2 80 AF.

Эти пробелы нужно преобразовать в обычные пробелы.

Как по-быстрому это можно сделать?

 ,

Xintrea
()

Как удобно написать развесистое условие через jinja2 в yml?

Форум — General

В файле all.yml мне надо написать примерно такое:

all:
  vars:
    ...
    targetPath: "{% if   distId=='debian8' %}blablabla1
                 {% elif distId=='debian9' %}blablabla2
                 {% elif distId=='astra13' %}blablabla3
                 {% endif %}|trim()"

Проблема в том, что в таком виде фильтр trim() не работает, потому что ему на вход надо подавать строку. А чтобы обозначить строку, надо выражение {% if ... %} заключить в кавычки. Но в этом коде уже использованы двойные и одинарные кавычки.

Как обойти это ограничение?

 , , ,

Xintrea
()

Сложное вычисление на Python и засовывание результата в Ansible

Форум — General

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

Делаю так:

  - name: Вычисление суммы
    shell: |
      python <<< "print 1+2"
    register: result

  - debug:
      msg: Результат {{result}}

И при исполнении плейбука ошибка:
fatal: [generatorHost]: FAILED! => {"changed": true, "cmd": "python <<< \"print 1+2\"\n", "delta": "0:00:00.001918", "end": "2020-11-24 15:25:22.719117", "msg": "non-zero return code", "rc": 2, "start": "2020-11-24 15:25:22.717199", "stderr": "/bin/sh: 1: Syntax error: redirection unexpected", "stderr_lines": ["/bin/sh: 1: Syntax error: redirection unexpected"], "stdout": "", "stdout_lines": []}

При этом простое выполнение команды в командной строке работает правильно:
$ python <<< "print 1+2"
3

Как сделать так, чтобы получить значение питоновской команды?

 ,

Xintrea
()

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