вторник, 31 марта 2009 г.

Как создать пункты контекстного меню в KDE

Как создать пункты контекстного меню в KDE | Kubuntu

При клике правой кнопкой на файлах, в выпадающее меню можно добавлять собственные пункты. Для этого надо создать специальные .desktop файлы по следующим путям:
В KDE 3 ~/.kde/share/apps/konqueror/servicemenus/
В KDE 4 ~/.kde/share/kde4/services/ServiceMenus/
Вот пример пункта меню для отправки файла через блютуз в KDE 4. Поскольку родной блютуз остался выкидышем современных технологий, я использую программу отправки из гнома.

[Desktop Entry]
Type=Service
Actions=bluetooth;
ServiceTypes=KonqPopupMenu/Plugin,all/allfiles
X-KDE-Priority=TopLevel

[Desktop Action bluetooth]
Exec=gnome-obex-send %U
Icon=preferences-system-bluetooth
Name=Отправить через bluetooth

Теперь немного пояснений.
Раздел [Desktop Entry]
Type - тип .desktop файла должен быть Service.
Actions - тут через точку с запятой перечисляются действия (action1;action2;), каждому из которых должен соответствовать раздел ([Desktop Action action1], [Desktop Action action2]).
ServiceTypes - mime-типы файлов, перечисляются через запятую, all/allfiles соответствует всем файлам, all/all всем файлам и каталогам, KonqPopupMenu/Plugin - без этого срабатыает не на всех типах файлов.
X-KDE-Priority - это нужно для kde4, я не совсем понял для чего.
X-KDE-Submenu=подменю - этот параметр следует добавить, если хочется заключить действия в отдельное подменю с именем "подменю".

Раздел [Desktop Action имя]
Exec - команда на запуск, %U является именем файла, на котором мы вызвали меню.
Icon - имя иконки.
Name - текст, отображаемый в качестве пункта меню.

Если необходимо создать пункт для всех пользователей, а не только для текущего, то создаем файлы не в ~/.kde/, а в /usr/ по аналогичным путям.

суббота, 28 марта 2009 г.

Изменение количества сайтов на странице Быстрого Набора в Opera

welinux.ru/How-to`s — Изменение количества сайтов на странице Быстрого Набора в Opera

По умолчанию на странице Быстрого Набора в Opera имеется только девять сайтов. Однако разрешение нынешних мониторов позволяет эффективнее использовать экранное пространство. Поэтому имеет смысл увеличить количество мест в быстром наборе.

Для этого необходимо найти файл, в котором хранятся настройки быстрого набора (/home/$USER/.opera/speeddial.ini) и добавить в него в самый конец следующие строки:

[Size]
Rows=3
Columns=5


В самом файле указано, что редактировать его надо при закрытой Opera.

вторник, 24 марта 2009 г.

Синхронизация с Google Calendar при помощи GCALDaemon

LamerNotes: Синхронизация с Google Calendar при помощи GCALDaemon

Я уже писал о синхронизации thunderbird + lightning с google calendar. Эта заметка для тех, кто терпеть не может thunderbird, у кого это слово вызывает тошноту или просто не пользуется, но использует другое приложение, которое умеет работать с iCalendar (например Sunbird, Lightning, Evolution, Rainlendar).

Возможностей у GCALDaemon немало, это не только синхронизация с google calendar, но и уведомление о новых письмах приходящих на ваш gmail аккаунт, доступ к gmail контактам, возможность отсылать ваши письма и html файлы из локальной папки не используя почтовый клиент(а оно нужно ?), удалённое управление вашим компьютером и др.

Я же напишу пока только про синхронизацию с гугловским календарём при помощи Sunbird. Остальные возможности подробно описаны на сайте.

Сразу скажу GCALDaemon написан на яве и её же требует не ниже 1.5 версии.

Качаем архив и распаковываем например в /usr/local/sbin. Если вы выбираете другую директорию, то надо будет подправить пару скриптов:
cd /usr/local/sbin
unzip ~/Downloads/gcaldaemon-linux-1.0-beta16.zip
Затем нужно задать права как кому угодно. Если вы хотите, чтобы каждый пользователь мог запускать демон:
chgrp -R имя_группы /usr/local/sbin/GCALDaemon
chmod -R g+w /usr/local/sbin/GCALDaemon
chmod 755 /usr/local/sbin/GCALDaemon/bin/*.sh
Если всё прошло гладко, делаем:
cd /usr/local/sbin/GCALDaemon/bin
./password-encoder.sh
вводим пароль и смело жмём enter.

Итак, с установкой мы справились, теперь запускаем:
standalone-start.sh
В настройках вашего календаря надо скопировать ical закрытый адрес (на картинке подчёркнут):


В sunbird создаём новый календарь и указываем, что находится он в сети. Формат выбираем iCalendar(ICS) и вставляем ваш закрытый адрес, заменяя при этом 'www.google.com' на 'localhost:9090':


Теперь осталось только дать календарю имя и ввести имя и пароль как в гугл аккаунте.
В настройке календаря можно выставить вид напоминаний: смс, оповещение на мыло или всплывающее окно. Я думаю смс оповещения - лучшее из имеющегося.

Защита GRUB паролем

welinux.ru/How-to`s → Защита GRUB паролем.

Ни для кого не секрет, что в Unix/Linux системе очень легко сбросить пароль root, имея физический доступ к компьютеру. Либо загрузившись с LiveCD/LiveUSB, либо передав штатному загрузчику параметры для запуска однопользовательского режима. Если от первого варианта можно (относительно) защититься, отключив в BIOS возможность загрузки со съемных носителей, установив пароль на BIOS и опечатыванием системника (а так же навешиванием замков или завариванием корпуса - кому что нравится :) ), то защита от второго способа - это установка пароля на загрузчик. Далее речь пойдет о GRUB.

Запускаем специальную утилиту, входящую в состав GRUB:

/sbin/grub-md5-crypt

Дважды вводим желаемый пароль и получаем md5-хэш пароля.
Теперь надо внести изменения в /boot/grub/grub.conf (в некоторых дистрибутивах /boot/grub/menu.lst).

После строчки timeout нужно вставить:
password --md5 полученный-хеш-пароля

Начиная со следующей перезагрузки для изменения параметров загрузки нужно будет нажимать p и вводить пароль. Теперь постороний человек не сможет загрузиться в однопользовательском режиме.

В GRUB также можно защитить паролем саму загрузку. В том же файле в секции, относящейся к конкретной системе нужно вставить строчку lock:

title Gentoo Linux
lock
root (hd0,0)
kernel /boot/vmlinuz root=/dev/sda1


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

title Gentoo Linux
lock
password --md5 хеш-нового-пароля
root (hd0,0)
kernel /boot/vmlinuz root=/dev/sda1


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

понедельник, 23 марта 2009 г.

Контакты Google в Akonadi

Контакты Google в Akonadi

Автор:SeaJey

В том же Commit-Digest разработчик Adenilson Cavalcanti Da Silva рассказывает об Akonadi-ресурсе для доступа к Google-контактам.

Доступ к Google-контактам в целом работает и полноценно поддерживаются следующие функции:

  • получение/добавление/правка/удаление;
  • диалог для пользовательского аккаунта;
  • хранения пароля пользователя в KWallet;
  • доступны поля: имя, email, телефон, должность, организация, адрес, заметки, фото;

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

Код ресурса можно получить из секции playground по этому адресу, также понадобится собрать библиотеку libgcal, её можно взять отсюда: git://repo.or.cz/libgcal.git

Следующие возможности пока не готовы:

  • календарь;
  • оставшиеся поля в карточке контакта (множественные адреса, телефоны и т.д.);
  • незакрытые TODO в исходниках;

Видео работы с ресурсом можно посмотреть на YouTube

Любые комментарии, замечания и патчи можно отправлять по адресу: cavalcantii-at-gmail-dot-com. В IRC-чате разработчик известен под ником Savago.

четверг, 19 марта 2009 г.

Настройка дополнительных кнопок мультимедийной клавиатуры

Настройка дополнительных кнопок мультимедийной клавиатуры | Kubuntu

В интернете полным-полно статей на эту тему, однако мне пришлось столкнуться с некоторыми тонкостями, поэтому я рискнула написать свою.
Итак, я обзавелась красоткой Genius ErgoMedia 700 с аж 36-ю дополнительными кнопками, но сразу на ней заработало только колесо прокрутки, и то только потому, что оно посылало те же кей-коды, что и стрелки.

