Beslutsstöd för prissättning till webbutik Projektrapport

Storlek: px
Starta visningen från sidan:

Download "Beslutsstöd för prissättning till webbutik Projektrapport"

Transkript

1 Beslutsstöd för prissättning till webbutik Projektrapport 22 september 2011 This paper is about the development of an application that collects and processes market pricing data. This is used by an online store to gain an overview of the market they operate in. The paper begins with a brief outline of the plan for development and continues with a detailed description of the final product. The application was developed in Java and heavily utilize threading, especially for downloading data from the Internet. It is built on a clientserver architecture that communicates with a text-based protocol. Overall the project is considered a success, even though some things, such as the memory footprint, could have been improved. Examensarbetare: David Ersson - Examinator: Fredrik Lundevall - Skolan för informations- och kommunikationsteknik Kungliga tekniska högskolan Kista 1

2 Innehåll Innehåll Denna rapport handlar om hur en applikation utvecklades för att samla prisinformation om en given marknad och sedan tillgängliggöra den på ett strukturerat sätt. Målet med detta är att en webbutik ska få en översikt över hur de förhåller sig till sina konkurrenter. Rapporten börjar med en kort beskrivning av hur planen för utvecklingen såg ut innan utveckling påbörjades. Den fortsätter sedan med en ganska detaljerad beskrivning av hur slutprodukten blev. Applikationen utvecklades i Java och drar till stor del nytta av trådning för en öka prestandan. Det gäller speciellt när det handlar om uppgifter som involverar kommunikation med källor på internet. Applikationen bygger på en klient-server-struktur som kommunicerar via ett textbaserat protokoll. Slutprodukten ses som lyckad även om vissa saker, så som dess minnesförbrukning, skulle kunna förbättras. Innehåll I. Förstudie 4 1. Inledning 4 2. Programmodell Datalagret Logiklagret Presentationslagret Tekniska problem Programmeringsspråk Inhämtande av data Datahämtning via webbtjänst Datahämtning via web scraping Liknande projekt legs Mozenda II. Genomförande Containrar ReferenceProduct CompetitorProduct ProductPrice

3 Innehåll Innehåll 6. Datalagret AdapterHandler Adapter ReferenceAdapter CompetitorAdapter Logiklagret DataHandler Server ClientHandler Protokoll Funktioner Presentationslagret ClientCommander NetworkThread GUI Layout III. Diskussion och slutord Förbättringspotential Arbetsminne Styrklasserna Prestanda Konfigurationsfil Slutord 22 3

4 1 INLEDNING Del I. Förstudie 1. Inledning I en rapport från Posten som kom i april kan man läsa att omsättningen för distanshandel fördubblats de senaste fem åren. I rapportens förord säger Per Mossberg, kommunikationsredaktör på Posten Norden AB, att För nutidens konsumenter är distanshandel främst synonymt med att hitta och köpa det man söker på nätet snabbt, enkelt och prisvärt. Det är därför viktigt att man som nätbutik på dagens marknad har konkurrenskraftiga priser. Ingen kommer köpa något från en dyr leverantör om samma produkt levereras av en billigare leverantör med jämförbar standard. Detta projekt handlar om att jämföra en given onlinebutiks priser med alla konkurrerande butikers priser. Det kommer i denna rapport antas att alla konkurrenter också är onlinebutiker, men det finns inget som säger att det måste vara så. Dock är en förutsättning att deras priser finns online. Beställaren av detta projekt har gett mig i uppdrag att eliminera deras behov av att manuellt söka igenom konkurrenters hemsidor efter deras priser. De vill istället ha en lösning där de får sådan informationen serverad på ett strukturerat sätt automatiskt. Med detta hoppas de förutom att minska arbetsbördan också minska risken för att mindre vanliga produkter glöms bort. Ett automatiskt system skulle kunna behandla alla produkter i deras utbud, medan en människa måste begränsa sig till de vanligaste produkterna för att inte få en omöjlig uppgift. Den givna butiken kommer refereras till som beställarens butik och de konkurrerande butikerna som konkurrenter Distanshandeln idag

5 2 PROGRAMMODELL 2. Programmodell Figur 1: Logisk modell - Pricer är arbetsnamnet på projektet För att lösa beställarens problem är planen att skapa en applikation enligt modellen i figur 1 (en mer komplett modell av den färdiga produkten finns som appendix till denna rapport). Tanken är att för varje produkt som beställaren har i sitt sortiment kontrolleras priset hos andra som också säljer den. Denna data kan beställaren sedan hämta ut på en strukturerad form och se hur de ligger i förhållande till marknaden för var och en av alla de produkter de säljer. Modellen är inspirerad av Model View Controller (MVC) 2 och Three-tier 3. Datalagret och logiklagret är logiska lager i samma applikation, som i sin tur agerar server mot presentationslagret Datalagret Datalagret har som uppgift att samla in data från olika källor. Det finns två olika sorters källor; datakällor och referenskällor. Datalagret har till uppgift att hämta prisinformation om alla produkter som referenskällan tillhandahåller (alltså de produkter som beställaren säljer) från datakällorna. För att ha så dynamiskt stöd för datakällor som möjligt har varje datakälla en adapter som beskriver hur just den datakällan ska läsas in. Det gör också att det är relativt Java SE Application Design With MVC Three-Tiered Distribution 5

6 2.2 Logiklagret 3 TEKNISKA PROBLEM enkelt att lägga till nya datakällor eller uppdatera befintliga om behov skulle uppstå. Efter inläsning skickas datan (formaterad) till logiklagret för vidare behandling Logiklagret Logiklagret håller en lista med referensprodukter, matade från referenskällan i datalagret. Den listan innehåller även information om konkurrenternas priser, matade från datakällorna i datalagret. På så vis kan man enkelt se hur referenspriset ligger i förhållande till konkurrenterna. För att enkelt kunna se vilka konkurrenter som är billigast pekas de ut av specifika referenser i respektive produktobjekt. För att kunna automatisera procedurer baserat på inläst data finns det även krokar där man kan ansluta objekt för detta. När ett givet läge uppstår kallas respektive objekts aktiveringsfunktion. För exempel se algoritm 1. Algoritm 1 Exempel på automatisk funktion (pseudokod) i f ( r e f e r e n s p r i s > b i l l i g a s t e _ k o n k u r r e n t s _ p r i s ) { i f ( b i l l i g a s t e _ k o n k u r r e n t s _ p r i s > i n k o p s p r i s minsta_vinstmarginal ) { s e t E g e t P r i s ( b i l l i g a s t e _ k o n k u r r e n t s _ p r i s ) ; } } 2.3. Presentationslagret Presentationslagret agerar gränssnitt åt användaren. Det är ett fristående program som ansluter mot logiklagret via nätverk för att hämta den data som användaren valt att få presenteras för sig. Denna data presenteras sedan på ett sätt som gör det enkelt för användaren att förstå den. 3. Tekniska problem Det finns ett antal problem relaterat med detta projekt. Detta avsnitt kommer att behandla de större av dem och hur jag har tänkt lösa dem Programmeringsspråk Jag har valt att genomföra detta projekt i Java då det är ett välkänt språk som många hanterar, vilket underlättar underhåll och eventuell vidareutveckling. Det är också platformsoberoende så minimalt med jobb kommer behöva läggas på att porta produkten om beställaren skulle välja att byta plattform. Java har kritiserats för att generera relativt långsamma program 4. Nyare tester visar dock att Java är ungefär lika bra som sina The Efficiency of Java and C++ 6

