behandling af ekstreme datasæt vha shellscripting og fuse-zip

Hvis du er stødt på et datasæt, der er større end du er vant til  så kan det være vanskeligt umiddelbart at importere data ind i excel så du bare kan kigge på dem.

I denne situation kan det være brugbart at manipulere lidt med dem først  enten i form at spillet datasættene op i mindre bidder så det kan lade sig gøre , eller også at opstille et komprimeret filsystem, som gør at afviklingen af dine shellscripts kan foretages mens data er på komprimeret form.

Lad os betragte et tilfælde hvor  vi skal foretage  et crawl af internettet , der skal benyttes til beregning af linkmatricer.

Hvis vi eksempelvis  igangsætter flg. kommando:


wget --random-wait --no-dns-cache --recursive --level=20 http://slashdot.org

Så  vil vi henover tid producere så meget data at det vil en optage en stor del af disken.

I en linkanalyse kan det være unødigvendigt at betragte hele datasættet ( i vores tilfælde skal vi kun kigge inærheden af hvor der står HREF eller MAILTO ). Derfor vil der være spildtid i at holde hele datasættet i lageret i ukomprimeret form.

Her er fuse-zip brugbart. fuse-zip kan benyttes til at gennemse dele af en zipfil monteret som et drev .

fuse-zip kræver at man installerer lib-fuse først. Dette gøres således  (eksemplet er her for ubuntu):


sudo apt-get install  libfuse-dev
mkdir -p ~/tmp
cd ~/tmp
wget fuse-zip.googlecode.com/files/fuse-zip-0.2.6.tar.gz
tar zxvf fuse-zip-0.2.6.tar.gz
cd fuse-zip-0.2.6/
sudo make install

Du får nu kommandoen “fuse-zip” tilrådighed.

Nu kan du eksempelvis vælge at gøre flg:


cd ~/tmp
mkdir a
zip -r a.zip a
mkdir afuse

og så montere a.zip som et nyt filsystem på flg. facon:


fuse-zip  a.zip afuse

Du kan nu gentage crawl kommandoen og se at den ikke får den samme pladsbelastning på din disk.
Bemærk at du skal afmontere dit nye fuse-zip drev før at du kan overføre zip filen til et andets ted. Dette kan du gøre på flg. facon:


cd ~/tmp/
sudo umount afuse

Du kan jo også vælge at montere en zip-fil som du har modtaget fra et datasæt. Husk at navngive monteringspunkterne så du kan holde styr på hvilket monteringspunkt der hører til hvilken zip-fil.

Når du nu har monteret dit crawl som en zip-fil, så behøver du ikke have den i ukomprimeret form længere for at kunne benytte de shell kommandoer du kender i forvejen.

For vores linkanalyse kunne det være relevant at starte med at kigge på hvor mange gange der står HREF  på slashdot.org siderne:


grep --recursive -c href *

Ved at forbedre lidt på de regulære udtryk kunne man optælle links i de forskellige filer . Dernæst kunne man analysere links imellem filer. Altsammen vha shellscripting i en zip-komprimeret fil(!)

Betydningen af en åben dokumentstandard

Jeg kan huske da jeg for nogle år siden deltog en aften i et møde it-politisk  forening sammen med Hans Andersen i prosas lokaler i København.  Det er nu et stykke tid siden , og VKR-regeringen var stadigvæk ivrig efter at efterlade et godt indtryk rundt omkring i verdenen. Der var såvidt jeg husker en repræsentant for videnskabsministeriet tilstede – og vi diskuterede ivrigt igangsættelsen af pilotprojekter for at undersøge om Open office funktionelt kunne erstatte Microsoft Office rundt omkring i de forskellige offentlige institutioner i Danmark . Jeg tror konklusionen af alle de pilotforsøg blev at det kunne det ikke  – men det er så en helt anden sag. Under mødet gav de tilstedeværende adskillige stikpiller til repræsentanten fra Videnskabsministeriet af vi ikke troede på de pilot-projekter og at det vi egentligt hellere ville have et åbent dokumentformat der gjorde at vi altid ville kunne genfinde indtastet data senerehen .

Det var jo så fint nok at Microsoft så senerehen iløbet af året offentligtgjorde en aftale med den danske regering der offentliggjorde flere detaljer om Office dokument-formaterne. Nu er det blevet sådan at alle og enhver (og hans fætter) kan gå ind og pille direkte ved office dokumenter ved hjælp at et udpakningsprogram og en teksteditor.Så  nu kan vi rent faktisk finde data i de dokumenter vi har liggende . Så rent faktisk kom der en forbedring.

Det er faktisk endnu bedre at Microsoft har offentligtgjort en ifilter-teknologi , der på en nem og lettilgængelig facon skaber en oversigt over de fleste office-formater – så rent teknisk har jeg ingen grund til at klage. Jeg har det , jeg gerne vil have.Og det er let at konvertere mellem OpenOffice og OpenXML.

Men der stopper historien desværre ikke.

Efter at gentagne gange at have idømt Microsoft bøder for brud på gældende monopol-lovgivning har EU domstolen iløbet af 2008 efterforsket kriminelle forhold ifbm. med Microsofts  anmeldelse af openXML som en ISO standard.

For sig selv er det jo fint nok at Microsoft åbenbart igennem omgåelse af ISO’s førhen så rigorøse godkendelseprocedurer er lykkedes med at få godkendt en standard, der har så exceptionelt mange fejl og mangler som er under  behandling af ISO iøjeblikket. Det betyder jo at disse fejl og mangler bliver behandlet!

Det der er lidt ærgeligt er at Microsoft nu er ved at overtage det udvalg der behandler Open Offices format.  Kig her for en nærmere beskrivelse: http://www.groklaw.net/article.php?story=20080825162905645 .  Jeg forstår også at IBM er ved at trække sig ud at internationale standardorganisationer p.gr.af det åbenlyse misbrug af ISO fra Microsofts side.

Microsoft er med deres nuværende kurs ved at fuldstændigt underminere min tiltro at de kan varetage en åben dokumentstandard. “Åben” i min bog betyder lettilgængelig – klart og forståelig – og ikke et resultat af lumre forretningstaktikker i udvalg.

Det er lidt ærgeligt at Microsofts troværdighed kommer til at lide endnu et knæk p.gr.af den taktik der udspiller sig i ISO i øjeblikket. Vi kunne allesammen komme meget længere – hurtigere – hvis Microsft droppede disse taktikker som vi kender fra 90′erne.