1. Узнаем, какие кнопки система не видит.

Пишем в консоли xev и начинаем нажимать дополнительные кнопки (стараясь при этом не шевелить мышкой, потому что ее движения тоже отслеживаются). Если на каждое нажатие хоть что-то выводится, вам повезло. А если вы найдете модель своей клавиатуры в одной из таких программ, как hotkeys, keytouch, lineakd (есть в репозиториях) или sven (надо скачивать и собирать) - вам повезло вдойне, дальше можно настраивать с их помощью в красивых гуях. Если не повезло и на некоторые клавиши xev не реагирует, переходим к шагу 2.

2. Привязываем скан-коды.

Пишем в консоли dmesg и внимательно смотрим. В выводе должны быть строчки вида: [17183435.892000] atkbd.c: Unknown key pressed (translated set 2, code 0xa8 on isa0060/serio0).
[17183435.892000] atkbd.c: Use 'setkeycodes e028 <keycode>' to make it known.
Если даже dmesg ничего не пишет о ваших кнопках, тут я могу лишь посоветовать переткнуть клавиатуру из USB в PS/2 (у Genius переходник был в комплекте). У меня через USB половина дополнительных кнопок не виделась вообще, а половина посылала какие-то невероятные скан-коды, которые setkeycodes отказывалась назначать.

Вооружаемся бумажкой и ручкой и переписываем скан-коды, на которые ругается ядро (запоминать, к каким клавишам они относятся, не стоит - все равно не пригодится). В моем примере это e028. Теперь нужно узнать, какие кей-коды свободны. Для этого пишем например sudo getkeycodes|grep 215 (число в десятичной записи, желательно между 128 и 256). Если ничего не выводится, значит кей-код не занят. Но не торопитесь писать по совету ядра setkeycodes e028 215. Это назначение будет работать до первого рестарта, поэтому нужно озаботиться каким-нибудь загрузочным скриптом. Я выбрала /etc/rc.local (поправьте меня, если это не кошерно), получилось следующее:#!/bin/sh -e
exec sudo setkeycodes e025 220 &
exec sudo setkeycodes e02f 221 &
...
exec sudo setkeycodes e023 239 &
exit 0

3. Присваиваем кнопкам имена.

Итак, после запуска скрипта xev должен увидеть все кнопки. Кстати, обратите внимание, что кей-коды, выводимые xev, не совпадают с теми, что мы писали в setkeycodes. Где-то написано, что это баг, где-то - что это фича, но не суть важно. Снова вооружаемся бумажкой и ручкой, но теперь отмечаем, к каким именно кнопкам это относится. Вывод xev выглядит примерно так: KeyRelease event, serial 31, synthetic NO, window 0x2600001,
root 0x67, subw 0x0, time 265877259, (883,334), root:(886,358),
state 0x0, keycode 161 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
Нам интересны те кнопки, которые названы NoSymbol. Или же кнопка XF86Mail, совсем не являющаяся Mail - ее стоит переименовать. Переписываем их кей-коды.
Нам понадобится утилита xmodmap (из пакета x11-xserver-utils). В домашней директории создаем (или редактируем) файл .Xmodmap примерно следующего содержания: keycode 129=XF86AudioMedia
keycode 148=XF86Music
keycode 202=XF86Pictures
keycode 101=XF86Documents
Числа - переписаные из вывода xev кей-коды. А возможные имена нужно подсмотреть в конце файла /usr/share/X11/XKeysymDB. В принципе видно, что все они строятся одинаково: префикс XF86 и осмысленное название. Не забываем добавить xmodmap в автозагрузку.

4. Назначаем действия.

В принципе после команды xmodmap .Xmodmap можно настраивать действия кнопок KDE-шными средствами. Многие программы, например Dolphin, Amarok, Kmix имеют в меню пункт Комбинации клавиш, где сами отлавливают нажатия. Можно воспользоваться маленькой программкой xbindkeys из репозиториев, которая ассоциирует комбинации клавиш с консольными командами. Ее настроечный файл ~/.xbindkeysrc также имеет простейший синтаксис и состоит из блоков вида:"konsole"
XF86Book
Соответственно в кавычках команда, в следующей строке клавиша или комбинация. Однако я рекомендую воспользоваться xbindkeys-config, которая сама отлавливает нажатия и позволяет проверить работу команд. Почему-то она отлавливала мои дополнительные кнопки как Mod2+XF86Book, а без Mod2 не работала. Теперь можем с садистским удовольствием назначить на кнопки Power Point, Excel и Word соответственно konsole, ksysguard и xkill :) xbindkeys -f .xbindkeysrc в автозагрузку.

5. Для пользователей Opera.

И не только, возможно для некоторых других браузеров это тоже верно. Повесить на кнопки WWW и Search команды opera и opera yandex.ru несложно, а вот с кнопками навигации, а также Mail и Favorites не все так просто. Если пойти в Инструменты-Настройки-Дополнительно-Управление-Профили клавиатуры, то можно убедиться, что опера нажатия отлавливать не умеет и названия типа XF86Forwad и XF86Back не понимает. Много где написано, что это до сих пор не исправленный баг, однако не расстраивайтесь - все возможно! После мучительной, но победоносной войны было выяснено, что достаточно в .Xmodmap назначить этим кнопкам не заковыристые имена, начинающиеся на XF86, а простые F19, F20 и так далее! Их-то опера поймет :)

Все, можете поздравить себя с победой! А у меня еще 6 кнопок, для которых нужно придумать действие...

среда, 18 марта 2009 г.

Thunderbird для пользователя gmail и google calendar

welinux.ru/karapuz → Thunderbird для пользователя gmail и google calendar

Как всем вам известно, почти все сервисы google заточены для использования их через web интерфейс. Только так можно получить максимальную отдачу от данных сервисов. Я являюсь активным пользователем gmail и google calendar, но вот не люблю пользоваться почтой и календарем через web, и в один прекрасный день задался вопросом, а на сколько тесно можно интегрировать локальный почтовик с нужными мне сервисами google? Подходящую для этих целей почтовую программу долго искать не пришлось и выбор пал на Mozilla Thunderbird. На это есть две причины.

Причина первая


Google Contacts - расширение для Thunderbird, которое делает возможным работать с контактами в адресной книге gmail прямо из локального почтовика (редактировать, добавлять, удалять и пр.), ну и конечно синхронизировать локальную и удаленную адресные книги. В итоге вы получите резервную копию контактов на сервере google (не плохой бэкап) и возможность иметь доступ к своим контактам из любого места, где есть интернет.

Причина вторая


Lightning + Provider for Google Calendar
Расширение Lightning, я думаю, в особом представлении не нуждается. Это календарь для Thunderbird, как например в Evolution или kontact. А вот при помощи расширения Provider for Google Calendar из Thunderbird можно легко работать с вашим google calendar. Расскажу поподробней, как это сделать.
Сначала заходим в свой google calendar через web, идем в настройки, далее календари и выбираем тот, который хотим интегрировать с Thunderbird. В нижней части экрана вы увидите пункты: адрес календаря и закрытый адрес календаря, как показано на скриншоте.



Нам нужен закрытый адрес, обведенный красным. Копируем его, идем в мастер добавления календаря в Thunderbird, выбираем "В сети"



затем выбираем "календарь google" и в строке "адрес" вставляем скопированный ранее закрытый адрес.



Такими не хитрыми манипуляциями вы добавите в свой список календарей ваш google calendar, который без труда сможете редактировать из локального почтовика. Количество таких календарей в Thunderbird не ограничено.
Еще у google есть открытые календари, например "Праздники России". У них отсутствует закрытый адрес, но добавить в свой почтовик его можно как iCalendar, скопировав соответствующий адрес (ICAL).

Не большое замечание для владельцев opensuse 11.1, а возможно и других дистрибутивов. Чтобы расширение Lightning работало, необходимо установить пакет libstdc++33, который содержит нужную для работы Lightning библиотеку libstdc++.so.5. Естественно при установке расширения об этой зависимости ни кто ни чего вам не скажет. Не следует ставить Lightning из репозитория дистрибутива, есть риск того, что оно не будет работать в паре с Provider for Google Calendar.

И до кучи...


