22 мая 2008 г.

VMWare server в Ubuntu 8.04

У меня возникла задача написать кроссплатформенный код, а непосредственно, чтоб работал и под Windows и под Mac OS. Среду разработки я выбрал Qt, так как его код легко компилируется на этих платформах, захотелось покопаться в чем-то новом для себя, да и еще заказчик сделал акцент на этом языке.
Проблемой для меня стало тестирование моего кода под Mac OS, так как нет возможности «пощюпать» настоящий Mac. Да, можно конечно было поставить еще одну систему (так называемую «хакинтош»), но мне б пришлось переразбивать свой винт, что меня совсем не устраивает. Поэтому выбор пал на виртуальную машину. С выбором ПО виртуальной машины вопросы отпали почти сразу, после большого кол-ва ссылок на образы виртуалок под VMWare server. Установка самого VMWare оказалась не тривиальной (sudo apt-get...), далее приводится установка VMWare server для Ubuntu 8.04 взятая с:

Небольшое руководство по установке продукта VMware Server на последнюю версию Ubuntu. Так же представлено решение проблемы с компиляцией модуля vmmon.
Установим необходимые пакеты
Код:
aptitude install build-essential linux-headers-`uname -r` xinetd

Скачайте дистрибутив VMware server по адресу http://register.vmware.com. По ссылке необходима регистрация, но она займет у вас пару минут, после чего вы получите серийный номер (или несколько если вам надо) для дистрибутива программы, и возможность скачать архив с самой программой.
Запустим установку:
tar -vxzf VMware-server-1.0.5-80187.tar.gz
cd vmware-server-distrib
./vmware-install.pl

Когда вы дойдете до пункта принятия лицензионного соглашения и напишите yes прервите установку и проделайте описаное ниже.
Необходимо скачать патч исправляющий ошибки сборки модулей, он доступен по ссылке http://vmkernelnewbies.googlegroups.com.
Распакуйте и примените патч:
tar -zxf vmware-any-any-update-116.tgz
cd vmware-any-any-update-116
./runme.pl

Далее завершим настройку VMware:
vmware-config.pl


Затем выполните команду:
cp /lib/libgcc_s.so.1 /usr/lib/vmware/lib/libgcc_s.so.1/libgcc_s.so.1

Теперь можно запускать VMware либо командой vmware либо из меню Программы > Прочее > VMware server console
На этом установка завершена, но например у меня возникли проблемы при сборке модуля vmmon.
В исходных кодах допущена небольшая ошибка исправить которую можно выполнив несколько простых операций с файлами которые я приведу ниже
Ошибка:
include /asm/bitops_32.h:9:2: error: #error only
can be included directly, and vmmon-only compile fails

Решение ошибки:
Отредактировать исходный код файла модуля:
cd /usr/lib/vmware/modules/source
cp vmmon.tar vmmon.tar.orig
tar xvf vmmon.tar
cd vmmon-only/include/
vim vcpuset.h
Перейдите к линии 74 и измените строку: #include “asm/bitops.h” на: #include “linux/bitops.h”
rm vmmon.tar
tar cvf vmmon.tar vmmon-only/
rm -rf vmmon-only/
vmware-config.pl

После выполненных действий с файлами модуль скомпилировался нормально и установка завершилась как следует.


У меня проблемм с vmmon небыло.
Следующим шагом было — поиск подходящего образа виртуальной системы, их в сети довольно много. У меня со второго образа все запустилось (и то, потому, что первый я скачал из-за невнимательности для 64-битной архитектуры, хотя третий скачанный не пошел).
ЗЫ: Образы брал с torrents.ru, thepiratebay.org и www.mininova.org

15 мая 2008 г.

Nautilus: пиктрограммы для файлов Open Office.

В Nautilus-e хорошо то, что о содержании файла можно догадываться не только по его названию, но и по пиктограме файла, будь то картинка, pdf-документ, или фильм. Мне не понятно, почему разработчики не включили и предпросмотр файлов Open Office.
Я расскажу, как это сделать.

