NRK som filsystem

Oppdatering: Koden er kopiert over til eget prosjekt på GitHub, benytt informasjon på GitHub for å komme i gang. Denne postingen er utdatert.

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 på GitHub, 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.

Oppdatering: Debian-pakke er tilgjengelig for nedlasting fra GitHub sammen med instruksjoner for installasjon.

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 på GitHub, 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.