Недавно google запустил сервис syncML. Данный сервис позволяет синхронизировать адресную книгу вашего телефона с адресной книгой gmail. Благодаря этому сервису вы можете иметь единую адресную книгу в Thunderbird и в телефоне, если он конечно поддерживает протокол syncML.
Но есть один досадный минус (уж слишком все хорошо). Дело в том, что когда вы добавляете контакт в адресную книгу gmail через Thunderbird, на gmail он записывается не в основную адресную книгу, а в прочее. На телефон при синхронизации такой контакт не запишется. Нужно либо ручками копировать контакт в основную адресную книгу через web, либо новый контакт вписывать сначала в телефон, а потом синхронизировать.

Автор booley

Столпы KDE4. Phonon.

welinux.ru/KDE → Столпы KDE4. Phonon.

Столпы KDE4. Phonon.
Второй столп, на котором держится KDE4, не менее грандиозен и величественнен. Phonon - это мультимедиа API. Так же как и его побратим Solid, Phonon абстрагируется от конкретного звукового движка, будь то Xine, PulseAudio, GStreamer, DirectShow или QuickTime. Phonon, кстати, не является частью KDE, хотя KDE4 очень активно использует его. Знаменитый фрэймворк для создания кроссплатформенных приложений Qt (читается как [кьют], а не [кути]!) начиная с версии 4.4 имеет встроенную поддержку Phonon.

Зачем придумывать велосипед?


С незапамятных времен KDE2.0 использовал aRts в качестве медиа фрэймворка и обеспечивая мультимедиа API. Однако времена идут и все меняется, и, к счастью или сожалению, aRts не выдержал эту гонку и более не разрабатывается. То, что на его место придут другие было лишь вопросом времени, а времени оставалось все меньше - ведь разрабатывался такой большой проект, и все близился момент его первого релиза. И какой же из всех существующих вариантов выбрать? Чтобы был современный, чтобы поддерживал необходимые функции и чтобы не произошло того же, что было с aRts?
Ответ прост - не подстраиваться под один движок, а быть готовыми работать если не со всеми, то со многими.

Что Phonon даст простым пользователям?


Phonon опять же избавит вас от головной боли о том, как и через что воспроизводить звук. Для наглядности представим себе такой расклад:
Необходимо чтобы системные уведомления озвучивались в ваши двухсотваттные колонки (привет соседям :D), чтобы скайп бубнил в вашу беспроводную BlueTooth гарнитуру, а родители слушали Queen в соседней комнате на отдельной стереосистеме. При наличии необходимого количества девайсов вывода звука, Phonon в связке с уже рассмотренным Solid'ом позволит настроить все буквально в несколько щелчков мышью.
Для наглядности приведу скриншот, конечно, не относящийся к примеру что я описал, но все же помогающий вам увидеть типичный интерфейс настройки Phonon в KDE4.
Интерфейс настройки Phonon в KDE4 с множеством доступных устройств
Причем, переключение производится "на лету", и в идеале не нужна не только перезагрузка, но и перезапуск приложений! Конечно, пока что все может ьыть не так гладко, то есть изменение сейчас вступает в силу после перезапуска приложений воспроизведения звука (в случае с системными уведомлениями - перезапуск KDE4), но это только пока.
А чтобы не было особых сомнений в том, что это действительно универсальное и кроссплатформенное решение - вот скриншот с моей Windows XP:
Настройка Phonon в Windows через интерфейс KDE4
Как видите, в данном случае Phonon использует DirectShow9 движок. На Mac OS X на его месте был бы QuickTime. В этом еще один плюс - Phonon использует уже установленные в системе движки и адаптируется к ним.

Что Phonon даст разработчикам?


Очень многое! Как воспроизвести звуковой файл, поддерживаемый вашей звуковой подсистемой? Всего 4 строки кода - и готово!
1
2
3
4
5
6

media = new MediaObject(this);
connect(media, SIGNAL(finished()), SLOT(slotFinished()));
media->setCurrentSource("/home/username/music/filename.ogg");
media->play();

Вообще, Phonon предоставляет не только базовые функции воспроизведения, но также предоставляет интерфейс для создания спецэффектов. Для работы с Phonon вам, как разработчику, необходимо будет знать только API фронтэнда. Основными объектами Phonon являются MediaObject и AudioOutput. Данные, добытые через MediaObject должны передаваться в звуковой вывод. Для этого используется функция Phonon::createPath, которая возвращает объект Path (путь), в который далее можно вводить спецэффекты, которые будут влиять на звуковой сигнал.
Взаимосвязь основных элементов в реаизации проигрывания звука через Phonon
Если кроме звука используется еще и видео, то соответственно в схему добавляется дополнительное ответвление. В итоге получаем что-то вроде вот этого:

Как вы видите, работать со звуком становится так же легко и непринужденно, как и написание любого другого кода в Qt и с использованием kdelibs.
Я затронул только краешек того, что становится доступным разработчику, более серъезное погружение вас ждет при прочтении API документации на сайте проекта KDE, а также соответствующие разделы справки Qt, доступные также через программу Qt Assistant.
Для пользователей же остается только радость использования всех этих благ человечества, легко изменяя настройки вывода звука при малейшей необходимости.
На этом, пожалуй, пост завершаю. Если кому-то показалось мало, или возникли вопросы - пишите комментарии, пишите в личку, пишите на мыло - мой_ник[на]mail.ru. Буду рад услышать отзывы и пожелания.

Информация взята с официального сайта проекта Phonon, из офицальной справки Qt. Как всегда помог собственный опыт общения с Phonon'ом - на KDE-apps можно найти приложение trayplayer. Оно не мое, но в нем довольно легко разобраться. Я же прикрутил к нему повтор, опцию листания назад, а также чисто из любопытства перевел этот проект на CMake, разделил классы по разным файлам и начал реализовывать базовый плейлист.

Автор:Kraplax

Столпы KDE4. Solid

welinux.ru/KDE → Столпы KDE4. Solid.

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

Дамы и господа, первый столп KDE4 - Solid.


Столпы KDE4: Solid


Что такое Solid?