Для начала нужно создать файл ooo2-thumbnailer в папке /usr/bin содержащий:
#!/usr/bin/python

import zipfile
import sys
import gnomevfs

inURL=gnomevfs.get_local_path_from_uri(sys.argv[1])
outURL=sys.argv[2]

zip=zipfile.ZipFile(inURL,mode="r")
picture=zip.read("Thumbnails/thumbnail.png")
thumbnail=open(outURL,"w")
thumbnail.write(picture)
thumbnail.write("/n")
zip.close()
thumbnail.close()


используйте для этого ваш любимый текстовый редактор, но учтите, что он должен быть запущен из-под пользователя root.
Далее добавляем ему атрибут на запуск:
$ sudo chmod +x /usr/bin/ooo2-thumbnailer

Создаем еще один файл ooo2.schemas в папке /usr/share/gconf/schemas содержащий:

<gconfschemafile>
<schemalist>

<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.text/enable</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.text/enable</applyto>
<owner>ooo2-thumb</owner>
<type>bool</type>
<default>true</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.text/command</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.text/command</applyto>
<owner>ooo2-thumb</owner>
<type>string</type>
<default>/usr/bin/ooo2-thumbnailer %u %o</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.spreadsheet/enable</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.spreadsheet/enable</applyto>
<owner>ooo2-thumb</owner>
<type>bool</type>
<default>true</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.spreadsheet/command</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.spreadsheet/command</applyto>
<owner>ooo2-thumb</owner>
<type>string</type>
<default>/usr/bin/ooo2-thumbnailer %u %o</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>
<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.graphics/enable</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.graphics/enable</applyto>
<owner>ooo2-thumb</owner>
<type>bool</type>
<default>true</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.graphics/command</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.graphics/command</applyto>
<owner>ooo2-thumb</owner>
<type>string</type>
<default>/usr/bin/ooo2-thumbnailer %u %o</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>
<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.formula/enable</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.formula/enable</applyto>
<owner>ooo2-thumb</owner>
<type>bool</type>
<default>true</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.formula/command</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.formula/command</applyto>
<owner>ooo2-thumb</owner>
<type>string</type>
<default>/usr/bin/ooo2-thumbnailer %u %o</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>
<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.presentation/enable</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.presentation/enable</applyto>
<owner>ooo2-thumb</owner>
<type>bool</type>
<default>true</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.presentation/command</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.presentation/command</applyto>
<owner>ooo2-thumb</owner>
<type>string</type>
<default>/usr/bin/ooo2-thumbnailer %u %o</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.sun.xml.writer/enable</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.sun.xml.writer/enable</applyto>
<owner>ooo2-thumb</owner>
<type>bool</type>
<default>true</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.sun.xml.writer/command</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.sun.xml.writer/command</applyto>
<owner>ooo2-thumb</owner>
<type>string</type>
<default>/usr/bin/ooo2-thumbnailer %u %o</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.sun.xml.calc/enable</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.sun.xml.calc/enable</applyto>
<owner>ooo2-thumb</owner>
<type>bool</type>
<default>true</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.sun.xml.calc/command</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.sun.xml.calc/command</applyto>
<owner>ooo2-thumb</owner>
<type>string</type>
<default>/usr/bin/ooo2-thumbnailer %u %o</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.sun.xml.draw/enable</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.sun.xml.draw/enable</applyto>
<owner>ooo2-thumb</owner>
<type>bool</type>
<default>true</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.sun.xml.draw/command</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.sun.xml.draw/command</applyto>
<owner>ooo2-thumb</owner>
<type>string</type>
<default>/usr/bin/ooo2-thumbnailer %u %o</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>

<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.sun.xml.math/enable</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.sun.xml.math/enable</applyto>
<owner>ooo2-thumb</owner>
<type>bool</type>
<default>true</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.sun.xml.math/command</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.sun.xml.math/command</applyto>
<owner>ooo2-thumb</owner>
<type>string</type>
<default>/usr/bin/ooo2-thumbnailer %u %o</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>
<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.sun.xml.impress/enable</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.sun.xml.impress/enable</applyto>
<owner>ooo2-thumb</owner>
<type>bool</type>
<default>true</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.sun.xml.impress/command</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.sun.xml.impress/command</applyto>
<owner>ooo2-thumb</owner>
<type>string</type>
<default>/usr/bin/ooo2-thumbnailer %u %o</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>

