A/B-testning av mikrotransaktioner
|
|
- Rune Svensson
- för 6 år sedan
- Visningar:
Transkript
1 Examensarbete A/B-testning av mikrotransaktioner Författare: Albin Wahlstrand Handledare: Jesper Andersson Handledare, företag: Emmett Prexus, Zitcom A/S Datum: Kurskod: 2DV001, 15 hp Nivå: Kandidat i Institutionen för datavetenskap
2 Abstrakt Mikrotransaktioner är en stor del av dagens internethandel. Det används flitigt på både websidor och i datorspel. Denna rapport tar upp hur ett företag eller en privatperson kan, genom A/B-testning, testa vilken transaktionstyp som är bäst för just deras applikation. Problemet är att det finns många olika transaktionstyper att välja mellan och att det inte finns något bra sätt att få fram vilket som är det bästa för just din applikation. För att försöka hitta den optimala transaktionstypen utnyttjades en testapplikation med olika transaktionstyper. Genom att mäta en transaktiontyps effektivitet kan vi få fram en mätpunkt med vilken man kan jämföra med andra transaktionstyper. Resultaten visar att A/B-testning av mikrotransaktioner går att genomföra genom att följa de arkitekturerna som tillhandahålls av rapporten. Nyckelord: Mikrotransaktioner, A/B-testning Abstract Micro transactions are a big part of today's internet commerce. They are used diligently in both web applications and in computer games. This report will explore how a company or private developer, through A/B-testing, can test which transaction type is the best for their specific application. The problem is that there's a large amount of transaction types to choose from and there is not any good way to find out which one is the best for your application. To do this there needs to be some way to test the different types to receive the optimal one. By measuring a transaction type's efficiency, we can get a point of measure which can be compared to other transaction types. The results show that A/B-testing is applicable on micro transactions by following the architectures provided by this report. Keywords: Micro transactions, A/B-testing ii
3 Innehåll 1 Introduktion Inledning/bakgrund Tidigare forskning Problemformulering Syfte och frågeställning/hypotes Avgränsning/Begränsning Företagskontakt Disposition 3 2 Bakgrund/Teori Mikrotransaktioner A/B-Testning 6 3 Metod Vetenskaplig ansats Mjukvaruutveckling Analys Tillförlitlighet Etiska överväganden Samhälleliga Aspekter 10 4 Resultat Domänmodell Krav Arkitekturkrav Arkitektur Mjukvara för utvärdering Krav Arkitekturkrav Arkitektur Utvärdering 14 5 Diskussion Problemlösning/resultat Metodreflektion 17 6 Avslutning Slutsats Förslag till fortsatt forskning Erfarenheter 19 Referenser 20 A Bilaga- Prototyp 1 Controller 1 Modell 3 IUnitOfWork (Abstrakt basklass) 3 IServiceBase (Abstrakt basklass) 4 ServiceBase (Abstrakt basklass) 4 IRepository<T> (Abstrakt basklass) 5 CurrencyTypes (Simple Type) 6 iii
4 Presentation (SimpleType) 6 Transactions (SimpleType) 7 Repository<T> (Modellklass) 7 UnitOfWork (Modellklass) 9 Service (Modellklass) 10 Vymodeller 11 TransactionDatesChartViewModel (Vymodell) 11 TransactionDatesViewModel (Vymodell) 12 Vyer 13 Index 13 Transaction_Dates_Index 13 Presentation_Purchase 14 Transaction_Dates 15 iv
5 1 Introduktion Detta kapitel innehåller arbetets inledning samt problemformulering, hypotes och frågeställning. Syftet med arbetet är att genom A/B-testning försöka få fram vilken slags mikrotransaktion som ger mest avkastning, alltså är mest effektiv, för en viss typ av applikation. 1.1 Inledning/bakgrund Mikrotransaktioner är en slags betalning som utförs via Internet. Det finns olika sätt att genomföra dessa betalningar, som till exempel via en onlinetjänst som Paypal, eller direkt via ditt bankkort. Ett exempel på en mikrotransaktion är att du kan få något litet extra i ett datorspel mot en liten summa pengar, en annan variant på en mikrotransaktion skulle kunna vara att du har en blogg - och på den här bloggen kan du, mot en betalning, få tillgång till extra funktionalitet, som att lägga upp videos. Mikrotransaktioner kan införas på en mängd olika sätt. Detta arbete kommer att handla om att ta fram ett verktyg för att bestämma det "bästa sättet" för en specifik applikation. A/B-testning ([3], s ) är ett sätt att testa framförallt webapplikationer genom att jämföra två olika alternativ, det används ofta för att uppdatera en gammal applikation visuellt. För att få reda på vilket det "bästa sättet" är, måste först ett sätt att mäta effektiviteten på en mikrotransaktion tas fram. Efter att själv ha börjat att utveckla en applikation, som i framtiden skulle använda sig av mikrotransaktioner, märkte jag att det finns väldigt många olika sorter att välja bland. Självklart går det bra att blanda dessa men frågan "Är det stor skillnad mellan dessa?" kom upp och det gjorde mig fundersam. Dessutom blev det självklart intressant att granska vilken som skulle vara den "bästa" transaktionstypen för applikationen. En testmetod som heter "A/B - testning" gav en ingång till en möjlig lösning på detta, då denna testningsmetod jämför olika versioner av någonting. 1.2 Tidigare forskning Det har inte utförts någon tidigare forskning på A/B-testning tillsammans med mikrotransaktioner. Däremot har A/B-testning använts vid andra tillfällen, till exempel för att testa ny funktionalitet eller design på hemsidor. Enligt Kohavi R m. fl ([4], s. 148) har accessoar-företaget Coach bytt ut sin applikations sökmotor, detta för att deras leverantör visat med A/B-testning att sökmotorns effektivitet kunde ökas med 200%. Mikrotransaktioner kan ses som en funktion på en hemsida och därför lämpar sig A/B-testning i denna undersökning. 1
6 1.3 Problemformulering Det finns i dagens läge en nästintill oändlig mängd olika kombinationer av mikrotransaktioner, problemet är att det saknas verktyg eller hjälp för utvecklare att välja den optimala transaktionen för en specifik applikation. Figur 1.1: Modell av mikrotransaktion. En mikrotransaktion består av tre principiella delar: (1) Presentation, hur transaktionen exponeras till användaren. (2) Val, vilka betalsätt som finns att tillgå vid transaktionen och hur dessa presenteras. Samt (3): Betalning, hur betalningsprocessen går till och hur formuläret är uppbyggt. Detta medför en mängd olika varianter att skapa en mikrotransaktion på, därför kan det vara viktigt att tänka på hur man bygger upp sin transaktion. 1.4 Syfte och frågeställning/hypotes För att ha något att utgå ifrån formades en hypotes utifrån problemformuleringen. Optimeringen ingick för att få med ett värde i arbetet. Det kändes självklart att det skulle gå att jämföra mikrotransaktioner, men skulle det verkligen gå att optimera dem? Detta är den utformade hypotesen: "A/B - testning kan användas för att optimera mikrotransaktioner i webbtillämpningar." För att avgöra om detta stämmer måste först ett sätt att jämföra mikrotransaktioner tas fram. Alltså blir den första frågan som måste ställas: (1) Hur kan man mäta effektiviteten hos en mikrotransaktion? När väl effektiviteten kan mätas är frågan: (2) Går det, med hjälp av A/B - testning, att välja en optimal mikrotransaktion? Alltså, går det att utifrån resultaten av en mätning att få ut tillräckliga resultat för att bestämma vilken transaktionstyp som är bättre än den andra? För att sedan få svar på om transaktionen är optimal behövs även ett svar på frågan: (3) Går det att optimera intäkter från mikrotransaktioner? 2
7 1.5 Avgränsning/Begränsning Arbetet begränsas till endast mikrotransaktioner online. Förmodligen går samma metod att använda för att undersöka vanliga transaktioner online också. Möjligen behöver metoden ändras eller utvecklas för att undersöka transaktioner som inte sker online, dvs. kontantbetalningar. 1.6 Företagskontakt Under arbetets gång har det förekommit kontakt med Emmett Prexus på företaget Zitcom A/S i Danmark. Emmett har framför allt hjälpt till med att säkerställa relevansen hos mätpunkterna i metoden. 1.7 Disposition I kapitel 2 beskrivs teori och bakgrund om A/B-testning och mikrotransaktioner. Modeller finns att tillgå för att lättare få förståelse för dessa ämnen. Metodkapitlet tar upp hur resultaten ska uppnås och mätas, samt behandlar även tillförlitlighet och analys av resultaten. Kapitel 4 innehåller resultat och beskrivning av dessa. Detta kapitel innehåller även mjukvaruarkitekturer och dess krav. Kapitel 5 innehåller reflektioner om resultat och metodval. I kapitel 6 sker en återkoppling till den i kapitel 1 givna hypotesen, kapitlet innehåller även förslag till fortsatt forskning. 3
8 2 Bakgrund/Teori Detta kapitel innehåller förklaringar på vad mikrotransaktioner och A/Btestning är för något. Dessutom finns beskrivningar på hur dessa är uppbyggda. 2.1 Mikrotransaktioner Mikrotransaktioner är en betalningstyp som utförs via Internet. Definitionen av en mikrotransaktion varierar beroende på vem man frågar, men för att få kallas en "mikrotransaktion" måste betalningen vara mindre än en viss summa ([5]). Det finns många olika varianter av mikrotransaktioner då dessa byggs upp av 3 bestådsdelar. Dessa beståndsdelar är Presentation, Val och Betalning. Hur dessa kopplas samman kan variera, Figur 2.1 visar en modell på hur detta kan ske. Figur 2.1: Modell av mikrotransaktion Det finns undantag till hur delarna i en mikrotransaktion kopplas samman. Ett exempel på detta är i det populära samlarkortspelet Hearthstone: Heroes of Warcraft ([1]) där spelarna kan använda sig av mikrotransaktioner för att utvidga sitt kortbibliotek med nya kort. Figur 2.2: Betalformulär hos Battle.net ([2]) 4
9 Hearthstone: Heroes of Warcraft använder sig av en portal för spel i onlinelägen som kallas Battle.net ([2]). I Battle.net får spelaren redan innan transaktioner kan genomföras bestämma vad för betalsätt den vill använda vid transaktionerna, Figur 2.2 visar betalformuläret. Detta skulle kunna ses som beståndsdelen "betalning", se Figur 2.1. Figur 2.3: Presentation av transaktioner i Hearthstone: Heroes of Warcraft Detta medför att spelaren inte behöver fylla i ett formulär varje gång för att genomföra transaktioner inne i spelet, istället får spelaren endast en presentation på vilka mikrotransaktioner som finns tillgängliga och efter att ha valt en av dessa bekräftas transaktionen med ett knapptryck. Figur 2.4: Bekräftelse av mikrotransaktion För att slutföra transaktionen och betalningen sker endast en bekräftelse på att rätt summa dras från önskad betalningstyp och därefter är transaktionen klar. 5
10 2.2 A/B-Testning A/B-Testning är en testningsmetod som används inom webbutveckling och marknadsföring online. Genom att genomföra ett kontrollerat experiment med två olika varianter av det som skall testas kan man mäta dess utfall. Inom webbutveckling är målet att identifiera ändringar på hemsidor som höjer resultatet av intresse, t.ex. antal klick på en reklamlänk eller om flera användare genomför en transaktion om "Köp"-knappen är grön jämfört med röd. Oftast är det en version A, som är en gammal version som ska uppdateras, och version B som är den nya versionen med en eller flera modifieringar. Figur 2.5: Modell av A/B-Testning Modellen ovan beskriver hur A/B-Testning går till: (1) Användare kommer till sidan som A/B-Testas, (2) Användare visas olika sidor med samma målbild, (3) Användarens beteende sparas tillsammans med utförda handlingar och statistik genereras. Ett exempel baserat på modellen ovan. Efter A/B-testning anses webbsida B som bättre eftersom statistiken säger att 4 procent fler användare genomförde önskad handling med denna version jämfört med webbsida A. Denna variant av A/B - testning kräver att webbsidan har nog många användare för att få in tillräckligt med sidvisningar för att det statistiska resultatet ska gå att styrka. Däremot är detta sätt mycket mindre kostsamt jämfört med om en grupp testare skulle hyras in då det använder sig av vanliga användare för att genomföra själva testen. Dessutom blir det mer verklighetsförankrat då det körs under drift vilket stärker resultaten av testerna jämfört med om en grupp testare skulle genomföra testen med vetskap om att det finns olika versioner. Det kan medföra att testarna har en favorit bland varianterna och därför kan statistiken bli felaktik. 6
11 Ett annat exempel på A/B-testning är att testarna får en hemsida att testa för att avgöra vilken version av hemsidan som har bäst positionering på sin reklam. Testarna får först köra en version av sidan och får frågor om olika varumärken eller produkter som synts på sidorna. Resultaten samlas in och testarna får samma hemsida med ett annorlunda utseende och svarar på liknande frågor, sedan jämförs resultaten för att få fram versionen där flest testare lade märke till reklamen. Detta medför att företaget får fram de "bästa" annonsplatserna på sin sida och kan ta mer betalt för de annonsplatserna med resultaten av testen som stöd. 7
12 3 Metod För att komma fram till hur problemet ska testas behövs svaret på tre andra frågor; (1) Hur kan man mäta effektiviteten hos en mikrotransaktion, (2) kan man, med hjälp av A/B - testning, välja en optimal mikrotransaktion och (3) Går det att optimera intäkter från mikrotransaktioner? För att få reda på en mikrotransaktions effektivitet har två olika mätpunkter tagits fram. Dessa två olika mätpunkter är antaganden som gjorts utifrån egna iaktagelser samt information ifrån Emmett. Mätpunkter: Antal unika individer presenterade / antal individer som utför. Antal genomförda transaktioner under en bestämd tid. Anledningen till dessa mätpunkter är att vissa människor fungerar så att de tänker efter innan de gör ett köp och vissa handlar på impuls. Detta medför att om endast en av dessa mätpunkter används kommer resultaten variera väldigt mycket beroende på vilken grupp av människor som utför testet. Den första mätpunkten är till för att se hur många som får ett erbjudande, faktiskt genomför transaktionen. Det för att se om olika transaktionstyper är olika lockande att använda sig av. Den andra mätpunkten är för att se transaktioner som genomförts sedan en viss tidspunkt. Resultaten av mätpunkterna är kundens intressen. Då A/B - testning endast ger jämförelsepunkter åt kunden måste denne själv kunna bedömma vilken som är den bästa transaktionstypen för deras transaktion. Resultanten ger kunden en överblick för att kunna utföra en bedömning av vilken den bästa transaktionen är. 3.1 Vetenskaplig ansats För att komma fram till slutsatser kommer både en induktiv metod och en deduktiv metod att användas. Alltså kommer alla val i metoden utgå ifrån insamlad information, där information finns att ta - antingen från referenspersoner eller tidigare forskning. Om däremot arbetet kräver mer information än som redan finns tillgänglig kommer vissa antaganden att göras, exempelvis mätpunkterna är antaganden. Att göra antaganden är rimligt då det finns väldigt lite stöd i litteraturen. Mätpunkterna utgör ett område värt att undersöka men kräver då en helt annan ansats än frågeställningen runt A/Btestning. 8
13 3.1.1 Mjukvaruutveckling Kraven för mjukvaran som ska utvecklas är: Mjukvaran måste innehålla mätpunkterna som listas i metodkapitlet Mjukvaran måste kunna ge relevanta resultat åt användaren Mjukvaran måste presentera resultaten på ett tillfredsställande sätt Mjukvaran måste kunna utföra A/B-testning på mikrotransaktioner För att påvisa att kraven uppfylls ska mätningar från mjukvaran användas i resultatkapitlet, dessutom ska det finnas figurer som bevisar dennes existens finnas att tillgå i resultatkapitlet. 3.2 Analys Mjukvaran analyserades på så sätt att funktionaliteten jämfördes med kravlistan i föregående kapitel (3.1.1 Mjukvaruutveckling) och dess validitet bestämdes därefter. Domänmodellen analyseras endast genom egen uppfattning och är egentligen bara en hjälp för att lätt kunna använda sig av mjukvaran. 3.3 Tillförlitlighet Om datan som samlas in är tillförlitlig beror på företaget som använder sig av A/B-testningen, då det är deras problem att hantera unikhet bland användarna samt att försäkra sig om att inga datoriserade användare har lyckats genomgå deras process. Mätpunkterna i arbetet verifieras och av Emmett. 3.4 Etiska överväganden Etik är relevant för A/B-testningen i denna typ av undersökning, beroende på hur möjlig prototyp ser ut och används. Om prototypen i hemlighet samlar in data från kunder hos ett företag är det ju inte helt ok ifall kunderna inte vet om det, beroende på data. Är datan anonym känns det som att den typen av insamling skulle vara etisk jämfört med om det sparas IP-nummer eller några slags ID-handlingar. Sedan är ju mikrotransaktioner i sig en etikfråga, men den frågan kommer inte denna rapport att ta upp. 9
14 3.5 Samhälleliga Aspekter Många utvecklare och även privatpersoner menar att det är fel att många stora företag använder mikrotransaktioner, framförallt i datorspel. Blake J. Jorgensen, jobbar som chef för ekonomikontoret samt är vice ordförande för Electronic Arts([10]), säger: "And so to the extent that, as Rajat said, we're building into all of our games the ability to pay for things along the way, either to get to a higher level to buy a new character, to buy a truck, a gun, whatever it might be, and consumers are enjoying and embracing that way of the business." ([9]). Detta säger att mikrotransaktioner antagligen kommer att införas i flera spel, så länge som folk använder sig av dem. Det antyder även till att den sortens företagande faktiskt fungerar och att spelarna använder sig av funktionerna även om de själva ofta säger att det är en dålig idé att använda mikrotransaktioner i spel. En annan intressant aspekt av just mikrotransaktioner är att dessa bidrar till byggandet av en grupptillhörlighet mellan "Causual gamers", alltså vardagliga spelare och "Hardcore gamers", allvarliga spelare där konsolspelare ofta hamnar under "Causual gamers" medans pcspelare mest hamnar under "Hardcore gamers". Hardcore gamers menar att mikrotransaktioner bidrar till flera lätta, och därför tråkiga, spel och att det är Causual gamers som stödjer detta via mikrotransaktioner. 10
15 4 Resultat Detta kapitel innehåller resultaten som har tagits fram utifrån metoden. Två olika verktyg för att förenkla A/B-testning av mikrotransaktioner har tagits fram, en domänmodell för utvecklare att följa samt en prototyp för få fram statistik efter ett test-tillfälle. 4.1 Domänmodell Detta är ett exempel på hur en mjukvara som använder A/B-testning i samband med mikrotransaktioner skulle kunna vara utformad Krav Mjukvaran ska innehålla funktionalitet för att utföra mikrotransaktioner Mjukvaran ska själv samla data om antal presentationer, antal genomförda transaktioner och antal avbrutna transaktioner Mjukvaran ska kunna sätta datum på när transaktioner genomförts Arkitekturkrav Unit of Work([6]) innehåller en lista av objekt som använder sig av transaktionsliknande metoder, mönstret ska implementeras för att säkerställa att rätt datakälla används. Dessutom förhindrar det att viss data inte anländer till datakällan genom att hantera datat som transaktioner, det vill säga att inget data skickas förrän allt är insamlat och validerat. Observer([7]) pattern, som används för att hantera ändringar i status hos objekt, ska ha hand om beräkning och hantering av presentationer Arkitektur För att lösa problemet med hur ett system som ska använda sig av mikrotransaktioner ska vara konstruerat, för att med enkelhet kunna både byta ut transaktionsmetoder och förenkla beräkningar kring dessa, skapas en domänmodell. Domänmodellen använder sig av designmönstren Model-View- Controller([8]), som används för att dela upp en applikation så att utvecklaren lätt ska kunna modifiera delar av en applikation, Observer och Unit of Work för att underlätta hantering av klasser och data. Figur 4.1 nedan visar en modell av arkitekturen som, för att kunna genomföra A/B-testning, har utbytbara vyer tack vare IView interfacet samt innehåller en presentationsräknare och lagringsmetoder för lagring av statistik. 11
16 Figur 4.1: Domänmodell med utbytbara mikrotransaktioner Interfacet IView tillåter att View-klassen, alltså en del av transaktionsmetoden, kan bytas ut genom att skapa en annan variant av med samma eller liknande funktionalitet som den nuvarande View-klassen. IView interfacet kräver att View-klassen måste innehålla de tre delarna som krävs för att bygga upp en mikrotransaktion: (1) Presentation, (2) Val och (3) Betalning. För att observer pattern ska fungera måste även Controller-klassen använda sig av vissa förbestämda metoder, vilket medför att även denna klass behöver ett interface för att se till att klassen verkligen innehåller rätt funktionalitet. Controller-klassen innehåller en instans av ett PresentationService objekt som hanterar uppdatering av en presentationsräknare som lagras av en datalagringsmetod. Presentationerna lagras för att kunna genomföra kalkyler bland annat för att jämföra mängd presentationer mot hur många som genomfört en transaktion. IListener interfacet ser till att PresentationService klassen innehåller korrekt funktionalitet för att genomföra detta. 12
17 All dataåtkomst som inte hör med presentationsräkningen att göra tillhandahålls av Service klassen, denna innehåller metoderna som krävs för resten av applikationen att fungera. UnitOfWork pattern ser till att alla repositorier (dataåtkomstklasser) är samlade och använder sig av samma lagringsutrymme, detta medför att man endast behöver välja lagringsutrymme i en klass. Denna klass innehåller alla repositorier av de olika typerna som dataåtkomstkällan kräver. Transaction datatypen innehåller information om olika transaktioner och när de gjorts, detta för att kunna få information om vilka datum eller vilken tidsperiod flest transaktioner genomförs. TransactionType datatypen innehåller information om vilka olika transaktionstyper som finns. Presentations datatypen innehåller information om hur många gånger en transaktionstyp har presenterats. 4.2 Mjukvara för utvärdering En mjukvaruprototyp har konstruerats baserad på domänmodellen nedan för att genom A/B-testning jämföra resultaten av olika mikrotransaktioner. Prototypen innehåller funktionalitet för att (1) jämföra genomförda transaktioner och presentationer, samt (2) transaktioner under en specifierad tidsperiod. Prototypens kod redovisas i Bilaga A Krav Mjukvaran måste innehålla mätpunkterna som listas i metodkapitlet Mjukvaran måste kunna ge relevanta resultat åt användaren Mjukvaran måste presentera resultaten på ett tillfredsställande sätt Mjukvaran måste kunna utföra A/B-testning på mikrotransaktioner Arkitekturkrav Unit of work mönstret implementeras för att säkerställa att rätt datakälla används. Usability med fokus på Input Feedback implementeras för att säkerställa korrekt användning av input till prototypen Arkitektur För att skapa en prototyp att utvärdera mikrotransaktioner med har en domänmodell tagits fram, se Figur
18 Figur 4.2: Arkitekturmodell av Prototyp DatesView är vyn för att se vilka datum som transaktioner har genomförts på. PresentationView visar antalet genomförda transaktioner jämfört med antal presentationer av respektive transaktionstyp. Controller klassen hanterar vyerna samt användarens input och skapar upp en Serviceklass som hanterar alla beräkningar. IService och IServiceBase säkerställer att Serviceklassen innehåller korrekt funktionalitet. UnitOfWork pattern ser till att alla repositorier (dataåtkomstklasser) är samlade och använder sig av samma lagringsutrymme, detta medför att man endast behöver välja lagringsutrymme i en klass. Denna klass innehåller alla repositorier av de olika typerna som dataåtkomstkällan kräver. Transaction datatypen innehåller information om olika transaktioner och när de gjorts, detta för att kunna få information om vilka datum eller vilken tidsperiod flest transaktioner genomförs. TransactionType datatypen innehåller information om vilka olika transaktionstyper som finns. Presentations datatypen innehåller information om hur många gånger en transaktionstyp har presenterats. 14
19 4.2.4 Utvärdering Figur 4.3: A/B-testning av transaktioner, köp/presentationer Figur 4.3 ovan visar att transaktionstypen "Bitcoins" har presenterats 3 gånger och att det har genomförts 2 transaktioner av denna typ medans typen "Credit Card" har visats 5 gånger och att 2 transaktioner har genomförts. Uträkningarna sker med data från en MS-SQL databas skapad för detta ändamål. Med hjälp av dessa data kan användaren själv beräkna hur stor procentuell chans det är att en transaktion genomförs jämfört med hur många presentationer som görs. Figuren visar vyn Presentation_Purchase, se Bilaga A. Enligt denna A/B-testning har typen "Bitcoins" fungerat bättre än typen "Credit Card" då hela 66 procent av presentationerna har lett till ett köp med "Bitcoins". Figur 4.4: A/B-testning av transaktioner, köp under tidsperiod 15
20 Enligt Figur 4.4 har köpen med typerna Bitcoins och Credit Card skett på datumen 29/04-14 respektive 01/05-14 och 02/ Vid tillfällen då många fler transaktioner genomförs kan dessa data vara relevant för att se om A/Btestningsresultaten ger olika resultat olika dagar i veckan eller under olika tidsperioder, som till exempel direkt efter löning. Figuren visar vyn Transaction_View_Index, se Bilaga A. Figur 4.5: A/B-testning av transaktioner, val Användaren väljer vilka transaktioner som ska testas samt vilket test som ska köras och trycker sedan på "Compare". Eftersom det är A/B-testning som skall genomföras går det bara att jämföra två av dessa samtidigt. Figuren visar vyn Index, se Bilaga A. 16
21 5 Diskussion I denna del av rapporten ges en liten diskussion om resultat och metodval. Även vad avsaknaden av tidigare forskning har haft för inverkan på detta arbete. 5.1 Problemlösning/resultat I arbetets introduktion finns hypotesen "A/B - testning kan användas för att optimera mikrotransaktioner i webbtillämpningar." som forskningen i denna rapport behandlat. Efter att ha undersökt resultaten och genomfört A/B testning av mikrotransaktioner i en laborationsmiljö anses det vara fullt möjligt att optimera mikrotransaktioner i webbtillämpningar. Enligt resultaten under kapitel 4.1 skulle det förmodligen även vara fullt möjligt att A/B testa "normala" transaktioner med denna metod, det vill säga större transaktioner, då denna arkitektur även skulle gå att använda vid dessa typer av transaktionerna. Arkitekturen för A/B-testningen förändras inte på grund av att priset på en transaktion ökas. Resultaten under kapitel 4.1 och 4.2 visar att A/B-testning kan användas för att jämföra olika transaktioner genom att påvisa detta med en arkitektur, dessutom går det att få ut en effektivitet på hur gynnsam en viss sorts transaktion är. Om det går att se en ökning på antal genomförda transaktioner i en A/B-testning går det på så sätt att optimera transaktionerna. Arbetet har inte fokuserat på hur man gör för att optimera en enskild transaktion utan mer om hur man går till väga för att få reda på om en transaktion är optimerad. 5.2 Metodreflektion Metodens validitet kan definitivt diskuteras då det inte gjorts någon liknande undersökning förut, och de experimentiella delarna har hållts på en laborationsnivå. Det finns inget tidigare dokumenterat fall av A/B-testning av mikrotransaktioner vilket gjorde arbetet lite svårare men samtidigt väldigt mycket intressantare. Avsaknaden av tidigare forskning medförde att jag hade mer eller mindre fria händer att tackla detta problem och att jag dessutom fick stor användning av min kontaktperson som hjälpte till vid frågor som "Vilka mätpunkter och resultat är intressanta vid en jämförning av transaktioner?". Genomförandet inleddes med att skapa prototypen för att se om A/B-testningen var möjlig, för att sedan göra prototypen användarvänlig genom att skapa en domänmodell där utvecklare fick möjlighet att byta ut transaktioner för testningen. Det hade antagligen gått att gå djupare här och göra ett klassdiagram men samtidigt kändes det som att många system är väldigt olika uppbyggt samt har olika 17
22 funktionalitet och då kan det bli svårt om modellen som ska följas är för detaljerad. 18
23 6 Avslutning Detta kapitel knyter ihop rapporten och innehåller även förslag till fortsättning. Dessutom finns en kort text om mina erfarenheter under arbetet. När jag började arbetet, som handlade om A/B-testning av mikrotransaktioner, hade jag en hypotes som var "A/B - testning kan användas för att optimera mikrotransaktioner i webbtillämpningar.". 6.1 Slutsats Enligt resultaten i detta arbete kan hypotesen verifieras. Detta påvisas genom arkitekturerna som tagits fram, som visar att själva A/B-testningen går att genomföra. Dessutom går själva optimeringen att genomföra genom att använda sig av prototypen som utvecklats i detta syfte, att välja en optimal transaktion. Metoden känns tillräckligt valid för att bekräfta svaren på hypotesens frågeställningar. 6.2 Förslag till fortsatt forskning Ett förslag till fortsatt arbete skulle vara att försöka inrikta sig på en enstaka mikrotransaktion. Hur man ska göra för att kunna optimera en specifik typ av transaktion istället för att jämföra olika typer. Det skulle gå att utveckla domänmodellen mer och kanske till och med göra ett klassdiagram med interface för att säkerställa att allting fungerar på rätt sätt tillsammans. En annan idé skulle vara att undersöka validiteten av metoden, då frågeställningarna i denna är tagna från endast en källa. Kanske skulle en undersökning göras för att säkerställa att resultaten i denna rapport är verkligen bekräftade. 6.3 Erfarenheter Innan studien hade jag inte mycket erfarenhet med mikrotransaktioner. Det har jag väl inte direkt nu heller men jag har bättre kännedom om hur de är uppbyggda, hur de fungerar och framförallt hur man kan testa dem. 19
24 Referenser [1] [ ] [2] [ ] [3] Michael Beasley, Practical Web Analytics for User Experience. Michigan: Morgan Kaufmann, [4] Kohavi R, Longbotham R, Sommerfield D, Randal M. H, Controller experiments on the web: survey and practical guide. Springer Science + Business Media, [5] [ ] [6] [ ] [7] [ ] [8] [ ] [9] [ ] [10] [ ] 20
25 A Bilaga- Prototyp Denna bilaga innehåller kod samt kommentarer för prototypen som skapades under arbetets gång. Prototypen är kodad i Visual Studio 2013 med språket ASP.NET och ramverket MVC, detta medför att det finns delar av koden som är gömda i ASP.NET MVC biblioteket som inte kommer att delas med här. Controller I Controller-klassen finns det funktioner för att hämta data från modellerna och ge ut dessa till vyerna. using Microtransactions.Models; using Microtransactions.Models.Simpletypes; using Microtransactions.ViewModels; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace Microtransactions.Controllers public class HomeController : Controller // // GET: /Home/ Index funktionen ger vyn en lista på vilka olika transaktionstyper som finns och skickar ut vyn "Index". public ActionResult Index() Service service = new Service(); List<SelectListItem> list = service.getcurrencies(); return View(list); DateIndex funktionen ger vyn en lista på vilka olika transaktionstyper som finns och skickar ut vyn "Transaction_Dates_Index". public ActionResult DateIndex() Service service = new Service(); TransactionDatesViewmodel viewmodel = new TransactionDatesViewmodel(); viewmodel.selectlist = service.getcurrencies(); return View("Transaction_Dates_Index", viewmodel); 1
26 metoden GetTransactiondates returnerar en vymodell som innehåller en lista på vilka transaktioner som genomförts under en viss tidsperiod. public ActionResult GetTransactionDates(DateTime date, int firstpick, int secondpick) if (firstpick == secondpick) return PartialView("Transaction_Dates", null); Service service = new Service(); List<Currencies> currencylist = service.gettransactiondates(date, firstpick, secondpick); TransactionDatesChartViewmodel viewmodel = new TransactionDatesChartViewmodel(); viewmodel.currencylist = currencylist; viewmodel.datelist = new List<DateTime>(); for (var dt = date; dt <= DateTime.Now; dt = dt.adddays(1)) viewmodel.datelist.add(dt); return PartialView("Transaction_Dates", viewmodel); Metoden GetTransactionAmount returnerar en lista på två valda transaktioner, hur många presentationer de har fått samt hur många som utfört en transaktion av vardera variant. public ActionResult GetTransactionAmount(int firstpick, int secondpick) if (firstpick == secondpick) return PartialView("Presentation_Purchase", null); Service service = new Service(); List<Presentations> currencylist = service.getpresentedtransactions(firstpick, secondpick); return PartialView("Presentation_Purchase", currencylist); 2
27 Modell IUnitOfWork (Abstrakt basklass) Interfacet IUnitOfWork innehåller information om vilka repositorier som ska finnas i dess barnklass - UnitOfWork samt att det ska finnas en funktion som kallas "Save()". using Microtransactions.Models.Simpletypes; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Microtransactions.Models.Abstract public interface IUnitOfWork IRepository<WebUser> UserRepository get; IRepository<Transactions> TransactionRepository get; IRepository<Presentation> PresentationRepository get; IRepository<CurrencyTypes> CurrencyRepository get; void Save(); 3
28 IServiceBase (Abstrakt basklass) IServiceBase lades till för att OM ServiceBase klassen skulle behöva mer funktionalitet så ska utvecklaren kunna lägga till det, nä implementerar endast detta interface ett annat interface som heter "IDisposable" - vilket används för att återlämna databasuppkopplingar. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Microtransactions.Models.Abstract public interface IServiceBase : IDisposable ServiceBase (Abstrakt basklass) ServiceBase används för att implementera IServiceBase till alla Serviceklasser, för tillfället är det endast klassen Service som implementerar denna basklass. Klassen i sig innehåller endast funktionalitet som den fått via IDisposable-interfacet. using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace Microtransactions.Models.Abstract public class ServiceBase : IServiceBase protected virtual void Dispose(bool disposing) public void Dispose() Dispose(true); GC.SuppressFinalize(this); 4
29 IRepository<T> (Abstrakt basklass) IRepository<T> innehåller all funktionalitet som finns i Repository<T> klassen, interfacet använder sig av en TEntity som innebär att klassen kan användas av flera olika "Simpletypes" (enkla typer). Interfacet kräver att implementations-klasserna innehåller funktionalitet för att, från en datakälla, kunna hämta ut, ta bort, lägga till och redigera objekt. using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Text; using System.Threading.Tasks; namespace Microtransactions.Models.Abstract public interface IRepository<TEntity> : IDisposable where TEntity : class IEnumerable<TEntity> Get( Expression<Func<TEntity, bool>> filter = null, Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderby = null, string includeproperties = "" ); TEntity GetByID(object id); void Insert(TEntity entity); void Delete(object id); void Delete(TEntity entitytodelete); void Update(TEntity entitytoupdate); 5
30 CurrencyTypes (Simple Type) Den enkla typen CurrencyTypes innehåller ett id och ett namn. Dessutom finns en samling med presentationer och transaktioner som denne används i. namespace Microtransactions.Models using System; using System.Collections.Generic; public partial class CurrencyTypes public CurrencyTypes() this.presentation = new HashSet<Presentation>(); this.transactions = new HashSet<Transactions>(); public int ID get; set; public string Name get; set; public virtual ICollection<Presentation> Presentation get; set; public virtual ICollection<Transactions> Transactions get; set; Presentation (SimpleType) Den enkla typen Presentation innehåller ett id, ett användarid, ett id på transaktionstypen, samt en räknare på hur många gånger denna presentation har skett. namespace Microtransactions.Models using System; using System.Collections.Generic; public partial class Presentation public int ID get; set; public int UserID get; set; public int CurrencyID get; set; public int Presentation1 get; set; public virtual CurrencyTypes CurrencyTypes get; set; public virtual WebUser WebUser get; set; 6
31 Transactions (SimpleType) Transactions typen innehåller parametrar för att kunna lagra transaktioner som skett och få ut viktig statistik om dessa. namespace Microtransactions.Models using System; using System.Collections.Generic; public partial class Transactions public int ID get; set; public int UserID get; set; public int CurrencyID get; set; public int Total get; set; public System.DateTime Created get; set; public virtual CurrencyTypes CurrencyTypes get; set; public virtual WebUser WebUser get; set; Repository<T> (Modellklass) Denna klass implementerar interfacet IRepository<T>, och precis som i interfacet använder sig även denna klass av TEntity. Klassen innehåller funktionalitet för att, utan att behöva dublicera kod, använda samma klass till flera olika repositorier. Metoderna i denna klass innehåller funktionalitet för att kunna genomföra CRUD (Create, Read, Update, Delete). using Microtransactions.Models.Abstract; using System; using System.Collections.Generic; using System.Data; using System.Data.Entity; using System.Linq; using System.Linq.Expressions; using System.Web; namespace Microtransactions.Models public class Repository<TEntity> : IRepository<TEntity> where TEntity : class private DbContext _context; private DbSet<TEntity> _set; public Repository(DbContext context) _context = context; _set = _context.set<tentity>(); public virtual IEnumerable<TEntity> Get( 7
32 Expression<Func<TEntity, bool>> filter = null, Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderby = null, string includeproperties = "") IQueryable<TEntity> query = _set; if (filter!= null) query = query.where(filter); foreach (var includeproperty in includeproperties.split( new char[] ',', StringSplitOptions.RemoveEmptyEntries)) query = query.include(includeproperty); return orderby == null? query.tolist() : orderby(query).tolist(); public virtual TEntity GetByID(object id) return _set.find(id); public virtual void Insert(TEntity entity) _set.add(entity); public virtual void Update(TEntity entitytoupdate) _set.attach(entitytoupdate); _context.entry(entitytoupdate).state = EntityState.Modified; public virtual void Delete(object id) TEntity entitytodelete = _set.find(id); Delete(entityToDelete); public virtual void Delete(TEntity entitytodelete) if (_context.entry(entitytodelete).state == EntityState.Detached) _set.attach(entitytodelete); _set.remove(entitytodelete); public void Dispose() throw new NotImplementedException(); 8
33 UnitOfWork (Modellklass) UnitOfWork-klassen implementerar IUnitOfWork interfacet och lagrar de olika repositorierna, detta för att säkerställa att alla repositorier använder sig av samma datakälla. using Microtransactions.Models.Abstract; using Microtransactions.Models.Simpletypes; using System; using System.Collections.Generic; using System.Linq; using System.Web; using Microtransactions.Models.Data_Objects; namespace Microtransactions.Models public class UnitOfWork : IUnitOfWork private aw222fu_examprototypeentities3 _context = new aw222fu_examprototypeentities3(); private IRepository<WebUser> _userrepository; private IRepository<Transactions> _transactionrepository; private IRepository<Presentation> _presentationrepository; private IRepository<CurrencyTypes> _currencyrepository; public IRepository<WebUser> UserRepository get return _userrepository?? (_userrepository = new Repository<WebUser>(_context)); public IRepository<Transactions> TransactionRepository get return _transactionrepository?? (_transactionrepository = new Repository<Transactions>(_context)); public IRepository<Presentation> PresentationRepository get return _presentationrepository?? (_presentationrepository = new Repository<Presentation>(_context)); public IRepository<CurrencyTypes> CurrencyRepository get return _currencyrepository?? (_currencyrepository = new Repository<CurrencyTypes>(_context)); 9
34 public void Save() _context.savechanges(); Service (Modellklass) Serviceklassen implementerar den abstrakta basklassen ServiceBase. Service fungerar som mellanlagret mellan Controller-klassen och Modellerna på så sätt att förfrågningar sker från controllern och Service tar ut informationen från modellerna och returnerar denna på ett vettigt sätt. using Microtransactions.Models.Abstract; using Microtransactions.Models.Simpletypes; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace Microtransactions.Models public class Service : ServiceBase private IUnitOfWork _unitofwork; public Service() : this(new UnitOfWork()) public Service(IUnitOfWork unitofwork) _unitofwork = unitofwork; public List<SelectListItem> GetCurrencies() List<SelectListItem> selectitems = new List<SelectListItem>(); var currencies = _unitofwork.currencyrepository.get().tolist(); foreach (CurrencyTypes currency in currencies) selectitems.add(new SelectListItem Text = currency.name, Value = currency.id.tostring() ); return selectitems; public List<Currencies> GetTransactionDates(DateTime createdafterdate, int typeaid, int typebid) 10
35 var transactions = _unitofwork.currencyrepository.get(m => m.id == typeaid m.id == typebid).select(n => new Currencies CurrencyName = n.name, Datectionary = n.transactions.where(m => m.currencyid == n.id).groupby(m => m.created).todictionary(m => m.key, m => m.count()) ).ToList(); return transactions; public List<Presentations> GetPresentedTransactions(int typeaid, int typebid) var presentations = _unitofwork.currencyrepository.get(m => m.id == typeaid m.id == typebid).select(n => new Presentations CurrencyName = n.name, PresentationCount = n.presentation.where(m => m.currencytypes.name == n.name).sum(item => item.presentation1), TransactionsCount = n.transactions.where(m => m.currencytypes.name == n.name).count() ).ToList(); return presentations; Vymodeller För att ramverket MVC ska fungera ordentligt så behövs ibland vymodeller för att kommunikationen mellan vy och modell ska fungera ordentligt. Dessa samlar ofta ihop olika enkla typer för att underlätta för utvecklaren. TransactionDatesChartViewModel (Vymodell) Denna vymodell innehåller en lista med transaktionstyper samt en lista med datum, den används för att kunna koppla samman dessa senare. using Microtransactions.Models.Simpletypes; using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace Microtransactions.ViewModels public class TransactionDatesChartViewmodel public List<Currencies> Currencylist 11
36 get; set; public List<DateTime> DateList get; set; TransactionDatesViewModel (Vymodell) Denna vymodell används för att ge användaren en lista med valbara transaktionstyper, samt datum och de olika valen användaren kan göra. using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Web; using System.Web.Mvc; namespace Microtransactions.ViewModels public class TransactionDatesViewmodel public List<SelectListItem> Selectlist get; set; [Required] [DataType(DataType.Date)] public DateTime date get; set; [Required] public int firstpick get; set; [Required] public int secondpick get; set; 12
37 Vyer Vyer används för att visa saker för användaren. Index Index är den första sidan användaren kommer till när applikationen startas. Den innehåller en knapp för att byta till Datum-vyn samt ett formulär för att se presentation vs. transaktions ViewBag.Title = "Index"; Compare Dates", (Ajax.BeginForm("GetTransactionAmount", "Home", new AjaxOptions UpdateTargetId = "chart", HttpMethod = "GET", InsertionMode = Model) <input type="submit" value="compare" /> <div id="chart"> </div> Transaction_Dates_Index Denna vy innehåller ett formulär för att se vilka datum som transaktioner har utförts på. Användaren får fylla i vilka transaktionstyper denne vill se samt från vilket datum köpen ska ha ViewBag.Title = "Transaction_Dates_Index"; (Ajax.BeginForm("GetTransactionDates", "Home", new AjaxOptions UpdateTargetId = "chart", HttpMethod = "GET", InsertionMode = DateTime.Now.ToString("yyyy-MM-dd")) <input type="submit" value="compare" /> <div id="chart"> </div> 13
38 Presentation_Purchase Denna vy visar användaren ett diagram med resultat av ett A/B-test. Antal presentationer och antal köp staplas upp av ett javascript och användaren får sedan själv beräkna vilken transaktionstyp som gjort bäst ifrån List<Microtransactions.Models.Simpletypes.Presentations> <div id="container" style="min-width: 310px; max-width: 800px; height: 400px; margin: 0 auto"> null) <script> $(function () var currancynames = ['@Model[0].CurrencyName', '@Model[1].CurrencyName']; var presentationcount = var transactioncount = $('#container').highcharts( chart: type: 'bar', marginright: 120, title: text: 'Microtransaction Data', xaxis: categories: currancynames, yaxis: min: 0, title: text: 'Transactions', labels: overflow: 'justify', tooltip: valuesuffix: '', plotoptions: bar: datalabels: enabled: true, legend: layout: 'vertical', 14
39 align: 'right', verticalalign: 'top', x: 10, y: 160, floating: true, borderwidth: 1, backgroundcolor: (Highcharts.theme && Highcharts.theme.legendBackgroundColor '#FFFFFF'), shadow: true, credits: enabled: false, series: [ name: 'Total Transaction purchases', data: transactioncount, name: 'Total Transaction presentations', data: presentationcount ] ); ); </script> Transaction_Dates Vyn Transaction_Dates visar användaren en graf på vilka datum flest transaktioner har Microtransactions.ViewModels.TransactionDatesChartViewmodel <div id="container" style="min-width: 310px; max-width: 800px; height: 400px; margin: 0 auto"> null) <script> $(function () var dates = []; var currencynames = ['@Model.Currencylist[0].CurrencyName', '@Model.Currencylist[1].CurrencyName']; var firstvalues = []; var secondvalues = date in Model.DateList) <text> (Model.Currencylist[0].Datectionary.Keys.Where(m => m.date == date.date).tolist().count!= 0) 15
40 <text> => m.key.date == date.date).value]); </text> else <text> firstvalues.push([0.0]); (Model.Currencylist[1].Datectionary.Keys.Where(m => m.date == date.date).tolist().count!= 0) <text> => m.key.date == date.date).value]); </text> else <text> secondvalues.push([0.0]); </text> </text> $('#container').highcharts( title: text: 'Transactions', x: -20 //center, xaxis: categories: dates, yaxis: title: text: 'Number of transactions (T)', plotlines: [ value: 0, width: 1, color: '#808080' ], tooltip: valuesuffix: '', legend: layout: 'vertical', align: 'right', verticalalign: 'middle', borderwidth: 0, 16
41 ); ); </script> series: [ name: currencynames[0], data: firstvalues, name: currencynames[1], data: secondvalues ] 17
42 Fakulteten för teknik Kalmar Växjö Tel Lnu.se/fakulteten-for-teknik
// GET: Test1/Index2 // Syftet är att se hur olika url:er leder till olika actions
Test1Controller.cs using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Mvc.Ajax; using System.Net; using Newtonsoft.Json; using System.Threading.Tasks;
Arbeta med databas. Översikt. Lektion 1: Arbeta med Entity Data Models. Arbeta med Entity Data Models. LINQ (Language Integrated Query).
Arbeta med databas Översikt Arbeta med Entity Data Models. LINQ (Language Integrated Query). Lektion 1: Arbeta med Entity Data Models Introduktion till ADO.NET Entity Framework. Stöd i ADO.NET Entity Framework.
MVC med Javascript och Ajax. Filip Ekberg
MVC med Javascript och Ajax Filip Ekberg Hur går det? Föreläsningstempo Går det för fort? Labbar & Övningar Är de otydliga? Behövs mer hjälp? Upplägg Mindre föreläsning? Mer labbar? Läser ni boken? Läsanvisningar
Asp.net mvc intro PER KVARNBRINK, 2015-01-27
Asp.net mvc intro PER KVARNBRINK, 2015-01-27 Byggstenarna i ett mvc-projekt 1. Databasen 2. Datamodellen (M:et) 3. Entity framwork 4. Routing 5. Kontroller (C:et) 6. Vy (V:et) 7. Vymodeller 8. Troligen
ASP.NET MVC. Copyright Mahmud Al Hakim mahmud@dynamicos.se http://www.webbacademy.se. Innehåll
ASP.NET MVC Copyright Mahmud Al Hakim mahmud@dynamicos.se http://www.webbacademy.se Innehåll Introduktion till MVC Controller Action-metoder Views Arbeta med Layout-sidor och sektioner Route konfiguration
Polymorfi. Objektorienterad och komponentbaserad programmering
Polymorfi Objektorienterad och komponentbaserad programmering Polymorfi, mångtydighet Polymorfi innebär att en viss konstruktion kan exekveras på olika sätt Överlagring av metoder ger ett polymorft beteende
Räkna med ASP.NET MVC 3
Instruktion Räkna med ASP.NET MVC 3 Introduktionsuppgift Författare: Mats Loock Kurs: ASP.NET MVC Kurskod:1DV409 Innehåll Du ska följa steg-för-steg -instruktionen i denna introduktionsuppgift och skapa
Blockkedjor. en introduktion för datavetare. Rikard Hjort, 24 maj 2019
Blockkedjor en introduktion för datavetare Vem är jag? Varför ska ni lära er om blockkedjor? Alla ska gå härifrån och kunna... förklara Bitcoin är uppbyggt bygga en egen blockkedja läsa på själva om blockkedjeprojekt
DIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga
203-03-9 203-03-9 DIAGNOSTISKT PROV Tid Klockan 09.00-2.00 Hjälpmedel Inga Antaganden Om förutsättningar saknas I en uppgift skall rimliga antaganden göras och nedtecknas. Rättning Tentamen omfattar 6
MVC med Javascript och Ajax. Filip Ekberg
MVC med Javascript och Ajax Filip Ekberg MVC med Javascript och Ajax Lektion 7 ASP.NET MVC mail@filipekberg.se Veckans mål ASP.NET MVC Repetition & Diskussion Vad är MVC? Vad är ASP.NET MVC? Hur skapar
Övning Dictionary. Övning 1. Steg 1: På din virtuella maskin, starta Visual Studio.
1 Övning Dictionary När collection av typen Dictionary används, används nyckel och ett värde som ett par för lagringen. Duplikat av information kan lagras, men nyckel är alltid unik. Generic collections
Generiska konstruktioner. Kursbokens kapitel 13
Generiska konstruktioner Kursbokens kapitel 13 1 Vad är en generisk konstruktion? Generisk står för; allmän eller generell En generisk konstruktion kan användas för olika typer av data Med hjälp av templates
Every visitor coming to the this website can subscribe for the newsletter by entering respective address and desired city.
Every visitor coming to the this website can subscribe for the newsletter by entering respective e-mail address and desired city. Latest deals are displayed at the home page, wheras uper right corner you
Ökat personligt engagemang En studie om coachande förhållningssätt
Lärarutbildningen Fakulteten för lärande och samhälle Individ och samhälle Uppsats 7,5 högskolepoäng Ökat personligt engagemang En studie om coachande förhållningssätt Increased personal involvement A
Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer.
Informationsinfrastruktur 7.5 hp Mattias Nordlindh Inledning Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer. Dokumentet består av
Objektorienterad Programmering (OOP) Murach s: kap 12-16
Objektorienterad Programmering (OOP) Murach s: kap 12-16 2013-01-28 1 Winstrand Development Objektorienterad Programmering Förkortas OOP Objektorientering innebär att man delar in koden i olika block,
Lösningar till tentamen i EDAF25
Lösningar till tentamen i EDAF25 21 aug 2017 Lösning 1 Javaklasser (många varianter finns naturligtvis): class Client { private Invoker invoker; public void newcommand(string cmdtext) { Command cmd; if
Lab 6: ASP.NET 2.0 Providermodellen
Lab 6: ASP.NET 2.0 Providermodellen Den stora finessen med Providermodellen är enkelheten att skapa sin egna provider för att kunna anpassa en tjänst utefter de behov man har. Den gör tillståndshantering
Övning MS SQL och MVC del 2
1 Övning MS SQL och MVC del 2 Denna övning, som är uppdelad i två delar, kommer att visa hur du kan arbeta med MS SQL och MVC. Applikationen är ett inloggningssystem som innehåller de flesta saker som
Vad kännetecknar en god klass. Vad kännetecknar en god klass. F12 Nested & Inner Classes
Vad kännetecknar en god klass F12 Nested & En odelad, väldefinierad abstraktion Uppgiften kan beskrivas kort och tydlig Namnet är en substantiv eller adjektiv som beskriver abstraktionen på ett adekvat
Beijer Electronics AB 2000, MA00336A, 2000-12
Demonstration driver English Svenska Beijer Electronics AB 2000, MA00336A, 2000-12 Beijer Electronics AB reserves the right to change information in this manual without prior notice. All examples in this
App analytics TDP028
App analytics TDP028 2 Fokus på det entreprenöriella Hur appen kan spridas, t.ex. via sociala nätverk Analys för att ha koll på hur appen används Möjlighet till inkrementell design Förbättra på basis av
MVC med Javascript och Ajax. Filip Ekberg
MVC med Javascript och Ajax Filip Ekberg Filip Ekberg Microsoft & Xamarin MVP mail@filipekberg.se Vad ska vi lära oss? I denna kurs lär sig den studerande hur man jobbar med den naturliga uppdelningen
Översikt. Installation av EasyPHP 1. Ladda ner från http://www.easyphp.org/ Jag använder Release 5.3.4.0 2. Installera EasyPHP.
Laboration 1 Översikt 1. Att komma igång med laborationsmiljön a. installera Aptana Studio 3 b. Installera EasyPHP 2. Testa lite programmering a. Testa enkla uppgifter b. Testa automatiskt 3. Skapa inloggningsformulär
Rubrik Examensarbete under arbete
Dokumenttyp Rubrik Examensarbete under arbete Författare: John SMITH Handledare: Dr. Foo BAR Examinator: Dr. Mark BROWN Termin: VT2014 Ämne: Någonvetenskap Kurskod: xdvxxe Sammanfattning Uppsatsen kan
2.1 Installation of driver using Internet Installation of driver from disk... 3
&RQWHQW,QQHKnOO 0DQXDOÃ(QJOLVKÃ'HPRGULYHU )RUHZRUG Ã,QWURGXFWLRQ Ã,QVWDOOÃDQGÃXSGDWHÃGULYHU 2.1 Installation of driver using Internet... 3 2.2 Installation of driver from disk... 3 Ã&RQQHFWLQJÃWKHÃWHUPLQDOÃWRÃWKHÃ3/&ÃV\VWHP
public DataSet GenerateDataSet(SqlCommand dbcommand, String tablename, out String errormsg) { errormsg = "";
using System; using System.Collections.Generic; using System.Linq; using System.Web; // Namespaces för SQL Server och ADO.NET using System.Data.SqlClient; using System.Data; // Namespace för inläsning
Arkitektur. Den Röda Tråden
Arkitektur Done Den Röda Tråden Vad är arkitektur? Vad har vi arkitekturmodellen till? Hur redovisar vi en arkitektur? Hur tar vi fram en arkitektur? Uppgift arkitekturella krav Nu Redovisning/Diskussion
Mål med lektionen! Repetera och befästa kunskaperna.
Entity Framework Mål med lektionen! Repetera och befästa kunskaperna. Vad lektionen omfattar Repetera och gå igenom kursen lite snabbt. Vilka problem vill vi lösa? Vi arbetar med Webbapplikationer Vi kommer
Förskola i Bromma- Examensarbete. Henrik Westling. Supervisor. Examiner
Förskola i Bromma- Examensarbete Henrik Westling Handledare/ Supervisor Examinator/ Examiner Ori Merom Erik Wingquist Examensarbete inom arkitektur, grundnivå 15 hp Degree Project in Architecture, First
F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander
F6 Objektorienterad design ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se långa ord AKTIVITETER I PROGRAMVARUUTVECKLING Iterativ utveckling Kravspecifikation Design Implementation Testning
En integration av betalningssystem på hemsida
Beteckning: Akademin för teknik och miljö En integration av betalningssystem på hemsida Benjamin Leetmaa Maj 2011 Examensarbete, 15 högskolepoäng, B Datavetenskap Ingenjör Online Examinator: Bengt Östberg
Lösningar till tentamen i EDAF25
Lösningar till tentamen i EDAF25 1 juni 2017 Lösning 1 Se figur 1. Figure 1: Tillståndsdiagram espressomaskin Lösning 2 (a) Kompositmönstret (b) Se figur 2 (c) Se figur 3 : Square : Drawing : Group : Circle
Skriv uppsatsens titel här
Examensarbete i Datavetenskap (Ange vilken nivå av uppsats det gäller) Skriv uppsatsens titel här Skriv uppsatsen undertitel här Författare: Namn Namnsson Handledare: Namn Namnsson Termin: HT99 Kurskod:
Examensarbete Introduk)on - Slutsatser Anne Håkansson annehak@kth.se Studierektor Examensarbeten ICT-skolan, KTH
Examensarbete Introduk)on - Slutsatser Anne Håkansson annehak@kth.se Studierektor Examensarbeten ICT-skolan, KTH 2016 Anne Håkansson All rights reserved. Svårt Harmonisera -> Introduktion, delar: Fråga/
Vässa kraven och förbättra samarbetet med hjälp av Behaviour Driven Development Anna Fallqvist Eriksson
Vässa kraven och förbättra samarbetet med hjälp av Behaviour Driven Development Anna Fallqvist Eriksson Kravhantering På Riktigt, 16 maj 2018 Anna Fallqvist Eriksson Agilista, Go See Talents linkedin.com/in/anfaer/
Kvalitetsarbete I Landstinget i Kalmar län. 24 oktober 2007 Eva Arvidsson
Kvalitetsarbete I Landstinget i Kalmar län 24 oktober 2007 Eva Arvidsson Bakgrund Sammanhållen primärvård 2005 Nytt ekonomiskt system Olika tradition och förutsättningar Olika pågående projekt Get the
Language Integrated Query, LINQ, och databaser
Language Integrated Query, LINQ, och databaser 1 Imperativ eller deklarativ programmering Imperativ programmering Du som programmerare beskriver i detalj alla steg som måste utföras för att lösa en viss
Appar med ryggrad. Introduktion till JavaScriptramverket Backbone
Appar med ryggrad Introduktion till JavaScriptramverket Backbone Vanlig webbsida Databas MVC - Model View Controller MVC - Model View Controller MVC Backbone.js Ger struktur Bygger på MVC konceptet Tvingar
Designmönster i Javascript
C-uppsats i Datavetenskap Designmönster i Javascript Författare: Fredrik Johansson Handledare: Martin Blomberg Termin:VT11 Kurskod: 2DV40E Abstrakt Programmeringsspråket Javascript har sina brister som
Innehåll MySQL Intro. Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata
Innehåll MySQL Intro Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata 1 Lagrad procedur / Stored Procedure Lagrad procedur har många namn, förkortningen
JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript?
Innehåll JavaScript En introduktion till skriptspråket JavaScript och till DOM Scripting Introduktion till JavaScript och DOM JavaScript Syntax DOM och DOM Scripting Händelsehantering och CSS Historia
Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering
Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk
Henrik Häggbom Examensarbete Nackademin Våren 2015
AV Henrik Häggbom Examensarbete Nackademin Våren 2015 1 INLEDNING Som examensarbete på min utbildning på Nackademin Programutveckling.NET kommer jag skapa ett webbaserat system för statistik, tabeller
The Optimisation Wheel
The Optimisation Wheel These are the people I meet every day 2 4 This shit is hot! CRO 5 3 fällor du kan gå i Don t copy your competitors. They don t know what there re doing either Peep Laja - ConversionXL
Labb LIVE. Exempelkod från föreläsningen. Plushögskolan Frågeutveckling inom MSSQL - SU14
Labb LIVE Exempelkod från föreläsningen Plushögskolan Frågeutveckling inom MSSQL - SU14 Här kommer exempelkoden jag använde under föreläsningen Exemplen Constraints... 2 Transactions... 4 Views... 5 Functions...
Laboration 3 GUI-programmering
Laboration 3 GUI-programmering Syfte Erbjuder studenterna en möjlighet att lära sig grunderna i gränssnittsprogrammering i Java. Genomförande Genomförs individuellt eller i grupp om 2 personer. Uppskattad
Tentamen i EDAF25. 1 juni Skrivtid: Skriv inte med färgpenna enda tillåtna färg är svart/blyerts.
Tentamen i EDAF5 juni 07 Skrivtid: 4-9 Skriv bara på ena sidan av pappret tentorna kommer att scannas in, och endast framsidorna rättas. Skriv inte med färgpenna enda tillåtna färg är svart/blyerts. Skriv
Grundläggande programmering med C# 7,5 högskolepoäng
Grundläggande programmering med C# 7,5 högskolepoäng Provmoment: TEN1 Ladokkod: NGC011 Tentamen ges för: Omtentamen DE13, IMIT13 och SYST13 samt öppen för alla (Ifylles av student) (Ifylles av student)
Services + REST och OAuth
Services + REST och OAuth Syftet med Services Skapa ett Drupal API för att exponera webb- API:er. Officiella versionen - Create a unified Drupal API for web services to be exposed in a variety of different
Mål med lektionen! Veta kursmålen. Ha kännedom om några av de grundläggande begreppen.
Entity Framework Mål med lektionen! Veta kursmålen. Ha kännedom om några av de grundläggande begreppen. Vem är jag? Mitt namn är Björn Jönsson och jobbar på Tahoe Solutions, ni når mig via mail: bjorn.jonsson@tahoesolutions.se
Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.
Bankkonto - övning Övningar att göra efter lärardemostration. Filen bankkonto.zip innehåller ett projekt med klassen Bankkonto. Zippa upp denna fil och öppna projektet i BlueJ och skriv vidare på klassen
Storskalig multi-touch
Storskalig multi-touch Design och implementation av ett ramverk för gestigenkänning till Microsoft Surface 2. ANTON HOLMBERG Kanditatexamenrapport vid NADA Handledare: Alexander Baltatzis Examinator: Mårten
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Designmönster Adapter, Factory, Iterator,
Slutrapport för JMDB.COM. Johan Wibjer 2012-06-03
Slutrapport för JMDB.COM Johan Wibjer 2012-06-03 Abstrakt Den här rapporten kommer handla om mitt projekt som har handlat om att gör en webb sida för ett personligt media bibliotek, hur jag har jobbar
Programmering A C# VT 2010. Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson 2010 02 08
Programmering A C# VT 2010 Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson 2010 02 08 Innehåll Hjälp och referenser... 3 Kap 1 Introduktion... 3 Steg för steg... 3 Kapitel 2 Variabler...
Support Manual HoistLocatel Electronic Locks
Support Manual HoistLocatel Electronic Locks 1. S70, Create a Terminating Card for Cards Terminating Card 2. Select the card you want to block, look among Card No. Then click on the single arrow pointing
Klient/server. Översikt. Lektion 1: Webbtekniker från Microsoft. Webbteknik från Microsoft. Klient/server. Designmönster. Utrullning.
Klient/server Översikt Webbteknik från Microsoft. Klient/server. Designmönster. Utrullning. Lektion 1: Webbtekniker från Microsoft Microsoft webbtekniker. ASP.NET. Klientsidan. Internet Information Server.
Karlstads Universitet, Datavetenskap 1
DAV B04 - Databasteknik KaU - Datavetenskap - DAV B04 - MGö 229 PHP Hypertext Preprocessor Scriptspråk på serversidan Innebär att webbservern översätter php-scripten innan sidan skickas till webbläsaren,
Programmering i C++ EDA623 Arv. EDA623 (Föreläsning 6) HT 2013 1 / 42
Programmering i C++ EDA623 Arv EDA623 (Föreläsning 6) HT 2013 1 / 42 Arv Innehåll Härledda klasser Konstruktorer och destruktorer vid arv Tillgänglighet Polymorfism och dynamisk bindning Abstrakta klasser
Metoder (funktioner) Murach s: kap Winstrand Development
(funktioner) Murach s: kap 6 2013-01-23 1 Winstrand Development Metoder I C# kan vi dela in koden i block en kodsekvens ska köras likadant på flera ställen i applikationen. Detta block kallas för en metod
LÖSNINGSFÖRSLAG. Tentamen. Objektorienterad modellering och design. EDA665, 4 poäng
LUNDS TEKNISKA HÖGSKOLA (5) Institutionen för datavetenskap LÖSNINGSFÖRSLAG Tentamen Objektorienterad modellering och design EDA665, 4 poäng 2003-06-03, 8.00-3.00 Anvisningar: Skrivningen består av 2 uppgifter.
Föreläsning 3. Stack
Föreläsning 3 Stack Föreläsning 3 ADT Stack Stack JCF Tillämpning Utvärdera ett postfix uttryck Stack implementerad med en array Stack implementerad med en länkad lista ADT Stack Grundprinciper: En stack
<script src= "http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
AngularJS Skriven av: Isak Glans. Datum: 2015-04-29. Kurs: Webbutveckling. Lärare: Per Sahlin. Utbildning: Systemutvecklare i.net, Newtons Yrkeshögskola. 1 Sammanfattning Syftet med denna uppsats är att
Styrteknik 7.5 hp distans: E-1000 och E-Designer
PLC8A:1 E1000 operatörsterminaler En operatörsterminal ger ett gränssnitt mellan männinska-maskin, (MMI människa-maskininteraktion, HMI Human Machine Interface) Alla terminalerna i E1000-serien är utvecklade
DAT043 - Föreläsning 7
DAT043 - Föreläsning 7 Model-View-Controller, mer om klasser och interface (arv, ) 2017-02-06 Designmönstret Observer avläser Observer Observable meddelar Observer avläser En eller flera objekt registrerar
Tentamen i Objektorienterad programmering
CHALMERS TEKNISKA HÖGSKOLA Datavetenskap TDA547 Tentamen i Objektorienterad programmering Lördagen 12 mars 2011, 8.30 12.30. Jourhavande lärare: Björn von Sydow, tel 0762/981014. Inga hjälpmedel. Lösningar
TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P
UME UNIVERSITET Datavetenskap 981212 TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P Datum : 981212 Tid : 9-15 HjŠlpmedel : Inga Antal uppgifter : 9 TotalpoŠng : 60 (halva pošngtalet kršvs normalt fšr
Module 1: Functions, Limits, Continuity
Department of mathematics SF1625 Calculus 1 Year 2015/2016 Module 1: Functions, Limits, Continuity This module includes Chapter P and 1 from Calculus by Adams and Essex and is taught in three lectures,
Affärsmodellernas förändring inom handeln
Centrum för handelsforskning vid Lunds universitet Affärsmodellernas förändring inom handeln PROFESSOR ULF JOHANSSON, EKONOMIHÖGSKOLAN VID LUNDS UNIVERSITET Centrum för handelsforskning vid Lunds universitet
Oppositionsrapport. Opponent: Therese Sundström. Respondent: Malin Abrahamsson & Aleksandra Gadji
Oppositionsrapport Opponent: Therese Sundström Respondent: Malin Abrahamsson & Aleksandra Gadji 2005-06-07 1 1 Huvudpunkter I denna sektion kommer jag att presentera de huvudpunkter som jag vill kommentera.
Introduktion till Entity Framework och LINQ. Källa och läs mer https://msdn.microsoft.com/en-us/data/aa937709.aspx
Introduktion till Entity Framework och LINQ Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Vad är Entity Framework? The Microsoft ADO.NET Entity Framework is an Object/Relational Mapping
F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander
F8 - Arv ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Arv och subklasser Klasser innehåller attribut och beteenden En subklass ärver dessa från föräldern Detta ger: Återanvänd kod
Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private
Inkapsling tumregler Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler Tobias Wrigstad (baserat på material från Tom Smedsaas) 5 november 2010 1. Man skall
1 Klasser och objektorientering Vad är objektorientering?
1 Klasser och objektorientering Vad är objektorientering? Det finns olika synsätt på programmering, dessa olika synsätt kallas för paradigm. De vanligaste paradigmen är det imperativa/proceduriella, det
Arbeta med Selected Works en lathund
Arbeta med Selected Works en lathund Att redigera din egen Selected Works-sida Ta fram din sida och logga in via My Account längts ner på sidan. Klicka på Edit My Site för att redigera sidan. Gå nu vidare
Logging Module into the PRIME Core
Datavetenskap Opponent: Andreas Lavén Respondenter: Anders Ellvin, Tobias Pulls Implementing a Privacy-Friendly Secure Logging Module into the PRIME Core Oppositionsrapport, E-nivå 2005:xx 1 Sammanfattat
Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås
Schenker Privpak AB Interface documentation for web service packageservices.asmx 2012-09-01 Version: 1.0.0 Doc. no.: I04304b Sida 2 av 7 Revision history Datum Version Sign. Kommentar 2012-09-01 1.0.0
Tentamen i Objektorienterad programmering
CHALMERS TEKNISKA HÖGSKOLA Datavetenskap TDA547 Tentamen i Objektorienterad programmering Fredagen 13 januari 2012, 14.00 18.00. Jourhavande lärare: Björn von Sydow, tel 0722/391401. Inga hjälpmedel. Lösningar
SOA One Year Later and With a Business Perspective. BEA Education VNUG 2006
SOA One Year Later and With a Business Perspective BEA Education VNUG 2006 Varför SOA är viktigt? As margins erode companies need to optimize for process and operational efficiency or find new markets
Syns du, finns du? Examensarbete 15 hp kandidatnivå Medie- och kommunikationsvetenskap
Examensarbete 15 hp kandidatnivå Medie- och kommunikationsvetenskap Syns du, finns du? - En studie över användningen av SEO, PPC och sociala medier som strategiska kommunikationsverktyg i svenska företag
TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 17-19
TDDC74 Programmering: Abstraktion och modellering Dugga 2, 2017-04-06, kl 17-19 Läs alla frågorna först och bestäm dig för i vilken ordning du vill lösa uppgifterna. Uppgifterna är inte nödvändigtvis i
Innehåll. Föreläsning 3. javax.naming.context. javax.sql.datasource. Vad är JDBC? Java Naming and Directory Interface(JNDI) Viktigaste metoder:
Föreläsning 3 JDBC Innehåll JNDI Java Naming and Directory Interface En slags DNS för Objekt JDBC Grunderna Uppkoppling Exekvera SQL-satser Ta hand om resulterande ResultSets Finesser PreparedStatement
Titel Mall för Examensarbeten (Arial 28/30 point size, bold)
Titel Mall för Examensarbeten (Arial 28/30 point size, bold) SUBTITLE - Arial 16 / 19 pt FÖRFATTARE FÖRNAMN OCH EFTERNAMN - Arial 16 / 19 pt KTH ROYAL INSTITUTE OF TECHNOLOGY ELEKTROTEKNIK OCH DATAVETENSKAP
Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag
Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag Datum: 2008-08-14 Tid: 08-12 Plats: PC6-PC7 i E-huset. Jour: Per-Magnus Olsson, tel 285607 Jourhavande kommer att besöka skrivsalarna varje
Webbprogrammering. Sahand Sadjadee
Webbprogrammering Sahand Sadjadee Agenda Webb The World Wide Web (WWW) is a network of online content that is formatted in HTML and accessed via HTTP. The term refers to all the interlinked HTML pages
Lab 5: ASP.NET 4.5 Site Navigation
Lab 5: ASP.NET 4.5 Site Navigation Enkel navigering är en viktig del av en modern webbapplikation. Eftersom en stor del av utvecklingstiden för en site används för att bygga menyer, trädstrukturer och
Frågor och svar - Diagnostisk prov ht14 - Webbutveckling 1
Frågor och svar - Diagnostisk prov ht14 - Webbutveckling 1 Bilder och optimering --- Vilken upplösning är lämplig för bilder som ska användas på Internet? Sträva efter korta nedladdningstider. 72 ppi/dpi
Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?
Algoritmer och datastrukturer Allmänt om kursen Kort javagrund repetition - Klasser, metoder, objekt och referensvariabler, - Hierarkiska klass strukturer - Arrayer och arrayer av objekt - Collection ramverket
Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.
Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java
Slutrapport Get it going contracts
Slutrapport Get it going contracts Författare: Anthony Dry Datum: 2011-06-02 Program: Utvecklare av digitala tjänster Kurs: Individuellt mjukvaruutvecklingsprojekt 7.5p Linnéuniversitetet (Kalmar) Abstrakt
Mönster. Ulf Cederling Växjö University Ulf.Cederling@msi.vxu.se http://www.msi.vxu.se/~ulfce. Slide 1
Mönster Ulf Cederling Växjö University UlfCederling@msivxuse http://wwwmsivxuse/~ulfce Slide 1 Beskrivningsmall Beskrivningsmallen är inspirerad av den som användes på AG Communication Systems (AGCS) Linda
Objektorienterad Programkonstruktion. Föreläsning 6 23 nov 2015
Objektorienterad Programkonstruktion Föreläsning 6 23 nov 2015 Designmönster Färdiga "recept" för att lösa (del-)problem i struktureringen av ens program Mönster kan beskriva små komponenter eller stora
SI-pass 4. Johan Brook och Jesper Persson. 25 september 2012. Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.
SI-pass 4 Johan Brook och Jesper Persson 25 september 2012 1. Sant eller falskt? Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner. Interfaces i Java kan innehålla privata
Välkommen till Studiekanalen.se
Välkommen till Studiekanalen.se Det här produktbladet beskriver besökarens (elevens) väg till utbildningen, hur de matchas mot rätt skola och utbildning. Det beskriver även hur utbildningsanordnaren kan
VAD SKULLE DU HA VALT PDF
VAD SKULLE DU HA VALT PDF ==> Download: VAD SKULLE DU HA VALT PDF VAD SKULLE DU HA VALT PDF - Are you searching for Vad Skulle Du Ha Valt Books? Now, you will be happy that at this time Vad Skulle Du Ha
Låt oss ta hand om din utveckling, medan du själv utvecklar ditt företag
Låt oss ta hand om din utveckling, medan du själv utvecklar ditt företag *vad är SmartCode? Vi gör ett komplett utbud av tjänster. Vi designar, utvecklar, stödjer och uppdaterar allt som fungerar i Web.
ASP.NET Thomas Mejtoft
ASP.NET Introduktion till ASP.NET Utveckla i ASP.NET I ASP.NET kan och bör man separera HTML-kod från övrig kod (C#, VB ) I enklare fall läggas kod i script-block Vanligtvis läggs den i en Code Behind-fil