2008-04-06

Ack Xlib du sköna!

I morse tröttnade jag definitivt på bloatet som kallas Gnome och gick tillbaks till min gamla vän Windowmaker. Igen. Alltså, in med Windowmaker, ut med bekvämligheten. Ska man köra Windowmaker ska man inte vara rädd för att pilla i configfiler, även om det inte är strängt taget nödvändigt. Men det finns lite andra problem att fixa, som min gamla favorit, att byta mellan svensk och engelsk tangentmappning. Förra gången jag körde Windowmaker så löste jag det från kommandoraden: "se" ger svenska tecken, "us" ger engelska (det där har att göra med vad tangentmappningarna kallas av systemet, inte att jag tror att USA ligger i England, eller vice versa).

Den här gången valde jag en annan väg: hur svårt kan det egentligen vara att skriva en liten sådan där dockapp? Om man bara tar en befintlig och modifierar den för sina egna hårdkodade ändamål så borde det väl inte vara så svårt? Nej, det var det inte. Jag plockade en som hette wmbuttons, som ger en ett gäng knappar för att köra olika kommandon, och började mixtra med koden.

Det tog några timmar, fast det inkluderade surfande på google pictures efter bilder på svenska och engelska flaggor (5 minuter) och en rejäl uppstädning av koden (större delen av tiden). Hurra för fri mjukvara: jag har nog inte sett så dålig kod sedan jag lämnade universitetet. Eller vad sägs om nästlade switch-satser, där den inre switchen kollar efter vilken musknapp man tryckt ner, och sedan gör samma sak oavsett vilken det är. Fast i tre olika cases, och med identisk kod i varje fall. Och detta på två ställen, precis efter varandra. Jag är uppenbarligen inte mållös, men det lär ha mer att göra med mig än med koden i fråga.

Sen har vi de andra klassikerna: den enorma main-funktionen, där i stort sett all funktionalitet finns, en stor mängd globala variabler, helt ovettig ordning på (de fåtaliga) funktionerna, onödiga omritningar, kommentarer i koden som bara berättar vem som skrivit delar av den, hjälp-meddelandet som skrivs ut på stderr, blajiga debug-utskrifter (typ "Bye!" när man avslutar), hårdkodade koordinater i utritningsfunktionen, lyssnande på onödiga events och slutligen, min personliga favorit: buffer overflows i argument-parsningen.

Men fick jag ut något av det då? Jodå. Jag lärde mig lite mer om bazaar, framför allt hur bekvämt det är att använda distribuerade versionshanteringssystem till små, enkla projekt. Nu finns det ingen anledning alls att inte versionshantera sin kod. Jag lärde mig lite om det allmänt bespottade Xlib, som i och för sig är gammaldags och lite knöligt, men som jag (med en hel förmiddags erfarenhet) tycker verkar ha fått ett oförtjänt dåligt rykte. Och så att xpm-bilder definieras i C-syntax, som man kan inkludera direkt i koden. Döm om min förvåning när jag öppnade en i vim och kunde se själva bilden, wysiwyg, direkt i editorn. Helt crazy och en manifestation av total unix-coolhet.

Annars då? Jodå, s'att, men det...

2 kommentarer:

Anonym sa...

kom igen nu. i windows har man inte det här krångelt och dom har väldigt bra programmerare. där skulle det inte finnas buffer over run och annat för dom har ett fokus på säkerhet och använder _managed code_ det innebär att en liten virtuell maskin tar hand om saker och så slipper man alla memory errors och liknande som gör en tokig. dess utom har dom .net som gör att man inte behöver skriva allt från skrach.

folk klagar på micro soft hela tiden och säger linux är bättre. men det är ju inte sant! kom in i laget grabben och börja använda det där finns en stor community som alla codar och därför kan man få hjälp om man inte fattar. då behöver du inte heller skriva egen kod för att byta tangent bord det är väldigt enkelt ändra i registeret. mvh leif

ul7 sa...

Bye!