My some Blog

Посмотрим, что получиться из этого блога.

Subscribe to RSS feed

А вот и я)

Давно что-то меня тут не было. Решил вернуться.

Opera 11

В каждой новом релизе Оперы должна присутствовать такая кнопка как "Сделать всё оформление как в прошлой версии"

KDE SC 4.4 Packages Available Доступен в кубунту.

http://www.kubuntu.org/news/kde-sc-4.4

Подключаем репозиторий:
deb http://ppa.launchpad.net/kubuntu-ppa/backports/ubuntu karmic main


И обновляемся

Синхронизация Контактов, Календаря с Nokia 5800 c Kontact (декстоп) и гуглом.

, , ,

И так задача настроить синхронизацию Nokia 5800 с чем-нибудь из Linux-окружения (Kubuntu 8.10), к примеру Kontact.

Связь между телефоном и компьютером есть только через интернет, у компа внешний IP, у телефона 3G. Изначально идея была синхранизация типа Телефон-VDS_Сервер-компьютер. До ума её доведу - отпишусь. Можно использовать BlueTooth или через Wi-Fi роутер подключать, но ни того ни другого под рукой в данный момент нет, курите доки =)

Ставим opensync и плагины:
sudo apt-get install opensync-plugin-file opensync-plugin-kdepim opensync-plugin-syncml


#Создаем группу
$ msynctool --addgroup nokia5800

#Прицепляем в группу плагины
#HTTP сервер для обработки syncml протокола
$ msynctool --addmember nokia5800 syncml-http-server
#Плагин для КДЕ
$ msynctool --addmember nokia5800 kdepim-sync
#Плагин, чтобы все данные синхронизации (контакты, календарь) сохранялись в файлах, в принципе нужны только 2 плагина, можно обойтись и без него
$ msynctool --addmember nokia5800 file-sync

#Смотрим ID плагинов:
msynctool --showgroup nokia5800


Правим конфиг плагина file
msynctool --configure nokia5800 <file plugin ID>

<?xml version="1.0"?>
<config>
  
  <path>/home/f3ex/nokia/5800</path>

  
  <recursive>FALSE</recursive>
</config>


Правим конфиг плагина syncml
msynctool --configure nokia5800 <syncml plugin ID>

<?xml version="1.0"?>
<config>
    <username></username>
    <password></password>
    <url>/</url>
    <port>8080</port>
    <usestringtable>1</usestringtable>
    <onlyreplace>0</onlyreplace>
    <recvLimit>10000</recvLimit>
    <contact_db>contacts</contact_db>
    <calendar_db>calendar</calendar_db>
    <note_db>notes</note_db>
</config>


Плагин kde-pim подхватывает все автоматом.

Запускаем демон
msynctool --sync nokia5800 --wait


Теперь на телефоне Меню-Параметры-Связь-Передача данных-Синхронизация; Функции - Новый профиль синхронизации:
Название профиля
Протокол 1.1 (не поддерживается почта)
Отмечаем нужные пункты (контакты, календарь, заметки)
БД контактов: contacts
БД календаря: calendar
БД заметок: notes
Канал данных: Интернет
Адрес сервера: http://95.28.x.x:8080
Имя пользователя:
Пароль:

Всё, синхранизируемся, получаем файлы синхронизации в ~/nokia/5800 и в Kontact'e

gentoo tips

, ,

Ставлю Генту, но т.к. использую 2 винта вечно какая-то беда происходит с именами устройств. К примеру root раздел в fstab /dev/sda3, а в grub'e в параметре real_root он уже /dev/sdb3

//Пишу с другого компьютера, поэтому значения несколько другие.
$ sudo blkid
/dev/sda1: UUID="8c1e959e-3b12-4068-94c2-148687e0d33c" TYPE="ext4"
/dev/sda5: UUID="0c48c193-81c4-441f-bd88-c576844be0a7" TYPE="swap"


В /boot/grub/grub.conf теперь записать параметр как:
real_root=UUID=8c1e959e-3b12-4068-94c2-148687e0d33c


аналогично и в fstab'e, скопировано с убунты:
UUID=8c1e959e-3b12-4068-94c2-148687e0d33c /               ext4    errors=remount-ro 0       1


И важный момент, ядро я собираю через genkernel, нужно указать опцию при сборке --disklabel, чтобы ядро подхватывало при загрузке такие разделы.

genkernel --disklabel --menuconfig all

Почему я люблю Ruby и не люблю Python wink

Надо было сделать быстро получить для одного дела строку наоборот, т.е. её реверс из консоли.

В общем открываем irb:
irb(main):001:0> "hello".reverse
=> "olleh"


Всё логично и просто.

