Serbio - Biobooking server. Tema: Software arkitektur og Distributeret systemer Projekt periode: Forår 2013 Projekt gruppe: dmaa Deltagere:

Størrelse: px
Starte visningen fra side:

Download "Serbio - Biobooking server. Tema: Software arkitektur og Distributeret systemer Projekt periode: Forår 2013 Projekt gruppe: dmaa0213 3 Deltagere:"

Transkript

1

2

3 Serbio - Biobooking server Tema: Software arkitektur og Distributeret systemer Projekt periode: Forår 2013 Projekt gruppe: dmaa Deltagere: Jesper Bromose Jakob Lindholm Kaspersen Søren Sand Vegeberg Kaj Viderø Olsen Vejleder: Per Trosborg Cirkulation: 6 Sider med bilag: 34 Sider uden bilag: 27 Afsluttet 4. Juni 2013 Synopsis: Denne rapport omhandler tilblivelsen af et booking system til biografer. Der bliver beskrevet databaseopbygning, klassediagram, algoritmer og implementation i C#. Serveren gør brug af WCF frameworket, basichttpbinding, der giver mulighed for platformfri implementation af klienter og Entity Frameworket, der via snapshot isolation står for at håndtere concurrency. Algoritmen til valg af sæder er implementeret, med mulighed for forbedringer, der vil give bedre foreslag til sædevalg. Serveren stiller et API til rådighed, der muliggør udvikling af letvægts klienter for daglig brug. For mere avancerede features, kræves en tungere dedikeret klient. Der er blevet udviklet en grafisk brugergrænseflade, som er en kombination af både tynd og tykkere klient, for at demonstrere serverens muligheder. University College Nordjylland Teknologi og Business Sofiendalsvej 60 Telefon: Telefax: The report content is freely accessible, but the publication (with source) may only occur by agreement with the authors.

4

5 INDHOLD 1 Indledning 4 2 Teori Design kriterier Domænemodel User Database Tredje Normal Form (3NF) Sikkerhed Arkitektur Klassediagram Serbio Kommunikation Bruger authentificering Exceptions Database Entity Framework Booking Sædevalg Concurrency Algoritme Client GUI Sæde Konklusion 26 A Case 28 B Klassediagrammer 30 2

6

7 KAPITEL 1 INDLEDNING Dette er vores 3. semester projekt på Datamatikeruddannelsen på UCN i Aalborg. Opgavebeskrivelsen kan ses i bilag A. Der er blevet lavet både en klient og en grafisk brugergrænseflade. Vi har valgt at lægge mest fokus på selve serverdelen, og derfor skal GUI en mest ses som en måde at demonstrere serverens funktionalitet på. Ligeledes er klienten en blanding af både en almen brugergrænseflade, samt hvad der i casen bliver beskrevet som en dedikeret klient. Vores fokus på serveren har primært været, at stille et gennemtestet API til rådighed for andre udviklere. Netop dette fokus har medført, at vi har givet mulighed for at lave en tynd klient, da stort set alt beregning sker serverside (bortset fra at hente information om film, når nye film tilføjes) - dette kombineret med en fornuftig exception handling (og kast til klient) gør eventuel udvikling til andre platforme håndterbart. Serveren er skrevet i C# 4.5 og implementerer WCF frameworket og bruger basichttpbinding protokollen. Klienten er skrevet i C# 4.5 og bruger WPF til at generere den grafiske del. Vi vil gerne takke Lektor Per Trosborg for samarbejde og vejledning gennem semesteret. 4

8

9 KAPITEL 2 TEORI I dette kapitel vil vi gennemgå teorien omkring de forskellige modeller og diagrammer. Vi vil komme med begrundelser på hvorfor vi har valgt at gå videre med de valgte løsninger, hvilke fordele og ulemper de har og hvilke mulige alternativer der må være. 2.1 Design kriterier I henhold til vores case har vi fundet følgende designkriterier: Det skal være muligt at have en tynd klient Det skal være muligt at udføre administrative opgaver Det skal være muligt at se film, shows og sæder (og om disse er reserveret) Der skal være en algoritme, som foreslår de bedste sæder i salen Det skal ikke være muligt at dobbeltbooke sæder Det skal være muligt at tilgå serveren fra internettet 2.2 Domænemodel I vores domæne model, som ses i figur 2.1, har vi 8 klasser, som hver især har sine attributter. Hver klasse har enten en aggregation (som vist i Reservation Show ), composition (som vist i Hall Show ) eller generalization (som vist i Show Movie ) som forbinder de forskellige klasser med hinanden. Et Show er en Movie med yderligere detaljer om hvor og hvornår filmen bliver afspillet. Det er en 1 til 1 forbindelse mellem Show og Hall, da et show skal være tilknyttet til en sal for at kunne oprettes, og ligeledes, hvis en film skal køre i flere sale på samme tid, er der tale om flere shows. En Hall har en 1 til mange relation til Row, da man ikke kan have en sal uden rækker. Endvidere har Row en 1 til mange relation til sæder. Her gælder samme argument: Det er ikke muligt at oprette en række uden sæder. Hvis der skal oprettes gange i salen, vil dette være en række sæder, med et særligt flag, der fortæller at det er tomme sæder. 6

10 Figur 2.1: Domæne model 7

11 2.3 User Denne klasse var ment som en superklasse, der alt efter rolle skulle bruges til at instantiere forskellige roller af en bruger. Dette blev dog ikke gjort da vi valgte at gå med en klasse, hvor de forskellige attributter var med i. Dette kan ses i tabel 2.1 Rolle Værdi Admin 1337 Clerk 2000 User 3000 Tabel 2.1: Rolle intervaller 2.4 Database Databasen er lavet med udgangspunkt i domænemodellen og kan ses i figur 2.2. Det vil ud fra et bruger ID være muligt at lave et opslag i Reservation tabellen og finde alle reservationer fra denne bruger. Ud fra Reservation.Id er det muligt at arbejde sig igennem hele databasen, og dermed få de reelle informationer. Måden dette foregår på, er at via HasSeats kan der findes Seat TRow Hall Show Movie. Denne opbygning er lavet for at sikre, at Én bruger kan have mange reservationer. En reservation kan have flere sæder. En film kan køre på forskellige tider, i samme sal, eller på samme tid, i forskellige sale. En sal kan have varierende antal rækker, der kan have forskellige antal sæder Tredje Normal Form (3NF) Vores database er i 3. Normal Form - da det kun er vores primærnøgler, som bestemmer værdierne i de andre attributter i klasserne. 3NF betyder, at alle kolonnereferencer i refereret data, der ikke er afhængige af den primære nøgle bør fjernes. Dette vil sige, at foreign keys kun peger på primære nøgler i andre tabeller Sikkerhed Vi har i dette projekt valgt ikke at fokusere på sikkerheden i databasen, da det ikke har været det primære fokus i opgaven. For at forbedre sikkerheden skulle alle attributters værdier hashes og saltes, da det dermed ikke vil være muligt at læse værdierne i klartekst. Dette er vigtigt, da vi har med fortrolige data at gøre. I figur 2.2 ligger vores primære nøgler hovedsageligt på de forskellige IDs, dog har vi enkelte steder hvor det er composite keys. En composite key er en kombination af to eller flere kolonner i en tabel, dette kan bruges til at identificere unikke rækker i tabellen. Entydighed kan kun garanteres, når kolonnerne kombineres, hvis kolonnerne enkeltvist ikke garanterer entydighed. Eksempel: I tabellen HasSeats er det nødvendigt, at have en composite key på IdShow og IdSeat, da disse enkeltvist ikke garantere entydighed. 8

12 Figur 2.2: Database170 9

13 2.5 Arkitektur Client/Server arkitektur Vi har i dette projekt valgt, at dele vores kode op i to forskellige løsninger, en server og en klient. Serveren klarer alle de forskellige udregninger og klienten demonstrerer de forskellige kald via grafiske interface. Fordele 1 Kan håndtere flere brugere af gangen Alle klienter ser det samme data Forøget ydeevne i forhold til løsninger baseret på én computer Det er let at udskifte klienten med nye grafiske interfaces Serveren kan ændres/opdateres, uden der skal ændres i klienten, så længe serveren stadigvæk overholder kontrakterne. Dette gør det billigere at vedligeholde 3-tier arkitektur 3-tier arkitekturen er valgt til dette projekt. Denne arkitektur adskiller brugeren (præsentationstier) fra direkte kontakt med den bagved liggende database (data-tier), via et mellemled (logictier) der står for alt udregning om manipulation af data. At have et data-tier medvirker også øget skalerbarhed og ydeevne 2. Disse lag kan ses i vores arkitektur diagram 2.3. Præsentations-tieret her findes de klasser, der står for kommunikationen mellem brugeren og systemet. Det er i disse klasser, alle de forskellige indtastninger og udskiftninger sker Dette lag har forbindelse til logic-tier Logic-tiret her findes de forskellige kontrolklasser Data-tiret her findes SerbioOperations og ISerbioOperations, som indeholder Operations kontrakter og sender de forskellige data videre ned til logic-tieret 1 Kilder: arkitektur, files/client-server-og-trelagsarkitektur/tre-lags-arkitektur-v1.0.pdf 2 Kilde: model 10

