April 27th, 2007
Det begynte med at jeg leste at Python kvitter seg med map-funksjonen sin, siden det samme kan oppnås med list comprehensions. Følgende eksempel var gitt:
[str(round(355/113.0, i) for i in range(1,6)]
Selv om jeg likte eksempelet, og ble fascinert av list comprehensions (som jeg ikke har lest nok om tydeligvis), måtte jeg så klart oversette det til Ruby. Første forsøk ble følgende:
(1..6).map {|i| "%.#{i}f" % [355/113.0] }
Bruken av String#% er ikke så veldig opplagt, med mindre du er kjent med printf-style funksjoner fra C og venner. Men det slo meg så at det ikke (så vidt jeg vet om hvertfall) finnes en metode som gjør det samme som round() gjør i Python. Gir et nytt flyttall med gitt presisjon. I Ruby vil Float#round returnere flyttallet avrundet til et heltall, det er greit, men Float#prec hadde ikke den betydningen jeg hadde trodd … Av en eller annen grunn tar den en klasse, og konverterer flyttallet til denne klassen (kaller klasse.induced_from(obj) med objektet som argument). Hvorfor? Aner ikke. Gadd heller ikke å sjekke. Kjapt og skittent monkeypatchet jeg Float-klassen:
class Float
def to_f(prec=nil)
return self unless prec # kan være en idé med prec.kind_of? Integer
(self * (10 ** prec)).round / (10.0 ** prec)
end
end
Math::PI.to_f 4 # => 3.1416
# Dermed en smule mer leselig:
(1..6).map {|i| Math::PI.to_f(i).to_s }
Grunnen til at jeg erstattet Float#to_f i stedet for Float#round (som kanskje virker naturlig), er at to_f bare returnerer self og dermed er enkelt å endre på uten å ødelegge eksisterende oppførsel (med mindre du regner det som ødeleggende at den tar en ekstra parameter da). round derimot er optimalisert i C for å avrunde flyttall til heltall på en kjapp måte. For å beholde denne hurtigheten måtte man derfor ha skrevet metoden om i C, og det gidder jeg ikke.
Nok en gang aner jeg ikke helt hvorfor jeg endte opp med å skrive dette … list comprehensions var stilig, men så sporet visst tankene mine av en annen plass. Jaja.
Posted in ruby | No Comments »
April 7th, 2007
Så … for en stund tilbake installerte jeg Adobe Reader. Det hender jeg får en PDF som har tegn som ikke vises i Preview.app av en eller annen grunn. Installasjonsprosedyren er forøvrig også ekkel: først laster man ned Adobe Updater, som så laster ned og installerer Adobe Reader. Ikke det vanlige “monter-dmg-og-kopier-til-hvorsomhelst”-opplegget, nei. Det ville jo være helt teit.
Uansett. Hovedproblemet mitt var at jeg under installasjonen valgte å installere en plugin til Safari. Jeg tenkte “hvorfor ikke?” Det er jo ikke sånn at jeg bruker Safari noe nevneverdig uansett. Vel; det viser seg at neste gang jeg skulle forhåndsvise et LaTeX-dokument i TextMate, så dukket det plutselig opp en Adobe-logo som snurret og snurret, men som ikke kom noen vei. Rats! Kompilering og visning av dokumentet er bare for hendig, og teit å ikke ha tilgjengelig.
Etter å ha lest litt i dokumentasjonen til LaTeX-pakken til TextMate, fant jeg ut at dokumentet vises i en WebView fra WebKit-frameworket. WebKit, som er rendringsmotoren til Safari, Apple’s KHTML om du vil, fikser PDFer på følgende måte: Finnes det en plugin som håndterer PDF-filer, ja, så bruker man den. Dersom det ikke gjør det, benytter vi oss av PDF-støtten i Quartz.
Løsningen er mao. ikke verre enn å flytte /Library/Internet Plug-Ins/AdobePDFViewer.plugin til /Library/Internet Plug-Ins/Disabled Plug-Ins/. Problemet var bare å finne ut hvorfor Adobe plutselig dukket opp i TextMate, ettersom det var lenge siden jeg hadde installert Adobe Reader.
Posted in Personlig, apple | No Comments »
April 3rd, 2007
Nå blir det mulig å kjøpe musikk fra iTunes Music Store, også for DRM-hatere som meg! Jeg vet dette er så gårsdagens nyhet, men jeg måtte blogge det likevel. Så gjenstår det bare å se hva den norske prisen blir, når i mai det kommer, og hvilke andre selskaper som henger seg på. Forhåpentligvis kommer alle de mindre selskapene som lenge har villet selge uten DRM til å hoppe inn kort etter.
[...] we expect to offer more than half of the songs on iTunes in DRM-free versions by the end of this year.
– Steve Jobs
Posted in apple, ipod, musikk, verdensveven | No Comments »
March 12th, 2007
Today’s code snippet:
char *string = "raise StandardError 'LOL' \\n";
char *buffer;
int err;
// evaluate ruby code in string
rb_eval_string_protect(string, &err);
if (err) {
// store $!.to_s (last exception as string) in buffer
VALUE exception = rb_get_gv("$!");
buffer = RSTRING(rb_obj_as_string(exception))->ptr;
} else {
// store $stdout.output_buffer to string
// (requires you to replace $stdout of course)
VALUE b = rb_funcall(rb_gv_get("$stdout"), rb_intern("output_buffer"), 0);
buffer = RSTRING(b)->ptr;
}
printf("%s\n", buffer);
fun_call(”Programming Ruby in C is nearly as fun as programming Ruby in Ruby … although not quite as well documented. Use the source, Luke!”);
Posted in ruby | 1 Comment »
March 12th, 2007
Søndag er visst dagen å blogge ting, så jeg slår til jeg også:
Den driver riktig nok og laster ned noe greier … men jeg føler likevel at 1.6 GB i virtuelt minne er nok til å faktisk gi brannreven en liten pause. Problemet er vel bare at før den er ferdig med å laste ned det jeg venter på har jeg allerede åpnet et ukjent antall faner igjen …
Posted in Bilder, Personlig, apple, verdensveven | No Comments »
February 25th, 2007
Meta kommer fra gresk, μετά, og betyr der “etter/forbi/med” eller noe slikt, men også:
meta |ˈmetə|
adjective (of a creative work) referring to itself or to the conventions of its genre; self-referential.
[...]
A prefix meaning one level of description higher. If X is some concept then meta-X is data about, or processes operating on, X.
Ordet meta og dets betydning er egentlig ganske fascinerende. Jeg har grublet litt på det i ny og ne, og i dag kom igjen en ånd over meg, og jeg gikk nok en gang inn i en tankerekke omkring dette. Selv om meta-prefikset kan bety “forbi” (engelsk: beyond, forklarer kanskje hvorfor wordpress og andre blog-motorer har RSS-feeds under overskriften “meta”) og brukes om f.eks. et fagfelt hvor betydningen da blir en dypere, mer inngående studie av dette, er det meningen over jeg hovedsaklig tenker på: “en X om X”.
Read the rest of this entry »
Posted in artikler, ruby, verdensveven | No Comments »
February 9th, 2007
Har hatt i tankene å nevne dette en stund, men: WWW Må Døy!
Ikke bare må www dø, men folk som tvinger meg til å skrive www for å nå nettstedet deres burde også straffes offentlig! Jeg kan ikke se én god grunn til å bruke www. Alle vet jo at det er verdensveven vi surfer så lenge vi bruker HTTP.
Lenge leve no-www.org!
PS: snuskete.com er nå et “klasse B-domene”; et domene som oppfordrer folk til å droppe bruk av www (men så er det også liten vits i å besøke snuskete.com. Tipper noen kontrer med min overdrevne bruk av subdomener :P).
Posted in Personlig, denne siden, verdensveven | 4 Comments »
January 24th, 2007
Så tilbake til noe jeg gidder å skrive noe om … tror jeg. Ettersom jeg skulle holde foredrag i HiGLUG tenkte jeg at det var på tide å realisere en plan jeg har hatt i bakhodet over lengre tid, men som har blitt utsatt gang på gang, ettersom jeg faktisk klarer å leve ganske bra med OS X. Jeg installerte Ubuntu på iBooken min.
Jeg hadde på forhånd reinstallert OS X og partisjonert opp plass til Ubuntu, og alt så bra ut. Installasjonen gikk greit nok: jeg gikk tom for batteri under der en plass, men det gikk fint å starte installasjonen på nytt. Det som ikke gikk så fint var å benytte seg av plassen jeg hadde partisjonert opp. For å si det kort: jeg overskrev deler av partisjonen med OS X på, og endte opp med å være ute av stand til å det opp igjen. Jaja. Godt jeg ikke hadde tatt backup. Enda bedre at jeg har en backup liggende hjemme hos min far. Ikke fullt så bra at det er en ~20GB stor fil. Jaja. Tar det på sikt. Tror det verste som gikk tapt var musikk. Dokumentene jeg ikke hadde andre plasser har jeg ikke bruk for nå.
Back to the case: Ting fungerer for det meste smuud (nok). Suspend og slikt fungerer “ut av boksen”. Knapper for å justere lysstyrke på display, volum og ejecting av cdrom og slikt er også gull. Låsing av skjerm og slikt fungerer akkurat som man forventer at det skal. Etter å ha lekt litt med xmodmap har jeg også mappet om knapper slik at ting er på plasser jeg har blitt vant til å ha dem. I tillegg har jeg gjort det lettere å skrive greske symboler (du vet … αβφ osv) siden det er en del forelesere som liker å bruke dette i undervisningen. I samme slengen måtte jeg så klart mappe ♥ til en tast også.
Unntak: Touchpaden har ikke vært helt venn med meg. Jeg foretrekker tap for klikking, så slipper jeg å bruke knappen. Har ikke fått det til enda. Jeg har høyre- og hjulklikking ved å tappe med henholdsvis to og tre fingre, så hvorfor jeg ikke får tappe med én finger for venstreklikk. Jeg slet også en stund med at jeg ikke hadde to-finger-scrollingen som er i OS X, men det var heldigvis en opsjon til synaptics-driveren som het VertTwoFingerScroll som fikset biffen.
Unntak: wlan er tidvis noe herk. Broadcom fortjener å brenne for å være så teite som de er. Det er et prosjekt som baserer seg på å bruke firmwaren som er tilgjengelig i OS X, men det er ikke helt stabilt akkurat. Kjører f.eks. bare på 11Mb, og ikke 54, som kortet støtter. I tillegg hender det at driveren setter raten ned til 1Mb helt av seg selv og uten grunn. Å koble til wlan er en historie for seg selv. For å ha gode sjanser for at det skal gå må man skrive noe slikt som:
sudo iwconfig eth0 rate 11M
sudo iwconfig eth0 ap any
sudo iwconfig eth0 essid NETTVERKSNAVN
sudo ifup eth0
Trenger sikkert ikke alt, men det er like greit å kjøre hele besvergelsen, så har man hvertfall gjort det. Man har det så klart i et script.
Siden jeg likevel skulle bytte fra ett system til et annet fant jeg ut at jeg skulle prøve en annen vindusbehandler også. Har snust litt på wmii, og ettersom den er relativt lett å scripte i ruby er jeg allerede i gang. Tipper jeg kanskje skriver litt mer om det senere.
Posted in Personlig, apple, linux, ruby | No Comments »
January 24th, 2007
Skole: studass-greier kolliderer med øvingstimer i ett fag. En foreleser ser ut til å ville kaste meg på en gruppe hvor det er en annen foreleser i et annet fag. Motivasjonen synker igjen.
Jobb: Tjah. IT er OK. BPKS er OK. Studass er flott.
Huset: Tjah. Usikker på hva som skjer.
Ellers er jeg trøtt, og lider på mangel av Jack Bauer … WILLFIX!
Posted in Personlig, jobb, skole | No Comments »
January 14th, 2007
Sikkerhetsledelse: A
Sikkerhetsarkitektur: C
Kryptologi: FAILED
A-en er sikkert ikke verdt en dritt, ettersom sikkerhetsledelse er et av de største tullefagene jeg har hatt, og karakteren i sikkerhetsledelse ble bare reddet av en B på oppgaven om sandkasser.
Posted in Personlig, skole | No Comments »