Это та "прослойка", которая позволяет программам KDE4 абстрагироваться от железа и использовать один и тот же API на разных системах. Solid не идет на замену HAL, WMI и другим технологиям, он пришел, чтобы пользователи больше не мучались вопросом о том, какие поставить "движки" (back-ends), чтобы их программы наконец-то заработали с Bluetooth, сетью, видео и другим железом. Солид просто становится "оберткой" вокруг уже существующих "движков", таких как BlueZ (официальный стек Bluetooth для Linux), NetworkManager, HAL и других. Но это не значит что он привязан к ним - любой из движков можно заменить любым другим (конечно, с соответствующими изменениями в самом Solid'е), но сами приложения использующие сеть, накопители и видео останутся прежними!

Solid для пользователя?

Фактически то, что при смене движков вам не придется перенастраивать ваши приложения, а также (в будущем) что вы сможете использовать KDE не только на Linux но и на других операционных системах. Это также будет означать, что вместо того, чтобы разбираться со способами взаимодействия вашей любимой программы с вашей ненаглядной железкой разработчики этой программы потратят свое время на нужные и интересные вам функции. Также будет корректно обрабатываться переход в спящий режим - все сетевые интерфейсы будут отключены и сетевые приложения красивенько и грациозно отключатся; USB девайсы будут синхронизированы чтобы избежать потери данных. Это также значит, что при подключении флэшки вы видите ее в подключенных устройствах и без труда можете ее открыть. Solid позволяет переключаться между доступными мониторами и настраивать их в отдельности так легко, как это только возможно. Конечно, все это зависит еще от интерфейса, но ведь теперь мы знаем что за красивыми и удобными окошками стоит мощный комплекс работы с железом.

Solid для разработчиков?

Для разработчиков - это просто находка! Кто-нибудь знает как была реализована работа с устройствами в KDE1 и 2? Для каждого приложение писался свой стек работы с железом, будь то винт, сеть, фотокамера или еще какая приблуда. А теперь представьте сколько различного оборудования мог поддерживать такой стек. И поделите на количество разных дистрибутивов и их версий ядер. Маловато, не так ли?
С приходом Solid все что вам придется освоить - это Solid API и строить свое приложение в соответствии с ним. Обо всем остальном позаботится Solid - выберет доступный движок, найдет его настройки выставленные пользователем (или автоматически подберет по-умолчанию) и просто будет работать. Вы разработчик, но пишете не под Linux, а под OpenSolaris? Хм... А в чем разница? Продолжаете работать с Solid и не заморачиваетесь! Конечно, преувеличенно слегка - мне не очень известно состояние движков для OpenSolaris на данном этапе развития Solid'а, но в идеале, к которому неустанно стремятся разработчики этого фрэймворка все будет именно так.

Как скоро можно увидеть использование Solid пользователями и разработчиками приложений?

Вы не поверите... :D
На самом деле Solid уже давно используется, еще с того самого релиза 4.0, который все считали провальным (но сейчас не о нем). Все дело в том, что пользователи не особо-то и должны замечать что есть какая-то прослойка и что-то еще. Пользователям нужны инструменты для работы, им нужно средство развлечения, а не тот самый пресловутый "рабочий стол", поэтому им знать о таких вещах как Solid в принципе не обязательно. А вот разработчики... Давайте просто взглянем на план разработки на официальном сайте Solid:
Фаза планирования:

  1. Дизайн архитектуры и быстрое прототипирование - Завершено

  2. Очистка кода и подготовка к созданию - Завершено

Фаза создания:

  1. Завершение реализации работы с железом
    Реализован сбор большего количества данных о железе (производитель, информация о PCI, и т.д.). Добавление специфичных интерфейсов необходимых для управления разделами (cdrom, камеры, usb накопители, и т.д.). Оценка необходимости асинхронных вызовов медленных операций (таких как монтирование). - Завершено

  2. Управление сетью
    Детализация основной модели, которую мы хотим поддерживать в управлении сетью. Первый движок, подходящий под эту модель. Уровень железа поднят для поддержки сетевого оборудования. - Завершено

  3. Управление питанием
    Детализация основной модели, которую мы хотим поддерживать для управления питанием. Первый движок, подходящий под эту модель. Уровень железа поднят для поддержки соответствующего обрудования. - Завершено

  4. Полировка
    Чистка и комментирование кода. Написание пособий по этому фрэймворку. Больше юнит-тестов, если необходимо. - В процессе.

  5. Практическое использование
    Портировать старый kio_media (или то, что придет ему на замену) на этот фрэймворк. Заставить плазму адекватно работать с железом и предоставлять удобный интерфейс для создания виджетов отображения информации о железе. Заново реализовать медиа-апплет с использованием плазмы. - В процессе.


Как мы можем видеть - большая часть пути уже пройдена. И это видно даже из этой очень устаревшей информации с официального сайта Solid.
Итак, на этом я думаю все на сегодня - один из столпов KDE4 стоит довольно прочно и его разработка активно продолжается.
Пишите комментарии, пишите в личку, пишите на мыло - мой_ник[на]mail.ru. Буду рад услышать отзывы и пожелания.

Информация взята с официального сайта проекта Solid, со страницы Solid в Википедии, а также из одного из номеров LXF. Также собственные знания и наблюдения за проектом через сайт разработчиков KDE.

Автор:Kraplax

Защита Linux от несанкционированного консольного доступа

Защита Linux от несанкционированного консольного доступа | Bappoy’s blog

Автор: Владимир Бредников

Есть две вечные темы, о которых пишет почти каждый автор “блога про linux” — туннели в ssh (каюсь, сам грешен) и сброс пароля root путём загрузки в режиме single user. Как правило, второй рецепт провоцирует обширные обсуждения на тему незащищённости Linux от действий злоумышленников при наличии физического доступа к компьютеру.

Вот несколько простых шагов, которые создадут серьёзные препятствия для злоумышленника, просто подошедшего к консоли в отсутствие хозяина. В качестве примера можно представить шаловливого племянника, зашедшего в гости, или зловредных коллег, собирающихся подменить заставку на рабочем столе. Однако следует понимать, что при наличии времени всегда есть возможность просто вытащить винчестер и подсмотреть интересующую информацию на другом компьютере, или же подложить руткит. Поэтому если вы всерьёз озабочены проблемой безопасности своего сервера, необходимо подумать о более серьёзных мероприятиях по его защите, таких, как шифрование дисков, установка полноценных систем предотвращения и обнаружения вторжений (IDS) и т.д. Не забывайте и про стандартные средства обеспечения безопасности в офисе или дата-центре: видеонаблюдение, надежная пропускная система, проинструктированная охрана… Полноценное описание этих мер выходит далеко за рамки данной статьи.

Итак, как же можно минимально обезопасить свой компьютер?

  1. Отключите загрузку с CD-ROM и флэшек и установите пароль на BIOS. Это не позволит злоумышленнику изменить порядок загрузки устройств и загрузиться со своей флэшки или компакт-диска. Однако всегда можно сбросить память BIOS, выковыряв батарейку из материнской платы, поэтому не следует полагаться на пароль BIOS’а в долгосрочной перспективе.
  2. Установите пароль на редактирование параметров загрузки grub. Система будет загружаться в обычном порядке, но никто не сможет изменить параметры загрузки, выбрав вариант загрузки и нажав кнопку “e”:
    1. сгенерируйте пароль с помощью утилиты grub-md5-crypt:
      $ grub-md5-crypt Password: Retype password: $1$0/Zwx$i0LAHSrpXKfT.JBZHCXpf1
    2. Добавьте получившийся пароль в общий раздел /boot/grub/menu.lst в виде строки:
      password --md5 $1$0/Zwx$i0LAHSrpXKfT.JBZHCXpf1
    3. Если у вас есть небезопасные дополнительные режимы загрузки (например, альтернативные операционные системы типа windows, или загрузка с параметром single), можно в описание этих режимов добавить параметр lock, который запретит пользователям выбирать этот вариант загрузки без ввода пароля. Пароль можно задать в этом же разделе, или оставить общий.
    4. Обратите внимание, что если файл menu.lst генерируется программой update-grub, как это сделано в Debian или Ubuntu, то вместо указания директивы lock в каждом варианте загрузки необходимо установить специальные параметры в разделе настройки upgrade-grub: lockalternative, lockold или kopt. Формат этих параметров и механизм работы update-grub подробно описаны в /boot/grub/menu.lst и man update-grub.
  3. Если у пользователя root на вашей машине есть пароль, пусть система запрашивает этот пароль при входе в single-user mode. Если в вашем дистрибутиве используется старый стиль инициализации через inittab (к таким системам относится большая часть дистрибутивов, кроме последних версий Ubuntu, Fedora и Debian, перешедших на Upstart), убедитесь, что в /etc/inittab присутствует строчка, подобная следующей:
    ~~:S:wait:/sbin/sulogin

    Эта инструкция говорит процессу init, что в однопользовательском режиме необходимо запускать программу /sbin/sulogin, которая запрашивает пароль суперпользователя. Но если пароль у root’а отсутствует, как, например, в Ubuntu, то sulogin пропускает в систему без запроса пароля. Поэтому обладателям современных дистрибутивов остаётся утешаться тем, что через пароль grub довольно сложно прорваться.

  4. Отключите интерактивную загрузку. В системах, основанных на RedHat (RHEL, Centos, Fedora), пользователь может нажать I перед началом загрузки сервисов и rc.sysinit при старте каждого сервиса будет спрашивать, нужно ли стартовать этот сервис. Эта фича отключается в файле /etc/sysconfig/init исправлением/добавлением параметра PROMPT:
    PROMPT=no
  5. Отключите Ctrl+Alt+Del. Любой бездельник может перезагрузить ваш компьютер (и испортить uptime), просто перейдя на виртуальную консоль и нажав три заветные кнопки. Этого риска можно избежать, настроив свой /etc/inittab или, в случае использования upstart, соответствующий файл в /etc/event.d (у меня этот файл так и называется — control-alt-delete). Необходимо просто закомментировать строчку, содержащую описание действия для события ctrlaltdel (или control-alt-delete в Upstart.). Или заменить это действие на команду отправки сообщения в syslog:
    /usr/bin/logger -p auth.info "Ctrl+Alt+Del pressed

    После внесения изменения в /etc/inittab нужно послать процессу init сигнал перечитать этот файл:

    init q

    Для Upstart никаких уведомлений об изменении конфигурации не нужно.

  6. Установите таймаут для логина в консоли. В оболочке bash есть переменная окружения TMOUT, которая устанавливает период неактивности (в секундах) — если от пользователя не поступило никакого ввода в течение указанного времени, процесс bash самоубивается. В /etc/profile.d можно поместить исполняемый файл logintimeout.sh примерно следующего содержания:
    if [ x"$SSH_REMOTE_USER" = x ] ; then     TMOUT=300     export TMOUT fi

    Таким образом, консольные пользователи будут “выкидываться” через 5 минут бездействия. Подобным образом можно установить период неактивности в других шеллах, а также в ssh (параметр ClientInactiveTimeout в sshd_config). Однако мне кажется, что подобные фокусы могут лишь раздражать вас и ваших пользователей, не принося реальной пользы, и стоит ограничиться установкой такого таймаута только для логинов с консоли.

  7. Установите vlock и приучите себя и коллег использовать его перед тем, как отлучиться от консоли более чем на 30 секунд. Команда vlock блокирует текущую виртуальную консоль; чтобы разблокировать ее, нужно ввести пароль пользователя или root’а (если он есть, конечно). vlock -a вообще запрещает переключаться на другие консоли (например, с помощью комбинации Alt+F7).
  8. Не забывайте о блокировке графического интерфейса.
    1. установите разумный период бездействия (5 — 10 минут), по истечении которого запускается хранитель экрана
    2. установите пароль на хранитель экрана
    3. выведите ярлык блокировки на видное место
    4. назначьте и запомните сочетание клавиш для блокировки экрана (в Gnome это Ctrl+Alt+L)

Выполнение хотя бы половины из этих действий добавит вам немного спокойствия, но, еще раз повторюсь, не гарантирует абсолютной безопасности. Будьте внимательны.

По мотивам Tips To Protect Linux Servers Physical Console Access.

Amarok 2.1 - назад в будущее

Amarok 2.1 - назад в будущее

Что же планируется нового в Amarok 2.1? А много чего!

Начнём наш небольшой обзор стремительно приближающегося Amarok 2.1, пожалуй, с внутреннего мира сего замечательного плеера.

  • ReplayGain
    В Amarok 1.4 поддержка стандарта ReplayGain осуществляется по средством внешнего сценария, в ветке 2.x эта функция была перенесена в ядро приложения и реализовывается через taglib плюс особая, уличная магия . Причём информация об уровне громкости может применяться как по-альбомно, так и ко всем трекам в списке воспроизведения.


Также Amarok теперь умеет считывать тэги replaygain практически из любого аудиоформата. Разработчики подумывают над возможностью вычислять общий уровень громкости для треков, перемещаемых на медианоситель, и применять его при записи. Пока для этого можно воспользоваться функционалом soundKonverter (на KDE4 пока ещё не портирован).

  • Редактируемые плейлисты
    Один из наиболее существенных недостатков Amarok 2.0 относительно 1.4 по мнению пользователей — это деградировавший в плане функционала список воспроизведения. К релизу 2.0 разработчики Amarok не успели перенести все возможности из предыдущей ветки, но в 2.1 ситуация изменится в лучшую сторону. Как мы уже и писали, теперь настраивать вид списка воспроизведения можно посредством мощного, но в то же время, простого в использовании редактора. Видео:

Перевод плейлиста в режим отдельных треков (album mode тоже возможен)

  • Плазмоид “Сейчас играет”
    Плазмоид “Сейчас играет” теперь показывает как текущий трек, так и список любимых дорожек.

  • Last.FM
    Сервис Last.FM в Амароке был переписан с нуля, и теперь Амарок может похвастать одним из самых мощных last.fm-плагинов (обгоняя по возможностям даже официальный клиент): можно слушать все виды треков (со скриншота) и без оплаченного аккаунта, в том числе радио “Мои Рекомендации” и “Мои Радиостанции”. Убедитесь в этом сами:

  • Переделка интерфейса плазмоидов
    Плазмоиды всё также размещаются в центральной области приложения, но теперь они разбиты не на четыре отдельных секции, а размещаются в одной колонке и могут быть переключены/выбраны с помощью нового таскбара внизу главного окна. Чтобы лучше понять новую концепцию смотри видео и скриншоты:

  • Сервис-плазмоиды
    Эта новая идея/плазмоид, добавлена в транк совсем недавно. При выборе конкретного сервиса, например jamendo, сервисный плазмоид соединится с сайтом jamendo и заберёт всю доступную в онлайн информацию. Смотри скриншоты и видео:

Этот скрин показывает плазмоид в режиме ожидания.

  • Добавление треков в “Любимые”
    У Amarok’а накопилось много любви и он готов и хочет ею поделиться :) Теперь со всеми треками. В смысле, можно добавлять в “Любимые” любой трек, не применительно только к last.fm

  • URL для Amarok
    Amarok теперь может загружать и создавать Амарок-ссылки (Amarok urls), что позволяет добавить в закладки, для последующего воспроизведения, любое “состояние” (вид) плеера. Создан также обработчик протокола, который позволит запустить Амарок в нужном состоянии или применить к уже запущенному приложению ранее сохраненный “вид”.

  • Автоматические закладки для аудиокниг и подкастов
    В транк уже добавлена функция для автоматического сохранения позиции воспроизводимой аудиокниги или подкаста.

  • Настройка Phonon
    Теперь, чтобы изменить конфигурацию Phonon — например, выбрать звуковую карту из списка доступных, подправить ей пару параметров — не придётся открывать “Настройки системы”. Всё можно сделать прямо из Амарока.

