Archive for juli, 2009

Server-backup till Amazon S3

Posted in Frisim on juli 29th, 2009 by Clas – Kommentering avstängd

Frisim.com har tidigare haft en kopia av sig som kört på en VPS. Denna VPS har också använts som backup-utrymme. Till denna VPS har jag kunnat köra rsync för att kopiera över filer och databas-dumpar av sådant som ändrats.

Då jag istället börjat använda Amazon EC2 som VPS, och då jag inte tänkt att ha den igång ”alltid”, så har jag flyttat min backup från min VPS till Amazon S3. Det sorgliga är att det inte går att köra rsync direkt mot S3. Därför har jag nu bytt till att göra backup med Jets3t. Jets3t är i första hand ett ”toolkit” för att använda Amazon S3, men innehåller bland annat ett färdigt script för att göra backup, synchronize.sh. Synchronize-scriptet är enkelt att använda, och i princip så tar det argument i form av UP eller DOWN, namnet på din ”hink” (bucket) på S3 och namnet på en lokal katalog. Filer eller kataloger som du inte vill ha med i backuppen utesluts genom att lägga en .jets3t-ignore-fil i respektive katalog. Smidigt i och med att du inte behöver ändra i backup-scriptet när du skapar nya kataloger.

Jag har bara gjort den första körningen, den där alla data kopieras, och en test-uppderating, men jag kan konstatera att det tar rätt mycket tid. Nu har jag inte så mycket data som uppdateras mellan varje backup, men data som måste laddas upp måste naturligtvis föras över till S3 och det verkar gå i en hastighet av c:a 100KB/s. Då har jag valt att lagra på en ”hink” i USA, inte i Europa. Uppladdningshastigheten är inte det segsaste, även om det tar mest tid, utan det är att synchronize.sh inte håller ordning på vad som den tagit backup på lokalt, utan behöver titta hos S3 för varje fil innan den kan avgöra om filen modifierats och behöver uppdateras eller inte. Det blir lite segt, och tar säkert runt 30 minuter för de c:a 30.000 filer som jag vill ha backup på.

Nu är det mestadels programkod och MySQL-data som är intressant att backa upp, så det är inte så kritiskt att det går fort eller görs ofta, så därför verkar Jets3t-backup-scriptet till Amazon S3 vara ett rimligt upplägg för mig. Då mina data inte är stort mer än 1GB så kostar det nästan inget att lagra på S3, och när den initiala uppladdningen är gjord blir det heller inte några höga trafikkostnader. Så länge det handlar om bara c:a 30.000 test av fildatum så kostar det c:a 25 öre, vilket blir minimikostnaden för en backup.

För den som har lite data och vill ha ett backup-system som är enkelt att konfigurera så rekommenderar jag Jets3t. Det är enkelt att använda för såväl server som office-dator. Java kanske känns omständligt på en server, och det kan det vara om du inte redan installerat det och använder det till annat, men samtidigt så har jag noterat att om man kör Centos 4, vilket jag gör, så får man ofta problem med ”för gamla” versioner av t.ex. Ruby eller Python för att köra backup-system såsom Backup-manager eller s3sync och då var Java ett väldigt bra alternativ.

Ett annat alternativ är Quillen. Quillen är ett ”extra lager” till Jets3t, och bör kunna vara något lite snabbare. Senare versioner av Quillen (efter 0.19) använder även Amazon SimpleDB för att lagra backup-information.

Updatering: Efter att ha provat igenom Jets3t så har jag noterat ett problem. Om du har filer med ”dåliga” filnamn, så kommer tyvärr Jets3t att ”krasha” och inte vilja uppdatera din backup. Problemet beror på att Jets3t använder en XML-parser för att kommunicera med Amazon S3, och när S3 skickar filnamn som innehåller tecken som inte är tillåtna i XML så avslutar Jets3t tyvärr backup-processen. Jag råkade ut för detta för filer som jag skapar med ett ”dåligt” PHP script som endera inte raderar radbrytningar i slutet på strängar/filnamn, eller också ersätter å, ä och ö med tecken som inte är ”XML-kompatibla”. Detta S3-problem är tydligen välkänt. Detta är troligen inte ett problem som är vanligt för ”normalanvändaren”. I övrigt fungerar det bra!

Nyhetr visar Twitter-sök-resultat

Posted in Osorterad on juli 21st, 2009 by Clas – Kommentering avstängd

Många använder Twitter, till och med jag. Efter att ha sett Microsoft Bings nya Bingtweets, som vid sidan av sökresultaten från Bing visar sökresultat från Twitter så har nu också Nyhetr.se fått integrerade Twitter-sök-resultat.

Resultaten visas med hjälp av Ajax-anrop genom jQuery. Sökningen hos Twitter görs först när Nyhetr-sökningen är utförd och laddas direkt från Twitter vid varje sidvisning. Detta gör att Twitter-resultaten dyker upp lite sent. Eftersom Twitter uppdaterar väldigt ofta finns möjligheten att klicka ”[Uppdatera]” för att få resultaten uppdaterade utan att ladda om hela sidan. Eftersom det är implementerat på Nyhetr.se så är det ännu långt ifrån vältestat.