14 Fordele: 3 1. Let at ændre uden at der sker konflikter med andre klasser 2. Hurtig kommunikation. 3. Kan håndtere meget store datamængder og/eller meget stort antal samtidige klienter, da der kan sættes et større antal applikationsservere op. Figur 2.3: ArkitekturDiagram Model-View-Control Model-View-Controller (MVC) arkitekturen ligner Tre tiers arkitekturen, men de er forskellige: En grundlæggende regel i en tre lags arkitektur er at præsentation tieret aldrig kommunikerer direkte med data tieret, al kommunikation skal passere gennem det mellemste niveau. Begrebsmæssigt er tre-lags arkitektur lineær, mens MVC arkitekturen er trekantet: Viewet sender opdateringer af controller, controller opdaterer modellen, og view bliver opdateret direkte fra modellen 4. En illustration af dette kan ses i figur 2.4. Figur 2.4: Model-View-Control 3 Kilde: 4 Kilde: 11

15 2.6 Klassediagram Klassediagrammet for vores logic tier kan ses under bilag i figur B.1 til B.4 Det skal nævnes, at alle 4 diagrammer tilsammen udgør det samlede klassediagram. B.1 viser vores egne exceptions, der kastes til klienten. Disse nedarver alle fra Exception, og sætter en tilpasset besked, med koden set i listing public class DuplicationFoundException : Exception 2 { 3 public DuplicationFoundException(string message) : base(message) { } 4 } Listing 2.1: Sættelse af besked I B.2 ses controller klassen, med alle metoder der kan bruges. I B.3 ses Entity Frameworkets klasser, disse bruges til at lave vores DTO er (set i B.4) som sendes til klienten. Dette sker rimeligt direkte, som ses i listing Users user = connectedusers.first(u => u.value.user.username == username).value.user; 2 UserDTO userdto = new UserDTO() 3 { 4 Password = user.password, 5 Token = user.token, 6 Username = user.username, 7 Role = user.role, 8 ID = user.id 9 }; Listing 2.2: Sættelse af besked 12

16

17 KAPITEL 3 SERBIO Serveren, Serbio, er opbygget efter 3-lags princippet, og indeholder et service library, en host process, og et business logic lag. Al kommunikation går gennem library et, som er bootstrapped via Service host, og kalder business logic s funktioner for at lave udregningerne. Serbio er lavet således at så meget beregning som muligt ligger her. Dette betyder at klienterne kan være letvægtede, da det eneste de skal håndtere er diverse kald og grafisk repræsentation af data. 3.1 Kommunikation Kommunikationen mellem server og (mulige) klienter foregår via WCF 4.5, der er et framework til.net 4.5. Serveren sender XML data via SOAP protokollen, det gør at klienten kan implementeres som cross-platform, et eksempel på dette kan ses i listing 3.1(request) og listing 3.2 (response). A-B-C Konfigurationen følger ABC opsætningen af WCF (Address, Binding, Contract). I denne sektion vil de forskellige dele blive beskrevet. Address Addressen er ip en på serveren, sammen med en port. Serbio kører på port <host> 2 <baseaddresses> 3 <add baseaddress = "http://localhost:9759/" /> 4 </baseaddresses> 5 </host> Binding Serbio bruger basichttpbinding. Denne protokol giver i modsætning til nettcpbinding mulighed for platformfrie klienter, dog med den pris, at der bliver sendt mere data. Vi har valgt at prioritere fleksibilitet over hastighed ved at bruge basichttpbinding fremfor nettcpbinding. Valget er faldet på dette, da C# ikke er det mest brugte sprog 1, og ved at vælge en platformfri protokol, vil det 1 Kilde: 14

18 1 <s:envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 2 <s:header> 3 <Action s:mustunderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none ">http://tempuri.org/iserbiooperations/connect</action> 4 </s:header> 5 <s:body> 6 <Connect xmlns="http://tempuri.org/"> 7 <username>kirs</username> 8 <password>9000</password> 9 </Connect> 10 </s:body> 11 </s:envelope> Listing 3.1: Request 1 <s:envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 2 <s:header /> 3 <s:body> 4 <ConnectResponse xmlns="http://tempuri.org/"> 5 <ConnectResult xmlns:a="http://schemas.datacontract.org/2004/07/serbiobussinesslogic.dto" xmlns:i="http://www.w3.org/2001/xmlschema-instance"> 6 <a:id>3</a:id> 7 <a:password>9000</a:password> 8 <a:role>1337</a:role> 9 10 <a:username>kirs</a:username> 11 </ConnectResult> 12 </ConnectResponse> 13 </s:body> 14 </s:envelope> Listing 3.2: Response også være muligt at implementere løsninger på eksempelvis Android eller iphone. Endvidere giver basichttpbinding ingen problemer med hverken Nat s eller firewalls. Contract Serbio har en masse contracts, et lille udsnit er: BookSeats(...),AddReservation(...) og GetAllReservationsForUser(...). Alle disse er stillet tilrådighed gennem interfacet ISerbioOperations Bruger authentificering BaiscHttpBinding indeholder ikke mulighed for sessionstyring per default. Derfor er det nødvendigt at implementere vores egen løsning til dette. Vores primære grund til at skulle bruge sessionstyring er, at det skal være muligt at fjerne reservationer hvis de overskrider en prædefineret tid (i vores system, kan billetter holdes i 10 minutter hvis de ikke er blevet reserveret inden dette, vil det være muligt for andre at vælge dem). Connect Når en klient skal logge ind, sker dette ved at kalde.connect(string username, string password). Herefter vil serveren checke om det er korrekt brugernavn og kodeord. Er dette tilfældet, vil serveren tildele brugeren en Token og sende et UserDto objekt tilbage til klienten. Dette objekt skal bruges til senere kommunikation der kræver brugervalidering. Hvis ikke brugeren kan autentificeres, kastes 15

19 en exception tilbage til klienten. Purger Purger er vores sessionshåndtering. Dette bliver kørt i sin egen tråd, med et interval på 500ms. Hver gang Purger ticker, vil den se om der er brugere der ikke har været aktive i over 10 minutter. Hvis dette er tilfældet, vil deres token blive fjernet og de vil blive fjernet fra listen af authentificerede brugere. Dermed vil det kræve et nyt.connect(...) før brugeren kan foretage sig ting i systemet, der kræver autentificering. Purger står også for fjernelse af sæde reservationer. Koden for dette kan ses i 3.3. Det hele er pakket ind i et TransactionScope, dette vil vi forklare nærmere i sektion 3.3.2, for at sikre consistency. 1 foreach (Reservation res in context.reservation.tolist()) 2 { 3 if (res.resercationtime.addminutes(ttl) < DateTime.Now && res.paid == false) 4 { 5 logger.info("removing reservation " + res.id + " due to session timeout"); 6 context.hasseats.first(s => s.idseat == res.seats).seatstate = 0; 7 context.reservation.remove(res); 8 context.savechanges(); 9 } 10 } Listing 3.3: PurgeReservations fjernelse af for gamle reservationer Exceptions Hvis en klient foretager en handling, der af en eller anden grund ikke går godt, vil der blive kastes en exception tilbage. Dette sker gennem: throw new FaultException<Exception> Som er WCFs måde at kaste exceptions til klienten på. Følgende exceptions kan blive kastet fra serveren: DatabaseOfflineException Denne kastes, hvis serveren ikke kan få kontakt til databasen. Dette er en fatal error. DuplicationFoundException Denne kastes, hvis der indsættes duplikater af data i databasen. NoShowsException Denne kastes, hvis der ikke er nogle shows i databasen. SeatAlreadyReservedException Denne kastes, hvis der forsøges at reservere et sæde, der allerede er reserveret. UserLoginException Denne kastes ved forkert login. UserRightsException Denne kastes, hvis en bruger forsøger ting, han ikke har rettigheder til. Exceptions bliver kastet med 2 typer af beskeder: En inner og en outer. Outer message er den, der bliver vist, hvis der ikke er blevet implementeret en try/catch; her vil der blive vist, hvilken type exception det er, efterfulgt af fejlmeddelelsen. Dette er gjort, så udvikleren nemt kan implementere en catch til den specifikke exception. Inner message, er det der vil blive vist, hvis udvikleren direkte printer på ex.message, som bliver sat i serveren, som i

