Qt: настройка системы рендеринга
Линуксоиды разучились пользоваться консолью? :) Сломал себе систему рендерига до такой степени, что кеды показывали лишь черный экран с курсором.
Поскольку есть лишь консоль, то гугление в линксе на тему расположения конфига, в котором указана система рендеринга показывало лишь результаты, где народ рекомендовал поставить kcm-qt-graphicssystem.
Все это хорошо, но иксов-то нет.
А на деле все оказалось очень просто. Этот пресловутый модуль kcm просто правит содержимое файла
~/.kde/env/qt-graphicssystem.sh
В этом файле лишь одна строчка:
export QT_GRAPHICSSYSTEM=native
Файл есть не что иное, как глобальный экспорт переменной в сеансе kde. Нет никаких специальных файлов конфигурации (привет, dconf2!).
Поэтому если вы угробите свои кеды - просто пропишите другую систему в этот файл: native, raster или opengl.
Eclipse: корявый интерфейс в KDE
Уже несколько вечеров я ломаю голову над вопросом: “почему в eclipse 4.5 (mars) застывает интерфейс при открытии выпадающих списков?”
Проявляется так:
- открываем выпадающий список
- пытаемся выбрать в нем пункт, а пункт не выбирается
Закрыть такой “зависший список можно только прицельным щелчком на стрелочке или нажатием на esc.
Из других интерфейсных проблем: наползание виджетов друг на друга как на скрине в начале статьи.
И последняя проблема - это рандомные креши.
К слову, все это происходит в kde 4.
Я грешил на все: кривые rpm, неправильную сборку самой eclipse и всякое-разное.
Но оказалось все гораздо проще: креши и фризы связаны с темой oxygen-gtk (кто-бы мог подумать). И самый первый репорт датируется аж 2014 годом. И его вроде даже закрыли.
В тему того же бага несколько другой: Bug 470994 - [GTK3] Eclipse Mars on Linux with oxygen-gtk theme looks unfinished.
Он как раз про вторую проблему с перекрывающимися виджетами.
Решается все просто: ставим нормальную тему gtk2 (bluecurve можно).
И выбираем ее в настройках кедов.
Теперь с виджетами все ок, а выпадающие списки работают.
Bash: копирование файлов из списка
Задача: у нас есть файл со списком стилей/скриптов/бинарников (нужное подчернуть) которые надо скопировать или переместить в другое место.
Да. Такие задачи бывают. :)
Допустим выглядит файл как-то так
$ cat css.txt
css/reset-ls.css
css/b-browser.css
css/reg-form.css
css/old/pop-up.css
Пути либо относительные, либо полные.
Скопировать все в новый локейшн можно простым однострочником
$ for i in $(cat css.txt); do cp $i /tmp/; done
Nginx: редирект на другую платформу/площадку при 404
Казалось бы: что может быть проще, чем взять два бекенда и одну точку входа.
Когда первый бекенд не отвечает (или отвечает, но 404), то перенаправлять запрос (как можно прозначнее для пользователя) на второй бекенд.
Правильно! :) Проще быть ничего не может.
location / {
# Отправляем все 404 на @backendB
error_page 404 = @backendB;
proxy_intercept_errors on;
log_not_found off;
# Try the proxy like normal
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:8081;
}
location @backendB {
# Резервный бекенд
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:8082;
# Настоящую 404ую мы уже получим от этого бекенда.
}
Fedora: сброс политик SELinux в дефолт
SELinux штука очень мощная и полезная. Но вот незадача: иногда ее настроить бывает слишком тяжело. И можно просто довести систему до состояния, когда она не загружается (особенно если играться с политикой доступа к каталогам :)).
Для таких случаев нужно уметь сбрасывать политики в дефолтное состояние.
Сначала загружаем систему в failback-режиме (там selinux отключен).
Теперь
setenforce 0
# dnf erase selinux-policy selinux-policy-targeted
# dnf mv /etc/selinux/targeted{,.backup}
# reboot
После перезагрузки системы selinux будет отключен.
Нужно поставить пакеты, которые мы удаляли.
# dnf install selinux-policy selinux-policy-targeted
И теперь включить сам механизм. Для этого отредактируем файл /etc/selinux/config и заменим
SELINUX=disabled
на
SELINUX=enforcing
После очередной перезагрузки мы увидим, что с SELinux все хорошо.
Если же вам повезло и вы можете загрузить систему в нормальном режиме, то шаги выше можно делать без перезагрузок.