Indhold. 3 Language Pattern Motivation Problem Løsning... 14

Størrelse: px
Starte visningen fra side:

Download "Indhold. 3 Language Pattern 14 3.1 Motivation... 14 3.2 Problem... 14 3.3 Løsning... 14"

Transkript

1 Indhold 1 Brugsmønster #07 Køb af rejser Analyse af brugsmønster billetkøb Design af billetautomat Distribueret model Software arkitektur Dataopdatering Design af brugsmønster #08 Almindeligt køb af billet Remote Observer Pattern (RMI) Klassifikation Mål Også kendt som Motivation Løsning Netværkskommunikation Struktur Deltagere Samarbejde Server Klient Anvendelighed Begrænsninger Begrænsning 1: Åbning af porte for datakommunikation Begrænsning 2: Mere trafik med RMI end sockets Begrænsning 3: Stor netværksbelastning ved update Begrænsning 4: Ingen sikkerhed Begrænsning 5: Stadig afhængigheder Konsekvenser Implementation Eksempelkode Alternativer Sockets Kontinuerlige anmodninger til server SSL (udvidelse) Kendt brug Beslægtede mønstre og værker Language Pattern Motivation Problem Løsning

2 3.4 Interaktion Klassestruktur Databasestruktur Konsekvenser Implementation Anvendelse Referencer Analyseklassediagram 22 5 Designklassediagram 23 2

3 Kapitel 1 Brugsmønster #07 Køb af rejser 1.1 Analyse af brugsmønster billetkøb Analysen af brugsmønster #07 Køb af rejser omhandler brugsmønsterbeskrivelse for et generelt køb af en billet, uanset om det foregår via en billetautomat, internet-browser eller en mobil enhed. Brugsmønster #08 Almindeligt køb af billet beskriver hvordan et almindeligt billetkøb generelt forløber og #09 Kvik-køb af billet beskriver hvordan et kvik-køb forløber på en billetautomat. Der er anvendt navne- og udsagnsordsmetoden 1 for at finde egnede klasser, attributter(se tabel 1.1) og metoder(se tabel 1.2). På analyseklassediagrammet er kun medtaget de klasser, attributter og metoder, som er nødvendige jf. projektafgrænsningen?? på side??. Klassen CustomerSession repræsenterer funktionaliteten i brugsmønster #07 Køb af rejser. Den indeholder derfor metoder til at sammensætte en billet ud fra de valg kunden kan foretage(såsom stationer og antal). Klassen Purchase holder styr på de enkelte billetkøb, samt om der foretages et kvik-køb eller almindeligt køb. Når købet er afsluttet bliver CustomerSession nulstillet. Navneord: Klasse/attribut Navn i diagram Salgsterminal/Billetautomat Pakke TicketMachine Køb Klasse Purchase Delkøb Klasse SubPurchase Købstyper Attribut typeofpurchase Kunde Klasse CustomerSession System - - Produkt - - Salgstransaktion Klasse SaleTransaction Kvik-køb Klasse QuickPurchase Almindeligt køb Klasse OrdinaryPurchase Forudbestilte varer Klasse BookedPurchase Pladsbestilling Klasse SeatReservation Stationer Klasse Station Afrejsestation Attribut departurestation Destination Attribut destinationstation Antal(generel attribut for fx billet og plads) Attribut numberof- Rejse(se delkøb) - - Betaling Klasse Payment Fortsættes... 1 Lit.[?], kap 8.4, side 163 3

4 Navneord: Klasse/attribut Navn i diagram Gyldighed(periode) Attribut validity Tid(dato og klokkeslet) Attribut datetime Pris Attribut ticketprice Tabel 1.1: Navneord for brugsmønster #07 Køb af rejser. Navneord: Metode Navn i diagram Køb af rejse Metode buytrip Godkend rejse/køb Metode acceptpurchase Betal Metode paytrip Udlevering af produkt Metode deliverproduct Registrer transaktion Metode recordtransaction Præsentation af købsmuligheder Metode showpurchasemethod Vælg købsmulighed Metode choosepurchasemethod Præsentation af stationer Metode showstation Vælg afrejsestation Metode choosedeparturestation Vælg destination(se vælg afrejsestation) Metode choosedestinationstation Vælg billettype/pladsbestilling Metode choosetickettype Vælg antal Metode choosequantity Godkend betaling Metode acceptpayment Annuller køb Metode cancelpurchase Nulstilling af valg Metode resetchoices Vis hovedmenu Metode showmainmenu Udregn pris Metode calculateprice Tabel 1.2: Udsagnsord for brugsmønster #07 køb af rejser. 1.2 Design af billetautomat Der skal fremstilles et design, som tilgodeser et robust software skelet, af det bærende brugsmønster #07 Køb af rejser, som udvides af brugsmønstrene #08 Almindeligt køb af billet og #09 Kvik-køb af billet. Et vigtigt aspekt på dette område er data-persistens, hvor der skal foretages design af de nødvendige database aktiviteter ud fra de funde relationer i designarbejdet, se figur 5 på side Distribueret model Der er valgt en 2-tier model hvor distributionstypen er Remote Database. Dette stemmer dog ikke helt overens med kundens ønske om at have en automat der kan fungere offline, se krav R1 Drift ved systemnedbrud og lignende. Remote Database er valgt, for at opfylde kravet omkring distribution, yderligere er denne valgt da en distribueret database-løsning blev fundet for tidskrævende Software arkitektur Billetautomaten designes med en PCMEF+ arkitektur, hvor vægten er lagt på at kunne foretage alm. køb (brugsmønster #08 Almindeligt køb af billet ) og kvik-køb (brugsmønster #09 Kvik-køb af billet ), ud fra et mindre udvalg af stationer. Der er foretaget en analyse af, hvordan de enkelte klasser bedst implementeres, for at opnå 4

5 en klar ansvarsfordeling, samtidig med høj indbyrdes samhørighed og minimal afhængighedskobling. Dette vil styrke softwarens robusthed, forståelighed, vedligeholdelsesvenlighed og optimere fremadrettede ønskede forventninger i softwarens levetid. Der er sat fokus på de klasser, som der kan forventes dynamiske ændringer i, fx kan systemet selv håndtere hvis man tilføjer en kundekategori i databasen, uden at kildekoden skal ændres. En kundekategori kunne være ung og voksen. En billets egenskaber er forsøgt fordelt ud i mindre klasser, således at det er nemmere at tilføje, fjerne eller ændre funktionalitet på billetten. Softwaren tilstræbes designet som en streng og lukket arkitektur 2, hvor undtagelser bekræftes gennem interfaces, for at opnå et vedligeholdelsesvenligt softwaresystem Dataopdatering Da der benyttes Remote Database, skal data hentes fra serveren, hvilket betyder klienten skal have en mekanisme til at holde data opdateret. Denne opdateringsmekanisme er opbygget omkring et Remote Observer mønster, læs mere i kapitel?? på side??. Dette foregår ved at klienterne kan tilmelde sig en liste på serveren, over klienter der skal opdateres med nye data, når der sker ændringer på serveren. 1.3 Design af brugsmønster #08 Almindeligt køb af billet I dette afsnit beskrives kort omkring de forskellige klasser, samt omkring funktionaliteterne bag køb af rejser. Billetkøb Fuktionaliteten Billetkøb er moduleret brugsvenligt med henblik på hurtig betjenning, således at et billetkøb kan foretages ud fra maximum to valg inden betaling. Det er iøvrigt ved billetkøb, efter valgt destination, muligt at tilvælge / fravælge billetter vha. henholdsvis aktivering af + eller - funktionalitet, se figur 1.1, hvor beløbet opsummeres løbende. Figur 1.1: Funktionaliteten til at tilvælge og fravælge billetter. 2 Lit.[?], s.[11-13] 5