20 1 throw new UserRightsException("User not authorized to action GetMovies()"); Listing 3.4: Eksempel på exception Grunden til dette er, at en udvikler skal have nemt ved at finde ud af, hvad der går galt, hvis(når) noget går galt. 3.2 Database For at få serveren til at hente og skrive data til databasen, er der flere muligheder der kan vælges. I denne sektion sammenligner vi ADO.net og Entity Framework (som er en Object-Relational mapper ), for at finde den bedst egnede løsning. Analysen, der ses i tabel 3.1 er blevet lavet, ved at sammenligne flere forskellige aspekter 2 ved at give hver en mulig score på 1-5 (hvor 5 er bedst) og en vægt, der beskriver hvor vigtigt vi vurderer resultatet i forhold til vores produkt. EF ADO Vægt Vægtet EF Vægtet ADO Hurtighed Vedligeholdelse Concurrency* Readability DB Specific** Writeability Productivity Sum Tabel 3.1: Sammenligning mellem EF og ADO Vi har valgt at bruge Entity Frameworket, da den scorede højest totalt, med de vægte vi har vurderert til at være til vores produkt Entity Framework I denne sektion vil vi give eksempler på, hvordan Entity Frameworket virker. Vi vil opstille nogle cases, og sammenligne, hvordan SQL koden skulle have set ud. Case 1 Find alle brugere af systemet. 1 using (var context = new dmaa0212a_3entities) 2 { 3 List<Users> users = context.users.tolist(); 4 } Listing 3.5: Entity kode til Case 1 2 Kilder: 17

21 1 using (var context = new dmaa0212a_3entities) 2 { 3 Select * from Users 4 } Listing 3.6: SQL kode til Case 1 Case 2 Find alle reservationer for brugere med id nummer 1, og print titlen på filmen 1 using (var context = new dmaa0212a_3entities()) 2 { 3 var res = context.reservation.where(r => r.userid == 1); 4 foreach (var reservation in res) 5 { 6 Console.WriteLine(context.Show.First(s=>s.ID==reservation.Show).Movie1.Title); 7 } 8 } Listing 3.7: Entity kode til Case 2 1 SELECT Movie.Title 2 FROM Reservation 3 Inner join Users on Users.Id = Reservation.UserID 4 INNER JOIN Movie on Reservation.Show = Movie.ID 5 where Reservation.UserID = 1 Listing 3.8: SQL kode til Case 2 I 3.5 og 3.6 er der ikke den store forskel på at bruge SQL eller Entity Frameworket. Forskellen bliver dog mere tydelig i 3.7 og 3.8, hvor førstnævnte tydeligt er mindre komplekst at læse. 3.3 Booking En af de vigtigste dele af systemet, er håndteringen af sædebooking. Her skal tages højde for consistency i systemet, samtidig med, at der skal implementeres en algoritme der fungerer korrekt. I de følgende sektioner vil vi beskrive vores implementation af booking hvordan vi har håndteret consistency og en analyse af algoritmen til at vælge sæder Sædevalg Målet for sædevalg i vores system er: Concurrency Der må ikke kunne dobbeltbookes sæder Concurrency Sæder bookes efter først-til-mølle-princippet Concurrency Der må ikke kunne spærres sæder i for lang tid Concurrency Sæder skal bookes efter alt-eller-intet princippet Algoritme Sæder skal bookes efter alt-eller-intet princippet Algoritme Der skal foreslås de bedste sæder først 18

22 Algoritme Der skal vælges de sæder, der forventes bliver valgt Algoritme Det skal være mulig at ændre sædevalg, indtil sæderne bliver markeret som booked Concurrency Da vi har valgt at bruge Entity Framework, kan en af følgende måder bruges til locking af databasen: 3 Serializable Volatile data can be read but not modified, and no new data can be added during the transaction. RepeatableRead Volatile data can be read but not modified during the transaction. New data can be added during the transaction. ReadCommitted Volatile data cannot be read during the transaction, but can be modified. ReadUncommitted Volatile data can be read and modified during the transaction. Snapshot Volatile data can be read. Before a transaction modifies data, it verifies if another transaction has changed the data after it was initially read. If the data has been updated, an error is raised. This allows a transaction to get to the previously committed value of the data. When you try to promote a transaction that was created with this isolation level, an InvalidOperationException is thrown with the error message Transactions with IsolationLevel Snapshot cannot be promoted. Chaos The pending changes from more highly isolated transactions cannot be overwritten. Unspecified A different isolation level than the one specified is being used, but the level cannot be determined. An exception is thrown if this value is set. Der er flere af disse, der allerede ved første øjekast kan forkastes, da de ikke opfylder kravene til vores system. Disse er: ReadCommitted, da vi ikke kan læse data, og dermed finde nuværende state på sæder. Chaos, det ligger lidt i navnet det er svært at vide hvem der får lov til hvad hvis der er flere transactions i gang. Unspecified, dette er ikke interessant, da vi selv specificere hvilke isolations niveau der skal bruges. Dette efterlader: Serializable, RepeatableRead, ReadUncomitted og Snapshot. I tabel ses en oversigt over de resterende muligheder side effects. Isolation level Dirty read Nonrepeatable data Phantoms Read uncommitted Yes Yes Yes Repeatable Read No No Yes Snapshot No No No Serializable No No No Tabel 3.2: Isolations niveauer Følgende er en forklaring på de forskellige attributter fra Kilde: 4 Kilde: 5 Kilde: 19

23 Dirty read vil sige, at der læses data, der ikke er blevet committed til databasen endnu. Eksempel: Transaction1 (T1) opdatere en række. Transaction2 (T2) læser den opdaterede række, før T1 committer updaten. Hvis T1 laver et rollback, vil T2 stadig have læst en værdi, der anses som ikke eksisterende. Nonrepeatable Reads vil sige, at den samme række læses flere gange, men med forskellig data hver gang. Eksempel: T1 læser en række. T2 opdaterer eller sletter den række, og committer. Hvis T1 læser rækken igen, vil den enten få en anden værdi, eller finde ud af, at rækken er slettet. Phantoms vil sige, at en række matcher nogle søge kriterier, men bliver ikke set med det samme. Eksempel: T1 læser nogle rækker, der opfylder et søge krav. T2 genererer en ny række, der passer T1s søgekriterier. Hvis T1 eksekverer den samme søgning igen, vil der findes et andet sæt af rækker. Snapshot I vores system vil dirty read ikke være ønskeligt, da dette kan medføre, at state på sæder ikke kan regnes med. Endvidere er nonrepeatable read heller ikke ønskeligt, da dette kan medføre fejllæsninger. Dette efterlader Snapshot og Serializable som muligheder. Forskellen på Snapshot og Serializable, er at den første er optimistic og den sidste er pessimistic concurrency. Forskellen på de to niveauer er 6 : Serializable isolation level relies on pessimistic concurrency control. It guarantees consistency by assuming that two transactions might try to update the same data and uses locks to ensure that they do not but at a cost of reduced concurrency - one transaction must wait for the other to complete and two transactions can deadlock. Snapshot isolation level relies on optimistic concurrency control. It allows transactions to proceed without locks and with maximum concurrency, but may need to fail and rollback a transaction if two transactions attempt to modify the same data at the same time. Vi har valgt at bruge snapshot da dette løser opgaven med concurrency, og samtidig fjerner risikoen for deadlocks. Granularitet Granularitet er hvor finkornet vores locking af databasen er. Jo finere granularitet desto mindre locking. I et biograf booking system, er der flere muligheder for at låse. Disse går fra at låse et helt show (Meget grov granularitet) til kun at låse et enkelt sæde (Meget fin granularitet). Det er et tradeoff på, hvor meget locking man ønsker i sit system. Da vi i Serbio bruger Snapshot locking, er det ikke nødvendigt at få den helt fine granularitet i form af lås af enkelte sæder. Men den meget grove granularitet er heller ikke at ønske. Vi har valgt at ligge vores lås på sæder (alle sæder). Dette kan give problemer, hvis der bruges en pessemistic locking, da dette vil medføre at T (n) er nød til at vente på T (n 1)...T (1). Dette er ikke ønskeligt, da 6 Kilde: 20

24 det vil give alt for meget ventetid. Men, da vi bruger en optimistic locking, er dette ikke problemet, da alle kan få lov at booke på samme tid, og kun hvis der opstår dobbeltbooking vil systemet melde fejl. Test Følgende test er blevet opstillet, og kørt, for at checke concurrency i vore system. Test 1 Forventet resultat Faktisk resultat Én klient. Én booking OK OK Test 2 To klienter. Én booking K1 OK OK K2 Fejl Fejl Test 3 To klienter. To booking K1 OK OK K2 OK OK Test 4 Mange Klienter, mange booking K1 OK OK K2 OK OK... K ( n) OK OK Test 5 Mange Klienter, én booking K1 OK OK K2 Fejl Fejl... K ( n) Fejl Fejl Tabel 3.3: Test af concurrency 21

