Andreas Bach Aaen Innovation og Open Source

12. november, 2010

En tilfældig samling

Filed under: ideer,småsnak — andreas @ 7:00

Træbiler med mælkelågshjul

Min ældste søn er startet i skolen. Blandt de uanede mange nye indtryk og konkrete ting at forholde sig til er skolemælken. Den dominerende svensk/danske mejerikoncern “Orla” leverer nu om stunder skolemælken i engangsplastbøtter med skruelåg. Af uransagelige grunde begyndte min søn at samle på disse plastlåg. I en weekend indfandt ideen sig. Lågene blev til hjul hvis man satte dem sammen to og to. Så gik der Jørgen Clevin i den. Jeg lavede en tegning af nogle biler sammen med børnene og tog dem med på værkstedet. Her blev bilerne tegnet over på nogle reststykker træ. Rent faktisk, så er det noget af den bordplade jeg fik tilovers, da jeg lavede den krumme bordplade til køkkenet. Til racerbilerne brugte jeg også nogle stumper malerrørepinde. De holder bedre end ispinde. Så frem med høreværn, stiksav og boremaskine. Ret hurtigt havde vi flere biler end vi havde hjul til, så nu gik kampen om at samle låg ind i spisefrikvarteret. Kendere vil kunne genkende hvilke mælketyder der er blevet konsumeret for at kunne lave de viste biler. I alt 7 liter mælk. Som farvene antyder, så er der ikke tale om knap 6 ugers indsamling af egne mælkelåg, men derimod en hurtig indsamling af klassekammeraternes mælkelåg.

30. oktober, 2010

Fra ide til mockup i fuld størrelse

Filed under: ideer,småsnak — andreas @ 7:00

fotomanipulation af bro over Ringvejen
For godt et år siden år siden var jeg til et forældremøde i mine børns børnehave her i Århus V. Her kom det mig for øre, at pædagogerne var utrykke ved krydse Ringvejen med børnene, når de skulle bruge idrætsfaciliteterne i Globus1 på den anden side af Ringvejen. Teknisk forvaltning så det ikke muligt at regulere yderligere på længden af den grønne lys, så der kunne blive bedre tid til børnene til at nå hele vejen over Ringvejen frem for at havne på den smalle helle på midten. Pædagogerne måtte ty til det upædagogiske trick at bede børnene løbe over vejen. Ringvejen er en hovednerverne i Århus. Her passerer 28.800 biler i døgnet i de fire spor med op til 70 km/h, så det er ikke sådan lige til, at give ekstra prioritet til nogle ganske få svage fodgængere. Min tanke var så: “Jammen hvorfor er der ikke en bro eller en gangtunnel der? Det er der jo masser af andre steder langs Ringvejen.

Ringvejen i Århus er anlagt forholdsvis sent, så da den endeligt bliver anlagt i 1980’erne, så laver man selvfølgelig gangtunler og broer, der hvor villaveje skæres over, hvor skoledistrikter brydes, eller hvor der nærliggende idrætsfaciliteter. Så hvad gik der galt i med adgangsforholdene til Idrætsfaciliteterne i Globus1?

Globus1 kom til efter Ringvejen. Globus1 ligger op af Gellerupparken og var tænkt som en magnet i området, der også gerne skulle tiltrække folk udenfor Gellerupparken. Det er så lykkedes. Hvad der ikke lykkedes var at få distriktskolen i Gellerupparken nemlig Nordgårdsskolen til at fungere tilfredsstillende. Politikerne valgt at nedlægge skolen og splitte skoledistriktet op og med busser sprede eleverne til kommunens øvrige skoler. Børn fra de nærmeste opgange nær Globus1 har været så heldige, at komme til at høre til den nærliggende Gammelgaardsskolen på den anden side af Ringvejen. Så hvis ringvejen skulle anlægges i dag, så ville der være mindst 2 gode grunde til at der skulle være en gangtunnel eller bro nær Globus1. Gode adgangsforhold til idætsfaciliteter og et sammenhængende skoledistrikt. Så det var da bare at skrive til kommunen og gøre dem opmærksomme på denne uhensigtsmæssighed?

