Kapitel 12. Mer om program. 12.1 Att rapportera buggar och problem. 12.2 make



Relevanta dokument
Program. Kapitel make Program Interpreterande och kompilerande program

Kapitel 11. Program Skript Att köra program Interpreterande och kompilerande programspråk

Kapitel 11. Program Att köra program Skript Interpreterande och kompilerande programspråk Att kompilera program

Avslutning. Kapitel Komprimering av filer

TDP005 Projekt: Objektorienterat system

Lab 7, 48 steg till ett bättre liv i Unix-labbet

Textbearbetning i skalet och man-sidor

Kapitel 11. Program Skript Att köra program Interpreterande och kompilerande programspråk Att kompilera program

Användarhandledning Version 1.2

Laboration 0. Enhetsbokstaven anges med ett kolon efter och man läser ofta ut detta, exempelvis C:(sekolon).

Föreläsning 3. Programmering, C och programmeringsmiljö

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

Laboration 10: LaTeX. Redovisning. Omgivningen document. Början. Instruktionerna nedan. Repetitionsuppgifter

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

UNIX. 2D1339 Programkonstruktion Hösten 2001 Datorintroduktion Laboration 1. Mål. Vad laborationen går ut på. Redovisning

IDA kursmaterial Informationsblad make. make

Objektorienterad programmering i Java I

Programmering i C++ Kompilering från kommandoraden

Konsolfönster i Windows Momentet ingår i kursen PDA DTR1206 Lab 1 DOS Konsolfönstret

Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas.

kommando -fl argument

Omkoppling av in- och utmatning. In- och utmatning i Unix. Kommando exempel, ls, pipe forts. Kommando exempel, ls, pipe

Använda Python Laboration 1 GruDat, DD1344

NetBeans 7. Avsikt. Projektfönster

Kort om World Wide Web (webben)

Handbok Svarta lådan. Nicolas Roffet Robert Cimrman Philip Rodrigues Lauri Watts Översättare: Stefan Asserhäll

NetBeans 5.5. Avsikt. Projektfönster

Subversion. Laboration. Höstterminen 2008 r81. Ronny Kuylenstierna

Kort-kort om utdelade användarkonton och datormiljön på NADA

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Uppgift 1a (Aktiekurser utan poster)

emopluppen Användning av "Ant" Niklas Backlund Version: 1.4 ( 2002/04/26 07:27:52 UTC)

Inledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio

Filbindningar. Mike McBride Översättare: Stefan Asserhäll

Handbok KAppTemplate. Anne-Marie Mahfouf Översättare: Stefan Asserhäll

DRAFT. CVS kurs laboration 1 Checka in, ut och uppdatera. Marcus Rejås. 17 november 2002

Tips och tricks. Några bra tips. Lägg till sökvägar

3. Hämta och infoga bilder

Handbok KFind. Dirk Doerflinger Översättare: Stefan Asserhäll

Introduktion till programmering, hösten 2011

Tentaupplägg denna gång

Laborationer i kursmomentet Datoranvändning E1. Laboration nr 5: Mer om FrameMaker

Ersätta text, specialtecken och formatering

Övningar till UNIX/Linux Grundkurs och förslag till LÖSNING

Jag försöker hämta in video via Ulead programmet men får bara in bilden och inget ljud.

Introduktion till datormiljön och Python

Övning 1. Datateknik A, Java I, 5 poäng. Att ladda hem och installera Java Att skriva ditt första Javaprogram Att kompilera och exekvera ditt program

Framsida På framsidan finns:

DD1310 Programmeringsteknik för Open1 och Med2 Laborationer läsåret 2014/2015

Denna laboration skapades för elever vid Roslagens Högskola men kan användas av vem som helst. Namnen på servrarna måste i så fall ändras.

Emacs. Eric Elfving Institutionen för datavetenskap (IDA) 22 augusti 2016

prog: prog.c gcc -g -Wall prog.c /usr/local/bib/c/58an/modules/modul.o -o prog