6 Stationer Det er valgt at repræsentere stationer som objekter, fremfor en mere primitiv type såsom String. Dette er gjort da det anses at være mere fremtidsorienteret, f.eks. hvis en station skal have et zonenummer eller anden information, så er de samlet ét sted(indkapslet), og de andre klasser er sat op til at håndtere Station -objekter, så en sådan ændring af indhold i en Station -klasse ikke berører disse klasser. StationHandler Bruges til at holde styr på de forskellige Station -objekter. Det er muligt at hente en liste ud med stationsnavne, som strenge, da dette tænkes brugbart i præsentationslaget. Dette er gjort fremfor at præsentationslaget skal håndtere Station - objekter, da dette kræver kendskab til opbygningen af Station -objekterne, eller et interface til at kunne få fat i stationsnavne. Det er valgt at oprette alle stationerne på én gang, og ikke løbende som de bliver brugt. Dette valg er gjort for at få en funktionel prototype. Ulempen er at at der vil blive oprettet en mængde Station -objekter, som ikke bliver brugt, idet at det kun er afgangsog destinationsstation, som skal tilgås(for at hente takstzone). Det tænkes at det senere kan laves om således at de Station -objekter der rent faktisk skal bruges, bliver oprettet når det er nødvendigt. Desuden kan det også senere gøres muligt at kontrollere om Station -objekterne skal opdateres, når et køb afsluttes og sessionen startes på ny. Fremfor blot at nedlægge alle Station -objekter og oprette de samme på ny. CustomerCategory Til hver billet er tilknyttet de forskellige CustomerCategory -typer der findes i databasen. Hver CustomerCategory indeholder informationer om, antal og pris for den pågældende kategori. Ved instantiering af et Ticket -objekt, hentes en liste fra databasen, med alle definerede kundekategorier. Der oprettes et CustomerCategory -objekt for hver kundekategori. Designet er lavet således, at det er muligt at tilføje flere kundekategorier i databasen, hvorefter at disse kan benyttes i systemet uden at der skal ændres i koden. Hvert objekt indeholder en prisfaktor, men kan senere udvides til at indeholde anden information. Det er valgt at oprette alle typer af CustomerCategory -objekter ved billetoprettelse, hvilket forsimpler den nødvendige logik for at afspejle billetkøbets tilstand omkring antallet valgt på de pågældende kundekategorier. Ved at have alle CustomerCategory - objekter oprettet og tilknyttet en billet, er det muligt for præsentationslaget at tilgå alle informationer der skal bruges i forbindelse med et køb, uden at skulle tilgå databasen. En alternativ løsning kunne være at lave et 2-dimensionelt array, indholdende kundekategorier, pris og antal, som illustreret: Kategori 1 Kategori 2... Kategori N pris 1 pris 2... pris N antal antal... antal Denne løsning er ikke valgt, da der stræbes efter en mere objektorienteret løsning. Billettyper Softwareprototypen er kun tiltænkt håndtering af togbilletter, så derfor oprettes der ikke nogen generel billettype, som kan nedarves til tog-, bus-, færgebilletter m.fl. På nuværende tidspunkt undlades dette, da det vil skabe mere forviring end gavn. Hvis det bliver nødvendigt vil det forholdsvist nemt kunne implementeres (antaget at billettyperne benytter samme interface), da de andre klasser er sat op til at operere med, og på, et Ticket -interface. Ticket -interface Dette interface er blevet designet for at undgå at Purchase bliver en facadeklasse til Ticket. Interfacet giver samtidig en skarp grænseflade til hvad man kan med et Ticket -objekt. 6

7 Prisberegning Der vil ikke blive opkrævet betaling ved køb af billetter, men der bliver beregnet en billetpris ud fra rejselængde, antal personer og kundekategori. Prisen for rejselængden findes ud fra differensen mellem to takstzoner, fremfor at lave database med priser i mellem alle mulige stationskombinationer(høj kompleksitet med mange-tilmange relationer). 7

8 Kapitel 2 Remote Observer Pattern (RMI) 2.1 Klassifikation Adfærdsmønster (behavioural). 2.2 Mål At gøre det muligt at notificere og opdatere klienter automatisk, hvis der sker hændelser eller ændringer på en fælles server som disse klienter er tilknyttet, samt at undgå stærke afhængigheder mellem klienter og servere. 2.3 Også kendt som Distributed Observer, Remote Publish-Subscriber og Distributed Publish-Subscriber. 2.4 Motivation Kommunikation mellem klienter og servere, fungerer normalt ved at en klient sender en forespørgsel til en server, som så udfører denne forespørgsel og evt. returnerer relevant information til klienten. Til tider kan det være ønsket at overdrage initiativet til serveren, og lade denne informere klienten hvis der sker bestemte hændelser eller ændringer på serveren. Hvis det f.eks ønskes at en klient kan opdatere data fra en server løbende, vil det være fordelagtigt at serveren giver besked når der er ændringer, frem for at klienten løbende skal anmode serveren om der er nye ændringer. Især hvis der er mange klienter, og relativt sjældne opdateringer, vil det give unødig trafik på netværket, hvis klienterne konstant skal sende forespørgsler om ændringer på serveren. Da serveren typisk ikke har mulighed for at kende til alle de klienter der tilsluttes serveren, bliver klienterne nødt til først at give besked til serveren om at de findes, og serveren bliver således nødt til at holde styr på hvilke klienter der er tilgængelige. Det betyder at der bliver en uønsket cirkulær afhængighed mellem server og klient, hvilket er uønsket. 2.5 Løsning Fra den objektorientede verden, kendes allerede et mønster som har til formål at løse problemer med opdatering af objekter og minimering af cirkulære afhængigheder, nemlig Observer mønsteret. Dette mønster udvides, således det bedre kan anvendes når der benyttes netværkskommunikation. Selve netværkskommunikationen omtales senere. 8

9 2.5.1 Netværkskommunikation Til netværkskommunikation kan benyttes tre teknikker kendt i java: Sockets, Servlets og RMI (Remote Method Invocation). Servlets egner sig bedst til webapplikationer, mens sockets og RMI egner sig til brug ved almindelige applikationer. RMI kan benyttes til at overføre objekter direkte, og til at kalde metoder over netværk. RMI har dog den ulempe at visse porte skal være åbne for at kommunikationen kan foregå, og derfor benyttes RMI typisk lokalt og på lokalnetværk. Sockets egner sig til kommunikation over internettet, idet det kun vil være nødvendigt at åbne en enkelt port på hhv. server og klient. Det er her valgt at benytte RMI som løsning, idet det antages at servere og klienter er placeret på et lukket net. Dette vil dog ikke altid være tilfældet, men her vil det være muligt at implementere en lignende funktionalitet for en af de andre nævnte teknologier. 2.6 Struktur Klassediagrammet for det den omtalte løsning ses i figur 2.1. De to klasser RemoteObservable og ConcreteObservable placeres på serveren. ConcreteObserver placeres på klienten, mens de resterende klasser (alle interfaces), placeres på både klient og server. På klassediagrammet i IARemoteObserver +update() <<uses>> IARemoteObservable +addremoteobserver() +removeremoteobserver +notifyallobservers() ConcreteObserver <<uses>> IConcreteObservable RemoteObserverable -observerlist +addremoteobserver() +removeremoteobserver +notifyallobservers() ConcreteObservable Figur 2.1: Klassediagram for Remote Observer mønsteret. figur 2.2, ses et muligt design af håndteringen til netværkskommunikationen mellem server og klient for den valgte RMI løsning. 2.7 Deltagere De væsentligste deltagere er de to klasser ConcreteObserver og ConcreteObservable. Det er disse klasser der implementerer selve funktionalieteten i mønsteret. Interfacet IRemoteObserver, samt klasserne RemoteObservable, ConcreteObserver og ConcreteObservable udgør 9

10 server NetworkConnectionServerMediator -instance: NetworkConnectionServerMediator -observableremoteobject : Remote -serverport: int -serverregistry: Registry -NetworkConnectionServerMediator () +getinstance(): NetworkConnectionServerMediator -initializeconnections () +notifyobservers() ConcreteObservable 0 1 -instance observable +getinstance() -ConcreteObserver() client ConcreteObserver 0 observable 1 IARemoteObservable -ConcreteObserver () +update() 0 1 NetworkConnectionClientController -serverhost: String -serverport: int -clientport: int -instance: NetworkConnectionClientController -serverregistry: Registry -NetworkConnectionClientController () +getinstance(): NetworkConnectionClientController +getobserable() +addobserver() 1 0 observable Figur 2.2: Klassediagram for netværksløsning med RMI. et klassisk Observer mønster. Idet der ønskes netværkskommunikation mellem Observere og Observables, er der i forhold til det almindelige Observer mønster, indført de to klasser IConcreteObservable og IRemoteObservable. Ved netværkskommunikation er det at foretrække hvis klienten kun kender til interfacet for de metoder der skal kunne kaldes på serveren og omvendt. Der findes allerede et interface for de metoder der skal kunne kaldes på klienten (metoden update), men det samme er ikke gældende for serveren. Derfor indføres interfacet IConcreteObservable, samt interfacet IRemoteObservable. IRemoteObserver Interface der definerer metoden update, som benyttes af klienten til at udføre en bestemt handling når serveren anmoder klienten om opdatering. Interfacet definerer den metode som serveren kan benytte til at kommunikere med klienten (metoden update). IRemoteObservable Interface der definerer de metoder som serveren som miunimum skal implementere, for at gøre det muligt for observere at tilmelde og afmelde sig, samt metoden notifyallobservers, som skal gøre det for serveren at notificere alle klienter. RemoteObservable Klasse som implementerer interfacet IRemoteObservable. Klassen vedligeholder en LinkedList over alle IRemoteObservers. IConcreteObservable Interface der definerer de metoder som skal være tilgængelige for klienten. Derfor arver interfacet fra IRemoteObservable. ConcreteObservable Implementation af IConcreteObservable, og dermed implementation af alle de metoder som skal være tilgængelige for klienten. Arver fra RemoteObservable. ConcreteObserver Implementation af IRemoteObserver. Klassen implementerer således update-metoden, og definerer dermed hvad der skal ske når serveren anmoder klien- 10

