Archive for juli, 2008

Google App Engine: mina erfarenheter

Posted in Osorterad on juli 21st, 2008 by Clas – 2 Comments

För mitt senaste lilla projekt har jag använt Google App Engine (GAE) för första gången. GAE är Googles svar på ”cloud computing” och innebär att din webbtjänst körs på datorer hos Google, och att Google som tillhandahåller databasutrymme i sin ”Datastore”. Koden som körs på GAE måste vara skriven i Python, vilket är ett språk som jag inte provat tidigare.

För att skapa sin GAE-webbtjänst så använder man enklast GAE-SDK vilket är en version av GAE som du laddar hem och kör på din egen dator. SDK:n innehåller en webbserver, en Python-tolk och en lokal version av Googles Datastore. SDK:n gör att du kan skapa och testa din webbtjänst utan att ladda upp något hos GAE. När du utvecklat klart, eller i alla fall har något som du tror fungerar, så är det bara att ladda upp till GAE med hjälp av ett SDK-script. När koden är uppladdad så är din webbtjänst online, och kan kommas åt den på en appspot.com-adress. När jag provat så har exakt samma fel uppstått ”online” på GAE som i min SDK, och tvärt om, vilket innebär att jag har kunnat ”debugga” i min SDK utan problem. Det går också bra att uppdatera sin uppladdade kod hos GAE genom att enkelt göra en ”update” på den kod som du tidigare laddat upp. Ändringar som du gjort i en ”update” syns direkt online på GAE vilket är väldigt trevligt.

Utöver att programspråket Python blev en ny bekantskap, så kräver även databasen – den Google kallar för Datastore – lite nytt ”tänk”. Datastore, till skillnad från en vanligt MySQL-databas, är en distribuerad databas. För att den ska fungera effektivt (vilket Google kräver att den gör) så har frågespråket som kan användas begränsats. Det är bara en liten delmängd av normala SQL-frågor som kan utföras. Är du van att ställa avancerade SQL-frågor så kräver användandet av Datastore att du ofta tänker en extra gång innan du kan göra samma sak i GAE. Användandet av Datastore har givit mig en liten inblick i hur ett distribuerat system fungerar, vilket var intressant för mig som bara kört mot en dator i taget tidigare.

Överlag så är jag väldigt imponerad av GAE som utvecklings- och test-miljö. GAE fungerar otroligt bra för små snabba kodhack. Det finns möjlighet att ha flera versioner av sin kod (men bara en version av databasen) samtidigt. Du kan snabbt ”switch:a” mellan vilken version din besökare ser, och du kan se felmeddelanden som genereras för varje version. Detta gör det enkelt att även testa sin webbtjänst online, i realtid, om man skulle behöva det.

När en eller flera versioner av din webbtjänst är uppladdad kan du se versioner, loggar på felmeddelanden, statistik och resursutnyttjande i din GAE-portal. I GAE-portalen kan du också titta på och modifiera data i din Datastore. GAE-portalen ser ut såhär:


gae dashboard

Har du ett eget domännamn som du kan kontrollera DNS-inlägget för så är det också enkelt att via GAE-portalen, och via Google Apps(!) fixa till så att domänen eller en subdomän kan användas till din webbtjänst. Adressen blir då ett alternativt sätt att nå webbtjänsten, istället för på appspot.com-adressen. Fördelen med att ha en egen domän pekande mot GAE är att du inte blir beroende av att någon bra och passande appspot-adress är ledig. Det spelar helt enkelt ingen roll vad din webbtjänst kallas internt hos GAE.

GAE har, precis som Googles andra tjänster, en blogg, App Engine-bloggen. Där hittar du en del intressant material, bland annat länkar till ett antal föreläsningar om GAE. Google har också en sajt för Open Source-projekt som finns på GAE. Listan med projekt hittar du under Google Groups.

Jag är väl inte så jätteförtjust i Python som webbscript-språk, men för mitt projekt så har det fungerat okej. Jag har, på grund av min tjänsts funktion, valt att inte använda något av de ramverk som Google erbjuder för att separera HTML och logik (bl.a. Django). Det som irriterade mig mest under utvecklingens gång var problem med teckenkodning och svenska tecken i URL:er; men det mest gick att lösa genom envist surfande på diverse Python-hjälp-sidor.

Tyvärr har jag dåligt med information om svenska webbtjänster som idag kör på GAE. Det jag sett som finns skrivet om GAE på svenska bloggar sträcker sig som längst till några uppladdade demo-projekt. Jag känner till ett undantag, förutom min feedCache, och det är Joakims ToDoListr. Känner du till fler svenska projekt som utvecklas just nu eller som finns uppladdade på GAE?

Frisim Summer of Code 3: Implementering

Posted in Frisim on juli 20th, 2008 by Clas – Kommentering avstängd

Nu har Frisim feedCache implementerats på Nyhetsrubriker och Nyhetsfilter. På Nyhetsrubriker.com har det tillkommit en sida som försöker beskriva hur du kan visa och anpassa intressefokuserade nyheter till din hemsida.


