« Nästan 36 modeller med villkorsprogrammering (constraint programming) i MiniZinc | Main | Constraint programming i Java: Choco version 2 släppt - samt jämförelse med JaCoP »

augusti 30, 2008

Ubiquity 0.1 - kommandoradsfunktionalitet i Firefox

Den senaste veckan har det pratats en del om version 0.1 av Firefox-tillägget Ubiquity från Mozilla Labs. Här är några kommentarer efter en första sittning.

Och det är helläckert!

Med en enkel tangentbordskombination (Alt-mellanslag i min Firefox 3.0 + Mandriva Linux) får man upp en "kommandorad" där man kan skriva in kommandon. Detta kallas för "Ubiq", vilket på svenska torde bli "att ubiqa" (eller möjligen "att ubika").

En mycket trevlig introduktion av funktionaliteten, inklusive en kort video, görs i Introducing Ubiquity.


Exempel


Här är några enkla exempel på hur man kan använda Ubiquity. Fler - och mer avancerade - exempel finns i User Tutorial.

google

google Ubiquity

gör en googlesökning på sökfrasen "Ubiquity".

this
Stöter man på en fras (t.ex. "constraint programming") kan man markera den och sedan ubiqa med


wiki this

varpå en Wiki-sökning görs. this avser det markerade området:. Man skriver alltså this.


translate
Markera en engelsk fras och ubiqa


translate this from english to swedish

Översättningen visas redan i previewfältet så man behöver inte ens exekvera kommandot. Riktigt trevligt.

Den finns stöd för en massa andra sökmotorer etc. såsom Yahoo, IMDB etc.

Andra kommandon som är bra att känna till:

* command-list: Visar vilka kommandon som finns tillgängliga för tillfället i browsern, inklusive egentillverkade (se nästa avsnitt).


Skriva egna Ubiquity-kommandon


Naturligtvis vill man utöka reportoaren med egna Ubiquity-kommandon som skrivs i Javascript. Här är två enkla exempel som jag personligen kommer att använda.

Instruktioner hur man skapar egna kommandon finns i Author Tutorial, där det finns mycket mer avancerade saker än nedanstående.

För att testa kommandona använder man en webbaserad kommandoeditor via kommandot command-editor, där man skriver in kommandona. Man behöver inte göra något speciellt mer än skriva (eller klistra in) koden, saker sker automatiskt i bakgrunden.

Det första exemplet är en sökning på Bokus och den andra en sökning på knuff.se. Det är inte rocket science, men funkar. (Jag har inte laborerat med mer de avancerade preview-funktionerna speciellt mycket.)


makeSearchCommand({
name: "bokus",
url: "http://www.bokus.com/cgi-bin/book_search.cgi?FAST={QUERY}",
icon: "http://www.bokus.com/favicon.ico",
description: "Searches Bokus for your books, movies, and games.",
preview: function(pBlock, directObj) {
if (directObj.text)
pBlock.innerHtml = "Searches Bokus for " + directObj.text;
else
pBlock.innerHTML = "Searches Bokus for the given words.";
}
});

makeSearchCommand({
name: "knuff",
url: "http://knuff.se/q/{QUERY}",
icon: "http://knuff.se/favicon.ico",
description: "Searches knuff.se for phrases from the swedish blogosphere.",
preview: function(pBlock, directObj) {
if (directObj.text)
pBlock.innerHtml = "Searches knuff.se for " + directObj.text;
else
pBlock.innerHTML = "Searches knuff.se for the given words.";
}

});

Det enda man egentligen behöver veta för att göra liknande kommandon är sökurlen och sedan byta ut sökfrasen med {QUERY}.

Man kan nu testa detta med


bokus constraint programming

eller för att söka på ett ISBN som man ser hos sin favoritblogg: 9780140286809 . Märk detta och skriv


bokus this

(Boken har inget med Ubiquity att göra - mer än möjligen indirekt genom associationer.)



knuff Ubiquity

som ger följande resultat.


För mer persistent användning av kommandona, för att ge sina medmänniskor tillgång till dem - och eventuellt "prenumerera" för att få automatiska uppdateringar - bör man publicera koden någonstans på webben. Läs i Author Tutorial hur man gör detta.

Jag har dock inte publicerat någon sådan sida. Eventuellt kommer det senare.


Säkerhet


Genom Ubiquity får användaren tillgång till mycket avancerade funktioner i webbläsaren. Tyvärr kan (och kommer att) elaka människor utnyttja detta för sina elakheter. Det finns för närvarande (i Ubiquity 0.1) ett visst skydd genom att man man får se en stor fet varningsskylt innan man börjar prenumerera, men det är naturligtvis inte tillräckligt. Det talar om en framtida "web of trust" där användare kan rekommendera/varna för en speciell prenumeration. Vi får väl helt enkelt se...

Detta sagt, testa gärna funktionaliteten, men prenumerera inte på något som du inte känner till/litar på.


Några andra kommentarer


* Jag har inte fått email eller add-to-calendar (stödjer endast Googles gmail/calendar) att fungera ordentligt.

* De speciella internationella tecknen (framförallt "å", "ä" och "ö") stökade i kommandot translate, möjligen är det något konstigt i min miljö...

* Vissa kommandon, t.ex. translate skriver in texten där (mus)markören befinner sig. Vad jag vet finns det inget sätt att ångra detta utan man måste ladda om sidan igen för att ta bort texten. Jag trodde att undo skulle göra det, men icke.

* Detta är version 0.1 och mycket kommer säkerligen att ändras...

* För övrigt påminner detta en del om programmeringsspråket/-miljön Rebol.


Länkar


Här är lite länkar om Ubiquity (varav några redan nämnts):

* Wiki: Ubiquity
Introducing Ubiquity
* Google-gruppen ubiquity-firefox
* User Tutorial
* Author Tutorial
* Forum

Posted by hakank at augusti 30, 2008 10:18 EM Posted to Program | Sökmotorer

Comments

Tack Håkan! Med din hjälp gjorde jag ett litet script för att söka på Jaiku (http://jonasnockert.com/2008/08/ubiquity-code-for-jaiku-search/)

Posted by: Jonas Nockert at augusti 31, 2008 07:07 EM

Jonas: Glad att vara till hjälp.


Några fler saker:

För mer inspiration kan man kolla in källkoden:
chrome://ubiquity/content/cmdutils.js
chrome://ubiquity/content/builtincmds.js
chrome://ubiquity/content/nlparser/en/nountypes.js

Editorn fås fram med:
chrome://ubiquity/content/editor.html

Definierade kommandon koms ihåg även vid omstart av Firefox. Det är bra.

Inställningar etc finns på
about:ubiquity

Eventuella prenumerationer visas sist i högermarginalen.

Posted by: hakank [TypeKey Profile Page] at augusti 31, 2008 07:20 EM

Tack Håkan! Skall läsa mer, det här kan ju bli hur bra som helst :)

Jag lade förresten till en liten link-rad i html-huvudet som pekar på scriptet på sidan för min kod så "installeras" det automatiskt ifall man vill det.

Posted by: Jonas Nockert at augusti 31, 2008 08:27 EM

Jonas: Det är bra för det är precis så man ska göra. :)

Själv har jag mina på
http://www.hakank.org/ubiquity/

Posted by: hakank [TypeKey Profile Page] at augusti 31, 2008 08:39 EM