Borgar.net

— Jump to the navigation index

Latest entries

Monday, 4. Aug 2008

Contrived

From the wikipedia entry on Baa, Baa, Black Sheep:

In more recent politically correct times, the nursery rhyme has come under criticism for having racially discriminatory undertones. [...] More recently, in 2006, a nursey school in Abingdon, Oxfordshire, England have contrived a version which contains the phrase “rainbow sheep”. They claim this was for “educational reasons” and not for any reasons concerning race discrimination.

The subtle use of the word contrived in the quote is simply delightful. For those of you not entirely familiar with the word, here are two entries from my dictionary.

Contrived
“Deliberately created rather than arising naturally or spontaneously.”
“Manage to do something foolish or create an undesirable situation.”

The whole “racially discriminatory” thing is farcical of course, as the rhyme may date back as far as the middle ages. Effectively predating modern racial hate by a good couple of hundred years. Additionally, in it’s older-ending form the rhyme criticized social imbalance:

Two for the master,
one for the dame,
but none for the little boy
who lives down the lane.

I’ve long since stopped expecting people to stop and think about their actions (I certainly know how frequently I fail at this). But wikipedia user 213.9.220.254, who so beutifully selected contrived in that excerpt; I salute you!

Published: 4. 8. 2008 23:16. Tagged: , .

Sunday, 15. Jun 2008

JSON for old PHP installations

I use PHP a lot. Mostly to work with existing products, or to create mockups of things that will get replaced with something else later.

The great thing about PHP is that it is present in some form on nearly all servers. If you’re careful to avoid version 5 features then you can pretty much expect your code to run wherever.

For a recent prototype I needed JSON (which wasn’t introduced to PHP until version 5) on a 4.3 system. Being a relentless do-it-yourself’er I have written a tiny JSON functionality “library” for older versions of PHP.

It’s about 5k of mostly comments. Available under MIT licence from Google code. Have fun.

Published: 15. 6. 2008 14:30. Tagged: , , , , .

Thursday, 29. May 2008

Node members or Node attributes

Having given it a bit of thought I think that this problem stems from a slight confusion as to how DOM nodes’ attributes work.

You would expect javascript code to execute when you apply it to an attribute:

someNode.onclick = "alert('foo');";

And you expect this to work because this is exactly what you do in your HTML. And in some browsers it does. Some browsers.

I don’t know another way to say it, maybe there is someone who can fix my terminology but here’s the thing: Element attributes are different from node members.

I remember all to well the grief this caused me when I started working with DOMnodes in Javascript. Sooner or later, you will run into these inconsistencies. The browsers also try their best at blurring the difference between attributes and members. Which is helpful when you know how it works.

Consider this CSS:

input[type="text"][value=""] { background: teal; }

It colors an empty input field. But why doesn’t the field update when you type text in the box? theInput.value gives you whatever you typed in there.

This is because .value is a node member that contains what is displayed in the box, while the actual attribute contents are exposed on .defaultValue, which incidentally is what [value] is examining (and what is copied to .value should the inputs form be reset).

With onclick, the node has a .onclick member that is a reference to a function (or null). When the HTML is parsed into a DOM tree, any code in onclick attributes is turned into an anonymous function and a reference to it is placed on the onclick member of the node.

So why does the following code fail in MSIE?

someNode.onclick = "alert('foo');";

Because MSIE doesn’t evaluate the string as it is placed on the member. The onclick becomes a reference to a string and if the event occurs MSIE will complain because effectively we’ve just tried to do this:

"alert('foo');"();

Does this make any more sense, or did things suddenly get more complicated?

Published: 29. 5. 2008 23:22. Tagged: , , .

laugardagur, 26. apr 2008

Hver á opinber gögn?