nyhetsrubriker feedcache

Sajten Nyhetsrubriker.com skapade jag år 2001 så det är lite nostalgi att uppdatera den såhär nästan precis 7 år senare.

Frisim Summer of Code 2: Widget

Posted in Frisim on juli 18th, 2008 by Clas – Kommentering avstängd

Efter att ha tittat runt lite på hur ”moderna” widgets ser ut (t.ex. på Knuff.se, Twingly.com och några till) så har jag knåpat ihop en widget i form av en enkel ”nyhetsruta” till Frisim feedCache. Den är inte så avancerad, men förhoppningsvis så kan enkelhet vara tilltalande.

En kort beskrivning av hur den konfigureras finns på Frisim feedCache och det finns också en exempelsida där jag provat att inkludera nyhetsrutan.


frisim feedcache nyhetsruta

Frisim Summer of Code 1: förhandsvisning av Frisim feedCache

Posted in Frisim on juli 17th, 2008 by Clas – Kommentering avstängd

En av mina semesterdagar har jag sysselsatt mig med ett nytt Frisim-projekt som jag kallar Frisim feedCache.

Vad är Frisim feedCache?

Frisim feedCache kan enklast jämföras med Feedburner, som är en plattform för att distribuera RSS-feeds. Skillnaden är att Frisim feedCache, åtminstone till en början, är begränsad till feeds för just Frisim.com, men också att feedCache inte bara distribuerar RSS, utan bland annat data i Javascript, JSON, hela ”widgets” och andra format.

Hur ser Frisim feedCache ut?

Frisim feedCache har egentligen inget utseende, men det finns i alla fall en preliminär webbsida som visar hur feedCache kan användas. Den sidan ser just nu ut såhär:


Frisim feedChange Screenshot

Varför har jag gjort detta?

Frisim har relativt begränsade server-resurser. Frisim kör idag på en endaste server (co-located hos Netcamp.se här i Linköping). Även om det finns ett system som kan ta över om denna server skulle krascha fullständigt så görs alla sökningar och alla anrop mot denna server. Servern får idag utstå relativt många anrop per sekund, och även om den inte har några som helst problem med det idag, så skulle jag gärna vilja att många fler använder våra nyhets- och blogg-data. Många av anropen mot servern är automatiserade och ställer samma ”sökfråga” gång på gång. Detta gör att jag gärna vill mellanlagra sådana sökningar så att själva letandet i sökindexet inte behöver upprepas allt för ofta. Frisim feedCache gör denna mellanlagring och tanken är att det ska avlasta Frisim-servern i framtiden. Frisim feedCache kommer också att kunna användas för mina ”undertjänster” Nyhetsrubriker och Nyhetsfilter.

Hur är det byggt?

Eftersom tanken är att avlasta vår Frisim-server, och kunna skala för massvis av användare, så använder feedCache Google App Engine. Frisim feedCache är programmerat i programspråket Python och är c:a 300 kod-rader. Scriptet använder Googles Datastore för att lagra data.

När är det klart så att även andra kan prova?

I sann ”Summer of Code [Twingly video]”-anda så är det inte så noga med deadlines ;-) Frisim feedCache är ”klar” i den mening att den går att använda, men det återstår lite testning, och lite slipande på Javascript-widgets. Det går att besöka Frisim feedCache, och en RSS-feed med en ren bloggsökning på ordet [google] kan redan nu ses på länken:

http://feedcache.frisim.se/?q=kategori:bloggar%20google&o=rss

Vill du beta-testa, utforma en widget, eller har något annat förslag, så lyssnar jag gärna.

Uppdatering: Nu har feedCache fått en subdomän under Frisim.se, kopplad till Google Apps. Det har också kommit upp lite mer instruktioner på webbsidan.

Yahoo! lanserar BOSS

Posted in Osorterad on juli 10th, 2008 by Clas – Kommentering avstängd

Yahoo lanserade igår BOSS, som är ett API mot deras söktjänst. Det ersätter deras Developer Network API, som bland annat innehåller ett bildsök, Yahoo! image search. Frisim använder detta för att generera bilder till ”namn i media”-rutan. Skillnaden mellan det gamla Developer Network API:et och nya BOSS är, när jag testar bildsökningen, bara den att BOSS tillåter obegränsat med sökningar, medan Developer Network bara tillåter 5000 frågor per server per dag. Frisim gör bara en sökning när ett nytt namn identifieras. Frisim har identifierat 8374 namn, och senast var det Jimmy Touma, vilket hämtades igår.

Yahoo! BOSS innehåller, precis som den tidigare versionen, ett API mot nyhetssöket, men tyvärr går det inte att begränsa sökningar till att bara ge resultat från svenska media.

Hmm, kombinerar man Yahoo! Boss med Sesams open source kod för federeted search Seasat och med lite data från någon nyhetsleverantör så kan man bygga sig ett eget Sesam.se :-)

Frisim språk och spam

Posted in Frisim on juli 8th, 2008 by Clas – 2 Comments