Jeg fik lavet  en kollage baseret på Google maps. Det er jo ganske nemt med et tegneprogram (Gimp), at kopiere en bro fra et sted på Ringvejen til et andet. Der gik et halvt års tid, hvor jeg ikke fik gjort yderligere noget ud af det. Så kom muligheden. Århus kommune lavede en høring på deres Helhedsplan for Gellerup. Denne plan går i store træk ud på at løse op for Ghettoproblemerne med arkitektoniske midler. I øjeblikket går debatten om dette overhovedet er muligt. Om ikke andet så benyttede jeg muligheden og lavede i samarbejde med skolebestyrelse og dagtilbudsbestyrelse et høringsvar til Helhedsplanen.

“Byg bro til Gellerup”, blev overskriften. Den lokale reklamebaserede gratisavis slugte høringssvaret råt, som så mange andre pressemeddelser.Også Gellerup fællesråd tog godt imod forslaget. Nicolai Wammen og de andre lokalpolitikere synes også om ideen, omend de selvsagt var forbeholdne overfor hvadsomhelst, der kan ricikere at koste penge.

Dernæst gik der igen nogle måneder.  Det blev september og Århus Festuge. Pludselig var ideen taget op og virkeliggjort som fuldstørrelse mockup. Helt fantastisk, at se andre kæmpe for den ide, som jeg fik sat ord på og spredt. Det hele startede jo bare med en pædagog, der ønskede at kunne bringe børnehavebørnene sikrere over vejen.
Nabro
Århus Festuge 2010 havde Naboer som tema, de tog broideen op. Byggede en midlertidig bro og kaldte den for Nabro. Dette gav presse. Der kom artikler i Politiken, Århus Stiftstidende, Jyllandsposten, Lokalavisen/Århus og andre mindre portaler og blogs. Jyllandsposten var dog i sædvanlig stil i deres leder forudindtaget og sukkede over konstruktionen.

Mockupen er nu væk igen.  Men mon ikke den rigtige bro kommer på tegnebrædtet igen – måske som en tunnel i stedet.

14. juli, 2010

Vektortegning med Linux

Filed under: linux — andreas @ 7:00

Inkscape

Der blev en, der blev to, der blev tre, der blev fire – og ja så er det ikke alt der skalerer længere. Tidligere havde jeg bestilt et dørskilt i messing hos print2people.dk. Super duper, men formatmæssigt så fungerede det ikke ret godt når der skulle presses 6 navne ind. to går fint, fire kan lige gå men seks navne nixen biksen. Der måtte også godt være lidt personligt over skiltet, så et skift til et andet materiale og print/præge teknik kunne åbne op for nye løsninger. Jeg faldt over Designselvskilte.dk, der for rimelige penge kan lave skilte i valgfri formater med folieprint. Vigtigt var det, at man kunne oploade sin egen pdf-fil og få det printet ud. Jeg besluttede mig for sort print på en hvid aluminiumsplade. Så var det blot at finde et godt tegneprogram frem. Tilbage fra min tidlige studietid, der var jeg ret glad for CorelDraw 2.0. det havde en masse skæge fonte, som man kunne hive i, fordreje og meget mere. Alt sammen vektorbaseret, så resultatet altid så godt ud rent teknisk. De senere versioner af programmet blev voldsomt stort, bagud kompabiliteten røg. De sjove fonte blev skiftet ud med nogle mere kedelige standardfonte. Corel blev opkøbt og CorelDraw endte som et hjørne i en kontorapakke og fik ikke længere den rette opmærksomhed.

Så jeg gik på jagt efter et 2D vektortegneprogram til Linux, der funktionalitetsmæssigt svarer til hvad CorelDraw 2.0 kunne præstere. Det viste sig, at der ikke var så meget at vælge i mellem. tidligere havde jeg brugt Sopodi. Men den er i mellemtiden bleve overhalet af udbryderprojektet Inkscape. I KDE lejren har man kunnet finde Killustator, der blev til Kontour, der så igen blev til Karbon14. Ingen af disse programmer har dog opnået en stabilitet og passende opbakning fra en udviklergruppe til at bringe dem videre. Så det blev Inkscape jeg prøvede kræfter med.