Немного декламаций Хотя это скорее просто пожелание от старых и преданных поклонников Amarok:

  1. Раздельные виды

    • Плазмоиды — это здорово, плейлисты и коллекции — тоже. Но пространства экрана на всех не хватает. Не плохо бы добавить в Амарок раздельные виды — в зависимости от выполняемой задачи, что-то типа:
    • административный режим — настройка/добавление новых плазмоидов, добавление эффектов визуализации и т.д.
    • режим воспроизведения — с плейлистами, визуализацией, эквалайзером, MediaFlow, mashTape и т.д.
    • режим работы с медиаколлекцией — управление Cover Flow, интеграцией с редактором тегов Picard, возможно в виде плазмоида и прочее.
  2. Больше eye candy

    • возвращение moodbar, визуализаций, реализация MediaFlow (что-то подобное было в пре-2.0)
  3. Больше способов взаимодействия с музыкой

    • различные эквалайзеры, караоке и другие современные звуковые приятности
  4. Вставьте сюда ваше пожелание

    • Амарок один из самых богатых на функционал опенсорсных аудиоплееров (хотя конкуренты наступают на пятки) и мы все хотим, что бы он стал ещё лучше и фичастей. Но нужно помнить, что он разрабатывается в свободное время, так что будем вежливыми и умеренными в запросах. И вообще, патчи приветствуются.

Выводы
Amarok 2.1 получит ещё много любви со стороны его разработчиком перед тем, как будет выпущена финальная версия. Количество изменяемого/добавляемого кода на самом деле впечатляет и есть мнение, что 2.1 будет чуть ли не лучшим релизом в истории проекта.

вторник, 17 марта 2009 г.

Обзор Jabber-клиентов для мобильных телефонов с поддержкой Java (J2ME)

Обзор Jabber-клиентов для мобильных телефонов с поддержкой Java (J2ME) / Jabber / Хабрахабр

В последние время многие решили перейти на Jabber. И тут же возникает вопрос какой Jabber клиент выбрать для мобильного телефона? Не так давно был обзор существующих решений для Symbian 9. К сожалению, смартфоны есть не у всех — поэтому представляю краткий обзор Jabber-клиентов для мобильных телефонов с поддержкой Java.

Talkonaut


Talkonaut- это бесплатный Jabber IM клиент с поддержкой VoIP(в Java версии осуществляется через Callback), также позволяет обмениваться текстовыми сообщениями с пользователями сетей MSN, Yahoo, ICQ и AIM. Есть поддержка конференций, передача файлов, компрессия трафика (Zlib). Из минусов можно отметить отсуствие истории.
Разработчиками являются Евгений Короленко и Руслан Залата из Тюмени.

image

Bombus


Bombus — Jabber-клиент для мобильных устройств. Из возможностей следует отметить регистрация и управление неограниченным количеством Jabber-аккаунтов; добавлять пользователей в игнор-лист, списки приватности, просмотр и редактирование vCard, установка приоритетов и статус сообщений, сохранение истории, компрессия трафика (Zlib). Также среди функций есть поддержка конференций, удалённое управление Jabber-клиентами, передача файлов. В качестве оповещения можно выставить звук, вибровызов и световую индикацию.