KUNGLIGA TEKNISKA HÖGSKOLAN KISTA. Lego Linefollower. Få en robot att följa linjen på golvet!

Inlämningsuppgift : Finn. 2D1418 Språkteknologi. Christoffer Sabel E-post: csabel@kth.se 1

DC ++ o allt annat runt om! (en kom-i-gång guide..) Klicka på File Settings. Färdigt med konfigureringen!

Emacs. Eric Elfving Institutionen för Datavetenskap (IDA)

TDP003 Projekt: Egna datormiljön

UNIX. Laborations-PM Anders Egneus, Henrik Lindgren, 2004, Raphael Corsoski, Erik Eliasson, Christian von Schultz, 2008.

Handbok Othello. Clay Pradarits Utvecklare: Mario Weilguni Granskare: Lauri Watts Översättare: Stefan Asserhäll

Handbok Spectacle. Boudhayan Gupta Boudhayan Gupta Översättare: Stefan Asserhäll

Uttryck, satser och strömhantering

Egna genvägar. Subhashish Pradhan T.C. Hollingsworth Översättare: Stefan Asserhäll

C++ Lektion Tecken och teckenfält

Föreläsning 18 Filer och avbildningar

Mjukvara Konsolfönstret i Windows och lite andra saker. Momentet ingår i kursen PDA DTR1206

Introduktion till datateknik för språkvetare

Handbok Kanagram. Danny Allen Översättare: Stefan Asserhäll

FLEXILAGER Ett hjälpmedel för anpassad lagerhantering. Original -version

Introduktion till programmering D0009E. Föreläsning 1: Programmets väg

Kapitel 4 Arkivmenyn Innehåll

Innehåll. Förändringar i v5.3

Uppdatera Mobilus Professional till version * Filen MpUpdate.exe får inte köras när du startar denna uppdatering.

Administration av landstingsstatistik. Statistiktjänsten

Beställning av Förlitandepart-certifikat Version

Manual Partnerwebben 2014

Att hämta organisationers publikationsposter ur DiVA

Förberedelseuppgift inför datorlaborationen

Objektorienterad Programmering (TDDC77)

Krav: * Filen MpUpdate.exe får inte köras när du startar denna uppdatering.

Allmänt om programvaror och filer i Windows.

INSTALLATION AV VITEC MÄKLARSYSTEM

MMA132: Laboration 2 Matriser i MATLAB

Handbok för skrivbordsväljaren. Dirk Doerflinger Antonio Larrosa Jiménez Pino Toscano Matthias Elter Matthias Ettrich Översättare: Stefan Asserhäll

Översikt. Texthantering med bl.a. kommandona cat, less och grep Omdirigering och piping Gnuplot. Linux 2 2 / 12

Handbok för Klipper. Philip Rodrigues Carsten Pfeiffer Översättare: Stefan Asserhäll

Datorsystem och programmering

Kort-kort om utdelade användarkonton och datormiljön på NADA

I den här labben ska vi använda oss av en trevlig nyhet i HTML5: Local Storage, för att implementera en sorts lokal gästbok.

Kapitel 10. Dokumentrepresentation Uppmärkt text HTML kommer från SGML

KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: 8-13, den 18 februari 2012

kl Tentaupplägg

Handbok KDE:s Menyeditor. Milos Prudek Anne-Marie Mahfouf Lauri Watts Översättare: Stefan Asserhäll

Efter att ha gjort ett urval av patienter i förlossningsliggaren kan du göra en rapport som visar de uppgifter du är intresserad av.

Handbok Kgeografi. Anne-Marie Mahfouf Kushal Das Översättare: Stefan Asserhäll

Länka in bilder från webben hjälper dig att använda bilder som du inte har sparade på din egen dator.

Din egen webserver med Apache

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Kdenlive snabbstartguide

Vilken version av Dreamweaver använder du?

Handbok Färgredigeraren. Artur Rataj Översättare: Stefan Asserhäll

Transkript:

Kapitel 12 Mer om program 12.1 Att rapportera buggar och problem När man rapporterar buggar eller andra problem i program så är det några saker att tänka på för att ens rapport ska vara användbar för den som tar emot rapporten. Detta gäller både när du rapporterar saker till Per här och när du stöter på buggar i diverse program. 1. Tala om vad du gjort! Skriv t. ex. inte bara»utskrifter funkar inte«om du har problem med en utskrift, utan tala mer specifikt om vad du gjort som inte fungerar på ett sätt som går att härma. Skriv t. ex. Jag öppnade filen ~ellen/foo.pdf från filhanteraren, tryckte Ctrl-P för utskrift, och tryckte sedan Print när punkt stod som vald skrivare. om det var det du gjorde. Kanske är det något med just den filen som ställer till problem. Kanske är det nåt med just det pdf-visarprogrammet som ställer till problem. Kanske är det just skrivaren punkt det är problem med. Det vet du förmodligen inte, så tala om alla detaljer. Annars är det stor risk att den du rapporterat till provar nåt annat och inte upptäcker något problem. Målet är att den som man hoppas ska kunna lösa problemet ska kunna återskapa problemet! Om det inte är lokal felrapportering så tala om vilken version av programmet du använder också! Kanske uppstår problemet bara i vissa versioner. 2. Tala om vad som händer! Skriv t. ex. inte bara»utskrifter funkar inte«, utan tala om på vilket sätt. Du kanske får ett felmeddelande när du ger kommandot för att skriva ut? Det kanske inte kommer någon utskrift alls och det dyker upp ett meddelande på skrivarens display? Det kanske kommer en utskrift som är fel på något sätt? Detta hjälper till för att bekräfta för dem som läser rapporten att de får fram samma beteende. Om du får ett felmeddelande, så återge det! 3. Tala om vad du väntade dig skulle hända istället Det finns fall där detta är helt självklart, men om det inte är det, så ta med det också. Kanske har du missuppfattat vad som skulle hända. Då är det bra om det framgår direkt. Kanske är den du rapporterar till inte så insatt i just detta program. Då hjälper det att få veta vad som skulle ske för att bekräfta att en lösning man kommit på fungerar. En del av ovanstående är kanske självklart, men ändå skrivs det ganska många dåliga buggrapporter som tycks vänta sig att det som läser dem är tankeläsare, så det kan vara värt att sägas ändå. 12.2 make Som ni såg i förra kapitlet finns det ett kommando make som kan skapa filer enligt vissa regler. Med make trappa tillverkades t. ex. filen trappa. I det fallet såg den att det fanns en fil trappa.c och visste då hur den skulle göra (nämligen kompilera det C- programmet). När ni skrev make trappa igen jäm- 125

12. MER OM PROGRAM saga-i.txt : saga.txt sed 's/[aeouyåäö]/i/g; s/[aeouyåäö]/i/g' <saga.txt >saga-i.txt %-i.txt : %.txt sed 's/[aeouyåäö]/i/g; s/[aeouyåäö]/i/g' <$^ >$@ Figur 12.1: Två exempel på make-regler. Först en specifik, och sedan en mer generell förde make när filerna trappa.c och trappa var skrivna, och kom fram till att den inte behövde kompilera om programmet, om inte källkoden var ändrad senare. Man kan skriva regler för hur filer ska skapas och lägga dessa regler i en fil Makefile i samma katalog där man ger kommandot make. Detta används framförallt för att kompilera program, men kan användas även i andra sammanhang när filer ska skapas utifrån andra filer. Med en regel som den för saga-i.txt i figur 12.1 kan man t. ex. tala om hur filen saga-i.txt kan skapas utifrån saga.txt. Först i denna regel står vad som kan skapas med den, saga-i.txt, sen efter ett kolon dess beroenden = prerekvisit de filer som den är beroende av. Bara om någon av dessa filer har ändrats senare behöver regeln utföras igen. Sist anges vilka skalkommandon som ska köras för att skapa filen. I exemplet är det bara ett kommando, men det kan vara flera, alla med ett TAB-tecken som indrag. (Detta kommando skapar verkligen en fil saga-i.txt. Det är inte nödvändigt utan man kan ha regler som kör vissa kommandon när man skriver t. ex. make foo utan att någon fil foo skapas.) Om man vill kunna göra motsvarande omvandling med vilka andra filer som helst också, och t. ex. kunna skapa foo-i.txt utifrån foo.txt kan man använda en mer generell regel som den andra i figur 12.1 istället. Observera att i dessa regler används procent som ett slags jokertecken! Dollartecken följt av ett annat tecken används i speciella betydelser. De viktigaste ses ovan, nämligen $^ som betyder regelns beroenden (det efter kolonet) och $@ som betyder den fil som regeln skapar. Framförallt är sådant användbart när man har en stor mängd filer som hänger ihop genom att vissa kan genereras utifrån andra, och en del indatafiler ibland ändras så att en del av de andra filerna bör genereras om. 126

