4/29/2009

Установка и настройка XMPP сервера ejabberd

Руководство поставило задачу - организовать локальную систему обмена мгновенными сообщениями с возможностью общего чата.
В голове сразу мелькнула мысль поставить джаббер сервер. Почитав форумы, обзоры и прочее я выбрал ejabberd

Ну что сказать, не сервер, а сказка. Скачал, распаковал, проинсталлил и все сразу заработало.
Остановимся на пункте "проинсталлил".сначала как всегда: скачал исходники, начал с configure, а он требует erlang чтоб скомпилиться.
ну, думаю, нет, проходили. Сначала erlang ему, а потом еще пол мира. Качаю готовый .bin файл.
Запускаю и наслаждаюсь: спросил куда ставить, как запускать, кто админ, какой пароль, какой виртуальный хост, ну вообщем все что нужно.
В итоге у меня в /opt/ лежит легковесный, простой в настройке XMPP сервер со своей безой данных (Mnesia), с веб-интерфейсом (указываем порт 5280) и с кучей пользователей.

Настройка заключалась в том, что нужно было организовать общий ростер для всех. а то как начнется авторизация, так хоть комп не включай. Почитав форум на официальном сайте я нашел. Все оказалось очень просто. Открываем веб панель управления -> виртуальные хосты -> "имя_хоста" -> группы общих контактов -> и тет создаем новую группу, назовем ее all (или кому как захочется). После ее создания открываем и пишем:
название - all , описание - группа для всех, члены - @all@ , видимые группы - all. Как вы догадались все дело в пункте "члены". Здесь можно указывать либо каждого пользователя отдельно (user@host admin@host), либо @all@ для всех. Так же хочу попробовать в дальнейшем разбить пользователей на меньшие группы и перепробовать это дело для пункта "видимые группы".

Еще один момент - программу велено было поставить не всем, а только руководителям. Ну а как то обижать ребят, с которыми общаться куда приятнее нежели с руководителями, не хотелось. Выход нашелся! создаем еще один виртуальный хост и по такой же схеме регистрируем всех там. Правда, как сделать это через веб-интерфейс я не нашел, поэтому вручную в конфиге в секции hosts дописал еще один виртуальный хост.

В качестве клиента выбрал Psi - просто потому что он самый распространенный. При подключении клиент выдал мне что ему не нравится сертификат. ну что ж, будем делать новый. После установки сертификаты были, но я решил их переделать:

openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out server.pem
openssl rsa -in privkey.pem -out privkey.pem
cat privkey.pem >> server.pem


После этого скопировал server.pem в папку %program files%/Psi/certs и установил его.

4/27/2009

Поиск по истории команд в bash

Маленькие хитрости при работе с историей введенных в терминале команд.

1. Жмем в терминале Ctrl+R и начинаем набирать текст, который хотим найти.
Если совпадений несколько, то для перебора можно использовать стрелки вверх, вниз и клавиши PageUp и PageDown.

2. Сначала пишем начальные символы текста, который хотим найти, затем перебираем варианты нажимая клавиши PageUp, PageDown.

3. Команда history | grep текст_для_поиска. Тут я думаю все понятно.

4/21/2009

Учим Linux запускать exe файлы.

Как известно в Linux по умолчанию используется ELF (Executable and Linkable Format) формат исполняемых файлов.
Однако, не составляет труда обучить ядро Linux запускать любые другие исполняемые файлы (.exe файлы для Windows, скрипты на shell, python, байткод java и т.д.) без явного указание эмулятора Т.е. в командной строке можно просто написать ./notepad.exe или ./my_script.py.
Для этого нужно обеспечить ядро необходимой информацией о формате исполняемого файла, и о том, каким образом и с помощью чего его можно интерпретировать.

Что для этого нужно?

1. Для этого нужно включить в ядре поддержку остальных исполняемых форматов:

В секции Executable file formats / Emulation-->
Опция Kernel support for MISC binaries



Можно или встроить эту возможность в ядро, или оформить ее в качестве отдельного модуля. Модуль будет называться binfmt_misc.

2. Подмонтировать файловую систему binfmt_misc в каталог /proc:
mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc

3. Перейти в каталог /proc/sys/fs/binfmt_misc. У вас тут должно лежать два файла: register и status