Kunningi minn, Hjalli, hefur verið að taka ögn af óverðskuldaðri gagnrýni fyrir að þurfa að framfylgja lögum um höfundarétt fyrir stofnun sem hann starfar fyrir. Hann er í þeirri óþægilegri stöðu því að á sama tíma og hann neyðist til þess að passa það að höfundarréttarvarin opinber gögn séu ekki afrituð, er hann í dag einnig ein háværasta rödd þess hóps sem vill sjá hið opinbera skapa sér opna stefnu að opinberum gögnum.

Eins er það kaldhæðnislegt að þeir sem hafa mestar áhyggjur af móðurmálinu, íslenskufræðingar, skuli vera skuldbundnir til þess að liggja á þeim gögnum sem best geta nýst í sköpun tóla eins og ókeypis villuleitarforrita, og þar með hlúð að tungumálinu.

Þetta á ekkert bara við um Íslenska Orðabók. Ég er viss um að margir Íslendingar kynnu að meta það að Google-maps kynni hnit og kennileiti í helstu borgum á Íslandi, eða hefði í það minnsta kortin inni svo notendur geti sjálfir sett inn kennileiti. Google verða auðvitað að fá gögnin einhver staðar frá, en þau, eins og Orðabók Háskólans eru lokuð, læst, og háð erfiðum notkunar samningum og/eða gjaldi.

Ég þekki það af eigin raun hversu ergilegt það er að komast ekki í svona gögn. Rímorðabókin mín líður fyrir það að engin nothæf frjáls íslensk orðabók er til.

Það er kannski heppilegt að þjóðskrá, bifreiðaskrá, og þessháttar persónutengd gögn séu ekki öllum gefin. En fyrir öll önnur gögn sem ekki koma einstaklingum við, eða eru ekki bundin lagafjötrum, er það beinlínis skylda Ríkissins að gefa almenningi sem greiðastan aðgang að.

Það rýrir hvorki gögnin né viðkomandi stofnanir að slík afrit séu gefin. Þvert á móti eykur það vegsemd og gildi stofnanna að vera í góðu sambandi við hópa og einstaklinga sem fást við nýsköpun. Það er vegna þess að notkun á svona gögnum varpar ljósi á villur eða gloppur í þeim, sem geta gengið sem lagfæringar eða tilkynningar til baka til stofnanna.

Það er algjör óþarfi að margir aðilar séu að keppa um framleiðslu á gagnagrunnum sem hið opinbera á nú þegar. Því hagnast allir á svona fyrirkomulagi, ef ekki peningalega, þá hreinlega í vinnu eða tímasparnaði. Í eins litlu samfélagi og okkar þá getur það skipt sköpum. Samanber hvernig á meðan Mál og Menning gefur út þægilegar kiljur af íslendinga sögum, þarf Námsgagnasofnun ekki að standa í því.

Það er, að ég tel, engin raunveruleg ástæða fyrir því að þessum gögnum er “haldið frá” almenningi. Það er einfaldlega engin mótuð stefna til. Ég veit fyrir víst að Orðabók Háskólans er alvarlega svelt tæknimönnum, og sennilega fé. Líkast til á það við um flestar þessar stofnanir. Ef tekin væri yfirlýst opin stefna á ríkisgögn þá mætti hugsa sér að þeir sem hagsmuni sjá í, eða hafa af, því að nota gögnin geti komið að því að hjálpa viðkomandi stofnunum við að koma þeim í útgáfu.

Það geta flestir, ef ekki allir, verið sammála um að þetta er góð hugmynd. En hvernig á að koma slíkri stefnu á? Einhverjir meðlimir RGLUG og Wikipedia hafa stofnað FSFÍ, Félag um stafrænt frelsi á Íslandi. Það hljómar eins og þrýstihópurinn sem vill taka á þessu máli. Það gæti verið góð hugmynd að flykkja liði undir hatt FSFÍ?

Ég bendi á að Forsætisráðuneytið er þegar búið að láta kanna Opin hugbúnað og komast að þeirri niðurstöðu að hann geti verið góður valkostur sem “skili sparnaði og auknu rekstraröryggi”. Ég get því miður ekki skoðað hvað lögbundni staðallinn Íslenskar kröfur um upplýsingatækni hefur um málið að segja, því að hann er læstur bak við 4.353 kr.