25 3.3.3 Algoritme Der er blevet udarbejdet en algoritme til valg af sæder. I denne sektion beskriver vi algoritmen, analysere køretid og kommer med forslag til forbedringer. Sædevalgs algoritme Sædevalgs algoritmen består af flere dele: Forslag til bedste sæder (se Algoritme 1), generering af sæder til at reservere (se Algoritme 2) og selve reservationen af sæder (se Algoritme 3). Disse er bygget op af små moduler i form af hver sin metode, der kan kalde hinanden. Først checkes der om der vælges sæder, som ligger udenfor rækken. Et eksempel på dette ses i 3.1. Data: Number og seats Result: StartRow and StartSeat Find center row.; o while NumberOfSeatsAvailebeleOnRow < 55% do Row = center row -1; end Find center seat on row; Call algorithm to generate seat; Algorithm 1: Find bedste sæder (a) En bruger ønsker 5 sæder, og vælger startseat = 8 (b) Arrayet løber out of bounds til højre Figur 3.1: Algoritme eksempel (c) Et nyt startseat vælges, så det passer med sidste sæde i rækken Køretid Algoritmen i Algorithm 1 har en køre tid på O(n) Algorithm 2 har en køretid på O(n) og i Algorithm 3 en køretid på O(n 2 ) hvor 0 < n <= 9. 22

26 Data: Number of seats to reserve, Number of startseat Result: A list of seatdto reserve. Error if out of bounds f1; fslut; List seatstoreserve; if numberofseats = 2 then f1 = startseat fslut = startseat + numberofseats -1; else f1 = (startseta - (numberofseats/2)); if numberofseats % 2 == 0 then fslut = startseat + (numberofseats/2) - 1; else fslut = startseat + (numberofseats/2); end end int rowmaxint = Index of the last seat on selected row; int minrowseat = Index of the first seat on selected row; if fslut > rowmaxint then fslut = rowmaxint; f1 = fslut - numberofseats + 1; end if f1 < minrowseat then f1 = minrowseat; fslut = f1 + numberofseats - 1; end if fslut > rowmaxint then Return out of bounds error end for i=f1; i<fslut; i++ do Add each seat with id 1 to seatstoreserve end Algorithm 2: Generering af sæder til at reservere Data: List of seats to reserve Result: A list of seats reserved in the system. Error if concurrency conflict for each seat in the list do Check if seats is already reserved; if seat is reserved then Select seat-1 until all seats can be reserved; else mark seat as reserved end end if Error then Rollback changes else Commit changes to database end Algorithm 3: Reservering af sæder 23

27 KAPITEL 4 CLIENT 4.1 GUI GUIen er implementeret for at demonstrerer de forskellige kald til Serbio. Den grafiske repræsentation kan foregå gennem Winforms eller WPF i C#. Winforms, er udviklet af Microsoft, og var en af de første måder at lave nemme og hurtige grafiske opsætninger i.net. Fordele: Det er meget nemt og meget hurtigt, at få lavet noget der nogenlunde ligner det du vil have. Det virker godt i Windows. Ulemper: Det er svært at få alle moduler til at være helt som du vil have det til at se ud ved hjælp af drag and drop. Det er svært at få til at virke på andre platforme som eksempelvis Android, ios eller web. WPF, er udviklet af Microsoft, Windows Presentation Foundation (eller WPF), og er den nyeste måde at lave grafiske opsætninger i.net. Fordele: Det er muligt at få alle ting, til at ligge som de skal ved hjælp af XAML, men det er også muligt at bruge drag and drop. Det er muligt at få denne GUI til at virke på de fleste andre platforme som fx Android, ios eller web. 24

1 Domæne 2 1.1 Design valg... 2 1.1.1 User... 2. 2 Klassediagran 5

1 Domæne 2 1.1 Design valg... 2 1.1.1 User... 2. 2 Klassediagran 5 INDHOLD 1 Domæne 2 1.1 Design valg.................................... 2 1.1.1 User.................................... 2 2 Klassediagran 5 3 Serbio 7 3.1 Kommunikation..................................

Læs mere

1 Domæne 2 1.1 Design valg... 2 1.1.1 User... 2 1.2 Database... 4 1.2.1 Tredje Normal Form (3NF)... 4 1.3 Klassediagran... 6 1.4 Arkitektur...

1 Domæne 2 1.1 Design valg... 2 1.1.1 User... 2 1.2 Database... 4 1.2.1 Tredje Normal Form (3NF)... 4 1.3 Klassediagran... 6 1.4 Arkitektur... INDHOLD 1 Domæne 2 1.1 Design valg........................................ 2 1.1.1 User........................................ 2 1.2 Database.......................................... 4 1.2.1 Tredje Normal

Læs mere

Design til digitale kommunikationsplatforme-f2013

Design til digitale kommunikationsplatforme-f2013 E-travellbook Design til digitale kommunikationsplatforme-f2013 ITU 22.05.2013 Dreamers Lana Grunwald - svetlana.grunwald@gmail.com Iya Murash-Millo - iyam@itu.dk Hiwa Mansurbeg - hiwm@itu.dk Jørgen K.

Læs mere

Help / Hjælp

Help / Hjælp Home page Lisa & Petur www.lisapetur.dk Help / Hjælp Help / Hjælp General The purpose of our Homepage is to allow external access to pictures and videos taken/made by the Gunnarsson family. The Association

Læs mere

Databaseadgang fra Java

Databaseadgang fra Java Databaseadgang fra Java Grundlæggende Programmering med Projekt Peter Sestoft Fredag 2007-11-23 Relationsdatabasesystemer Der er mange databaseservere Microsoft Access del af Microsoft Office MySQL god,

Læs mere

Aktivering af Survey funktionalitet

Aktivering af Survey funktionalitet Surveys i REDCap REDCap gør det muligt at eksponere ét eller flere instrumenter som et survey (spørgeskema) som derefter kan udfyldes direkte af patienten eller forsøgspersonen over internettet. Dette

Læs mere

DET KONGELIGE BIBLIOTEK NATIONALBIBLIOTEK OG KØBENHAVNS UNIVERSITETS- BIBLIOTEK. Index

DET KONGELIGE BIBLIOTEK NATIONALBIBLIOTEK OG KØBENHAVNS UNIVERSITETS- BIBLIOTEK. Index DET KONGELIGE Index Download driver... 2 Find the Windows 7 version.... 2 Download the Windows Vista driver.... 4 Extract driver... 5 Windows Vista installation of a printer.... 7 Side 1 af 12 DET KONGELIGE

Læs mere

Trolling Master Bornholm 2015

Trolling Master Bornholm 2015 Trolling Master Bornholm 2015 (English version further down) Sæsonen er ved at komme i omdrejninger. Her er det John Eriksen fra Nexø med 95 cm og en kontrolleret vægt på 11,8 kg fanget på østkysten af

Læs mere

BACK-END OG DATA: ADMINISTRATION HVAD ER DE NYE MULIGHEDER MED VERSION 7.1? STEFFEN BILLE RANNES, 4. FEBRUAR 2015

BACK-END OG DATA: ADMINISTRATION HVAD ER DE NYE MULIGHEDER MED VERSION 7.1? STEFFEN BILLE RANNES, 4. FEBRUAR 2015 BACK-END OG DATA: ADMINISTRATION HVAD ER DE NYE MULIGHEDER MED VERSION 7.1? STEFFEN BILLE RANNES, 4. FEBRUAR 2015 SAS VISUAL ANALYTICS 7.1 ADMINISTRATOR Mulighed for at udføre handlinger på flere servere

Læs mere

Teknologispredning i sundhedsvæsenet DK ITEK: Sundhedsteknologi som grundlag for samarbejde og forretningsudvikling

Teknologispredning i sundhedsvæsenet DK ITEK: Sundhedsteknologi som grundlag for samarbejde og forretningsudvikling Teknologispredning i sundhedsvæsenet DK ITEK: Sundhedsteknologi som grundlag for samarbejde og forretningsudvikling 6.5.2009 Jacob Schaumburg-Müller jacobs@microsoft.com Direktør, politik og strategi Microsoft

Læs mere

Database. lv/

Database. lv/ Database 1 Database Design Begreber 1 Database: En fælles samling af logiske relaterede data (informationer) DBMS (database management system) Et SW system der gør det muligt at definer, oprette og vedligeholde

Læs mere

Shooting tethered med Canon EOS-D i Capture One Pro. Shooting tethered i Capture One Pro 6.4 & 7.0 på MAC OS-X 10.7.5 & 10.8

Shooting tethered med Canon EOS-D i Capture One Pro. Shooting tethered i Capture One Pro 6.4 & 7.0 på MAC OS-X 10.7.5 & 10.8 Shooting tethered med Canon EOS-D i Capture One Pro Shooting tethered i Capture One Pro 6.4 & 7.0 på MAC OS-X 10.7.5 & 10.8 For Canon EOS-D ejere der fotograferer Shooting tethered med EOS-Utility eller