Inkscape er ganske nem at gå til. Den kan det jeg ønskede. Det viste sig dog, at man lige skal huske, at sætte DPI-opløsningen når man eksporterer til pdf-format. Man kan ikke se forskel når man ser pdf-filen i xpdf. Men den pdf-render designselvskilte.dk benytter kunne i alt fald godt.

Jeg fik tegnet mit dørskilt og sendt pdf-tegningen til designselvskilte.dk. En god uge efter fik jeg et skilt med posten, hvor alt var gået galt. Uskarp farve, bobler under folien og så en lav opløsning. Øv øv. Opløsningen kunne jeg selv gøre noget ved, men resten det var der kun designselvskilte.dk at klandre for. Jeg brokkede mig høfligt og fik på baggund af en ny og bedre pdf-eksportering lavet et nyt skilt uden beregning. Her var alt ok. Skarp sort farve, høj opløsning og ingen bobler mellem plastfolien og aluminiumspladen. Jeg håber de kan ramme dette niveau fremover, for i givet fald er de klart at anbefale.

6. juli, 2010

3D visualisering

Filed under: linux,tilbygning — andreas @ 6:00

3D visualisering med papir

En tilbygning til parcelhuset kan nemt koste flere hundredetusinde kroner, så det vil jo være surt, at få dem brugt forkert. En god visualisering kan måske afhjælpe dette. Jeg har prøvet et par muligheder af. Først prøvede jeg Sweethome3d. Et smart java-baseret program, hvor man forholdsvis hurtigt kan designe et etplanshus og derefter bevæge sig rundt i det i 3D. Det er dog bestemt ikke alle grafikkort og drivere programmet kører godt med, så det er crashet for mig for et godt ord. En tidligere kollega, har dog været ret glad for det, så han har haft en heldigere hardware og software kombination. Man kunne sikkert også kaste sig over Blender, men det at skabe sine byggeelementer og bygge et virtuelt hus op er en ret stor tidskrævende opgave, så i første omgang valgte jeg en oldschool løsning.

3D visualisering

Jeg printede en stak 2D tegninger ud af huset grundplan og dets facader, som jeg havde tegnet i Qcad. Så var det med at komme i gang med saks og lim. Så en 3D model i papir var en realitet på en enkelt aften. Nu er det nu ikke sådan, at bare fordi man har adgang til en masse fantastisk Open Source software her i blandt CAD programmer, samt en smule flair for at klippe og klistre med papir, så er artitekten ikke sparet væk.Det er blot ikke nogen skam at være velforberedt. Når vi på et tidspunkt finder en artitekt, så er der stadig eget at tage stilling til. Optimal dimentionering af rum, placering af vinduer for at sikre godt lysindfald, materialevalg, sikring af rette papirer i forhold til en byggetilladelse og meget andet. Lidt ingeniørarbejde med konstruktionsberegninger skal der også til.

5. juni, 2010

Ung børnefamilie med blebørn

Filed under: IT-politik — andreas @ 8:00

Blekassetårn

På den ene side kan man undre sig over, at myndigheder ønsker at blande sig i hvilke oplysninger private firmaer som Google og Facebook gemmer af oplysinger om deres brugere. Det står jo en frit for at vælge om man vil benytte disse firmaers tjenester – og dog. Når først udbreddelsen er voldsom nok, så kan det være problematisk ikke at være med, også selv om man ikke er begejstret for hvad de gør ved ens personlige oplysninger. Det er jo ikke sikkert det er sjovt at være den teenager, der som den eneste i klassen ikke er på Facebook. Så der børs stilles krav, og i særdeleshed diskuteres offentligt, hvad der er rimeligt og hvad der ikke er.

