1/28/2009

about:robots

А вы уже знаете, что будет если в firefox вместо адреса сайта набрать about:robots?
Смотрите:


А еще попробуйте about:mozilla.

1/27/2009

Уведомление о новых сообщения в Jabber в Emacs

Если у вас в системе есть библиотека libnotify, то можно заставить emacs показывать красивенькие уведомления о новых сообщениях от пользователей.
Чтобы проверить, установлена ли библиотека, нужно написать which notify-send, в консоли, и узнать ответ =).

А теперь к самому главному.
Emacs поддерживает замечательную концепцию Хуков (Hook). Хук, это реакция на некоторое событие, которые может возникнуть во время работы текстового редактора. Например, вы можете определить реакцию emacs'a, когда возникает событие нажатия клавиши, повесив на это событие какой нибудь хук. Например перевод вводимого символа в верхний регистр.

Предупреждаю сразу, что я в Lisp пока не силен, так что, если что написано не так, то просьба поправлять:
Теперь непосредственно о том, как сделать уведомление:
;; Определяем, переменную для использования иконки в уведомлении
(defvar jabber-libnotify-icon ""
"*Icon to be used on the notification pop-up. Default is empty")

;; определеям переменную, сколько милисекунд будет висеть уведомление
(defvar jabber-libnotify-timeout "2000"
"*Specifies the timeout of the pop up window in millisecond")

;; определяем функцию, которая непосредственно отображает уведомление
(defun jabber-libnotify-message (from msg)
"Show MSG using libnotify"
(let ((process-connection-type nil))
;; запускаем утилиту notify-send и передаем ее параметры:
;; -t время отображения
;; -i отображаемая иконка
;; from - заголовок оповещения
;; msg - непосредственно сообщение оповещения.
(start-process "notification" nil "notify-send"
"-t" jabber-libnotify-timeout
"-i" jabber-libnotify-icon
from msg)))

;; определяем прототип функции, согласно тому как того требует описание в jabber.el
(defun jabber-libnotify-message-display (from buffer text propsed-alert)
(jabber-libnotify-message from text))

Эта функция будет вызвана из модуля Jabber.el, при возникновении определенного события. Далее нам надо указать при возникновении какого события вызывать нашу функцию, нам нужно повесить хук:
;; вешаем хук на событие jabber-alert-message-hooks
(add-to-list 'jabber-alert-message-hooks
'jabber-libnotify-message-display)

Теперь, при получении нового сообщение вы будете получать вот такое уведомление:

1/23/2009

Используем Jabber с помошью текстового редактора

В связи с недавними проблемами в ICQ, куча людей резко кинулась использовать jabber.
Я тоже поддался стадному чувству, сдул пыль со своего jabber аккаунта и решил посмотреть что же получится.
В качестве клиента ICQ я использую pidgin. В нем меня все устраивает, хотя и не хватает некоторых возможностей. Но захотелось немного экзотики. Решил я значит использовать jabber с помощью Emacs'a.
Оказалось это легко и просто:
1. Идем на какой нибудь jabber сервер и регистрируемся. У меня имеется аккаунт на jabber.ru
2. Скачиваем emacs-jabber. (Я выгружал исходники из cvs)
3. Внимательно читаем README файл в каталоге с исходниками.
4. Конифгурим, компилим, устанавливам. (./configure && make && make install)
5. в ~/.emacs добавляем путь к скомпиленному emacs-jabber
(add-to-list 'load-path "~/emacs/jabber/share/emacs/site-lisp/") (require 'jabber)

Далее нужно немного настроить emacs, а собственно указать "текстовому редактору" сервер, куда коннектится, логин и пароль. Можно пароль не указывать, но тогда его придется каждый раз вводить при соединении.
Сделать это можно следующими способами:
1. Выбрать в меню Jabber->Customize
2. M-x jabber-customize
3. Прописать все необходимое в конфиг файле.

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

Я настраивал с помощью конфиг файлов:
1. Устанавливаем параметры учетной записи, сервера и т.д.
(custom-set-variables
'(jabber-account-list (quote (("jabberid@jabber_sever" ;; ваш jabber ID
(:password . "password") ;;
ваш пароль
(:network-server . "jabber.ru") ;; jabber сервер
(:connection-type . ssl))))) ;; лучше использовать ssl
)

