Содержание

Прочее

Добавление пункта в контекстное меню Dolphin

Файлы, описывающие пункты меню создаются в "~/.kde/share/kde4/services/ServiceMenus/" и имеют расширение "desktop"

Пример файла "video-convert.desktop":

[Desktop Entry]
Type=Service
Actions=to-mkv-ffmpeg;to-mkv-mkvmerge;to-mkv-mencoder    # Три пункта подменю
ServiceTypes=KonqPopupMenu/Plugin,video/.*               # Пункт меню появляется при выборе видео файла
X-KDE-Priority=TopLevel
X-KDE-Submenu=Преобразовать видео...                     # Пункт меню, включающий подменю

[Desktop Action to-mkv-ffmpeg]
Exec=to-mkv-ffmpeg %u                                    # Команда запуска
Icon=preferences-desktop-display-color                   # Иконка
Name=В MKV (ffmpeg)                                      # Название пункта меню

[Desktop Action to-mkv-mkvmerge]
Exec=to-mkv-mkvmerge %u
Icon=preferences-desktop-display-color
Name=В MKV (mkvmerge)

[Desktop Action to-mkv-mencoder]
Exec=to-mkv-mencoder %u
Icon=preferences-desktop-display-color
Name=В MKV (mencoder)

Подробней:

[Desktop Entry] - начало описания.
Type - тип .desktop файла должен быть Service.
Actions - через точку с запятой перечисляются действия (action1;action2;), каждому из которых должен соответствовать раздел ([Desktop Action action1], [Desktop Action action2]).
ServiceTypes - mime-типы файлов, перечисляются через запятую, all/allfiles соответствует всем файлам, all/all всем файлам и каталогам, inode/directory - лишь деректориям. KonqPopupMenu/Plugin - без этого срабатыает не на всех типах файлов. Т.е. можно описать конкретные mime-типы файлов (картинки, музыка, html файлы и т.д.), в случае выбора которых, появится данный контекстный пункт. Список mime-типов можно найти здесь.
X-KDE-Submenu=подменю - этот параметр следует добавить, если хочется заключить действия в отдельное подменю с именем "подменю".
[Desktop Action имя] - описание действий контекстной строки.
Exec - команда на запуск (команда или скрипт). Полный перечень передаваемых аргументов можно найти здесь.
Icon - имя иконки. Найти подходящую можно в папке /usr/share/icons/[ваша тема]/22x22, достаточно указать имя иконки, без расширения.
Name - текст, отображаемый в качестве пункта меню.

Найдено здесь.

Простой пример GUI на PERL (QT)

14 января 2014г. Fedora 20.

Создаёт форму со строкой редактирования и кнопкой.
В строку редактирования передаётся первый аргумент командной строки.
При нажатии кнопки, выводится окно с сообщением, при закрытии которого, в стандартный вывод выводится содержимое строки редактирования и программа завершается.

Исходник

#!/usr/bin/perl

# ------------------------------------------------------------------------------------------ fMain class
package fMain;

use strict;
use utf8;	# Поддержка UTF8 в графике
use Encode qw(decode);	# Для преобразования командной строки
use QtCore4;
use QtGui4;
use QtCore4::isa qw (Qt::Dialog);	# Для главной формы используем класс QDialog
use QtCore4::slots bRunPressed => [];	# Слот для обработки нажатия кнопки

my $edit;

sub NEW {
	shift->SUPER::NEW(@_);
	resize (400,70);	# Изменение размера главной формы
	$edit = Qt::LineEdit (@ARGV[0],this);	# Строка редактирования с текстом, передаваемым в качестве первого параметра при запуске программы
	$edit->move (10,20);	# Координаты строки редактирования
	$edit->resize (190, 22);	# Размер строки редактирования
	my $bRun = Qt::PushButton ("Нажми меня...",this);	# Кнопка
	$bRun->move (200,20);	# Координаты кнопки
	$bRun->resize (190, 22);	# Размер кнопки
	this->connect ($bRun, SIGNAL 'clicked()', SLOT 'bRunPressed()');	# При нажатии кнопки вызвать функцию
}
# Функция обработки нажатия кнопки
sub bRunPressed {
	Qt::MessageBox::about (this, "Проверка", "Пример Message box.");
	binmode (STDOUT,':utf8');	# Вывод в консоль осуществлять в UTF8
	print $edit->text()."\n";	# Вывод в консоль содержимого строки редактирования
	exit();
}
1;