I den danske andedam, har FDB lanceret en nyt medlemskort kaldet CoopPlus. Den væsenligste nyhed er, at de i modsætning til deres gamle medlemskort, nu vil gemme alle kasseboner i 5 år. Med medlemsnummeret som nøgle, vil de lave indkøbsprofiler og lave tilrettet markedsføring. FDBgiver i deres materiale et eksempel på hvad de vil gøre med dataene. Man kan f.eks. blive kategoriseret under indkøbsprofilen “ung børnefamile med blebørn”. Men med alle indkøbsdata samlet hen over 5 år, så kan der ret sikkert laves mere rafinerede kategorier end “ungbørnefamile med blebørn”. Hvad med kategorien: “slikhungrende enlig med mindst 3 fejlslagne slankekure bag sig?” eller “bøf, bearnaise, masser af rødvin, sommerhus i norsjælland og et stort forbrug af håndkøbsmedicin”. Der er nærmest uanede muligheder med 5 års bon-data, der endda kan samles pr. husstand fordelt over flere kort. Bare det at have adresserne på deres kunder og så kunne parre det med bonnerne, det er guld værd for FDB. Det er jo bare at plotte det ind på Google maps, hvem der købte bøfferne i denne uge. Blev hele butikkens lokaldistrikt ramt, eller var der ikke nok tilbud til det i vestlige gettohjørne af distriktet?

I følge dr.dk, så er forbrugerrådet skeptisk, men der er ingen tvivl om, at folk er mere villige til at handle med deres personlige data, end de var for omkring 20 år tilbage, da lancerede deres plastic medlemskort og højt og helligt lovede, at det ikke ville bruges til f.eks. personlig markedsføring. Jer er ikke en gang sikker på, at de ville kæde bonnerne sammen. Tiden er en anden nu. Selv hvis man går ind til byttehandlen med åben pande, så kan der da komme overraskelser. Jeg har gennem tiden købt en del på Amazon. For at spare lidt på portoen, så købte jeg også en havebog om roser for en lidt længere ude i familien. Det var noget nær umuligt at fortælle Amazon, at jeg overhovedet ikke var interesseret i at høre et eneste ord mere om havebøger og roser. Der er unægteligt forskel på om din lokale boghandler kender dig og dine vaner eller om de kan læses ud af en stor database uden menneskelig reflektion. Det værste er klart ricikoen for misbrug af de opsamlede data.

24. maj, 2010

CAD tegning med Linux

Filed under: linux,tilbygning — andreas @ 0:29

Qcad

Med en børneflok på 4 styk, så leger jeg med ideen om at bygge ud. Det haster ikke, med inden vi har fire teenagere i huset, vil det nok være en god ide med mere end et badeværelse med brus. Blyant og papir er ganske taknemmeligt, men er god tegning på computeren er heller ikke nogen dum ide. Jeg kastede mig over Qcad programmet. Det er et udemærket 2D-CAD program. Desværre er det ikke super let at gå til. Det at vælge linjestykker, at gruppere elementer og så videre følger ikke de gængse uskrevne regner for hvordan de fleste programmer gør dette. Man kan sagtens, men flowet er et andet.Man skal vælge hvilken funktion, man vil bruge før end, man vælger hvilke objekter den skal operere på.  Det er nok lidt ligesom Gimp. Programmet kan det meste, men gør det på sin egen måde.

En ret cool freture er, at man kan indtaste kommandoer til hvad der skal udføres. Altså en CLI. Det er supergodt når man kommer til at kende programmet, da man dermed kan klare meget mere med tastaturet. Sundt er det, at lade det lille skadedyr med 3 knapper på ryggen blive ligende i fred.

Desværre er dokumentationen ikke fanastisk. Måske nok komplet, men en tutorial og en dybere gennemgang af enkelte dele havde været bedre. Til at lave en enkelt tegning, så er Qcad fint. der er ingen grund til, at investere i Autocad eller andre hundedyre programmer for at lave en skitse til en plantegning eller et snit af en gavl. Man kan med andre ord komme langt med fri software, der uden beregning kan hentes hjem og installeres når som helst.

12. april, 2010

Barnevognsburka

Filed under: IT-politik,småsnak — andreas @ 23:54

Barnevognsburka

Det er ikke alle burkaer, der er lige velsete overalt i Danmark. Bilburkaer er ligefrem forbudte. Barnevognsburkaer kan jeg derimod klart anbefale. Nu kunne man jo tro, at det bare var et regnslag med indbygget myggenet. Nej, det er faktisk en sikring mod, at blive eksponeret i superoffentilgheden, vores allesammens internet. Jeg ser ingen grund til, at alle skal offentliggøre billeder af deres små nyfødte poder på internettet, allerede før de er i stand til, at sige: “hej”, “nej” eller “mor” for den sags skyld. Det er sundt med lidt privatliv.