7 3.2 Inhämtande av data 3 TEKNISKA PROBLEM konkurrenter (C++, C#) 5 och även om C slår dem alla med god marginal i samtliga av testerna så måste man komma ihåg att det till exempel i allmänhet tar mycket längre tid att utveckla i C Inhämtande av data En av grundförutsättningarna för detta projekt är att det finns någon data att jämföra med. Den måste på något sätt både förvärvas och hållas uppdaterad. Föråldrad data är ointressant då prisbilden kan förändras snabbt 6. För att åstadkomma detta finns två huvudsakliga metoder; Datahämtning via webbtjänst Webbtjänster används för att förenkla interaktion och kommunikation mellan tjänsten och mjukvara. En vanlig hemsida till exempel är (eller borde i alla fall vara) skapad för att presentera data för en människa som besöker den, men när man hämtar data via mjukvara för processering är man inte intresserad av saker som färg eller formatering. Man är istället bara ute efter den faktiska datan så för att slippa skicka onödig information kan en webbtjänst 7 presentera ett API 8 med funktioner för att endast skicka datan, oftast på en känd form såsom XML 9 eller JSON 10. Webbtjänster anses vara en del av webb Fördelarna med att hämta data från en webbtjänst gentemot den äldre tekniken web scraping är överväldigande. Om det finns en webbtjänst som tillhandahåller datan man är ute efter så är det den man bör använda Datahämtning via web scraping Web scraping (även känt under liknande namn så som web farming, screen scraping, web harvesting eller på kort form endast scraping ), är ett generellt namn för att samla in data genom att läsa av till exempel hemsidor maskinellt och sedan filtrera ut den data man är intresserad av 12. Det är inte en optimal lösning, men om det inte tillhandahålls något API så kan det vara den enda lösningen. Eftersom scraping baseras Algorithmic Performance Comparison Between C, C++, Java and C# Programming Languages 6 - Prisutveckling för Host Web Services Architecture 8 Application Programming Interface - kan översättas till mjukvarugränssnitt och är en uppsättning funktioner som är tillgängliga att använda utanför mjukvaran som tillhandahåller dem Extensible Markup Language Introducing JSON What Is Web Process Aggregation Using Web Services - Citat: Screen scraping and web farming [5] techniques were developed where the aggregator accessed the source site as if it were a user and parsed the resulting Hyper Text Markup Language (HTML) to extract the information being aggregated. 7

8 4 LIKNANDE PROJEKT på filtrering av data tänkt för människor så är risken stor att applikationen som använder det slutar fungera om sidan ändras, även om datan finns kvar. För en människa är skillnaden liten om till exempel layouten ändras, men det kan vara förödande för ett scraping-filter. Den enklaste formen av scraping är att manuellt söka reda på informationen man är intresserad av och sedan kopiera och klistra in den där man vill ha den. Den metoden är uppenbarligen inte särskilt effektivt. 13 Det finns också en moralisk aspekt av scraping. Eftersom man hämtar data automatiserat så riskerar man dels att belasta hemsidan relativt tungt under tiden man gör det och dels ser man aldrig reklamen eller klickar på länkarna så inkomster baserade på länk-klick uteblir för hemsidans ägare 14. Det är dock inte olagligt som så (om man inte ingått i ett avtal som säger annat för att få tillgång till informationen) utan det beror mer på vad man gör med informationen sedan. Det kan även argumenteras för att reklamaspekten är av mindre betydelse då många idag använder reklamblockering i sina webbläsare 15. Detta projekt kommer använda sig av en större svensk webbsida för prisjämförelser som datakälla till att börja med. Även om det kommer utebli reklamintäkter för dem så vill jag hävda att effekten av detta projekt är densamma som om någon hade suttit manuellt och slagit upp alla priser, då denna person ändå inte skulle vara intresserad av reklamen. Skillnaden är att nu går det att styra när belastningen ska ske. 4. Liknande projekt Jag har inte lyckats hitta något bra akademiskt gångbart material om scraping. Detta tror jag beror på att det är en väldigt bred och ospecifik term som dessutom är relativt simpel att förstå, men specifik att implementera 16. På internet kan man dock hitta projekt som använder sig av web scraping för att få fram information. Nedan följer en kort analys av två av dem legs Tjänsten 80legs 17 tillhandahåller en onlinetjänst för att enkelt skapa egna så kallade 80apps, vilket motsvarar det som i modellen ovan kallas adaptrar. Dessa kör man sedan via deras servrar och får resultatet tillbaka. De har även vanligt förekommande aktiviteter som färdiga paket. Bland de färdiga paket som finns att tillgå finns bland annat reguljära uttryck (eng. regular expressions) 18, ett system för att matcha text som är smidigt när man vill hämta ut given information ur en massa med text. 13 I resten av detta dokument kommer scraping referera till den automatiserade formen, dels då det är den sortens scraping som menas om inget annat anges, och dels för att det underlättar semantiken Anti-scraping 15 https://addons.mozilla.org/en-us/statistics/addon/ Adblock Plus Statistics 16 Detta är examensarbetarens kvalificerade gissning Custom Web Crawlers, Powerful Web Crawling, and Data Extraction Regular-Expressions.info - Regex Tutorial, Examples and Reference 8

9 4.2 Mozenda 4 LIKNANDE PROJEKT Med hjälp av 80legs skulle man kunna skriva en väldigt effektiv adapter, men det går inte att ersätta hela datalagret då datalagret levererar datan till logiklagret på en strukturerad form. Det betyder att man hur som helst skulle behöva ett lager för att stukturera datan Mozenda Mozenda liknar på många sätt 80legs. Man skapar sina egna agenter som man via ett intuitivt webbgränssnitt instruerar hur de ska läsa av sina mål. Den avlästa datan kan sedan till exempel laddas upp på en server eller skickas till valfri e-postadress. Även här är agenter samma sak som adaptrar i modellen ovan. Många stora företag använder sig av denna tjänst enligt deras egen hemsida 19, däribland Microsoft, IBM och hotels.com. Efter endast en snabb överblick verkar det som att det skulle vara möjligt att ersätta i stort hela datalagret med denna tjänst. Dock finns problemet att denna tjänst kostar en hel del att använda, särskilt om man har för avsikt att ladda väldigt många sidor 20. Utan att ha testat Mozenda så ser den dock mycket bra ut på papper. Den skulle förmodligen kunna användas som en adapter vid behov Data Extraction, Web Screen Scraping Tool, Mozenda Scraper Pricing plan 9

10 5 CONTAINRAR Del II. Genomförande Innan genomgången av programmets uppbyggnad så är det på sin plats med en del förtydlingar. De produkter och källor man jämför med är referenser, men kan också refereras till som beställarens. Detta kan i förväg låta fullständigt uppenbart men kan ändå vara bra att hålla i minnet. Det finns också en del fall av svengelska då koden är skriven på engelska, men rapporten på svenska. För en komplett modell se slutet på denna rapport. Först kommer de klasser som används som containrar (databehållare) att beskrivas. De är skapade för att på ett logiskt sätt innehålla all nödvändig information om det de representerar. Efter det kommer lagren i figur 1 beskrivas i ordning, uppifrån och ner. 5. Containrar För att hålla ordning och struktur på informationen som samlas in har det skapats ett antal objekt för att lagra den. Dessa containerobjekt hör inte till något specifikt lager i figur 1 utan används för att förmedla och lagra information mellan dem. De skapas i datalagret (avsnitt 6) och lagras sedan i logiklagret (avsnitt 7) ReferenceProduct Detta är en representation av en produkt som beställaren har i sitt sortiment. I den finns information om produktens namn, produktnummer och beställarens utpris på den. Det finns också en lista med CompetitorProduct:s (se 5.2) och metoder för att hämta information om produkten. ReferenceProduct är upplagd på så sätt att man är tillåten att ha flera referenser på samma produkt (antag att beställaren har flera olika butiker som säljer samma produkt men med olika priser). Man måste därför ange från vilken källa man lägger till ett referenspris. Referenser kan inte läggas in som konkurrenter. Flera butiker som alla är referenser kommer alltså inte att konkurrera med varandra. Försöker man göra det kommer den metoden returnera direkt, utan att faktiskt ha gjort något. Exempel: Antag att en viss produkt säljs av de egna butikerna A och B för 10 och 5, och av konkurrent C för 8. Man skulle då för A få veta att C är billigaste konkurrent med 2 billigare, och för B skulle man få att C är billigaste konkurrent med -3 billigare. En utskriven referensprodukt har formatet produktens namn;produktnummer;beställarens pris på produkten;billigaste konkurrents namn;billigaste konkurrents pris på produkten;hur mycket billigare billigaste konkurrent är 10

11 5.2 CompetitorProduct 6 DATALAGRET Figur 2: Flödesschema för Pricer CompetitorProduct CompetitorProduct håller en representation av en konkurrents pris för en given produkt. Syftet med dessa är att lägga till dem till en referensprodukt (5.1). Varje instans av en CompetitorProduct innehåller namnet på konkurrenten den representerar, dess pris på produkten och när informationen senast är uppdaterad. Den innehåller dock inte själva någon information om vilken produkt den handlar om, så den måste kopplas till en referensprodukt för att ha någon betydelse ProductPrice ProductPrice används av ReferenceProduct(5.1) för att hålla isär olika referenser. Den innehåller endast namn på referensen och dess pris. Till skillnad från CompetitorProduct(5.2) så saknar denna tid för senaste uppdatering då detta förväntas vara senaste uppdateringen. 6. Datalagret Datalagret i figur 1 utgörs av en adapterhanterare och adaptrar. En adapter är en klass som kommunicerar med omvärlden för insamlande av information. De kallas adaptrar då de omvandlar extern information till Pricers gemensamma interna format (se avsnitt 5). 11

12 6.1 AdapterHandler 6 DATALAGRET Adaptrarna är uppdelade i två grupper, referensadaptrar (ReferenceAdapter) och konkurrentadaptrar (CompetitorAdapter). Referensadaptrarna matar referensprodukter (5.1) till logiklagret (avsnitt 7) som i sin tur begär en uppdatering av var och en av de inkommande produkterna. Uppdateringar behandlas av konkurrentadaptrarna som frågar sin källa om vad andra leverantörer (konkurrenter) har för priser på given produkt och rapporterar tillbaka till datalagret i form av konkurrentprodukter (5.2). Figur 2 visar hur flödet går från uppstart till dess att försök att hämta data om alla produkter genomförts AdapterHandler AdapterHandler håller reda på alla adaptrar som kopplas till systemet. Dess huvudsakliga funktion är att sprida förfrågningar från DataHandler (7.1) till alla adaptrar som ska ha dem. AdapterHandler erbjuder metoder för att lägga till fler adaptrar (både referensadaptrar och konkurrentadaptrar), hämta information om en produkt (baserat på produktnummer) från alla konkurrentadaptrar, visa vilka referenskällor som är kopplade till systemet och funktioner för att starta en ny uppdatering. Till skillnad från modellen i avsnitt 2 är det i slutprodukten tillåtet att ha ett obegränsat antal referensadaptrar då behov av fler än en fanns hos beställaren. Spridningen av metodanrop görs i samtliga fall med (uppenbarligen något anpassat för situationen): f o r ( CompetitorAdapter<T> a : t h i s. competitoradapters ) { a. r e q u e s t P r o d u c t I n f o ( productid ) ; } Looptypen kallas for-each och är ett smidigt sätta att iterera över en datasamling utan att behöva bry sig om dess storlek. Den kan läsas ut som för varje CompetitorAdapter i listan competitoradapters, kalla på requestproductinfo med inparameter productid Adapter Adapter är en liten abstrakt klass som både ReferenceAdapter och CompetitorAdapter ärver från. Den försäkrar att alla adaptrar tillhandahåller metoderna status() och stop(). Adapter implementerar Runnable vilket gör att den kan köras som en egen tråd. Det får också till följd att de klasser som ärver från Adapter kan köras som egna trådar. Mer om det i respektive adaptertyp ReferenceAdapter En refernesadapter är en adaptrar som implementerar ReferenceAdapter. Den läser in beställarens produkter i systemet. ReferenceAdapter är en abstrakt klass som bara tillhandahåller basfunktionaliteten och lämnar det sen till implementation att stå för detaljerna om hur inläsningen ska genomföras. Varje referensadapter (alltså implementation av ReferenceAdapter) måste kalla på ReferenceAdapter:s konstruktor med ett namn på adaptern och ett mål. Målet är var 12

13 6.4 CompetitorAdapter 6 DATALAGRET data ska hämtas från och representeras med en String. Anledningen till att det är en String och inte något annat är att man inte ska vara begränsad till att målet ska vara till exempel en URL eller en fil. Namnet bör vara samma namn som eventuellt kan rapporteras som konkurrent av en CompetitorAdapter (6.4). Referensprodukten kontrollerar nämligen om konkurrenten som läggs till egentligen är en referens, och i så fall läggs den inte in som konkurrent. En referensadapter är uppdelad i tre trådar. En tråd som producerar data, en som behandlar datan och en som (eventuellt) övervakar de två första trådarnas förehavanden. Den första tråden producerar data genom att läsa av sin källa (till exempel genom att ladda ner en fil från en URL) och placera inläst rådata i en kö, element för element. Datan som läses in via den externa källan refereras till som rådata då den kan komma i vilken form som helst (till exempel som en textsträng). Då nerladdning är en operation som kräver interaktion med en extern part sköts det i en egen tråd så störningsmomentet för den externa parten blir så minimalt som möjligt. Tråd nummer två konsumerar rådata från tidigare nämnd kö och omvandlar den till referensprodukter (5.1). Den skapade referensprodukten läggs till DataHandler:s (7.1) samling referensprodukter via DataHandler:s metod addreferenceproduct(...). När man startar en referensadapter startas både den producerande tråden och den konsumerande tråden via metodkall till respektive getproducer och getconsumer. De båda metoderna är abstrakta i ReferenceProduct så en implementation måste tillhandahålla dessa och de ska returnera varsin Runnable. Den tredje tråden är en statustråd. Eftersom ReferenceProduct ärver från Adapter (6.2) körs även själva ReferenceAdapter i en egen tråd. Det finns dock inga krav på att denna tråd ska göra något. Efter att producent- och kunsumenttråden startats kallas den abstrakta metoden monitor() och det är där eventuell övervakningsfunktionalitet implementeras. Metoden kallas dock bara en gång, så om man vill ha något som kör kontinuerligt måste man lägga det som en loop i implementation av monitor(). Vill man inte implementera någon särskild övervakning implementerar man bara en tom monitor() CompetitorAdapter CompetitorAdapter är en abstrakt klass för de adaptrar som ska läsa av konkurrenters produktinformation. Den har funktionalitet för att tråda upp hämtningen av konkurrentinformation och interaktion med logiklagret färdigimplementerat. Det som måste implementeras när man skapar en konkurrentadapter (alltså en adapter som ärver från denna klass) är den funktion som faktiskt hämtar datan, getproductinfo(t productinfo). Den tar in ett produktnummer (till exempel ISBN för böcker) och ska returnera en lista med CompetitorProduct:s. Trådningen i CompetitorAdapter sköts av en ExecutorService 21 av typen Executors.newCachedThreadPool() 22. En cached thread pool har egenskapen att när man ger Interface ExecutorService

14 7 LOGIKLAGRET den uppdrag kommer den starta nya trådar efter behov. Detta gör att den har lite längre uppstartstid än till exempel en fixed thread pool (som även den finns i Executors), som har egenskapen att den alltid har ett fixt antal trådar som ligger och väntar på jobb. Det man dock vinner med cached thread pool är att när det inte finns något jobb att göra ligger det inte trådar och väntar, vilket kan ses som en fördel i denna applikation då den bara ska köra uppdateringar en mindre del av sin körtid. Nya trådar startas allt eftersom de redan körande trådarna inte hinner med att tömma arbetskön. Detta kontrolleras av CompetitorAdapter:s egen tråd. För att skydda mot att det skapas massvis med trådar som öppnar varsin nätanslutning finns det en semafor. En semafor är ungefär som en korg med bollar i, och varje gång man vill ha tillstånd att exekvera så måste man lyckas ta en boll. Finns det ingen boll kvar i korgen måste man vänta till så är fallet. Semaforen är statisk, så alla trådar plockar bollar från samma korg, även om de inte hör till samma konkurrentadapter. Den är också en orättvis semafor, så det är slumpen som avgör i vilken ordning väntande trådar får plocka bollar. Detta kan orsaka en temporär svältning av vissa konkurrentadaptrar, men påverkar inte slutresultatet då alla trådar kommer få exekvera förr eller senare. Som standard får konkurrentadaptrarna starta max 40 arbetstrådar totalt. 7. Logiklagret Logiklagret är det som organiserar den insamlade datan och tillåter presentation av den för användare. DataHandler (7.1) sköter själva organisationen och hanteringen av produkter, och Server(7.2) tar hand om uppstart och lyssnande efter användare DataHandler Det är DataHandler som agerar central nod i datahanteringen. Referensadaptrarna lägger till nya referensprodukter till referensproduktslistan via DataHandler:s addreferenceproduct(...), som i sin tur lägger till den nya referensproduktens produktnummer till alla konkurrentadaptrars arbetsköer (via AdapterHandler). När en konkurrentadapter behandlat produkten rapporterar den tillbaka en lista med CompetitorProduct:s (5.2) till AdapterHandler som lägger in alla konkurrentprodukter var för sig till rätt referensprodukt via metoden addcompetitorproduct(...). Alla referensprodukter hålls i en java.util.concurrent.concurrenthashmap 23. Det är en standardkomponent i Java sedan 1.5 som abstraherar bort behovet av att synkronisera en HashMap åt programmeraren. En HashMap i sin tur används för att koppla ett värde till en unik nyckel. Som nyckel används produktnumret och som värde används ReferenceProduct-objektet. - Class Executors Oracles API för CHM 14

15 7.2 Server 7 LOGIKLAGRET 7.2. Server Applikationen är som nämns i avsnitt 2 uppdelad i två delar; dels ett backend som utgörs av logiklagret och datalagret, och dels ett frontend som ger användarvänlig tillgång till backendet. Mer om frontendet i avsnitt 8 på sidan 17. Server är en liten klass som tar hand om uppstarten av serverdelen av Pricer. Den behandlar först eventuella inparametrar och startar sedan upp en DataHandler (7.1) med avseende på givna inparametrar (eller standardvärden om inga inparametrar givits). Därefter lägger den sig för att lyssna efter anslutningar från klienter. När en klient ansluter startar den en ny tråd med en instans av ClientHandler (7.3) och lyssnar sedan vidare efter nya klienter ClientHandler När servern (7.2) tar emot en anslutning startar den en ny tråd med en instans av klienthanteraren ClientHandler i en egen tråd. Det är sedan den tråden som tar hand om att prata med den anslutna klienten. När en klient skickar ett kommando kommer klienthanteraren tolka det och returnera ett svar (för mer information om protokollet, se 7.3.1). Beroende på vilken sorts begäran det är kommer antingen ett fast svar ges (till exempel kommer stop alltid ge goodbye som svar) eller så genereras svaret dynamiskt. Dynamiska svar genereras efter bästa förmåga genom att iterera över datamassan som efterfrågas. Det handlar antingen om DataHandler:s (7.1) productmap eller om failedmap, vilka båda är (som tidigare nämnts) av typen ConcurrentHashMap. När man itererar över en sådan garanteras man inte att få en fullständig bild. Det man garanteras att få är en bild som den sett ut någon gång mellan starten och slutet på iterationen. Detta är dock inte riktigt ett problem om man vet om det eftersom man inte bör begära listning under en uppdatering, och när en uppdatering väl är klar är också innehållet i HashMap:en statisk (tills dess att en ny uppdatering startas) Protokoll Protokollet som används för att prata kommunicera mellan server och klient är textbaserat. Detta gör att det är väldigt enkelt att testa servern utan att faktiskt ha en färdigskriven klient för man kan ansluta med ett vanligt program för rå textöverföring över nätverk (så som netcat 24 eller telnet 25 ) Funktioner hello Svarar med ett Hello there. Används för att kontrollera att anslutningen mellan klient och server fungerar (en ping-funktion) Netcat: the TCP/IP swiss army knife RFC Telnet Protocol Specification 15

16 7.3 ClientHandler 7 LOGIKLAGRET addid#produktnummer;produktnamn;referenspris;butiksnamn#produktnummer... Lägger manuellt till referensprodukter. Det går teoretiskt att lägga till hur många produkter som helst på samma rad. Dock får namnen inte innehålla varken nummertecken (#) eller semikolon (;). Detta är en känd brist, men då namnet endast är till för användarens bekvämlighet (produktnummer används för sökningar) så kändes det inte relevant att lägga tid på att fixa detta just nu. update Startar en uppdatering. Denna sorts uppdatering kontrollerar endast konkurrenternas priser. Den egna produktkatalogen (referensprodukterna) uppdateras inte. Önskas det får man kalla på forceupdate. forceupdate Stoppar en eventuellt pågående uppdatering, tömmer listorna med referensprodukter (productmap och failedmap, se 7.1 för mer information om dem) och startar en ny nerladdning av referensadaptrarnas mål. Detta har samma resultat som en omstart av servern, men utan att faktiskt behöva starta om den. getid#produktnummer Returnerar en utskriven referensprodukt med givet produktnummer om en sådan finns, annars null. Se 5.1 om hur en referensprodukt skrivs ut som en sträng. getall Returnerar alla referensprodukter, separerat med ny rad. Se 5.1 om hur en referensprodukt skrivs ut som en sträng. getcsv#referensnamn Returnerar en CSV-formaterad lista med alla referensprodukter som levereras av referensnamn. Inleds med en titelrad och avslutas med en tom rad. Denna funktion påminner till stor del om getall, men skiljer sig med att man i getall får alla referensnamn och deras priser medan getcsv kan man få bara ett. Det går att få samtliga referensnamn om man inte lämnar något när man kallar på getcsv (alltså att man kallar på endast getcsv ). Då skriver den ut titelraden och sedan kallar den internt på getall. getfail På samma sätt som getall returnerar en lista på alla referensprodukter returnerar denna en lista med alla referensprodukter som ingen av konkurrentadaptrarna kunde hitta. Dessa finns inte med i listan man får från getall. En union av getall och getfail resulterar i en union av de produkter som lagts till av referensadaptrarna. status Returnerar information om vad servern har för sig för tillfället samt statistik så som hur många referensprodukter det finns för tillfället, hur många blivande referensprodukter som laddats ner av de respektive referensadaptrarna och hur många som fortfarande väntar på att konverteras till referensprodukter. Nedan är ett exempel på hur svaret från status kan se ut: 16

17 8 PRESENTATIONSLAGRET Started: Thu May 26 13:11:56 CEST 2011 Currently have reference products and have failed to get information about 49 products. The adapters: Kunds-butik1: uniqe data elements added to workqueue, still adding. 261 waiting to be processed Kunds-butik2: uniqe data elements added to workqueue, still adding. 127 waiting to be processed Konkurrentkälla1: 476 work units handled this update round. names Returnerar de olika referensnamn som är representerade bland referenserna, separerade med semikolon (;). identify Saknar vettig funktion idag. Den finns här för att förbereda för den dag inloggning och kryptering eventuellt ska implementeras. stop Stänger av servern. quit Stänger anslutningen mellan server och klient utan att påverka servern. Svarar med ett goodbye. 8. Presentationslagret Presentationslagret är det lager som möjliggör presentation av data för användaren. Detta är Pricers frontend, det vill säga den del som är synlig utifrån ClientCommander ClientCommander är ett interface som beskriver vilka funktioner som finns tillgängliga för en klient till Pricer. Den går hand i hand med NetworkThread (8.2), och en klass som vill använda sig av NetworkThread för kommunikation med servern måste implementera ClientCommander. De klasser som implementerar ClientCommander måste tillhandahålla metoden getnextcommand() som NetworkThread använder sig av för att hämta kommandon från dem. De får dock en synkroniserad kö via ClientCommander för det. ClientCommander säger också att det ska finnas metoder för återkoppling efter att operationer utförts. Återkopplingsmetoder namnges på forment callback[operation]. Till exempel så kommer NetworkThread efter att ha genomfört en statusförfrågan skicka svaret till metoden callbackstatus, och sen är det upp till implementationen att använda informationen. Denna uppdelning mellan ClientCommander och en klass som implementerar den, till exempel GUI (8.3), är gjord för att det ska vara enkelt att skapa nya användargränssnitt utan att behöva skapa en ny nätverkshanterare. Antag till exempel att man vill skapa ett program som automatiskt genomför en fast uppsättning operationer för användande i script eller liknande. 17

18 8.2 NetworkThread 8 PRESENTATIONSLAGRET Figur 3: Det grafiska gränssnittet 8.2. NetworkThread NetworkThread tar hand om klientens kommunikation med servern genom att agera som en brygga mellan en implementation av ClientCommander och servern. Den tillhandahåller metoder som skickar korrekt formaterade strängar enligt protokollet beskrivet i Svaret tas sedan emot och skickas till tillhörande återkopplingsmetod. Olika återkopplingsmetoder tar olika sorters inparametrar. Om svaret förväntas vara en kort textsträng används String, men om svaret förväntas vara en större textmassa används istället den upprättade anslutningen som inparameter och det är upp till implementationen av ClientCommander att läsa av den. Till exempel skrivs svaret på status ut i GUI:et (8.3) medan svaret på getcsv skrivs direkt till en av användaren specificerad fil. Mer om det nedan GUI I figur 3 visas en bild på det grafiska användargränssnittet (kort. GUI, för Graphical User Interface ). Det är denna del av Pricer som användare interagerar med. Härifrån kan man på ett användarvänligt sätt utföra de (flesta) funktioner som finns listade i 7.3.2, till exempel hämta filen med data om konkurrenter. GUI:et i sig kör inte i någon egen explicit tråd utan nöjer sig med den tråd man får som standard via grafikbiblioteket Swing. För att GUI:et alltid ska vara responsivt körs inga tidskrävande funktioner direkt därifrån. GUI implementerar ClientCommander och har därför en kö som nätverkshanteraren övervakar. Där lägger de knappar som startar tyngre funktioner kommandon till nätverkshanteraren (8.2) som utför dem i ordningen de läggs till i kön. När en operation är klar kallar nätverkshanteraren på tillhörande återkopplingsmetod som behandlar resultatet av operationen på lämpligt vis. Resultatet av att kalla på 18

19 8.3 GUI 8 PRESENTATIONSLAGRET status kommer till exempel uppdatera innehållet i gränssnittets statusflik (via callbackstatus(...)), men om man kallar på getcsv#kunds-butik1 kommer svaret skrivas till filen som angetts i textfältet (via callbackgetcsv(...). Kontroller om huruvida filen är skrivbar sker i knappens funktionslyssnare innan operationen läggs till i kön eftersom getcsv ofta är en tung operation som inte bör genomföras i onödan Layout En viktig del i skapandet av grafiska gränssnitt är att få önskat innehåll att befinna sig på rätt plats. Det går antingen att använda sig av verktyg som låter utvecklaren mer eller mindre rita upp sitt gränssnitt eller så kan man göra det för hand. Båda har sina för och nackdelar, men en analys av det ligger utanför denna rapport. Gränssnittet till Pricer är skrivet för hand då något tillfredsställande verktyg för att bygga det inte hittats. För att komponenter ska hamna på rätt plats använder man sig av en (eller flera) så kallad LayoutManager 26. Till detta gränssnitt används en Layout- Manager som heter MiGLayout 27. Den är ännu inte en standardkomponent i Java, men dess skapare jobbar för att den ska bli det i Java 1.7. MiGLayout är en mycket kraftfull LayoutManager som tar bort behovet av att nästla JPanels, något som annars brukar vara nödvändigt för att få gränssnitt att se ut som önskat. Det lämnas till läsaren att själv undersöka detaljer om MiGLayout då det ligger utanför rapportens omfång, men det kan varmt rekommenderas för att enkelt skapa snygga gränssnitt för hand Lesson: Laying Out Components Within a Container MiGLayout - The Java Layout Manager for Swing, SWT and JavaFX 19

20 Del III. Diskussion och slutord 9. Förbättringspotential 9 FÖRBÄTTRINGSPOTENTIAL Efter att ha genomfört projektet anser jag att lösningen i det stora hela blev bra. Det finns dock ett antal saker jag skulle göra annorlunda om jag gjorde om projektet igen. Här följer de största problemen och potentiella lösningar på dem Arbetsminne Pricer äter arbetsminne. Efter att första uppdateringen är klar dra den ungefär 2,5GB. Detta kommer sig av att Java i sig är resurshungrigt tillsammans med att det är väldigt mycket data som indexeras. Jag borde ha jobbat hårdare på att hålla minnesanvändningen nere, men jag försvarar mig med att jag fick felaktig information om mängden produkter som skulle indexeras. Från början fick jag veta att det handlade om ca produkter som skulle indexeras, en uppgift som även min bärbara dator klarade av bra. Det visade sig dock senare att det fanns ca produkter till som skulle indexeras. Detta gjorde att minnesförbrukningen vid en körning rusade. Den nuvarande lösningen på problemet är helt enkelt att köra på en större och snabbare server. Inte en optimal lösning, men den fungerar i brist på bättre. För att förbättra minnesanvändningen skulle jag rekommendera att skriva ner inläst data till en fil eller databas. Man skulle också kunna skriva om strukturen på ett sätt som nyttjar färre objekt. Just nu innehåller varje referensprodukt en HashMap med ProductPrice (5.3) och konkurrentdata (5.2) lagras i både en HashMap och en TreeSet. Notera att det är samma objekt med konkurrentdata som pekas ut av båda samlingarna. Det var nödvändigt att göra så för att både ha konkurrentdata sorterat på pris men ändå försäkra sig om att inga dubbletter uppstår. Det är förmodligen där man ska börja optimeringen Styrklasserna Efter att implementationen är färdig känner jag att det blev lite väl många styrklasser. Framför allt hade AdapterHandler helt kunnat sammanfogas med DataHandler för att minska antalet metodkall när man söker vilket ger bättre prestanda och minskad komplexitet. Även Server hade nog kunnat sammanfogats med DataHandler, men i det fallet är det lättare att försvara en uppdelning då Server har en unik uppgift Prestanda Som nämns i 6.4 på sidan 13 så används 40 trådar för hämtning av konkurrentdata. Denna siffra är framtagen med hjälp av ett inte särskilt vetenskaplig test. En körning startades och när systemet kommit igång klockade jag hur många arbetsenheter (där 20

Slutrapport. APFy.me

Slutrapport. APFy.me Slutrapport APFy.me Innehållsförteckning 1 Inledning... 3 2 Mål och syfte... 3 3 Projektbeskrivning... 3 4 Leverabler... 4 5 Resultat... 4 6 Utvärdering och analys... 4 6.1 Utvärdering av resultat... 4

Läs mer

ADO.NET Murach Kapitel 17-20

ADO.NET Murach Kapitel 17-20 Databaser och C# ADO.NET Murach Kapitel 17-20 2013-01-30 1 Winstrand Development Databas ADO.NET Är en del av.net ramverket och tillhandahåller delar för att kommunicera med olika datakällor. Dessa kan

Läs mer

Utveckling av ett grafiskt användargränssnitt

Utveckling av ett grafiskt användargränssnitt Datavetenskap Opponenter: Daniel Melani och Therese Axelsson Respondenter: Christoffer Karlsson och Jonas Östlund Utveckling av ett grafiskt användargränssnitt Oppositionsrapport, C-nivå 2010-06-08 1 Sammanfattat

Läs mer

Med koppling till EmiWeb

Med koppling till EmiWeb Datavetenskap Opponent(er): Jonas Brolin Mikael Hedegren Respondent(er): David Jonsson Fredrik Larsson Webbaserad släktträdsmodul Med koppling till EmiWeb Oppositionsrapport, C/D-nivå 2005:xx 1 Sammanfattat

Läs mer

WebbSMS från datorn. Innehållsförteckning

WebbSMS från datorn. Innehållsförteckning WebbSMS från datorn Innehållsförteckning 2012-01-02 Nyheter i WebbSMS 120102... 2 ip.1 gör SMS från datorn smartare med WebbSMS... 2 Flera användare med samma information.... 2 Tips och trix... 2 Valfri

Läs mer

Inlämningsarbete Case. Innehåll Bakgrund bedömning inlämningsarbete... 2 Inlämnade arbeten... 4

Inlämningsarbete Case. Innehåll Bakgrund bedömning inlämningsarbete... 2 Inlämnade arbeten... 4 Inlämningsarbete Case Innehåll Bakgrund bedömning inlämningsarbete... 2 Inlämnade arbeten... 4 1 Bakgrund bedömning inlämningsarbete Syfte: Eftersom det står i betygskriterierna att för VG skall deltagaren

Läs mer

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 5. Laboration 4 Lådplanering Exempel på grafik, ett avancerat program Frågor

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 5. Laboration 4 Lådplanering Exempel på grafik, ett avancerat program Frågor TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 5 Laboration 4 Lådplanering Exempel på grafik, ett avancerat program Frågor 1 Laboration 4 - Introduktion Syfte: Öva på självständig problemlösning

Läs mer

Medieteknologi Webbprogrammering och databaser MEB725, 5p (7,5 ECTS) Klientprogrammering JavaScript Program på flera sidor

Medieteknologi Webbprogrammering och databaser MEB725, 5p (7,5 ECTS) Klientprogrammering JavaScript Program på flera sidor http://w3.msi.vxu.se/multimedia Medieteknologi Webbprogrammering och databaser MEB725, 5p (7,5 ECTS) Klientprogrammering JavaScript Program på flera sidor Rune Körnefors Innehåll Variabler i JavaScript

Läs mer

Vad är molnet?... 2. Vad är NAV i molnet?... 3. Vem passar NAV i molnet för?... 4. Fördelar med NAV i molnet... 5. Kom igång snabbt...

Vad är molnet?... 2. Vad är NAV i molnet?... 3. Vem passar NAV i molnet för?... 4. Fördelar med NAV i molnet... 5. Kom igång snabbt... Produktblad för NAV i molnet Innehåll Vad är molnet?... 2 Vad är NAV i molnet?... 3 Vem passar NAV i molnet för?... 4 Fördelar med NAV i molnet... 5 Kom igång snabbt... 5 Bli kostnadseffektiv... 5 Enkelt

Läs mer

Mina listor. En Android-applikation. Rickard Karlsson 2013-06-09. Rickard Karlsson - rk222cu Linnéuniversitet rk222cu@student.lnu.

Mina listor. En Android-applikation. Rickard Karlsson 2013-06-09. Rickard Karlsson - rk222cu Linnéuniversitet rk222cu@student.lnu. Mina listor En Android-applikation Rickard Karlsson 2013-06-09 Rickard Karlsson - rk222cu Linnéuniversitet rk222cu@student.lnu.se Innehållsförteckning 2. Innehållsförteckning 3. Abstrakt 4. Inledning/bakgrund

Läs mer

Creo Customization. Lars Björs 2014-10-16

Creo Customization. Lars Björs 2014-10-16 Creo Customization Lars Björs 2014-10-16 Norra Europas största partner och återförsäljare av PTC relaterad programvara (Windchill, Creo, Arbortext, MathCad, Relex) 70 anställda Egen utvecklingsavdelning

Läs mer

WEBB365.SE. Hur skriver man sökmotoroptimerade texter

WEBB365.SE. Hur skriver man sökmotoroptimerade texter Hur skriver man sökmotoroptimerade texter Introduktion Det finns mycket man kan göra för att lyckas på nätet och att skriva sökmotoroptimerade texter är definitivt en av de viktigare. I korta ordalag kan

Läs mer

Web Services. Cognitude 1

Web Services. Cognitude 1 Web Services 1 Web Services Hur ska tillämpningar integreras? Hur ska tillämpningar integreras (via nätet ) för att erbjuda tjänster åtkomliga på nätet? SVAR: Web Services (Enligt Microsoft, Sun, IBM etc.)

Läs mer

Guide för Innehållsleverantörer

Guide för Innehållsleverantörer Library of Labs Content Provider s Guide Guide för Innehållsleverantörer Inom LiLa ramverket är innehållsleverantörer ansvariga för att skapa experiment som "LiLa Learning Objects", att ladda upp dessa

Läs mer

Föreläsning 15: Repetition DVGA02

Föreläsning 15: Repetition DVGA02 Föreläsning 15: Repetition DVGA02 Vad handlar kursen om? Kursen kan i grova drag delas upp i tre delar: 1. Objekt-orienterad programmering 2. Grafiska användargränssnitt 3. Datastrukturer Dessutom genomsyras

Läs mer

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT 2007. Lars Larsson Algoritmer 1

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT 2007. Lars Larsson Algoritmer 1 Algoritmer Lars Larsson VT 2007 Lars Larsson Algoritmer 1 1 2 3 4 5 Lars Larsson Algoritmer 2 Ni som går denna kurs är framtidens projektledare inom mjukvaruutveckling. Som ledare måste ni göra svåra beslut

Läs mer

TMP Consulting - tjänster för företag

TMP Consulting - tjänster för företag TMP Consulting - tjänster för företag Adress: http://tmpc.se Kontakta: info@tmpc.se TMP Consulting är ett bolag som utvecklar tekniska lösningar och arbetar med effektivisering och problemslösning i organisationer.

Läs mer

PROJEKTRAPPORT EDA095 NÄTVERKSPROGRAMMERI

PROJEKTRAPPORT EDA095 NÄTVERKSPROGRAMMERI PROJEKTRAPPORT EDA095 NÄTVERKSPROGRAMMERI NG STRESS LUNDS TEKNISKA HÖGSKOLA - 2013-05-22 Projektmedlemmar: Emil Apelgren adi10eap@student.lu.se Fredrik Helander gda10fhe@student.lu.se Jonathan Klingberg

Läs mer

Ingenjörsfirman Stéen 2001-12-13 Java Sida 1 av 1

Ingenjörsfirman Stéen 2001-12-13 Java Sida 1 av 1 Java Sida 1 av 1 Java Mål och Syfte Målet med denna kurs i Java är att du direkt efteråt ska kunna börja utveckla dina första Javaapplikationer. Kursen ger dig många konkreta exempel på hur detta effektiva

Läs mer

Instruktioner för uppdatering från Ethiris 4.10 till 5.x

Instruktioner för uppdatering från Ethiris 4.10 till 5.x Instruktioner för uppdatering från Ethiris 4.10 till 5.x Nedan följer instruktioner för hur man går till väga vid uppdatering av ett Ethirissystem version 4 till version 5. När man uppdaterar Ethiris från

Läs mer

Decentraliserad administration av gästkonton vid Karlstads universitet

Decentraliserad administration av gästkonton vid Karlstads universitet Datavetenskap Opponent(er): Markus Fors Christian Grahn Respondent(er): Christian Ekström Per Rydberg Decentraliserad administration av gästkonton vid Karlstads universitet Oppositionsrapport, C/D-nivå

Läs mer

Labb LABB 1. Databassagan och en rundtur i databasers märkliga värld. Plushögskolan Frågeutveckling inom MSSQL - SU14

Labb LABB 1. Databassagan och en rundtur i databasers märkliga värld. Plushögskolan Frågeutveckling inom MSSQL - SU14 Labb LABB 1 Databassagan och en rundtur i databasers märkliga värld Plushögskolan Frågeutveckling inom MSSQL - SU14 I Microsoft SQL-Server Management Studio kan man arbeta på olika sätt. Antingen via användargränssnittet

Läs mer

Webbtillgänglighet. Webbtillgänglighet. World Wide Web Consortium. Web Accessibility Initiative, WAI WCAG 2.0 WCAG 1.0

Webbtillgänglighet. Webbtillgänglighet. World Wide Web Consortium. Web Accessibility Initiative, WAI WCAG 2.0 WCAG 1.0 Webbtillgänglighet Webbtillgänglighet Att göra webbinnehåll så att de är tillgängliga för alla oavsett vilka funktionsnedsättningar man har Att göra webbinnehåll tillgängligt oavsett vilken in- och utmatningsutrustning

Läs mer

Instruktion. Datum. 2013-06-19 1 (12) Coverage Dokument id Rev Status? - 1.0 Godkänd. Tillhör objekt -

Instruktion. Datum. 2013-06-19 1 (12) Coverage Dokument id Rev Status? - 1.0 Godkänd. Tillhör objekt - 20130619 1 (12)? 1.0 Godkänd Secure Manager Guide Hantera användarprofiler i tjänsten Telia Secure Manager Dokumentet beskriver hur du som administratör beställer och hanterar användarprofiler i administrationsportalen

Läs mer

Nyheter i. Solen ORBIT 6.7

Nyheter i. Solen ORBIT 6.7 2014-02-12 Nyheter i Solen ORBIT 6.7 Cartesia GIS AB Nyheter i konceptet Mobila klienter och e-tjänst Till ORBIT finns nu två mobila klienter (HTML5-appar) tillgängliga. En för allmänheten, ORBIT Felanmälan,

Läs mer

Federerad Roll Administration ÄR GROUPER EN MEDSPELARE? OVE OLANDER MITTUNIVERSITETET

Federerad Roll Administration ÄR GROUPER EN MEDSPELARE? OVE OLANDER MITTUNIVERSITETET Federerad Roll Administration ÄR GROUPER EN MEDSPELARE? OVE OLANDER MITTUNIVERSITETET Vad är/var problemet? NyA webben har behörigheter/roller via federerade attribut edupersonentitlement/gmai Studentcentrum

Läs mer

30 år av erfarenhet och branschexperts

30 år av erfarenhet och branschexperts 30 år av erfarenhet och branschexperts Integrerad Säkerhet Integrerad Säkerhet Varför överordnat system Användarvänlighet Kvalitet Trygghet Kostnadseffektivitet Varför ett överordnat system? Med stora

Läs mer

Wise Business Support Ms Office Kursinnehåll För nybörjare och därefter

Wise Business Support Ms Office Kursinnehåll För nybörjare och därefter Wise Business Support Ms Office Kursinnehåll För nybörjare och därefter Mohammad Honarbakhsh 2013 01 11 073 784 22 74 mo.honar@wisebs.com www.wisebs.com Ms Office Ms Word, Ms Outlook, Ms PowerPoint, Ms

Läs mer

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 5. Laboration 4 Lådplanering Exempel på layout, ett GUI-baserat program Frågor

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 5. Laboration 4 Lådplanering Exempel på layout, ett GUI-baserat program Frågor TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 5 Laboration 4 Lådplanering Exempel på layout, ett GUI-baserat program Frågor 1 Laboration 5 - Introduktion Syfte: Öva på självständig

Läs mer

Allt du behöver för crowdsourcing

Allt du behöver för crowdsourcing GUIDE Allt du behöver för crowdsourcing DEL 2: Så här följer och visar du resultatet i en dashboard Allt du behöver för crowdsourcing den kompletta guiden steg för steg, del 2 För att utföra uppgifterna

Läs mer

Distribuerade affärssystem

Distribuerade affärssystem Distribuerade affärssystem Kursens mål Bygga upp, strukturera och programmera distribuerade system med en flerskiktsarkitektur Beskriva och förklara teorier och uttryck som används inom affärskritiska

Läs mer

PM 01 En jämförelse av två analysmodeller för val av komponentteknik

PM 01 En jämförelse av två analysmodeller för val av komponentteknik MÄLARDALENS HÖGSKOLA Institutionen för Ekonomi och Informatik v PM 01 En jämförelse av två analysmodeller för val av komponentteknik Eskilstuna, 2002-12-12 EI0230 Komponentbaserad applikationsutveckling

Läs mer

Collector en Android-app för att samla saker. Kim Grönqvist (kg222dk) 2013-06-10 Slutrapport

Collector en Android-app för att samla saker. Kim Grönqvist (kg222dk) 2013-06-10 Slutrapport Collector en Android-app för att samla saker Kim Grönqvist (kg222dk) 2013-06-10 Slutrapport Abstrakt Jag har gjort en Android-app för att samla saker, Collector. Med den kan man upprätta att göra-listor

Läs mer

L0009B. Moment. Introduktion till geografiska databaser: G:\L0009B\Allmänt\IntroGeoDB.pdf (F)

L0009B. Moment. Introduktion till geografiska databaser: G:\L0009B\Allmänt\IntroGeoDB.pdf (F) L0009B Moment FL 1: Kursintroduktion. Kursinformation: G:\L0009B\Allmänt\KursInformationL0009B.pdf (F) Kursplan: Se https://portal.student.ltu.se/stuka/kurs.php?kurs=l0009b&lang=swe (F) Allt som markerats

Läs mer

Microsoft Operations Manager 2005

Microsoft Operations Manager 2005 Microsoft Operations Manager 2005 Grundläggande begrepp Syfte med artikel När jag började arbeta med MOM2K5 upplevde jag det som svårt att få en överblick över alla komponenter och hur dessa hängde ihop.

Läs mer

Jetshop AB WEBSERVICE-API 1.2 ANVÄNDARMANUAL. Version 1.2 2011-10-12

Jetshop AB WEBSERVICE-API 1.2 ANVÄNDARMANUAL. Version 1.2 2011-10-12 Jetshop AB WEBSERVICE-API 1.2 ANVÄNDARMANUAL Version 1.2 2011-10-12 1. Förord I det här dokumentet ges en generell beskrivning av det Webservice-API som är utvecklat av Jetshop AB, och är avsett för dig

Läs mer

Säkerställ er tillgänglighet Kommunikationsrapporteringsverktyg

Säkerställ er tillgänglighet Kommunikationsrapporteringsverktyg Säkerställ er tillgänglighet Kommunikationsrapporteringsverktyg Vad är Meridix Studio? Meridix Studio är ett verktyg som låter er analysera och följa upp er kommunikation via ett enkelt men kraftfullt

Läs mer

Kort om klasser och objekt En introduktion till GUI-programmering i Java

Kort om klasser och objekt En introduktion till GUI-programmering i Java Kort om klasser och objekt En introduktion till GUI-programmering i Java Klasser En klass är en mall för hur man ska beskriva på något. Antag att vi har en klass, Bil. Den klassen innehåller en lista på

Läs mer

Repetition DK2 Middleware, P2P, Multimediatransport. Stefan Alfredsson 18 Mars 2005

Repetition DK2 Middleware, P2P, Multimediatransport. Stefan Alfredsson 18 Mars 2005 Repetition DK2 Middleware, P2P, Multimediatransport Stefan Alfredsson 18 Mars 2005 Några definitioner på middleware Klistret som gör det möjligt för en klient att få betjäning av en server / i klient/server

Läs mer

Christer Scheja TAC AB

Christer Scheja TAC AB Byggnadsautomation för ingenjörer Byggnadsautomation för ingenjörer VVS-tekniska föreningen, Nordbygg 2004 Christer Scheja TAC AB resentation, No 1 Internet/Intranet Ihopkopplade datornät ingen ägare Internet

Läs mer

Grundläggande datavetenskap, 4p

Grundläggande datavetenskap, 4p Grundläggande datavetenskap, 4p Kapitel 4 Nätverk och Internet Utgående från boken Computer Science av: J. Glenn Brookshear 2004-11-23 IT och medier 1 Innehåll Nätverk Benämningar Topologier Sammankoppling

Läs mer

Frakt och webbutiksinställningar

Frakt och webbutiksinställningar Frakt och webbutiksinställningar Detta dokument vänder sig till webbutiker som har en integrerad fraktmodul gentemot Fraktjakt. För att fraktmodulen ska fungera måste man ha registrerat ett webbutik på

Läs mer

ATT GÖRA WEBBSIDOR. Frivillig labb

ATT GÖRA WEBBSIDOR. Frivillig labb Numerisk analys och datalogi KTH 100 44 Stockholm Kerstin Frenckner, tel 790 7143, e-post kfrenck@nada.kth.se 2D1339 Programkonstruktion Hösten 2001 Datorintroduktion Frivillig labb ATT GÖRA WEBBSIDOR

Läs mer

Diagnostisktprov Utveckla i Azure

Diagnostisktprov Utveckla i Azure .easec Diagnostisktprov Utveckla i Azure Mats Johannesson 2015-06-08 1 o Indikerar ett svar önskas. Flera svar önskas. Maxpoäng: 86 Din poäng: Godkänt: 43 poäng Väl Godkänt: 60 poäng 2 1. Vilka fyra alternativ

Läs mer

WHITE PAPER. Open End TM Funktionell översikt

WHITE PAPER. Open End TM Funktionell översikt Open End TM Funktionell översikt Open End tillför verksamhetsprocesser nya möjligheter genom att kombinera avancerad teknik för automatiserad informationshantering i realtid med intuition och hög användbarhet.

Läs mer

Statistik från webbplatser

Statistik från webbplatser Statistik från webbplatser problem och möjligheter Ulf Kronman Föredragets huvuddelar Frågorna och motfrågorna Vilka frågor ställer chefen, BIBSAM och ISO? Varför ställer webmastern krångliga motfrågor?

Läs mer

Nya möjligheter med M3 Technology. Björn Svensson, Björn Torold

Nya möjligheter med M3 Technology. Björn Svensson, Björn Torold Nya möjligheter med Technology Björn Svensson, Björn Torold Vem är vi? 2 Copyright 2011 Lawson. All rights reserved. Nya möjligheter med Technology System Foundation Grid Förändrar basen i Installation

Läs mer

Utveckling av simulator för ärendehanteringssystem

Utveckling av simulator för ärendehanteringssystem Datavetenskap Opponent(er): Emil Danielsson & Patrik Lundberg Respondent(er): Niclas Hanold & Samiar Saldjoghi Utveckling av simulator för ärendehanteringssystem Oppositionsrapport, C/D-nivå 2005:xx 1

Läs mer

Testdriven utveckling. Magnus Jonsson Siemens Medical Solutions

Testdriven utveckling. Magnus Jonsson Siemens Medical Solutions Testdriven utveckling Magnus Jonsson Siemens Medical Solutions 2 Soarian Stort projekt, ca 400 personer i projektet Distribuerad utveckling i USA, Indien och Sverige Web baserat lösning med admin client

Läs mer

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET UMEÅ UNIVERSITET Datavetenskap 010824 TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET Datum : 010824 Tid : 9-15 Hjälpmedel : Inga Antal uppgifter : 7 Totalpoäng : 40 (halva poängtalet krävs normalt

Läs mer

PROV. 13 JSP Standard Tag Library

PROV. 13 JSP Standard Tag Library 13 JSP Standard Tag Library 13.1 Bibliotek med nya JSP-kommandon 13.2 JSP Standard Tag Library (JSTL) 13.3 Filstruktur för webbapplikationer med JSTL 13.4 Deklaration av JSP-kommandon 13.5 Lägga till biblioteksfiler

Läs mer

FileMaker Pro 10 och FileMaker Pro 10 Advanced

FileMaker Pro 10 och FileMaker Pro 10 Advanced FileMaker Pro 10 och FileMaker Pro 10 Advanced Detta dokument tillhandahåller information om senaste nytt och problem med FileMaker Pro 10 och FileMaker Pro 10 Advanced. Allmän information finns i hjälpen

Läs mer

Henrik Asp. Allt du behöver veta för att KÖPA DATOR

Henrik Asp. Allt du behöver veta för att KÖPA DATOR Allt du behöver veta för att KÖPA DATOR Henrik Asp DEL 1 KOMPONENTER OCH PROGRAMVARA DEL 3 EFTER KÖPET 1. INTRODUKTION TILL BOKEN... 3 2. DATORNS HISTORIA... 4 A. Pc...5 B. Mac...6 C. HTPC...7 3. DATORNS

Läs mer

Alternativet är iwindows registret som ni hittar under regedit och Windows XP 32 bit.

Alternativet är iwindows registret som ni hittar under regedit och Windows XP 32 bit. TNT ExpressShipper installation. Om ni redan har en ExpressShipper installation på företaget behöver ni först ta reda på vilken version som är installerad och sökvägen till databasen. Versionen ser ni

Läs mer

Projekt Rapport. RaidPlanner. Jeanette Karlsson UD10

Projekt Rapport. RaidPlanner. Jeanette Karlsson UD10 Projekt Rapport RaidPlanner Jeanette Karlsson UD10 Abstrakt: Denna rapport handlar om mitt projekt i kursen Individuellt Mjukvaruutvecklings projekt. Rapporten kommer att ta upp hur jag gått tillväga,

Läs mer

2014-2015 Alla rättigheter till materialet reserverade Easec

2014-2015 Alla rättigheter till materialet reserverade Easec 1 2 Innehåll Introduktion... 3 Azure Client SDK Libraries... 4 Översikt: Azure Client Libraries... 5 Azure SDK... 6 Azure SDK (forts.)... 7 Azure SDK (forts.)... 8 Cloud Services... 10 Cloud Services...

Läs mer

RELEASE 14.1. Release 14.1 kommer finnas tillgänglig för er måndagen den 10 mars 2014. Allmänt

RELEASE 14.1. Release 14.1 kommer finnas tillgänglig för er måndagen den 10 mars 2014. Allmänt RELEASE 14.1 Release 14.1 kommer finnas tillgänglig för er måndagen den 10 mars 2014. Allmänt Under den gångna utvecklingsperioden har vi utöver nya funktioner och migrering av sidor för olika webbläsare,

Läs mer

<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

Läs mer

Engineering Bases viktigaste egenskaper

Engineering Bases viktigaste egenskaper Engineering Bases viktigaste egenskaper Med Engineering Base intåg på den Svenska marknaden är det många företag som inom de närmaste åren kommer att se över strategin kring sitt CAD system och utvecklingen

Läs mer

Laboration 3 - Java och databaser

Laboration 3 - Java och databaser Version 1.1 Laboration 3 - Java och databaser Laborationen fokuserar på det som behandlades i föreläsningarna 7 och 8. Inhämtade kunskaper från föregående föreläsningar och laborationer i kursen förutsätts

Läs mer

Vad är nytt i ExOpen Web Reports 2.1?

Vad är nytt i ExOpen Web Reports 2.1? Vad är nytt i ExOpen Web Reports 2.1? Innehåll Notifieringar...1 Schemalagd rapportuppdatering...2 Intranätsintegration och integrerad inloggning (Single Sign-On)...2 Förfinad visualisering...3 Teknik...5

Läs mer

En ansats till behovsstyrd applikationsutveckling

En ansats till behovsstyrd applikationsutveckling Datavetenskap Opponenter: Daniel Mester Pirttijärvi Hampus Skystedt Respondent: Johan Björlin En ansats till behovsstyrd applikationsutveckling Oppositionsrapport, C-nivå 2011:05 1 Sammanfattat omdöme

Läs mer

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet Föreläsning 13 Innehåll Algoritm 1: Sortera Exempel på problem där materialet i kursen används Histogramproblemet Schemaläggning Abstrakta datatyper Datastrukturer Att jämföra objekt Om tentamen Skriftlig

Läs mer

CliMate följer Tre-lager-arkitektur. Domänobjekt - domänlogiklagret. Viktiga domänklasser i CliMate. De tre lagren. Paketen i CliMate:

CliMate följer Tre-lager-arkitektur. Domänobjekt - domänlogiklagret. Viktiga domänklasser i CliMate. De tre lagren. Paketen i CliMate: följer Tre-lager-arkitektur De tre lagren presentation: användarhändelser+grafik+resultat domänlogik: håller systemets funktioner databasaccess: databas + sql-hantering Paketen i : climate.ui (inkl climate.ui.action

Läs mer

Inlämningsuppgift : Finn. 2D1418 Språkteknologi. Christoffer Sabel E-post: csabel@kth.se 1

Inlämningsuppgift : Finn. 2D1418 Språkteknologi. Christoffer Sabel E-post: csabel@kth.se 1 Inlämningsuppgift : Finn 2D1418 Språkteknologi Christoffer Sabel E-post: csabel@kth.se 1 1. Inledning...3 2. Teori...3 2.1 Termdokumentmatrisen...3 2.2 Finn...4 3. Implementation...4 3.1 Databasen...4

Läs mer

Manual Lead tracking. Version 1.0 2013-12-12

Manual Lead tracking. Version 1.0 2013-12-12 Manual Lead tracking Version 1.0 2013-12-12 Innehållsförteckning 1 Inledning... 3 1.1 Om manualen... 3 1.2 Om tjänsten... 3 2 Använd tjänsten för första gången... 4 2.1 Installera applikationen... 4 2.2

Läs mer

Utvecklingen av ett tidregistrerings- och faktureringssystem

Utvecklingen av ett tidregistrerings- och faktureringssystem Datavetenskap Opponenter: Anders Heimer & Jonas Seffel Respondenter: Daniel Jansson & Mikael Jansson Utvecklingen av ett tidregistrerings- och faktureringssystem Oppositionsrapport, C-nivå 2006:10 1 Sammanfattat

Läs mer

För smartare belysning

För smartare belysning För smartare belysning CityTouch LightPoint Lighting Asset Management. CityTouch LightPoint / Asset Management 3 Välkommen till framtidens smarta belysning Professionell hantering av offentlig belysning

Läs mer

Operativsystem. Hierarkin för hårdvara läses nerifrån

Operativsystem. Hierarkin för hårdvara läses nerifrån Operativsystem DOS DiskOperatingSystem - ett jobb i taget. Dagens Operativsystem - prioriterar olika jobb. Om ett jobb pausas körs ett annat. Operativsystems viktigaste funktion är att bilda gränssnitt

Läs mer

Eltako FVS. 6 steg för att aktivera fjärrstyrning med hjälp av din smartphone (Mobil klient)

Eltako FVS. 6 steg för att aktivera fjärrstyrning med hjälp av din smartphone (Mobil klient) Eltako FVS 6 steg för att aktivera fjärrstyrning med hjälp av din smartphone (Mobil klient) Obegränsad flexibilitet och bekvämlighet i fastighetsautomation 1. Konfigurera åtkomst till din dator/nätverk

Läs mer

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 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

Läs mer

Webbservrar, severskript & webbproduktion

Webbservrar, severskript & webbproduktion Webbprogrammering Webbservrar, severskript & webbproduktion 1 Vad är en webbserver En webbserver är en tjänst som lyssnar på port 80. Den hanterar tillgång till filer och kataloger genom att kommunicera

Läs mer

Manual, Etikett- & Faktabladsgenerator

Manual, Etikett- & Faktabladsgenerator Manual, Etikett- & Faktabladsgenerator http://www.easylabelcreator.se/customer/lantmannen/ Innehållsförteckning Om tjänsten... 2 Snabbguide... 3 Inloggning... 5 Skapa konto... 5 Glömt användarnamn... 6

Läs mer

Web Crawlers. TDTS09, Datornät och internetprotokoll. Denis Golubovic Fredrik Salin Linköpings universitet Linköping 2011-02-23

Web Crawlers. TDTS09, Datornät och internetprotokoll. Denis Golubovic Fredrik Salin Linköpings universitet Linköping 2011-02-23 Web Crawlers TDTS09, Datornät och internetprotokoll Denis Golubovic Fredrik Salin Linköpings universitet Linköping 2011-02-23 Omslagsbild: Spider robot Google 3d model Källa: turbosquid.com Sammanfattning

Läs mer

[HUR DU ANVÄNDER PAPP] Papp är det program som vi nyttjar för att lotta turneringar och se resultat.

[HUR DU ANVÄNDER PAPP] Papp är det program som vi nyttjar för att lotta turneringar och se resultat. PAPP Papp är det program som vi nyttjar för att lotta turneringar och se resultat. Förberedelser inför en turnering. Ladda ner papp för windows, spara zipfilen på lämpligt ställe på din dator och lägg

Läs mer

Innan du anmäler dig till Quantum View Outbound Checklista

Innan du anmäler dig till Quantum View Outbound Checklista Innan du anmäler dig till Quantum View Outbound Checklista Under anmälningsförfarandet får du en rad frågor om uppgifter du kanske inte känner till. Innan du anmäler dig bör du läsa följande information

Läs mer

Nya webbservern Dvwebb.mah.se

Nya webbservern Dvwebb.mah.se Nya webbservern Dvwebb.mah.se Bakgrund: BIT (Bibliotek och IT) beslutar att ta ner Novell systemet 28/3 som är en katalogtjänst som styr bland annat alla studenter s.k. hemkataloger på Malmö högskola såväl

Läs mer

Att bygga enkla webbsidor

Att bygga enkla webbsidor Nivå 1 Att bygga enkla webbsidor All Code Clubs must be registered. Registered clubs appear on the map at codeclubworld.org - if your club is not on the map then visit jumpto.cc/18cplpy to find out what

Läs mer

Slutrapport för Internetfonden

Slutrapport för Internetfonden Slutrapport för Internetfonden Webbprogrammering i matematik och fysikundervisning Mikael Tylmad mikael@roboro.se Fredrik Atmer fredrik.atmer@gmail.com Ella Kai-Larsen e@k-l.se 10 april 2014 http://www.profyma.se/

Läs mer

Föreläsnings 11 - GUI, Händelsestyrda program, MVC

Föreläsnings 11 - GUI, Händelsestyrda program, MVC Föreläsnings 11 - GUI, Händelsestyrda program, MVC Josef Svenningsson Tisdag 20/11 Boken Denna föreläsning går igenom följande sektioner i boken: 10.1 och 10.2 11.1 Notera att kapitel 11 inte finns i boken

Läs mer

FrontPage Express. Ämne: Datorkunskap (Internet) Handledare: Thomas Granhäll

FrontPage Express. Ämne: Datorkunskap (Internet) Handledare: Thomas Granhäll FrontPage Express I programpaketet Internet Explorer 4.0 och 5.0 ingår också FrontPage Express som installeras vid en fullständig installation. Det är ett program som man kan använda för att skapa egna

Läs mer

KÖPA MARKNADSUNDERSÖKNING. En guide för dig som överväger att göra en marknadsundersökning

KÖPA MARKNADSUNDERSÖKNING. En guide för dig som överväger att göra en marknadsundersökning KÖPA MARKNADSUNDERSÖKNING En guide för dig som överväger att göra en marknadsundersökning INNEHÅLLSFÖRTECKNING INNEHÅLLSFÖRTECKNING... 2 INLEDNING... 3 BEHÖVER NI VERKLIGEN GENOMFÖRA EN UNDERSÖKNING...

Läs mer

Mki9100 UPPDATERING. Ladda ned uppdateringsfiler

Mki9100 UPPDATERING. Ladda ned uppdateringsfiler Mki9100 UPPDATERING Detta dokument beskriver hur man uppdaterar handsfreesatsen via USB porten. Uppdateringar är nödvändiga för att förbättra kompabiliteten för Parrot enheten mot nya telefoner på marknaden.

Läs mer

Undervisningen ska ge eleverna tillfälle att arbeta i projekt samt möjlighet att utveckla kunskaper om projektarbete och dess olika faser.

Undervisningen ska ge eleverna tillfälle att arbeta i projekt samt möjlighet att utveckla kunskaper om projektarbete och dess olika faser. WEBBTEKNIK Webbteknik används för att utveckla och vidareutveckla statiska och dynamiska webbsidor, webbplatser, webbapplikationer eller andra applikationer där webbtekniker används, till exempel applikationer

Läs mer

Föreläsning 2 Verktyg m.m.

Föreläsning 2 Verktyg m.m. Föreläsning 2 Verktyg m.m. Innehåll Java-paket Utvecklingsmiljö (development environment) Hur man organiserar sin utvecklingsmiljö Verktyg (tools) Editorer, debuggers, IDE's (integrated development environments),

Läs mer

För enklare och tryggare affärer

För enklare och tryggare affärer För enklare och tryggare affärer Innehåll Skapa en förfrågan 02 Mina kontouppgifter 04 Mina förfrågningar 05 Sök förfrågningar 06 Meddelandecentret 08 Produktutguide Projektverktyget 10 Min företagsprofil

Läs mer

TST8102 WEBCM BRUKSANVISNING

TST8102 WEBCM BRUKSANVISNING TST8102 WEBCM BRUKSANVISNING INNEHÅLLSFÖRTECKNING TST8102 WEBCM - BRUKSANVISNING 1. Översikt... 3 2. Installation... 3 2.1 Nätverksinställningar... 4 3. Startsida... 5 4. Statussida... 6 5. Gruppsida...

Läs mer

Snake App Rapport - Snake App Rapport Utskriven/PDF Export: 2011-10-17 Copyright 2011 - Version 1.2 Sidan 1 av 9.

Snake App Rapport - Snake App Rapport Utskriven/PDF Export: 2011-10-17 Copyright 2011 - Version 1.2 Sidan 1 av 9. Snake App Rapport - Snake App Rapport Utskriven/PDF Export: 20-0-7 Copyright 20 - Version.2 Sidan av 9 Snake App Rapport DAT255 - Software engineering project Jesper Sjövall Martin Sonesson Alesandro Sanchez

Läs mer

UML. Tomas Czarnecki Institutionen för Informationsbehandling Åbo Akademi,FIN-20520 Åbo, Finland e-mail: tczarnec@abo.fi url: www.abo.

UML. Tomas Czarnecki Institutionen för Informationsbehandling Åbo Akademi,FIN-20520 Åbo, Finland e-mail: tczarnec@abo.fi url: www.abo. UML Tomas Czarnecki Institutionen för Informationsbehandling Åbo Akademi,FIN-20520 Åbo, Finland e-mail: tczarnec@abo.fi url: www.abo.fi/~tczarnec Abstrakt The Unified Modeling Language, UML, är ett visuellt

Läs mer

SNPAC Swedish Number Portability Administrative Centre

SNPAC Swedish Number Portability Administrative Centre 1 (9) TJÄNSTEBESKRIVNING INTRODUKTION & BAKGRUND Post & Telestyrelsen (PTS) har utsett SNPAC Swedish Number Portability Administrative Centre AB (SNPAC) till den organisation som skall tillhandahålla referensdata

Läs mer

Priskamp. En prisjämförelsesite Björn Larsson 130609

Priskamp. En prisjämförelsesite Björn Larsson 130609 Priskamp En prisjämförelsesite Björn Larsson 130609 Abstrakt Detta är en post-mortem slutrapport om mitt projekt "Priskamp" inom ramen för kursen Individuellt Mjukvaruutvecklingsprojekt VT 2013. Projektets

Läs mer

Kunskapsbank ICARUS DB

Kunskapsbank ICARUS DB Kunskapsbank ICARUS DB K E Y L O G I C A B 1 Innehållsförteckning 1 Innehållsförteckning 1 2 SQL Server 2005 3 2.1 Installation 3 2.2 Användargränssnitt (DBMS) för SQL Express 3 2.3 Undvik att transaktionsloggen

Läs mer

Examensarbeten hösten 2014

Examensarbeten hösten 2014 Examensarbeten hösten 2014 2/8 Förslag till examensarbeten på SPV Hos oss kan du ansöka om att skriva uppsats inom flera olika ämnesområden. För oss är uppsatsen ett bra sätt att få delar av vår verksamhet

Läs mer

Prestandatest Förberedelser & Faktainsamling. LIGHTS IN LINE AB Tegnérgatan 37 111 61 STOCKHOLM info@lightsinline.se

Prestandatest Förberedelser & Faktainsamling. LIGHTS IN LINE AB Tegnérgatan 37 111 61 STOCKHOLM info@lightsinline.se Prestandatest Förberedelser & Faktainsamling LIGHTS IN LINE AB Tegnérgatan 37 111 61 STOCKHOLM info@lightsinline.se Sida 2 (6) Innehåll 1 Introduktion... 3 2 Sammanfattning... 3 3 Testmetoder... 3 4 Prestandamål

Läs mer

Ny skalbar och öppen OLAP-teknologi, SAS OLAP server

Ny skalbar och öppen OLAP-teknologi, SAS OLAP server Ny skalbar och öppen OLAP-teknologi, SAS OLAP server Frida Säfström Seniorkonsult Copyright 2003, SAS Institute Inc. All rights reserved. Agenda Arkitekturen Lagring Skalbarhet Säkerhet Olika typer av

Läs mer

Manual HSB Webb brf 2004 03 23

Manual HSB Webb brf 2004 03 23 TERMINOLOGI I Polopoly används ett antal grundläggande begrepp för publicering och hantering av information, eller innehåll som det också benämns. Nedan följer en kort genomgång av denna grundläggande

Läs mer

FLEX Personalsystem. Uppdateringsanvisning

FLEX Personalsystem. Uppdateringsanvisning FLEX Personalsystem Uppdateringsanvisning Innehållsförteckning UPPDATERING... 3 Allmänt... 3 Förberedelser... 3 Informera om uppdatering... 3 Ladda hem uppdateringsfiler... 4 Att observera vid uppdatering...

Läs mer

Vanliga frågor för VoiceXpress

Vanliga frågor för VoiceXpress Vanliga frågor för VoiceXpress 1) Hur stort ordförråd (vokabulär) innehåller VoiceXpress? VoiceXpress innehåller ett mycket omfattande ordförråd, och svaret på frågan varierar en aning beroende på hur

Läs mer

EDA 390 - Datakommunikation och Distribuerade System. Peer-To-Peer system

EDA 390 - Datakommunikation och Distribuerade System. Peer-To-Peer system EDA 390 - Datakommunikation och Distribuerade System Peer-To-Peer system Andreas Bernet 810929-0018 beran@etek.chalmers.se Sektion: Elektroteknik Johan Zhang 820401-1830 zhaj@etek.chalmers.se Sektion:

Läs mer

Innehåll. Dokumentet gäller från och med version 2014.3 1

Innehåll. Dokumentet gäller från och med version 2014.3 1 Innehåll Introduktion... 2 Före installation... 2 Beroenden... 2 Syftet med programmet... 2 Installation av IIS... 2 Windows Server 2008... 2 Windows Server 2012... 6 Installation av webbapplikationen

Läs mer