Læs mere

Hvor er mine runde hjørner?

Hvor er mine runde hjørner? Hvor er mine runde hjørner? Ofte møder vi fortvivlelse blandt kunder, når de ser deres nye flotte site i deres browser og indser, at det ser anderledes ud, i forhold til det design, de godkendte i starten

Læs mere

Engelsk. Niveau D. De Merkantile Erhvervsuddannelser September Casebaseret eksamen. og

Engelsk. Niveau D. De Merkantile Erhvervsuddannelser September Casebaseret eksamen.  og 052431_EngelskD 08/09/05 13:29 Side 1 De Merkantile Erhvervsuddannelser September 2005 Side 1 af 4 sider Casebaseret eksamen Engelsk Niveau D www.jysk.dk og www.jysk.com Indhold: Opgave 1 Presentation

Læs mere

Assignment #5 Toolbox Contract

Assignment #5 Toolbox Contract Assignment #5 Toolbox Contract Created by: René Kragh Trine Randløv E mail address cph rk70@cphbusiness.dk 23 11 2014 1 Introduktion Dette dokument indeholder en vertikal kontrakt for et system som skal

Læs mere

Trolling Master Bornholm 2015

Trolling Master Bornholm 2015 Trolling Master Bornholm 2015 (English version further down) Panorama billede fra starten den første dag i 2014 Michael Koldtoft fra Trolling Centrum har brugt lidt tid på at arbejde med billederne fra

Læs mere

Da beskrivelserne i danzig Profile Specification ikke er fuldt færdige, foreslås:

Da beskrivelserne i danzig Profile Specification ikke er fuldt færdige, foreslås: NOTAT 6. juni 2007 J.nr.: 331-3 LEA Bilag A danzig-møde 15.6.2007 Opdatering af DAN-1 og danzig Profile Specification Forslag til opdatering af Z39.50 specifikationerne efter udgivelse af Praksisregler

Læs mere

MultiProgrammer Manual

MultiProgrammer Manual MultiProgrammer Manual MultiProgrammeren bruges til at læse og skrive værdier til ModBus register i LS Controls frekvensomformer E 1045. Dansk Version side 2 til 4 The MultiProgrammer is used for the writing

Læs mere

Engelsk. Niveau C. De Merkantile Erhvervsuddannelser September 2005. Casebaseret eksamen. www.jysk.dk og www.jysk.com.

Engelsk. Niveau C. De Merkantile Erhvervsuddannelser September 2005. Casebaseret eksamen. www.jysk.dk og www.jysk.com. 052430_EngelskC 08/09/05 13:29 Side 1 De Merkantile Erhvervsuddannelser September 2005 Side 1 af 4 sider Casebaseret eksamen Engelsk Niveau C www.jysk.dk og www.jysk.com Indhold: Opgave 1 Presentation

Læs mere

Terese B. Thomsen 1.semester Formidling, projektarbejde og webdesign ITU DMD d. 02/11-2012

Terese B. Thomsen 1.semester Formidling, projektarbejde og webdesign ITU DMD d. 02/11-2012 Server side Programming Wedesign Forelæsning #8 Recap PHP 1. Development Concept Design Coding Testing 2. Social Media Sharing, Images, Videos, Location etc Integrates with your websites 3. Widgets extend

Læs mere

Hvordan vælger jeg dokumentprofilen?

Hvordan vælger jeg dokumentprofilen? Hvordan vælger jeg dokumentprofilen? Valget af OIOUBL profil i en konkret dokumentudveksling vil bl.a. afhænge af, hvilke OIOUBL profiler den anden part i udvekslingen understøtter. Et konkret eksempel

Læs mere

Boligsøgning / Search for accommodation!

Boligsøgning / Search for accommodation! Boligsøgning / Search for accommodation! For at guide dig frem til den rigtige vejledning, skal du lige svare på et par spørgsmål: To make sure you are using the correct guide for applying you must answer

Læs mere

! Kia Dahlen. Kamilla Klein, Pia Jensen og Maria Korshøj Andersen.

! Kia Dahlen. Kamilla Klein, Pia Jensen og Maria Korshøj Andersen. Copenhagen Business Academy Multimediedesigner 3. semester - 1. projekt, september 2014 Gruppe 1 - MulA Kia Dahlen. Kamilla Klein, Pia Jensen og Maria Korshøj Andersen. Study: Multimedia Design Project:

Læs mere

QUICK START Updated: 18. Febr. 2014

QUICK START Updated: 18. Febr. 2014 QUICK START Updated: 18. Febr. 2014 For at komme hurtigt og godt igang med dine nye Webstech produkter, anbefales at du downloader den senest opdaterede QuickStart fra vores hjemmeside: In order to get

Læs mere

Vores mange brugere på musskema.dk er rigtig gode til at komme med kvalificerede ønsker og behov.

Vores mange brugere på musskema.dk er rigtig gode til at komme med kvalificerede ønsker og behov. På dansk/in Danish: Aarhus d. 10. januar 2013/ the 10 th of January 2013 Kære alle Chefer i MUS-regi! Vores mange brugere på musskema.dk er rigtig gode til at komme med kvalificerede ønsker og behov. Og

Læs mere

Brug sømbrættet til at lave sjove figurer. Lav fx: Få de andre til at gætte, hvad du har lavet. Use the nail board to make funny shapes.

Brug sømbrættet til at lave sjove figurer. Lav fx: Få de andre til at gætte, hvad du har lavet. Use the nail board to make funny shapes. Brug sømbrættet til at lave sjove figurer. Lav f: Et dannebrogsflag Et hus med tag, vinduer og dør En fugl En bil En blomst Få de andre til at gætte, hvad du har lavet. Use the nail board to make funn

Læs mere

Fejlbeskeder i SMDB. Business Rules Fejlbesked Kommentar. Validate Business Rules. Request- ValidateRequestRegist ration (Rules :1)

Fejlbeskeder i SMDB. Business Rules Fejlbesked Kommentar. Validate Business Rules. Request- ValidateRequestRegist ration (Rules :1) Fejlbeskeder i SMDB Validate Business Rules Request- ValidateRequestRegist ration (Rules :1) Business Rules Fejlbesked Kommentar the municipality must have no more than one Kontaktforløb at a time Fejl

Læs mere

Business Rules Fejlbesked Kommentar

Business Rules Fejlbesked Kommentar Fejlbeskeder i SMDB Validate Business Request- ValidateRequestRegi stration ( :1) Business Fejlbesked Kommentar the municipality must have no more than one Kontaktforløb at a time Fejl 1: Anmodning En

Læs mere

Affaldsdatasystem Vejledning supplement i system-til-system integration for.net brugere

Affaldsdatasystem Vejledning supplement i system-til-system integration for.net brugere Affaldsdatasystem Vejledning supplement i system-til-system integration for.net brugere Dokument version: 2.0 ADS version: 1.0 Henvendelse vedrørende affald: Miljøstyrelsen Roskilde, Affaldssekretariatet

Læs mere

Hosted CRM Outlook client connector setup guide. Date: Version: 1. Author: anb. Target Level: Customer. Target Audience: End User

Hosted CRM Outlook client connector setup guide. Date: Version: 1. Author: anb. Target Level: Customer. Target Audience: End User Hosted CRM 2011 Outlook client connector setup guide Date: 2011-09-08 Version: 1 Author: anb Target Level: Customer Target Audience: End User Language: da-dk Page 1 of 19 LEGAL INFORMATION Copyright 2011

Læs mere

Hosted CRM Outlook client connector setup guide. Date: Version: 1. Author: anb. Target Level: Customer. Target Audience: End User

Hosted CRM Outlook client connector setup guide. Date: Version: 1. Author: anb. Target Level: Customer. Target Audience: End User Hosted CRM 2011 Outlook client connector setup guide Date: 2011-06-29 Version: 1 Author: anb Target Level: Customer Target Audience: End User Language: da-dk Page 1 of 16 LEGAL INFORMATION Copyright 2011

Læs mere

Citrix CSP og Certificate Store Provider

Citrix CSP og Certificate Store Provider Project Name Document Title TDC Citrix Citrix og Certificate Store Provider Version Number 1.0 Status Release Author jkj Date 5-10-2006 Trademarks All brand names and product names are trademarks or registered

Læs mere

! Kia Dahlen. Kamilla Klein, Pia Jensen og Maria Korshøj Andersen.

! Kia Dahlen. Kamilla Klein, Pia Jensen og Maria Korshøj Andersen. Copenhagen Business Academy Multimediedesigner 3. semester - 1. projekt, september 2014 Gruppe 1 - MulA Kia Dahlen. Kamilla Klein, Pia Jensen og Maria Korshøj Andersen. Study: Multimedia Design Project:

Læs mere

SOFTWARE PROCESSES. Dorte, Ida, Janne, Nikolaj, Alexander og Erla

SOFTWARE PROCESSES. Dorte, Ida, Janne, Nikolaj, Alexander og Erla SOFTWARE PROCESSES Dorte, Ida, Janne, Nikolaj, Alexander og Erla Hvad er en software proces? Et struktureret sæt af AKTIVITETER, hvis mål er udvikling af software. En software proces model er en abstrakt

Læs mere

Bilag. Resume. Side 1 af 12

Bilag. Resume. Side 1 af 12 Bilag Resume I denne opgave, lægges der fokus på unge og ensomhed gennem sociale medier. Vi har i denne opgave valgt at benytte Facebook som det sociale medie vi ligger fokus på, da det er det største

Læs mere

Skriftlig Eksamen Kombinatorik, Sandsynlighed og Randomiserede Algoritmer (DM528)

Skriftlig Eksamen Kombinatorik, Sandsynlighed og Randomiserede Algoritmer (DM528) Skriftlig Eksamen Kombinatorik, Sandsynlighed og Randomiserede Algoritmer (DM58) Institut for Matematik og Datalogi Syddansk Universitet, Odense Torsdag den 1. januar 01 kl. 9 13 Alle sædvanlige hjælpemidler

Læs mere

Bookingmuligheder for professionelle brugere i Dansehallerne 2015-16

Bookingmuligheder for professionelle brugere i Dansehallerne 2015-16 Bookingmuligheder for professionelle brugere i Dansehallerne 2015-16 Modtager man økonomisk støtte til et danseprojekt, har en premieredato og er professionel bruger af Dansehallerne har man mulighed for

Læs mere

Øvelse 9. Klasser, objekter og sql-tabeller insert code here

Øvelse 9. Klasser, objekter og sql-tabeller insert code here Øvelse 9. Klasser, objekter og sql-tabeller Denne opgave handler om hvordan man opbevarer data fra databasekald på en struktureret måde. Den skal samtidig give jer erfaringer med objekter, der kommer til

Læs mere

Masters Thesis - registration form Kandidatafhandling registreringsformular

Masters Thesis - registration form Kandidatafhandling registreringsformular Masters Thesis - registration form Kandidatafhandling registreringsformular Godkendelse af emne for hovedopgave af vejleder og undervisningskoordinator. Læs venligst retningslinjerne sidst i dette dokument

Læs mere

Status på det trådløse netværk

Status på det trådløse netværk Status på det trådløse netværk Der er stadig problemer med det trådløse netværk, se status her: http://driftstatus.sdu.dk/?f=&antal=200&driftid=1671#1671 IT-service arbejder stadig med at løse problemerne

Læs mere

Trolling Master Bornholm 2016 Nyhedsbrev nr. 3

Trolling Master Bornholm 2016 Nyhedsbrev nr. 3 Trolling Master Bornholm 2016 Nyhedsbrev nr. 3 English version further down Den første dag i Bornholmerlaks konkurrencen Formanden for Bornholms Trollingklub, Anders Schou Jensen (og meddomer i TMB) fik

Læs mere

FairSSL Fair priser fair support

FairSSL Fair priser fair support Small Business Server 2003 Certifikat administration Følgende vejledning beskriver hvordan man vælger hvilke adresser der skal være i ens SBS 2003 SSL certifikat. For support og hjælp til anvendelsen af

Læs mere

DK - Quick Text Translation. HEYYER Net Promoter System Magento extension

DK - Quick Text Translation. HEYYER Net Promoter System Magento extension DK - Quick Text Translation HEYYER Net Promoter System Magento extension Version 1.0 15-11-2013 HEYYER / Email Templates Invitation Email Template Invitation Email English Dansk Title Invitation Email

Læs mere

FairSSL Fair priser fair support

FairSSL Fair priser fair support Microsoft IIS 6 Certifikat administration Følgende vejledning beskriver hvordan man installere et certifikat på en IIS 6 For support og hjælp til anvendelsen af denne vejledning kan du kontakte FairSSL

Læs mere

Design by Contract Bertrand Meyer Design and Programming by Contract. Oversigt. Prædikater

Design by Contract Bertrand Meyer Design and Programming by Contract. Oversigt. Prædikater Design by Contract Bertrand Meyer 1986 Design and Programming by Contract Michael R. Hansen & Anne Haxthausen mrh@imm.dtu.dk Informatics and Mathematical Modelling Technical University of Denmark Design

Læs mere

Implementing SNOMED CT in a Danish region. Making sharable and comparable nursing documentation

Implementing SNOMED CT in a Danish region. Making sharable and comparable nursing documentation Implementing SNOMED CT in a Danish region Making sharable and comparable nursing documentation INTRODUCTION Co-operation pilot project between: The Region of Zealand Their EHR vendor - CSC Scandihealth

Læs mere

Dean's Challenge 16.november 2016

Dean's Challenge 16.november 2016 O Dean's Challenge 16.november 2016 The pitch proces..with or without slides Create and Practice a Convincing pitch Support it with Slides (if allowed) We help entrepreneurs create, train and improve their

Læs mere

Vejledning til at tjekke om du har sat manuel IP på din computer.

Vejledning til at tjekke om du har sat manuel IP på din computer. Indhold Vejledning til at, komme på nettet. (DANSK)... 2 Gælder alle systemer.... 2 Vejledning til at tjekke om du har sat manuel IP på din computer.... 2 Windows 7... 2 Windows Vista... 2 Windows XP...

Læs mere

Webkorpora: Yahoo API og perl

Webkorpora: Yahoo API og perl Webkorpora: Yahoo API og perl Jakob Halskov jh.id@cbs.dk Ph.d.-studerende Terminologi og korpuslingvistik den 21. februar 2006 1. Hvad er et API? 2. Hent din egen udviklernøgle! 3. Gennemgang af koden

Læs mere

Sortering fra A-Z. Henrik Dorf Chefkonsulent SAS Institute

Sortering fra A-Z. Henrik Dorf Chefkonsulent SAS Institute Sortering fra A-Z Henrik Dorf Chefkonsulent SAS Institute Hvorfor ikke sortering fra A-Å? Det er for svært Hvorfor ikke sortering fra A-Å? Hvorfor ikke sortering fra A-Å? Hvorfor ikke sortering fra A-Å?

Læs mere

how to save excel as pdf

how to save excel as pdf 1 how to save excel as pdf This guide will show you how to save your Excel workbook as PDF files. Before you do so, you may want to copy several sheets from several documents into one document. To do so,

Læs mere

NT PDC Udarbejdet af Kenneth Dalbjerg

NT PDC Udarbejdet af Kenneth Dalbjerg NT PDC Udarbejdet af Kenneth Dalbjerg Titelblad Denne rapport er udarbejdet af Kenneth Dalbjerg, med det formål at lære noget omkring, NT PDC Server. Side 2 af 13 Indholdsfortegnelse Forside Titelblad

Læs mere

Microsoft Dynamics C5. version 2012 Service Pack 01 Hot fix Fix list - Payroll

Microsoft Dynamics C5. version 2012 Service Pack 01 Hot fix Fix list - Payroll Microsoft Dynamics C5 version 2012 Service Pack 01 Hot fix 001 4.4.01.001 Fix list - Payroll CONTENTS Introduction... 3 Payroll... 3 Corrected elements in version 4.4.01.001... 4 Microsoft Dynamics C5

Læs mere

Begrænsninger i SQL. Databaser, efterår 2002. Troels Andreasen

Begrænsninger i SQL. Databaser, efterår 2002. Troels Andreasen Databaser, efterår 2002 Begrænsninger i SQL Troels Andreasen Datalogiafdelingen, hus 42.1 Roskilde Universitetscenter Universitetsvej 1 Postboks 260 4000 Roskilde Telefon: 4674 2000 Fax: 4674 3072 www.dat.ruc.dk

Læs mere

Hassansalem.dk/delpin User: admin Pass: admin BACKEND

Hassansalem.dk/delpin User: admin Pass: admin BACKEND Hassansalem.dk/delpin User: admin Pass: admin BACKEND 1/10 Indledning Dette projekt er den afsluttende del af web udvikling studiet på Erhvervs Lillebælt 1. semester. Projektet er udarbejdet med Del-pin

Læs mere

Fra idé til virkelig med Azure Mobile Services

Fra idé til virkelig med Azure Mobile Services Fra idé til virkelig med Azure Mobile Services Niels Ladegaard Beck Holion nlb@holion.dk @nielslbeck Windows Developers in Denmark Azure App Service Mobile App Introduktion til Azure Mobile Services Platform

Læs mere

ATEX direktivet. Vedligeholdelse af ATEX certifikater mv. Steen Christensen stec@teknologisk.dk www.atexdirektivet.