18. februar, 2010

1.2GHz arm server i drift

Filed under: hardware,linux — andreas @ 21:57

Rackskab - nu med gigahertz arm NAS

Hvor er det en fornøjelse. Endelig fik jeg min Buffalo Linkstation LS-XHL i drift. Jeg demoede den i efteråret til Open Source Community Day, hvor man kunne se, at den godt kunne trække både Mythtv og en squeezebox server. Jeg havde dog snydt lidt blot lagt min gamle debian NAS installation ind i et underkatalog og så lavet en chroot til dette underkatalog, mounted /proc og så ellers starte de ekstra services. Dette virker fint men har en række fordele og ulemper. Man kan fortsætte med at benytte NAS’en som den er tænkt af fabrikanten og så blot lege med sine egne programmer i et hjørne. Den største ulemper er nok, at man er bundet til en bestemt Linuxkerne. Jeg ville kunne benytte en nyere og bygge de kernemoduler, der gør det muligt, at benytte sjove USB-dimser så som en DVB-T tuner. Fordelen ved at beholde den medleverede kerne er, at det er nemmere at få aflæst powerkanppen og få blæserstyringen til at fungere.

Det var stort set lige ud af landevejen at bygge en 2.6.32 Linuxkerne til NAS-boksen.Ingridienserne er en vanilla 2.6.32 kerne og en mindre LS-XHL platformspatch fundet her. Dertil skal man selvfølgelig have en arm krydscompiler installeret. Her benyttede jeg den så lå i Marvells udviklingskit til SheevaPlugen, der jo benytter samme chipsæt.

Det absolut mest bøvlede var, at der ikke er seriel kontakt med uboot bootloaderen. Hermed, skal alt klappe og virke, man kan først få kontakt med sin NAS når systemer er bootet så langt op at netværket er oppe at køre. Meget kan gå galt inden da. Så skift kun een komponent ud af gangen og start med en kørende opstilling. Så den nye kerne kunne fint køre med det originale rodfilsystem leveret af Buffalo.

Jeg valgte at lave en noget anderledes partitionering end den oprindelige. Et par ting er vigtige at huske her. Da jeg ikke piller ved uboot, som ligger i flash, så er bootparametrene faste: “  console=ttyS0,115200 root=/dev/sda2 rw initrd=0x00800040,32M panic=5 BOOTVER=0.08”. Lad dig ikke snyde af at der tilsyneladende er seriel support. Alt er på plads på softwaresiden, det er blot på hardwaresiden, at der lige er klippet et par komponenter ud i forbrugerversionen frem for udviklerversionen af NAS-hardwaren. Så initrd og kerne skal ligge på partition 1, som skal være ext3 formateret. Navnene er: uImage.buffalo og initrd.buffalo. Partition 2 skal være rodpartitionen – med mindre man laver sjove julelege i initrd’en. Det er vigtigt at man ved formatering af ext3 filsystemet på partition 1 husker at bruge option “-I 128” til mkfs.ext3. Ellers kan uboot i flashromen ikke læse kernen og initrd’en.

Oprettelse af rodfilsystem laves med debootstrap. Jeg gjorde det nemt for mig selv og lavede det natively på en af mine gamle ARM baserede NASer. Krydsinstallation kan godt være noget vanskelig, så det sprang jeg over. Så skal der tilrettes nogle få filer og netværket sættes op. Kogebogsopskriften fandt jeg her. Men ak, der var noget der drillede. Og hvert mislykket forsøg kræver, at disken afmonteres og sættes over i et sata til usb interface på en anden PC. Det viste sig, at min bootsekevens kom til at hænge i /etc/rcS.d/S06checkroot.sh. Hvis jeg rettede i scriptet og tvang rootcheck=no, så kørte alt på skinner. For at kunne komme frem til dette, så lavede jeg mig en “console”, der skrev til disk under opstart. Jeg rettede i /lib/lsb/init-functions og pipede alle echo kommandoer over i /tmp/snydekonsol.Hermed fik jeg et spor på disken, som kunne bruges til næste boot forsøg.