</schemalist>
</gconfschemafile>


теперь заставляем gnome прочитать этот файл:
$ sudo gconftool-2 --install-schema-file /usr/share/gconf/schemas/ooo2.schemas

и перезапускаем nautilus:
$ killall -9 nautilus

Conky: мониторинг системы

Conky является мощным и довольно просто настраиваемым монитором для XWindow.
Установка для Debian/Ubuntu:
$ sudo apt-get install conky

Для работы программы необходим конфигурационный файл ~/.conkyrc. Можно его создать и с нуля, но проще взять готовый и отредактировать под свои нужды и вкус.
Файл конфигурации состоит из двух частей.
- глобальные настройки, это такие, как размещение на экране рабочего стола, шрифт, обрамления, размер и т.д. Полный список тут.
- вывод элементов мониторинга с заданной (update_interval) частотой, это те которые идут после тега TEXT, все переменные которыми оперирует программа задаются в этой секции.
Перед названием переменной необходим знак $. Например, если мы хотим вывести версию ядра то пишем после $kernel. Список переменных можно посмотреть тут.
Также Conky представляют интерфейс для запуска внешних скриптов с помощью переменных семейства exec (exec,execbar,execgraph,execp,execi).
А вот тут есть несколько скриншотов а также файлы конфигов (.conkyrc) к ним.

2 мая 2008 г.

Установка Linux не записывая дистрибутив на CD/DVD

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

После скачивания дистрибутива Linux с интернета вам необходимо записать его на DVD или CD чтоб проинсталировать. Вообшем, эти диски необходимы только один раз, и после инсталляции становятся ненужными, тем более, что почти каждый дистрибутив обновляется каждые 6 месяцев. Итак, если вы хотите обновляться к новым версиям, то у вас соберется куча CD, которые вам фактично уже не нужны. Какое нерациональное использование CD. Но, используя маленький трюк вы сможете установить любой дистрибутив Linux с вашего жесткого диска без записи его на CD или DVD. Необходимым условием является установленная система на вашем компьютере. Это очевидно, поскольку если вы не сможете загрузиться, то и не сможете проинсталлировать, поскольку предполагаться, что у вас нет установочного диска с Linux. Тут описывается трюк с Microsoft Windows как уже проинсталлированой системой.
Почти все Linux-овые инсталляции используют два файла для загрузки компьютера: ядро Linux, и загрузочную корневую файловую систему, которая содержит минимальный набор директорий, которые монтируются перед тем, как будет смонтирована настоящая корневая файловая система /. Эту файловую систему называют Ram disk (initrd). Мы будем использовать эти два файла, чтоб загрузить ОС на наш компьтер. Теперь опишем полностью процедуру.

1. Сперва нужно скопировать ISO файлы Linux-а на ваш жесткий диск. Убедитесь, что раздел на жестком диске отформатирован как FAT32, если конечно, ваш дистрибутив не имеет поддержки чтения/записи с NTFS разделов. Некоторые дистрибутивы требуют ISO-файл в корне раздела. Если вы скопируете его в папку, установщик может не найти его.
2. Используйте WinRAR для открытия ISO файла (не разархивируя его). Распакуйте два файла, про которые говорилось выше. Эти файлы можно найти в папке isolinux. Разные дистрибутивы могут содержать их в другом месте, вам необходимо найти их. Эти два файла могут иметь разные имена в разных дистрибутивах. Файлы которые нужно распаковать из архива (файл ядра обозначен зеленым цветом, Ram disk обозначен красным цветом):
Fedora: vmlinuz и initrd.img
Suse: linux и initrd
Mandriva: vmlinuz и all.rdz
Ubuntu: vmlinuz и initrd.gz
Gentoo: gentoo и gentoo.igz
Knoppix: vmlinuz и initrd.img
Slackware: bzImage и initrd.img
Debian: vmlinuz и initrd.gz
3. Распакуйте эти два файла в папку c:\boot (вы должны будете создать каталог 'boot')
4. Теперь скачайте файл grub4dos. Распакуйте его в папку 'boot' и файл 'grldr' из скачаного архива. Внутри директории 'boot' есть директория 'grub'; скопируйте директорию 'grub' в c:\boot. Скопируйте файл "grldr" в c:\.
5. Откройте c:\boot\grub\menu.lst и добавьте следующие строки. (Учтите, что hd0 есть первый ваш жесткий диск. Если у вас больше одного жесткого диска, то они будут называться соответственно hd1, hd2 и т.д. Замените hd0 правильным названием если у вас windows установлена на другом жестком диске). Замените Linux_kernel и Ram_disk соответствующими названиями файлами описанными выше (вы их скопировали в c:\boot).
title Install Linux
kernel (hd0,0)/boot/Linux_kernel
initrd (hd0,0)/boot/Ram_disk