А теперь в консоли python:
$ python
Python 2.6.2 (release26-maint, Apr 19 2009, 01:56:41)
[GCC 4.3.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> "hello".reverse
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute 'reverse'


Хм, ничего интуитивного в голову не приходит, лезем в гугл, по первой ссылке находим такой вот способ:
>>> "hello"[::-1]
'olleh'

Убого же..

Яндекс добавили возомжность добаления собственных доменов для почты.

Собственно все подробности на странице:

http://clubs.ya.ru/company/replies.xml?item_no=19900

Планы на после отпускное время.

Следующее нужно будет сделать после отпуска:

- написать daemon'a на ruby, чтобы парсил RSS и уведомлял через XMPP модуль на jabber. Плюс добавить парсер контакта =)

- сделать распределенную систему заметок =) подробности и ТЗ чуть позже )

Ну и разумеется доиграться с VLC и ARM

Редактор.

Навеено многими своими поисками редактора для Ruby, Ruby On Rails, которые не увенчались успехом, и аналогичными поисками своих знакомых.

Стоит отметить - есть очень хорошая штука NetBeans, но этот IDE написан на Java, и на моих 1,6 Ггц NetBeans вызывает панический ступор (это послужило поводом для того, чтобы отложить Rails, увы). TextMate штука хорошая, но Mac'ов не держу.

1. Редактор должен быть написан на компилируемом языке, а не интерпретируемом.

RedCar - редактор, конечно, значимый, но написанный на руби с использованием gtk-библиотек в моем KDE окружении это тормоз.

Минус в использование интерпретируемых языков - зависимости. Коллега на ЛОРе пишет свой плеер на основе python\Qt:
http://www.linux.org.ru/view-message.jsp?msgid=3927753


Python, PyQt4, GStreamer с плагинами для mp3, GStreamer-python, SQLite 3, Python-Xlib (без неё не будет хоткеев), Chardet и Mutagen.



Сразу оговорюсь - ничего плохого в личных проектах при таком подходе я не вижу. В других случаях мы должны сначала компилировать отдельно библиотеки, затем на основе их компилировать библиотеки для питона... Это я ставлю в противовес статичной сборке Сишный приложений (благо Опера приучила).

Отсюда вытекает распространение. Представте ставить аналогичное под Windows, MacOs, Solaris и прочее. Я как пользователь Windows отказался от запуска своего же приложения на ruby\Qt (сам отказ, правда, заключался в отказе от Windows - но это не решение проблемы)

2. Автодополнение.

Подсветка синтаксиса это хорошо, но еще удобно нажать CTRL+SPACE и получить список функций, а еще лучше список собственных переменных.

3. Работа с проектом и каталогами.

Как известно rails-проект включает в себя много файлов в множестве директорий и под-директорий. И при внесение изменений в код, необходимо поправить 2-3 файла в разных директориях. В NetBeans\Komodo данное замечание реализовано очень хорошо.

4. Актуальность.

