Последние записи.

Broadcom wireless и Slackware 12.2

Для пользователей линукс, которым довелось стать счастливыми обладателями ноутбуков с встроенным wireless адаптером от Broadcom, не секрет, что в ряде дистрибутивов не все гладко с этим чудом техники. Итак, краткая инструкция.

1. Скачиваем и устанавливаем драйвер

$ mkdir /usr/src/hybrid_wl && cd /usr/src/hybrid_wl
$ wget http://www.broadcom.com/docs/linux_sta/hybrid-portsrc-x86_32-v5_10_79_10.tar.gz
$ tar -xzf hybrid-portsrc-x86_32-v5_10_79_10.tar.gz
$ make -C /usr/src/linux M=`pwd`
$ cp wl.ko /lib/modules/$(uname -r)/kernel/
$ depmod && modprobe wl

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

2. Настройка
По вышеупомянутой ссылке рекомендуется в случае неработоспособности внести в блек лист модуль b43, в Slackware этого делать не нужно, в противном случае интерфейс wlan просто перестанет определяться.
Правка /etc/rc.d/rc.inet1.conf особых результатов не принесла, разбираться с /etc/rc.d/rc.wireless.conf было лениво, поэтому просто прописал в /etc/rc.d/rc.local следующее:

/sbin/iwconfig wlan0 essid имя_точки_доступа
sleep1
/sbin/iwconfig wlan0 key wep_ключ
sleep1
/sbin/dhcpcd wlan0

Тут маленькое замечание, при вызове dhclient wlan0 получение ip почему-то не происходит, тогда как dhcpcd wlan0 срабатывает на ура. Собственно все, теперь подключение интерфейса и получение ip происходит при загрузке.

Индикатор батареи для Slackware.

Намедни озадачился отсутствием индикатора заряда батареи в xfce-4.4.3, который идет в стандартной поставке Slackware 12.2. Плагин, который можно скачать с офф. сайта проекта xfce мне не понравился хотя бы только потому, что тянет за собой ряд зависимостей, захламлять которыми машину как-то не хочется, плюс установить удалось только одну из версий, которая толком и не работала. С другой стороны, на машинке уже установлена libnotify, которая позволяет выводить всплывающие уведомления, так почему бы не вспользоваться ей. Решение и реализация заняли всего 10 минут.

1. Определяемся, где у нас лежит информация о батарее.

$ cat /proc/acpi/battery/BAT1/state – информация о состоянии, отсюда будем брать текущий заряд.
$ cat /proc/acpi/battery/BAT1/info – общая информация, отсюда будем брать общую емкость, для вычисления процентов.
Возможно у Вас путь будет немного другой, например /proc/acpi/battery/BAT0/state

2. Пишем скрипт.

Первое что пришло на ум, это perl, хотя уверен, реализовать такое легко и на bash

1. #!/usr/bin/perl -w
2. my ($file1,$file2,@data,$damage,$current);
3. #читаем файл с информацией о батарее
4. open F1, '/proc/acpi/battery/BAT1/info'; while (<F1>) { $file1 .= $_; }; close F1;
5. open F2, '/proc/acpi/battery/BAT1/state'; while (<F2>) { $file2 .= $_; }; close F2;
6. #выбираем интересующие нас данные
7. return unless @data[0] = $file1 =~ /design\scapacity\:\s+(\d+)\s\w+/;
8. return unless @data[1] = $file1 =~ /last\sfull\scapacity\:\s+(\d+)\s\w+/;
9. return unless @data[2] = $file2 =~ /remaining\scapacity\:\s+(\d+)\s\w+/;
10. #считаем проценты
11. $damage = 100-(@data[1]/40);$damage = sprintf("%.1f",$damage);
12. $current = (@data[2]*100)/@data[1];$current = sprintf("%.1f",$current);
13. #вызываем внешнюю программу для отображения данных
14. `notify-send -u critical -t 7000 -i battery "
15. \tТекущий заряд батареи $current%
16. \n\tИзнос батареи $damage%
17. "`