6. Теперь вы должны добавить grub в файл c:\boot.ini. Открыть boot.ini можно переходя Start->Run и там вписать c:\boot.ini. Если Windows не позволяет вам его модифицировать, то зайдите на вкладку Advanced из Control Panel->System. Под Startup and Recovery нажмите Settings и тогда на System Startup нажмите Edit. Откройте boot.ini и добавьте эту строчку в конец файла.
C:\grldr=”Start GRUB”

7. Теперь вы готовы инсталлировать Linux. Перезагрузите компьютер и из меню загрузки выберете "Start GRUB". Это загрузит GRUB. Из меню grub-а выберете "Install Linux". Во время инсталляции вас спросят про источник инсталляции. Выберете жесткий диск и тогда выберете раздел на нем, на который вы скопировали ISO-файл. Иногда нужно указать полный путь и точное название файла ISO. Так, что запишите заранее это перед инсталляцией.
Я непосредственно протестировал это с Fedora, Suse и Mandriva и это работало без проблем. Я не сомневаюсь, что это будет работать и с другими дистрибутивами.

Update: dougfractal добавил, что такой способ можно провернуть и из проинсталлированого Linux. Он делал так:

В терминале введите команды:
sudo mkdir /distro
sudo chmod `whoami`:`whoami`
cp MYLINUX.iso /distro/distro.iso

Распакуйте Linux_kernel и Ram_disk в /distro

добавте в файл /boot/grub/menu.lst строки:
#ADD NEW ENTRY#
title Install Linux
root (hdX,X)
kernel /distro/Linux_kernel
initrd /distro/Ram_disk

Перезагрузите компьютер и виберете "Install Linux" из меню grub.

26 апреля 2008 г.

Ubuntu 8.04 впечатления

Буду добавлять по мере того, как буду сталкиваться с проблемами.

Клиент PSI:
Обновленный клиент не нашел SSL плагин, переустановка либы qca-tls не помогла. Поэтому апт-ом удалил с машины PSI, и поставил с исходников, которые можно скачать с официального сайта psi-im.org
$ sudo apt-get autoremove qca-tls psi


Больше ничего не замечено.

9 апреля 2008 г.

Запуск ssh-agent при старте системы

Я, например, храню свои RSA/DSA ключи в ssh-agent.
При запуске bash-а, создаеться свое окружение, и чтоб не запускать постоянно новый ssh-agent, а главное не вводить постоянно пароли к ключам (я использую ключи с паролями), можно просто экспортировать переменные окружения агента.
Небольшой скриптик, который проверяет, не запущен ли сейчас ssh-agent, и если нет... запускает его с нужными ключами:
$ cat start_sshagent.sh
#!/bin/sh

# ssh-agent runner
# RSA/DSA private key files, it`s params script

eval `cat /tmp/ssh_agent.txt`
ret=`ps $SSH_AGENT_PID|grep $SSH_AGENT_PID`
if [ -z $ret ]; then
ssh-agent > /tmp/ssh_agent.txt
eval `cat /tmp/ssh_agent.txt`
ssh-add $1
echo "new ssh-agent"
else
ret=`ssh-add -l | grep $1`
if [ -n $ret ]; then
ssh-add $1
else
echo "yet"
fi
echo "use exist ssh-agent"
fi
echo "ok"