Помимо Bombus существует Bombusmod
Список отличий BombusMod:
  • Шаблоны.
  • Ping (xep-0199), client-client.
  • Сохранение и загрузка настроек на сервере.
  • Транслитерация отправляемого сообщения.
  • Сохранение фото из vcard.
  • Возможность установить статус «по умолчанию» при подключении.
  • Расширен диапазон keepAlive (10…2096).
  • Таймаут реконнекта увеличен с 5 до 30 секунд.
  • Копирование данных из «info»(jid, status, seen, idle, online, time, vcard).
  • Seen, idle, online для всех контактов.
  • Уведомление о просмотре version/idle/time в ростере в виде значка.
  • Удаление и переименование групп.
  • Автостатус «Недоступен» после двойного времени «Отсутствую».
  • Графическое меню.
  • Настройка цветов (цвет схемы).
  • Антиспам для приватов конференции.

Bombus является самым лучшим из всех существующих клиентов для мобильных телефонов J2ME.
На официальном сайте реализован конструктор с помощью которого можно сделать индивидуальную сборку для себя.

image

Nimbuzz


Nimbuzz — IM клиент позволяет общаться с пользователями сетей Jabber, ICQ, Google Talk, Skype, MSN/Windows Live messenger, Yahoo, AIM, Gadu-Gadu, Twitter, MySpace, Facebook, Hyves. Клиент позволяет вам видеть статус и местоположение собеседника, оставлять голосовые и текстовые сообщения, передавать файлы, бэкап телефонной книги. Из недостатков нет истории сообщений, нет jabber-конференций.

image

Jimm aspro (Jabber)


Jimm aspro — основан на коде Jimm'a. Проект только начал своё развитие, поэтому еще находится в стадии бета, но достаточно быстро развивается. Нету возможности зарегистрировать аккаунт, просматривать инфу о контактах, клиентах, не удобный вход в конференции.

image

Также существуют и другие jabber-клиенты для мобильных c поддержкой J2ME, но они малофункциональны или не поддерживаются разработчиками, например:
MGTalk — jabber-клиент с поддержкой некоторых функций Google Talk. Групп нет, тормозит при вводе текста, конференций нет. Последняя версия 2006 года.
miniFring — IM клиент c Skype, ICQ, Google Talk, MSN Messenger, Twitter, Yahoo, AIM. Нет групп, нельзя смотреть инфу контакта, нет поддержки конференций, нельзя настроить соединение с произвольным сервером — только Google Talk.

вторник, 10 марта 2009 г.

Sweet Home 3D

Sweet Home 3D

Обновилась программа для наглядного проектирования интерьера SweetHome 3D.
Интуитивно понятная, с качественной поддержкой русского языка (мануал тоже), эта замечательная софтина позволяет создавать двумерный план с учётом реальных размеров и геометрии, одновременно выводя трёхмерный результат, т.е. быстро, не заморачиваясь тонкостями 3D моделирования, набросить, к примеру, план ремонта или расстановки мебели. В комплекте идёт набор стандартной фурнитуры, вдобавок можно с сайта разработки загрузить дополнительные библиотеки.
Пользоваться ей очень просто:
рабочее окно программы поделено на четыре части, слева находится дерево папок с фурнитурой (от окон до пианино), под ним список и свойства объектов на текущем чертеже (наподобие фотошоповского окна слоёв).
Основная область - разлинованное окно чертежа, на котором сперва нужно будет нарисовать скелет объекта, т.е. стены (все свойства вызываются двойным кликом). Мебель и прочие радости расставляются путём перетаскивания их из списка фурнитуры на чертёж. Обекты можно двигать, вращать, менять размеры. В нижнем окне отобразится объёмный результат, который можно вращать курсором мышки и менять колёсиком масштаб.


А с помощью функции "Виртуальный посетитель" можно сблизи исследовать свой макет, управляя человечком-камерой на чертеже с помощью мышки.


Поддерживаемые платформы: Вин, Линух, Макось. Работает на Джаве. Бесплатная.
sourceforge.net/projects/sweethome3d/

epi2fox: конвертация закладок Epiphany в Firefox 3

epi2fox: конвертация закладок Epiphany в Firefox 3

Я давно уже использовал Эпифанию (Epiphany) в качестве основного браузера, в основном потому, что её система закладок с тагами мне кажется наиболее удобной. Однако поскольку в FF3 закладки тоже можно метить тагами, то я решил опять попробовать Firefox в качестве основного браузера. Оставалось только перенести свои закладки из Epiphany в Firefox.

Поскольку ничего готового не нашлось, то написал скрипт epi2fox.py. Предполагая, что профиль Firefox практически пуст, использовать так:

$ epi2fox.py ~/.mozilla/firefox/вашпрофиль/places.sqlite
Скрипт не идеален, в частности, есть проблема дублирующихся закладок. Epiphany такие закладки разрешает (несколько разных закладок на один и тот же URL), а FF — нет. Сейчас дубли просто игнорируются, хотя, наверное, правильнее было бы их объединять.

Как бы то ни было, с моей задачей скрипт справился удовлетворительно. Может и кому-нибудь ещё пригодится.

Ссылки:
epi2fox, репозиторий скрипта
схема базы данных закладок в FF3 (PDF)
epi2fox: import Epiphany bookmarks into Firefox 3 (это объявление по-английски)

Для облегчения поиска закладок по тагам, может ещё пригодится расширение TagSifter. С ним гораздо лучше, чем без него.

PS. Да, конечно, перед использованием лучше сделать резервную копию places.sqlite, если там что-то уже есть.

четверг, 5 марта 2009 г.

Перенос данных из Microsoft Money в KMyMoney

Перенос данных из Microsoft Money в KMyMoney « Калейдоскоп

Вот уже 3 года, как я веду домашнюю бухгалтерию. Не буду вдаваться в объяснения, насколько это важно и полезно, деньги любят счет и каждый у кого они есть рано или поздно осознает необходимость их учета. Я уже и не представляю, как можно жить без этого. С самого начала я использовал программу Microsoft Money. Умолчим о лицензии, программа очень хорошая, у нее есть лишь один “недостаток” - приставка Microsoft в названии. Но сейчас я перехожу на использование Linux дома, поэтому ей пришлось подыскать замену.

Для линукса есть всего 2 достойные внимания свободные программы для учета личных финансов: GNU Cash и KMyMoney. Лично мне изначально больше понравилась KMyMoney, GNU Cash как то больше похоже на сухой бухучет (в общем-то для него в первую очередь она и предназначена). Почитав отзывы людей, которые пробовали пользоваться и той и другой программой и в итоге переходили на KMyMoney, так как она больше похожа на msmoney и quicken, я решил что тоже выберу ее. Естественно встал вопрос о переносе данных, накопленных за 3 года. И хотя эта задача вполне выполнима, она далеко не так проста, как хотелось бы. Ниже изложена примерно-пошаговая инструкция, как это сделать.

Microsoft money позволяет экспортировать данные в несколько форматов и в частности в qif. KMyMoney может импортировать из этого формата, поэтому для обмена данными нужно воспользоваться им. К сожалению, импорт-экспорт нужно осуществлять отдельно для каждого счета, а некоторые типы счетов (например, кредиты) не экспортируются вовсе. У меня было около 10 счетов, 3 из которых - наличные деньги в разных валютах. Весь перенос данных с учетом времени, которое понадобилось, чтобы разобраться, занял у меня около 6 часов.