Från början hade jag tänkt att använda Friendfeeds API, men eftersom de inte gav mig någon möjlighet att begränsa resultaten till inlägg på svenska så byggde jag om till Twitter istället.

Nyhetssök – hur gör man?

Posted in Frisim on juli 14th, 2009 by Clas – 2 Comments

Efter att ha jämfört resultat från några nyhetssökmotorer så kan jag konstatera att Frisim inte är perfekt. Det hade jag heller inte väntat mig.

Hur bra en nyhetssökmotor fungerar beror mestadels på hur bra kvalitet det är på materialet som görs sökbart. Om det ”slinker med” mycket sidoinformation utöver artikeltexter, såsom menyer och puffar för andra artiklar, så blir resultatet dåligt.

När jag programmerade den första versionen av Frisim så hade svenska nyhetssajter inte RSS. Tanken med Frisim var då att ”göra lite bättre” än att bara hämta in nyhetsrubriker. Grundkonstruktionen var då att läsa nyhetssajternas förstasida, och scanna av den efter länkar till nya artiklar. Så fungerar Frisim, i princip, fortfarande. Skillnaden är att jag nu även använder RSS för att lite effektivare ska kunna hitta nya artiklar, men annars fungerar det likadant nu som då. När en ny nyhetsarikelsida har hittats så läses sidan in och HTML-koden analyseras. Ett antal generella ”regler” används för att hitta rubrik, ingress och brödtext. Dessa regler är samma för alla nyhetssajter – ingen anpassning eller konfigurering görs för olika sajter. Med denna typ av system är det svårt att få det perfekt. Det finns helt enkelt inte tillräckligt många parametrar att trimma in för att det ska fungera perfekt på alla sajter.

Alternativet är att skapa en ”style-fil” till varje nyhetssajt. Traditionella ”screen scrapers” som t.ex. Web-Harvest kan användas för sånt. Fördelen med ett sådant verktyg är att du relativt enkelt kan skapa XPATH-uttryck (eller regular expressions) som du kan använda för att hitta rubrik, ingress och brödtext. Nackdelen är att du måste göra denna anpassning för varje nyhetssajt du tänkt att indexera, samt att systemet blir väldigt känsligt för förändringar i nyhetssajternas HTML och CSS-kod. Du behöver följdaktligen lägger ner betydligt mer tid på att underhålla din nyhetssökmotor med denna typ av lösning.

Om jag får gissa så är Aitellus nyhetssök på Eniro baserat på regular expressions. Eniros söktjänst missar väldigt lite text i de flesta av de artiklar som de har hittat, och innehåller inte mycket sidoinformation/”skräp”. Googles (svenska) nyhetssök är gissningsvis inte baserat på regular expressions. Jag drar den slutsatsen på resultat som du får om du idag söker på t.ex. ”Avsluta när som” då du hittar bl.a. denna artikel. Svenska Google News är gissningsvis nära underhållsfri. Frisim har liknande problem som Google News.

Jag bestämde mig för att prova Web-Harvest, för att se hur komplicerat det är att istället använda ett system baserat på regular expressions. Web-Harvest känns relativt enkelt. Web-Harvest är skrivet i Java, något som innebär att det bygger på gedigna rutiner för XPATH, rensa HTML, köra script osv. Systemet har ett fint GUI som du kan använda för att skapa och prova ut dina script. När scriptet väl är utprovat är det färdigt att exekvera från din egna Java-kod. Jag satte ihop ett script för att ta fram titel, ingress och brödtext från en DN-artikel och lite Java-kod för att köra scriptet. Min kod är baserad på den exempel-kod som finns till verktyget och denna bloggpost. Vilken data som extraheras bestäms med hjälp av dessa rader kod:


let $title := data($doc//h1)
let $preamble := data($doc//div[@class="preamble"])
let $text := data($doc//div[@id="article-paragraphs"])

Här framgår det tydligt att så fort DN gör en smärre justering av sin HTML-kod, så är det inte troligt att det fungerar längre. Det går visserligen att skriva dessa rader något lite ”smartare”, men räcker troligen inte för att fortsätta att fungera efter t.ex. en uppdatering av DNs publicersingssystem. Men det fungerar bra just nu. Det är inte supersnabbt, men det är inte Frisims nuvarande system heller.

Tidningar som pingar bloggare?

Posted in Osorterad on juli 9th, 2009 by Clas – Kommentering avstängd

Sedan urminnes tider har bloggare, genom Twingly, ”pingat” för att meddela svenska tidningssajter att de skrivit om deras nyheter. Men tidningssajterna ger inte samma tjänst i retur – de ”pingar” inte bloggar eller bloggare om att de skrivit något. Istället får bloggarna hålla sig underrättade genom att läsa på deras sajt, eller med hjälp av RSS. RSS är tyvärr långsamt, och kräver att man laddar (påbörja laddning) för att se om något nytt lagts till i RSS-feed:en. Tänk vad fint det vore om man på nyhetssajten kunde anmäla sig för att bli pingad vid publicering istället – push istället för pull. Om det sker via mail, XMPP, ICQ, MSN, Skype eller Twitter spelar inte så stor roll. Snubbarna på Techcrunch har tänkt på detta. Intressant! Nyhetsläsning närmar sig realtid, och många vill vara med när det händer. När kommer den första svenska nyhetssajten som i jakten på fler inflytelserika läsare erbjuder detta?

Statusuppdatering: Namn och bilder

Posted in Frisim on juli 9th, 2009 by Clas – Kommentering avstängd

Min experimentsökmotor Nyhetr.se har fått lite nya features. Den ”entity extraction” som jag på Frisim.com gjort i form av efterbehandling är nu flyttad till att göras när nyheterna indexeras. Detta gör att det går bra att visa fasetter även för namn bland nyheterna om man vill. Tyvärr gör för många fasetter att det blir lite trixigt att söka, tycker jag. När man närmar sig det antal fasetter (listade på högersidan) som finns på Svd.se/sok så blir det lite plottrigt. Om dessutom data för fasetterna inte är av 100%-ig kvalitet, som i mitt fall, så är det än värre. Jag har därför valt att visa namnen som vanliga sökningar istället.


Söknamn

Kanske borde jag läst Search user interfaces för att få reda på hur man bör göra, men just nu var det roligt att experimentera än att läsa.

Genom att samla lite sökstatistik från min lilla jämförelsesajt för att jämföra resultat från svenska nyhetssök så har jag nu fått lite tips på vilken typ av sökningar som ”power users” gör för sin RSS-bevakningar. Jag tänker mig att använda dem för att förbättre kvaliteten på mitt index. Vad som indexeras och hur det presenteras är två helt skilda saker. Genom att ha ”bäst” kvalitet på de indexerade nyheterna både när det gäller kvaliet och kvantitet så lockar du fler RSS-”leachers”; genom att ha ett fint webbgränssnitt så lockar du sajtbesökare. Jag ska försöka fokusera lite mer på det förstnämnda, och nästa steg i den riktningen blir att börja lagra alla de nyhetssidor som indexeras även som ren HTML.

Robots.txt 2.0 aka ACAP

Posted in Osorterad on juli 6th, 2009 by Clas – 1 Comment

Via Twitter/oholah så ser jag att Stampen, som driver ett stort antal lokala nyhetssajter, skickat ut ett pressmeddelanden om att de stödjer ACAP och att det därför troligen kommer att ”uppdatera” sina Robots.txt-filer till ACAP. Dagens media har också en artikel om detta.

ACAP är i princip lika generellt som Robots.txt, men det eftersom det skapats av World Association of Newspapers (WAN) så riktar det sig i första hand till nyhetssajter. Protokollet för ACAP är relativt likt Robots.txt-protokollet, så det är inte så kontroversiellt i sig. Skillnaden är att du som nyhetssajtägare kan specificera vilka delar av webbplatsen som du vill öppna för vilken sökmotor lite mer i detalj. Här finns ett exempel.

Detaljer för hur ACAP kan implementeras hittas här, och det finns t.ex. ett script för att översätta en Robots.txt till en ACAP-fil (som åtminstone i version 1.0 heter robots.txt).

Det blir spännande att se hur Stampen tänker sig att utnyttja protokollets möjligheter. Men så länge Google väljer att inte stödja ACAP, med hänvisning till att Robots.txt räcker väl, så blir nog effekten inte så stor. De flesta av Stampens nyhetsssajter saknar idag en Robots.txt-fil.

Hur svenska sökmotorer bevakar detta hittar du här.

Söndagshack: Jämför nyhetssökresultat

Posted in Frisim on juli 5th, 2009 by Clas – Kommentering avstängd

Jag har snickrat ihop ett litet verktyg för att enkelt kunna jämföra och utvärdera resultat från några svenska nyhetssökmotorer. Verktyget är byggt för att jag ska kunna använda det i någon form av intern kvalitetsutvärdering av någon av mina sökmotorer. Verktyget kan just nu göra sökningar hos Frisim.com, Nyhetr.se, Eniro.se/nyhetssök, Newsbrook.se, Nyhetsportalen.se och Google News.

Sökresutlaten som visas här är de resultat som fås i de RSS-flöden som respektive sökmotor levererar. I de fall som RSS-flöden innehåller HTML så har den tagits bort, vilket ibland påverkar utseendet på artikelns ingress. Nyhetssökmotorerna har olika antal källor och hanterar dubbletter av nyhetsrubiker lite olika – vissa visar alla dubbletter, medans andra sållar bort dem och bara visar en länk. Vissa av sökmotorerna söker bara i rubrik och ingress, andra i hela artikeltexten. Även det påverkar naturkligtvis träffarna.

Prova gärna här. Vilken nyhetssökmotor funkar bäst för dig?