С выхода Qt 4 и KDE 4 прошло 4 и 1,5 года соответственно. А до сих пор нету стабильного релиза KDevelop для 4-й ветки.
(на днях попробую скомпилить из сырцов, но там предполагаю опять зависимости вылезут на моей древней кубунте). И судя по всему увидем только в Кубунту 10.04 ((

Linux + QT on ARM, ч. 2

Сборка QT и "допилование" образа.

Сейчас нужно будет скомпилировать библиотеку QT, записать тестовое приложение и довести до ума файловую иерархию в образе.
Установка библиотеки QT [1]

Убедитесь, что в PATH присутствует путь /usr/arm-unknown-linux-uclibc/bin
# cd /arm/source/
# wget http://get.qtsoftware.com/qt/source/qt-embedded-linux-opensource-src-4.5.2.tar.gz
# tar xvf qt-embedded-linux-opensource-src-4.5.2.tar.gz
# cd qt-embedded-linux-opensource-src-4.5.2
# mcedit mkspecs/qws/linux-arm-g++/qmake.conf


И отредактиваровать qmake.conf до такого состояния:
QMAKE_CC                = arm-unknown-linux-uclibc-gcc
QMAKE_CXX               = arm-unknown-linux-uclibc-g++
QMAKE_LINK              = arm-unknown-linux-uclibc-g++
QMAKE_LINK_SHLIB        = arm-unknown-linux-uclibc-g++

QMAKE_AR                = arm-unknown-linux-uclibc-ar cqs
QMAKE_OBJCOPY           = arm-unknown-linux-uclibc-objcopy
QMAKE_STRIP             = arm-unknown-linux-uclibc-strip


Задаем опции для конфигурирование, архетектура arm, путь с конфами компилятора, статичная сборка. Отключаем всё по максимуму, впринципе оно для тестового приложения не понадобиться. А если что-то будет требоваться в вашем приложение - тогда включите эту опцию. Затем компилируем и ставим.
# ./configure -embedded arm -xplatform qws/linux-arm-g++  -qvfb -static -opensource -no-qt3support -no-svg  \
  -no-webkit -no-gif -qt-libpng -no-libjpeg -no-openssl -no-cups -no-iconv -qt-freetype -no-opengl \
  -nomake examples -nomake demos -nomake docs -nomake translations -qt-mouse-pc -qt-mouse-bus

Qt is now configured for building. Just run 'gmake'.
Once everything is built, you must run 'gmake install'.
Qt will be installed into /usr/local/Trolltech/QtEmbedded-4.5.2-arm

To reconfigure, run 'gmake confclean' and 'configure'.

# gmake
# gmake install


Библиотеки Qt инсталируются в /usr/local/Trolltech/QtEmbedded-4.5.2-arm
Сборка тестового приложения.

Скопмилируем "аналоговые часы", исходники программы идут в поставке QT.
# cd /arm/source/
# cp -r /arm/source/qt-embedded-linux-opensource-src-4.5.2/examples/widgets/analogclock .
# cd analogclock/
# /usr/local/Trolltech/QtEmbedded-4.5.2-arm/bin/qmake -project
# /usr/local/Trolltech/QtEmbedded-4.5.2-arm/bin/qmake

Конечно, можно добавить в PATH - /usr/local/Trolltech/QtEmbedded-4.5.2-arm/bin
Теперь нужно подредактировать pro-файл.
# mcedit analogclock.pro


И добавить строчку для статично сборки:
CONFIG += static

Теперь можно собрать приложение
# make


На выходе получится бинарник analogclock
Создание образа initrd.

То, что делалалось в предыдушем пункте конечно можно использовать и далее, только если делать по хорошему - нужно определить устройства, загрузочные скрипты и т.д. Поэтому соберем initrd заново, из предыдущего пункта понадобятся Ядро (zImage) - без измения, непосредственно для запуска; busybox и библиотеки uclibc.
Выберем директорию для нашего нового образа: /arm/system/rootfs
# mkdir /arm/system/rootfs
# mkdir /arm/system/rootfs/boot
# mkdir /arm/system/rootfs/etc
# mkdir /arm/system/rootfs/tmp
# mkdir /arm/system/rootfs/proc
# mkdir /arm/system/rootfs/dev

Ставим BusyBox:
# cd /arm/source/busybox-1.13.3
# make ARCH=arm CC="arm-unknown-linux-uclibc-gcc -static" CROSS_COMPILE="arm-unknown-linux-uclibc-"  CONFIG_PREFIX=/arm/system/rootfs install


Копируем библиотеки uclibc и gcc:
# cp -rv /usr/arm-unknown-linux-uclibc/lib /arm/system/rootfs/
# cp -v /usr/lib/gcc/arm-unknown-linux-uclibc/4.4.0/* /arm/system/rootfs/lib/


Копируем приложение analogclock:
# cp /arm/source/analogclock/analogclock /arm/system/rootfs/


Теперь нужно создать устройства.
# cd /arm/system/rootfs/dev
# MAKEDEV busmice
# MAKEDEV fb0
# MAKEDEV console
# MAKEDEV std


Скрипты загрузки.
# cd /arm/system/rootfs
# ln -s bin/busybox init


При запуске, ядро вызывает init скрип. В данном случае это бизибокс, который читает настройки инициализации из /etc/initab и выполняет указанные там скрипты инициализации (Можно почитать на странице http://www.busybox.net/downloads/BusyBox.html, искать команду init), если /etc/inittab'a нет, используется свой встроенный формат загрузки. Опять же всё там написано. Единственно, что стоит отметить, busybox не поддерживает runlevels. Так что smile
Для запуска приложения понадобятся шрифты, как их вставить в бинарник я пока еще не понял.
# mkdir -p /arm/system/rootfs/usr/local/Trolltech/QtEmbedded-4.5.2-arm/lib/fonts
# cp -v /usr/local/Trolltech/QtEmbedded-4.5.2-arm/lib/fonts/* /arm/system/rootfs/usr/local/Trolltech/QtEmbedded-4.5.2-arm/lib/fonts/


Теперь опять можно собрать систему
# find . | cpio -o -H newc | gzip -9 > ../initrd.img

И запустить c ядром, полученным на первом этапе:
$ qemu-system-arm -M versatileab -kernel zImage -initrd initrd.img -append "root=/dev/ram" 

После загрузки системы набрать:
/analogclock -qws