что б он постоянно выполнялся при запуске bash, я его включил в ~/.profile
start_sshagent.sh  /home/`whoami`/.ssh/id_to_remote_ssh_server
eval `cat /tmp/ssh_agent.txt`

7 апреля 2008 г.

Краткий справочник svn (subversion)

svn checkout http://repository.url/svn/name — извлекаем файлы проекта из репозитория, сокращение: svn co;
svn update — получаем обновления из репозитория, сокращение: svn up;
svn update -r rev_num ./file_name — извлекаем ревизию файла с номером rev_num;
svn add ./file_name — добавляем файл в репозиторий (не важно текстовый или бинарный);
svn rename ./old_file_name ./new_file_name — переименовываем файл в репозитории;
svn remove ./file_name — удаляем файл/директорию из репозитория;
svn status — просматриваем локально измененные файлы, сокращение: svn st;
svn status -u — просматриваем локально измененные и изменившиеся в репозитории файлы, сокращение: svn st -u;
svn diff ./file_name — показывает локальные изменения в файле построчно;
svn diff -r rev_num1:rev_num2 ./file_name — показывает различия между ревизией rev_num1 и rev_num2 файла;
svn revert ./file_name — откатывает локальные изменения файла (выгружает из репозитория последнюю закоммиченную ревизию);
svn revert -R ./ — откатывает все локальные изменения файлов;
svn log ./file_name — список ревизий с комментариями;
svn blame ./file_name — показывает авторов изменений файла построчно, синоним: svn annotate;
svn propset svn:ignore ./file_name . — добавляем файл в список игнорируемых файлов;
svn propset svn:keywords "Id Author Date" ./file_name — установка атрибутов файла;
svn cleanup — снимает блокировки с файлов;
svn unlock http://repository.url/svn/file_name — снять блокировку файла (URL можно узнать с помощью команды svn info ./file_name | grep URL, его и нужно передавать в svn unlock);
svnadmin setlog --bypass-hooks /path/to/repository -r rev_num ./commit_text_file — заменяет текстовое описание коммита, где rev_num — номер ревизии, commit_text_file — путь к файлу, содержащему новый комментарий к коммиту;
svn help command_name — выводит помощь по команде command_name, например, «svn help update»;
svn merge -r rev_to_rollback:rev_good ./file_name — откатываем ревизию номер rev_to_rollback до ревизии rev_good, причем все изменения старше rev_to_rollback сохраняются (Например, у файла есть ревизии 11,12 и 13. Хотим откатить 12-ую ревизию, но так, что бы изменения 13-ой остались в силе. Делаем тогда так: svn merge -r 12:11 ./file_name);
svn copy http://repository.url/svn/name/trunk/ http://repository.url/svn/name/branches/new_branch_name/ — создаем ветку с названием new_branch_name из главной линии разработки;
svn merge --dry-run -r rev_num1:rev_num2 http://repository.url/svn/name/trunk/ — проверяем, что будет изменено при объединении веток, где rev_num1 — номер ревизии, когда ваша ветка была «открыта», или это м.б. номер предыдущего объединения (слияния), rev_num2 — версия главной линии разработки, с которой производим объединение. Необходимо отметить, что все изменения будут применены для директории, в которой выполнялась эта команда;
svn merge -r rev_num1:rev_num2 http://repository.url/svn/name/trunk/ — синхронизирует вашу ветку с главной линией разработки с учетом ревизий: rev_num1 — номер ревизии, когда ваша ветка была «открыта», или это м.б. номер предыдущего объединения (слияния), rev_num2 — версия главной линии разработки, с которой производим объединение. Необходимо отметить, что все изменения будут применены для директории, в которой выполнялась эта команда;
Полную документацию по subversion на русском языке можно посмотреть по ссылке «Управление версиями в subversion». Если Вы нашли ошибку на этой странице, напишите по адресу mail (at) gnuman (dot) ru.
© www.gnuman.ru