# ------------------------------------------------------------------------------------------ Main
@ARGV = map {decode ("UTF8", $_)} @ARGV;	# Преобразовать командную строку
my $app = Qt::Application (\@ARGV);	# Создать экземпляр приложения
my $mainWin = fMain->new();	# Создать экземпляр окна (QDialog)
$mainWin->show();
exit $app->exec();

Результат

Прибить <defunct> процесс

Определяем PID и PPID:

ps -ef | grep defunct
root     28122 28121  0 Sep29 ?        00:00:00 [sw-watcher] <defunct>

Прибиваем:

kill -9 28122 28121

Сборка драйвера MySQL для QT 4.x на Windows

  1. Надо скачать исходники qt (qt-everywhere-opensource-src) (http://qt.nokia.com/downloads).
  2. Установить qt creator (qt-creator-win-opensource) (http://qt.nokia.com/downloads).
  3. Найти, в каких папках находятся qmake.exe и mingw32-make.exe, прописать в Path путь к ним.
  4. Установить MySQL в полной комплектации в папку c:\MySQL (http://dev.mysql.com/downloads/mysql/#downloads).
  5. c:\MySQL\lib\libmySQL.dll копируется в папку с программой.
  6. cd <QTDIT>\src\plugins\mysqldrivers\mysql
  7. В файле mysql.pro добавить - CONFIG += release
  8. qmake -o Makefile "INCLUDEPATH+=C:\MYSQL\INCLUDE" "LIBS+=C:\MYSQL\LIB\LIBMYSQL.LIB" mysql.pro
  9. mingw32-make.exe
  10. В папке приложения создается папка sqldrivers туда копируется полученная dll

Установка кодировки для MYSQL сервера в UTF8 (Scientific Linux 6.2)

В файле "/etc/my.cnf" в секцию "[mysqld]" добавить:

init-connect="SET NAMES utf8"
skip-character-set-client-handshake
default-character-set=utf8

И перезапустить mysqld.

Обновление ОС до следующей версии

Fedora 20 -> 21

yum update yum
yum clean all
LC_ALL=en_US yum --releasever=21 distro-sync --nogpgcheck --skip-broken

где "21" номер версии ОС, до которой необходимо обновиться.

Fedora 24 -> 25

dnf upgrade --refresh
dnf install dnf-plugin-system-upgrade
dnf system-upgrade download --refresh --releasever=25
dnf system-upgrade reboot

Scientific Linux 6.5 -> 6.6

yum update --releasever=6.6 sl-release
yum clean all
yum update

где "6.6" номер версии ОС, до которой необходимо обновиться.

Автоматическая установка "IPv4 WAN Адреса" в CommuniGate Pro 5.4.1

Задача: Сменить "IPv4 WAN Адрес" в случае смены динамического адреса при ppp подключении.

Скачиваем "CLI.pm" со страницы http://www.communigate.com/CGPerl/. Помещаем его в папку модулей Perl, например, в "/usr/lib/perl5/site_perl/" (для FC 14).
В "/var/CommuniGate/bin/" создаём файл "set-network":

#!/usr/bin/perl
use CLI;
my $cli = new CGP::CLI ({PeerAddr=>'localhost',
                         PeerPort=>106,
                         login =>'postmaster@domain.com',
                         password=>'password-postmaster',
                         SecureLogin=>0})
           || die "Can't login to CGPro: ".$CGP::ERR_STRING."\n";
$addr=(split (" ", (split (":", `/sbin/ifconfig ppp0|grep 'inet addr:'`))[1]))[0];
$cli->SendCommand ('SETNETWORK {WANAddress="['.$addr.']";}');
$cli->SendCommand ('REFRESHOSDATA');
$cli->Logout();

PeerAddr - имя (адрес) хоста, на котором расположен CommuniGate Pro
login - Имя пользователя, имеющего права на изменение настроек сети в CommuniGate Pro
password - Пароль вышеуказанного пользователя

Скрипт так-же обновляет информацию об операционной системе, в том числе, об активных сетевых интерфейсах.

Данный скрипт необходимо запускать при переподключении ppp, например из "/etc/ppp/ip-up.local"
Так-же вышеуказанный скрипт можно использовать и после получения адреса по DHCP (вызывать из "/sbin/ifup-local")

Исправление искажений звука при проигрывании flash в браузерах

Данная тема затронута на багтрекере RedHat. Касается Fedora 14-x86_64.
При установке официального flash плагина от Adobe (Копия) наблюдается искажение звука при проигрывании flash во всех браузерах, использующих данный плагин (Mozilla Firefox, Google Chrome, Opera).

Для исправления необходимо установить пакет memcpy-1.1-1.fc14.x86_64.rpm (Копия).

Вариант 1. Исправление звука в конкретном приложении:
Запуск, например, firefox, должен осуществляться следующей командой:

LD_PRELOAD /opt/memcpy/memcpy.so firefox

Вариант 2. Исправление звука во всех приложениях, запускаемых пользователем:
В файл ~/.bashrc добавляется строка:

export LD_PRELOAD=/opt/memcpy/memcpy.so

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

При использовании второго варианта возможно проявление проблем в каких-либо приложениях. Сам использую именно этот вариант.

Включение Framebuffer в консоли (устарело)

Framebuffer позволяет использовать в текстовой консоли более высокое разрешение экрана (для увеличения количества знакомест на экране) и устраняет поломку русских шрифтов при переключении из X-ов в текстовую консоль. Как дополнение - позволяет смотреть видео с mplayer в текстовой консоли без X-ов.

Задача:

Включить разрешение 1024x768 с 32 битной цветностью и частотой кадров монитора 51 герц (LCD 17\").

Необходимо передать ядру параметр \"vga=ask\" в загрузчике (при выводе меню загрузки grub нажать \"a\" и дописать через пробел \"vga=ask\", потом нажать \"Enter\"). Будет выведен список доступных разрешений экрана (1024x768x32 = 0x318).

Варианты:

1) Дописать в строке загрузки ядра \"vga=0x318\"

kernel /boot/vmlinuz-2.6.27.24-170.2.68.fc10.x86_64 ro root=/dev/sda1 rhgb quiet vga=0x318

У меня этот вариант не пошёл (устанавливалась частота неподдерживаемая моим монитором), хотя при \"vga=ask\" режим включался корректно.

2) Пересоздать файл \"/etc/fb.modes\" для своего монитора и передать ядру \"vga=0x318\"

  • Сохраняем в сторонке \"/etc/fb.modes\"
  • Создаём новый \"/etc/fb.modes\":
gtf 1024 768 51 -f > /etc/fb.modes

3) Передать ядру полную информацию о режиме:

kernel /boot/vmlinuz-2.6.27.24-170.2.68.fc10.x86_64 ro root=/dev/sda1 rhgb quiet video=vesafb:1024x768@51 vga=0x318

В случае третьего варианта править \"/etc/fb.modes\" не надо.

Для изменения темы надо установить пакеты \"plymouth-theme*\" (в F12 доступны - charge, fade-in, solar, spinfinity)

/usr/sbin/plymouth-set-default-theme NewTheme
/usr/libexec/plymouth/plymouth-update-initrd

где \"NewTheme\" - одна из вышеуказанных тем.

Использование виртуальной машины KVM.

Необходимо наличие пакетов KVM и QEMU.

Инициализация модулей (наверное, необязательно):

/sbin/modprobe kvm
/sbin/modprobe kvm-intel

Установка полных прав на устройство KVM:

chmod 777 /dev/kvm

Создание образа диска гостевой ОС (windows.img размером 6 гигабайт):

qemu-img create windows.img -f raw 6G

Установка гостевой ОС (инсталлятор в cdrom):

qemu-system-x86_64 -hda windows.img -cdrom /dev/cdrom -boot d -m 384 (вместо /dev/cdrom можно указать файл iso)

Запуск заданий cron в зависимости от временнОй зоны

Задача:

  • Компьютер, на котором запускается задание находится в зоне "Europe/Moscow".
  • Задание должно запускаться во время, соответствующее зоне "Europe/London".
  • Должны учитываться переходы зимнее/летнее время.

Решение

Это "костыль", пока crond не научится работать с TimeZone.

В "/etc/cron.daily" создаётся скрипт "cron-timezone" с таким содержимым:

#!/bin/sh

function TZ {
 date --date='TZ="'$1'" '$2 +"%H"
 }  

CF="/etc/cron.d/events-timezone"

echo "SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=\"root\"
LC_ALL=ru_RU.UTF-8
" > $CF

echo "10 `TZ Europe/London 07` * * * user start-program-in-other-timezone-1" >> $CF
echo "45 `TZ Europe/London 12` * * * user start-program-in-other-timezone-2" >> $CF

Каждую ночь данный скрипт пересоздаёт файл "/etc/cron.d/events-timezone", подставляя вместо "07" и "12" часов - "09" и "14".
Т.е., первое задание будет запускаться в 07:10 по лондонскому времени (в 09:10 по московскому), второе - в 12:45 по лондонскому времени (в 14:45 по московскому).

Удалить "пустые" абзацы в LibreOffice

Правка - Найти и заменить…
Включить "Регулярные выражения"
Найти: ^$
Заменить: пустая строка

Поместить файлы SSL сертификата (CRT) и ключа (KEY) в контейнер PFX для IIS

openssl pkcs12 -export -in server.crt -inkey server.key -out server.pfx

Конвертация PDF в PNG

convert -density 150 input.pdf -quality 90 output.png

Отсюда

Установка ffmpeg-php на CentOS 6

Установлен ffmpeg и ffmpeg-devel из репозитория atrpms.
ffmpeg и ffmpeg-devel версии 2.2.1.
Установлен php-devel с phpize.

Скачиваем ffmpeg-php:

git clone https://github.com/tony2001/ffmpeg-php.git

Далее, команды:

cd ffmpeg-php/
phpize
./configure
make
make install (под рутом)

Копируем полученный ffmpeg-php/modules/ffmpeg.so в папку /usr/lib64/php/modules (или проверяем его нпличие) (путь получен с помощью phpinfo(), перемення core/extension_dir).
Создаём в папке /etc/php.d файл ffmpeg.ini следующего содержания:

; Enable ffmpeg extension module
extension=ffmpeg.so

Перезапускаем httpd.
В phpinfo() наблюдаем секцию ffmpeg

Замирает Dolphin после запуска.

При запуске Dolphin некоторое время (до 30 секунд) не отвечает. Данная проблема появилась после подключения в Dolphin сетевых папок.

Необходимо удалить файл "~/.kde/share/apps/kfileplaces/bookmarks.xml".
Найдено здесь.

Корректное отображение кириллицы в текстовой консоли

В папке "/etc/profile.d/" создать файл с содержимым:

setfont Cyr_a8x16

Fedora 21,22

Отключить блокировку плагинов в Firefox

В about:config установить параметр extensions.blocklist.enabled в false.

Для Shockwave Flash можно ещё изменить:

plugin.state.flash -> 2
plugins.click_to_play -> false 

Создание картинки, состоящей из миниатюр изображений с использованием пакета ImageMagick

montage *.jpg -geometry 150x+5+5 -tile 8x -frame 1 -texture granite: -bordercolor black -shadow out.png

Создаёт файл "out.png" из миниатюр всех "JPG" файлов текущей директории. Каждая миниатюра имеет размер по ширине 150 точек (высота масштабируется, соответственно пропорциям исходных изображений), расстояние между миниатюрами - 5 точек. В качестве фона используется текстура "granite".

Снижение до минимума приоритета выполняемой задачи

Перед выполняемой командой вставить:

nice -n 19 ionice -c3 -n7 КОМАНДА

Конвертация всех png файлов текущей папки в jpg в другую папку

mogrify -format jpg -path ./converted *.png

Замена цвета на прозрачность в графическом файле

convert inputimage -fuzz 5% -transparent white outputimage
  • inputimage - входной файл
  • white - цвет, который необходимо заменить на прозрачность
  • fuzz 5% - похожие на 5% цвета тоже делать прозрачными
  • outputimage - выходной файл

Заставить kmix управлять звуковыми каналами минуя pulseaudio

В файле "~/.bash_profile" добавить строчку:

export KMIX_PULSEAUDIO_DISABLE=1

Разбить файл на меньшие части.

split -d -b 100MB file.ext file.ext.

Разбивает файл file.ext на части не более 100 мегабайт (-b 100MB), используя цифровые суффиксы (-d), используя file.ext. в качестве префикса.
Выходные файлы имеют вид file.ext.00, file.ext.01 и т.д.

Узнать, какому пакету принадлежит файл

yum whatprovides libQtGui.so.4

Запуск приложения с локалью, отличной от системной

LC_ALL="ru_RU.cp1251" приложение

Подключение MySQL базы в OpenOffice через JBDC

  1. Установить пакет mysql-connector-java
  2. В OOo - Меню → Сервис → Параметры → Java → Путь класса → Добавить архив → /usr/share/java/mysql-connector-java.jar
  3. Запустить OOo Base. В мастере баз данных: Подключиться к существующей базе данных → MYSQL → Далее → Соединение с использованием JBDC → Далее.
  4. Кнопка - \"Проверить класс\".
  5. Заполнить поля параметрами подключения. Далее. Ввести имя пользователя. Кнопка \"Тест соединения\". Далее. Готово.

Экспорт таблицы MySQL в файл CSV

SELECT * INTO OUTFILE '/media/storage/tmp/types.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM types WHERE 1

Экспортирует таблицу \"types\" в файл \"/media/storage/tmp/types.csv\"

Наверх