Laboration 12: Avslutning Dina svar denna vecka ska du checka in med Subversion på samma sätt som tidigare i en fil ids12.txt. En del uppgifter är repetition. Andra är sådant som vi inte gjort, men som du ska kunna ta reda på själv hur man gör. Make och sagan Skapa en fil Makefile i din katalog saga där saga. sh ligger. Lägg regler där för att skapa alla de filer som saga.sh skapar så att man kan skriva t. ex. make saga-i.txt i den katalogen för att skapa en sådan fil om den inte redan finns. Det blir en regel för varje fil som ska skapas, alla i samma Makefile. Skriv reglerna så att de fungerar för andra textfiler med namn som slutar på.txt också. Det finns flera sätt att plocka ut ord ur en text. Använd denna gång grep -o med något lämpligt argument för att göra det vid tillverkningen av saga-ord.txt. Checka in din Makefile när den klarar allt detta. Spanska Utöka sedan samma Makefile med en regel som från varje textfil med namn som slutar på».txt«skapar en fil med namn som slutar på»-spanska.txt«som är översatt från svenska till spanska. med hjälp av gtrans. Checka in den ändrade Makefile med en kommentar som talar om att det var detta du lade till. Uppgift 12.1 Om du kopierar /local/kurs/ ids/rummet.txt till denna katalog och skriver make rummet-spanska-ord.txt, vilka kommandon utför då make och hur lyder resultatet? Buggar i grep Under kursen har man kunnat märka två buggar i grep. 1. På s. 86 skrev jag att \w betyder samma sak som [[:alnum:]] i reguljära uttryck i grep. Så står det nämligen i dokumentationen till grep. Men det betyder faktiskt inte riktigt samma sak! Med \w inkluderas även understreck (_) som inte räknas med i [[:alnum:]]! Antingen är det programmet som gör fel eller så står det fel i dokumentationen. Någonstans är det en bugg hursomhelst. 2. En sak som det kan ha hänt att någon drabbats av är att ankring i början av något inte funkar så bra tillsammans med grep -o. $ echo hej grep -o '^.' h e j Det tycks som att när h först har hittats så skalas strängen ner till ej och därmed finns e först på raden i resten, osv. Tänk om man skulle göra programutvecklarna en tjänst och rapportera dessa buggar. Men då bör man först se efter om de redan har fixats i den senaste versionen av grep. Uppgift 12.2 Vilken version av grep kör vi här? Hur tog du reda på det? Vilken är den senaste pub- 127

