XML+ANT+CVS+DIARY Genomgång av några av de verktyg som används på kursen 1IT110 XML: Exempel <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE GROUPDIARY SYSTEM "groupdiary.dtd"> <! - Dagbok för grupp X. --> <GROUPDIARY GROUPNAME="GruppX"> <DIARY NAME="Jimmy"> <DATE YEAR="2003" MONTH="11" DAY="23"> <ENTRY DUR_MINUTES="20">Testade lite.</entry> </DATE> </DIARY> <DIARY NAME="Arvid"/> </GROUPDIARY> Informationsteknologi #2 XML: Syntax (1) Överst i dokumentet måste en definition som talar om vilken version av XML-språket som avses finnas samt vilken teckenkodning som används: <?xml version="1.0" encoding="iso-8859-1"?> Om man vill använda sig av en DTD (Document Type Definition) så måste denna anges. Antingen direkt i XML-dokumentet, eller som i exemplet nedan, som en separat fil: <!DOCTYPE GROUPDIARY SYSTEM "groupdiary.dtd"> Kommentarer ser ut som i HTML: <! - Dagbok för grupp X. --> Informationsteknologi #3 1
XML: Syntax (2) Till skillnad mot HTML så är XML alltid ett välbalanserat träd. Detta innebär att en tag alltid måste ha en motsvarande slut-tag: <ENTRY DUR_MINUTES="20">Testade lite.</entry> Om man vill ha en tag utan något innehåll kan man dock inkludera sluttaggen i taggen: <DIARY NAME="Arvid"/> Varje tag kan ha godtyckligt många attribut, men varje attribut kan dock endast förekomma en gång. Om man använder sig av en DTD så kan man där ange vilka attribut som måste finnas med och vilka som är valfria. <DATE YEAR="2003" MONTH="11" DAY="23"> Informationsteknologi #4 XML: Syntax (3) XML är enligt definitionen case-sensitive, vilket innebär att de båda exemplen nedan ej är ekvivalenta: Exempel 1: <ENTRY DUR_MINUTES="20">Testade lite.</entry> Exempel 2: <entry dur_minutes="20">testade lite.</entry> Vissa (dåliga) XML-parsers ignorerar dock detta och låter exempel 1 vara detsamma som exempel 2. Detta är fel! Informationsteknologi #5 XML: DTD (1) DTD:n beskriver hur dokumentet kan byggas upp med hjälp av ett antal grammatiska regler. Exempel på en DTD: <!ELEMENT GROUPDIARY (DIARY)*> <!ATTLIST GROUPDIARY GROUPNAME CDATA #REQUIRED> <!ELEMENT DIARY (DATE)*> <!ATTLIST DIARY NAME CDATA #REQUIRED> <!ELEMENT DATE (ENTRY)+> <!ATTLIST DATE YEAR CDATA #IMPLIED MONTH CDATA #IMPLIED DAY CDATA #REQUIRED> <!ELEMENT ENTRY (#PCDATA)> <!ATTLIST ENTRY EID CDATA #REQUIRED DUR_HOURS CDATA #REQUIRED DUR_MINUTES CDATA #REQUIRED> Informationsteknologi #6 2
XML: DTD (2) Ett XML-dokument har alltid exakt ett rotelement, som i detta fall måste vara av typen GROUPDIARY. En GROUPDIARY kan i sin tur innehålla valfritt antal (0, 1 eller flera) DIARY element: <!ELEMENT GROUPDIARY (DIARY)*> GROUPDIARY kräver också att attributet GROUPNAME är satt: <!ATTLIST GROUPDIARY GROUPNAME CDATA #REQUIRED> Vill man istället att gruppnamnet ska vara frivilligt så kunde det stått: <!ATTLIST GROUPDIARY GROUPNAME CDATA #IMPLIED> Informationsteknologi #7 XML: På kursen På kursen använder vi oss av XML genom build-verktyget Ant, dagbokens filformat och ett kommunikationsprotokoll mellan olika instanser av klientprogrammen. Uppgifterna kommer dock inte kräva att man kan skriva en DTD eller använda en XMLparser, bara att man något så när är medveten om den underliggande tekniken. Informationsteknologi #8 Ant Apache Ant is a Java-based build tool. In theory, it is kind of like Make, but without Make's wrinkles XML-baserat Plattformsoberoende Lätt att lära sig Pluginarkitektur lätt att lägga till egen eller andras funktionalitet för specifika behov Informationsteknologi #9 3
Ant: Exempel på en regel Exempel på hur en regel i Ant kan se ut: <! - Build-regel --> <target name="build" depends="init"> <! - Kompilerar alla.java i ${src} till ${build} --> <javac debug="true" debuglevel="lines,vars,source" srcdir="${src}" destdir="${build}" deprecation="on"> <classpath refid="compile.path"/> </javac> <! - Kopierar alla.java i ${src} till ${build} --> <copy todir="${build}"> <fileset dir="${src}"> <exclude name="**/*.java"/> </fileset> </copy> </target> Informationsteknologi #10 Ant: På kursen På kursen krävs inga djupare kunskaper i hur man skriver regler för ant. Den build.xml som följer med i kodpaketet kommer att fungera för de allra flesta behov. Vill man lära sig mer om hur ant fungerar rekomenderas dokumentationen på http://ant.apache.org/, samt att man läser och förstår vad vår build.xml gör. Informationsteknologi #11 CVS - Översikt CVS är kanske det absolut vanligaste systemet för att versionshantera källkod och de facto standard inom open source utveckling. Varje grupp får ett eget CVS Repository tilldelat, som bara gruppmedlemmarna samt kursens lärare har tillgång till. För att kunna genomföra kursen krävs bara att man kan använda de vanligaste CVS-kommandona. Informationsteknologi #12 4
CVS: Komma igång (1) Sätta CVSROOT Miljövariabeln CVSROOT måste vara satt för att kunna hämta ut projekt från CVS. Alternativt kan man ange den som ett argument på kommandoraden till cvs med flaggan -d. Exemplen nedan förutsätter att miljövariabeln inte är satt. CVSROOT för kursen kommer vara: :pserver:[unixid]@cvs.srv.it.uu.se:/devgui[gruppbokstav] Exempel: :pserver:jimmyf@cvs.srv.it.uu.se:/devguix Informationsteknologi #13 CVS: Komma igång (2) Logga in Görs vanligen bara en gång per användare och dator: cvs d [CVSROOT] login Hämta ut projektet Skapar den lokala arbetskatalogen för projektet. Detta behöver normalt sett bara göras en gång: cvs d [CVSROOT} co blazon Informationsteknologi #14 CVS Vanliga kommandon (1) Hämta uppdateringar Hämtar eventuella uppdateringar från repositoryt: cvs up Observera att kommandot arbetar rekursivt nedåt i katalogstrukturen. Om man bara vill uppdatera en specifik fil eller katalog kan man göra: cvs up [fillista] Skicka in ändringar Skickar in samtliga ändringar rekursivt: cvs ci -m [Information om ändringen] Eller en enskild fil eller katalog: cvs ci [fillista] m [text] Informationsteknologi #15 5
CVS Vanliga kommandon (2) Lägga till en fil För att lägga till en eller flera filer till repositoryt: cvs add [fillista] Observera att om det är en binär fil (exempelvis en bild) som ska läggas till måste man ange flaggan kb: cvs add -kb quit.gif Ta bort en fil För att ta bort en eller flera filer från repositoryt: cvs rm [fillista] CVS kommer att klaga om filen finns kvar när man försöker ta bort den från repositoryt. Därför måste man först ta bort filen från arbetskatalogen innan man kan ta bort den från repositoryt. Informationsteknologi #16 Dagboken: Översikt Dagboken är en viktig del av examinationen på kursen och ska redovisa den tid man lägger ner totalt sett. Även inläsning och gruppmöten ska finnas med. Förslagsvis skapar man en ny dagbokspost varje gång ny funktionalitet har lagts till, en bugg har fixats eller en ny aktivitet startar. En väl underhållen dagbok hjälper dessutom de övriga gruppmedlemmarna att få en helhetsbild av gruppens arbete. Informationsteknologi #17 Dagboken: Filer Dagboken ligger som allt annat i CVS och återfinns under katalogen diary/. Filen diary.xml innehåller dagboksdata för samtliga medlemmar i gruppen Filen groupdiary.dtd är DTD:n för dagbokens XML-format. Informationsteknologi #18 6
Dagboken: Initiering Det som måste göras är att filen diary.xml under diary/ måste editeras så att gruppnamnet stämmer. Den utcheckade dagboken innehåller en rad som ser ut så här: <GROUPDIARY GROUPNAME="GruppX"> Byt ut X i GruppX mot den bokstav er grupp har fått. Informationsteknologi #19 Dagboken: Klientprogrammet (1) För att underlätta finns ett klientprogram för dagboken. Detta startas med ant diary I början finns inga användare. Lägg till din egen användare med knappen add user och skriv in ditt för- och efternamn. Unix-id, förkortningar eller olika former av alias godtas ej. Dagboksposterna listas i vänstra delen av fönstret. Man kan redigera en post genom att dubbelklicka på den och skapa en ny med knappen add entry. Informationsteknologi #20 Dagboken: Klientprogrammet (2) När man är klar med sina ändringar så gör man save & exit från menyn. Om man ångrar sina ändringar kan man göra revert från menyn. Då återgår man till senast sparade version. Glöm inte att skicka in ändringarna i CVS! För närvarande kan man inte ta bort poster eller användare med klientprogrammet. Detta kan man dock göra genom att manuellt redigera XML-filen. Informationsteknologi #21 7