11 ten om at opdatere. Klassen kan indeholde flere metoder, men er forpligtet til som minimum at have en update-metode. For netværkskommunikation benyttes følgende controllere på server og klient: NetworkConnectionServerMediator Fungerer som singleton, og har til formål at administrere alle netværksforbindelser på serveren. Det vil sige at denne klasse opretter alle de Observables der skal benyttes, og sørger for at binde disse til et RMI-registry, således de vil være tilgængelige for klienterne. NetworkConnectionClientController Fungerer som singleton. Klassens ansvar er at holde styr på forbindelsen til serverens registry, samt at gemme en reference til de objekter der er bundet i dette registry (de observables der er tilgængelige på serveren). Klassen tilbyder således alle observere på klienten en let tilgang til de objekter der kan tilgås på serveren. Det ses at NetworkConnectionClientController fungerer som controller mellem Observere på klienten og Observables på serveren, samt at NetworkConnectionServerMediator fungerer som mediator for Observables og det objekt der anmoder om at få initialiseret serveren. Det ses at mediatoren på serveren og controlleren på klienten har til formål at indkapsle den funktionalitet der varetager selve netværkskommunikationen. Dette gør også at det vil være muligt at ændre netværkskommunikationen således der benyttes en anden teknologi, ved at ændre mediator klassen på serveren, og ændre controlleren på klienten, således denne ogås virker som en mediator. 2.8 Samarbejde Sekvensdiagrammer for henholdsvis server og klient kan ses i diagrammerne på figur? og? Server Når serveren skal initialiseres, benyttes serverens mediatorklasse. Ved kald af metoden getinstance, initialiseres samtlige Observables, og disse bindes til serverens RMI registry. Når der er udviklet en ny Observable på serveren, er det således blot nødvendigt at tilføje denne observer i mediatorklassen, med en tilhørende notifyobservers metode som er tilknyttet den pågældende Observable. Metoden notifyobservers benyttes til at starte en opdatering af alle Observere Klient Idet en Observer oprettes, benytter denne Observer sig af netværkscontrolleren, for at få fat i en reference til den Observable som ligger på serveren. Dernæst tilføjer Observeren sig selv som Observer til den pågældende Observable. I stedet for at gøre dette direkte til Observable objektet på serveren, benyttes netværksklassen til dette, da denne sørger for at oprette et Remote objekt af klientens Observer, således serveren har mulighed for at tilgå klienten ved opdateringer. Alle andre metoder på serveren kan blot tilgås direkte, så længe der benyttes RMI. 2.9 Anvendelighed Mønsteret kan benyttes i følgende tilfælde: Når en ændring på serveren kræver opdatering af data på mange klienter. 11

12 Når en det ønskes at en server notificerer klienter uden at kende til disse klienters virkemåde. (Hvis for eksempel der er tale om forskellige typer klienter eller lignende). Når netværkstrafik ønskes minimeret ved systemer som skal kunne opdateres løbende Begrænsninger Den valgte løsning har nogle begrænsninger, som i det følgende vil blive beskrevet: Begrænsning 1: Åbning af porte for datakommunikation Det er nødvendigt at kende til alle de porte der skal benyttes på henholdsvis server og klient. På serveren vil dette ikke være noget problem, men på klienten vil det være nødvendigt at åbne de porte der skal være tilgængelige udefra. Det betyder at Remote Observer mønsteret kræver af klienten at minimum en port er åben (for at serveren kan anmode observere om update). Dette gør sig gældende ligegyldigt hvilken teknologi der benyttes. Det vil muligvis være nødvendigt at benytte en NAT server Begrænsning 2: Mere trafik med RMI end sockets Brugen af RMI vil resultere i mere trafik på netværket end almindelig sockets kommunikation. Til gengæld opnås der visse fordele, i og med datakommunikationen kan gøres næsten transparent for selve Observer objektet på klienten og Observable objektet på serveren. Dette er tilfældet da metoder tilsyneladende kan kaldes direkte, uden Observer og Observable objekterne opdager at der foregår netværkskommunikation Begrænsning 3: Stor netværksbelastning ved update Hvis alle klienter opdaterer data på samme tid, vil serveren kunne blive overbelastet. Derfor skal det vurderes om klienterne eventuelt skal vente et tilfældigt tidsrum før de forsøger at hente nye data. Alternativt kan serveren notificere en klient ad gangen, og først notificere næste klient når den første er opdateret Begrænsning 4: Ingen sikkerhed Datakommunikationen er som udgangspunkt usikker. Dette kan dog løses ved brug af SSL. Se afsnit? (alternativer) Begrænsning 5: Stadig afhængigheder Mønsteret har til formål at bryde den cirkulære afhængighed mellem Observer og Observable. Det ses dog i løsningen at der stadig eksisterer en cirkulær afhængighed, men til gengæld er denne afhængighed på et større abstraktionsniveau, og derfor ikke lige så stærk som hvis Observer og Observable havde været direkte afhængige Konsekvenser Kobling mellem server og klient minimeret, ved brug af interfaces. Transparent netværkskommunikation for Observer og Observable objekter. Sikker kommunikation hvis der benyttes SSL. Klienten kan blive opdateret på et hvilket som helst tidspunkt, hvilket kan have konsekvenser hvis data der er i brug ændres. 12

13 2.12 Implementation 2.13 Eksempelkode Til opdatering af stationsliste for billetautomat er følgende implementeret: 2.14 Alternativer Sockets Hvis der i stedet for RMI ønskes anvendt sockets eller anden form for netværkskommunikation, vil dette være muligt ved at modificere netværksklasserne NetworkConnectionServerMediator og NetworkConnectionClientController. Det vil ikke være muligt at gøre kommunikationen transparent på samme måde som RMI, og alle metodekald fra klient til server vil derfor skulle gå igennem en netværksklasse som kan oversætte disse til den ønskede kommunikationsform Kontinuerlige anmodninger til server Hvis ikke der ønskes brug af Observer mønsteret til kommunikationen mellem server og klient, vil det være en mulighed at lade klienten anmode serveren om opdateringer med jævne mellemrum. Alt efter hvor ofte dette er, hvor hurtigt opdateringer skal ud, og begrænsninger på netværkstrafik, kan denne løsning være at foretrække SSL (udvidelse) For at løse problemet med usikker netværkskommunikation kan det være en fordel at benytte SSL forbindelser. SSL kan opsættes i netværksklassen på henholdvis server og klient Kendt brug Benyttes til at opdatere stationslister i ETC billetautomaten. Desuden benyttes mønsteret til at initialisere opdatering af software Beslægtede mønstre og værker Observer mønsteret er det grundlæggende mønster. Remote Observer bygger på Observer mønsteret, og antager at Observer og Observable er adskilt, og at en netværksforbindelse forbinder de to. Mediator benyttes på serveren, idet mediatoren håndterer alle Observables som skal være tilgængelige fra netværket. Observables skal således tilgås via NetworkConnectionServerMediator. Singleton kan med fordel benyttes flere steder i mønsteret. Især på Observables, NetworkConnectionServerMediator og NetworkConnectionClientController. MVC benyttes på klienten, hvor Observeren svarer til View, interfacet for Observable fungerer som Model, og NetworkConnectionClientController fungerer som controller. 13

14 Kapitel 3 Language Pattern 3.1 Motivation Ved udvikling af software rettet mod slutbrugere af forskellig nationalitet, vil det ofte være nødvendigt at implementere understøttelse af flere sprog. For at undgå at udvikle flere, næsten ens, software-versioner i forskellige sprogvarianter, vil dette mønster med fordel kunne benyttes. Mønsteret er særligt anvendeligt i forbindelse med lagdelte arkitekturer (PCMEF og lignende). 3.2 Problem Udskiftning af tekster (på knapper, labels osv.) under afvikling af en applikation, på baggrund af et valgt sprog. 3.3 Løsning I dette mønster benyttes en PCMEF+ struktur, som den grundlæggende arkitektur. Det er control-laget som håndterer en opdatering, hvis brugeren skrifter sprog. Mellem control- og presentation-laget benyttes et observer-pattern (også kaldet publisher-subscriber pattern) til dette. For at kunne kommunikere direkte med persistenslaget, uden brug af domænelaget, benyttes et aquaintance-interface. Dette interface implementeres i foundation-laget. IALanguage: Interfacet IALanguage er kontrakten mellem CLanguage og FLanguage. I dette interface er defineret metoderne: getsentence, getlanguages, getdefault. Metoden getsentence, tager imod to variable, en kategori og en type, som gør det muligt at finde den sætning/meddelelse som man skal bruge. Metoden getlanguages returnerer en LinkedHashMap indeholdende de tilgængelige sprog i systemet. Metoden getdefault returnerer det prefix som er valgt som standard sprog. PJLabelObserver: Denne klasse er et eksempel på et grafisk element, som har fået tilføjet en ekstra funktionalitet, således den kan fungere som en Observer. Klassen arver fra JLabel, og indeholder en konstruktør, som tager imod to strenge, en type og en kategori, disse to benyttes til at hente den tekst, der skal stå på elementet. Ud over dette implementerer klassen interfacet Observer, hvilket betyder metoden update er implementeret. Denne metode er konstrueret således den henter en tekst fra persistenslaget, vha de to strenge der blev sat i konstruktøren, og opdaterer teksten på det grafiske element. CLanguage: Denne klasse arver fra Observable, og benytter interfacet IALanguage. Klassen har en privat konstruktør, det betyder at metoden getinstance skal kaldes, for at oprette 14

