NRK som filsystem

Så var det laget; tilgang på NRK sin nett-TV som om tilgangen til innholdet skulle ligge lokal. I mitt forsøk på å gjøre om NRK Nett-TV til et virtuelt filsystem har jeg valgt å bedrive “screen scraping” av nettsidene, og ender opp med én spilleliste for hvert program som er lagt ut.

Jeg har valgt å benytte Python, sammen med modulene Fuse-Python og BeautifulSoup, så dette kan man sette opp på sin egen maskin som kjører Linux eller MacOS.

Filene er lagt ut i kildekodekontrollen, og er delt opp i to filer:

  • nrk.py - Bibliotek for å aksessere NRK Nett-TV
  • nrkfs.py - Koden som oppretter og fórer det virtuelle filsystemet

For å montere filsystemet kjører man enkelt og greit:

./nrkfs.py nrk

Filen må være kjørbar, og “nrk” vil i dette tilfellet bli mappen som skal være monteringspunktet, denne mappen må allerede være opprettet. Gevinsten er ikke vanskelig å forestille seg:

NrkFS

Det er bevisst ikke opprettet noen debian-pakke eller egg-pakke av dette lille prosjektet enda, det får komme etter litt mer testing om det skulle være noen interesse for det.

Håper noen har ønske om å teste dette ut og kan komme med tilbakemeldinger, er svært interessert i det som ikke måtte fungere.

Playing for change - hvor?

Jeg gir opp. De siste dagene har jeg fått en følelse av at “Stand By Me” forfølger meg, og da er det naturligvis fremføringen av “Playing for change” jeg tenker på. Flott sang, flott sammensatt, og spesielt fasinert er jeg av Grandpa Elliott fra Louisiana. Det er virkelig verdt å få med seg:

Det blir litt som “The Internet Symphony” som jeg har store vansker med å høre kun én gang, og når jeg inne på profilen til “Playing for change” vurderer jeg å kjøpe plata siden jeg finner en tekst som sier:

CD/DVD now available at Amazon.com, Starbucks, and everywhere music sold

Noe senere blir jeg derfor ganske paff når Eirik Solheim tvitrer en link til en skjermskyt som minner om snarere det motsatte av “everywhere”:

Some rights reserved, Eirik Solheim

Some rights reserved, Eirik Solheim

Umiddelbart går turen til CDON og Platekompaniet for å se hvordan status er, og her viser det seg at skiven kommer ut i Norge et stykke ut i mai, til tross for at den allerede er sluppet på iTunes den 28. april (i USA).

Jeg må innrømme at jeg ikke lenger er sikker på om jeg ønsker å støtte opp om slik forskjellsbehandling gjennom å kjøpe plata, og det er spesielt et sitat av en smart kar som kommer til meg; “Ikke klag over piratkopiering.”

Ordnett i terminalen

Oppslagsverkene som er tilgjengelig på Ordnett er mye brukt i forbindelse med studiene, men jeg har etterhvert funnet det noe tungvint å skulle benytte nettsidene, dessverre.

I et forsøk på å gjøre Ordnett lettere tilgjengelig for meg selv kodet jeg i høst en liten kodebit som lar meg gjøre oppslag direkte fra terminalen, som jo alltid er oppe.

Bruk av ordnett fra terminalen.

Bruk av ordnett fra terminalen.

Jeg har nå lagt ut denne kodebiten i kildekodekontrollen, og de som måtte ønske å benytte den kan laste den ned. Det er fortsatt noen feil og mangler, men programmet i seg selv gjør jobben. Jeg skal få ordnet med noe versjonering og debian-pakker etterhvert for de som foretrekker det.

For de som måtte håpe at dette er et magisk program som gir ekstra tilganger, så beklager jeg. De som er koblet opp i NTNU sitt nettverk vil få opp alle alternativene som er i koden, mens andre må forvente at tilganger koster penger med mindre nettleverandøren har en avtale.

Bruken av programmet er veldig enkel, for eksempel kan oppslag i norsk-engelsk-ordbøker, oppslag i bokmålsordboka og i alle tilgjengelige se slik ut:

ordnett -ne fritid
ordnett -bok fritid
ordnett fritid

Om noen skulle ta en titt på koden, så vet jeg at ikke alt er like bra, jeg skrev mesteparten kort tid etter at jeg begynte å programmere i Python, men får håpe det blir bedre etterhvert.

Ting som jeg vet mangler:

  • Mulighet for å legge inn innlogging
  • Det er fortsatt en del tegn som kommer opp feil
  • Underveis i formateringen hender det at mellomrom fra nettsidene forsvinner

SSH uten passord

nettverkSSH er en protokoll for sikker kommunikasjon mellom datamaskiner, fortrinnsvis maskiner med BSD, Linux og Mac OS, men kan også brukes fra Windows-maskiner ved å benytte Putty. Jeg ønsker her å vise hvordan man kan gjøre dette på maskiner med BSD, Linux og Mac OS, for Windows; se Putty sin dokumentasjon.