ATEX direktivet. Vedligeholdelse af ATEX certifikater mv. Steen Christensen stec@teknologisk.dk www.atexdirektivet. ATEX direktivet Vedligeholdelse af ATEX certifikater mv. Steen Christensen stec@teknologisk.dk www.atexdirektivet.dk tlf: 7220 2693 Vedligeholdelse af Certifikater / tekniske dossier / overensstemmelseserklæringen.

Læs mere

QUICK MANUAL BRUGERNAVN: ADMIN PASSWORD: 00000 APP: SMARTEYES PRO PORT: 50100. SecVision - Quick Manual v1.0

QUICK MANUAL BRUGERNAVN: ADMIN PASSWORD: 00000 APP: SMARTEYES PRO PORT: 50100. SecVision - Quick Manual v1.0 QUICK MANUAL BRUGERNAVN: ADMIN PASSWORD: 00000 APP: SMARTEYES PRO PORT: 50100 SecVision - Quick Manual v1.0 1. System Login 1.1. Bruger Login ID: admin Password: 00000 1.2. Indstilling af dato/tid og harddisk

Læs mere

Schedulering af SAS job i MS Task Scheduler, som sender e-mail med log og statuskode ved fejl

Schedulering af SAS job i MS Task Scheduler, som sender e-mail med log og statuskode ved fejl Schedulering af SAS job i MS Task Scheduler, som sender e-mail med log og statuskode ved fejl Eksemplet består af 2 dele, et SAS program der fejler, samt et Powershell script til at eksekvere SASprogrammet

Læs mere

IPTV Box (MAG250/254) Bruger Manual