15 et objekt af CLanguage. Dette er valgt, da der kun må være et objekt af denne type, for at sikre der ikke bliver konflikt mellem hvilket sprog der er valgt. Metoden setlanguage benyttes af presentationslaget til at skifte sproget, og det er denne metode som gør brug af metoderne liggende i Observable: setchanged og notifyobservers. Derudover benytter klassen sig af interfacet IALanguage, som gør det muligt at benytte metoderne på FLanguage. FLanguage: Denne klasse implementerer interfacet IALanguage, dvs. metoderne getsentence, getlanguages og getdefault. Klassens ansvar er at hente de ønskede ting op fra databasen. 3.4 Interaktion [sekvensdiagram] På figur 3.1 ses hvordan observer-mønsteret kan benyttes til valg af sprog, samt hvordan valg af sprog håndteres. Når brugeren vælger et sprog på skærmen hentes CLanguage-objektet vha. den statiske metode getinstance på CLanguage. Dernæst ændres sproget vha. metoden setlanguage, som medtager variablen prefix. Dette prefix angiver det ønskede sprog. Når dette kald udføres, kalder CLanguage-objektet metoderne setchanged og notifyobservers på Observable-klassen, hvorfra CLanguage arver. Når notifyobservers kaldes, bliver update metoden, på alle objekter som implementerer interfacet Observer, kaldt. I update metoden hentes teksten fra databasen, som passer på det nyvalgte sprog, og denne tekst tilføjes til det grafiske element. Tekst fra databasen hentes vha. getsentence metoden på CLanguage Klassestruktur :CLanguage language :CLanguage observer: Observer Customer getinstance() getinstance() setlanguage(prefix: String) setchanged() notifyobservers() Loop[for each observer in Observer] update(this: Observable, null: Object) getsentence(textcategory: String, texttype: String) Figur 3.1: Sekvensdiagram for valg af sprog. 15

16 3.4.2 Databasestruktur [databasestrukturdiagram] Databasestrukturen er opbygget så den understøtter den valgte organisering af sætninger. Hver sætning der skal benyttes i systemet, er placeret i én bestemt kategori, med ét bestemt typenavn. Hvert typenavn har præcist en sætning for hvert sprog i systemet. For at understøtte sprogfunktionaliteten, benyttes de tabeller der beskrives i det følgende. Tabeller category: Indeholder alle kategorier i systemet. Dette kan fx være exceptions, help, main, general, ticket osv. Tabellen består af én kolonne, category name, som er unik, og primær nøgle. types: indeholder alle typer i systemet. Hver type er indordnet under bestemt én kategori, men der kan være flere typer med samme navn, når blot hver type med samme navn er placeret under forskellige kategorier. Tabellen types har tre kolonner: type id, category name og type name. type id er primær nøgle, category name er fremmednøgle (til tabellen category). category name og type name er tilsammen unikke, idet der er tilføjet et unikt index til disse. prefixes: indeholder en liste over alle sprog der findes i systemet. Der findes to kolonner: prefix og language name. prefix er primær nøgle, mens der er tilføjet et index der gør at language name er unik. default: indeholder en række der angiver hvilket sprog der er default. Der er kun en kolonne, prefix, som er fremmednøgle til tabellen prefixes. sentences indeholder tre kolonner: prefix, type id og message. prefix og type id er i kombination primær nøgle. Dette sikrer at hver type kun har ensætning for hvert sprog. prefix er fremmednøgle til prefix i prefixes, og type id er fremmednøgle til type id i types. Triggers For at sikre konsistens med forretningsmodellen, er der tilføjet to triggers. Den ene trigger sikrer at der tilføjes en sætning til alle typer når der tilføjes et sprog, mens den anden trigger sikrer at der tilføjet en sætning til alle sprog, når der oprettes en ny type. 1 DELIMITER $$ DROP TRIGGER IF EXISTS p r e f i x n e w P r e f i x $$ CREATE TRIGGER p r e f i x n e w P r e f i x AFTER INSERT ON p r e f i x e s FOR EACH ROW 6 BEGIN DECLARE done INT DEFAULT 0 ; DECLARE typeid INT( 1 0 ) ; DECLARE cur1 CURSOR FOR SELECT t y p e i d FROM types ; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1 ; 11 OPEN cur1 ; REPEAT FETCH cur1 INTO typeid ; IF NOT done THEN 16 INSERT INTO s e n t e n c e s ( p r e f i x, type id, message ) VALUES (NEW. p r e f i x, typeid, NO MESSAGE! ) ; END IF ; UNTIL done END REPEAT; END $$ DELIMITER ; 16

