среда, 22 октября 2008 г.

Переключение раскладки в KDE

Статья взята отсюда

Небольшое, совсем маленькое руководство для тех, кто ещё мучается или совсем маленько мучается с переключением раскладки в KDE с русской на латиницу и наоборот. Цель: сделать «как в винде». А именно, кроме переключения раскладки, добиться сохранения её состояния в каждом окне.


1. Чиним переключалку.


Чтобы заработало само переключение, идём по следующему пути: «Меню KDE» => «System Settings» => «Regional & Language» => «Раскладка клавиатуры».
Здесь удаляем всё, кроме нашей родной Russia. Не бойтесь, латинская раскладка будет. Просто поставьте галочку «Включить латинскую раскладку». Всё, проблема переключения решена. И тут возникает другая проблема: флажки стран не меняются при переключении раскладки.



2. Настраиваем индикатор.


Здесь нам на помощь приходит замечательная программа kkbswitch замечательного украинского программиста Леонидна Цейтлина. Например, в Kubuntu, она устанавливается так:
sudo apt-get install kkbswitch

После установки появится значок в трее. У меня по-умолчанию почему-то вместо российского триколора был белый квадратик с цифрой «2». В настройках можно сменить значок.
А можно поставить буквенную индикацию, если вам не нравятся флажки.



3. Сохранение состояния раскладки в разных окнах.


Тут дело вкуса. Для тех, кому это надо, лезем в настройки kkbswitch, и в списке «Раскладка действует для:» выбираем нужный вам вариант. Теперь при переключении, например, в консоль, вам не надо будет переключать раскладку на латиницу, если вы только что писали на русском письмо в вашем почтовом клиенте.

4. Меняем иконки флажков.


Мне «родные» иконки kkbswitch показались не красивыми. Если вы тоже так считаете, то за симпатичными флажками далеко ходить не надо. Они находятся в пределах Хабра: http://habrahabr.ru/blog/iconoskaz/33750…
Скачайте, распакуйте и в настройках поменяйте иконки.



5. Ещё немного.


К пункту «1»:
Не забудьте выбрать в списке «Вариант раскладки» пункт «winkeys», иначе у вас запятая будет на «семёрке», буква «э» на тильде и так далее.

Настроить сочетания клавиш (например, многим привычное Ctrl+Shift) можно там же, во вкладке «Параметры ХКВ». Здесь же можно включить индикацию светодиодами на клавиатуре (включённый Scroll Lock — русский, выключённый — латиница).

Также поставьте галочку «Игнорировать параметры системы».

P.S. Естесственно, это руководство касается не только русской раскладки. На её месте может быть любая другая, которую вы используете. Знаю, что тема уже тёрта-перетёрта, но эта проблема весьма популярна на фоне массовой «убунтунизации» и чтобы не объяснять каждый раз людям одно и то же, можно «кидаться» в них ссылкой на это руководство.