Можно указать несколько соединений.

2. Некоторые параметры относящиеся к интерфейсу

(custom-set-variables
;; Указывает формат отображение элементов в контакт-листе:
;; %c - соответствует "*" если контакт в сети, "" - если контакт не в сети
;; %n - псевдоним или jabberID контакта
;; %a - отображать аватар или нет.
'(jabber-roster-line-format " %c %n %a")
;; при запуске не показывать подсказку для контакт листа.
'(jabber-roster-show-bindings nil)
)

3. Добавляем подсветку URL в сообщениях:

(add-hook 'jabber-chat-mode-hook 'goto-address)


Для начала этого будет вполне достаточно.
Используя в качестве Jabber клиента Emacs, вы получаете неограниченные возможности по набору текста, проверке орфографии, и всяческих других фишек, поддерживаемых этим редактором.
А выглядет это все примерно так:

Все красиво, быстро, удобно, функционально.
Также есть поддержка смайлов и уведомления о входящих сообщениях через libnotify или osd. Но об этом в следующий раз.

1/14/2009

Qt скоро будет доступна под LGPL

Компания Nokia официально объявила о том, что библиотека Qt начиная с версии 4.5 будет доступна еще и под лицензией LGPL. А это означает что ее можно будет использовать и в коммерческих продуктах. Предыдущие два варианта лицензии останутся.
Также они пообещали сделать репозитории Qt публично доступными.

Интересно как это повлияет на GTK?

1/12/2009

Skype Alsa и dmix

Моя встроенная звуковая карточка не поддерживает аппаратное микширование звука, поэтому используется плагин dmix для звуковой подсистемы alsa. Оказалось что skype не может нормально работать при использовании программного микширования.
Проблема решилось добавлением следующей конфигурацией в /etc/asound.conf

pcm.card0 {
type hw
card 0
}

pcm.dmixer {
type dmix
ipc_key 1025
slave {
pcm "hw:0,0"
period_time 0
period_size 2048
buffer_size 32768
rate 48000
}
bindings {
0 0
1 1
}
}

pcm.skype {
type asym

playback.pcm "dmixer"
capture.pcm "card0"
}

pcm.!default {
type plug
slave.pcm "skype"
}

1/05/2009

Преобразование кодировки имени файла

Часто бывает, что в системе остаются такие артефакты, как файлы,
имя которых записано в кодировке koi8-r или cp1251.
Обычно такое случается, когда раздел или устройство с которого были скопированы файлы, были смонтированы без указания кодировки, или с указанием неверной кодировки.
Выглядит все это вот так:
# ls
????1 ????3

Чтобы легко и просто переделать имя файла в читабельный вид, можно воспользоваться утилитой convmv.
Если у вас имена файлов в кодировке koi8-r, то перекодировать их можно так:
convmv -t koi8-r -f utf8 * - выведет список файлов в старой и в новой кодировках:

# convmv -f koi8-r -t utf8 *
Starting a dry run without changes...
mv "./����1" "./Файл1"
mv "./����3" "./Файл3"

И если вас это устраивает, добавляем опцию --notest и программа уже реально переименует файлы:

convmv -f koi8-r -t utf8 --notest *

Convmv поддерживает также кучу дополнительных полезных опций:
--list Покажет список поддерживаемых кодировок.
-r Рекурсивно обойти каталоги.
-i Спрашивать о каждом действии (интерактивный режим).
--lower Переделывает имя файла в нижний регистр

1/04/2009

Окрытие ссылок в Thunderbird с помощью Firefox.

Хоть почтовик Thunderbird и браузер firefox продукты компании Mozilla,
однако вся вторая ветка подвержена бодезни:
нет возможности настроить Thunderbird для открытия ссылок в firefox.

Нет ничего невозможного:

Для того чтобы в Thunderbird открыть какую нибудь ссылку в браузере Firefox,
идем в меню
Правка->Настройки.
Там выбираем вкладку Дополнительно, затем в ней вкладку Основные и далее Редактор Настроек.
В появившемся окошке создаем новую настройку:
Правой кнопкой мышки->Создать->Строка
В качестве имя настройки вводим: network.protocol-handler.app.http
В качестве значения настройки : /path/to/firefox