Lite inspirerad av Twingly och lite av Bloggz så har jag, i utvecklings-versionen av Frisim, lagt till språkidentifiering. Jag har 18 ”europeiska” språk som jag försöker identifiera. Identifieringen görs genom att jämföra frekvensen av n-gram mellan texter på olika språk. Jag har använt texter från Wikipedia på de 18 språken, genererat de 1000 mest förekommande n-gram:en från varje, och använder detta för att jämföra insamlade data mot. Jämförelsen resulterar i en ”rangordning” av de 18 språken, och det med ”minst avstånd” till n-gram:en för den insamlade texten väljs. I det fall som rangordningen inte blir så tydlig (avståndet mellan första och andra språket är litet) så väljer jag svenska som någon form av ”default-språk”.

Data som indexeras märks nu upp, på samma sätt som t.ex. källan anges, med ett språk. Det gör att det går att t.ex. begränsa sökningen till blogginlägg på svenska (eller engelska, eller bara de två, osv.).

Jag har ännu inte riktigt bestämt vad jag ska göra med språk-kategoriseringen. Mycket av det som idag kommer in i indexet men som inte är på svenska är (i någon mening) att betrakta som SPAM. Rimligen borde jag kasta ut allt som inte är på svenska, men det beslutet har jag inte tagit ännu. Kanske ska jag istället aktivt börja samla in (bra) material på andra språk.

Förhoppningsvis kommer jag att kunna flytta över språkidentifieringen till produktions-versionen av Frisim innan semestern är över.

Jag måste också ge lite cred till Kevin Burton (han med Tailrank och Spinn3r) för hans Java-kod som jag delvis har byggt min kod på. Artikeln som beskriver metoden finns hos CiteseerX.

Uppdatering: Nu har jag ”provkört” språkkategoriseringen på lite mer data, och det verkar fungera ungefär som väntat. Den är lite kass på att skilja på svenska, norska och danska, det måste åtgärdas genom att skapa lite bättre ”corpus” för de språken, och det blir problem med blogginlägg som är skrivna på flera språk. Blogginlägg som t.ex. detta klassas som skrivet på engelska, även om det innehåller lite text på svenska. Tveksam hur man vill klassa ett sådant inlägg. Twingly har kategoriserat det som bara svenska men Bloggz verkar inte ha det inlägget i sitt index (vilket antyder att det är bortsållat för att det inte är på svenska).

Frisim/kategori nyhetskategorier

Posted in Osorterad on juli 6th, 2008 by Clas – Kommentering avstängd

Efter att ha hittat HejVärldens sajt med Apple-nyheter på Aapl.se så lade jag själv till en Mac-avdelning på Frisim/kategori. Aapl.se verkar (också) ha hämtat inspration till sin design från Alltop.

Alltop har också en Mac-avdelning. När jag ändå är inne på Alltop så noterar jag att de tagit bort sin huvudkategorisering från framsidan och numera listar kategorierna i bokstavsordning.

Fast och fifflet

Posted in Sökmotorer on juli 6th, 2008 by Clas – Kommentering avstängd

På denna Del.icio.us-länksamling hittar jag en TechCrunch-artikel om norska sökföretaget Fast Search & Transfer. Fast S&T står för delar av tekniken bakom Schibsteds Sesam.se, speciellt nyhetssöket.

Artikeln handlar inte om sök-teknik utan om hur Fast, genom sättet att ha redovisat framtida tänkt försäljning på, påstås har vilselett omvärlden. Delar av orginalartikeln, på norska, finns hos DN.no. Microsoft köpte FAST i april 2008.

TT och källorna

Posted in Osorterad on juli 2nd, 2008 by Clas – Kommentering avstängd

Jag försöker ha lite koll på vad som skrivs om Google News i svenska tidningar. Jag använder RSS från Nyhetsfilter.com och mail-alarm från Aitellu (värsta nördnamnet på den tjänsten) och Newsmachine, dels för se vilken tjänst som fungerar bäst, dels också för att jag vill hitta inte missa något. Det skrivs inte så mycket, och oftast nämns bara Google News i förbifarten när Googles alla tjänster listas.

Som jag tidigare skrivit så verkar inte TT så glada över svenska Google News. Till min stora förvåning så verkar det dock inte som om alla på TT har förstått vad Google News är för något. Häromdagen kablade TTSpektra ut en artikel som publicerades i rätt många nyhetssajter som köper TT-feeds. Artikeln finns bland annat i min lokaltidning Corren.se. Artikeln innehåller texten (min markering):

Nobelpristagaren och frihetskämpen Nelson Mandela, som fyller 90 år den 18 juli, fanns självklart på hedersplats under konserten, rapporterar Google News.

Känns en aning skumt att TT hänvisar till Google News som en ”rapporterande” källa. Google News aggregerar nyheter från andra sajter, och producerar inga enga rapporter alls. Ja ja, kanske är det bara en miss som kanske uppkommit på grund av sommarjobbare som tagit över nyhetsrapporteringen i Sverige.