4. Описать формат и интерпретатор для этого формата:

Для того что зарегистрировать новый формат исполняемого файла и интерпретатор для него нужно добавить в файл register строку в формате:
:name:type:offset:magic:mask:interpreter:flags
Вот что значат приведенные поля:
  • 'name' - строковый идентификатор. В каталоге /proc/sys/fs/binfmt_misc будет создан новый файл с именем name
  • 'type' - способ распознавания. Может быть 'M' для волшебства и 'E' для расширения.
  • 'offset' - смещение маски в файле,считается в байтах. Этот параметр по умолчанию равен 0, если вы его не указываете (например: ':name:type::magic...')
  • 'magic' - последовательность байт для соответствия которой и определяется binfmt_misc. Строка поля magic может содержать шестнадцатириные символы, такие как \x0a или \xA4.
  • 'mask' маска (опциональна, по умолчанию имеет значение 0xff) . Добавляя строку как в поле magic и такой же длины, вы можете маскировать соответствие некоторых битов файла.
  • 'interpreter' - программа, которая должна быть выполнена вместе с исполняемым фалйлом, как первый аргумент (Необходимо указывать полный путь)
  • 'flags' - опциональное поле, которое контролирует нектороые аспекты вызова интерпретатора
Например для запуска windows приложений с помощью wine в качестве интерпретатора в register нужно добавить такую строку:

':DOSWin:M::MZ::/usr/bin/wine:

Вот так:

echo ':DOSWin:M::MZ::/usr/bin/wine:' > register

Теперь в каталоге /proc/sys/fs/binfmt_misc у нас появился файл DOSWin следующего содержания:

$bash: cat DOSWin
enabled
interpreter /usr/bin/wine
flags:
offset 0
magic 4d5a

После всего этого в командной строке можно написать ./notepad.exe и у вас запустится notepad с помощью wine'a.

5. Для того, чтобы binfmt_misc не пришлось монтировать каждый раз вручную, в /etc/fstab можно добавить вот такую строчку:
none /proc/sys/fs/binfmt_misc binfmt_misc defaults 0 0

6. Для того, чтобы отключить интерпретацию формата, нужно записать 0 в появившийся файл:
echo 0 > DOSWin

для того чтобы включить, нужно записать 1 :

echo 1 > DOSWin

7. Для того чтобы удалить формат, нужно записать -1 в имя файла этого формата:
echo -1 > DOSWin

4/17/2009

Вставка пары скобок в Emacs

Очень удобно, когда при объявлении функции или чего нибудь, где нужно использовать
скобки, вставляется не только открывающая скобка, но и закрывающая.
Для того, чтобы добавить такую возможность в Emacs, нужно прописать в конфиг файле
вот такие строки:

(defun insert-second-hook ()
(interactive)
(insert "()")
(goto-char (- (point) 1)))
(global-set-key (kbd "\(") 'insert-second-hook)

Что здесь происходит:
в 1-й строке объявляем функцию insert-second-hook ().
во 2-й строке говорим, что она используется в интерактивном режиме.
в 3-й строке вставляем в активный буфер пару скобок '()'
в 4-й строке помещаем курсор между скобками.
в 5-й строке вешаем хук на клавишу '('
Вот и все.

4/16/2009

VirtualBox VDI to qemu qcow

Понадобилось мне тут преобразовать образ жесткого диска из формата VDI, который используется VirtualBox Box в формат qcow, используемый в qemu.
Делается это по следующей схеме:
VDI ------> RAW Image ------> QCow.

1. Конвертируем из VDI в Raw Image:
VBoxManage internalcommands converttoraw vbox_image.vdi image.raw

2. Конвертируем их RAW Image в QCow:
qemu-img convert -f raw image.raw -O qcow2 image.qcow

Вуаля.

4/03/2009

Amd Catalyst и KDE 4

Ура товарищи!!!
Наконец-то недавно вышел релиз драйвера ATI AMD Catalyst за версией 9.3
И видимо товарищи из AMD все таки сподобились починить работу своего поделия на многоядерных машинах.
KDE4 у меня уже работает целый день, а Linux до сих пор не упал.
Всем качать и обновляться.

P.S. Несмотря на все вышесказанное, я являюсь поклонником NVIDIA