Вот собственно и все, при вызове этой программки получаем нечто подобное:

всплывающее уведомление

При желании можно вызывать скрипт посредством bash скрипта, а если сделать симлинк на этот скрипт в /usr/local/bin, то можно, в добавок, повесить вызов уведомления на хоткей.

Bashstyle-NG. Пример локализации.

Намедни зашел на gnomefiles.org посмотреть, не появилось ли какого-нибудь нового интересного софта, или просто обновлений для того, что у меня уже установлено. Мое внимание привлекло обновление bashstyle-ng, графической утилиты для настройки внешнего вида командной строки. Честно говоря, утилиту даже и не пробовал в действии, так как подобные приблуды недолюбливаю и считаю излишними (нет, ну правда, порой ведь проще почитать man, и ручками поправить конфиги). Но мое внимание привлек комментарий автора утилиты:

Looking for Translators!
If you are willing to translate BS-NG into another language then English or German, send me a mail.
If you don’t know how to translate – no problem! Just leave a comment about that in your mail and I’ll instruct you.

Первая мысль была примерно такой: «Хм, а смысл заморачиваться?». Следом ее настигла следующая: «Ну-у-у,  я ведь как-никак приверженец opensource. Ну и что, что я не буду использовать эту утилиту? Не все ведь любят ковыряться в конфигах…»  И правда, многие начинающие пользователи Unix/Linux не могут сходу разобраться в конфигах, более того, многие из них не сильны в английском, плюс ко всему, раз уж назвался приверженцем opensource, то и соответствовать следует. А посему было принято решение: «Помогем-с».

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

В директории с исходниками находим директорию «translations/po» (ну или что-то на это похожее). Затем выполняем внутри этой директории следующую команду:

msginit -i ../pot/filename.pot -o filename-ru.po -l ru_RU

При этом нужно учесть, что для выполнения этой команды нужен установленный gettext, настройка локали должна быть правильной (то есть echo $LC_ALL должно вернуть ru_RU.UTF-8), ну и следить за расположением каталогов в дереве исходников при наборе этой команды. Эта команда сформирует файл filename-ru.po, который будет содержать строки, типа

msgid =»here_some_original_text»

то есть строки с  оригинальными текстами, а так же строки типа

msgstr =»"

в которые, соответственно нужно внести наш перевод.

После рутинной обработки файла переходим на каталог (или несколько каталогов) выше и ищем файлик filename.in. В этом файлике нам нужно найти приблизительно такую строку:

langs += ["C", "de", "it"]

то бишь список локалей, и исправить на нечто вроде этого:

langs += ["C", "de", "it","ru"]

после чего переходим непосредственно к установке и тестированию:

./configure –prefix=/path/to/install

make mo #генерируем бинарник с переводом

make install

и если все прошло нормально, то после запуска мы увидим локализованное приложение.

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

Wow! That was fast :)
I just tested it, and the strings appear all.
You can grab the latest svn (revision 500) and you’ll see yourself in
the about-dialog (translators tab) :)

Thanks a lot!
Chris

Помогайте людям, делитесь идеями, это здорово, правда :)

PXSM. Дополнение к стандартному меню Xfce4.

Ровно 1 год и 1 день назад я рассказал про perl модуль, который позволяет сгенерировать простенький xml, немного позже, я рассказывал о том, как устанавливать ssh соединения, не вводя каждый раз пароль. Сегодня я хочу рассказать, как я , наконец, нашел удобное применение и тому, и другому.

Сразу оговорюсь, то, о чем пойдет речь может пригодиться только тем, кто:

  • часто использует в работе ssh и ftp
  • имеет необходимость работать с несколькими серверами
  • использует linux и xfce

