
Informationsansvarig: Marie-Louise Gustafsson, webmaster@itn.liu.se
Sidan uppdaterades senast: 2006-05-16
LiU > ITNUtbildning
Utbildningsområden
I denna projektuppgift ska du göra en xmlbaserad internettjänst för flerkanalspublicering av någon typ av data. Exempel på vad internettjänsten kan avhandla är ett kalendarium, ett skivregister och ett redaktionellt system, men ni är fria att komma på egna tjänster. Tjänsten ska kunna utnyttjas genom en webbrowser och genom en waptelefon. Användare ska kunna mata in data för publicering genom ett webbgränssnitt.
Exakt vilken intenettjänst som ska implementeras är valfritt efter samråd med lärarna, så länge som uppgiften ligger inom ramarna. Några förslag ges nedan. Egna utvidgningar är möjliga och rekommenderade. Exakt hur många poäng som ska ges för egna utdvidgningar beror på uppgiftens svårighet.
Se schema för deadline
I grunduppgiften ingår att användare via webben ska kunna mata in data till systemet via ett webbformulär. Datat ska skickas till php-sidor eller motsvarande som bearbetar datat, och stoppar in relevant data i en databas. Om ni väljer någon annan metod än php får ni räkna med att i hög grad klara er utan handledning av programmeringsteknisk karaktär, och sannolikt även stå för "hosting" av tjänsten. Notera att även inputsidorna ska följa principerna för device independence, och ska transformeras till lämplig utkanal med XSLT (se nedan under rubriken "Stylesheets för...").
Det ska även vara möjligt att enkelt modifiera inlagt data. Det enklaste sättet att göra detta är förmodligen att skriva en php-sida eller motsvarande som läser in data från systemet och genererar inputformuläret enligt ovan, men med data från systemet förifyllt. Därefter skickas data igen, systemet ser att posten ifråga redan finns och väljer då att göra en update av det tidigare inmatade datat. Även uppdateringssidorna ska följa device independence och transformeras med hjälp av XSLT.
Datat ska lagras i en mysql-databas. Detta kräver att ni först gör en modell över den databasstruktur ni ska använda, skapar lämpliga tabeller och slutligen implementerar databaskopplingar för att lagra och hämta ut data. Exempel på hur detta kan göras kan ni hitta i RSS/PHP-laborationen och föreläsningsanteckningarna.
Datat i databasen ska på något sätt exporteras till XML för att möjliggöra vidare behandling med xslt-stylesheets. Ni måste göra en DTD som beskriver de datastrukturer ni ska använda. XML ska genereras dynamiskt via php/motsvarande som i RSS/PHP-laborationen.
XSL stylesheets ska göras som översätter informationen i XML-dokumenten till minst två olika ut-enheter, i normalfallet xhtml och xhtml anpassat för liten skärm (xhtml basic eller xhtml mp). Detta ska gälla samtliga sidor, även formulärsidor. Viktigt är att poängtera att målet ska vara att (i möjligaste mån) uppnå Device Independence som det formulerades i DIP-1
DIP-1: Device Independent Access
For some web content or applications to be device independent, it should be possible for a user to obtain a functional user experience associated with its web page identifier via any access mechanism.
Observera att din lösning inte får använda frames. Det mesta man kan vilja använda frames till kan lösas via xslt.
Jag har gjort två screencasts, del 1 och del 2 som beskriver ett enkelt projekt i sin helhet (nästan). Filerna som används finns att ladda ner här
Skriv på ett/ett par A4-papper en beskrivning av systemet du tänker göra. Det ska klart framgå vad syftet med systemet är och vad som ska kunna utföras med systemet (någon form av funktionsbeskrivning).Gör grova skisser på hur gränssnitten kan tänkas se ut. Skriv med eventuella utvidgningar utöver basuppgiften du planerar att göra för att få en bedöming på hur många extrapoäng de kan tänkas ge. Detta moment bör godkännas av mig eller assistenterna innan ni går vidare. Observera att funktionaliteten som beskrivs här absolut inte är helig, det går att modifiera planen efter hand. Om detta moment är inlämnat och är tillräckligt bra senast innan deadline för detta moment (se schema) erhålles en (1) bonuspoäng.
Gör en databasstruktur (dvs de tabeller som ska ingå, vilka kolumner och nycklar de ska ha samt relationerna mellan tabellerna). Gör dessutom en DTD för den/de XML-struktur(er) som ska genereras utifrån innehåll från databasen. Dessa ska innehålla både en innehållsmodell och en navigationsmodell. En utvidgning är att dessutom göra ett XML Schema som beskriver motsvarande struktur. Detta moment ska godkännas innan ni går vidare. Om denna är inlämnad och är tillräckligt bra innan deadline för detta moment (se schema) erhålles en (1) bonuspoäng. XML Schemat kan dock göras i efterhand.
Notera att det troligen kommer krävas åtskilliga XSLT-stylesheets, i extremfallet två stylesheet (ett för webb, ett för mobil) för varje gränssnitts-skiss ni gjort i punkt 1 ovan. Förhoppningsvis blir det dock färre.
Implementera systemet.
Gör en skriftlig rapport där ni beskriver användningsområdet
för ert system. Rapporten ska även innehålla skärmdumpar
samt köranvisningar. Rapporten bör vara ca 5-10 sidor som en tumregel.
En till ett par sidor ska innehålla reflektioner över för- och
nackdelar med att bygga ett publiceringssystem på detta sätt. Systemet
ska sedan demonstreras för läraren. Om detta moment är redovisat
innan deadline för detta moment (se schema) erhålles tre (3) bonuspoäng ..
Skapa ett system för behörighetskontroll med användare och inloggning. Endast registrerade användare med rätt lösenord ska kunna lägga in data i systemet, men vem som helst(?) ska kunna titta på informationen i systemet via html/wml-gränssnitten. Dessutom ska endast behöriga personer kunna ändra på redan inlagt material. Personen som lagt in material ska kunna ändra samma material. Dessutom ska en superanvändare finnas som har rätt att ändra i allt material. Detta kan förslagsvis implementeras som att användare kan tilldelas "egenskapen" superanvändare. Uppgiften löses t.ex. med cookies.
Gör ett system för att administrera användare av systemet, med behörighet och lösenord.
Inför möjligheter att söka i tjänsten. Exempelvis söka efter all Massive Attack-skivor i en skivdatabas, efter alla M-fester i ett kalendarium eller söka efter alla sportartiklar i maj månad i ett redaktionellt system.
Använd Ajax (eller någon liknande XML-baserad teknologi) för att uppdatera delar av webbsidan utan att behövauppdatera hela sidan.
För varje ytterligare utkanal (t.ex. SVG, WML, FO) utöver de obligatoriska två fär du ytterligare 3 poäng. Dessa utkanaler ska skapas genom XSLT-transformationer
Om projektet är av en karaktär att det i någon mening vore meningsfullt med en RSS-feed över inlagda och/eller ändrade poster i systemet är denna utvidgning möjlig
Om projektet innehåller mediafiler, såsom en bilddatabas, musiksite, videosite eller liknande, och är av en karaktär att det i någon mening vore meningsfullt med en podcast över nyinlagda mediafiler är denna utvidgning möjlig
Twitter har utmärkta APIer.. Använd lämpligt API för att få ändringar som sker på din site att dyka upp även i statusuppdateringar på Twitter.
Det finns webbtjänster som gör detta enkelt, hitta och utnyttja dem.
Exempel kan vara Flickr, Vimeo eller YouTube.
Standard är att göra en textrapport, men om du också gör en screencast som kan användas som exempel på kursen i framtida kursomgångar får du ytterligare två poäng. Screencasts kan göras direkt från webbläsaren med http://www.screentoaster.com, från QuickTime som finns i Snow Leopard eller med en uppsjö andra programvaror. Lägg upp videon på YouTube eller Screentoaster.
Gör kontrollmekanismer så att två användare inte samtidigt kan vara inne och modifiera i ett objekt. Detta kan ske genom att checka in ett objekt när man ska editera det, och sedan checka ut det när man har ändrat klart i objektet. Så länge objektet är incheckat är det "read only" för övriga.
Det är ofta onödigt att skicka en full-storleks bild till en mobiltelefon. Bättre är då att skala ner bilder dynamiskt så att de inte överförs data i onödan. Detta kan göras t.ex. genom GD-paketet som finns till exempelvis php.
Det är ofta onödigt att skicka en full-storleks bild till en mobiltelefon. Bättre är då att skala ner bilder dynamiskt så att de inte överförs data i onödan. Detta kan göras t.ex. genom GD-paketet som finns till exempelvis php.
Se t.ex. Jaxe eller OpenOffice för en gratis DocBook-editor (OpenOffice kan spara i docbookformat).
Ni kan sedan gå tillväga så här:
Skriv rapporten i OpenOffice, och spara den i docbookformat. Se till att eventuella bilder ligger i samma katalog som du sparar dokumentet i, så slipper du ändra sökvägar manuellt senare. Spara filen som t.ex. rapport.xml
För att generera en pdf-fil gör ni på samma sätt som i FO-laborationen. Som XSL-stylesheet ska ni ladda ner de docbook-stylesheets som finns på http://sourceforge.net/project/showfiles.php?group_id=21935 (de som heter docbook-xsl, senaste versionen). Det stylesheet ni ska använda är "docbook.xsl" som ligger i katalogen "fo".
Ni kan läsa mer på http://docbook.sourceforge.net/. Det finns otaliga parametrar man kan ändra för att få rapporten att se ut som man vill, för mer info se t.ex. http://wiki.docbook.org/topic/DocBookXslStylesheets. För att få godkänt räcker det dock att ni använder defaultstylesheetsen.
Gör ett system som kan användas för att skriva, redigera och läsa anteckningar. Anteckningarna bör gå att koppla till en eller flera kategorier, t.ex. en viss kurs.
Anpassa systemet så det kan användas för spaced repetition. Denna utvidgning kräver möjligheter att logga in.
Gör det möjligt att avgöra om enskilda anteckningar ska vara läsbara för andra, antingen på gruppnivå eller för samtliga. Det ska då vara möjligt för en användare att se vilka andra anteckningar som är tillgängliga och då lägga till dessa till de privata anteckningarna.
Ett möjligt sätt för att lagra metainformation om själva innehållet i texten är att låta journalisterna/redigerarna använda enkla fomatterings-tags. Förslagsvis kan dessa vara på något XML-format definierat av er, t.ex. <rubrik>Huvudrubrik</rubrik><ingress>en ingress</ingress> och så vidare. Exempel på taggar som bör ingå är
Materialet kan märkas upp med olika typer av meta-information om en artikel, t.ex. sport, lokalt, ekonomi etc, publicerinsdag osv.
Använd NewsML eller liknande existerande format som dataformat.
Gör funktionalitet för att lägga in, hämta ut och söka efter bilder i en bilddatabas. Följande bör ingå:
Gör ett verktyg för planering av vilka artiklar som ska skrivas. När någon bestämmer att en artikel bör skrivas kan denne någon föra in detta i systemet med hjälp av detta verktyg. Om IFRAtrackdelen implementerats ska ett ifratrackmeddelande skickas. Om
Gör ett kalendarium där man kan boka aktiviteter. Följande parametrar ska kunna matas in: (ingår i basuppgiften)
Gör kontroll så att ingen kan lägga in events som krockar med varandra i både rummet och tiden.
Gör ett program som skickar ut information via email (utbyggnad: sms?) om vad som händer den närmaste veckan. Ett sådant program kan sedan scheduleras att köras varje vecka med hjälp av unix-kommandot cron. OBS! Beroende på serverkonfigurering kan detta möjligtvis inte fungera
En (vettig) utbyggnad av detta är att låta användare
"prenumerera" på vissa typer av aktiviteter, exempelvis "jag
vill prenumerera på alla PRU-aktiviteter och M-aktiviteter.
Dessa ska sedan fås genom ett mailutskick (se
ovan).
<xsl:output method="xml"/>
Allmänt
Bra länkar för mobilanpassningsdelen: