суббота, 17 мая 2008 г.

После обновления Debian Lenny перестала работать русская раскладка клавиатуры

или
Can not switch keyboard layout on Debian Lenny для тех, кто ищет :-)

Сегодня после обновления у меня вдруг перестала переключаться раскладка клавиатуры. Я попробовал вернуть власть КДЕ-шному переключателю kxkb, но он тоже не смог переключить раскладку, а на панели задач вместо русского флага отображалось "err". Ситуация омрачалась тем, что я потерял всякую возможность вводить с клавиатуры русский текст в строку поиска Гугла. Но проблема и метод ее решения были найдены методом научного тыка.

Оказалось все до беспредела просто. Какой-то умный дядя (а может быть и тетя) изменил название варианта раскладки winkeys на basic. А в наших настройках, конечно же, осталось все по-старому. Поэтому настройки нужно обновить.

Тем, кто пользуется KDE и его родным переключателем kxkb, нужно открыть "Центр управления", и изменить через него вариант русской раскладки, как показано на изображении ниже.



Вы также можете обратить внимание, что появился вариант os_winkeys. Не спешите его выбирать, потому что "os" означает не "операционная система", как я сначала наивно и подумал, а "осетинская" :-) Впрочем, можете использовать его как способ подшутить на другом. Возможно, он сильно удивиться, когда обнаружит, что случилось с его буквой "э" :-)

Тем же, кто решил повесть задачу переключения раскладки на Xorg, нужно исправить значение XkbVariant в файле "/etc/X11/xorg.conf":

    Option          "XkbVariant"    ",basic"


Кстати говоря, раскладка Windows теперь является вариантом по умолчанию для русского языка, так что его можно и не указывать вообще. Но я предпочел указать.

Дополнительная информация - в отчете об ошибке на офф сайте.

пятница, 16 мая 2008 г.

Ограничение сетевого трафика для приложений

Допустим, Вы собрались закачивать что-то неимоверно тяжелое, или запустить какое-то приложение, нещадно пожирающее сетевые ресурсы. Допустим, Вам этих сетевых ресурсов жалко. Может быть Вы сейчас активно бороздите просторы веба. А может быть каналом пользуются ваши сотрудники, и загружать его полностью было бы по крайней мере нетактично. Но все же, если уж нам чего-то захотелось, то лучше это сделать сейчас, а не откладывать в долгий ящик. Для этого будет логичным пойти на компромис: запустить приложение с ограничением пропускной способности канала. К счастью, GNU/Linux как всегда предлагает простое и незатейливое решение. Отдельное спасибо Мариусу :-)

Если Вы еще не знакомы, то прошу любить и жаловать: мистер trickle!

$ sudo apt-get install trickle


Эта замечательная легковесная утилита позволяет ограничить пропускную способность для отдельного приложения, работающего с сокетами. Она не дает точных результатов, и скорость передачи данных может немного отклоняться от требуемой. Но ведь эта утилита и не предназначена для того, чтобы деньги считать. Так что, по моему мнению, программа справляется с поставленной задачей просто отлично.

Ладно, хватит болтовни, приступим к делу. Загрузим страничку mail.ru. Но поскольку она очень большая и тяжелая, ограничим скорость закачки до 2 КБ/сек, чтобы не перегружать наш драгоценный канал.

$ trickle -d 2 wget mail.ru
trickle: Could not reach trickled, working independently: No such file or directory
--14:40:28-- http://mail.ru/
=> `index.html.5'
Распознаётся mail.ru... 194.67.57.226, 194.67.57.26, 194.67.57.126
Устанавливается соединение с mail.ru|194.67.57.226|:80... соединение установлено.
Запрос HTTP послан, ожидается ответ... 200 OK
Длина: нет информации [text/html]
[ <=> ] 24 576 2.00K/s


И, как говорится, пошло говно по трубам! Но, на безопасной скорости :-)

Трикл имеет два наиболее интересных параметра:
-d - скорость закачки в килобайтах в секунду
и
-u - скорость откачки в тех же единицах измерения.
Список остальных параметров доступен в мане.

Обратите внимания на первую строку вывода команды: "trickle: Could not reach trickled, working independently: No such file or directory". Похоже на сообщение об ошибке, но это просто сообщение о том, каким образом будет работать трикл :-) Дело в том, что он может работать в двух режимах: независимо и через демон. Демон удобен в том случае, если вам нужно ограничить суммарный трафик для нескольких приложениях. Запускаем демона с указанием параметров ограничения

$ trickled -d 5


И теперь каждый экземпляр trickle будет подключаться к демону, при этом указывать пропускную способность больше не нужно. Как остановить демон в мануале не написано. Поэтому я это делаю посредством killall trickled.

По умолчанию утилита trickle общается с демоном trickled через сокет "/tmp/.trickled.sock". Если вам нужно запустить второго демона и направить на него другие экземпляры trickle, используйте параметр -n с указанием другого имени файла сокета.

$ trickled -d 1 -n /tmp/.trickled_1.sock
$ trickle -n /tmp/.trickled_1.sock wget rambler.ru


Хочу еще напоследок обратить ваше внимание на работу с прокси-серверами. Если вы собираетесь закачивать большой файл через прокси, то trickle будет ограничивать скорость только между вами и прокси-сервером. Сам же прокси может закачать весь файл с максимально возможной скоростью и терпеливо ждать, когда вы его заберете себе. Таким образом, при закачке одного большого файла прокси может усугубить всю малину и лишить использование шейпера всякого смысла. Однако, при закачке множества мелких файлов вы по крайней мере ограничите частоту их запросов.

Ну, думаю, этого должно хватить с головой. А если не хватит, то спрашивайте.

Качайте на здоровье!

пятница, 2 мая 2008 г.

Жонглирование ядрами. Настройка GRUB.

Не так давно мне пришлось установить новое ядро для поддержки VirtualBox. С установкой ядра проблем не возникло никаких, но вот загружаться по-умолчанию оно не захотело. Это заставило меня посмотреть в сторону менеджера загрузки GRUB и его настройки.

Как это ни странно, но вся информация по GRUB, которую я нашел в Интернете была по меньшей мере пятигодовой давности, и полезного я из нее почерпнул только то, что эти настройки нужно искать в /boot/grub, а не в /etc, где я их искал по привычке.
К счастью большинство настроек в файле /boot/grub/menu.lst оказались хорошо комментированными, так что добиться желаемого результата было не сложно. А желал я следующего.
Во-первых, загружать по-умолчанию третье ядро из списка (отсчет ведется с нуля, поэтому в параметре стоит цифра 2):

default 2

Во-вторых, отображать список доступных ядер без нажатия кнопки Esc (для этого я просто закомментировал параметр hiddenmenu):

#hiddenmenu

И в-третьих, увеличить задержку перед загрузкой ядра по-умолчанию (задержка в 3 секунды была для меня абсолютно не комфортной, и я увеличил ее до 10 секунд):

timeout 10

После этого нужное мне ядро стало загружаться по-умолчанию без лишних движений, но возник один побочный эффект. Если задержка перед загрузкой достаточно большая (иногда даже при десяти секундах), то не происходит автоматической загрузки X-сервера, а просто выдается приглашение в командной строке. Сомневаюсь, что это связано с GRUB, но утверждать точно ничего не могу. Если у меня дойдут руки до расследования этого случая, то я обязательно опишу результаты.