söndagen den 20:e juni 2010

Testar googlecl

Testar att använda googlecl för att blogga. Det är ett command line verktyg som ger tillgång till flera av Googles tjänste från bash i Linux. Verkar mycket intressant. Tex mycket enkelt att ladda upp bilder. Läs mer på projektsidan.

lördagen den 27:e mars 2010

Hur man kan laga trasigt .docx dokument

En gammal vän kontaktade mig i veckan eftersom ett word-dokument men en viktig rapport gått sönder. Även om jag själv använder word väldigt lite kunde jag snabbt konstatera att det inte var svårt att få ut data ur de nya .docx filerna. Först konstaterade jag att .docx filer egentligen är en zip-fil med flera xml-dokument, bilder och kataloger. Texten i dokumentet gick snabbt att få fram (på en Linux-dator) med hjälp av följande enkla kommandorad (efter att ha gjort unzip på filen):
cat word/document.xml | sed -e "s/<[^>]*>//g"

Nu hade jag texten i alla fall men ville även försöka rädda formatering och allt annat. Lät därför Word försöka laga filen på egen hand och tittade sedan på details när Word inte kunde laga filen. I detta fall var texten:
Microsoft Office cannot open this file because some parts are missing or invalid.

Location: Part: /word/document.xml, Line: 2, Column: 284234
 Packade upp filen med unzip (eller motsvarande)
unzip fil.docx
 Öppnade upp filen där felet skulle vara och tittade på texten med en godtycklig editor:
vim word/document.xml
 Med vim kan man skriva "284234|" (utan citat) för att komma till rätt kolumn. Där tog jag bort den aktuella tagen på den positionen. Word indikerarade på sista ">" och jag tog alltså bort tagen som slutade där.

 Gör sedan en ny zip-fil (egentligen en .docx-fil) efter att ändringarna är sparade:
zip -r ../fix.docx *
 och även om word klagade på denna fil också fungerade den inbyggda recover-funktionen och dokumentet var helt återställt.

lördagen den 9:e januari 2010

Test av lite api:er resulterade i @sl_fail på twitter

I tisdagskväll kände jag att det var tid att skriva lite kod igen och passa på att testa lite olika api:er, haft för lite tid för det under en längre period. Av olika anledningar fastnade jag för störningsinfo från SL och möjligheten att få upp den på Twitter.

Sagt och gjort satte jag mig ner och skrev ett litet program i Perl som hämtar information från http://mobilta.sl.se och stoppar in det i en lokal Postgresql-databas för att kunna avgöra om det är en gammal eller ny störning. Är den ny så skrivs meddelandet om och förkortas och anpassas till Twitter med ett gäng regexp:ar. Sedan förkortas länken till SL med hjälp av api från http://bit.ly och till slut skickas det färdiga meddelandet till Twitter via deras api.

Resultat av detta finns på http://twitter.com/sl_fail och kan säga att det kommer bra många fler meddelandet än jag trodde det skulle göra och det fyller lätt upp flödet på Twitter. Lite mer info om projektet finns på https://www.reuteras.com/Projects/SlFail.

fredagen den 1:e januari 2010

Spamassassin

Om du använder Spamassassin bör du kontrollera så att du har en fått en fix för bugg 6269 som ger extra poäng skickade 2010...

tisdagen den 1:e december 2009

Svart tisdag


Detta är ett öppet och gemensamt blogginlägg – kopiera och publicera på din blogg. (via opassande)

Läs även andra bloggares åsikter om , , , .

måndagen den 13:e juli 2009

Rsync canary

Read a tweet by hackernewsbot about an interesting canary idea by rsync.net to print a canary on their site every day until they have been forced to disclose information to a secret search warrant that it is criminal to disclose that it has happened. I guess no one can force them to continue to publish a weekly canary after a search so in this way they can reveal a search just by not updating a page. Clever and shows that there is always a way around a law.

fredagen den 22:e maj 2009

Adding SELinux rule for bayes with MySQL on Fedora 10

I couldn't figure out why my Spamassassin installation on Fedora 10 didn't use bayes. Thought that I already checked /var/log/audit/audit.log but obviusly i hadn't. So after looking in the file I found that SELinux wouldn't allow amavis to talk to my mysql server. The solution was to run

audit2allow -M myamavis < /var/log/audit/audit.log
semodule -i myamavis.pp

I only had this entry in the audit.log file. You should look at the myamaivs.te file before enabling it. My myamavis.te file looks like:

module myamavis 1.0;

require {
type mysqld_port_t;
type amavis_t;
class tcp_socket name_connect;
}

#============= amavis_t ==============
allow amavis_t mysqld_port_t:tcp_socket name_connect;