вторник, 29 декабря 2009 г.

Кодировка в zip-архивах.

Оказалось, что Windows хранит имена файлов внутри zip-архива в странной кодировке. Точнее они получаются кодированные несколько раз, и соответственно при распаковке в *nix смотрятся примерно так:

tmp $ unzip -l Luk-F.zip
Archive: Luk-F.zip
Length Date Time Name
--------- ---------- ----- ----
0 2009-12-01 12:06 ??????????-??????????/
1014063 2009-11-30 12:00 ??????????-??????????/AlReader2.win32.ru.zip
1335515 2009-11-30 12:00 ??????????-??????????/AlReader2.zip
616504 2009-11-30 12:00 ??????????-??????????/AlReader_Help.zip
625572 2009-11-30 12:00 ??????????-??????????/QDictionary.zip
0 2007-09-28 02:57 ??????????-??????????/???????/
0 2009-11-30 11:58 ??????????-??????????/???????/?????? - ???????? ???????/
696811 2007-10-24 13:22 ??????????-??????????/???????/?????? - ???????? ???????/?????????? ?????? - ?????? - ???????? ???????.fb2

Для правильного отображения, после распаковки, следует использовать

convmv -r -f cp1252 -t cp850 * --notest && convmv -r -f cp866 -t utf-8 * --notest

Подсмотрено у TuxR

вторник, 3 ноября 2009 г.

Архиватор. Всё в одном.

Вообще конечно, не сложно запомнить пару опций к популярным архиваторам, типа
tar -xvjf file.tar.bz2
или
rar x file.rar
Но попадись какой-нибудь arj, ace, 7z, и начинаешь читать мануалы, искать опции просмотра, добавления, извлечения. Да и с "обычными" архивами легче работать одной командой, чем учить опции каждого. Ну и естественно, в мире свободного программного обеспечения, об этом уже кто-то позаботился и предоставил нам на блюдечке.
Программа atool, работает с множеством архивов, являясь единой оболочкой для архиваторов. Работает до безобразия просто:
просмотр архива
atool -l file
извлечение
atool -x file
причем извлекает в отдельную директорию, если у архива не было корневой.
Вот так просто и удобно.

суббота, 30 мая 2009 г.

музыкальные "разрезалки"

Задача, разделить один flac файл всего диска, на отдельные файлы трэков. Нужно мне это, опять же, для удобного отображения списка файлов, а также, для возможности переноса отдельных песен на плеер или кпк.
В общем-то Google сразу же дает ответ на этот вопрос, остается только оформить это в скрипт.
Для разделения, добавления тэгов и переименовывания, понадобятся пакеты:
sudo aptitude install cuetools shntool lltag
Утилита cuebreakpoints из пакета cuetools, берет из файла cue временные точки для "обрезки" на трэки, а shnsplit уже обрезает по этим точкам. Для добавления к файлам тэгов используется cuetag, и наконец lltag - переименовывает файлы по данным из тэгов.

#!/bin/bash
if [ "$1" != *.cue ]
then
echo Usage ./flacorez file.cue file.flac
exit
fi
if [ "$2" != *.flac ]
then
echo Usage ./flacorez file.cue file.flac
exit
fi
#разрезаем
cuebreakpoints "$1" | shnsplit -o flac "$2"
#добавляем тэги
cuetag "$1" split*.flac
#переименование в вид "номер трэка_артист - название трэка", параметр --yes "автоматом" отвечает "да" на вопросы о содержании тэга и переименовании
lltag --yes --no-tagging --rename '%n_%a - %t' split*.flac
echo Done.

Вторая задача, вырезать кусок mp3-файла, например для использования рингтоном на телефоне.
Для таких целей есть маленький и быстрый инструмент - cutmp3.
Для работы в интерактивном режиме, открываем файл:
cutmp3 -i music.mp3
Для движения по файлу вперед используются клавиши от 6 до 0, на 0.1 с- 1с - 10с - 1м - 10м соответственно, назад от 5 до 1. Клавишей "a" отмечается начальная точка, "b" - конечная, "s" - "вырезать" между отмеченными точками.
Для "вырезки" определенного места:
cutmp3 -i file.mp3 -a 0:20 -b 1:02
Программа работает без перекодирования и потому моментально.

среда, 27 мая 2009 г.

Маленькие полезняшки и не очень