Допольнительно:
  • Настройка xkb — стандартной системы переключения раскладок в KDE.

  • Частичное решение проблемы нерабочих сочетаний при русской раскладке от посмотреть профиль m11: с помощью установки в Control Center => Keyboard Shortcuts => Application Shortcuts в качестве альтернативных сочетаний клавиш для "Вставить" — Ctrl+М, для "Вырезать" — Ctrl+Ч и так далее.
  • среда, 15 октября 2008 г.

    Настройка тачпада в LINUX

    Так как я являюсь облодателем ноута мне пришлось столкнуться с некоторой очень интересной проблемой.
    Скорочть мышки подключенной по USB и тачпада не то что бы не совподают
    они просто совершенно разныею
    Чтобы провести указатель из одного угла экрана в другой надо раз 10-15 провести пальцем по тачпаду.
    решение было найденно быстро
    немного погуглив я нашел следующий выход из сложившейся ситуации
    в файле /etc/X11/xorg.conf
    добовляем в секцию

    "InputDevice"
    где
    Identifier "Synaptics Touchpad"

    следующие три строки

    Option "MinSpeed" "0.7"
    Option "MaxSpeed" "1.2"
    Option "AccelFactor" "0"

    Тобиш
    прим медленном движении пальца по тачпаду
    при быстром
    и степень ускорения

    Еще есть пакет называется он
    gsynaptics
    Много полезной информации по настройке тачпада можно посмотреть здесь

    мой конфиг для тачпада следующий...

    Section "InputDevice"
    Identifier "Synaptics Touchpad"
    Driver "synaptics"
    Option "SendCoreEvents" "true"
    Option "Device" "/dev/psaux"
    Option "Protocol" "auto-dev"
    Option "HorizScrollDelta" "0"
    Option "MinSpeed" "0.7"
    Option "MaxSpeed" "1.2"
    Option "AccelFactor" "0"
    Option "MaxTapTime" "180"
    Option "MaxTapMove" "220"
    Option "VertScrollDelta" "100"
    Option "SHMConfig" "true"
    EndSection


    Но скроллинг и таппы не заработали
    поиски продалжаются
    Как победю так сразу статью и допишу

    пятница, 12 сентября 2008 г.

    Если устройство в Linux работать не хочет...

    Еще одна помоему ОЧЕНЬ нужная статья все с тогоже ресурса.

    Если устройство в Linux работать не хочет...

    ... то не надо сразу кричать "Linux - отстой, Windows рулит", потому как часто решение - в шаге от вас. Немного терпения, и всё скорее всего получится.

    Устройство в Линукс не работает - что делать?
    Для того, чтобы попробовать решить проблему, требуется:

    1. Точно узнать название устройства и подробности его работы. Лучший способ - посмотреть логи, большинство которых находится в каталоге /var/log (они доступны для просмотра только пользователю root)
    • Если устройство подключается к USB - пишем в консоли lsusb > lsusb.txt
    • Если это встроенное устройство или подключено к ISA/PCI, пишем lspci > lspci.txt
    • Так же для обращения в поиск и форум потребуется вывод команды dmesg
    • Если проблема с видеокартой или вообще видеоподсистемой - сохраняйте /var/log/X.org.conf или /var/log/XFree86.conf (у кого он остался)

    2. Учитесь читать и анализировать логи - в них часто не только ответ на ваш вопрос, но и путь к его решению. Это приходит с опытом, но надо же с чего-то начинать...
    Пример: пользователь жалуется, что в ноутбуке при подключении USB-мыши Линукс зависает. Это в общем не характерное для Линукс поведение, тем более в случае USB-шины, может быть вызвано:
    а) кривым драйвером (что редко) или
    б) кривым оборудованием (что чаще).

    Опытный факт: если в оборудование работает неправильно, ядро об этом будет сыпать сообщениями типа Warning и FATAL часто, пока проблема не решится.

    Смотрим логи dmesg: одна из строк выглядит так

    PCI: BIOS Bug: MCFG area at e0000000 is not E820-reserved
    Кто владеет английским на уровне школы, тот может догадаться, что в BIOS какая-то ошибка. Смотрим дальше:

    PCI: Bus #03 (-#06) is hidden behind transparent bridge #02 (-#03) (try 'pci=assign-busses')
    Please report the result to linux-kernel to fix this permanently
    Так и есть: а вот и возможное решение нашей проблемы! Об этой проблеме ядро "скажет" ещё не раз:

    PCI: Using ACPI for IRQ routing
    PCI: If a device doesn't work, try "pci=routeirq". If it helps, post a report
    PCI: Cannot allocate resource region 3 of device 0000:00:00.0
    Какой-то регион 3, какие-то устройства... не сразу можно понять. Интересно, где это себя проявляет?

    ACPI: PCI Interrupt 0000:00:13.2[A] -> GSI 19 (level, low) -> IRQ 17
    ehci_hcd 0000:00:13.2: EHCI Host Controller
    ehci_hcd 0000:00:13.2: new USB bus registered, assigned bus number 1
    Это USB-устройства - всё сходится. Зависание Линукса при втыкании USB-мыши происходит благодаря кривизне рук программистов, написавших BIOS. Теперь понятно не только кто в этом виноват и куда копать, но и один из возможных методов решения.

    Помогает либо установка более нового ядра, чем то, которое уже стоит, либо, как ни странно, установка более старого.

    3. Локализуем проблему. Что именно не работает?
    • Если это принтер, за это отвечает подсистема CUPS, поэтому официальный сайт в помощь: проверьте, поддерживается ли ваш принтер и если да, то в какой степени. Попробуйте установить более свежую версию CUPS, походите по форумам - желательно с логами, версией ядра и подробным описанием проблемы.
    • Если это сканер - наш рулевой это подсистема SANE и гугление по словам sane linux _модель_сканера_.
    • Работу звуковых карт обеспечивает проект ALSA, где можно так же узнать о поддержке оборудования. Для этого имеет смысл так же попробовать установить или собрать самому более свежее ядро Линукс (в ядре содержится большое количество драйверов).
    • За сенсоры и термодатчики на материнских платах отвечает проект lm85, который состоит из драйверов ядра и утилит работы с ними.
    • Источники бесперебойного питания (UPS) поддерживаются пакетом apcups.

    Попытаться устранить проблему при помощи гугления по методу _имя_проекта_ linux _название устройства_. Очень и очень часто решение есть и ждёт своего часа. Если гугление и прочие методы не принесли желаемого результата - остаётся подождать, пока проблему решат и / или добавят драйвер устройства в ядро или программы связанных с устройством проектов. В конце концов, двойную загрузку (dual boot) с другими операционными системами никто не отменял.

    Ссылки и благодарности

    Пост был вдохновлён комментарием _Yuriy_ на opennet, в котором говорилось, что "написать обзор может каждый дурак, а вот что делать, когда устройство не пашет?" Насчёт первой части утверждения можно и поспорить, а во второй части есть сермяжная правда - надеюсь, кому-нибудь этот пост пригодится.

    Волшебная клавиша SysRq / Printscreen

    Еще одна статейка взятая вот ОТСЮДА!!!

    Достаточно редко, когда я провожу над своей системой бесчеловечные ядерные эксперименты, она зависает наглухо - ничто не совершенно в этом мире. Именно для этих целей в ядре Линукс имеется замечательная возможность: Волшебная клавиша SysRq.



    Что это такое?

    Если внимательно посмотреть на клавиатуру, там обнаружится кнопка PrtSc / SysRq. Подавляющее большинство виндоуз-пользователей полагают, что она специально присутствует на клавиатуре для скриншотов - забывая, что эта кнопка появилась на клавиатуре задолго до появления редмонтовской конторы.
    На самом деле эта клавиша - наша единственная прямая связь с ядром, которая работает всегда. При помощи некоторых комбинаций клавиш можно заставить систему аварийно сбросить данные на диски, размонтировать все файловые системы в режим "только-чтение" и перезагрузиться даже при наглухо зависшей системе.



    Magic SysRq это комбинация клавиш, напрямую перехватываемая ядром и может быть использована для аварийного выключения. Так как Magic SysRq выполнена как часть драйвера клавиатуры, она гарантировано работает почти всегда - почти, если только ядро само по себе работоспособно.


    Как ей пользоваться?
    Сначала нужно убедиться, что она включена: в конфиге ядра CONFIG_MAGIC_SYSRQ должно иметь значение Y (по крайней мере в дефолтном ядре Дебиана это так). Дальше применение такое: нажимаем и держим ALT, нажимаем SysRq, отпускаем всё и нажимаем одну из "командных" клавиш - ниже их краткое описание.


    Командные клавиши
    Ниже перечислены наиболее полезные клавиши, которые могут пригодиться для тех, кто проводит бесчеловечные эксперименты над системой или устанавливает проприетарные драйвера. Чтобы их легче было запомнить, будет написано слово, в котором эта буква есть по смыслу. Всё сказанное ниже актуально по крайней мере для ядер 2.6.20 и выше.

    Одновременное нажатие клавиш Alt + SysRq +

    'H'elp - выводит все доступные возможности SysRq, выделяя большой буквой клавишу действия;

    loglevel'0'-'8' - позволяет менять уровень подробности вывода от 0 (только критические сообщения) до 8 (самый подробный режим);

    re'B'oot - немедленная перезагрузка системы, прямо как клавиша RESET (без синхронизации и размонтирования файловых систем);

    'C'rashdump - выполняет директиву kexec для перезагрузки, чтобы получить сведения об ошибках;

    hol'D's - показывает все блокировки, которые держат устройства или файлы;

    power'O'ff - корректно выключает систему (если настроено и поддерживается, обычно это прямая команда отключения);

    'S'ync - пытается синхронизировать все примонтированные файловые системы, при этом пишет в консоли "Emergency Remount R/O" - когда этот процесс закончится, должно написать "Emergency Remount Complete";

    'U'nmount - пытается перемонтировать все примонтированные файловые системы в режим "только-чтение";

    show'T'asks - выдаст список текущих задач и информацию о них в текущую консоль;

    'N'ice - используется для того, чтобы сделать задачи реального времени с изменяемым приоритетом;

    sho'W'-blocked-tasks - выдаст список всех непрерываемых (заблокированных, ждущих окончание ввода-вывода) задач;

    show'M'em - выдаст информацию о доступной и занятой оперативной памяти, а так же степени использования своп-файла;

    'F'ull - вызвать oom_kill (out-of-memory kill) для прерывания приложений, забравших слишком много памяти (может занять продолжительное время);

    secure acces 'K'ey - убивает все программы на текущей консоли, но не применяйте её на консоли, где запущены иксы (графический сервер будет остановлен и вы не сможете увидеть то, что печатаете и то, что ответит SysRq);

    un'R'aw - забирает контроль над мышью и клавиатурой у Х-сервера, что полезно, если Х-севрвер завис: так можно перейти в консоль, убить Х-сервер или проверить логи;

    t'E'rm - послать сигнал завершения работы SIGTERM всем процессам, кроме init.

    K'I'LL - послать сигнал немедленного завершения работы SIGKILL всем процессам, кроме init.


    То есть, например, для аварийной синхронизации данных жмём ALT+SysRq + s, далее ALT+SysRq + u и после этого можно жать на ресет или, что тоже самое ALT+SysRq+b

    Ссылки
    Помимо документации к ядру, можно почитать об этом тут и здесь.

    Как сделать бекап при помощи dd: используем dd для backup

    Еще одна статейка из хорошего блога.

    Оригинал взят ОТСЮДА.

    Для того, чтобы сделать backup (бэкап, резервная копия) винчестера для последующего восстановления вовсе не нужны коммерческие, проприетарные утилиты - есть старый, как мир, dd. С помощью dd очень удобно и просто делать бекапы, и всё, что нужно сделать - просто правильно его использовать.


    Эпиграф
    Только зануды делают резервные копии:
    настоящие мужчины просто
    закачивают все важное на ftp,
    позволяя остальным отзеркалировать это.
    Линус Торвальдс



    Утилита dd есть в любом дистрибутиве, и даже в Knoppix, который можно использовать для восстановления данных, и вам не потребуются разные платные примочки типа Paragon backup или Symantec backup. То есть с помощью dd можно делать backup системы, в том числе backup сервера. Для этого так же потребуется любой архиватор, в данном примере это gzip. Приведён вариант с архивированием на другую машину по сети с использованием SSH или netcat.


    1. Приготовления

    Загружаемся с любого LiveCD диска с Linux / BSD, залогиниваемся под root-аккаунтом.
    Убеждаемся, написав в консоли df, что ни один из тех разделов, что мы собираемся копировать, не примонтирована на запись. Решаем, куда будем архивировать данные: это может быть другой раздел на винчестере, внешний жёсткий диск или по сети.


    2. Создаём резервную копию

    В данном примере /dev/hda это винчестер, который архивируем, а /dev/sda1 - это раздел внешнего винчестера или другая партиция, на которую архивируем, hda.img.gz - получившийся сжатый файл-образ.

    2.1 Внешний винчестер или другой раздел диска

    Монтируем устройство, куда мы будем архивировать данные
    # mount -t vfat /dev/sda1 /mnt/sda1
    Перегоняем данные с одного винчестера на другой. Так как данных много, полезно их сжать - и никс-системы позволяют это делать "на лету". В примере использван GZip, но подойдёт и любой другой (например, bzip2 или p7zip).
    Для этого:
    # dd if=/dev/hda conv=sync,noerror bs=64K | gzip -c > /mnt/sda1/hda.img.gz
    Здесь происходит архивирование с одновременным сжатием, результат чего записывается в файл hda.img.gz
    Параметр "conv=sync,noerror" указывает dd не читать блок, если при этом происходит ошибка, но записать в архивируемый файл-образ данные, чтобы размер блока не менялся.
    Параметр "bs=64K" это размер блока в килобайтах - использование такого большого размера блока ускоряет процесс копирования. Параметр bs можно сделать ещё больше, а именно равным размеру кеша копируемого диска (например bs=8m), это сильно ускорит весь процесс.
    Выходной поток передаётся по конвейеру для сжатия gzip, результат выводится в файл на другом диске.

    2.2 Удалённо по сети
    Всё то же самое, что в п.2.1, но с добавлением в конвейер SSH:
    # dd if=/dev/hda conv=sync,noerror bs=64K | gzip -c | ssh -c blowfish user@hostname "dd of=hda.img.gz bs=64k"
    Архивный файл появится в домашней директории пользователя user на машине hostname. Если сеть маленькая, лучше вместо hostname использовать просто ip-адрес. Опция -c blowfish заставляет SSH выбрать алгоритм шифрования Blowfish, который быстрее остальных шифрует данные.

    Вариант с netcat, если данные копируются по локальной сети и шифрование не нужно:
    # dd if=/dev/hda conv=sync,noerror bs=64K | gzip -c | nc 192.168.1.1 3333
    На удалённой машине должен быть запущен netcat:
    # nc -l -p 3333 > hda.img.gz
    Вариант с SAMBA, если копирование производится на оффтопичную машину: примонтировать удалённо сетевой ресурс
    smbmount //192.168.1.100/shared /mnt/remoteshare -o username=имяпользователя,password=пароль
    и далее всё то же, что и в п.2.1.



    3. Восстанавливаем данные из бекапа
    Пример тот же: /dev/hda это винчестер, который архивируем, hda.img.gz - архивный сжатый файл-образ, а /dev/sda1 - это раздел внешнего винчестера или другая партиция, с которого восстанавливаем данные.

    3.1 Внешний винчестер или другой раздел диска

    Копируем и распаковываем файл-образ одновременно:
    # gzip -x /mnt/sda1/hda.img.gz | dd of=/dev/hda conv=sync,noerror bs=64K
    Все параметры в п.2 уже объяснены.


    3.2 Удалённо по сети
    Сетевой вариант с восстановлением из файл-образа:

    dd if=hda.img.gz | ssh -c blowfish user@deadhost "gunzip -c | dd of=/dev/hda1 bs=64k"

    Следует помнить, что в данном случае не следует использовать опцию conv=sync,noerror в опциях dd - если вы всё-таки включите эту опцию, в большинстве случаев это исказит записываемые данные (это заставляет dd не дожидаться данных, приходящих по сети, если целый блок недоступен).


    Ссылки
    Этот пост является переводом этой замечательной статьи, дополненной и расширенной этой и этой статьями. Так же это применимо к утилитам восстановления данных, описанных здесь.

    Швейцарский нож для сетей - netcat

    Уж очень мне понравился один блог. Парочка статей от туда. Авось и пригодится когданибудь.

    Оригинал статьи взят ОТСЮДА!!!

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


    Утилита netcat (или nc) должна быть в любом дистрибутиве, и даже в Knoppix она тоже есть. Если вдруг её нет, установка netcat проблем не составляет:

    apt-get install netcat
    Работать с ней очень просто, и на примере далее я покажу, как легко и просто передавать файлы при помощи nc. Идея netcat очень проста: он просто перенаправляет поток данных в порт сетевого устройства, а на другом конце поток перенаправляется в файл. Отсюда и название: NETcat - тот же cat, но сетевой. При передаче файлов следует первым запускать nc на сервере (куда будут передаваться данные), а потом уже с клиента (откуда передаются данные) пересылать файлы.


    На стороне сервера (куда передаём данные):
    Нужно запустить netcat так, чтобы он слушал определённый порт, и перенаправлял получаемый поток в файл. Вот так:
    nc -l -p 3333 > file.txt
    Это откроет на прослушивание порт 3333, и сохранит полученные данные в файл file.txt в текущем каталоге. При этом программа не вернёт управление консоли, и будет ждать, пока вы вручную завершите её.


    На стороне клиента (откуда передаются данные):
    Для этого передаём по конвейеру файл nc так:
    cat file.txt | nc 192.168.1.1 3333
    Это передаст файл file.txt на машину с IP-адресом 192.168.1.1, где уже запущен nc, слушающий порт 3333.

    А кроме того
    Можно с помощью nc устроить чат с пользователем на другой машине. Со стороны клиента просто пишете
    nc 192.168.1.1 3333
    и на том конце будет видно всё, что вы печатаете, в том числе кириллицу.


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

    Эффективная конвертация растра в EPS или PDF

    Только что остро стал вопрос о конвертации .bmp (.jpg etc) в .pdf занялся поиском и наткнулся (практически сразу) на хорошую статью.

    Оригинал статьи ТУТ!!!

    Чтобы использовать растровое изображение в документе LaTeX есть два пути: пользоваться PDFLaTeX, позволяющим включать изображения форматов PNG и JPEG непосредственно, или конвертировать растровые изображения в EPS, а потом работать с ними как обычно. Необходимость конвертировать растр в EPS возникает и при желании использовать другие средства вёрстки и векторные графические редакторы.


    К сожалению, обычный способ конвертации с помощью ImageMagick (convert) или распространённых графических редакторов даёт EPS файлы довольно большого размера. Есть программы, которые делают эту работу лучше.

    Одна из них — sam2p — есть в репозиториях Debian, и полученные с помощью её EPS файлы действительно довольно маленькие.

    Для конвертации в EPS команда будет выглядеть примерно так:

    $ sam2p image.png EPS: image.eps


    Соответственно для конвертации в PDF:
    $ sam2p image.png PDF: image.pdf


    Среди полезных опций программы sam2p есть выбор версии PostScript, разрешения получаемого файла (в dpi) и алгоритма сжатия (LZW, ZIP, RLE, FAX, DCT, JPEG).

    Вот, к примеру, результат конвертирования скриншота программы Google Earth с помощью sam2p и с помощью ImageMagick:
    $ ls -rSsk1 google-earth-screenshot*
    1756 google-earth-screenshot.png
    3016 google-earth-screenshot-(sam2p).eps
    4304 google-earth-screenshot-(convert).eps

    EPS, конечно, получился больше, чем PNG (кто бы удивилялся). Интереснее сравнить полученные EPS между собой. В данном случае разница в 1,5 раза. Может показаться, что это не существенно, но если таких изображений много, то накопится прилично. А если изображения попроще, чем спутниковые фотоснимки, разница более заметна.

    Например, вот такая картинка в формате PNG:


    И вот такие результаты конвертации в EPS:
    $ ls -rSs1k pooh-pooh*
    84 pooh-pooh.png
    156 pooh-pooh-(sam2p).eps
    872 pooh-pooh-(convert).eps

    Разница между convert и sam2p в 5,5 раз, в пользу последнего!

    Есть ещё на CTAN пакет bmeps, который, по слухам, тоже неплохо справляется с задачей конвертации растра в EPS — но его я пока не пробовал.

    Ссылки по теме:
    страница sam2p
    страница bmeps