Update (22.11.2010):
Статья по работе с бранчами в svn.

4 апреля 2008 г.

Оператор Life:), телефон LG-G1800

Как я подключал мобильный телефон LG-G1800 (оператор 'Life:)')
Ubuntu 7.10 легко определяет мой телефон подключенный через USB-порт:
$ lsusb 
Bus 005 Device 001: ID 0000:0000
Bus 004 Device 001: ID 0000:0000
Bus 003 Device 002: ID 0458:003a KYE Systems Corp. (Mouse Systems)
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 002: ID 0e8d:0003 #<<<< вот адресс устройства моего телефона
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000

да и появляется устройство "/dev/ttyACM0"
для подключения к оператору 'Life:)' я использую консольную утилиту pppd:
$ sudo pppd call ll

и соответственно два конфига:
/etc/ppp/peers/ll:
noauth
connect "/usr/sbin/chat -v -f /etc/chatscripts/life-gprs"
defaultroute
/dev/ttyACM0
115200
persist
# You may need these
passive
noipdefault
noproxyarp
ipcp-accept-local
#ipcp-accept-remote
#ipcp-restart 2
#ipcp-max-configure 20
#ipcp-max-failure 20
lcp-echo-failure 0
lcp-echo-interval 0
lcp-max-configure 0
lcp-max-failure 0
asyncmap 0xa0000
novj
nodeflate
nobsdcomp
usepeerdns
user ""
lock

и /etc/chatscripts/life-gprs:
ABORT 'BUSY'
ABORT 'ERROR'
ABORT 'NO ANSWER'
ABORT 'NO CARRIER'
ABORT 'NO DIAL'
'' AT
OK AT+CGDCONT=1,"IP","internet"
OK ATD*99***1#
CONNECT \d\c

Русские шрифты в wine

Коряво отображались русские символы под wine-ом.
$wine --version
wine-0.9.46

Точнее даже в самом Lotus Notes 7.0 шрифты отображались коряво (кстате установка его происходила из под винды, потом просто скопировал из 'C:\Program Files\lotus' в папку 'Program Files' wine-а). Русские шрифты подправил простой символической ссылкой папки 'c:\windows\fonts' в папку '$HOME\.wine\drive_c\windows\fonts'.

3 апреля 2008 г.

Конвертация .ape/.flac (+.cue) в .mp3/.ogg формат

Для конвертации в Ubuntu нам потребуетются библиотеки:
mac - конвертер с/в ape-формат (Monkey Audio)
  #: wget http://members.iinet.net.au/~aidanjm/mac-3.99-u4_b3-1_i386.deb
#: dpkg -i mac-3.99-u4_b3-1_i386.deb
lame - декодер mp3
 $: sudo apt-get install lame

mp3splt - обрезка mp3/ogg файлов
 $: sudo apt-get install mp3splt

oggenc - декодер ogg
 $: sudo apt-get install vorbis-tools


сам скрипт: конверта
<div class="commenthidden" id="SCRIPT-CUEAPE">
<table width="95%" cellpadding="0" cellspacing="0" border="0"><tr><td class="code-outline"><pre class="displaycode">#!/bin/bash
 
#cueape 0.1
#This script is intended to convert ape or flac + cue files to
#ogg vorbis or mp3 files, setting the tags to the correct value,
#obtained from the cue file.
#REQUIREMENTS:
# -Oggenc installed (it comes with vorbis-tools) if you want to encode into Ogg Vorbis.
# -lame installed if you want to encode into mp3
# -mac to decode ape files (Monkey's Audio)
# -flac to decode flac files.
 
#IF YOU FIND A BUG OR HAVE A SUGGESTION COMMENTO OR SIMPLY WANT TO CONTACT ME PLEASE MAIL ME TO
#rafadev_*@gmail.com REMOVING THE "_*"
#This is done to prevent spamming
 
#Copyright (C) 2006 Rafael Ponieman - Buenos Aires, Argentina
 