Af samskiptum mínum við Ríkið og sveitarfélög hefur það verið ánægjulega áberandi að þau leitast við að nota opna staðla. En það er eins með Opinn hugbúnað og Gleðibankann, það dugir ekki að taka bara út, það þarf líka að leggja inn.

Published: 26. 4. 2008 15:05. Tagged: , .

þriðjudagur, 22. apr 2008

Mjólkuróþol og kostnaður þess

Ég var að taka á móti sendingu af mjólkur­mót­eiturs­pillunum sem ég háma í mig til þess að koma í veg fyrir einkenni mjólkuóþols. Eins og áður hefur komið fram panta ég pillurnar frá bandaríkjum í gegnum netið.

Eitthvað var ég smeikur við að núverandi efnahagsástand hefði áhrif á kostanaðinn í þetta skiptið. Svo reyndist vera.

Svo skemmtilega vildi til að ég varð uppiskroppa með töflur á meðan ég var að bíða eftir sendingunni, og í einhverju hádeginu neyddist ég inn í Lyfju á laugarvegi. Ég gapti þegar afgreiðslukonan hljómfærði verðið og át það upp eftir henni: 4.483 krónur.

Þær amerísku hafa hins vegar lækkað frá því að ég reiknaði þetta saman síðast. Það er af því að ég pantaði 5 pakkningar sem lækkaði hlutfall sendingarkostnaðar í heildarverðinu.


Svona standa stigin í dag:

Lactasin Lactaid
“Kraftur” pr. pillu 3300 9000
Pillur pr. pakka 100 60
Verð pr. pakka 4483 kr. 1994 kr.
Verð pr. pillu 44.83 kr. 33.2 kr.

Þetta þýðir, dömur mínar og herrar, að mér hefur tekist að lækka kostnaðinn á bandarísku pillunum um 11% á meðan það eina sem íslensku apótekin hafa uppá að bjóða hefur hins vegar hækkað um 60%.

Published: 22. 4. 2008 23:25. Tagged: , , .

fimmtudagur, 10. apr 2008

Þekkið þið þessar stelpur?

Auglýsing frá einhverjum drullusokki.

Mér finnst það nú eignilega með ólíkindum að ég hafi yfirleitt séð þessa auglýsingu. Ég hélt að ég væri orðinn algjörlega blindur á þetta. Mér finnst ég kannast eitthvað aðeins við eina af þessum stelpum.

Published: 10. 4. 2008 21:49. Tagged: , .

miðvikudagur, 27. feb 2008

What is the column index of a table cell

A peculiar but fascinating problem presented itself to me today. It was one of those; “oh yeah, I’d better look at that” kind of problems that you think you’ll solve in a few minutes but eventually grow to take hours.

Given a cell in a HTML table, what is it’s column index?

This seems like it’s simple. You just count the cells preceding it. Fine. Works for 99% of cases. But what if the table looks like this?:

cell 1 cell 2 cell 3 cell 4 cell 5 cell 6
cell 7 cell 8 cell 9 cell 10
cell 11 cell 12 cell 13
My index? cell 15

Suddenly things are very complicated again. The last row really only contains two cells and the browser reports cell indexes 0 and 1 on those, respectively. Not the 3 and 4 I was hoping for.

My first thought was simply adding up the number of cells preceding this one which had a greater row index + row span than the row index of my subject cell. This doesn’t work because of cells like #4 & #13.

Eventually I simply ended up with a brute force method that does the job. But is unfortunately neither fast nor elegant. But then, what code of mine is?

It’s presented here in case anyone else needs to solve the same annoying problem. Or if anyone can suggest a nicer (or preferably a faster) method of doing this.

View demo and code.

Published: 27. 2. 2008 0:36. Tagged: , .