воскресенье, 15 июня 2008 г.

Создаем поисковый плагин для Firefox

Firefox довольно простыми методами позволяет добавить себе новые поисковые движки. Хотя уже имеется большая их подборка на сайте Mozilla, но все таки там есть не все. В этом случае можно добавить плагин самому.
Итак изначально для этого нам понадобится шаблон. Для GET запросов подойдет такой:
<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/" xmlns:os="http://a9.com/-/spec/opensearch/1.1/">
<os:ShortName></os:ShortName>
<os:Description></os:Description>
<os:InputEncoding>UTF-8</os:InputEncoding>
<os:Image width="16" height="16">data:image/x-icon;base64,</os:Image>
<os:Url type="text/html" method="GET" template="">
</os:Url>
</SearchPlugin>

Теперь заполняем его. Для примера я сделаю плагин для запросов на Whois сервис nic.ru:
  1. В тег ShortName пишем короткое имя, оно будет указывается в строке поиска и в списке плагинов
  2. В теге Description указываем описание плагина
  3. В тег Image мы должны записать иконку закодированную с помощью base64 (т.к. мы не можем записывать в xml файлы бинарные данные) для этого:
    1. Сначала получаем иконку (это можно сделать несколькими способами, например, скачать favicon c сайта либо сделать самому и сохранить в формате bmp размером 16х16)
    2. Теперь с помощью замечательного набора утилит openssl кодируем данные в формате base64: команда будет выглядеть так "openssl enc -base64 -in favicon.ico"
    3. Весь вывод команды openssl копируем в тег Image после строки "data:image/x-icon;base64,"
  4. В Url, в атрибуте template указываем строку-шаблон для поиска:
    1. Для этого идем на сайт
    2. Пишем любой запрос, например на поиск "12345678"
    3. В строке поиска видно, что шаблон поиска выглядит так: "http://www.nic.ru/whois/?query=" и в конце добавляется наша срока
    4. В template указываем url запроса, а вместо строки запроса пишем {searchTerms}
В итоге получаем:
<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/" xmlns:os="http://a9.com/-/spec/opensearch/1.1/">
<os:ShortName>NIC WhoIS</os:ShortName>
<os:Description>WhoIS сервис</os:Description>
<os:InputEncoding>UTF-8</os:InputEncoding>
<os:Image width="16" height="16">data:image/x-icon;base64,AAABAAEAEBAAAAEAGABoAwAAFgAAACgAAAAQAAAAIAAAAAEAGAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAD////////////////////////379/v3r/v3r/79+//////
///////////////////////////////////gvX/JjB/BfADBfADBfADBfADMlC/o
zp/////////////////////////379/MlC/BfADBfADBfADBfADBfADBfADBfADB
fADQnD/79+/////////////9+/fkxY7gvX/YrWDUpFHgvX/gvX/kxY/hwofFhBfB
fADBfADMlC/79+/////////k8v2Xy/ev2Pn05s/05s+v2PmXy/fK5fv////////w
3r/FhBfBfADgvX/////58ubX6/w0mfA/n/H///////8/n/E0mfDK5fvy48j47t//
///05s/BfADFhA/79+/iwYr///80mfA0mfDk8v3X6/w0mfA0mfD////JjCXBfAD7
9/D////YrWDBfADozp/UpU/47t9ksfQ0mfC93vqKxfc0mfBwuPX9+vXBfADBfADj
xY/////nzp/BfADgvX/QnD/r1q6Kxfc0mfA0mfA0mfA0mfCj0vj////UpFHBfADY
rWD////05s/BfADgvX/YrV/gvX+j0vg0mfBhsPS12vphsPQ0mfCXy/f47t/BfADM
lDP////////BfADgvX/kxY/UpFHK5fs0mfBstvT////x9vk0mfA/n/H////JjCXB
fAD////////QnULs1q/379/JjCX///80mfA0mfCKxfdisfQ0mfBLpPL9+/fBfADB
fADw3r/////euXf////////ctW/79/BYrPM0mfA0mfBLpPJ9v/a93vrq1KrBfADB
fADctW/w3r/t27j////////////z48v////////////79/Dnzp/UpFHFhBfBfADB
fADBfADYrV/////////////////79+/UpU/BfADBfADBfADBfADBfADBfADBfADB
fADctW/////////////////////////////v3r/UpU/FhA/BfADBfADJjB/YrV/v
3r////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</os:Image>
<os:Url type="text/html" method="GET" template="http://www.nic.ru/whois/?query={searchTerms}">
</os:Url>
</SearchPlugin>

Все это необходимо сохранить как xml файл, например, nic-whois.xml и скопировать в папку searchplugins своего профиля:
Для Linux пользователей это будет "~/.mozilla/firefox/xxxxxxxx.default/searchplugins"
Для Windows пользователей "%USERPROFILE%\Application Data\Mozilla\Firefox\Profiles\xxxxxxxx.default\searchplugins"
xxxxxxxx - это название вашего профиля, оно у всех имеет разное значение.
Вот и все.

Здесь (!warning eng) можно прочитать о том же, но более подробно.

суббота, 14 июня 2008 г.

Twit

Между делом написал небольшую поделку для постинга сообщений в twitter из командной строки:
файл twit (кладем, например, в /usr/local/sbin/):
#!/bin/sh

# Imports $TPASS, $TUSER
. ~/.twit/pass

curl --basic --user $TUSER:$TPASS --data status="$1" http://twitter.com/statuses/update.xml > /dev/null 2> /dev/null

if [ $? -eq "0" ]; then
echo "ok";
else
echo "not ok";
fi
А файл pass кидаем в ~/.twit/ (не забываем дать права 400):
TUSER=YourTwitterUser
TPASS=YourTwitterPassword
И используем:
$twit "Мелочь, а приятно"

Up

Перешел на Ubuntu x64 8.04 с Ubuntu x86 7.10:
Порадовало:
  • Теперь у меня в распоряжении все мои законные 4Гб оперативки
  • У меня уже сейчас браузер ФФ3 (хотя и под 7ой можно его поставить)
  • Почти не было проблем по переносу настроек
  • HiRes видео не тормозит
  • Дровишки для моей 8800gt, уже есть репозитории :-)
  • !В ФФ3 работает flash (т.к. я ставил 64-битную систему, адобовский флеш-плагин работает через типа-эмулятор 32-битного апи)
Разочаровало:
  • ФФ3 не поддерживает google browser sync (и возможно browser sync уже не будет развиваться, хотя поживем увидим)
  • Для ФФ3 еще не сделали TabMixPlus
  • UPD: флешка после отмонтирования в наутилусе, не меняет название (с метки диска на название флешки, как было в 7-ой версии)(у отмонтированных девайсов гаснет эмулятор лампочки на иконке диска, но так как эта лампочка всего пару пикселей, то очень уж не заметно)
  • UPD: я еще не нашел, где отключается автозапуск у флешек (в старом месте его нет)(отключается через меню наутилуса)
Вот как-то так, я остался в выигрыше.

Начало

Мысли, замечания, примеры и находки по работе и не только.