Vidareutveckling av AppCMS
|
|
- Isak Andreasson
- för 9 år sedan
- Visningar:
Transkript
1 Examensarbete Vidareutveckling av AppCMS Författare: Gustav Rosenlund & Johan Holmberg Handledare, företag: Rüdiger Lincke, Softwerk AB Datum: Kurskod: 2DV00E, 15hp Nivå: Avancerad Nivå Instutitionen för datavetenskap
2 Abstrakt I denna uppsats kommer vi dokumentera vidareutvecklingen av Softwerk AB s Content Management System kallat AppCMS. I dagsläget innefattar AppCMS plattformarna ios, Android och Windows Phone. Kunderna till Softwerk AB har dock uttryckt ett behov av att även kunna nå ut till sina användare med en webbaserad samt en utskrivningsbar lösning. AppCMS s exportformat har därför analyserats för att undersöka möjligheten till att återanvända det existerande exportformatet från AppCMS även för dessa plattformarna. Undersökningen gav klartecken för att påbörja implementationen av de olika lösningarna. Resultatet av arbetet blev ett tillskott till AppCMS i form av en webb- samt en utskrivningsbar version. I uppsatsen beskrivs de problem vi stött på, hur vi hanterat dessa samt vilka beslut som har tagits. Nyckelord Nyckelord: Strama, Content Management System (CMS), Datavetenskap, Javascript, itext Abstract In this essay we will follow the continuous development of the company Softwerk s Content Management System (CMS) called AppCMS. AppCMS currently includes the following platforms, ios, Android and Windows Phone. The customers of Softwerk have expressed the need of also being able to reach their customers with a web based as well as a pdf version. AppCMS s export format have therefore been analyzed to evaluate the possibility of reusing the existing format from AppCMS for these platforms as well. The examination confirmed that the existing format could be reused for the new solutions and that the implementation phase could begin. This work resulted in an addition to AppCMS in the shape of a web and pdf based version. The essay describes the problem we encountered, how we handled them as well as the decisions taken in the process. Keywords Keywords: Strama, Content Management System (CMS), Computer science, Javascript, itext i
3 Innehåll 1 Inledning Problemformulering och motivation Samhälleliga aspekter Mål och kriterier Disposition 2 2 Bakgrund Strama Begreppsförklaring AppCMS jquery BackboneJS RequireJS Mustache Ajax itext MVC (Model View Controller) Utvecklingsansats 5 3 Krav och funktionalitet Aktörer Användarfall Kravspecifikation Hur vi bemöter kraven Sammanfattning av krav och funktionalitet 8 4 Arkitektur Översikt av systemet Webblösning Utskrivningsbar lösning 10 5 Design och implementation Main Caller Model MainView TopView SideView ContentView itextservlet 15 6 Fallstudie Befintlig mobillösning (ios, Android, WindowsPhone) Resultatet av PDFlösningen Resultatet av Webblösningen Resultat av fallstudier 19 7 Sammanfattning 20 8 Framtiden 21 ii
4 Källförteckning 22 Appendix A A Appendix B C iii
5 1 Inledning Hur vi distribuerar och tar emot information är något som har förändrats drastiskt sedan vi fick tillgång till datorer och smartphones. Från att använda skrivmaskiner och distribuera papperskopior för hand använder vi oss idag av digitala dokument som distribueras via mail och webbsidor. Dock använder vi oss av samma principer som tidigare. Vi har ett dokument som uppdateras och sedan distribueras över mail eller med hjälp av en webbsida, vilket innebär att informationen kan vara mer eller mindre aktuell. Detta medför problem ifall informationen är väldigt föränderlig då det kommer medföra att icke aktuell information kommer cirkulera. Genom att göra informationen tillgänglig över flera plattformar ökar tillgängligheten till aktuell information men dessvärre ökar även underhållet då detta innebär fler plattformar som måste hållas uppdaterade. AppCMS är en utarbetad lösning på detta problem. AppCMS är ett Content Management System (CMS) som distribuerar innehållet över flera plattformar samt erbjuder ett användargränssnitt varifrån man kan utföra ändringar utan att behöva gå in direkt i källkoden. AppCMS är även ett single-source system vilket innebär att ändringar utförda på en applikation påverkar alla plattformar informationen är tillgänglig på. Man slipper därmed genomföra samma ändring flera gånger vilket man måste göra på ett icke single-source system. Detta sparar både tid och pengar åt kunden samtidigt som det gör underhållet av applikationen enklare och informationen mer tillförlitlig, då man med säkerhet vet att alla plattformar är uppdaterade. Softwerk AB är ett företag som arbetar med IT-utveckling. En utav Softwerk AB s kunder är Stramagruppen som är en organisation som arbetar mot ökad antibiotikaresistens. Vi har på uppdrag av Softwerk AB arbetat med att bygga en webblösning och en pdflösning åt Stramagruppen som ska komplettera deras redan existerande informationskanaler. 1.1 Problemformulering och motivation Strama har i dagsläget två separata distributionskanaler för att nå ut till sina användare. Dels den traditionella som innefattar exempelvis ett dokument i fysiskt eller pdf/word format som distribueras via webbsidor eller mail, dels de mobila plattformar som distribueras via AppCMS. Detta leder till problem då all information måste hållas uppdaterad på flera olika plattformar. Då kraven på tillgänglighet ökar samtidigt som användarna vill spendera mindre tid på underhåll uppstår en konflikt. I takt med att applikationen görs tillgänglig på fler plattformar ökar underhållet då detta innebär fler versioner som måste hållas uppdaterade. För att möta dessa krav tillhandahåller Softwerk AB AppCMS varifrån användarna enkelt kan genomföra ändringar på alla plattformar samtidigt. Stramagruppen har haft problem med att deras olika plattformar inte har uppdaterats lika frekvent. För att lösa problemet har nu användarna begärt att två nya plattformar webb och pdf ska adderas till AppCMS, dessa ska om möjligt använda samma exportformat som de redan befintliga lösningarna. Genom att addera de nya lösningarna till AppCMS minimeras merarbete och synkroniseringsproblematik för användarna. Då AppCMS producerar Extensible Markup Language (XML) filer med applikationernas innehållsstruktur kan det uppstå problem med att använda samma exportformat till en webbaserad lösning då systemet redan är i drift. Lösningen ska om möjligt anpassas så att den fungerar med det nuvarande exportformatet. 1
6 Applikationsdatan finns på en seperat domän, detta utgör ett problem då det strider mot same origin policy vilket betyder att applikationen bara kommer åt data som finns på samma server. Problemen som vi ställs inför med pdf-versionen, består av hur vi ska tolka datan som vi får ifrån AppCMS. För att datan ska presenteras korrekt i dokumentet måste vi exempelvis känna av var och när ett sidbyte ska ske. 1.2 Samhälleliga och etiska aspekter Då vi ej utfört några intervjuer, hanterat sekretessbelagt material eller varit i kontakt med människor som delat information med oss har inte behövt ta hänsyn till några etiska aspekter i vårt arbete. Den slutgiltiga produkten som vi har tagit fram hjälper till att hålla rekommendationerna om antibiotikabehandlingar uppdaterade vilket till hjälpa läkare i deras arbete. Således bidrar vår slutgiltiga produkt till samhället. 1.3 Mål och kriterier För tillfället innefattar AppCMS följande plattformar ios, Android och WindowsPhone. Stramas kunder har begärt en webbaserad samt en utskrivningsbar lösning. Vi har därför valt att komplettera deras existerande system med dessa nya lösningar. Lösningarna kommer att utvecklas för Stramaapplikationer men ska även kunna anpassas för att fungera på Softwerk AB s Turistapplikationer. Problemet som vi står inför är att då systemet är aktivt, måste lösningarna skräddarsys för det existerande exportformatet. Lösningarna kommer vara fristående men ska vara generiska för att med så lite konfiguration som möjligt kunna anpassas för alla existerande och framtida Stramaapplikationer. Målen som vi har satt upp och hur dessa möts i projektet är följande. 1. Undersöka och jämföra det existerande exportformatet för olika Stramaapplikationer. Identifiera och verifiera gemensam struktur. Målet möts ifall vi kan hämta information för alla nutida och framtida Stramaapplikationer till vår webbaserade lösning. 2. Designa en generisk arkitektur som stödjer olika applikationsdomäner. Målet möts ifall vi kan presentera information från alla nutida och framtida Stramaapplikationer med vår webbaserade lösning. 3. Återanvänd det existerande exportformatet. Målet möts ifall de nuvarande och framtida Stramaapplikationerna kan använda det existerande exportformatet. 4. Utvärderara olika möjligheter att skapa pdf från de existerande resurserna och implementera den bäst passande lösningen. Målet möts ifall utvärderingskriterierna har blivit noggrant dokumenterade och minst tre alternativ blivit utvärderade där det bästa alternativet implementerats. För validering ska de existerande Stramaapplikationerna kunna konverteras till pdf. 1.4 Disposition I de olika kapitlen förklaras vår tankegång samt lösningarna vi kommit fram till. I delen bakgrund ges en förklaring till de olika begrepp som används i denna uppsats. I Krav och Funktionalitet beskrivs vad systemet förväntas prestera samt vilken funktionalitet som skall finnas med. I Arkitekturkapitlet beskrivs arkitekturen av systemet, vilka beslut som tagits samt varför. Implementationen går att läsa om i Design och 2
7 Implementation. Under Fallstudie presenteras hur samma innehåll ser ut i de olika plattformarna. I slutet av denna uppsats finns en sammanfattning av hela projektet. Vad som inte hanns med under projektet och tankar kring vidareutveckling tas upp allra sist under kapitlet Framtiden. 3
8 2 Bakgrund Detta kapitel ger läsaren korta beskrivningar över olika begrepp samt externa bibliotek som vi har använt i arbetet. 2.1 Strama Strama (strategigruppen för rationell antibiotikaanvändning och minskad antibiotikaresistens) är ett frivilligt nätverk som infördes 1995 på uppdrag av RAF, läkemedelsverket och socialstyrelsen. Nätverket består av Stramagrupper, minst en per landsting, och har till syfte att samordna arbetet mot det ökade hotet av resistenta bakterier. Nätverket av Stramagrupper äger och driver Strama.se som har till syfte att bidra till ett ökat utbyte mellan grupperna, och därmed stödja arbetet för rationell antibiotikabehandling och mot ökad antibiotikaresistens. Stramanätverket samverkar med Stramarådet vilket är ett rådgivande organ till Folkhälsomyndigheten, som också utser rådets ledamöter [8]. 2.2 Begreppsförklaring I detta stycket förklarar vi de begrepp som vi använder oss av i uppsatsen AppCMS AppCMS är ett Content Management System som riktar sig mot mobila enheter såsom smartphones och surfplattor. Innehållet hanteras som single source vilket innebär att alla plattformar använder samma data. Detta sparar tid vid underhåll då en ändring inte behöver göras flera gånger. Genom att även tillhandahålla ett User Interface (UI) blir underhållet enklare och billigare då kompetens inom programmering inte är nödvändigt. AppCMS är ett enkelt och smidigt sätt att underhålla innehållet i applikationer utan att behöva besitta speciell kompetens [2]. Nedanstående bild visar hur AppCMS såg ut innan webb- och pdflösning lagts till. Figur 2.1 Visar hur AppCMS ser ut innan webblösningen och pdflösningen lagts till [10]. Bilden visar flödet hur APPCMS samlar ihop scheman, data från externa källor och resurser för att påverka exportformatet som sedan används av målplattformarna. 4
9 2.2.2 jquery jquery har med en kombination av mångsidighet och utbyggbarhet förändrat sättet som miljoner människor skriver Javascript. jquery gör saker som traversering och manipulation, event hantering, animation och Ajax anrop mycket smidigare med ett enkelt och kraftfullt API som har bra stöd i webbläsarna [5] BackboneJS BackboneJS är ett bibliotek som ger struktur till Javascript-applikationer. Genom att tillämpa struktur på koden blir det möjligt att dela upp koden i återanvändbara vyer och modeller vilket även gör koden lättare att överblicka. Detta gör det enklare att sätta sig in i systemet samt förenklar vidareutveckling av systemet [3] RequireJS RequireJS är ett Javascript-bibliotek som förenklar hanteringen av samtliga bibliotek och klasser i systemet. Detta ger en bättre kvalité och hastighet i systemet [7] Mustache Mustache är ett Javascript-bibliotek för att rendera ut templates. Templates innehåller sid-layout som används för att skapa nya sidor med samma designmönster [6] Ajax AJAX (Asynchronous JavaScript and XML) är en metod som används för att hämta data från en server. AJAX gör det möjligt för webbapplikationer att hämta data från en server utan att behöva ladda om innehållet på sidan [1] itext itext är ett bibliotek som tillåter användaren att manipulera och skapa pdf-filer direkt från exempelvis Java-applikationer. Detta gör att man kan skapa ett pdf-dokument direkt från exempelvis ett xml dokument eller någon annan typ av datakälla [4] MVC (Model View Controller) MVC är ett designmönster inom systemutveckling. Det används för att separera data (Model), presentation (View) så att ändringar som görs i presentationen inte påverkar datan. Presentation och data separeras med hjälp av en Controller som används för att hantera interaktion [9]. 2.3 Utvecklingsansats När vi påbörjade arbetet tillsammans med Softwerk AB ställdes krav på att applikation skulle vara helt fri från server-side kod, detta för att applikationen skulle bli så portabel som möjligt. Detta innebar att lösningen begränsades till att enbart använda sig av HTML, CSS och Javascript. En bra struktur är väldigt svårt att uppnå med ren Javascript, det finns dock lösningar på detta i form av externa bibliotek. Vi valde att jobba med BackboneJS då det ger en så kallad MV* (MVC) struktur som gör koden lättare att överblicka och sätta sig in i. Ett annat krav från Softwerk AB var att vi skulle kunna generera en pdf fil av innehållet på sidan. För att göra detta beslutade vi oss för att använda oss av ett Javascriptbibliotek som heter itext, mer om anledningen till att valet föll på itext framgår av avsnitt
10 3 Krav och funktionalitet I detta kapitel visar vi användarfall tagna från systemet och listar systemkraven. Dessa användarfall gäller alla Strama applikationer men är skrivna med Strama Skåne som exempel därav är det möjligt att vissa av alternativen som användaren uppmanas välja ej finns tillgänglig på de andra Strama applikationerna. Vi listar även aktörerna för systemet. 3.1 Aktörer Aktör Softwerk AB Utvecklare Underhållare Kund Roll Produktägare Ansvarar för att utveckla systemet Ansvarar för att underhålla systemet Slutanvändare av systemet 3.2 Användarfall Användarfall är scenarion framtagna för testning av applikationer. De innehåller instruktioner för att testaren smidigt ska kunna testa funktionaliteten i applikationen. Alla användarfall framtagna för denna applikationen finns i Appendix A 3.3 Kravspecifikation I detta stycke kommer kraven för arbetet att presenteras. Kraven är uppdelade för de olika delarna av arbetet som vi kommer att genomföra (webblösning och pdflösning). Webblösning, funktionella krav 1. Systemet skall kunna hämta all applikationsspecifik data från en konfigurationsfil skriven i xml (applikationsnamn och data-sökväg). 2. Systemet skall kunna hämta information för olika Stramaapplikationer genom användning av Softwerk s AppCMS. 3. Systemet skall kunna använda informationen som hämtas från AppCMS för att rendera innehållet i applikationen. Webblösning, icke-funktionella krav 1. All applikationsspecifik data skall kunna läggas till i en konfigurationsfil skriven i xml. Konfigurationsfilen skall innehålla till exempel, applikationsnamn och data-sökväg. 2. Allt applikationsspecifikt utseende skall hämtas från en konfigurationsfil skriven i Css, till exempel färgscheman. 3. Applikationen skall vara fristående och kunna fungera helt utan server-side kod. 6
11 Pdflösning, krav 1. Systemet skall kunna konvertera en hel Stramaapplikations innehåll till en pdffil. 2. Systemet skall på ett korrekt sätt presentera informationen den erhåller. Detta gäller allt ifrån bilder och tabeller till vanliga element såsom länkar och textavsnitt. Alla element ska renderas på ett sådant sätt att strukturen bibehålls. 3. Lösningen skall kunna integreras med AppCMS. 3.4 Hur vi bemöter kraven I detta stycket presenteras vad vi har gjort för att uppfylla kraven för arbetet. Webblösning, Funktionella krav 1. För att bygga lösningen så dynamisk som möjligt för att den ska kunna hämta information till flertalet olika applikationer togs beslutet att skapa en konfigurationsfil. Denna fil ska innehålla en sökväg till data som ska hämtas. 2. Eftersom lösningen kommer att användas för att rendera flera olika applikationer är det viktigt att lösningen kan hämta informationen tillhörande applikationen. Detta kravet löstes delvis genom att använda en konfigurationsfil för varje applikation. 3. Eftersom de olika Stramaapplikationerna har olika antal alternativ i huvudmenyn samt sidomenyn var det viktigt att bygga applikationen dynamisk så att den skulle kunna rendera applikationerna oberoende av till exempel hur många huvudmeny-alternativ som fanns. Webblösning, Icke-Funktionella krav 1. I och med att alla applikationer har saker gemensamt som de behöver (sökväg till data, namn, etc) tog vi beslutet att skapa en konfigurationsfil för varje applikation, detta för att göra det lättare att skapa nya applikationer och återanvända koden. Istället för att gå in och ändra på en rad olika ställen i koden kan man nu enkelt starta upp en ny applikation genom att enbart gå in och ändra i konfigurationsfilen. 2. Eftersom olika applikationer ser olika ut i form av exempelvis färgscheman valde vi att även lägga till en konfigurations-css. Detta för att göra arbetet med att ändra specifikt utseende på enskilda applikationer lättare och bibehålla en standard-css för alla applikationer. 3. Eftersom att applikationen skulle vara fristående togs beslutet att implementera lösningen enbart i Css, Html och Javascript för att applikationen inte skulle vara låst mot någon server. 7
12 Pdflösning, krav 1. Eftersom att Softwerk s kunder visat intresse för en utskrivningsbar lösning var det viktigt att applikationen skulle kunna konvertera sitt innehållet till en fil av formatet pdf. Detta löste vi med hjälp av en Java Servlet på Softwerk s server. 2. En viktig del i koverteringen som sker via Html till pdf är att behålla strukturen. Det vill säga att pdf-filerna behåller sin struktur och visar de olika elementen (paragrafer, länkar, tabeller och bilder) på ett korrekt sätt. Vi valde därför att använda biblioteket itext som gjorde det möjligt för oss att formatera utseendet i pdf:en 3. Eftersom lösningen ska kunna användas av alla plattformar är det viktigt att lösningen går att implementera på servern, detta tillåter itext då det är kompatibelt med Softwerk s server. 3.5 Sammanfattning av krav och funktionalitet I detta kapitel har vi visat användarfall (use cases) tagna från den webbaserade samt utskrivningsbara lösningen. Dessa lösningar har skapats efter kundens önskemål och ska komplettera de redan existerande plattformana som ingår i AppCMS. Vi visar hur funktionaliteten gällande navigering och konvertering av innehållet i applikationen till pdf format fungerar. Applikationens systemkrav finns även listade med tillhörande förklaring varför dessa är viktiga för systemet. 8
13 4 Arkitektur Då systemet skall fungera för alla existerande samt framtida Stramaapplikationer var systemet tvunget att vara generiskt för att kunna hantera de olika typerna av data som kan förekomma. Datan hämtas från AppCMS och renderas sedan ut på bästa sätt. Konfigurationen bör vara enkel för att smidigt kunna sätta upp sidan. Då de olika Stramaapplikationerna skiljer sig i utseende behövs dessutom ett smidigt sätt för att ändra designen. Detta har givit oss ett antal krav som arkitekturen måste uppfylla för att lösningen skall accepteras. 4.1 Översikt av systemet Systemet består av två separata lösningar. En vars ansvar är att presentera applikationen i en web-browser samt vidarebefordra data till pdf-lösningen som konverterar och formaterar applikationens data till en utskrivningsbar version. 4.2 Webblösning I nedanstående bild visar vi vår arkitektur på webblösningen och hur de olika vyerna och modellerna kommunicerar med varandra. Figur 4.1 Visar hur kommunikationen fungerar i den webbbaserade tjänsten. De olika versionerna som togs fram följer samma kommunikationsschema därav finns inte två olika scheman illustrerade. Kommunikationen i applikationerna följer pilarna, anrop som går emot pilarna är inte tillåtna. Designen som vi följt vid implementation heter MV* och skiljer sig från traditionell MVC i den bemärkelsen att kontrollern är integrerad i Vyn. När vi skulle bestämma hur arkitekturen skulle se ut valde vi att testa två olika lösningar. Den mest markanta skillnaden mellan lösningarna var att alternativ A använde sig av BackboneJS medan alternativ B inte gjorde det. Det som talade emot BackboneJS var att Softwerk inte använt BackboneJS tidigare samt att vi inte kunde använda ramverket fullt ut. Det som talade för var det framtida underhållet då koden blir mer överskådlig och lättare att sätta sig in i. Efter att ha konsulterat med aktiva personer inom branschen och utvärderat lösningarna tillsammans med dem valde vi alternativ A då fördelarna med BackboneJS vägde tyngre än nackdelarna. Genom att använda 9
14 BackboneJS hålls det globala namnutrymmet rent samtidigt som framtida underhåll av systemet blir enklare. För att förenkla konfigurationen valde vi även att inkludera separata konfigurationsfiler. Det finns två filer varav den första specificerar vilken data som skall hämtas till applikationen (xml) och den andra styr utseendet såsom färgschema på sidan (css), övrig mer strukturanpassad design sköts av en separat css fil som gäller för alla applikationerna. Exempel på hur konfigurationsfilen (xml) kan se ut: <?xml version="1.0" encoding="utf-8"?> <data> <name>strama Skåne</name> <src> </data> Utöver detta har vi valt att införa ett namnschema på bilder som används för att placera dessa rätt vilket innebär att det bara är att inkludera dessa i det tillhörande repositoriet för att dessa ska placeras ut korrekt på sidan. 4.3 Utskrivningsbar lösning I detta avsnitt kommer vi att beskriva för- och nackdelar för de alternativ vi valde mellan till arbetets pdf-lösning. itext Efter att att ha undersökt olika lösningar för att konvertera vår applikationsdata till pdf föll beslutet på itext. Anledningen till att beslutet föll på itext var att: itext är kompatibelt med Softwerk s server då det finns ett bibliotek för Java. itext är gratis att använda så länge som man gör sin applikationskod tillgänglig (open source). Eftersom vår applikation är fristående från Softwerk s övriga tjänster utgör detta ingen risk. itext innehåller funktionalitet som uppfyller våra krav på hur Html omvandlas till pdf då det innehåller ett XMLWorker object som är utformat specifikt för bl.a. Html-kod. Det innehållet också stora möjligheter att påverka hur texten formateras. PdfCrowd Nackdelen med PdfCrowd som vi också har testat är att man får betala för varje pdf som man vill konvertera. JSPdf JSPdf visade sig inte vara lämplig för vårt projekt då den ej var applicerbar på Sofwerks server. 10
15 5 Design och implementation I detta kapitel kommer lösningen att presenteras med ett antal kommenterade kodexempel tagna från lösningen. 5.1 Main Nedanstående kodexempel är taget ifrån Main ur vår webblösning. 1. define(["external-library", class ], 2. function (ExternalLibrary, Class) { 3. return { 4. start: function () { 5. //Do stuff here 6. } 7. } 8. }); På rad 1 specificeras vilka externa bibliotek eller klasser som skall hämtas till denna klass med requirejs för att sedan på raden nedanför namnge dessa inom klassen. De är sedan redo att användas. I BackboneJS deklareras funktioner lite annorlunda mot hur det sköts i traditionell Javascript. På rad 4 ser vi ett exempel på hur detta kan se ut. Denna klass gör precis vad funktionsnamnet på rad 4 säger, den startar applikationen. Det som händer i //Do stuff here är att vi skapar instanser av de klasser och bibliotek som vi definierat på rad Caller Detta kodexempel är hämtat från Caller och är den metod som utför Ajax-anropen. 1. request: function (o) { 2. var that = this, 3. ret; $.ajax({ 6. type: "GET", 7. url: o.url, 8. datatype: o.format, 9. async: false, 10. success: function (xml) { 11. if (o.type == that.config) { 12. ret = that.readconfig({ that: that, xml: xml }); 13. } 14. else if (o.type == that.xml) { 15. ret = that.readxml({ that: that, xml: xml }); 16. } 17. else if (o.type == that.pdf) { 18. ret = xml; 19. } } 22. }); 23. return ret; 24. } Tre typer av data kommer in till denna metod på rad 1, varifrån datan ska hämtas (o.url), vilket format (o.format) samt vilken typ av data det rör sig om (o.type). Den tar sedan och vidarebefordrar datan som hämtas till metoder specialiserade för att hantera den. Om det exempelvis handlar om config.xml som ska läsas så anropas readconfig() på rad 12. Anledningen till att vi anropar funktionerna med that och inte this beror på att innanför Ajax-anropet har this ett annat scope. Istället för att peka på Backbone.Model pekar this på $.ajax varifrån vi inte kan nå de andra funktionerna i klassen. Var vi gör 11
16 för att kringgå detta är att peka that mot Backbone.Model på rad 2 för att på så sätt kunna anropa funktionera med that. 1. readconfig: function (o) { 2. var ret = new o.that.model.config(); 3. $(o.xml).find("data").each(function () { 4. ret.name = $(this).find("name")[0].textcontent; 5. ret.src = $(this).find("src")[0].textcontent; 6. }); 7. return ret; 8. } Den rena xml-datan som kommer från ajax-anropet kommer in här ifall det rör sig om config.xml. På rad 2 deklarerar vi variabeln ret och sätter den till typen model.config(). Sedan letar vi innanför <data> i xml-datan efter värdena <name> och <src> och sätter dessa värden till ret. Ret retuneras till request och används senare för att hämta hem datan specifik för applikationen då den innehåller dess destination. 5.3 Model Modellen innehåller ett antal hjälpfunktioner som används för att organisera datan vi hämtar i Caller. 1. return Backbone.Model.extend({ 2. File: function () { 3. this.updated = null; 4. this.tabs = []; 5. }, 6. Tab: function () { 7. this.id = 0; 8. this.tabname = null; 9. this.categories = []; 10. }, 11. Category: function () { 12. this.categoryname = null; 13. this.types = []; 14. }, 15. Type: function () { 16. this.typename = null; 17. this.src = null; 18. }, 19. Config: function () { 20. this.title = null; 21. this.src = null; 22. } 23. }); Fyra av de fem funktionerna används för att få struktur på datan som vi hämtar från AppCMS. File innehåller meny-alternativen som presenteras i den övre menyn, dessa kallas Tab. Tab innehåller ett antal kategorier som vi valt att kalla just Category, dessa preseneras i sidomenyn. En Category kan innehålla ett eller flera underalternativ, dessa är av typen Type och det är här informationen om var datan som efterfrågas av användaren finns tillgängligt. Konfigurationsfilen har gjorts väldigt enkel av anledningen att det ska vara enkelt att sätta upp en ny Stramaapplikation. Den innehåller därför endast namnet på applikationen samt en sökväg till AppCMS där datan ska finnas tillgänglig. 12
17 5.4 MainView Följande kod visar hur MainView är uppbyggd. 1. render: function () { 2. //Setting that to this so that we can call stuff from loop. 3. var that = this; this.topview.render(); 6. this.sideview.render(); $(window).on('hashchange', function (e) { 9. that.contentview.render(); 10. }); 11. this.contentview.render(); 12. } Genom att dela upp sidan i olika sektioner och sedan fördela ansvaret över dessa mellan ett antal vyer får MainView en kontrollerande roll (Ansvarar för, när, var och hur anropen sker). På raderna 5, 6, 9 och 11 sker anropen mot dessa. Anledningen till att det sker två anrop mot ContentView har att göra med att innehållet ska renderas vid två olika tillfällen, vid interaktion med sidomenyn samt vid en laddning av sidan. 1. rendertitle: function (o) { 2. $("title").html(o); 3. $("#header").html("<h1>" + o + "</h1>"); 4. } Headern samt titeln är det enda som renderas från MainView. Utöver detta hanterar denna klass endast anrop till de andra vy-klasserna. 5.5 TopView I BackboneJS ser events annorlunda ut mot traditionell Javascript. 1. events: { 2. "click.tab": "settab", 3. "click.home": "renderhome" 4. } BackboneJS stödjer de vanliga eventen direkt och de skrivs som i exemplet ovan. De övriga går att skriva på traditionellt vis som i exemplet på MainView. 1. render: function () { 2. that.$el.append("<ul id='topnav'><li><a class='home' name='hem'>hem</a></li></ul>"); 3. $.each(this.data.tabs, function () { 4. var html = Mustache.render("<li><a class='tab' name='{{src}}'>{{name}}</a></li>", { name: a. this.tabname, src: this.id }); 5. $("#topnav").append(html); 6. }); 7. $("[name=0]").addclass("active"); 8. } Ovanstående kod renderar huvudmenyn i dess standardutförande. På rad två läggs hemalternativet till, sedan loopas alternativen ut med hjälp av jquery och mustache. Mustache.render tar två parametrar varav den första innehåller html-kod inklusive markeringar var indatan ska placeras. I ovanstående kodutdrag har vi ett namn som ska placeras innanför en a-tag. Detta markeras med följande {{name}} innanför a-taggen i html-koden, parameter nummer två som innehåller datan vi skickar in bör se ut som följande {name: vårt namn }. Detta ger oss Mustache.render( <a>{{name}}</a>, {name: vårt namn });. Detta behöver sedan läggas till på sidan vilket görs på rad 5 i kodutdraget. 13
18 5.6 SideView Det finns två olika alternativ i sidomenyn, alternativ med och utan subkategorier. 1. render: function (o) { 2. this.$el.empty(); 3. var html, that = this, id = 0; 4. if (o) { 5. this.tab = o; 6. } 7. that.$el.append("<ul id='sidenav'></ul>"); 8. $.each(this.data.tabs[this.tab].categories, function () { 9. if (this.types.length == 1) { 10. //Rendera alternativ utan subkategorier 11. } 12. else { 13. //Rendera alternativ med subkategorier 14. } 15. }); 16. $("#sidenav").find("[name=category]").addclass("iconclosed"); 17. } För att skilja på dessa kontrollerar vi hur många types de har. Types är subkategorier och ifall en category endast har en type renderas den med en länk som pekar på var dess information finns i AppCMS. Ifall filen har subkategorier får den ett attribut som skiljer den från alternativen utan subkategorier. På rad 16 sätts en klass på de alternativ som innehåller subkategorier som används för att indikera just detta för användaren. 1. rendersubmenus: function (e) { 2. $("#sidenav").find("[name=category]").each(function () { 3. if ($(this).hasclass("iconopen")) { 4. $(this).removeclass("iconopen").addclass("iconclosed"); 5. } 6. }); 7. if (subcategories.exist) { 8. //Renderar subkategorier 9. } 10. else { 11. //Tar bort subkategorier 12. } 13. } Vid interaktion med ett alternativ i sidomenyn innehållandes subkategorier anropas denna metod. Det första som sker är att klassen på det klickade elementet ändras för att indikera för användaren att kategorin expanderas och på så sätt presentera subkategorierna. Presentationen av kategorierna sker sedan på rad 8 efter att ha kontrollerat att dessa inte redan var renderade. Om så var fallet tas dessa bort på rad 12. Utöver de presenterade exemplen innehåller SideView två funktioner varav den ena sätter en aktiv klass på det aktiva valet och den andra tar bort just denna. 14
19 5.7 ContentView Nedanstående kod renderar informationen som efterfrågas av användaren. 1. render: function () { var hash = location.hash; 4. this.url = hash.replace("#", ""); if (this.url!= "") { 7. $("#content").load(this.config.src + "content/" + this.url, function () { 8. $('#content a').each(function () { 9. var element = $(this), 10. link = element.attr('href'); 11. element.attr('href', link.replace('html:', '#')); 12. }); 13. }); 14. } 15. else { 16. this.renderhome(); 17. } 18. } På raderna 2 och 3 hämtas datans id från urln. Ifall urln inte var tom hämtas det efterfrågade innehållet från AppCMS. Raderna 8 till 12 pekar om länkar som blivit felaktiga på grund av att innehållet presenteras på en annan destination. Ifall inget innehåll efterfrågats eller användaren aktivt klickat på hemalternativet presenteras startsidan. 5.8 itextservlet itextservlet är vår server-side kod som ansvarar för att tillhandahålla en Strama-version i utskrivningsbart format (pdf). Pdf-lösningen kan användas till alla applikationer som körs med weblösningen och är skriven i Java för att kunna användas på Softwerks server. 1. public class itextservlet extends HttpServlet { protected void service(httpservletrequest request, HttpServletResponse response) 4. throws ServletException, IOException { 5. request.setcharacterencoding("utf-8"); 6. try { 7. String text = request.getparameter("text"); 8. if (text == null text.trim().length() == 0) { 9. text = "No text found"; 10. } 11. Document document = new Document(); 12. ByteArrayOutputStream baos = new ByteArrayOutputStream(); 13. PdfWriter pdfwriter = PdfWriter.getInstance(document, baos); 14. XMLWorkerHelper worker = XMLWorkerHelper.getInstance(); 15. document.open(); 16. worker.parsexhtml(pdfwriter, document, new StringReader(text)); 17. document.close(); 18. response.setcontenttype("application/pdf"); 19. response.setcontentlength(baos.size()); 20. OutputStream os = response.getoutputstream(); 21. baos.writeto(os); 22. os.flush(); 23. os.close(); 24. } 25. catch(documentexception e) { 26. throw new IOException(e.getMessage()); 27. } 28. } 29. } 15
20 Html skickas till itextservlet från vår webblösning som en sträng. På rad 5 sätts charset till utf-8 för att kunna hantera svenska tecken som ÅÄÖåäö. Den inskickade html-strängen hämtas sedan på rad 8 och kontrolleras så att den inte är tom. På rad 12 skapar vi ett nytt pdf-dokument som vi sedan skriver till på rad 17 med hjälp av XMLWorkerHelper objektet. Anledningen till att vi använder oss av XMLWorkerHelper är att den kan direktöversätta element i html till motsvararande i pdf. Vi använder sedan flush() för att se till att den buffrade datan blir utskriven till användaren på rad
21 6 Fallstudier I detta kapitel presenteras exempel tagna från både befintliga och nya lösningar. Genom att visa samma text taget från olika plattformar kan vi se skillnader/likheter. 6.1 Befintlig mobillösning (ios, Android, WindowsPhone) Exemplet är taget från ios. 17
22 6.2 Resultatet av PDFlösningen 18
23 6.3 Resultatet av Webblösningen 6.4 Resultat av fallstudier Resultatet av fallstudierna visar att i samtliga fall behålls textens format som exporteras från AppCMS. Det som skiljer lösningarna åt är menyerna. I Webblösningen finns en huvudmeny längst upp på sidan och en undermeny till vänster, PDF-lösningen använder menyalternativen som huvudrubriker för det olika styckena. I de mobila lösningarna hittar man huvudmenyn i nederkant av skärmen som sedan tar användaren vidare till en dropdown meny med underalternativ. 19
24 7 Sammanfattning Problemet vi stod inför vid början av detta examensarbete var att Softwerk AB s kunder hade uttryckt ett behov av att addera ytterligare två plattformar till de redan befintliga tre som AppCMS vid detta tillfället innefattade. Utöver ios, Android och Windows Phone ville de inkludera en webbaserad samt en utskrivningsbar lösning i pdf-format till AppCMS då dessa för tillfället sköttes separat, detta för att enklare kunna hålla alla plattformer synkroniserade med varandra och minimera underhållsarbetet. Då AppCMS producerar xml filer med applikationernas innehållsstruktur kunde det uppstå problem med att använda samma exportformat till en webbaserad lösning då systemet redan var i drift. Lösningen skulle om möjligt anpassas så att den fungerade med det nuvarande exportformatet. Detta innebar att vi skulle undersöka det befintliga exportformatet och identifiera gemensamma nämnare samt applikationerna för att få en ide hur detta skulle genomföras. Vi implementerade vår webbaserade lösning med enbart Javascript, Html och Css. Anledningen till detta var att lösningen skulle bli så fristående som möjligt och inte vara beroende av en server. Lösningen använder det redan befintliga exportformatet som AppCMS tillhandahåller. Därav har inga ändringar på server-sidan behövt göras utöver att tillåta CORS requests, då vi annars inte kunde hämta eller skicka information för att det stred mot same origin policy. Den utskrivningsbara lösningen har kodats i Java och skapar med hjälp av itext pdf:er av inskickad Html. Det hela fungerar så att den webbaserade lösningen samlar ihop all information och vidarebefordrar denna till en Java Servlet som skapar en pdf av informationen. Eftersom våra lösningar skulle fungera på flertalet olika Stramaapplikationer var vi tvungna att undersöka de olika applikationerna för att identifiera gemensamma nämnare samt vad som skiljde dem åt. Efter att ha genomfört dessa undersökningar av de existerande Stramaapplikationerna kom vi fram till att det fanns ett behov av att skapa en konfigurationsfil för applikationen för att underlätta konfigurationen. Denna fil skulle innehålla data som var specifik för varje enskild applikation, till exempel sökvägen för datan samt namnet på applikationen. I och med skapandet av konfigurationsfilen behöver man nu endast gå in och ändra på ett ställe i koden om man vill lägga till en ny applikation. För att med enkelhet kunna justera sidans utseende bestämde vi oss för att utöver användning av en standard Css även lägga till en Css konfigurationsfil som gjorde det möjligt för användaren att med enkelhet gå in och ändra saker som färger etc, utan att påverka resterande Css. 20
25 8 Framtiden I detta stycket som tar vi upp saker som vi under arbetets gång har kommit fram till att vi tycker kan förbättras i AppCMS och vad som ska göras i framtida arbeten. 1. Innehållet på Stramaapplikationerna i form av textsidor hämtas i dagsläget från ett separat repositorium från Softwerk s AppCMS ( I och med att alla strama applikationerna innehåller en hemskärm till exempel: föreslår vi att man även lägger till en hemskärm till varje applikation liknande innehållet som finns i web/content. 2. Se till att även Turist applikationerna kan använda webblösningen. 3. PDF lösningen som vi har skapat under arbetets gång täcker de kraven som vi fått av Softwerk AB, det bör dock tittas närmare på hur texten formateras/struktureras. 21
26 Källförteckning [1] AJAX, 2014, Källa: (Hämtad ) [2] AppCMS, 2014, Källa: Softwerks AppCMS pdf (Hämtad ) [3] BackboneJS, 2014, Källa: (Hämtad ) [4] itext, 2014, Källa: (Hämtad ) [5] jquery, 2014, Källa: (Hämtad ) [6] Mustache, 2014 Källa: (Hämtad ) [7] RequireJS, 2014, Källa: (Hämtad ) [8] Strama, 2014, Källa: (Hämtad ) [9] MVC, 2014, Källa: (Hämtad ) [10] Figur 2.1, 2014, Källa: Rüdiger Lincke, AppCMS-product-description (Hämtad 2014) 22
27 Appendix A I Appendix A finns ett antal use cases till Strama applikationen, dessa används som hjälpmedel för testning av applikationen. AF1 Navigera till Strama Skåne. Förkrav 1. AppCMS har exporterat data för Strama Skåne applikationen. 2. Webblösningen för Strama Skåne finns tillgänglig. Huvudscenario 1. Startar när en användare navigerar till Strama Skåne. 2. Systemet renderar Strama Skåne sidan, hemskärmen visas på sidans text del och ett huvudmeny alternativ markeras för att indikera vilken sidomeny som är aktiv. AF2 Navigera till Öppenvård i Strama Skåne. Förkrav 1. Användaren har navigerat till Strama Skåne. (AF1) Huvudscenario 1. Startar när användaren trycker på Öppenvård i huvudmenyn. 2. Systemet renderar öppenvårds menyalternativ i sidomenyn och Öppenvårds länken i huvudmenyn blir markerad som aktiv. AF3 Visa innehåll på Strama Skåne. Förkrav 1. Användaren har navigerat till Strama Skåne. (AF1) 2. Användaren har navigerat till Öppenvård (AF2). Huvudscenario 1. Startar när användaren trycker på Slutenvård i huvudmenyn. 2. Systemet renderar slutenvårds menyalternativ i sidomenyn och slutenvård länken i huvudmenyn blir markerad som aktiv. 3. Användaren trycker på valfri kategori i sidomeny fältet som har en pil som indikerar på undermenyer. 4. Systemet renderar undermenyer till valt menyalternativ, pilen på valda länkens högersida pekar neråt för att indikera att underalternativ visas. 5. Användaren trycker på valfritt underalternativ. 6. Systemet renderar texten tillhörande det aktiva alternativet och vald länk markeras med grå bakgrund för att indikera att den är aktiv. AF4 Stäng en öppen flik i sidomenyn. Förkrav 1. Användaren har öppnat en flik i sidomenyn (AF3). Huvudscenario 1. Startar när användaren trycker på ett öppet menyalternativ i sidomenyn. 2. Systemet tar bort de renderade underalternativen och pilen på sidan av länken pekar uppåt för att indikera att fliken är stängd. AF5 Skapa pdf. Förkrav 1. Användaren har navigerat till Strama Skåne. Huvudscenario 1. Startar när användaren klickar på alternativet Strama till PDF i huvudmenyn.
28 2. Systemet visar applikationens innehåll som pdf. B
29 Appendix B Detta är ingen fullständig dokumentation av de metoder som använts i samband med detta projekt. Denna bilaga avser endast ge en snabb inblick i lösningen mer specifikt hur man konfigurerar den samt lite kortare information kring de olika biblioteken i ett vidareutvecklingssyfte. För att läsa mer kring lösningen och de olika biblioteken finns information i projektdokumentationen samt länkar till den officiella dokumentationen. Klasser Om ni kollar högst upp i källkoden på valfri vy eller modell klass kommer ni se hur de olika biblioteken laddas in med hjälp av require.js. Det som sker är att innanför [] väljer man de bibliotek man specificerat i config.js som man vill ladda in till funktionen hela klassen omsluts av. Det som sedan sker är man namnger dessa innanför () för att sedan få tillgång till dessa i klassen. define(['backbone'], function (Backbone) {kod}); 'backbone' laddas in och namnges till 'Backbone' för att sedan kunna användas i funktionen där det står 'kod'. I backbone deklarerar man typ på klasserna i början likt följande. Backbone.View.extend({kod}); eller Backbone.Model.extend({kod}); Funktioner Funktioner i backbone.js ser annorlunda ut men i övrigt fungerar de precis som vanliga Javascript funktioner. Render: function () {kod} Initialize fungerar likt en konstruktor. Den körs endast när klassen blir instantierad, data man skickar in till klassen skall hanteras här. Initialize: function (o) {kod}) Events Likt funktioner skiljer sig även events mot traditionell javascript. I backbone samlar du alla events innanför events specen. Villkoret skrivs på vänster sida av kolonet och funktionen till höger. events: { 'click.button' : 'dosomething', 'click.button2' : 'dosomethingelse' } Konfiguration av sida Alla konfigurationsalternativ har placerats i config katalogen för att förenkla processen. För att ladda in en ny Strama sida behöver ni endast ändra <src> som finns i config.xml samt <name> för att få rätt titel. För att ändra utseende behöver ni endast gå till site.css, här ligger sidans färgschema. Bilder och ikoner som används på sidan finns i egna kataloger. Startsidan som presenteras finns även den här i config-mappen vid namn homepage.html C
30
Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer.
Informationsinfrastruktur 7.5 hp Mattias Nordlindh Inledning Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer. Dokumentet består av
Appar med ryggrad. Introduktion till JavaScriptramverket Backbone
Appar med ryggrad Introduktion till JavaScriptramverket Backbone Vanlig webbsida Databas MVC - Model View Controller MVC - Model View Controller MVC Backbone.js Ger struktur Bygger på MVC konceptet Tvingar
Användarhandledning Version 1.2
Användarhandledning Version 1.2 Innehåll Bakgrund... 2 Börja programmera i Xtat... 3 Allmänna tips... 3 Grunderna... 3 Kommentarer i språket... 4 Variabler... 4 Matematik... 5 Arrayer... 5 på skärmen...
Räkna med ASP.NET MVC 3
Instruktion Räkna med ASP.NET MVC 3 Introduktionsuppgift Författare: Mats Loock Kurs: ASP.NET MVC Kurskod:1DV409 Innehåll Du ska följa steg-för-steg -instruktionen i denna introduktionsuppgift och skapa
- A Scrum Planning Tool Case Study to Evaluate the The Rich AJAX Platform
Datavetenskap Opponent(er): Jhonny Carvajal Johan Bjärneryd Respondent(er): Fredrik Häggbom Erik Olsson Haglund Scrumptious - A Scrum Planning Tool Case Study to Evaluate the The Rich AJAX Platform Oppositionsrapport,
Elektronisk publicering TNMK30
Elektronisk publicering TNMK30 Förra gången Usability & interaktionsdesign Projektintroduktion Bildbehandling. Byte av handledare Istället för Martin Johansson Annsofi Pettersson, annpe655@student.liu.se
Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.
Bankkonto - övning Övningar att göra efter lärardemostration. Filen bankkonto.zip innehåller ett projekt med klassen Bankkonto. Zippa upp denna fil och öppna projektet i BlueJ och skriv vidare på klassen
Logga in på din hemsideadministration genom dina inloggningsuppgifter du fått.
Joomla Guide 2.5.11 MENYER Sida 1 av 41 MENYER En meny är centerpunkten på en hemsida. Det är ifrån denna man utgår om man vill navigera på hemsidan. Menyer kan vara vertikala eller horisontella och är
Webbteknik. Innehåll. Historisk återblick Teknisk beskrivning Märkspråk Standardisering Trender. En kort introduktion
Webbteknik En kort introduktion Innehåll Historisk återblick Teknisk beskrivning Märkspråk Standardisering Trender 1 Historisk återblick 89 CERN Tim Berners Lee Ett plattformsoberoende sätt att sprida
JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript?
Innehåll JavaScript En introduktion till skriptspråket JavaScript och till DOM Scripting Introduktion till JavaScript och DOM JavaScript Syntax DOM och DOM Scripting Händelsehantering och CSS Historia
FrontPage Express. Ämne: Datorkunskap (Internet) Handledare: Thomas Granhäll
FrontPage Express I programpaketet Internet Explorer 4.0 och 5.0 ingår också FrontPage Express som installeras vid en fullständig installation. Det är ett program som man kan använda för att skapa egna
Komponenter med COM (och COM+/VC++ 7.0)
MÄLARDALENS HÖGSKOLA Komponenter med COM (och COM+/VC++ 7.0) Med Visual C++ 7.0 COM-komponent EI0230 Komponentbaserad applikationsutveckling oktober 2003 Om denna sammanfattning Denna sammanfattning innehåller
Kursplanering Utveckling av webbapplikationer
Kursplanering Utveckling av webbapplikationer Fakta Ämne Programmering Poäng 40 Yh-poäng Kurskod YSYS-WEB Klass Systemutvecklare.NET Syfte och koppling till yrkesrollen För att kunna arbeta som systemutvecklare
Kopiering av objekt i Java
1 (6) Kopiering av objekt i Java Först När du läser detta papper bör du samtidigt studera dokumentationen för klasserna Object, Cloneable (java.lang) och ArrayList (java.util). Mycket blir klarare genom
Programutvecklingsprojekt Projektgrupp Elvin. Detailed Design Document
Programutvecklingsprojekt 2003-04-24 Projektgrupp Elvin Detailed Design Document Björn Engdahl Fredrik Dahlström Mats Eriksson Staffan Friberg Thomas Glod Tom Eriksson engdahl@kth.se fd@kth.se d94-mae@nada.kth.se
Gränssnitt för FakeGranska. Lars Mattsson
Gränssnitt för FakeGranska av Lars Mattsson (larsmatt@kth.se) Innehållsförteckning 1 Introduktion...3 2 Genomförande:...3 3 Användning...5 4 Kända buggar:...6 5 Källförteckning...6 2 1 Introduktion Taken
Innehåll Introduktion... 3 InteractiveScene.config... 3 Scener <scenes>... 3 Typsnitt <fonts>... 3 Övergångar <transitions>...
Innehåll Introduktion... 3 InteractiveScene.config... 3 Scener ... 3 Typsnitt ... 3 Övergångar ... 4 Mall för slide ... 5 , ...
Användarmanual. Fakturaspecifikation. Trafikverkets system för fakturaspecifikation. Version 1.4, 2010-12-20
Användarmanual Fakturaspecifikation Trafikverkets system för fakturaspecifikation Version 1.4, 2010-12-20 0 Utgivare: Trafikverket Kontakt: fakturering.jarnvag@trafikverket.se Distributör: Trafikverket,
Grundläggande funktioner i CMS ifrån Argonova Systems, 2011.
Grundläggande funktioner i CMS ifrån Argonova Systems, 2011. Syfte Detta dokument tar upp grundläggande funktioner i Argonova Systems CMS i syfte att förbereda och stödja användaren, vid sidan av och inför
Guide för Innehållsleverantörer
Library of Labs Content Provider s Guide Guide för Innehållsleverantörer Inom LiLa ramverket är innehållsleverantörer ansvariga för att skapa experiment som "LiLa Learning Objects", att ladda upp dessa
Exemple på Tentauppgifter Webbprogrammering
LUNDS TEKNISKA HÖGSKOLA 1(6) Institutionen för datavetenskap Exemple på Tentauppgifter Webbprogrammering 2019 02 28 version 2019-03-20 15:36:14+01:00 Tillåtna hjälpmedel: inga. Detta är ett exempel på
Klient/server. Översikt. Lektion 1: Webbtekniker från Microsoft. Webbteknik från Microsoft. Klient/server. Designmönster. Utrullning.
Klient/server Översikt Webbteknik från Microsoft. Klient/server. Designmönster. Utrullning. Lektion 1: Webbtekniker från Microsoft Microsoft webbtekniker. ASP.NET. Klientsidan. Internet Information Server.
E12 "Evil is going on"
E12 "Evil is going on" Föreläsning 12, HT2014 AJAX Kurs: 1dv403 Webbteknik I Johan Leitet E12 Evil is going on Dagens agenda AJAX XMLHttpRequest-objektet JSON Vad är AJAX? Asynchronous JavaScript and XML
Webbprogrammering TDDD52
Webbprogrammering TDDD52 ERD MySQL+PHP. Förra gången Idag Javascript jquery Progressive enhancement XML & AJAX Lab 4 och 5 Sammanfattning av kursen. Om databastabeller varje tabell ska beskriva en typ
Axalon Process Navigator SP Användarhandledning
Axalon Process Navigator SP Användarhandledning Axalon Process Navigator SP 2013, senast reviderad: den 11 juni 2014 Innehåll Innehåll... 2 Om denna användarhandledning... 3 Syfte... 3 Vem är denna handledning
Instruktioner. Innehåll: 1. Vad är Kimsoft Control (SIDA 2) 3. Hem (SIDA 2)
1 Instruktioner Innehåll: 1. Vad är Kimsoft Control (SIDA 2) 2. Logga in (SIDA 2) 3. Hem (SIDA 2) 4. Skapa/redigera sidor (SIDA 3) 41. Lägg till ny sida (SIDA 3) 42. Avancerat (SIDA 4) 5. Texteditor (SIDA
Webbtillgänglighet. Webbtillgänglighet. World Wide Web Consortium. Web Accessibility Initiative, WAI WCAG 2.0 WCAG 1.0
Webbtillgänglighet Webbtillgänglighet Att göra webbinnehåll så att de är tillgängliga för alla oavsett vilka funktionsnedsättningar man har Att göra webbinnehåll tillgängligt oavsett vilken in- och utmatningsutrustning
Insamlingsverktyg - teknisk beskrivning av metadataformuläret
Digitala leveranser Insamlingsverktyg - teknisk beskrivning av metadataformuläret Innehåll: Allmänt Layout och uppbyggnad Hur man använder programmet Starta Fylla i metadata Skapa metadatafiler och leverera
Widgetguiden Vad är Publits widgetshop?
Widgetguiden Den här guiden är till för dig som vill använda Publits widgetshop för att enkelt sälja böcker direkt på din egen hemsida, blog eller Facebook. Här går vi steg för steg igenom processen för
Slutrapport. APFy.me
Slutrapport APFy.me Innehållsförteckning 1 Inledning... 3 2 Mål och syfte... 3 3 Projektbeskrivning... 3 4 Leverabler... 4 5 Resultat... 4 6 Utvärdering och analys... 4 6.1 Utvärdering av resultat... 4
En integration av betalningssystem på hemsida
Beteckning: Akademin för teknik och miljö En integration av betalningssystem på hemsida Benjamin Leetmaa Maj 2011 Examensarbete, 15 högskolepoäng, B Datavetenskap Ingenjör Online Examinator: Bengt Östberg
HejKalmar app. Projektrapport. Webbprojekt I
Projektrapport HejKalmar app Webbprojekt I Författare: Cecilia Lindqvist, Linus Lundevall, Christofer Olaison, Andreas Söderström och Isak Utegård Handledare: Tobias Ohlsson Examinator: Tobias Ohlsson
360 emeetings. Papperslösa möten på ipad eller iphone
360 emeetings Papperslösa möten på ipad eller iphone 360 emeetings ver. 1.0-2014 360 emeetings för Apple ios Papperslösa möten på ipad eller iphone 360 emeetings hjälper dig och din verksamhet att minska
Introduk+on +ll programmering i JavaScript
Föreläsning i webbdesign Introduk+on +ll programmering i JavaScript Rune Körnefors Medieteknik 1 2012 Rune Körnefors rune.kornefors@lnu.se Språk Naturliga språk Mänsklig kommunika+on T.ex. Svenska, engelska,
Tentamen i EDAF25. 1 juni Skrivtid: Skriv inte med färgpenna enda tillåtna färg är svart/blyerts.
Tentamen i EDAF5 juni 07 Skrivtid: 4-9 Skriv bara på ena sidan av pappret tentorna kommer att scannas in, och endast framsidorna rättas. Skriv inte med färgpenna enda tillåtna färg är svart/blyerts. Skriv
Karusell med länkade omslagsbilder
[Skriv text] Axiell Arena Karusell med länkade omslagsbilder Axiell har tagit fram en funktion som presenterar titlar/katalogposter i Arena i form av en interaktiv karusell som visar omslagsbilder. Funktionen
Användarhandbok. version 1.15.8. sida 1 av 15
Användarhandbok version 1.15.8 sida 1 av 15 Innehållsförteckning Introduktion... 4 Gränssnitt... 4 Inloggning... 5 Användarnamn och lösenord... 5 Kod... 5 Startsida... 6 Menyer... 6 Systembild... 7 Sidobjekt...
"Distributed Watchdog System"
Datavetenskap Emma Henriksson Ola Ekelund Oppositionsrapport på uppsatsen "Distributed Watchdog System" Oppositionsrapport, C-nivå 2005 1 Sammanfattande omdöme på exjobbet Projektet tycks ha varit av
Översikt. Installation av EasyPHP 1. Ladda ner från http://www.easyphp.org/ Jag använder Release 5.3.4.0 2. Installera EasyPHP.
Laboration 1 Översikt 1. Att komma igång med laborationsmiljön a. installera Aptana Studio 3 b. Installera EasyPHP 2. Testa lite programmering a. Testa enkla uppgifter b. Testa automatiskt 3. Skapa inloggningsformulär
Inloggning till Treserva via extern dator
Inloggning till Treserva via extern dator Innehåll 1 Inloggningsalternativ... 2 1.1 Inloggning via SMS... 2 1.2 Inloggning via E-legitimation... 4 2 Utloggning... 5 3 Helskärmsläge... 6 4 Bläddra mellan
Introduktion av Quality Works 2.4
Introduktion av Quality Works 2.4 Den här introduktionen vägleder dig igenom de vanligaste funktionerna i Quality Works och hur man kan använda sig av programmet för att skapa en enkel manual för sitt
TDP013. Webbprogrammering och interaktivitet. AJAX, CORS & jquery. Marcus Bendtsen Institutionen för Datavetenskap (IDA)
TDP013 Webbprogrammering och interaktivitet AJAX, CORS & jquery Marcus Bendtsen Institutionen för Datavetenskap (IDA) Innan AJAX Ett synkront webb 1. Användaren klickar länk, formulär, bild etc 2. Anrop
Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID
Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID Vad gör vi här? Programmeringsteknik fördjupningskurs (EDAA01; 7,5hp) Valfri för F, N & BME (kan läsas från åk 2 eller i sommar!) Avancerad
Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.
Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java
Sänk kostnaderna genom a/ ställa rä/ krav och testa effektivt
Sänk kostnaderna genom a/ ställa rä/ krav och testa effektivt Kravhantering / Testprocess - Agenda AGENDA Grundläggande kravhanteringsprocess. Insamling, dokumentation, prioritering, Test och förvaltning
Användarmanual. Meetings 1.5
Användarmanual Meetings 1.5 Revisionsnummer: 1 Dokumentnamn: FormPipe Meetings 1.5 - Användarmanual ipad Datum: 2013-12-05 Formpipe Software AB. All rights reserved. 2 (23) Innehållsförteckning 1 INLEDNING...
2009-08-20. Manual för Typo3 version 4.2
2009-08-20 Manual för Typo3 version 4.2 1 2 Innehåll: 1. Allmänt 4 2. Grunderna i Typo3 5 2.1 Knappar 5 2.2 Inloggning 5 2.3 Den inledande vyn 6 2.4 Sidträdet 7 3. Sidor 8 3.1 Skapa en ny sida 8 3.1.1
Dok nr OSF/AV-15:003, ver E Inloggning till Treserva via extern dator
Inloggning till Treserva via extern dator Innehåll 1 Inloggningsalternativ... 2 1.1 Inloggning via SMS... 2 1.2 Inloggning via E-legitimation... 4 2 Utloggning... 5 3 Helskärmsläge... 6 4 Bläddra mellan
Distribuerade System, HT03
UMEÅ UNIVERSITET 21 oktober 2003 Institutionen för Datavetenskap Laborationsrapport Laboration Middleware Distribuerade System, HT03 Jini Namn: Anders Holm, c00asm@cs.umu.se Kjell Johansson, c00kjn@cs.umu.se
Compose Connect. Hosted Exchange
Sida 1 av 15 Compose Connect Hosted Exchange Presentation av lösningen: Compose Hosted Exchange Följande möjligheter finns för hantering av e-post 1. Lokalinstallerad Outlook-klient För att kunna använda
F8 Webbteknologier 1. Dynamiska webbsidor
Dynamiska webbsidor F8 Webbteknologier 1 EDA095 Roger Henriksson Datavetenskap Lunds universitet HTML är statisk. En sida får sitt utseende bestämt när en webbdesigner skapar den. Ofta vill man ha mera
Introduktion till integrering av Schenkers e-tjänster. Version 2.0
Introduktion till integrering av Schenkers e- Version 2.0 Datum: 2008-06-18 Sida 2 av 8 Revisionshistorik Lägg senaste ändringen först! Datum Version Revision 2008-06-18 2.0 Stora delar av introduktionen
Objektsamlingar i Java
1 (6) Objektsamlingar i Java Objektorienterad programmering 3 Syfte Att ge träning i att använda objektsamlingar i Java. Mål Efter övningen skall du kunna använda objektsamlingsklasserna ArrayList och
Laboration 1 XML, XPath, XSLT och JSON
Webbteknik II, 1DV449 Laboration 1 XML, XPath, XSLT och JSON Author: John Häggerud & Johan Leitet Semester: HT 2011 Course code: 1DV449 Inledning I denna första laboration är det tanken att Du ska bekanta
Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2
AID-nummer: Datum: 2014-12-18 Kurskod: 725G61 Provkod: LAB1 Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 Skrivningstid: 2014-12-18 klockan 8.00-10.00. Hjälpmedel: Inga. För varje fråga
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Interface Generiska klasser Undantag
E-post. Safari och webbläsare. Öppna PDF-filer i Reader. Så här öppnar du en PDF-fil:
Adobe Reader-hjälp för ios: Öppna PDF-filer i Reader Öppna PDF-filer i Reader v. 11.2.0, Jan. 21 2013 Så här öppnar du en PDF-fil: 1. Hämta PDF-filen på din enhet via valfritt program. 2. Gör en lång tryckning
Opponenter: Erik Hansen Mats Almgren Respondent: Martin Landälv ioftpd-verktyg
Datavetenskap Opponenter: Erik Hansen Mats Almgren Respondent: Martin Landälv ioftpd-verktyg Oppositionsrapport, C-nivå 2006:12 1 Sammanfattat omdöme av examensarbetet Examensarbetet är intressant eftersom
Vilken version av Dreamweaver använder du?
Sida 1 av 7 Lektion 1: sida 1 av 4 Till kursens framsida Sida 2 av 4» Lektion 1 Då ska vi sätta igång med den här kursens första lektion! Här kommer du att få lära dig hur man skapar och förbereder webbplatser
L04.1 Marodören. Inledning. Mål. Genomförande. Uppgift 1 Hello World. Moment I
L04.1 Marodören Inledning Genom att öva sig på de grundläggande koncepten i JavaScript öppnas vägen allteftersom till de mer avancerade funktionerna. Man måste lära sig krypa innan man kan gå, även i JavaScript!
Android översikt. TDDD80 Mobila och sociala applikationer
Android översikt TDDD80 Mobila och sociala applikationer Översikt Köra app på mobil / emulator Android Studio introduktion Android kodning Android labb 1 Köra på mobil / emulator Developer mode på mobilen
Vis it. jquery jquery används lite överallt i appen på olika sätt. Det främsta användningsområdet är vid selektering och manipulering av HTML element.
Vis it Introduktion Vi har skapat den webbaserade appen Vis it som bygger på att användare kan ta bilder på och lägga upp sevärdheter via sin mobiltelefon. Dessa sevärdheter är positionsbaserade vilket
Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6
Laboration 2 Objektorienterad programmering i Java I Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6 Syfte: Att kunna använda sig av olika villkors- och kontrollflödeskonstruktioner
Manual till DIKO 2012-10-19
Manual till DIKO 2012-10-19 Innehåll Manual till DIKO 2012-10-19... 1 1 Använda DIKO med en dator... 2 1.1 För att logga in i DIKO... 2 1.2 Dag... 3 1.3 Importera bilder... 4 1.4 Redigera bilder i samband
Avancerade Webbteknologier 2. AD11g Göteborg 2012 Mobilanpassning
Avancerade Webbteknologier 2 AD11g Göteborg 2012 Mobilanpassning Idag Reality Check Strategier för mobilanpassning Problem vid mobilanpassning Exempel på några ramverk Statistik Det finns väldigt mycket
Välkommen! SA S PSA S Im I puls s Mobilite t t e 8 1
Välkommen! SAPSA Impuls Mobilitet 81 Impuls sponsorer 2012 Guldsponsorer SAPSA Impuls Mobilitet 81 Mobilitet 81: Mobil reseräkningsapp med möjlighet att fotografera kvittona Christer Ingemarsson Lena Kågedal
Labora&on 1 Introduk&on &ll utvecklingsmiljön övningar/uppgi<er
Labora&on 1 Introduk&on &ll utvecklingsmiljön övningar/uppgi
Lathund för att hantera kongresshandlingar
Lathund för att hantera kongresshandlingar Läsplatta - ipad Inför och under kongressen 2013 förekommer handlingarna enbart i digital form, närmare bestämt i PDF-format. I denna lathund får du som använder
INSTALLATION AV KLIENT
INSTALLATION AV KLIENT BOOK-IT 8.0 2015-03-27 Axiell Sverige AB, Box 24014, 224 21 Lund Fältspatvägen 4, 224 78 Lund, tel: 046-2700 400, e-post: axiellsverige@axiell.com Innehållsförteckning Förberedelse
Norman Endpoint Protection (NPRO) installationsguide
Norman Endpoint Protection (NPRO) installationsguide Ladda ner installationspaketet (32 eller 64 bitars) från nedanstående länk: http://www.norman.com/downloads/sm ent/68793/se Starta installationspaketet
Kom i gång med PING PONG
Kom i gång med PING PONG Studentmanual Version 6 Kom igång med PING PONG Studentmanual. Version 6 Anita Eklöf, Sektionen för pedagogiskt arbete, Högskolan i Borås. 2015-02-16 1 ATT LOGGA IN... 1 2 STARTSIDAN...
Visa/Dolj knappar i Webeditor 8
Supportdokument Visa/Dolj knappar i Webeditor 8 Synpunkter, felaktigheter, önskemål etc. för dokumentet meddelas Fil: VisaDölj knappar i Webeditor 8.docx Innehållsförteckning 1. Allmänt... 2 2. Skapa ett
Decentraliserad administration av gästkonton vid Karlstads universitet
Datavetenskap Opponent(er): Markus Fors Christian Grahn Respondent(er): Christian Ekström Per Rydberg Decentraliserad administration av gästkonton vid Karlstads universitet Oppositionsrapport, C/D-nivå
LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p
UMEÅ UNIVERSITET Datavetenskap 010530 LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p Betygsgränser 3 21,5-27 4 27,5-33,5 5 34-43 Uppgift 1. (4p) Hitta de fel som finns i nedanstående klass (det
Installationsanvisning för LUQSUS-K version 3.0b
Avd. för arbets-och miljömedicin & Inst. för psykologi, Lunds universitet Installationsanvisning för LUQSUS-K version 3.0b Systemkrav Innan du börjar installationen bör du kontrollera att operativsystem
Programmering B med Visual C++ 2008
Programmering B med Visual C++ 2008 Innehållsförteckning 1 Repetition och lite nytt...5 I detta kapitel... 5 Programexekvering... 5 Loop... 5 Källkod... 6 Verktyg... 6 Säkerhetskopiera... 6 Öppna, kompilera,
ASP.NET MVC. Copyright Mahmud Al Hakim mahmud@dynamicos.se http://www.webbacademy.se. Innehåll
ASP.NET MVC Copyright Mahmud Al Hakim mahmud@dynamicos.se http://www.webbacademy.se Innehåll Introduktion till MVC Controller Action-metoder Views Arbeta med Layout-sidor och sektioner Route konfiguration
Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier
Arv Fundamental objekt-orienterad teknik arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier Programmeringsmetodik -Java 165 Grafisk respresentation: Arv
<script src= "http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
AngularJS Skriven av: Isak Glans. Datum: 2015-04-29. Kurs: Webbutveckling. Lärare: Per Sahlin. Utbildning: Systemutvecklare i.net, Newtons Yrkeshögskola. 1 Sammanfattning Syftet med denna uppsats är att
extensible Markup Language
Datavetenskap Opponenter: Björn Olsson Andreas Svensson Respondenter: Sanaa Al-abuhalje Afrah Al-abuhalje XML extensible Markup Language Oppositionsrapport, C-nivå 2007:06 1 Sammanfattat omdöme av examensarbetet
Använd ArcGIS Pro med enanvändar eller fleranvändarlicenser
Använd ArcGIS Pro med enanvändar eller fleranvändarlicenser I första versionerna av Pro krävdes en namngiven användare för att få tillgång till programmet. Nu när version 1.2 har släppts finns alternativet
Användarmanual FormPipe Meetings. FormPipe Meetings 1.3 2012-09-11
Användarmanual FormPipe Meetings FormPipe Meetings 1.3 2012-09-11 Revision number: 6 ID number: 10023309 Date: 2012-09-132012-09-11 Innehåll Innehåll... 3 Inledning... 4 Förkrav... 5 Installation... 5
ActiveBuilder Användarmanual
ActiveBuilder Användarmanual Forfatter: TalkActive I/S Dato: Juli 2004 Version: R. 1.01 Sprog: Svensk Copyright 2004 - Talk Active - all rights reserved. Innehåll: 1. INLEDNING...2 2. SNABBSTART...3 3.
Inkapsling (encapsulation)
UML UML är en standard för att dokumentera och visualisera sina tankar och beslut under analys och design. Att lära sig allt om UML får inte plats i den här kursen, men vi kommer lära oss vissa delar.
1. Enkel sökning Globalsökning Avancerad sökning Historik Söka via klassificeringsstruktur 14
Ledningskansliet, Juridik och dokumentation Patrik Spånning Westerlund MANUAL 2017-11-16 SLU ID: SLU.ua.2017.2.1.1.IA-9 Manual Sökningar i Public 360 Manual Sökningar i Public 360 Dokumentägare: LK/Dokumentationsenheten/
Spelprogrammering med JavaScript och HTML5
Spelprogrammering med JavaScript och HTML5 Vad är vårt syfte? Eleverna ska komma igång fort med programmering. Det ska vara roligt från början. Resultatet ska vara enkelt att visa för kompisar och familj.
CMS, optimerade för programmerare Eller hur kan ett sådan skapas.
Examensarbete CMS, optimerade för programmerare Eller hur kan ett sådan skapas. David Strömbom 2011-05-20 Ämne: Datavetenskap Nivå: B Kurskod: 1DV40E Abstrakt Denna rapport fokuserar på att undersöka några
Hi-Fi Prototyping + laborationsgenomgång & verktyg
Hi-Fi Prototyping + laborationsgenomgång & verktyg Karin Fahlquist 2015 Frågor att besvara Vad innebär prototyping? Vad är speciellt med hi-fi prototyping? Hur kan man använda dem? Hur väljer man nivå
Services + REST och OAuth
Services + REST och OAuth Syftet med Services Skapa ett Drupal API för att exponera webb- API:er. Officiella versionen - Create a unified Drupal API for web services to be exposed in a variety of different
OneDrive för företag hos Svenska Brukshundklubben
OneDrive för företag hos Svenska Brukshundklubben Instruktion för OneDrive för företag Författare Thomas Holmén Version TH20170510:001 Målgrupp Kanslipersonal, FS, Utskott Datum 2017-05-10 Sammanfattning
Slutrapport YUNSIT.se Portfolio/blogg
Slutrapport YUNSIT.se Portfolio/blogg RICKARD HANSSON 2012-06-04 Abstrakt Rapporten du har i din hand kommer handla om mitt projektarbete som jag genomfört under tio veckor för utbildningen Utvecklare
Medieteknologi Webbprogrammering och databaser MEB725, 5p (7,5 ECTS) Klientprogrammering JavaScript Program på flera sidor
http://w3.msi.vxu.se/multimedia Medieteknologi Webbprogrammering och databaser MEB725, 5p (7,5 ECTS) Klientprogrammering JavaScript Program på flera sidor Rune Körnefors Innehåll Variabler i JavaScript
Hemsida. Lathund för medlemsföreningar. Funktioner för medlemsföreningar på hemsidan. Syfte med medlemsföreningens sidor
Hemsida Lathund för medlemsföreningar 2015 10 13 Funktioner för medlemsföreningar på hemsidan Varje medlemsförening har en egen sektion på scuf.se Styrelsen kan redigera sin medlemsförenings sidor, skriva
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Mer om Interface Generiska klasser Undantag Nästlade klasser 1
Utveckling av ett grafiskt användargränssnitt
Datavetenskap Opponenter: Daniel Melani och Therese Axelsson Respondenter: Christoffer Karlsson och Jonas Östlund Utveckling av ett grafiskt användargränssnitt Oppositionsrapport, C-nivå 2010-06-08 1 Sammanfattat
Hur man lägger upp och redigerar dokument i Typo3.
Hur man lägger upp och redigerar dokument i Typo3. Typo3 är ett så kallat CMS, Content Management System där du enkelt och smidigt kan lägga ut kursinformation och bilder. Detta verktyg är webbaserat vilket
Det ska endast finnas två bilder av samma typ på spelplanen.
Laboration 3 Laboration 3, Memory Observera För att bli godkänd på laborationen ska din källkod följa den standard vad det gäller kommentering, val av variabelnamn m.m. som gåtts igenom på föreläsning.
ID1004 Laboration 4, November 2012
06-Nov-2012/FK ID1004 Laboration 4, 14-16 November 2012 Beräknad tid ca 1-2 timmar. Instruktionen antar att labben utförs i datasal, med hjälp av den integrerade utvecklingsmiljön Eclipse. Alternativt
Next -> Next -> Finish
Next -> Next -> Finish eller? Vad bör man tänka på i samband med uppgradering till eller nyutveckling i EPiServer CMS 7? Oscar Larsson Oscar Larsson Agenda Det Leverantören här är Sogeti lovar Är det verkligen
ipad-tips elektroniska dokument i Tibro kommun 2013-05-15
ipad-tips elektroniska dokument i Tibro kommun 2013-05-15 I Tibro kommun har vi liksom många andra kommuner fastnat för Apples modell ipad för att ta del av handlingar inför och efter politiska möten.