Nå men det lykkedes at få installeret en debian unstable med en 2.6.32.4 kerne på Buffalo Linkstaion LS-XHL maskinen.  Så kom de mange glædelige overraskelser. Jeg have forkælet mig med en DVB-T USB tuner. Jeg valgte en Asus Mycinema-U3100/mini DVBT. Skuffelsen var stor da jeg fik den tilsendt og fik modellen, som hed plus til efternavn. Modellen uden plus skulle virke på Linux Asus EEE uden kvaler, den anden nævnte det overhovedet ikke på produkthjemmesiden. Heldigvis var hardwaren identisk. Der var blot en ekstra USB-dims med et IR-øje og en elendig fjernbetjening med. Det virkede med Linux lige ud af boksen. Den næste gode overraskelse var, at den også virkede under ARM linux. På min gamle buffalo NAS kørte jeg en 2.6.25 kerne, og der krævede det et hack i usb-delen af kernen at lokke data ud af DVB-T enheder. Så den fejl er fikset i mellemtiden. Asus DVB-T enheden har heller ikke den samme irriterende firmware bug som min gamle TakeMS DVB-T enhed havede. Den holdt i praksis op med at virke efter et par dage. Kun en kold reboot fik den på bedre tanker. Så den er fin til at tage med laptopen på farten med ikke i en fast serveropstilling.

Som kom tiden til softwareopdaterinerne. Squeezebox serverne havde tidligere været ret bøvlet at installere fordi, de kløjs rundt i hvilke versioner den krævede af en række Perl CPAN moduler. Men her havde Logitech oppet sig. En deb fil hentet direkte fra Logitechs Squeezeboxhjemmeside og så var den hjemme. Install med dpkg -i og så en efterfølgende apt-get install -f for at sikre afhængighederne. Nemt.

Mythtv installerede jeg i version 0.22, hvor jeg tidligere havde kørt 0.21. Det gav lidt knas, men ikke noget som 1000 andre ikke var faldet i før mig. Jeg installerede også mythweb, da jeg nu har en NAS-server med hele 256MB ram og ikke sølle 128 MB som jeg tidligere har måttet nøjes med. Ingen problemer med at trække dette også. Lækkert.

Og så endnu en god overraskelse. Jeg havde indtil nu kørt ATA over Ethernet (AoE) på min en gamle sløve NAS og alle de andre sjove services på NAS nummer 2. Min LS-XHL havde ingen problemer med at trække begge dele. Og faktisk så kan man virkeligt mærke at AoE er hurtigere pga. den hurtigere CPU NAS-serveren har.

Alt i alt så har jeg skiftet to servere ud med en ny, hurtigere og billigere. Det er ganske meget server man kan få for 1500 kr.

nas og nas2

De to gamle servere er nu kommet på pension. de har kostet omkring 4000 kr i indkøb. Men så var det jo også med en 500GB disk i hver og 400 MHz ARM processorer.

5. januar, 2010

Danmarks virkelige svar på en fiktiv Norsk cykelsmed

Filed under: job,småsnak — andreas @ 9:00

Theodor von bengtson

Midt i en krisetid, der for mig var så håndgribelig, at halvdelen af mine gamle kollegaer i 2009 røg ud via en massefyring og jeg også selv valgte, at finde nye græsgange, var der et ugenligt lyspunkt i nyhedsstrømmen. På Ingeniørrens hjemmeside, har Copenhagen Suborbitalts en blog kaldet Rumfart på den anden måde. Og det er netop hvad det er. I min barndom var et af de helt store hit på VHS-bånd den norske dukkefilm Bjergkøbing Grandprix. Det var helt fantastisk, at en Norsk cykelsmed kunne bygge en racerbil hjemme på sit værksted, der kunne vinde et grandprixløb. Selvfølgelig var der indlagt dobbelt lag hønsetråd i dækkene. I det hele taget var der brugt mange forhåndenværende midler og ellers blot klassisk mekanik.

Makkerparet Kristian von Bengtson og Peter Madsen forstår virkeligt, ikke at gøre ting mere komplicerede end strengt nødvendigt. De kender de tolerancer de kan bearbejde metal med, og sørger for at lave deres design således, at den opnåelige tollerance er god nok til, at funktionaliteten er sikret. Der er heller ikke nogen grund til at benytte kostbare sofistikerede materialer, hvis billige almindeligt tilgængelige materialer er gode nok. Hvis kork er godt nok til at isolere med, ja så er det kork der benyttes. Der er klart lidt indlagt dobblet lag hønsetråd over dette.

Det er en fornøjelse, at opleve dybt engagerede fagligt dygtige personer, der med deres virke kan være med til at skabe ny inspiration for den kommende generation ingeniører samt genoplive den faglige forundring, de fleste har haft under deres uddannelse. Nu da lykken har stået mig bi, og jeg netop er startet på nyt job, så har jeg har valgt at benytte den gode stemning til at sende et par håndører til Copenhagen Suborbitals. Jeg håber på en forsat spændende blog-læsning krydret med jævnlige stemningsbilleder.

31. december, 2009

Renovering af gammel C-kode med ny teknologi

Filed under: linux — andreas @ 23:38

I de forløbne godt 3 måneder har jeg haft fornøjelsen af, at være lejet ud til et firma, hvor jeg har bistået med at portere en god klump gammel C-kode, der tilmed findes i utallige kundetilpassede varianter. Systemet ønskes nu flyttet fra SCO-unix til Linux. Det giver et par udfordringer.

Det umiddelbart nemme er, at det er et flyt fra et posix-miljø til et andet posix-miljø. Men pas på. En simpel funktion som f.eks. strcmp() er i SCO-udgaven af C-biblioteket implementeret, så den returnerer plus eller minus en afhængig om den ene streng er større end den anden. Posix standarden kræver blot, at returværdien er større eller mindre end 0. Dette er også hvad man kan forvente af glibc, som benyttet i Linux. Men hvad nu hvis den gamle kode udnytter SCO’s ide om at returnere plus/minus en og gange resultatet med et eller andet? glibc implementationen returnerer måske -405345 frem for -1. Med andre ord, det er nødvendigt, at lave nogle simple wrapper-funktioner, der kan redde gamle dages uvaner i koden. Havde koden kun eksisteret i en variant, så kunne man nok finde frem til uvanerne, men ikke i dette tilfælde, hvor koden findes i utallige kundetilpassede varianter i forskellige kode-generationer. Løsningen er selvfølgelig, at programmere sig ud af problemerne. Et større script, der kan manipulere C-koden og levere kode, der kan køre på den nye platform. Her har jeg benyttet objectorienteret Perl og store mængder regulære udtryk. Regulære udtryk er dog ikke optimale til alt.

Til Open Source Community Day 2009, var der et foredrag om Coccinelle med Julia Jawall, som jeg gerne ville have set. Jeg missede det dog, da jeg selv holdt foredrag samtidigt. Jeg fik dog læst op på hvad Coccinelle var for en størrelse, og fandt ud af, at det var netop hvad jeg havde brug for til min konsulentopgave. Coccinelle kan lave semantisk patchning af C-kode. Et helt simplet eksempel er, at skifte et funktionskald ud med et andet. Patchen ser således ud:

@@
@@
– foo
+ bar

Og det var så det. Hermed bliver alle instanser af foo skiftet ud med bar. Dette gælder også hvis foo benyttes som funktionspointer og der altså ikke står “foo(“, som man ellers ville have ledt efter med et regulært udtryk. Står der foo i printf-sætninger, ja så udskiftes de selvsagt heller ikke. Super fedt, at have en patch-funktionalitet, der forstår semantiken af den kode man manipulerer.  Coccinelle er dog ikke de eneste rigtige værktøj til opgaven, men den har en fremtrædende plads i værktøjskurven.

Det bedste har faktisk været den super fornemme support, der er ydet på Coccinelle-mailinglisten. I flere tilfælde er mine nybegynder dummespørgsmål blevet besvaret med en løsning inden for 20 minutter. Den slags er ikke til at betale sig fra kommercielt, men det er der jo selvsagt heller ikke tale om her. Det er er dansk/fransk forskningssamarbejde og engagerede personer og i særdeleshed Julia Jawall. Tak for det.

« Newer PostsOlder Posts »

Powered by WordPress