#This program is free software; you can redistribute it and/or
#modify it under the terms of the GNU General Public License
#as published by the Free Software Foundation; either version 2
#of the License, or (at your option) any later version.
 
#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#GNU General Public License for more details.
 
#You should have received a copy of the GNU General Public License
#along with this program; if not, write to the Free Software
#Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 
 
#scripted by deX
 
 
case "$1" in
*.[aA][pP][eE] | *[fF][lL][aA][cC] )
if [ ! -f "$1" ] ; then
echo "Input file $1 doesn't exist"
exit 1
fi
if [ ! -f "$2" ]; then
echo "Cue input file $2 doesn't exist"
exit 1
fi ;;
* )
echo "Error: invalid input parameters"
exit ;;
esac
 
#Testing parameters
if [ "$3" != "-m" ] && [ "$3" != "-o" ] ; then
echo -en "\033[1;31mInvalid parameters\n"
echo -en "\033[1;37m"
echo -en "Usage: cueape [input ape file] [input cue file] [parameters]\nParameters can be: -m for mp3 encoding or -o for ogg encoding.\n"
exit 1
fi
 
#Need help with this one, coudn't solve it. I need to know how to check if a
#program actually exists and is accesible
#Checking for mac
#[ -f $(which 'maca' >> /dev/null) ] || {
# echo -en "\033[1;31mYou must have mac in your PATH.\033[1;37m\nPlease install Monkey's Audio Codec\nYou can get it from http://sourceforge.net/projects/mac-port/\n"
#}
 
 
#Saving the position so as to return afterwards
olddir="$(pwd)"
 
#Going to target directory
cd "$(dirname "$1")"
 
#Checking for the output folder. If it's not there I create it
[ ! -d "Output" ] && mkdir -p "Output"
cp "$2" "Output/"
 
#Decompress
echo -en "\nCueape 0.1\n\n"
echo -en "\033[1;32mStarting conversion\n"
 
#Checking filetype by extension and decompressing
tmp="$(basename "$1")"
tmp="${tmp##*.}"
 
case "$tmp" in
[fF][lL][aA][cC] )
echo -en "\033[1;32mDecompressing FLAC file\n\n"
echo -en "\033[1;37m"
tm="$(basename "$1")"
tm="${tm%.[fF][lL][aA][cC]}"
out="$(flac "-d" "$1" -o "Output/${tm}.wav" )"
;;
[aA][pP][eE] )
echo -en "\033[1;32mDecompressing APE file\n\n"
echo -en "\033[1;37m"
tm="$(basename "$1")"
tm="${tm%.[aA][pP][eE]}"
out="$(mac "$1" "Output/${tm}.wav" "-d")"
;;
* )
echo "Error: line 99"
esac
 
cd "Output"
echo -en "\033[1;32m\nDecompression finished\n"
echo -en "\033[1;32mStarting reencoding\n\n"
echo -en "\033[1;37m"
if [ "$3" = "-o" ] ; then
#Calling oggenc. Saving output for future checking
out="$(oggenc -q 6 -o "$tm.ogg" "$tm.wav")"
echo -en "\033[1;32m\nReencoding finished\n"
echo -en "\033[1;32mSplitting\n\n"
echo -en "\033[1;37m"
out="$(mp3splt -c "$(basename "$2")" -o "@n+-+@t" "$tm.ogg")"
else
#Calling lame. Saving output for future checking
out="
$(lame --preset insane "$tm.wav" "$tm.mp3")"
echo -en "
\033[1;32m\nReencoding finished\n"
echo -en "
\033[1;32mSplitting\n\n"
echo -en "
\033[1;37m"
#Using framemode becaus this settings are for VBR
out="
$(mp3splt -f -c "$(basename "$2")" -o "@n+-+@t" "$tm.mp3")"
fi
cd "
$oldir"
echo -en "
\033[1;32m\nProcessing finished successfully\n"
echo -en "
\033[1;37m"
exit 0



Конвертирование тегов mp3 из cp1251 в UTF-8
find . -name "*.mp3" -print0 | xargs -0 mid3iconv -e CP1251 -d > ~/convert.log