Итак, начнем (очень желательно иметь возможность запустить msmoney и kmymoney одновременно, у меня просто два ноутбука стояли рядом. Не забывайте постоянно сохранять файл, kmymoney может вылететь с sigfault):

  1. Создайте новый файл в KMyMoney
  2. Создайте в нем абсолютно такие же счета, заведения, статьи расходов и доходов, как и в Microsoft money, если в названии есть специальные символы, лучше удалите их в обоих программах, чтобы названия содержали только буквы и пробелы
  3. Экспортируйте каждый счет из msmoney в формат Loose QIF (Файл->Экспорт->QIF)
  4. Скопируйте файлы в отдельную директорию на линуксе
  5. Так как msmoney использует кодировку CP1251, а kmymoney UTF8 необходимо перекодировать все файлы. Делаем это с помощью iconv так - откройте в консоле директорию с файлами и для каждого из них выполните следующую команду:iconv -f CP1251 -t UTF8 mymoney.qif > mymoney8.qif (имена файлов ваши)
  6. Теперь необходимо импортировать все данные в kmymoney. Идем в меню файл->импорт qif. Выбираем один из наших перекодированных файлов. Далее нужно настроить профиль импорта. Если вы использовали русскую локаль в windows и используете ее в linux, то создайте новый профиль импорта и укажите, что разделитель дробной части это запятая, а разделитель тысяч - точка. После создания профиля выберите его, отметьте флаг автоматического создания плательщиков и нажимайте кнопку импорт
  7. kmymoney спросит вас, в какой счет импортировать данные, и если вы выполнили пункт 2, предложит по умолчанию такой же счет, как и в файле
  8. Далее в процессе импорта из-за непонятных сбоев в кодировке могут возникать вопросы, к какой категории отнести тот или иной платеж, я вручную присваивал эти платежи соответствующим категориям. В целом у меня было не более 2-3% сбоев от общего числа платежей
  9. Повторите процедуру для всех ваших счетов
  10. Далее начинаются настоящие проблемы, которые отнимают основное время. К сожалению, импорт ведется для каждого счета независимо, поэтому все переводы между счетами (transfers) дублируются на каждом счете. Например, у вас есть два счета рубли RUR и евро EUR, и вы сделали перевод, скажем, 6000 рублей в 200 евро. После импорта-экспорта вы получите на рублевом счете перевод 6000 и перевод 200 рублей, а на евровом приход 6000 евро и 200 евро. Необходимо пройтись по каждому валютному счету, удаляя оттуда лишний перевод, а в осташемся - вносить курс валют, по которому сделан перевод. Возвращаясь к приведенному выше примеру нужно на евровом счете открыть приход 200 евро на редактирвоание, ничего не делая нажать сохранить, появится окно, в котором нужно ввести правильную сумму рублей (по умолчанию курс равен 1) - 6000, и нажать сохранить. А другой перевод на 6000 евро просто удалить.
  11. Если вы нигде не наделаете ошибок, то после проделывания этих операций на всех счетах остатки в kmymoney и msmoney сойдутся.
  12. Поздравляю, вы перенесли все, что можно перенести. Все остальные данные нужно переносить вручную.

Конечно, этот процесс можно автоматизировать, но, видимо, ни у кого не дошли руки. Я мог бы на питоне написать скрипт, если бы мне надо было 15 лет данных переносить, но в данном случае мне быстрее оказалось все вручную перенести. В любом случае порадовало, что с данными расставаться не пришлось, как это советуют в самой популярной статье про переезд на kmymoney.

Надеюсь, мой опыт поможет вам.

Be happy, be free!

Xfce: …and everything goes faster!

vonderer@darkstar:~$: Xfce: …and everything goes faster!

"Xfce is a lightweight desktop environment for various *NIX
systems. Designed for productivity, it loads and executes
applications fast, while conserving system resources."

- Olivier Fourdan, creator of Xfce
http://www.xfce.org/

Совсем недавно, чуть меньше недели назад, вышла свежая версия этой замечательной легковесной настольной среды. Уважаемые читатели, возможно, обратили внимание, что я время от времени меняю рабочую среду и пишу об этом. Так вот, Xfce4 дважды постигала эта своего рода «участь». Первый раз это случилось ещё во времена моего первого знакомства с Linux: она шла вместе со Slackware Linux 10.2 наряду с KDE. Впечатления она оставила весьма и весьма приятные: легковесная, быстрая, аккуратная и не тянущая за собой того огромного количества софта, которое тащили за собой GNOME и KDE.

Некоторое время спустя, уже в Debian/Ubuntu я довольно плотно остановился на этой оконной среде: сочетание вышеозначенных качеств весьма и весьма привлекательно, однако я решил поэкспериментировать и снова стал пользоваться другими оконными менеджерами. С недавнего времени я вернулся к любимой оконной среде и, покуда меня не потянет на новые эксперименты, намерен наслаждаться сочетанием аккуратно оформленного GTK-окружения, быстро работающих окон и приятных глазу композитных эффектов.

Так вот ты какой…

Впрочем, довольно лирики, приступим к знакомству. По умолчанию Xfce версии 4.6.0 в ArchLinux выглядит следующим образом:

Имеются: рабочий стол (в режимах «содержимое каталога ~/Desktop», «иконки свёрнутых приложений» и пустой), а также панелька, гибкая и богатая всяческими виджетами.

Немногим отличается от уже привычных большинству «вновь обращённых» пользователей Linux, не так ли? «Пуск», «быстрый запуск», панель задач, виртуальные рабочии столы и часы с областью уведомлений — всё как в KDE или GNOME. На рабочем столе по умолчанию располагается содержимое папки ~/Desktop. Пользователь Windows тут точно не потеряется. Схожесть с «виндами» принято считать недостатком: бытует мнение, что оказываясь в новом окружении пользователь должен приучаться к новым приёмам работы. Что ж, оставим рассуждения подобного рода за рамками данной статьи, остановившись на очевидном выводе: тут пользователь ОС Windows не потеряется.

Однако, оформление рабочей среды — это то, что остаётся на совести пользователя. Аскеты будут использовать простые, неприметные, но контрастные и легкочитаемые темы, эстеты — развернут что-нибудь этакое, приятное их глазу (в том числе, глазораздирающее с точки зрения остальных). Скажу только, что благодаря тому, что Xfce4 использует тулкит GTK2, к нему можно прикрутить одну из массы красивых тем этого графического окружения. Различные решения продемонстрированы на официальном сайте. А вот так светло-жизнерадостно выглядит мой Xfce4 в момент написания этой статьи (тема GTK2 MurrinaCandido, стиль декоратора окон Candido-Light, обои добыты со случайного сайта):

Что же касается непосредственного управления средой — в отличие от GNOME с его громоздкими меню и KDE с его центром управления, менеджер настроек Xfce4 в чём-то схож с виндовой «панелью управления», посмотрите сами:

Внимательные читатели, скорее всего, заметили — никаких системных настроек тут нет: только настройки оконной среды. Это одна из приятных черт Xfce4: отсутствие встроенных конфигураторов, а следовательно, отсутствие риска поломать какие бы то ни было системные настройки через графическую оболочку. А новичку — повод разбираться с конфигурационными файлами и не идти на поводу у графических интерфейсов.

Комплектация

Помимо панели и инструментов конфигурирования себя любимой, настольная среда Xfce4, как и положено приличной настольной среде, включает базовый набор встроенного софта. Такого же минималистичного и быстрого. Итак, что же включено:
  • Терминал, который так и называется — Terminal. Весьма простой, но с поддержкой вкладок и композитной прозрачности для эстетов.
  • Файловый менеджер Thunar, легковесный, не обременённый широким функционалом, но содержащий прекрасный графический инструмент для массового переименования файлов.
  • Текстовый редактор Mousepad, отличающийся от виндового Notepad.exe лишь тем, что может показывать нумерацию строк.
  • CD-burner под названием Xfburn. К сожалению, как и его GNOME-аналог, не умеющий верифицировать свежезаписанные диски.
  • Xarchiver, приятный глазу графический архиватор.
  • Медиа-проигрыватель Xfmedia, минималистичный, но, к сожалению, далеко не самый рекомендуемый к использованию.
  • Application Finder — удобный инструмент быстрого поиска и запуска приложений.
  • А также календарь Orage, веб-браузер Midori, аудиомикшер на базе GStreamer'а и вьювер изображений Ristretto. Стоит ли упоминать их минималистичность? :)

Вот и всё. Ничего лишнего. Все вышеозначенные компоненты — опциональны, кроме, разве что, Thunar'а.

Кроме того, хочется отдельно отметить встроенный оконный менеджер XfWM4 с интегрированным композитным функционалом: конечно, не настолько гибким и богатым эффектами, как Compiz Fusion, но вполне пригодным для создания аккуратных теней под окнами и эффектов прозрачности при перемещении окон или использовании терминала. Стоит ли говорить о его стабильности и скорости работы? Включение композитного режима внешне практически не сказывается на быстродействии. Ни одного вылета также не было замечено.

…and everything goes faster!