Итак, собственно сабж. Используя вышеупомянутый модуль и bash-скрипт для автоматического ввода пароля ssh, я написал простенький perl скрипт, который назвал довольно тривиально – Perl Connection Manager. Скрипт генерирует xml файл, который представляет собой компонент меню для xfce. В итоге, подключив полученый файл с помощью xfce4-menueditor, получаем вложенную менюшку, элементами которой являются пусковички для консоли и файлового менеджера (на данный момент это Midnight Commander). Вся соль в том, что в консоли автоматически открывается ssh соединение, указанное в параметрах элемента меню, ну а в правой панели MC, соответственно, дерево каталогов на удаленном ftp сервере. Помимо этого решил не лениться, и снабдил скрипт какой-никакой, но документацией, а так же добавил иконки, которые теперь отображаются в меню.

Скрипт можно скачать тут. Вопросы и предложения приветствуются.

South Perl – Третий Российский Perl Workshop

Оригинальное видео: Russia.ru

(далее…)

5 принципов эффективного веб-дизайна.

Достаточно большая и познавательная статья, читать тут

Первоапрельское 2

Первоапрельское

SSH. Запоминаем пароль.

Те, кто частенько соединяется с удаленными серверами по ssh, знает, что если такие приложения как WinSCP (Windows), Наутилус (Gnome) или Krusader (KDE) умеют запоминать пароли, то вот с консолью дела обстоят не столь радужно. Конечно, рано или поздно, каждый находит для себя решение этой проблемы, и вот какое нашел я. Перво-наперво, нужно установить пакет expect_tcl. Далее остается лишь написать небольшой .sh скрипт, который позволит нам соединяться по ssh не вводя пароль каждый раз. Собственно, вот код :

#!/bin/bash

expect -c » spawn ssh $1@$2 -x «$4″ expect «password:»send «$3r» interact «

вызывать можно например так:

$ ssh.sh user host password command

или сделать ярлык в меню:

gnome-terminal -x /path/to/script/ssh.sh user host password command

правда есть один минус, передача 4-го параметра, то есть вызов удаленной команды, не всегда срабатывает.Вот собственно и все.
p.s. за модернизацию скрипта спасибо Николаю Мельникову

UPD: Описаный метод отнюдь не претендует на звание самого правильного и безопасного, более того, он не всегда удобен, лично я использую его в реализации собственной утилиты, о которой написал вот тут.

MyXML – генератор XML

На днях озадачился небходимостью сгенерировать небольшой XML документ средствами Perl, но лезть в дебри CPAN, в поисках подходящих модулей стало лень. С другой стороны, обходиться банальным «print» тоже не хотелось, так как время от времени генерировать XML просто необходимо. Посему открыл текстовый редактор и начал ваять, а точнее доводить до ума некогда начатый, но так и не дописанный pakage, позволяющий генерировать простой XML. Не на что выдающееся я естественно претендовать не собираюсь, но показать что в итоге получилось почему то захотелось.
Итак, сам pakage можно скачать тут, а вот простой пример того, что с ним можно делать:

#!/usr/bin/perl
use strict;
use base::MyXML;
our $top = MyXML->GXM(«1.0″,»utf-8″)->{«header»};
our $tag = MyXML->GXD(
«content»,
join(»,
MyXML->GXDM(«elem»,['type=app','name="Console"'],)->{«result»},
MyXML->GXDM(«elem»,['type=app','name="Editor"'],)->{«result»},
MyXML->GXDM(«elem»,['type=app','name="Player"'],)->{«result»},
),
['name="Soft"'],
)->{«result»}
open(FH,»>data.xml»);
print (FH $top.»n»);
print (FH $tag.»n»);
close(FH);

в итоге получился такой вот документ:

<?xml version=»1.0″ encoding=»utf-8″?>
<content name=»Soft»>
<elem type=»app» name=»Console» id=»1.1″ />
<elem type=»app» name=»Editor» id=»1.2″ />
<elem type=»app» name=»Player» id=»1.3″ />
</content>

На последок все же пару слов о MyXML. В распоряжении разработчика предоставляются 3 метода (пока 3 ;) , а именно GXM(формирующий заголовок документа), GXD(формирующий открывающий, закрывающий теги, атрибуты по необходимости, и собственно, то, что между тегами заключено) и GXDM(формирующий «пустой тег» с атрибутами по необходимости).