LABORATION 12: AVSLUTNING licerade versionen av GNU grep? Var på webben hittade du det? Hämta den senast publicerade på nätet och kompilera och installera den för att se om den har samma fel. Använd hela det normala GNU-sättet för att installera program, och ange din hemkatalog som prefix. Uppgift 12.3 Hur körde du då configure? (Använd den kortaste sökvägen till det.) Uppgift 12.4 Vilka kommandon gav du sen? Uppgift 12.5 I vilken katalog hamnade nu det nyinstallerade programmet grep? Hur kan du enklast skriva för att köra det? Uppgift 12.6 Har den senaste versionen kvar bugg 1 ovan? Om den har det så formulera en buggrapport om detta. Om inte, så tala om hur du såg det. Uppgift 12.7 Har den senaste versionen kvar bugg 2 ovan? Om den har det så formulera en buggrapport om detta. Om inte, så tala om hur du såg det. Om det vore på riktigt skulle du skriva på engelska eftersom det är vad programmets författare förstår, men om du vill kan du skriva på svenska istället. Ge korta exempel på något som ger fel resultat som de skulle kunna göra efter. Skicka inte in någon buggrapport på riktigt! (Om det behövs så är det redan gjort.) Skaluppgifter Dessa uppgifter ska lösas med ett eller flera kommandon i skalet. Ange både vilket eller vilka kommandon du gav, samt vad resultatet blev. Uppgift 12.8 Vilka delstater i USA har namn som består av mer än ett ord? Använd filen /local/ kurs/ids/us-states.txt. Låt resultatet bli sorterat och med bara namnen (utan datum). Uppgift 12.9 Hur långt är det längsta svenska språknamnet i /local/kurs/ids/eulang.tsv? Uppgift 12.10 Vad finns det för rader i /local/ kurs/ids/wonderland.txt som bara innehåller ett ord, eventuellt med ett eller flera mellanslag före eller efter, men inga andra tecken. För själva ordet kan du skriva \<\w*\>. Uppgift 12.11 Vad finns det för ord som börjar på stor bokstav i den ryskspråkiga textfilen /local/ kurs/ids/rysk.txt. Glöm inte att den filen är kodad med ISO 8859-5! Svaret ska vara i vårt vanliga UTF-8 och innehålla en lista över bara de orden, ett per rad, utan dubbletter. Emacs Uppgift 12.12 Vad är nu igen kortkommandona för a) att avbryta ett påbörjat kommando, b) öppna en fil, c) spara en fil, d) söka framåt (inkrementell sökning). Uppgift 12.13 Meddelandena som Emacs skriver ut ibland längst ner (i ekoarean) sparas också i en särskild buffert. Vad heter den? Reguljära uttryck Uppgift 12.14 Uttryck i ord vad följande utökade reguljära uttryck matchar: a)(abc){3} b)[abc]{3} c) <abc>{3} d)^[[:lower:]]+$ e)\<(\w\w)+\> Uppgift 12.15 Här ges ett antal utökade reguljära uttryck som alla går att skriva kortare så att ändå exakt samma texter matchas. Hur? a) bar ber bir bor bur b) ab[c]def c)[kanin] d)(.* groda) e)(xxx){10} f) foo [gj]oo g)[!]{2} h) aa?aaa?a?aa?a Diverse Uppgift 12.16 Vad kallas teckenkodningen ISO 8859-1 också ofta? 128