17 Kodeudsnit 3.1: Trigger: prefixes newprefix. DELIMITER $$ DROP TRIGGER IF EXISTS types newtype $$ CREATE TRIGGER types newtype AFTER INSERT ON types 5 FOR EACH ROW BEGIN DECLARE done INT DEFAULT 0 ; DECLARE pre VARCHAR( 2 ) ; DECLARE cur1 CURSOR FOR SELECT p r e f i x FROM p r e f i x e s ; 10 DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1 ; OPEN cur1 ; REPEAT FETCH cur1 INTO pre ; 15 IF NOT done THEN INSERT INTO s e n t e n c e s MESSAGE! ) ; END IF ; UNTIL done END REPEAT; END $$ 20 DELIMITER ; ( p r e f i x, type id, message ) VALUES ( pre,new. type id, NO Kodeudsnit 3.2: Trigger: newtype newtype. Rettigheder For at sikre konsistens med forretningsmodellen er det også fornuftigt at angive de rigtige rettigheder. Det anbefales derfor at rettighederne bliver som følger: category: SELECT, INSERT, UPDATE, DELETE types: SELECT, INSERT, UPDATE, DELETE prefixes: SELECT, INSERT, UPDATE, DELETE default: SELECT, UPDATE sentences: SELECT, UPDATE 3.5 Konsekvenser Softwaren vil blive langsomere, hvis man sammenligner med et system, hvor alle tekster er hardcodet. Hvis softwaren er hardcodet, er der ikke mulighed for modulation og dynamik. Der skal implementeres Observer-objekter for hvert grafisk element hvor en tekst skal kunne opdateres, afhængigt af et valgt sprog. Det betyder hvis der benyttes mange forskellige grafiske objekter, skal der også implementeres mange observere. En konsekvens ved disse Observerobjekter, er at de skal arve det grafiske element hvor der ønskes en opdatering. Alle tekster der skal kunne ændres skal angives i presentation-laget, idet ændring af tekster kræver dynamisk opdatering af grafiske elementer. Et softwaresystem bliver mere dynamisk, ved at kunne skifte sprog under afvikling. 17

18 3.6 Implementation 5 package p r e s e n t a t i o n ; import java. awt. ; import javax. swing. ; p u b l i c c l a s s PPanel extends JPanel { p r i v a t e PJLabelObserver t i t l e ; 10 p u b l i c PPanel ( ) { t i t l e = new PJLabelObserver ( FUNCTIONALITY, QUICK PURCHASE ) ; add( t i t l e ) ; 15 Kodeudsnit 3.3: PPanel i presentation. Viser hvordan et PJLabelOberserver objekt kan benyttes i den grafiske brugerflade. Sætningen der hentes er typen QUICK PURCHASE fra kategorien FUNCTIONALITY. package p r e s e n t a t i o n ; import java. u t i l. Observable ; import java. u t i l. Observer ; 5 import javax. swing. JLabel ; import c o n t r o l. CLanguage ; p u b l i c c l a s s PJLabelObserver extends JLabel implements Observer { S t r i n g category, type, t e x t ; 10 p u b l i c PJLabelObserver ( S t r i n g category, S t r i n g type ) { t h i s. c a t e g o r y = c a t e g o r y ; t h i s. type = type ; CLanguage. g e t I n s t a n c e ( ). addobserver ( t h i s ) ; 15 t e x t = CLanguage. g e t I n s t a n c e ( ). getsentence ( category, type ) ; t h i s. settext ( t e x t ) ; p u b l i c void update ( Observable languagesubject, Object o b j e c t ) { 20 t e x t = CLanguage. g e t I n s t a n c e ( ). getsentence ( category, type ) ; t h i s. settext ( t e x t ) ; Kodeudsnit 3.4: Visning af observeren PJLabelOberserver i presentation. Ved update hentes en ny sætning fra CLanguage package c o n t r o l ; import java. s q l. SQLException ; import java. u t i l. LinkedHashMap ; import java. u t i l. Observable ; import acquaintance. IALanguage ; p u b l i c c l a s s CLanguage extends Observable { p r i v a t e S t r i n g l a n g u a g e P r e f i x ; p r i v a t e IALanguage language ; p r i v a t e s t a t i c CLanguage i n s t a n c e = null ; p r i v a t e CLanguage ( ) 18

19 17 throws I n s t a n t i a t i o n E x c e p t i o n, I l l e g a l A c c e s s E x c e p t i o n, ClassNotFoundException, SQLException { language = ( IALanguage ) Class. forname ( foundation. FLanguage ). newinstance ( ) ; l a n g u a g e P r e f i x = language. g e t D e f a u l t ( ) ; p u b l i c s t a t i c CLanguage g e t I n s t a n c e ( ) { i f ( i n s t a n c e == null ) { t r y { 22 i n s t a n c e = new CLanguage ( ) ; catch ( Exception e ) { r e t u r n i n s t a n c e ; 27 p u b l i c void setlanguage ( S t r i n g p r e f i x ) { l a n g u a g e P r e f i x = p r e f i x ; t h i s. setchanged ( ) ; 32 t h i s. n o t i f y O b s e r v e r s ( ) ; p u b l i c S t r i n g getlanguage ( ) { r e t u r n l a n g u a g e P r e f i x ; 37 p u b l i c LinkedHashMap<String, String > getlanguages ( ) { t r y { r e t u r n language. getlanguages ( ) ; 42 catch ( Exception e ) { r e t u r n null ; 47 p u b l i c S t r i n g getsentence ( S t r i n g category, S t r i n g type ) { S t r i n g s e n t e n c e ; t r y { s e n t e n c e = language. getsentence ( languageprefix, category, type ) ; catch ( Exception e ) { 52 s e n t e n c e = The s e n t e n c e could not be found! ; r e t u r n s e n t e n c e ; Kodeudsnit 3.5: CLanguage i control. Virker som singleton. CLanguage objektet husker det valgte sprog, og er ansvarlig for at opdatere alle observere når sproget ændres. package acquaintance ; import java. s q l. SQLException ; 4 import java. u t i l. LinkedHashMap ; p u b l i c i n t e r f a c e IALanguage { p u b l i c S t r i n g getsentence ( S t r i n g p r e f i x, S t r i n g category, S t r i n g type ) throws I n s t a n t i a t i o n E x c e p t i o n, I l l e g a l A c c e s s E x c e p t i o n, ClassNotFoundException, SQLException ; 9 p u b l i c LinkedHashMap<String, String > getlanguages ( ) throws I n s t a n t i a t i o n E x c e p t i o n, I l l e g a l A c c e s s E x c e p t i o n, ClassNotFoundException, SQLException ; p u b l i c S t r i n g g e t D e f a u l t ( ) 19

20 throws I n s t a n t i a t i o n E x c e p t i o n, I l l e g a l A c c e s s E x c e p t i o n, ClassNotFoundException, SQLException ; Kodeudsnit 3.6: IALanguage i Acquaintance. Definerer en kontrakt som FLanguage skal overholde, for at opfylde de services som kræves af control-laget. 2 package foundation ; import java. s q l. ; import java. u t i l. LinkedHashMap ; import acquaintance. IALanguage ; 7 p u b l i c c l a s s FLanguage implements IALanguage { p u b l i c S t r i n g getsentence ( S t r i n g p r e f i x, S t r i n g category, S t r i n g type ) throws I n s t a n t i a t i o n E x c e p t i o n, I l l e g a l A c c e s s E x c e p t i o n, ClassNotFoundException, SQLException { Connection dbconn = FDBConnection. getlanguageconnection ( ) ; 12 Statement stmt ; ResultSet r s ; stmt = dbconn. createstatement ( ) ; r s = stmt. executequery ( 17 SELECT message FROM messages WHERE p r e f i x = +p r e f i x+ + AND category name = +category+ AND type name= +type+ ) ; r s. next ( ) ; r e t u r n r s. g e t S t r i n g ( message ) ; 22 p u b l i c LinkedHashMap<String, String > getlanguages ( ) throws I n s t a n t i a t i o n E x c e p t i o n, I l l e g a l A c c e s s E x c e p t i o n, ClassNotFoundException, SQLException { Connection dbconn = FDBConnection. getlanguageconnection ( ) ; Statement stmt ; 27 R esultset r s ; LinkedHashMap<String, String > languages = new LinkedHashMap<String, String >() ; stmt = dbconn. createstatement ( ) ; 32 r s = stmt. executequery ( SELECT FROM p r e f i x e s ORDER BY language name ASC ) ; while ( r s. next ( ) ) { languages. put ( r s. g e t S t r i n g ( language name ), r s. g e t S t r i n g ( p r e f i x ) ) ; 37 r e t u r n languages ; p u b l i c S t r i n g g e t D e f a u l t ( ) throws I n s t a n t i a t i o n E x c e p t i o n, I l l e g a l A c c e s s E x c e p t i o n, ClassNotFoundException, SQLException { 42 Connection dbconn = FDBConnection. getlanguageconnection ( ) ; Statement stmt ; ResultSet r s ; stmt = dbconn. createstatement ( ) ; 47 r s = stmt. executequery ( SELECT FROM d e f a u l t ) ; r s. next ( ) ; r e t u r n r s. g e t S t r i n g ( p r e f i x ) ; Kodeudsnit 3.7: FLanguage i foundation. Håndterer databaseadgang til language-databasen. 20

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

Hovedrapport 1. 1 Prolog 1 1.1 Forside... 1 1.2 Synopsis... 1 1.3 Forord... 2 1.4 Indholdsfortegnelse... 3 1.5 Læsevejledning... 6

Hovedrapport 1. 1 Prolog 1 1.1 Forside... 1 1.2 Synopsis... 1 1.3 Forord... 2 1.4 Indholdsfortegnelse... 3 1.5 Læsevejledning... 6 Indhold Hovedrapport 1 1 Prolog 1 1.1 Forside........................................ 1 1.2 Synopsis....................................... 1 1.3 Forord........................................ 2 1.4 Indholdsfortegnelse.................................

Læs mere

Hovedrapport 1. 1 Prolog 1 1.1 Forside... 1 1.2 Synopsis... 2 1.3 Forord... 3 1.4 Indholdsfortegnelse... 4 1.5 Læsevejledning... 7

Hovedrapport 1. 1 Prolog 1 1.1 Forside... 1 1.2 Synopsis... 2 1.3 Forord... 3 1.4 Indholdsfortegnelse... 4 1.5 Læsevejledning... 7 Indhold Hovedrapport 1 1 Prolog 1 1.1 Forside........................................ 1 1.2 Synopsis....................................... 2 1.3 Forord........................................ 3 1.4 Indholdsfortegnelse.................................

Læs mere

Rigtig SQL Programmering

Rigtig SQL Programmering Rigtig SQL Programmering 1 SQL i Rigtige Programmer Indtil nu har vi brugt SQL direkte i kommandolinje promt/gui program, hvor vi kan lave forespørgsler til databasen I virkeligheden: Programmer kontakter

Læs mere

Version Dato Beskrivelse 1.0.0 26/11/2012 Initial version 1.2.0 05/03/2013 Tilføjet eksempel med Template Agent, generelt udvidet dokumentet.

Version Dato Beskrivelse 1.0.0 26/11/2012 Initial version 1.2.0 05/03/2013 Tilføjet eksempel med Template Agent, generelt udvidet dokumentet. MOX og APOS2 Forord Dette dokument er en del af APOS version 2 manualerne. APOS version 2 (APOS2 herefter) er et organisation, klassifikation og personale system baseret på Sag & Dokument standarderne.

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

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

Skriftlig opgave. Designtanker i database-nære systemer

Skriftlig opgave. Designtanker i database-nære systemer Skriftlig opgave til eksamen for faget»databaser«designtanker i database-nære systemer Martin Ancher Holm Juni 2010 1 Intro Denne skriftlige opgave indeholder kort de daglige tanker jeg har omkring design

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

DM531 - Softwarearkitektur Projekt - TaxaTracer, Statisk Kort. Martin Dissing-Hansen 251088 Alexander Poopeiko 090288 Jens Riise Danielsen 100267

DM531 - Softwarearkitektur Projekt - TaxaTracer, Statisk Kort. Martin Dissing-Hansen 251088 Alexander Poopeiko 090288 Jens Riise Danielsen 100267 DM531 - Softwarearkitektur Projekt - TaxaTracer, Statisk Kort Martin Dissing-Hansen 251088 Alexander Poopeiko 090288 Jens Riise Danielsen 100267 December 17, 2009 3.1 Valg at brugsmønster til udvidelse

Læs mere

MySQL i Java. Tutorial lavet af Jákup W. Hansen TSU 2006 2.semester 05.januar 2007

MySQL i Java. Tutorial lavet af Jákup W. Hansen TSU 2006 2.semester 05.januar 2007 MySQL i Java Tutorial lavet af Jákup W. Hansen TSU 2006 2.semester 05.januar 2007 Hvad er MySQL? Det er et database system, som er gratis for os at bruge. Det er lidt mere besværligt i starten at bruge

Læs mere

Views etc. Databaser

Views etc. Databaser Views etc. Databaser Views Med Views kan vi gemme nogle af de lange select sætninger. I vores eksempel fra tidligere er det f.eks. forbundet med en del besvær at finde telefon nr og bilmærker for en sælger

Læs mere

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

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

Casper Fabricius http://casperfabricius.com. ActiveRecord. O/RM i Ruby on Rails

Casper Fabricius http://casperfabricius.com. ActiveRecord. O/RM i Ruby on Rails Casper Fabricius http://casperfabricius.com ActiveRecord O/RM i Ruby on Rails Casper Fabricius Freelance webudvikler - casperfabricius.com 9 års erfaring med webudvikling 6 år med ASP/ASP.NET/C# 3 år med

Læs mere

Data lagring. 2. iteration (implement backend)

Data lagring. 2. iteration (implement backend) Data lagring 2. iteration (implement backend) Emner Grundlæggende database begreber. Data definitionskommandoer ER-diagrammer og cardinalitet/relationer mellem tabeller Redundant data og Normalisering

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

Software Construction 1 semester (SWC) Spørgsmål 1

Software Construction 1 semester (SWC) Spørgsmål 1 Spørgsmål 1 Objekter #1 Giv en kort præsentation af begrebet objekt, samt hvorledes du erklærer(declare), opretter(create) og bruger objekter Du kan beskrive o Datatyper o Variable / Instans variable /

Læs mere

Videregående programmering i Java

Videregående programmering i Java Videregående programmering i Java Dag 6 Komponenter (og lidt Swing og MVC) Læsning: VP 4, evt. VP 6 Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html Grafiske komponenter

Læs mere

Hvad er et distribueret objekt? Plan 12.3. Objekter, objektreferencer, metoder, parameteroverførsel. Objekter: notation

Hvad er et distribueret objekt? Plan 12.3. Objekter, objektreferencer, metoder, parameteroverførsel. Objekter: notation Plan 12.3. Oversigt over grundlæggende begreber Java: eksempel på applikation, programmering og oversættelse Uddybning af grundlæggende begreber Java RMI implementation Forklaring af øvelsen Hvad er et

Læs mere

Indholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:...

Indholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:... Indholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:... 9 Nogle HTML tags... 9 Databaser og PHP Når vi snakker

Læs mere

Software Projekt NoSQL vs RMDB

Software Projekt NoSQL vs RMDB Software Projekt NoSQL vs RMDB Skrevet af Carsten Sørensen, Hans Jørgen Frandsen, Peter Haislund Department of Computer Science, University of Aarhus Aabogade 34, 8200 Arhus N, Denmark 201200089, 19960442,

Læs mere

ITONK1 Obligatorisk opgave 2 Badger Brewery Surveillance System

ITONK1 Obligatorisk opgave 2 Badger Brewery Surveillance System Ingeniørhøjskolen i Århus 2. juni 2006 IKT Dalgas Avenue 2 8000 Århus C ITONK1 Obligatorisk opgave 2 Badger Brewery Surveillance System Studerende: Henrik Brix Andersen, 01079 Tomas Stæhr Berg, 03539 Benjamin

Læs mere

Jacob Nordfalk. Ingeniørhøjskolen i København. Nykøbing F itvisioncenter 24. februar 2004

Jacob Nordfalk. Ingeniørhøjskolen i København. Nykøbing F itvisioncenter 24. februar 2004 Genbrugelige komponenter og designmønstre i Java Jacob Nordfalk Ingeniørhøjskolen i København Nykøbing F itvisioncenter 24. februar 2004 Program Om Jacob Nordfalk introduktion (ikke-teknisk del) Komponentbaseret

Læs mere

Eksempel: et ordresystem note 5 Lagdeling s. 1

Eksempel: et ordresystem note 5 Lagdeling s. 1 Eksempel: et ordresystem note 5 Lagdeling s. 1 Eksempel: et ordre-system NiceHair er et firma, som sælger udstyr, inventar og frisørartikler til frisørsaloner over hele landet. Det er ejet af et ægtepar

Læs mere

FORCE Inspect Online Manual v. 1.02. FORCE Inspect Online Manual. 1 af 18

FORCE Inspect Online Manual v. 1.02. FORCE Inspect Online Manual. 1 af 18 FORCE Inspect Online Manual 1 af 18 Indholdsfortegnelse Indholdsfortegnelse... 2 FORCE Inspect Online Manual... 3 Generelt... 3 Login... 3 Main... 4 Intro sektion... 4 Links sektion... 4 News sektion...

Læs mere

Introduktion til Oracle, Datalogi, RUC Af: Jens Lauterbach (jeans@ruc.dk) 2002

Introduktion til Oracle, Datalogi, RUC Af: Jens Lauterbach (jeans@ruc.dk) 2002 Introduktion til Oracle, Datalogi, RUC Af: Jens Lauterbach (jeans@ruc.dk) 2002 På datalogi har vi en databaseserver, som de studerende på datalogi kan benytte til projekter og som også benyttes i forbindelse

Læs mere

Bilagsrapport til specialet Flash-light

Bilagsrapport til specialet Flash-light Bilagsrapport til specialet Flash-light Af Filip Nicolaisen og Kasper Storm Afleveret Maj 2006 Vejledere: Mads Rosendahl (Datalogi) Bjørn Laursen (Kommunikation) Indholdsfortegnelse - Bilag Bilag 1. 1

Læs mere

Indholdsfortegnelse for kapitel 2

Indholdsfortegnelse for kapitel 2 Indholdsfortegnelse for kapitel 2 Kapitel 2. Analyse.......................................................... 2 Analyse af 2.1...................................................... 2 Analysen af Database.................................................

Læs mere

Ruko SmartAir. Updater installation

Ruko SmartAir. Updater installation Ruko SmartAir Updater installation Introduktion. Updateren er en speciel enhed som giver os mulighed for at tilføje, læse og skrive funktioner i en offline installation. Med læse og skrive funktionen kan

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

9.8 Kildekode. side 88. Pakke Klasse Sidenummer. fortsætter..

9.8 Kildekode. side 88. Pakke Klasse Sidenummer. fortsætter.. 9.8 Kildekode Pakke Klasse Sidenummer db Aktivitetstype 91 Behandler 91 ConnectDB 92 DagensKommentar 93 Helligdag 94 IkkePrimaerTid 94 Patient 96 Patientaftale 96 PatientAktivitet 97 Patientgruppe 98 PatientgruppeItem

Læs mere

XProtect-klienter Tilgå din overvågning

XProtect-klienter Tilgå din overvågning XProtect-klienter Tilgå din overvågning Tre måder at se videoovervågning på For at skabe nem adgang til videoovervågning tilbyder Milestone tre fleksible brugergrænseflader: XProtect Smart Client, XProtect

Læs mere

Miniprojekt2011. Formålet er at lære og indlære god objektorienteret programudvikling og programmering med Java, samt undervejs at opfylde studiekrav.

Miniprojekt2011. Formålet er at lære og indlære god objektorienteret programudvikling og programmering med Java, samt undervejs at opfylde studiekrav. Miniprojekt2011 Projektbeskrivelse Der skal fremstilles en lille java application på PC, hvor brugeren kan foretage interaktioner med en simpel database på disken via et grafisk brugerinterface. Formålet

Læs mere

Objektorienterede metoder

Objektorienterede metoder Objektorienterede metoder Denne gang: Designmønstre Skabende designmønstre: Fabrikeringsmetode/Fabrik, Singleton, Abstrakt fabrik (Toolkit), Prototype, Objektpulje Singleton eksempel: Forskellige slags

Læs mere

PHP Snippets. De små korte. Skrevet af Daniel Pedersen

PHP Snippets. De små korte. Skrevet af Daniel Pedersen PHP Snippets De små korte Skrevet af Daniel Pedersen Indhold PHP Snippets De små korte er en samling af små og praktiske kode eksempler med kort forklaring, som med formål at kunne benyttes til opsalgsværk

Læs mere

BAAN IVc. Brugervejledning til BAAN Data Navigator

BAAN IVc. Brugervejledning til BAAN Data Navigator BAAN IVc Brugervejledning til BAAN Data Navigator En udgivelse af: Baan Development B.V. P.O.Box 143 3770 AC Barneveld Holland Trykt i Holland Baan Development B.V. 1997. Alle rettigheder forbeholdes.

Læs mere

Program Dokumentation PC Software Skrevet af. Gruppen. Version 1.0

Program Dokumentation PC Software Skrevet af. Gruppen. Version 1.0 Program Dokumentation PC Software Skrevet af Gruppen. Version 1.0 Indholds fortegnelse 1. INDLEDNING...3 1.1. FORMÅL...3 1.2. REFERENCER...3 1.3. VERSIONSHISTORIE...3 1.4. DEFINITIONER...3 1.5. DOKUMENTATIONENS

Læs mere

Videregående programmering i Java

Videregående programmering i Java Videregående programmering i Java Dag 3 Skabende designmønstre Skabende designmønstre: Fabrikeringsmetode/Fabrik, Singleton, Abstrakt fabrik (Toolkit), Prototype, Objektpulje Eksempel: Forskellige slags

Læs mere

IPv6 sameksistens med IPv4. af Laurent Flindt Muller & Jakob Pedersen

IPv6 sameksistens med IPv4. af Laurent Flindt Muller & Jakob Pedersen IPv6 sameksistens med IPv4 af Laurent Flindt Muller & Jakob Pedersen Gennemgangsplan: Network Address Translation Protocol Translation (NAT-PT) - Motivation - IPv4 NAT - NAT-PT - Stateless IP/ICMP Translation

Læs mere

educasoft - en professionel samarbejdspartner med speciale i uddannelse!

educasoft - en professionel samarbejdspartner med speciale i uddannelse! Velkommen til educasoft's hjemmeside educasoft - en professionel samarbejdspartner med speciale i uddannelse! Professionelle undervisere Undervisning i virksomheden Undervisning dag/aften eller week-end

Læs mere

Web- og serverprogrammering

Web- og serverprogrammering Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html Web- og serverprogrammering Databasekommunikation - dag 7 Strategier til databaseadgang JDBC (Java DataBase Connectivity)

Læs mere

Side 1. Databaser og SQL. Dagens gang. Databasebegreber. Introduktion til SQL Kap 1-5

Side 1. Databaser og SQL. Dagens gang. Databasebegreber. Introduktion til SQL Kap 1-5 Databaser og SQL Introduktion til SQL Kap 1-5 1 Dagens gang Databaser Database begreber Mapning af klasser til relationel model Normalisering Opgaver til næste gang 2 Databasebegreber A database is a:

Læs mere

Note om RMI af Peter Kjærsgaard

Note om RMI af Peter Kjærsgaard Note om RMI af Peter Kjærsgaard 1. Filosofi Filosofien i RMI er, at et objekt på en server skal kunne kaldes fra en klient, som om server-objektet lå på klienten. RMI er dermed på et højere niveau end

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

RMI med BlueJ. Tutorial lavet af Jákup W. Hansen TSU 2006 3.semester 11. desember 2007

RMI med BlueJ. Tutorial lavet af Jákup W. Hansen TSU 2006 3.semester 11. desember 2007 RMI med BlueJ Tutorial lavet af Jákup W. Hansen TSU 2006 3.semester 11. desember 2007 Hvad er RMI? Når man arbejder med Distribuerede Systemer, som igen vil sige at man ønsker at flere end én komputer

Læs mere

Web- og serverprogrammering

Web- og serverprogrammering Web- og serverprogrammering Arkitekturer i webprogrammer - dag 6 Model-View-Controller-arkitukturen Flerlags-arkitekturer Læsning: WJSP 10 Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html

Læs mere

Udvikling af DOTNET applikationer til MicroStation i C#

Udvikling af DOTNET applikationer til MicroStation i C# Udvikling af DOTNET applikationer til MicroStation i C# Praktiske tips for at komme i gang. Gunnar Jul Jensen, Cowi Hvorfor nu det? Mdl og Vba kan det hele Fordelene er : udviklingsmiljøet er eksternt

Læs mere

Videregående Programmering Obligatorisk opgave - 3. semester, efterår 2004

Videregående Programmering Obligatorisk opgave - 3. semester, efterår 2004 Overvågningssystem Beskrivelse Bagagesorteringssystemet består af et antal skranker (check-in) til modtagelse og registrering af bagage, et automatiseret sorteringsanlæg samt et antal terminaler (gates),

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

Adgangskontrol med Arduino

Adgangskontrol med Arduino Adgangskontrol med Arduino AfAsbjørnAndreasen,BasthiannBildeogTobiasHøjsgaard Klasse2.4 RoskildeTekniskeGymnasium Formål med system Viharforsøgtatfremstilleetsystem,derskalkunneforhindreellertilladeadgangtiléneller

Læs mere

University of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11

University of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11 DM503 Forelæsning 11 Generics Pakker Exceptions Indhold Generics Nedarvning og Generics Generics Nedarvning og Generics Husk Box fra sidst Generics public class Box {! private T object;! public void

Læs mere

Indholdsfortegnelse for kapitel 1

Indholdsfortegnelse for kapitel 1 Indholdsfortegnelse for kapitel 1 Forord.................................................................... 2 Kapitel 1.................................................................. 3 Formål............................................................

Læs mere

DATABASE - MIN MUSIKSAMLING

DATABASE - MIN MUSIKSAMLING DATABASE - MIN MUSIKSAMLING I dette forløb skulle vi lære om databaser, som bruger sproget SQL. SQL står for Structured Query Language. Det bruges til at vise og manipulere data, gemt i en database. I

Læs mere

Videregående programmering i Java

Videregående programmering i Java Videregående programmering i Java Dag 5 Model View Controller arkitekturen Model View Controller arkitekturen (MVC) Evt.: Rekursion Læsning: VP 19 Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html

Læs mere

Integrationsmanual. Anvendelse af webservice til kursusoversigt i Campus. Brugervejledning til udviklere

Integrationsmanual. Anvendelse af webservice til kursusoversigt i Campus. Brugervejledning til udviklere Integrationsmanual Anvendelse af webservice til kursusoversigt i Campus Brugervejledning til udviklere Moderniseringsstyrelsen Webservice manual til udviklere 2016 1 1. Indholdsfortegnelse Nyt kapitel

Læs mere

Håndbog Til CPR services. Bilag 8 GCTP-standard m.m. CPR-kontoret

Håndbog Til CPR services. Bilag 8 GCTP-standard m.m. CPR-kontoret Håndbog Til CPR services Bilag 8 GCTP-standard m.m. CPR-kontoret Datavej 20, Postboks 269, 3460 Birkerød E-post: cpr@cpr.dk. Telefax 45 82 51 10. Hjemmeside: www.cpr.dk Side 2 af 14 Indholdsfortegnelse

Læs mere

SmartFraming Et vindue til nationale sundhedssystemer. Version 3.0

SmartFraming Et vindue til nationale sundhedssystemer. Version 3.0 SmartFraming Et vindue til nationale sundhedssystemer Version 3.0 Infrastruktur i dagens sundheds IT Det sundhedsfaglige personale benytter sig i dag af en række forskellige systemer i forbindelse med

Læs mere

Computer Networks Specielt om Infrastrukturer og Teknologi

Computer Networks Specielt om Infrastrukturer og Teknologi Computer Networks Specielt om Infrastrukturer og Teknologi Ole Borch Slide 1 Doc Bud på arkitektur (som mange andre steder) Sygehus Hemmelig Meget hemmelig WWW browser WWW Server Dataplejer Staklen Internet

Læs mere

DMX styring med USB-interface

DMX styring med USB-interface DMX styring med USB-interface Introduktion...2 DMX bibliotek...3 Programmering af kanaler...7 Sådan skabes et show/en lyssekvens...11 Introduktion DMX LightPlayer er en avanceret men meget brugervenlig

Læs mere

Eksamens spørgsmål i Java HTML - DataBase 3. Semester (i)

Eksamens spørgsmål i Java HTML - DataBase 3. Semester (i) Eksamens spørgsmål i Java HTML - DataBase 3. Semester (i) 1: KLASSE METODE KONSTRUKTØR EKS. PÅ TYPE (VARIABLE) PUBLIC/PRIVATE OBJECT UD FRA KLASSE KALD METODE TILFØR PARAMETER TIL METODE RETURNERE VARIBEL.

Læs mere

Turneringsinformation. Hvad gør programmet? Hvilke oplysninger sendes? Hvilke oplysninger hentes?

Turneringsinformation. Hvad gør programmet? Hvilke oplysninger sendes? Hvilke oplysninger hentes? Brugermanual OnTour Hvad gør programmet? OnTour administrerer klubbens turneringstilmeldinger, samt start- og resultatlister på Internettet. En tilmeldingsliste for de spillere, som har tilmeldt sig via

Læs mere

Real-time programming safety in Java and Ada

Real-time programming safety in Java and Ada Real-time programming safety in Java and Ada Bo Sandén Presenter: Thomas Bøgholm 25. oktober 2007 Forfatteren Artiklen Synkroniserings Begreber Bo Sandén Professor på Colorado Technical University Beskæftiger

Læs mere

Kursusbeskrivelse. Forarbejde. Oprettelse af en Access-database

Kursusbeskrivelse. Forarbejde. Oprettelse af en Access-database Kursusbeskrivelse Oprettelse af en Access-database Som eksempel på en Access-database oprettes en simpelt system til administration af kurser. Access-databasen skal indeholde: et instruktørkartotek et

Læs mere

Håndbog Til CPR services. Bilag 10 Opsætning af CPR klienten til understøttelse af forskellige installationstyper

Håndbog Til CPR services. Bilag 10 Opsætning af CPR klienten til understøttelse af forskellige installationstyper Håndbog Til CPR services Bilag 10 Opsætning af CPR klienten til understøttelse af forskellige installationstyper CPR-kontoret Datavej 20, Postboks 269, 3460 Birkerød E-post: cpr@cpr.dk. Telefax 45 82 51

Læs mere

Advanced Word Template Brugermanual

Advanced Word Template Brugermanual Advanced Word Template Brugermanual Forord: Advanced Word Template er et værktøj, der anvendes sammen med Microsoft Word til at opbygge ensartet beskrivelser på en mere intelligent måde end Copy and Paste

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

Vejledning til oprettelse af priselementer på DataHub Markedsportal

Vejledning til oprettelse af priselementer på DataHub Markedsportal Vejledning til oprettelse af priselementer på DataHub Markedsportal 9. marts 2015 USS/MAA Dok. 13/96684-6 1/5 Indledning Denne vejledning handler om netvirksomhedens oprettelse af egne priselementer på

Læs mere

PHP kode til hjemmeside menu.

PHP kode til hjemmeside menu. PHP kode til hjemmeside menu. Home Hovedmenu 1 Hovedmenu 2 Hovedmenu 3 Hovedmenu 4 Undermenu 1 Breadcrumb Her vises indholdet af den valgte side Undermenu 2 Undermenu 3 Undermenu 4 Evt. en mulighed for

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

Dokumentering af umbraco artikeleksport:

Dokumentering af umbraco artikeleksport: Dokumentering af umbraco artikeleksport: Lav en artikel side 2-3. Installationsguide side 3-5. Opsættelse af databasen og web.config side 5-8. Umbraco: templates side 8. Umbraco: borger.dk tab side 8.

Læs mere

1 Ordliste 2. 2 Indledning 3 2.1 Problemstillinger... 3 2.2 Problemformulering... 4 2.3 Problemafgrænsning... 4 2.4 Mål med projektet...

1 Ordliste 2. 2 Indledning 3 2.1 Problemstillinger... 3 2.2 Problemformulering... 4 2.3 Problemafgrænsning... 4 2.4 Mål med projektet... Indhold 1 Ordliste 2 2 Indledning 3 2.1 Problemstillinger.................................. 3 2.2 Problemformulering................................ 4 2.3 Problemafgrænsning................................

Læs mere

vejman.dk WMS/WFS dokumentation vmgeoserver.vd.dk Maj 2013 Udgave 2.0

vejman.dk WMS/WFS dokumentation vmgeoserver.vd.dk Maj 2013 Udgave 2.0 vejman.dk WMS/WFS dokumentation vmgeoserver.vd.dk Maj 2013 Udgave 2.0 Indholdsfortegnelse 1 Indledning... 3 2 WMS generelt... 3 3 WFS generelt... 4 4 WMS/WFS eksterne kald i forskellige formater... 4 5

Læs mere

Grundlæggende OOA - OOD

Grundlæggende OOA - OOD Grundlæggende OOA - OOD Dette kursus henvender sig til personer, der har lille eller ingen erfaring med softwareudvikling. Med udgangspunkt i UML opbygges et solidt kendskab til softwareudviklingens kunst

Læs mere

- Installationsvejledning for SOSIGW 1.1, NSP

- Installationsvejledning for SOSIGW 1.1, NSP SOSIGW - Installationsvejledning for SOSIGW 1.1, NSP Indeks Indeks... 1 Revisionshistorik... 2 Introduktion... 2 Forudsætninger og krav... 2 Installér ønsket JDK.... 2 Konfigurer JDK til ubegrænset kryptering...

Læs mere

Rejsekort A/S idekonkurence Glemt check ud

Rejsekort A/S idekonkurence Glemt check ud Rejsekort A/S idekonkurence Glemt check ud 9. marts 2015 1 Indhold 1 Introduktion 4 1.1 Problembeskrivelse........................ 4 1.2 Rapportens opbygning...................... 4 2 Ordliste 5 3 Løsning

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

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007 AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007 Opgavebesvarelsen skal afleveres som enten en printerudskrift eller som et passende dokument sendt via email til fjj@noea.dk. Besvarelsen skal

Læs mere

Indholdsfortegnelse. Systembeskrivelse kapitel 8 Administrationsdatabase

Indholdsfortegnelse. Systembeskrivelse kapitel 8 Administrationsdatabase Indholdsfortegnelse 5. Administrationsdatabase... 2 5.1 Metadata... 2 5.2 Administrationsdata... 3 5.2.1 Indstillingsmuligheder... 3 5.2.2 Webside... 4 5.2.3 Klikafgift (Udgået)... 4 5.2.4 Modtageboks...

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

Database "opbygning"

Database opbygning Database "opbygning" Dette områder falder mest under en DBA's ansvarsområde. Det kan sagtens tænkes at en database udvikler i nogle situationer vil blive nød til at oprette produktions og test) databaser,

Læs mere

XML Difftool brugervejledning

XML Difftool brugervejledning XML Difftool brugervejledning UNI C maj 2007 XML Difftool brugervejledning UNI C Maj 2007 Af UNI C Indhold 1 Kort om XML Difftool og Import... 1 1.1 XML Difftool... 1 1.2 Opbygning af XML import fil...

Læs mere

Byggebasen Javascript

Byggebasen Javascript EG Data Inform Byggebasen Javascript Implementering af ansvarsperioder og produktdata på eget site Jens Karsø 2013 Indhold Byggebasen javascript-plugin til DB12-site... 2 DB12-site kommunikationsmodel...

Læs mere

Daglig brug af JitBesked 2.0

Daglig brug af JitBesked 2.0 Daglig brug af JitBesked 2.0 Indholdsfortegnelse Oprettelse af personer (modtagere)...3 Afsendelse af besked...4 Valg af flere modtagere...5 Valg af flere personer der ligger i rækkefølge...5 Valg af flere

Læs mere

klient Webside Forespørgsel/ Nye data Python program Database kommando svar Database

klient Webside Forespørgsel/ Nye data Python program Database kommando svar Database Øvelse 10. Dynamiske web-sider og cgi-modulet I denne opgave skal vi bygge de foregående opgaver sammen til en mini-udgave af det samlede system I skal aflevere til vintereksamen. klient Forespørgsel/

Læs mere

Eksamen, DSDS, efterår 2007

Eksamen, DSDS, efterår 2007 Eksamen, DSDS, efterår 2007 Introduktion til Scripting, Databaser og Systemarkitektur Jonas Holbech og Martin Elsman IT Universitetet i København 7. januar 2008 Alle hjælpemidler er tilladte, dog ikke

Læs mere

Web 2.0. World Wide Web (www)

Web 2.0. World Wide Web (www) Web 2.0 World Wide Web (www) I marts 1989 skrev Tim Berners-Lee et information udveksling program kaldt ENQUIRE. Da han arbejde i CERN, var han ikke tilfreds med kommunikationen, derfor videreudviklede

Læs mere

Undervisningsbeskrivelse

Undervisningsbeskrivelse Undervisningsbeskrivelse Stamoplysninger til brug ved prøver til gymnasiale uddannelser Termin Jan-juni 2016 Institution UCH/ Handelsskolen Uddannelse Fag og niveau Lærer(e) Hold EUX Business IT B Lars

Læs mere

SigmaT.

SigmaT. Java + Groovy Disposition Om SigmaT Eksempel på indlejring af Groovy Overvågning af PEM Ønske om dynamisk loaded Java uden at fifle med classloaderen Groovy til hjælp Opsamling hvad jeg ikke har fortalt

Læs mere

Introduktion til ActionScript, fortsat

Introduktion til ActionScript, fortsat Introduktion til ActionScript, fortsat Kaspar Rosengreen Nielsen kaspar@interactivespaces.net i n t e r a c t i v e s p a c e s. n e t Kaspar Nielsen, kaspar@interactivespaces.net 1 Dagens program Opsamling

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

DM34-1. Obligatorisk opgave Dilemma spillet. Jacob Aae Mikkelsen 191076 kok04

DM34-1. Obligatorisk opgave Dilemma spillet. Jacob Aae Mikkelsen 191076 kok04 DM34-1. Obligatorisk opgave Dilemma spillet Jacob Aae Mikkelsen 191076 kok04 April 2005 Kapitel 1 Resumé Denne rapport dokumenterer udviklingsforløbet og afprøvningen af et spil Dilemma. Spillet går ud

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

Projekt - Visual Basic for Applications N på stribe

Projekt - Visual Basic for Applications N på stribe Projekt - Visual Basic for Applications N på stribe Mikkel Kaas og Troels Henriksen - 03x 3. november 2005 1 Introduktion Spillet tager udgangspunkt i det gamle kendte 4 på stribe, dog med den ændring,

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

Distributed Denial-of-Service (DDoS) Attack - og hvordan man forsvarer sig imod det. Bo Lindhøj Artavazd Hakhverdyan May 21, 2012

Distributed Denial-of-Service (DDoS) Attack - og hvordan man forsvarer sig imod det. Bo Lindhøj Artavazd Hakhverdyan May 21, 2012 Distributed Denial-of-Service (DDoS) Attack - og hvordan man forsvarer sig imod det Bo Lindhøj Artavazd Hakhverdyan May 21, 2012 1 Contents 1 Introduktion 3 2 Hvad er et DDoS angreb? 3 2.1 Direkte angreb............................

Læs mere

Viditronic NDVR Quick Guide. Ver. 2.0

Viditronic NDVR Quick Guide. Ver. 2.0 Viditronic NDVR Quick Guide Ver. 2.0 1 Indholdsfortegnelse 1. HOVEDMENU 3 1.1 START 5 1.2 AKTIVITETSINDIKATOR: 7 1.3 INFORMATIONS VINDUE: 7 1.4 PTZ KAMERA KONTROL: 7 1.5 SKÆRMMENU 8 1.5.1 AKTIVER BEVÆGELSE:

Læs mere

Indhold. Side 2 af 26

Indhold. Side 2 af 26 Tema Design Design, Programmering og test af Adressebog Fra d. 17 april til 20 april 2012 Vejledere: Gunhild Marie Andersen Kis Boisen Hansen Gruppe B Deltagere Side 1 af 26 Indhold Indledning.... 3 Kodestandard...

Læs mere

DB undervisning 01-01

DB undervisning 01-01 Databaser... 2 Tabeller... 2 Redundans... 3 Første regel... 4 Anden regel... 4 Tredje regel... 5 Relationer... 5 Opskrift... 6 SQL sætninger til at oprette tabeller... 7 SQL sætninger til at indsætte data...

Læs mere

Vejledning til Teknisk opsætning

Vejledning til Teknisk opsætning Vejledning til Teknisk opsætning v. 1.0 Adm4you, 2010. Indhold Kort om denne vejledning... 3 Generelt om easyourtime... 3 Installation af databasen... 3 Sikkerhed og rettigheder... 4 SQL Login... 4 Rettigheder

Læs mere