Домашняя сеть на базе Linux.

Апр 26
2009

Некоторое обилие компьютерной техники дома сподвигло на покупку wi-fi роутера для  устройства домашней сети. Что требовалось? Да в общем-то самый минимум: единое файловое хранилище (музыка, фильмы), торрент клиент с общим доступом, сервер для web-разработки (apache, mysql, perl, php, svn), терминальный доступ к операционным системам, установленных под VirtualBox, ну и ряд разных плюшек в довесок. Итак, у нас дано:

  • Wi-fi роутер D-link
  • Старенький компьютер (Slackware 12.2)
  • Ноутбук Acer Aspire 5100 (Slackware 12.2)
  • Субноутбук Asus eeePC 901 (Xandros)

Поехали. Read the rest of this entry »

Broadcom wireless и Slackware 12.2

Апр 23
2009

Для пользователей линукс, у которых ноутбуки со встроенным 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.

Апр 23
2009

Намедни озадачился отсутствием индикатора заряда батареи в 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


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

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

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

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

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

Апр 10
2009

Намедни зашел на 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

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

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

Дек 11
2008

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

Read the rest of this entry »

Real Time Web Analytics
fortnotes