Я довольно таки много читаю, в основном это делаю на КПК, а вот сама "коллекция" fb2-книг хранится на десктопе. Хотя книг не много, но в том виде в котором их отдают библиотеки, я имею ввиду имя файла, выбрать нужную да и вообще посмотреть "что есть", ну очень не удобно. Искать решение долго не пришлось. Товарищ или товарищи :) , разработчики fb2-читалки PyBookReader , также создали парочку маленьких полезняшек. Первая - ренеймер fb2 файлов (умеет работать с zip архивами) fb2desc . Читает discription книги и переименовывает файл, форматов переименования 6, но мне как-то не очень они понравились, а не понравилось то, что серия и номер книги в серии идут последним полем имени файла. Благо это просто скрипт на питоне,который даже мне удалось исправить под себя. Теперь формат имени файла таков:
Имя авторов - (Серия #Номер книги в серии) - Название.fb2
Что для сортировки и наглядности намного лучше, например сейчас правильная сортировка:
Гаррисон Гарри - (Крыса из нержавеющей стали #1) Рождение Стальной Крысы.fb2
Гаррисон Гарри - (Крыса из нержавеющей стали #2) Крыса из нержавеющей стали призвана в армию.fb2
Гаррисон Гарри - (Крыса из нержавеющей стали #3) Стальная Крыса.fb2
Гаррисон Гарри - (Крыса из нержавеющей стали #4) Месть крысы из нержавеющей стали.fb2
А было:
Гаррисон Гарри - Крыса из нержавеющей стали призвана в армию (Крыса из нержавеющей стали #2).fb2
Гаррисон Гарри - Месть крысы из нержавеющей стали (Крыса из нержавеющей стали #4).fb2
Гаррисон Гарри - Рождение Стальной Крысы (Крыса из нержавеющей стали #1).fb2
Гаррисон Гарри - Стальная Крыса (Крыса из нержавеющей стали #3).fb2
Вот такой я молодец :) , правда проблема с несколькими авторами книги осталась, но ее видимо без создания отдельной директории не решить.
Вторая полезняшка, это консольная читалка fbless от тех же товарищей. Для быстрого просмотра-поиска чего-то большего и не надо. Также умеет открывать файлы из архивов.
Третья, "не очень" полезняшка, чудная малютка screenie , из нескольких изображений делает одно но гламурное :) , очень красиво.
Четвертая и последняя, но от того не менее полезная :) , скроблер для mpd , mpdscribble, просто отправляет на last.fm информацию о проигрываемом треке и больше ничего, на просторах репозиториев Debian водится в виде пакета.
Ну раз сказал что, четвертая последняя, то всё.

пятница, 13 марта 2009 г.

Красивости

Теперь когда консоль удобная, хотелось бы чтобы она была ещё и радующей глаз красивой.
За красоту консоли отвечает bootsplash, который в ядрах Debian не включён, а в репозиториях нет пакета патча, но где наша не пропадала :)
Итак, берем исходники ядра и патч для bootsplash.
Патчим:
patch -p1 -i bootsplash-3.1.6-2.6.26.diff
Копируем конфиг от стандартного ядра
cp /boot/config-2.6.26-1-686 /usr/src/`версия ядра`/.config
Конфигурируем
make oldconfig
Отмечаем для компиляции bootsplash и
make
make modules_install install

Качаем пакеты bootsplash, bootsplash-theme-debian и устанавливаем, еще темы можно скачать здесь
Темы распаковываются в /etc/bootsplash/themes, на нужную тему создается символическая ссылка
ln -s /etc/bootsplas/themes/bstheme-tattoogirl /etc/bootsplash/themes/current
теперь создаем ram-диск initrd
mkinitramfs -o /boot/initrd.img-`версия ядра` `версия ядра`
Остается только отредактировать конфиг grub, что-то типа
title Debian GNU/Linux, kernel 2.6.26-my-bootsplash
root (hd0,0)
kernel /vmlinuz-2.6.26-my root=/dev/hda3 ro vga=791 splash=verbose
initrd /initrd-2.6.26-my

Всё. sudo reboot и

суббота, 28 февраля 2009 г.

Удобная консоль

В случаях, когда что-то не так установилось, не желает подниматься или вообще не установлен х-сервер, и т.п., спасением естественно является консоль, а сделать в ней можно всё и даже еще больше :) .
Во-первых, хорошо бы было видеть в консоле больше чем 80 столбцов, для этого нужно включить фреймбуфер. Ядра Debian уже сконфигурированы с его поддержкой, другие дистрибутивы не знаю, проверить можно так:
wtaket@debian:/boot$ cat config-"версия_ядра" | grep FRAMEBUFFER
CONFIG_FRAMEBUFFER_CONSOLE=y
# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
Если ничего не найдено, то надо будет пересобрать ядро.
Теперь при загрузке GRUB, выбираем рабочее ядро и жмём "e", далее жмём "e" на строке параметров загрузки ядра, типа:
kernel /vmlinuz-2.6.26-1-686 root=/dev/hda3 ro
и в конец строки добавляем:
vga=ask
жмём "Enter" и "b", появится таблица со списком поддерживаемых режимов, выбираем нужный и вводим код или букву соответствующую коду. Если загрузка прошла успешно и framebuffer работает, то редактируем /boot/grub/menu.lst
kernel /vmlinuz-2.6.26-1-686 root=/dev/hda3 ro vga=код
код в таблице выводимой Grub это hex-число, поэтому перед ним ставим 0x
Стало намного удобнее :)
Во-вторых, удобство "табовых" эмуляторов терминала трудно переоценить, и без возможности запуска иксов тоже хотелось бы нечто подобное. Нечто подобное - screen.Небольшое добавление в конфигурационный файл ~/.screenrc:
caption always
caption string "%c %{kw}%-w%{wr}%n %t%{-}%+w"

Таким образом будет выводится строка заголовка(наподобие табов), с текущим временем и названием запущеной в нем программы.
Музыка у нас уже есть, но настроенный фреймбуфер дает нам возможность смотреть и видео. Для этого запускаем mplayer с параметрами:
mplayer -vo fbdev -zoom -xy 1024
последнее число - разрешение по горизонтале(вертикаль вычесляется автоматически) для вывода видео в полный экран.
Но при невозможности запуска Х-сервера, нам скорее нужны не мультимедиа возможности консоли, а средства общения с комьюнити и знакомыми гуру :).
Мультипротокольный im-клиент Finch, по сути консольная версия Pigin. Настройка из самого интерфейса программы, никаких проблем с utf8. Единственная "неудобность" - реализация интерфейса в виде перекрывающихся окон, да и при запуске в screen не работают "стрелки"(замена ctrl+p/n).
Браузер links2, а вот он не дружит с utf8, по крайней мере версия из тестовой ветки Debian. Но прочитать/найти что-то вполне себе ничего.
Ну вот тепреь можно "жить" в консоле :)

вторник, 20 января 2009 г.

MPD - музыка в консоле

В Linux есть много музыкальных плееров, например - Amarok, Audacious, Banshee. Плееры - "просто плееры" и плееры - "музыкальные комбайны", хорошие и ...очень хорошие. Я, к слову, пользуюсь (скорее уже "пользовался") Amarok, это просто какое-то чудокомбайнище, тут и эквалайзеры и мультимедиатека и списки и правка тэгов, куча подключаемых скриптов для просмотра информации, текстов, кодирования и пр.пр.пр...
Всё это конечно хорошо, но, 90% времени плеер просто висит в трее и кроме как "послушать" от него ничего не требуется. Меня просто разрывает на куски когда я смотрю top, штук 5 amarokapp съедающие 15% CPU и 150 Мб памяти, плюс кучка скриптов на перл и руби. Нет, нет и нет. Я просто хочу "музычку по-тихоничку", не надо эквалайзера, рейтингов и обложек альбомов...ничего не надо, просто пусть играет. И имя этому "просто играет" - MPD. Что о нём знает apt?
$ aptitude show mpd
Описание: Music Player Daemon
Music Player Daemon (MPD) is a server that allows remote access for playing audio files (Ogg-Vorbis, FLAC, MP3, Wave, and
AIFF), streams (Ogg-Vorbis, MP3) and managing playlists. Gapless playback, buffered output, and crossfading support is also
included. The design focus is on integrating a computer into a stereo system that provides control for music playback over a
TCP/IP network. The goals are to be easy to install and use, to have minimal resource requirements (it has been reported to
run fine on a Pentium 75), and to remain stable and flexible.
Чудненько, то что надо. Помолимся, MPD да не укради системного времени, будь стабильным и гибким, легко установись и аминь..
Ставим сам сервер и одним виртуальным пакетом mpd-client кучку клиентов к нему.
$ sudo aptitude install mpd mpd-client
Демон сервера стартует во время загрузки ОС читая настройки из /etc/mpd.conf, я не считаю что он нужен мне при каждом старте системы. Следуя рекомендации, из файла /etc/rc2.d/README, переименовываем симлинк S30mpd в K70mpd. Теперь запускать сервер будем ручками когда он нам нужен и со своими настройками. Настраиваем под себя:
$ cp /etc/mpd.conf ~/.mpdconf
именно так, а не ~/.mpd.conf
мой содержит следущее:
music_directory "~/Music/"
playlist_directory "~/Music/"
db_file "~/Music/music.db"
log_file "~/Music/mpd.log"
error_file "~/Music/errors.log"
pid_file "~/Music/pid"
state_file "~/Music/state"
user "wtaket"
bind_to_address "localhost"
port "6600"
audio_output {
type "alsa"
name "My ALSA Device"
device "hw:0,0" # optional
format "44100:16:2" # optional
}
mixer_type "alsa"
mixer_device "default"
mixer_control "PCM"
filesystem_charset "UTF-8"
id3v1_encoding "UTF-8"
Тут есть пара скользких моментов, секция audio_output , параметры device и format, если их не указать, mpd грузит систему почище Amarok и 30% CPU не предел. Второй момент это совместное использование устройства, ни с alsa ни с oss у меня не работает и что делать не знаю. Хотя слушать музыку и одновременно смотреть фильм я вряд ли буду :)
Запускается mpd просто:
$ mpd
Кто-бы мог подумать :)
Ну а теперь сам как-бы плеер. Мне понравился консольный ncmpc, с параметром -c запускается в цветном режиме. Файл настроек плеера
$ cp /usr/share/doc/examples/config.sample ~/.ncmpc/config
я поставил запуск в цветном режиме
enable-colors = yes
отображение в заголовке терминала информации о треке
set-xterm-title = yes
xterm-title-format = "ncmpc: [ %name%|[%artist% - ]%title%|%file%]"
центрирование проигрываемого трека в плейлисте
auto-center = yes
и скрытие курсора через 5 секунд
hide-cursor = 5
Настроить shortcuts можно рилтайм в самом плеере и сохранить в файл.
Всё. Остается только наслаждаться музыкой :) , mpd грузит процессор на 1-3%, память (VIRT) 12900. Единственная ложечка дёгтя - недоступность звука для других приложений, но пока с этим разбираться не буду :)