Att rensa upp efter sig Uppgift 12.17 En vanlig kombination i rörledningar är sort uniq. Eftersom det är så vanligt finns det en väljare till sort som gör samma sak som att slänga på uniq efteråt. Vilken? Uppgift 12.18 Nedan visas innehållet i en tänkt XML-fil, som inte är välformad XML. Vad är det för fel? <?xml version="1.0" encoding="utf-8"?> <bok> <författare>selma Lagerlöf</författare> <titel>gösta Berlings saga</titel> </bok> <bok> <författare>august Strindberg</författare> <titel>röda rummet</titel> </bok> DSSO igen I förra labben fick du tillverka ett skalskript som tog den textfil som man kan ladda ner från Den stora svenska ordlistan och tillverka en lista med ordformer i den. Om du är klar med den, så se över dessa saker för att se om du tagit hänsyn till dessa och gör ändringar i din dsso.sh om så är lämpligt. Skräp? I figur 12.2 på nästa sida finns ett par utdrag ur DSSO-filen. Du har väl inte fått med sånt som står på andra rader i filen? De där raderna om upphovsrätt i början har väl t. ex. inte gjort att du har fått med ett ord»creative«i din ordlista? Och du har väl inte råkat få med nåt av den där uppmärkningen av ordklass i din fil? Kolla om du har tecknen»<«eller»>«där! Flerordsuttryck Det stod i uppgiften att du inte skulle ha med flerordsuttryck som t. ex.»au pair«och»science fiction«. Sök i den fil du skapat för att se efter att det verkligen är så. Du har väl inte bara plockat bort mellanrummet och därmed fått med felaktiga ord som»alterego«? Dubbletter? Har du några dubbletter i din lista? Det stod inget i uppgiften om att ni skulle undvika det, men gör det nu. Låt din ordformer.txt bara ha med varje ordform (varje graford) en gång, även om det kommer från böjningar av olika ord, som t. ex.»vaken«(substantiv eller verb). Konstiga tecken i ord? Det kan ha känts naturligt att använda beteckningar i reguljära uttryck som betyder början-av-ord och ord-tecken osv., men här bör du ha godtagit de ordformer som anges i infilen oavsett vilka tecken som räknas som ordtecken eller inte, t. ex.»a-moll«trots att kanske bindestreck inte räknas som ett ordtecken ibland. Och se efter att du inte missat»bahá í«bara för att det innehåller en apostrof! Alla varianter? Tänk som exempel på en rad som den om adjektivet rätt i figur 12.2. Kolla att du fått med såväl»rättan«som»rätte«bland dina ordformer. Att rensa upp efter sig Snart har du förhoppningsvis blivit godkänd på denna kurs, och då kan det vara läge att rensa upp i din kurskatalog. Du borde inte ha skapat så mycket stora filer i denna kurs, men i en annan kurs kan det bli rejält med data som du antagligen inte behöver ha kvar efteråt, så det är en bra vana att efteråt se över vad som kan komprimeras eller kanske till och med tas bort. Se på http://stp.lingfil.uu.se/datorer/ disk.html för en del tips som har med diskanvändning att göra. Uppgift 12.19 Vad kan du enligt detta ge för skalkommando för att se hur mycket plats din hemkatalog tar upp? Hur mycket var det? Ett par väljare används till kommandot. Vad betyder de? Uppgift 12.20 Ge ett skalkommando som med hjälp av kommandot find tar fram vilka de största filerna/underkatalogerna i din hemkatalog är. (Använd exempel på samma webbsida som förebild.) 129

underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till den katalogen, eller i en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till den katalogen, eller i en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till den katalogen, eller i en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till den katalogen, eller i en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till den katalogen, eller i en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till den katalogen, eller... (fnord) LABORATION 12: AVSLUTNING # Copyright (c) 2009 Göran Andersson # This work is licensed under the Creative Commons Attribution-Share Alike License.... 571187r5<adjektiv>rätt:rätt:rätt:rätta, rättan:rätta:rättare:::rätte:::::::: Figur 12.2: Utdrag ur dsso-1.44.txt. Med ls -l eller wc -c får man filers storlek, men det duger inte till denna uppgift eftersom det inte säger nåt om katalogers storlek. Leta filer Läs i dokumentationen om kommandot find för att ta reda på hur man kan lösa ytterligare uppgifter med det. Uppgift 12.21 Lista alla filer under /usr/share/ gimp som har namn som slutar på».jpg«. Uppgift 12.22 Lista alla tomma filer och kataloger under /usr/share/amaya. (Det finns en särskild sökmöjlighet i find för sånt som är tomt.) Uppgift 12.23 Vad finns det för tomma filer som heter README under /usr/share? Med»under«menar jag i den katalogen, eller i en underkatalog till den katalogen, eller i en underkatalog till en underkatalog till den katalogen, eller i en underkatalog till en underkatalog till en underkatalog till den katalogen, eller i en underkatalog till en underkatalog till en underkatalog till en underkatalog till den katalogen, eller i en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till den katalogen, eller i en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till den katalogen, eller i en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till den katalogen, eller i en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till den katalogen, eller i en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till den katalogen, eller i en underkatalog till en underkatalog till en underkatalog till en underkatalog till en underkatalog till en 130