IPTV Box (MAG250/254) Bruger Manual IPTV Box (MAG250/254) Bruger Manual Når din STB (Set top Box) starter op, bliver der vist en pop up boks på skærmen, hvor du kan åbne EPG ved at trykke på F2 (Nogle bokse kan fortælle at den har brug for

Læs mere

The X Factor. Målgruppe. Læringsmål. Introduktion til læreren klasse & ungdomsuddannelser Engelskundervisningen

The X Factor. Målgruppe. Læringsmål. Introduktion til læreren klasse & ungdomsuddannelser Engelskundervisningen The X Factor Målgruppe 7-10 klasse & ungdomsuddannelser Engelskundervisningen Læringsmål Eleven kan give sammenhængende fremstillinger på basis af indhentede informationer Eleven har viden om at søge og

Læs mere

Subject to terms and conditions. WEEK Type Price EUR WEEK Type Price EUR WEEK Type Price EUR WEEK Type Price EUR

Subject to terms and conditions. WEEK Type Price EUR WEEK Type Price EUR WEEK Type Price EUR WEEK Type Price EUR ITSO SERVICE OFFICE Weeks for Sale 31/05/2015 m: +34 636 277 307 w: clublasanta-timeshare.com e: roger@clublasanta.com See colour key sheet news: rogercls.blogspot.com Subject to terms and conditions THURSDAY

Læs mere

Indholdsfortegnelse for kapitel 3

Indholdsfortegnelse for kapitel 3 Indholdsfortegnelse for kapitel 3 Kapitel 3 Design............................................................ 2 Database........................................................... 3 ER-diagram.................................................

Læs mere

Danish Language Course for Foreign University Students Copenhagen, 13 July 2 August 2016 Advanced, medium and beginner s level.

Danish Language Course for Foreign University Students Copenhagen, 13 July 2 August 2016 Advanced, medium and beginner s level. Danish Language Course for Foreign University Students Copenhagen, 13 July 2 August 2016 Advanced, medium and beginner s level Application form Must be completed on the computer in Danish or English All

Læs mere

1 Indlæsning af script

1 Indlæsning af script 1 Indlæsning af script Når opgraderingen af invokeren er foretaget, skal du indlæse et script på den SQL server, hvor I skal modtage jeres SLS-data. Scriptet henter du her http://www.oes.dk/sw49118.asp

Læs mere

3. SEMESTER 2. PROJECT MULB Gruppe 1. 20. september 2015

3. SEMESTER 2. PROJECT MULB Gruppe 1. 20. september 2015 PROJECT DATABASE 3. SEMESTER 2. PROJECT MULB Gruppe 1. 20. september 2015 Ved at underskrive dette dokument bekræfter vi, at det indsendte materiale alt sammen er vores eget materiale og arbejde. Andreas

Læs mere

A Profile for Safety Critical Java

A Profile for Safety Critical Java A Profile for Safety Critical Java Martin Schoeberl Hans Søndergaard Bent Thomsen Anders P. Ravn Præsenteret af: Henrik Kragh-Hansen November 8, 2007 Forfatterne Martin Schoeberl Udvikler af JOP processoren

Læs mere

SEPA Direct Debit. Mandat Vejledning 2013.03.15. Nets Lautrupbjerg 10 DK-2750 Ballerup

SEPA Direct Debit. Mandat Vejledning 2013.03.15. Nets Lautrupbjerg 10 DK-2750 Ballerup SEPA Direct Debit Mandat Vejledning 2013.03.15 Nets Lautrupbjerg 10 DK-2750 Ballerup Indholdsfortegnelse 1. Indledning... 3 1.1 Tilknyttet dokumentation... 3 1.2 Kontakt til Nets... 3 2. Krav til SEPA

Læs mere

Projektledelse i praksis

Projektledelse i praksis Projektledelse i praksis - Hvordan skaber man (grundlaget) for gode beslutninger? Martin Malis Business Consulting, NNIT mtmi@nnit.com 20. maj, 2010 Agenda Project Governance Portfolio Management Project

Læs mere

Backup Applikation. Microsoft Dynamics C5 Version 2008. Sikkerhedskopiering

Backup Applikation. Microsoft Dynamics C5 Version 2008. Sikkerhedskopiering Backup Applikation Microsoft Dynamics C5 Version 2008 Sikkerhedskopiering Indhold Sikkerhedskopiering... 3 Hvad bliver sikkerhedskopieret... 3 Microsoft Dynamics C5 Native database... 3 Microsoft SQL Server

Læs mere

Trolling Master Bornholm 2016 Nyhedsbrev nr. 8

Trolling Master Bornholm 2016 Nyhedsbrev nr. 8 Trolling Master Bornholm 2016 Nyhedsbrev nr. 8 English version further down Der bliver landet fisk men ikke mange Her er det Johnny Nielsen, Søløven, fra Tejn, som i denne uge fangede 13,0 kg nord for

Læs mere

SPECIALTRYKKERIETS KUNDE WEBPORTAL KOM GODT I GANG

SPECIALTRYKKERIETS KUNDE WEBPORTAL KOM GODT I GANG SPECIALTRYKKERIETS KUNDE WEBPORTAL KOM GODT I GANG Jeg håber du får fornøjelse af vores nye værktøj. WebApproval skal gøre det nemmere og mere sikkert for dig at godkende din tryksager. Har du spørgsmål,

Læs mere

PID2000 Archive Service

PID2000 Archive Service PROLON CONTROL SYSTEMS Herstedvesterstræde 56 DK-2620 Albertslund Danmark Tlf.: (+45) 43620625 Fax: (+45) 43623125 PID2000 Archive Service Bruger vejledning Juni 2002 Denne manual beskriver brugen af softwaren

Læs mere

Introduktion til OPC Access

Introduktion til OPC Access Introduktion til OPC Access OPC Access anvendes til at kommunikere med jeres produktionsudstyr via OPC. OPC Access kombinerer en SQL Server med OPC, således at jeres produktionsudstyr kobles sammen med

Læs mere

Danish Language Course for International University Students Copenhagen, 12 July 1 August Application form

Danish Language Course for International University Students Copenhagen, 12 July 1 August Application form Danish Language Course for International University Students Copenhagen, 12 July 1 August 2017 Application form Must be completed on the computer in Danish or English All fields are mandatory PERSONLIGE

Læs mere

VPN VEJLEDNING TIL MAC

VPN VEJLEDNING TIL MAC VPN VEJLEDNING TIL MAC MAC OS X 1 VPN VEJLEDNING TIL MAC Formålet med en VPN forbindelse er, at du kan tilgå nogle af Aarhus Universitets services hjemmefra, som ellers kun er tilgængelige, når du er på

Læs mere

Enterprise Search fra Microsoft

Enterprise Search fra Microsoft Enterprise Search fra Microsoft Sådan kommer du i gang med search i Microsoft SharePoint Server 2007 Simon Tange Mortensen Solution Sales Specialist Microsoft Danmark simontm@microsoft.com Flere grænseflader

Læs mere

Userguide. NN Markedsdata. for. Microsoft Dynamics CRM 2011. v. 1.0

Userguide. NN Markedsdata. for. Microsoft Dynamics CRM 2011. v. 1.0 Userguide NN Markedsdata for Microsoft Dynamics CRM 2011 v. 1.0 NN Markedsdata www. Introduction Navne & Numre Web Services for Microsoft Dynamics CRM hereafter termed NN-DynCRM enable integration to Microsoft

Læs mere

Unitel EDI MT940 June 2010. Based on: SWIFT Standards - Category 9 MT940 Customer Statement Message (January 2004)

Unitel EDI MT940 June 2010. Based on: SWIFT Standards - Category 9 MT940 Customer Statement Message (January 2004) Unitel EDI MT940 June 2010 Based on: SWIFT Standards - Category 9 MT940 Customer Statement Message (January 2004) Contents 1. Introduction...3 2. General...3 3. Description of the MT940 message...3 3.1.

Læs mere

Netværk & elektronik

Netværk & elektronik Netværk & elektronik Oversigt Ethernet og IP teori Montering af Siteplayer modul Siteplayer teori Siteplayer forbindelse HTML Router (port forwarding!) Projekter Lkaa Mercantec 2009 1 Ethernet På Mars

Læs mere

Database for udviklere. Jan Lund Madsen PBS10107

Database for udviklere. Jan Lund Madsen PBS10107 Database for udviklere Jan Lund Madsen PBS10107 Indhold LINQ... 3 LINQ to SQL og Arkitektur... 3 O/R designere... 5 LINQ Den store introduktion med.net 3.5 er uden tvivl LINQ(udtales link): Language-INtegrated

Læs mere

Indhold. Senest opdateret : 30. juli 2010. Side 1 af 5

Indhold. Senest opdateret : 30. juli 2010. Side 1 af 5 Indhold Introduktion... 2 Scenarier hvor API et kan benyttes... 2 Scenarie 1 Integration til lagerhotel... 2 Scenarie 2 Integration til økonomi system... 2 Webshop2 API Model... 3 Brugen af API et... 4

Læs mere

mandag den 23. september 13 Konceptkommunikation

mandag den 23. september 13 Konceptkommunikation Konceptkommunikation Status... En række koncepter, der efterhånden har taget form Status......nu skal vi rette os mod det færdige koncept idé 1 idé 2 How does it fit together Mixing and remixing your different

Læs mere

EG Data Inform. Byggebasen. WCF og webservices. Jens Karsø

EG Data Inform. Byggebasen. WCF og webservices. Jens Karsø EG Data Inform Byggebasen WCF og webservices Jens Karsø 10 Indholdsfortegnelse Byggebasen Services indledning... 2 Målsætning... 2 Valg af teknologier... 3 Kommunikationsmodel for byggebasen... 3 Services.byggebasen.dk...

Læs mere

Byg din informationsarkitektur ud fra en velafprøvet forståelsesramme The Open Group Architecture Framework (TOGAF)

Byg din informationsarkitektur ud fra en velafprøvet forståelsesramme The Open Group Architecture Framework (TOGAF) Byg din informationsarkitektur ud fra en velafprøvet forståelsesramme The Open Group Framework (TOGAF) Otto Madsen Director of Enterprise Agenda TOGAF og informationsarkitektur på 30 min 1. Introduktion

Læs mere

Overfør fritvalgskonto til pension

Overfør fritvalgskonto til pension Microsoft Development Center Copenhagen, January 2009 Løn Microsoft Dynamics C52008 SP1 Overfør fritvalgskonto til pension Contents Ønsker man at overføre fritvalgskonto til Pension... 3 Brug af lønart

Læs mere

Virk.dk. A one-stop-shop for businesses. Peter Bay Kirkegaard, pbk@eogs.dk Special Advisor Danish Commerce and Companies Agency

Virk.dk. A one-stop-shop for businesses. Peter Bay Kirkegaard, pbk@eogs.dk Special Advisor Danish Commerce and Companies Agency Virk.dk A one-stop-shop for businesses Peter Bay Kirkegaard, pbk@eogs.dk Special Advisor Danish Commerce and Companies Agency Agenda Background Status Future 16-10-2007 2 Virk.dk 16-10-2007 3 Vision Political

Læs mere

Design by Contract. Design and Programming by Contract. Oversigt. Prædikater

Design by Contract. Design and Programming by Contract. Oversigt. Prædikater Design by Contract Design and Programming by Contract Anne Haxthausen ah@imm.dtu.dk Informatics and Mathematical Modelling Technical University of Denmark Design by Contract er en teknik til at specificere

Læs mere

Læs venligst Beboer information om projekt vandskade - sikring i 2015/2016

Læs venligst Beboer information om projekt vandskade - sikring i 2015/2016 Læs venligst Beboer information om projekt vandskade - sikring i 2015/2016 Vi er nødsaget til at få adgang til din lejlighed!! Hvis Kridahl (VVS firma) har bedt om adgang til din/jeres lejlighed og nøgler,

Læs mere

PHP 3 UGERS FORLØB PHP, MYSQL & SQL

PHP 3 UGERS FORLØB PHP, MYSQL & SQL PHP 3 UGERS FORLØB PHP, MYSQL & SQL Uge 1 & 2 Det basale: Det primære mål efter uge 1 og 2, er at få forståelse for hvordan AMP miljøet fungerer i praksis, og hvordan man bruger PHP kodesproget til at

Læs mere

NN Markedsdata. Til. Microsoft Dynamics CRM 2011 Installations guide

NN Markedsdata. Til. Microsoft Dynamics CRM 2011 Installations guide NN Markedsdata Til Microsoft Dynamics CRM 2011 Installations guide Installation Denne guide gå installationen af NN Markedsdata til Microsoft Dynamics CRM 2011 igennem punkt for punkt. Efter du har downloaded

Læs mere

Noter til kursusgang 8, IMAT og IMATØ

Noter til kursusgang 8, IMAT og IMATØ Noter til kursusgang 8, IMAT og IMATØ matematik og matematik-økonomi studierne 1. basissemester Esben Høg 25. oktober 2013 Institut for Matematiske Fag Aalborg Universitet Esben Høg Noter til kursusgang

Læs mere

Sådan opsætter du produkter i www.hihostels.com med henblik på online salg via Websuite eller Compubook. Manual 2010 - version 3.0

Sådan opsætter du produkter i www.hihostels.com med henblik på online salg via Websuite eller Compubook. Manual 2010 - version 3.0 Sådan opsætter du produkter i www.hihostels.com med henblik på online salg via Websuite eller Compubook Manual 2010 - version 3.0 INDHOLDSFORTEGNELSE 1. INDLEDENDE FORKLARING...3 2. ADGANG OG LOGIN...3

Læs mere

Søren Løbner (lobner) ddb Databaser 2007 10 10

Søren Løbner (lobner) ddb Databaser 2007 10 10 ddb Excercise Week 4 Fra relationships til relations Nu når vi har fået vores skemaer på plads, kan SQL udtrykkene til konstruktion af relationerne laves Det foregår ved at vi tager en 1 til 1 oversættelse

Læs mere

2. Systemarkitektur... 2

2. Systemarkitektur... 2 Indholdsfortegnelse 2. Systemarkitektur... 2 2.1 Præsentationsserverarkitektur... 3 2.2 Applikationsserverarkitektur... 7 Version 7.0 Side 1 af 7 5. Systemarkitektur Arkitekturen for Nyt BBR bygger på

Læs mere

Databasesystemer. IT Universitetet i København 7. juni 2005

Databasesystemer. IT Universitetet i København 7. juni 2005 Databasesystemer IT Universitetet i København 7. juni 2005 Eksamenssættet består af 5 opgaver med 13 spørgsmål, fordelt på 6 sider (inklusiv denne side). Vægten af hver opgave er angivet. Du har 4 timer

Læs mere

WINDCHILL THE NEXT STEPS

WINDCHILL THE NEXT STEPS WINDCHILL THE NEXT STEPS PTC/user, 4. marts 2015 Jens Christian Jensen, Econocap Agenda Windchill the next steps Bliv opdateret og inspireret til at se hvor Windchill kan hjælpe dig med andet end blot

Læs mere

Trolling Master Bornholm 2014

Trolling Master Bornholm 2014 Trolling Master Bornholm 2014 (English version further down) Den ny havn i Tejn Havn Bornholms Regionskommune er gået i gang med at udvide Tejn Havn, og det er med til at gøre det muligt, at vi kan være

Læs mere

Appendix 1: Interview guide Maria og Kristian Lundgaard-Karlshøj, Ausumgaard

Appendix 1: Interview guide Maria og Kristian Lundgaard-Karlshøj, Ausumgaard Appendix 1: Interview guide Maria og Kristian Lundgaard-Karlshøj, Ausumgaard Fortæl om Ausumgaard s historie Der er hele tiden snak om værdier, men hvad er det for nogle værdier? uddyb forklar definer

Læs mere