Этот слоган концентрирует внимание пользователя на быстродействии настольной среды. Насколько он достоверен, судить не возьмусь — нет никакого желания развёртывать другие настольные среды и оконные менеджеры и замерять показатели быстродействия. Однако, субъективно отмечу, что Xfce4 работает заметно быстрее, чем GNOME и, тем более, чем KDE4. Что же до встроенного софта — я пользуюсь только терминалом: всё остальное — Firefox, Nautilus, Totem, и даже строка типа «Run...» — сторонние приложения.

Мне кажется, Xfce на сегодняшний день — самая близкая к идеалу настольная среда в плане соотношения дружелюбности, стабильности и быстродействия. И она определённо стоит того, чтобы попробовать ею воспользоваться, если вас чем-то не устраивает ваш текущий WM/DE.

Боюсь, что в этой статье я не раскрыл многого: особенности конфигурации или использования этой настольной среды, поэтому, если у вас, уважаемые читатели, возникнет желание уточнить какие-то вопросы относительно Xfce4 — я постараюсь дать максимально информативный ответ.

Автор: Андрей «вон» Т

Восстановление файла с поврежденного ext3 раздела

Восстановление файла с поврежденного ext3 раздела

Представьте себе ситуацию: файловая система повреждена, раздел не монтируется, вместо корневого каталога нули.

# mount /dev/md1 /mnt
mount: wrong fs type, bad option, bad superblock on /dev/md1,
missing codepage or other error
In some cases useful info is found in syslog - try
dmesg | tail or so

Хорошо, что есть бэкап. Вы смотрите как дела обстоят с бэкапом, и тут вдруг обнаруживаете, что в бэкапе нет одного очень нужного файла. И если можно где-то найти этот файл - то только в недрах погибшего раздела. Оказавшись в подобной ситуации я сразу пожалел, о том что, ранее не интересовался внутренним устройством ext3fs. Что я собственно знаю о ней? Да похоже ничего, иноды там какие-то…


Но делать что-то надо. Детально разбираться времени уже нет, так что погуглив на тему ext3fs, выясняю следующее:

Основные составляющие ext3fs:

  • каталоги
  • указатели inode
  • блоки данных

И есть еще суперблок, в котором хранится важнейшая информация о ФС, такая как, размер блока, количество инодов, и многое другое.

Самое важное, что хранит в себе inode:

  • размер файла
  • id владельца
  • id группы
  • даты модификации/доступа
  • список блоков данных, где собственно и хранится файл

Жаль имени файла нет, было бы удобнее, но почему нет - понятно, имен-то (hardlink-ов) может быть много. А хранятся имена, естественно, в каталогах. Каталог по сути тот же inode, только другого типа, в нем есть та же самая информация о владельце и датах, а главное, в блоках данных хранится список имен файлов и каталогов с номерами соотвествующих inode.

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

Это несколько упрощенный взгляд на ext3fs, но сейчас не до деталей и подробностей, файл нужно доставать.

Главный инструмент который нам поможет - debugfs.

debugfs -c /dev/md1
debugfs 1.39 (29-May-2006)
/dev/md1: catastrophic mode - not reading inode or group bitmaps

Посмотрим что там в суперблоке:

debugfs: stats
Filesystem volume name:
Last mounted on:
Filesystem UUID: 24c5e529-02c4-4775-bb9f-e0c1f1b4a676
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: resize_inode dir_index filetype sparse_super large_file
Default mount options: user_xattr acl
Filesystem state: not clean with errors
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 121831424
Block count: 121806816
Reserved block count: 6090340
Free blocks: 117940889
Free inodes: 121831413
First block: 0
Block size: 4096

В данном случае, размер блока 4096, кол-во инодов - 121831424

Теперь вполне можно было бы проитерировать все иноды, найти все каталоги, и в каком-то из них и будет ссылка на искомый файл.

Создадим файл stat.cmd с содержимым вида:

stat <1>
stat <2>
...
stat <кол-во inode>

Выполним:

# debugfs -f stat.cmd -c /dev/md1 | grep 'Type: dir'

Получим список каталогов:

...
Inode: 32957 Type: directory Mode: 0755 Flags: 0x0 Generation: 1325685135
Inode: 32987 Type: directory Mode: 0755 Flags: 0x0 Generation: 1325685176
Inode: 33025 Type: directory Mode: 0755 Flags: 0x0 Generation: 1325685227
...

Теперь можем посмотреть содержимое каталога:

# debugfs -f stat.cmd -c /dev/md1
debugfs: ls <32957>
32957 (12) . 2590762 (44) .. 32956 (24) china-util.elc
32958 (20) chinese.elc 32959 (24) cyril-util.elc
...

Видим список файлов и что очень важно, видим inode родительского каталога - 2590762, т.е. можем просмотреть его содержимое:

debugfs: ls <2590762>
2590762 (12) . 2590642 (4084) .. 2590760 (20) abbrev.elc
2590765 (20) align.elc 2590771 (20) autoarg.elc
...

Т.о. фактически мы можем перемещатся по структуре каталогов, лишь бы ветвь директорий в которой лежит искомый файл не была повреждена. Это уже дает неплохие шансы найти файл.

Но к сожалению, не все так просто когда структура каталогов повреждена, да и посмотрите на кол-во inode в данном случае, поиск всех директорий для 500Gb диска времени займет слишком много.

Другой путь - найти блок данных принадлежащий искомому файлу, с помощью debugfs узнать номер inode, и если все сложилось удачно, вытащить содержимое файла.

Например, нам удалось выяснить что блок 94844 принадлежит искомому файлу, спросим у debugfs номер inode c помошью команды icheck:

debugfs: icheck 94844
Block Inode number
94844 69267

Подумав некоторое время debugfs сказал что inode - 69267. Запросим информацию об этом inode:

debugfs: stat <69267>
Inode: 69267 Type: regular Mode: 0444 Flags: 0x0 Generation: 2933723684
User: 0 Group: 0 Size: 15214
File ACL: 0 Directory ACL: 0
Links: 1 Blockcount: 32
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x47f3754b -- Wed Apr 2 16:00:11 2008
atime: 0x48002a85 -- Sat Apr 12 07:20:37 2008
mtime: 0x47f3754b -- Wed Apr 2 16:00:11 2008
BLOCKS:
(0-3):94844-94847
TOTAL: 4

Скорее всего по владельцу, группе и размеру уже станет ясно, искомый файл это или нет. Теперь попросим debugfs вытащить содержимое файла, с помощю команды dump:

debugfs: dump <69267> /tmp/69267.file

Если все сложилось удачно, в /tmp/69267.file лежит то, что мы искали.

Остается открытым вопрос, как найти блок данных, принадлежащий файлу. Естественно, придется искать по какой-то подстроке, которую как мы предполагаем, содержит файл.

Первое что приходит в голову - воспользоватся hexdump и grep, например вот так:

cat /dev/sda1 | hexdump -C | grep Linux
...
001fc830 64 69 74 0a 23 20 4c 69 6e 75 78 20 6b 65 72 6e |dit.# Linux kern|
00205470 20 49 53 44 4e 34 4c 69 6e 75 78 0a 23 0a 43 4f | ISDN4Linux.#.CO|
002092d0 63 65 64 20 4c 69 6e 75 78 20 53 6f 75 6e 64 20 |ced Linux Sound |
...

Если нам повезет и искомая подстрока будет внтури 16-байтного блока, то вполне может быть и найдем. Но скорость поиска очень низкая, годится только для совсем небольших разделов. В моем же случае для поиска пришлось набросать небольшую програмку, которую я обозвал bfind.

Работает она примерно вот так:

cat /dev/sda1 | ./bfind Linux
...
5214 +300 20 2e 63 6f 6d 70 2e 73 6f 66 74 2e 6c 69 6e 75 | .comp.soft.linu|
5214 +376 6d 70 2e 73 6f 66 74 2e 6c 69 6e 75 78 2e 6e 69 |mp.soft.linux.ni|
5214 +423 70 2e 73 6f 66 74 2e 6c 69 6e 75 78 2e 6e 69 78 |p.soft.linux.nix|
...

И главное, работает быстро. Первый столбец - это и есть номер 4k-блока данных.
Если понадобится уточнить содержимое найденных блоков, можно воспользоваться утилитой fsgrab.

fsgrab -b 4096 -c 4 -s 105633828 -f /dev/md1 > /tmp/105633828.block

В данном случае 4 блока по 4096 байта, начиная с 105633828-го будут сохранены в указанный файл.

Ну и в заключение хочу пожелать, чтобы все вышеописанное не пригодилось Вам ни разу.