OK. Det er lenge siden jeg skrev noe her, og enda lengre siden jeg skrev noe saklig her. Tenker vi får gjøre noe med det ved å skrive noe som bare er delvis interessant.
Jeg har fått jobb. Lurer litt på hvordan dette kommer til å virke inn på skole og slikt, men jeg kunne hvertfall godt trenge de ekstra pengene jobben gir meg. Spesielt med tanke på at jeg må betale strøm i tillegg til husleien på plassen jeg bor nå.
Når man arbeider må man ofte skrive timelister. Noen velger å gjøre dette for hånd. Det er vel og bra. Noen velger å skrive dette i regneark, som OpenOffice Calc, men jeg liker ikke regneark (spesielt ikke siden nevnte program tar en evighet å starte). Andre igjen benytter seg av vanlige tekst-filer (eller gud forby: word-dokumenter). Tekstfiler hadde vært OK for meg, men jeg er så glad i Ruby at jeg vil ta det et steg videre.
I Ruby er det forholdsvis enkelt å opprette såkalte DSLer. Dette er “kvasispråk” som omhandler et lite tema; f.eks. skriving av timelister. I bunn og grunn er det vanlig Ruby, men med metoder som gjør det mulig å skrive koden på en måte som ikke nødvendigvis ser ut som Ruby, men som er lettere å forstå/lese (se også syntaktisk sukker på Wikipedia). Først et eksempel på hvordan jeg nå kan skrive timelisten min:
require 'timeliste' # Inni her ligger "magien"
puts Month.new("September") {
# 4. september: 12 til 20
d4 "12:00" => "20:00"
# 5. september: 12:30 til 20
d5 "12:30" => "20:00"
# Jeg kunne også ha skrevet:
# day 4, "12:00" => "20:00"
}
Kommentarene trenger jeg strengt talt ikke, siden koden i stor grad gir seg selv. Poenget er uansett å opprette et objekt for måneden ved å bruke Month-klassen, så sende en kodeblokk som sier hvilke dager jeg jobbet, og hvor lenge. Jeg brukte en Hash for å angi start- og slutt-tid, siden syntaksen for Hasher bruker en “pil” mellom nøkkel og verdi, og det dermed lett kan leses som “fra => til”. Grunnen til puts før oppretting av objektet, er at vi dermed kaller objektets to_s-metode, og dermed får en oversikt og sum av timer jobbet.
(more…)