Dersom man ønsker å benytte seg av innlogging over SSH uten passord er det viktig å husket at dersom noen får tak i din private nøkkel vil man også andre kunne logge seg inn som deg.

For å komme i gang må man lage nøklene som er nødvendig, og da åpner man en terminal og skriver følgende kommando:

ssh-keygen -t rsa

Det vil komme opp noe tilsvarende dette, og man trenger ikke lenge inn nye verdier med mindre man ønsker å ha passord på nøklene:

Enter file in which to save the key (/home/brukernavn/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/brukernavn/.ssh/id_rsa.
Your public key has been saved in /home/brukernavn/.ssh/id_rsa.pub.

I hjemmemappen er det nå laget to nye filer:

  • .ssh/id_rsa - Den hemmelige nøkkelen som ikke må gies til noen andre
  • .ssh/id_rsa.pub - Den offentlige nøkkelen som sendes til den andre databaskinen

Nå som nøklene er opprettet er det tid for å kopiere over den offentlige nøkkel til maskinen man ønsker å koble seg til. Skriv inn passordet ditt når du får spørsmål om dette.

ssh-copy-id -i ~/.ssh/id_rsa.pub brukernavn@ssh.domene.net

Nøkkelen din er nå lagt inn i filen .ssh/authorized_keys på den eksterne maskinen. Nå kan du logge deg på uten passord, bare prøv:

ssh brukernavn@ssh.domene.net

Dersom det ikke fungerer, så kan det være at muligheten for innlogging uten passord er slått av den eksterne maskinen.

Husk å ikke strø rundt deg med private nøkler!

Koding uten kildekodekontroll

For første gang på lenge skulle jeg bare programmere litt uten å ha koden i kildekodekontroll. Det var for å se om jeg kunne få det til, og etter litt for kort tid fungerte det nøyaktig som det skulle. Siden koden gjorde jobben sin var det tid for å gjøre litt refactoring. Det var klokka 10, og koden fungerer ikke igjen enda…

Så, for å plukke relevante tips fra boka The Pragmatic Programmer av Andrew Hunt og David Thomas:

(23) Always Use Source Code Control
Source code control is a time machine for your work - you can go back.

(47) Refactor Early, Refactor Often
Just as you might weed and rearrange a garden, rewrite, rework, and re-architect code when it needs it. Fix the root of the problem.

Jeg lover; aldri igjen uten kildekodekontroll.

Hemmelig epost?

Sikkerhet

NRK kunne i dag slå opp at Sverige fra og med 1. januar 2009 kan følge med på hva nordmenn gjør på Internett når nettverkstrafikken går innom Sverige. Dette har vært oppe også tidligere i år, men det ser ut til å utebli løsninger som kan være med på å løse dette nye problemet.

Les mer »

Bachelor i realfag

I dag kom beviset på min gjennomføring av bachelor ved NTNU. Ble litt paff da det var rekommandert sending til meg på postkontoret, og forstod absolutt ingenting før jeg så NTNU sin logo på brevet.

Da er det vel bare til å stå på for å komme seg igjennom også master, får begynne med de to eksamenene som gjenstår før jul…

En titt på Google App Engine

Google kom tidligere i år med noe de kaller Google App Engine (GAE), en tjeneste som lar utviklere lage applikasjoner i Python som kan hostes hos Google. I motsetning til vanlige webhotell er det en del begrensninger som man ikke er vant til fra tidligere hva angår biblioteker.

Google App Engine

Google App Engine

GAE tilbyr ikke en vanlig relasjonsdatabase (som MySQL, MS SQL osv) men noe som kalles Datastore, denne er i tillegg begrenset til å ikke hente ut mer enn maks 1000 poster fra en “tabell”. Biblioteket som Google stiller med støtter heller ikke sesjoner (sessions), men man kan bygge dette ut ved å legge ved egne biblioteker. En annen artig begresning er at koden ikke kan lese eller skrive til disk. Når dette er sagt stiller man med Memcache, noe som kan sammenlignes med delt minne tilgjengelig fra alle instansene som kjører (for Google kan finne på å kjøre opp applikasjonen på mange for å skallere).

Jeg oppdaget GAE gjennom en artikkel i Python Magazine, og fant det utrolig interessant, men av mangel på applikasjoner å utvikle ble det lagt litt på hylla helt til for noen dager siden når jeg kom over en video på YouTube som viste ting i praksis, og da måtte det bare testes.

For å vise litt av mulighetene i GAE skal jeg utvikle en liten applikasjon som viser et tilfeldig sitat fra datastore, og som lar Google sine brukere logge på for å legge inn nye sitater. Det skal også være en link til hvert sitat.

Les mer »