четверг, 15 января 2009 г.

Dict - консольный многоязычный словарь

Дабы не забыть где что брал :)
С установкой проблем никаких:
sudo aptitude install dictd
sudo aptitude install dict

Для установки словарей понадобится rsync
sudo aptitude install rsync
Перед настройкой остановим сервер
$ sudo /etc/init.d/dictd stop
Чтобы dict использовал только локальные словари, закомментировал все удалённые сервера:
sudo nano /etc/dictd/dict.conf

server localhost
#server dict.org

#server dict0.us.dict.org

#server alt0.dict.org


Большое количество хороших словарей для dict я нашел на http://www.mova.org/ , точнее они были там раньше, а теперь они доступны по rsync://dictd.xdsl.by/dicts
Копируем нужные, например:
sudo rsync -av rsync://dictd.xdsl.by/dicts/geology_en-ru.* /usr/share/dictd/
Скопируются два файла, сам словарь geology_en-ru.dict.dz и индекс словаря geology_en-ru.index
Для "подключения" словарей выполняем:
sudo dictdconfig -w
Смотрим подключённые словари
$ dict -I
dictd 1.10.11/rf on Linux 2.6.26-1-686
On debian: up 34:34, 1 fork (1.7/hour)

Database Headwords Index Data Uncompressed
fd-eng-rus 1699 23 kB 24 kB 71 kB
korolew_ru-en 32457 828 kB 1821 kB 5524 kB
latrus 12617 185 kB 162 kB 651 kB
mueller7 46204 777 kB 2887 kB 9085 kB
Запускаем сервер
$ sudo /etc/init.d/dictd start
Вот и всё