En livsmedelsbutik på Internet

Storlek: px
Starta visningen från sidan:

Download "En livsmedelsbutik på Internet"

Transkript

1

2 Innehåll 1 Inledning Ord som kanske behöver förklaras Uppgiften Att handla mat via Internet??? Design Implementation Utvärdering Val av implementationsmetod Översikt CGI VRML Fristående program Java Slutsats Java Allmänt om Java Bakgrund Uppbyggnad Java-VM Säkerhet Vad är problemet? Javas lösning Problem med lösningen Plattformsoberoende Framtiden Nytt utvecklingspaket Andra nyheter Webbläsare Internet-butiken Vad är en livsmedelsbutik? (???) Två typer av tjänster En vanlig butik En butik på datorn Sammanfattning Drömdesign Översikt Hur varorna presenteras Avdelningar Att hitta det man vill ha Varukorgen Beställa varorna I

3 6.2.7 Sammanfattning Viktiga designbeslut Ingen server Kommunicerande applets Praktiska problem Tillgänglig information Databasen måste konverteras Överföringshastighet Skriva på lokal disk Kommunikation mellan applets Frames Realistisk design Översikt Hur varorna presenteras Avdelningar Att hitta det man vill ha Varukorgen Beställa varorna Databasen Kommunikation mellan applets Implementation Plattformsberoende Prestanda Konstiga klassvariabler Sammanfattning Utvärdering av Java Språket Plattformsoberoende Säkerhet Applet-kommunikation Framtiden Slutsats Slutsatser...51 II

4 1 Inledning De senaste åren har Internet vuxit fort, och blivit en av de hetaste och mest omdiskuterade tekniska nyheterna under 90-talet. Detta har inneburit att fler och fler har inresserat sig för Internet, och nu är det inte alls bara datornördar som surfar på Internet, utan ganska mycket vanligt folk. När tekniken på detta sätt har spridit sig från entusiasterna till vanliga människor har frågan om vad man egentligen ska ha Internet till dykt upp. Det här examensarbetet behandlar en sak man kan ha det till man kan handla mat via Internet. 1.1 Bakgrund 1.2 Syfte På GoldPen har man sedan en tid tillbaks funderat på om det inte finns något alternativ till de tråkiga turerna till butiken varje lördag för att storhandla. Eftersom de var datorintresserade tyckte de att det skulle vara utmärkt om man istället kunde beställa de varor man ville ha via Internet, och få dem levererade till dörren eller kanske svänga förbi butiken på vägen hem från jobbet och hämta dem. Postorder har ju funnits länge inom vissa områden, men med Internet skulle man kunna ha mycket snabbare beställningar och ett ständigt uppdaterat sortiment. Det innebär att det blir möjligt att även sälja livsmedel på det sättet. När man fick kontakt med en handlare som var villig att prova idén, bestämde man sig för att undersöka vilka möjlgheter som fanns i praktiken. Därför tog man kontakt med Tekniska Högskolan i Linköping och erbjöd en student möjlighetetn att göra den undersökningen som ett examensarbete. Syftet med examensarbetet var att undersöka möjligheten att skapa en livsmedelsbutik på Internet. Eftersom examensarbetet utförs inom ämnesområdet datalogi är det naturligt att begränsa sig till de datalogiska aspeketrna av en sådan butik. Jag har koncentrerat mig på hur sortimentet ska presenteras för användaren och hur hon ska gå till väga för att skapa och skicka en beställning, och inte behandlat hur denna beställning hanteras när den väl kommer till butiken. Jag har inte heller behandlat hur betalningen ska gå till, eller undersökt några särskillda rutiker för att hantera de säkerhetsproblem som kan uppstå. Arbetet kan delas in i tre delar: Att undersöka hur en livsmedelsbutik på Internet kan se ut. Att undersöka hur man kan implementera dessa idéer. Att utvärdera Java som verktyg för att skriva Internetapplikationer. Utvärderingen av Java, som var det språk som användes för implementationen, är egentligen inte nödvändig för undersökningen av Internet-butiken, men eftersom Java är ett så nytt språk passade det bra att samla mina erfarenheter från implementationen i ett separat kapitel, där Javas styrkor och svagheter tas upp. 1

5 1.3 Målgrupp Den här rapporten förutsätter att läsaren har grundläggande kunskaper i datavetenskap och känner till vad Internet och WWW är. Jag har försökt att inte ta upp onödiga tekniska detaljer, så vissa delar är antagligen begripliga för vem som helst, men de delar av rapporten som behandlar Java och den implementation jag har gjort måste innehålla tekniska diskussioner, och kräver därför att läsaren är bekant med vissa begrepp inom datavetenskap och programmeringsmetodik. Däremot förutsätts inte att läsaren känner till Java eller HTML. 1.4 Läsanvisningar Uppgiften att undersöka hur man kan skapa en livsmedelsbutik på Internet beskrivs i kapitel 2, och i kapitel 3 undersöks vad problemet egentligen innebär och vilka moment som ingår i lösningen. Ett verktyg måste väljas för implementationen. De alternativ som finns beskrivs i kapitel 4, där valet av Java också motiveras. I kapitel 5 beskrivs sedan Java översiktligt, dels eftersom Java ställer vissa krav på vad som går att implementera, och dels eftersom det behövs som grund för utvärderingen av Java, som kommer i kapitel 7. Men innan Java kan utvärderas beskrivs i kapitel 6 hur en livsmedelsbutik på Internet skulle kunna se ut, och hur en prototyp för en sådan butik har implementerats. Det är här det mesta av arbetet jag gjort beskrivs, med betoning på varför jag har gjort som jag gjort. Det är erfarenheterna från denna implementation som ligger till grund för utvärderingen. I kapitel 8 dras några slutsatser om Java och Internet-butiker och i kapitel 9 förklaras några ord som kanske är svårbegripliga. Här beskiver jag även varför jag har översatt vissa ord som jag har gjort, och vilka jag har struntat i att översätta. 2

6 2 Uppgiften Kapitlet hänger ihop dåligt. Styckena är bara staplade på varandra. Uppgiften var att undersöka möjligheterna att sälja mat via Internet. En livsmedelsbutik i Linköping ville att kunderna skulle kunna köpa varor ur butikens ordinarie sortiment via Internet. Min uppgift var att undersöka hur man kan förverkliga detta med dagens teknink. Med andra ord: Hur kan man skapa en livsmedelsbutik på Internet? Detta var den ursprungliga formuleringen. Jag har haft stor frihet att tolka och lösa uppgiften som jag vill. Jag gjorde dock tidigt vissa preciseringer och tillägg. Ett problem upptäcker man direkt: Man inte kan få varorna levererade via Internet (med dagens teknik). Därför måste syftet med Internet-butiken bli att skapa en beställning, som på något sätt skickas till butiken. Där tas den om hand av butikspersonalen, som plockar ihop och levererar varorna. Det kändes naturligt för mig som datavetare att undersöka det första steget, dvs hur beställningen ska skapas och skickas till butiken, och alltså inte behandla vad som händer med beställningen när den väl har kommit fram. Jag bestämde mig även för att inte behandla hur betalningen ska gå till. Som det var tänkt från början skulle betalning ske kontant eller med vanliga betalkort när varorna levereras. Man kan dock inte undgå att fundera över möjligheten att ta betalt direkt via Internet. Det finns dock inte utrymme att undersöka det närmare i det här examensarbetet (men se det där andra x-jobbet!???). Jag har inte heller undersökt de marknadsmässiga, ekonomiska eller administrativa förutsättningarna för att starta en livsmedelsbutik på Internet, utan hållit mig till de datavatenskapliga. För att göra uppgiften lite mer konkret bestämde jag mig för att försöka skapa en prototyp. Prototypen behövde inte innehålla all funktionalitet, men målet var att den skulle innehålla tillräckligt för att man skulle kunna använda den på riktigt. Jag valde att implementera prototypen i Java. Java är ett väldigt nytt programmeringsspråk och det verkar vara ont om riktiga användbara tillämpningar skrivna i Java. Därför har jag samlat mina erfarenheter från att skriva en riktig användbar tillämpning i Java i en utvärdering. Med dessa tillägg och preciceringar kan man dela upp uppgiften i tre delar: Att undersöka hur en livsmedelsbutik på Internet kan se ut. Detta är ett kreativt arbete där slutresultatet är en samling idéer och förslag. Att undersöka hur man kan implementera dessa idéer. Här blev resultatet en prototyp. Att utvärdera Java som verktyg för att skriva Internetapplikationer. Eftersom det visade sig inte vara helt lätt att implementera en fungerande prototyp, har tyngdpunkten hamnat på del två. Jag har alltså varit tvungen att lägga 3

7 ner mer tid på att överhuvud taget skapa ett fungerande program, än på att göra detta program användbart och bra. 4

8 3 Att handla mat via Internet??? Som vi såg i kapitel 2 kan uppgiften delas upp i tre delar: Att designa en livsmedelsbutik på Internet, att implementera den, och att utvärdera Java utgående från implementatioen. Dessa delar kan förstås inte utföras helt åtskilt, utan hänger ihop på flera sätt. Till exempel måste man känna till något om vilket verktyg som ska användas för implementationen för att kunna göra en realistisk design. Här analyserar jag vilka moment som ingår i de olika delarna och hur de hänger ihop. 3.1 Design För att göra en bra design bör man fundera på hur en vanlig butik används, och vad som är möjligt att göra i en butik på Internet jämfört med en traditionell butik. Antagligen vill man att Internetbutiken så långt som möjligt ska fylla samma funktion som en vanlig butik, och dessutom erbjuda en del extra tjänster. Detta är inte enkelt. Att butiken ska användas via en dator ställer ju till med vissa problem. Till exempel kan man inte klämma och känna på varorna innan man köper dem. Detta är en nackdel med Internetbutiken, men det finns även möjligheter till fördelar, genom att skapa nya tjänster som inte finns i en vanlig butik. I 6.1 undersöker jag dessa problem och möjligheter. Det verktyg man använder för implementationen kan ställa hårda krav på designen. Jag valde att implementerade Internet-butiken i Java, vilket visade sig ha stor inverkan på vad som var möjligt att göra. För att försöka undvika att kreativiteten hämmades av dessa krav, gjorde jag först en drömdesign där jag inte tog så mycket hänsyn till praktiska problem. Denna design, som beskrivs i 6.2, innehåller flera idéer och förslag till hur en butik på internet skulle kunna se ut, även om det kanske är svårt att implementera allt idag. Efter att ha undersökt vad som var möjligt att implementera i Java, gjorde jag en mer realistisk design. Här försökte jag ta hänsyn till de begränsningar Java har, och även till den begränsade tid jag hade på mig att göra implementationen. Målet var ändå att skapa en fungerande Internet-butik som kunde användas av alla som tillgång till Internet. Se vidare 6.3, 6.4, och Implementation För implementationen var jag tvungen att välja ett verktyg(???). Det var inte givet av problemformuleringen vilket som skulle väljas. Jag undersökte Java, CGI, VRML och möjligheten att göra ett helt fristående program. Oberoende av vilket verktyg som valdes skulle det påverka vad som var möjligt att göra. Valet av verktyg beskrivs och motiveras i kapitel 4. Jag valde att använda Java, som är ett nytt och ganska obeprövat språk. Därför var det speciellt viktigt att undersöka vilka möjligheter det ger, och vilka begränsningar Java har som skulle kunna påverka vad som är möjligt att 5

9 implementera. För att undersöka detta har jag läst flera böcker om Java(??? Referenser?), och gjort ett antal små testprogram för att undersöka hur olika saker fungerar i praktiken. En sammanfattning av detta finns i kapitel 5. Javas uppbyggnad är viktig för att förstå varför den design jag har gjort ser ut som den gör, och för att förstå de problem som uppstod under implementationen. Den är även viktig som en bakgrund till den utvärdering av Java som finns i kapitel 7. Utgående från den realistiska design som bygger på analysen av Java, implementerade jag en prototyp. Jag tar inte upp implementationen i sig i rapporten, och jag kommer inte att diskutera klasshierarkier eller andra liknande detaljer. Däremot uppstod några intressanta problem under implementationen, som jag inte hade förutsett. Jag diskuterar dessa problem och hur jag löste dem i 6.6, och då kan det kanske behövas vissa djupdykningar i implementationsdetaljer. De begränsningar Java har och det faktum att Java är ett så nytt språk, gjorde att den realistiska designen och implementationen krävde mer arbete än vad som var tänkt. Det innebar att jag har ägnat mer tid åt implementation och de praktiska problem som finns, än åt att göra en rikrigt bra och användbar design. Jag har alltså varit tvungen att lägga ner mer tid på att överhuvud taget skapa ett fungerande program, än på att göra detta program användbart och bra. Därför är det kanske inte heller någon katastrof att jag inte har haft tid med någon utvärdering av användbarheten (se 3.3), för designen har inte som huvudsyfte att vara användbar, utan att fungera. Detta är förstås synd, men jag ville hellre få ett fungerande program än en orealistisk men användbar design. 3.3 Utvärdering För att försöka verifiera att designen var bra och ledde till ett användbart program, ville jag göra en utvärdering av användbarheten. Detta skulle till exempel kunna innebära att man lät ett antal representativa användare köra en prototyp och sedan intervjua dem, eller att man studerar dem undertiden de använder prototypen. Tyvärr blev det inte tid inom ramen för examensarbetet för det, mycket på grund av de praktiska problem som uppstod under implementationen. Detta ska bort (tror jag): Även om jag inte har gjort någon riktig utvärdering av användbarheten, har jag gjort en sammanställning av resultatet av implementationen. Jag tar upp vilka svagheter och styrkor som finns i implementationen. En del av svagheterna beror på att det inte har funnits tid att implementera något bättre, medan andra beror på begränsningar hos Internet och Java. Jag försöker analysera dessa svagheter, och ge förslag på hur de kan lösas i kapitel???. Ett syfte med examensarbetet var att utvärdera Java som ett verktyg för att skapa Internetapplikationer. Jag har gjort en utvärdering baserat på de erfarenheter jag har av Java efter att ha designat och implementerat Internet-butiken. I utvärderingen kan Internet-butiken ses som ett stort icke-trivialt exempel, som illustrerar fördelarna och nackdelarna med att utveckla Internetapplikationer i Java. Se kapitel???. 6

10 4 Val av implementationsmetod Det skulle vara trevligt med skärmbilder som exempel här! Referenser till trovärdiga källor är bra! Det finns flera olika tänkbara sätt att implementera program som ska användas via Internet. Efter att ha jämfört några olika metoder valde jag Java. Nedan beskrivs de undersökta metoderna översiktligt, och valet av Java motiveras. 4.1 Översikt 4.2 CGI De metoder jag har undersökt är följande: CGI, som är den vanligaste tekniken att skapa interaktiva web-sidor idag. VRML, som är ett sätt att modellera virtuella världar, och kanske även livsmedelsbutiker, grafiskt. Ett helt fristående program, som använder Internet för att få tillgång till aktuella uppgifter om sortiment och priser. Java, som är ett språk speciellt anpassat för att skapa WWW-applikationer. Det finns naturligtvis fler alternativ man kunde ha undersökt, men dessa var de som verkade intressantast när jag påbörjade examensarbetet. Jag har alltså inte undersökt ActiveX, som är Microsofts svar på Java, eller Pearl, som är (??? Vad är Pearl). Active X undersöktes inte eftersom det inte fanns någon Web-bläddrare som stödde det när jag påbörjade examensarbetet. Utan att kunna testa tekniken var det svårt att jämföra den med de andra alternativen. Pearl var (??? Skriv nåt bra). Därför undersökte jag inte det heller. Det här avsnittet är ingen höjdare. Undrar om det är begripligt? CGI är en teknink för att låta besökare på web-sidor exekvera program på webservern. De flesta interaktiva web-sidor som finns idag använder CGI. Till exempel använder sökmaskinerna Alta Vista och Webcrawler denna teknik. CGI står för Common Gateway Interface och är (??? vad är CGI egentligen). Principen för CGI är att man skapar en HTML-sida med ett formulär (eng. forms(??? förklara)) på. Ett formulär kan innehålla kontroller(heter det så???) som knappar, kryssrutor, textrutor, mm som användaren kan klicka på och skriva text i. Dessa kontroller(???) är döda det finns ingen kod kopplad till dem. Istället finns en speciell knapp på varje formulär, på engelska ofta kallad submitknapp(???). När användaren klickar på den startas ett CGI-program(??? Fler ställen) som får det ifyllda formuläret via web-servern. Detta program tolkar vad användaren har fyllt i, utför det som ska utföras, och skickar en ny HTML-sida med eventuellt resultat till användaren. Denna sida kan i sig innehålla nya formulär som användaren ska fylla i. På detta sätt fortsätter dialogen mellan användaren och CGI-programmet tills användaren låter bli att klicka på submit- 7

11 4.3 VRML knappen(???) och istället går till en annan web-sida. Om programmet till exempel är en sökmaskin fyller användaden i ett eller flera sökord, kryssar kanske i några kryssrutor för att tala om hur sökningen ska utföras, och skickar formuläret till CGI-programmet genom att klicka på submit-knappen. CGI-programmet utför sökningen och skapar en HTML-sida med länkar till de sidor som matchar sökorden, som det skickar tillbaks till användaren. På den sidan kan det också finnas ett formulär för att utföra en ny sökning, så att dialogen kan fortsätta. Detta sätt att kommunicera mellan program och användare är ibland lite omständligt. Det blir som en sorts brevväxling där man inte får omedelbar återkoppling på det man skriver, utan man måste fylla i ett helt formulär och skicka in det först. Sedan får man svaret på som en helt ny web-sida. (??? mer gärna) En annan egenskap hos CGI-program är att all intelligens finns på servern. CGIprogrammet exekveras alltid på servern och inte på användarens maskin. Det innebär att servern kan bli en flaskhals om flera användare samtidigt vill köra något som kräver mycket resurser. Men det kan också vara en fördel att ha allting samlat på ett ställe. Om CGI-programmets främsta uppgift är att förmedla data ur de central databas, som är fallet med sökmaskiner, är det ofta en fördel att ha program och data på samma ställe. När man skapar applikationer enligt den här metoden skriver man alltså CGIprogram och tillhandahåller formulär som användaren kan använda för att starta programmen. CGI-programmen kan vara skrivna i vilket programmeringsspråk som helst, och behöver förstås bara kompileras för den maskin där de ska köras. Formulären skrivs i HTML, och publiceras som vanliga web-sidor. Det enda användaren behöver är en bläddrare som klarar formulär. I princip kan man antagligen implemtera det mesta med CGI, men det riskerar att bli ganska omständigt om man har mycket interaktion med användaren. Om man dessutom har en tillämpning där man vill utföra många små manipulationer på en liten datamängd, till exempel sorteringar och sökningar, kan det kännas omständigt att all kod exekveras på servern. VRML, som står för Virtual Reality Markup (Modelling?) Language(???), är ett sätt att modellera tredimensionella världar. VRML är en standard för hur man beskriver tredimensionella världar, på samma sätt som HTML är en standard för hur man beskriver hypertext-dokument(???). För att man ska kunna utforska en VRML-värld behöver man ett program som kan läsa VRML-filer. Detta program låter en förflytta sig i, och kanske interagera med, den virtuella världen. VRML är intressant i samband med Internet eftersom det finns sådana här program som plug-ins(???)både för Netscape och Internet Explorer(??? gör det det. Är det så det funkar?). Det innebär att man kan ha en länk till en VRML-fil på en web-sida. När man klickar på länken hämtas filen, och VRML-läsaren startas, så att man kan utforska världen så fort hela filen har hämtats. När jag påbörjade examensarbetet, och när jag valde hur jag skulle implementera Internet-butiken, fanns VRML1, och man höll på att ta fram specifikationerna för 8

12 nästa version, VRML2. VRML2 tillåter interaktion mellan användaren och den virtuella världen, till skillnad från VRML1, där världen är helt statisk. Eftersom VRML2 inte var specificerat när jag gjorde valet, fick jag utgå från VRML1. För att kunna implementera ett program som går att använda överhuvudtaget, måste användaren kunna interagera med programmet. För att åstadkomma detta med VRML1 skulle man vara tvungen att kombinera det med något program användaren kunde kommunicera med, till exempel Java eller CGI. Jag har inte undersökt närmare hur det skulle gå till, men jag misstänker att det inte är trivialt. VRML är skapat för att modellera grafiska virtuella världar, och inte för att göra program. Även om man använder VRML2 där man kan skapa interaktiva världar, tror jag att det är svårt att göra världen användbar, om man inte har en tillämpning som är naturlig att modellera grafiskt. I fallet med Internet-butiken skulle man ju kunna tänka sig att man helt enkelt skapade en virtuell kopia av butiken, som man kan gå omkring i och handla, men jag undrar om det är det man vill ha. Möjligtvis kan det vara intressant som ett komplement till ett mer traditionellt program med fönster och knappar. VRML idag ganska långsamt. Filerna där världarna beskrivs blir lätt stora, och tar alltså lång tid att hämta över Internet. Dessutom krävs en ganska snabb dator för att visa världarna. Det krävs en del beräkningar för att låta användaren röra sig i den virtuella världen. Detta innebär att det lätt känns trögt om man inte har en tillräckligt snabb dator. VRML är en spännande teknik, som vi säkert kommer att få se mer av på WWW i framtiden. Men jag tror att det dröjer ett tag innan det kommer att användas för att skapa tillämpningar som kan konkurrera med traditionella program när det gäller användbarhet och effektivitet. 4.4 Fristående program Det ingick i formuleringen av examensarbetet att Internet-butiken skulle köras över Internet, men detta behöver inte nödvändigtvis betyda att programmet måste köras i eller i anslutning till en WWW-bläddrare. Programmet skulle kunna köras helt fristående på varje användares dator, och kommunicera med en central server(???) som har uppdaterad information om priser och sortiment. Internet skulle här kunnan användas till två saker. Dels för att distribuera programmet till användarna man skulle alltså kunna hämta programmet från butikens hemsida på WWW och dels för att sköta kommunikationen mellan klientprogrammet på användarens dator och servern. Om man väljer den här metoden har man stor frihet att utforma programmet som man vill. Man blir inte bunden till ett språk som är anpassat för Internet eller WWW, utan kan välja utvecklingsverktyg och språk fritt. När användaren väl har hämtat och installerat programmet kommer det att gå snabbt att starta. Eftersom hela programmet finns lokalt behöver man inte vänta på att något ska hämtas över Internet. Detta gäller dock inte om man måste ha tillgång till data som uppdateras ofta för att kunna använda programmet. Då måsta programmet hämta dessa uppdateringar, eller åtminstone kolla om något behöver 9

13 4.5 Java uppdateras, när det startas. I fallet med Internet-butiken kommer mängden data antagligen att vara betydligt större än själva programmet, och priserna på varorna uppdateras ofta. Det kommer alltså att ta längre tid att hämta de data som måste hämtas varje gång man vill använda programmet, än att hämta själva programmet. Då är vinsten med att ha programmet installerat lokalt inte längre så stor. Programmet kommer att vara kompilerat för den maskin man kör på, så det kommer att vara effektivare än ett Java-program (se 4.5). Även om det inte kommer att gå mycket fortare att starta, eftersom båda programmen måste hämta data över Internet, så kommer det alltså att gå fortare att köra. Det har även många andra fördelar jämfört med Java-program, eftersom det inte begränsas av de säkerhetsrestriktioner som finns på Java-program som ska köras över Internet. Det kan alltså ses som en fördel att programmet är kompilerat för en speciell maskin, men det är också en nackdel. Om man vill nå en stor kundkrets måste man tillhandahålla versioner av programmet för flera olika plattformar 1. Det behöver man inte med något av de andra alternativen. Java, HTML och VRML är plattformsoberoende, och kan användas oberoende av vilken dator man sitter vid, bara man har de nödvändiga programmen installerade. En annan nackdel med den här metoden är att det blir omständigt för en potentiell Internet-kund att komma igång med Internet-butiken. Det är stor skillnad mellan att bara surfa in på en sida och klicka på en länk för att provköra programmet, och att surfa in på sidan, hitta rätt version, hämta programmet, installera det, konfigurera, och till sist provköra. Ett friståenende program är alltså effektivare än alla andra alternativ, och man har större frihet att designa det som man vill, eftersom man kan välja språk och utveckligsverktyg fritt. Det är däremot inte lika tillgängliga för kunderna, vilket kan vara en stor nackdel, speciellt om det är en ny tjänst man vill erbjuda. Då riskerar man att skrämma bort potentiella användare genom en krålnglig installationsprocedur. Man måste även utveckla olika versioner av programmet för varje plattform man vill att det ska kunna köras på. Det här stycket är VÄLDIGT punkt-igt Java är ett språk som har anpassats speciellt för Internetapplikationer. En speciell sorts Javaprogram, som kallas applets, kan bäddas in i HTML-sidor. När man tittar på en sådan sida med en bläddrare som har Java-stöd, hämtas de inbäddade javaprogrammen till ens dator, där de exekveras. Programmen kan köras i rutor som ligger i själva HTML-sidan, eller i egna fönster. 1 Man kan förstås argumentera att nästan alla ändå kör Windows, men inom Internetvärlden är det faktiskt inte sant. Internet är mycket spritt på universiteten, och där är det vanligt med UNIXsystem, så man bör ha en version för UNIX. Om man vill få publicitet för sitt program är det bra om man kan låta tidningsfolk titta på det, och på tidningar finns det ofta Machintosh, så då måste man skapa en version för MacOS. Dessutom finns det ju olika versioner av Windows. Det är nog bäst att ha en 16-bitars-variant av programmet för Windows 3.11 och en 32-bitars för Windows 95 och Windows NT. 10

14 Javaprogram skrivs i Java, och kompileras till en abstrakt maskinkod, Java bytecode. Det är denna abstrakta maskinkod som hämtas över nätet när man tittar på en web-sida som innehåller Javaprogram. Maskinkoden interpreteras sedan lokalt av en Java-interpretator som finns i bläddraren. Alternativt kompileras den först till maskinberoende maskinkod, som exekveras som ett vanligt program. Java är ett fullfjädrat programmeringsspråk som är lika kraftfullt som vilket annat programmeringsspråk som helst. Det är alltså inte begränsat till en viss domän som till exempel VRML är 2. Detta gör att man har stor frihet att utveckla sina program som man vill. Javaprogrammen exekveras på användarens maskin, och inte på en central server, som CGI-program gör. Om man har en tillämpning där man vill utföra många små manipulationer på en liten datamängd, till exempel sorteringar och sökningar, är detta en fördel. Då behöver man inte belasta servern med detta, och man slipper de effektivitetsproblem som uppstår om man hela tiden måste skicka data över Internet. I princip kan dock ett Javaprogram låta en server ta hand om vissa saker, om det skulle visa sig lämpligt. Om man till exempel ska skriva en applikation där man har en central databas, och ett antal klienter som ska hämta data ur databasen, kan man skriva klienterna i Java och låta dem kommunicera med en databasserver. Jag skrev i princip, för det finns vissa restriktioner på vad en Java-applet får göra. Dessa restriktioner, och varför de finns, beskrivs utförligt i???. Javaprogram lider de inte av de problem med gränssnittet som CGI-program gör. CGI-programmen var ju tvungna att kommunicera med användaren genom att skicka hela HTML-sidor till web-bläddraren. Eftersom Javaprogrammen exekveras lokalt kan de ta emot data från en eventuell server när som helst, och presentera det på ett mycket mer flexibelt sätt än en web-bläddrare kan. Java är jämförbart med fristående program när det gäller flexibilitet, även om det inte är lika effektivt. Javaprogram är lika lätttillgängliga som CGI-program och VRML-världar, i och med att man kör dem i anslutning till web-bläddraren, och de har bättre användargränssnitt. Det finns dock dolda problem med Java som inte är så lätta att förutse. Dessa beskrivs i Kapitel???. För en mer utförlig beskrivning av Javas uppbyggnad, se kapitel Slutsats Jag har beskrivit fyra ganska olika implementationsmetoder. Tabell 4.1 innehåller en sammanställning av metodernas viktigaste egenskaper. 2 VRML är för övrigt inte är ett programmeringsspråk över huvud taget. 11

15 Tabell 4.1: Sammanställning av implementationsmetodernas egenskaper CGI VRML Fristående program Java Plattformsoberoende Ja Ja Nej Ja Lätttillgängligt Ja Ja Nej Ja Användargränssnitt Dåligt Dåligt Bra Bra Häftigt Nej Ja Nja Nja Flexibelt Nej Nej Ja Ja Effektivt Nja Nej Ja Nja Om man jämför Java med vart och ett av de andra alternativen ser man att Java är bäst. Javaprogram blir mycket mer användbara än program skrivna i VRML. Detta beror på att VRML överhuvud taget inte är till för att utveckla program, utan för att modellera virtuella världar. Det hade varit kul att använda VRML som ett komplement till Java, men det har inte funnits tid till det inom examensarbetet. Java har allt som CGI har. Om man väjer att skriva en applikation med en central server, kan den servern utföra samma tjänster som ett CGI-program, men med Java-klienter kan man få mycket bättre användargränssnitt. Dessutom kan man välja vilken funktionalitet som ska finnas hos servern och vilken funktionalitet som ska finnas hos klienterna om man använder Java. Med CGI är man tvungen att ha all funktionalitet hos servern. Den främsta orsaken till att jag valde Java framför att göra ett helt fristående program är att ett Javaprogram blir mer tillgängligt. Detta beror dels på att Internet-kunder kan använda programmet direkt när de besöker butikens hemsida, och dels på att Javaprogram är plattformsoberoende. Det hade inte funnits tid inom ramen för examensarbetet att utveckla ett fristående program för mer än en plattform. Med Java behövde jag bara utveckla en version. Denna version kan köras på alla plattformar där det finns en Java-interpretator. Valet av Java har medfört vissa oförutsedda problem. Java har vissa egenheter som gör att det inte alltid är så bra som det kan verka i en enkel jämförelse, som den jag har gjort här. Dessa egenheter har i stor utsträckning påverkat både designen och implementationen av systemet. För att kunna motivera de designbeslut jag har tagit på grund av detta, beskrivs Java lite mer ingående i kapitel 5. Efter att designen och implementationen har besktivits, finns i kapitel??? en utvärdering av Java som verktyg för att utveckla Internetapplikationer. Där undersöker jag bland annat om Java verkligen var så bra som det verkade här. 12

16 5 Java Java är ett nytt språk som har flera ovanliga egenskaper. Det är plattformsoberoende och det är specialanpassat för Internet. I kapitel 4 motiverade jag varför jag valde att implementera Internet-butiken i Java. Här beskrivs Java lite mer ingående, dels för att motivera vissa designbeslut och dels för att jag ska kunna förklara de problem som uppstod vid implementationen. Ett mål med examensarbetet var även att görta en utvärdering av Java som verktyg för att utveckla Internetapplikaioner. Denna beskrivning av Java är även nödvändig som grund för den utvärderingen. Javas uppbyggnad är lite annorlunda från de flesta andra språk, dels på grund av att det strävar efter att vara plattformsoberoende, och dels på grund av de höga krav på säkrehet som ställs på program som ska köras över Internet. I 5.1 ges en översikt över Javas uppbyggnad, i 5.2 beskrivs de mekanismer som ska garantera säkerheten, i 5.3 förklaras hur Java försöker uppnå plattformsoberoende och i 5.4 beskrivs vad som kommer att hända inom den närmaste framtiden. Dessa beskrivningar är avsedda för den som inte har kommit i kontakt med Java tidigare, men avsikten är inte att ge en fullständig beskrivning av språket, utan bara att ge den bakgrund som behövs för läsningen av resten av rapporten. För den som vill veta mer om Java finns flera bra böcker, till exempel???,??? och???. 5.1 Allmänt om Java När man säger Java kan man mena flera olika saker. Man kan mena själva programmeringsspråket och dess syntax och semantik, eller den virtuella maskin som exekverar Java-program, eller den abstrakta maskinkod som Java-program består av, eller kanske alla de delar som gör det möjligt för Java-program att köras över Internet. Här beskrivs hur dessa delar händer ihop, och vad som är vad Bakgrund Java är ett objektorienterat programmeringsspråk utvecklat av Sun Microsystems. Det är mest känt som ett språk för program som kan köras över Internet, men började 1991 som ett forskningsprojekt om programvara till elektriska apparater, som videobandspelare, brödrostar och tv-apparater. Ett av målen då var att språket skulle vara portabelt, så att det skulle gå att använda på flera olika hårdvaruarkitekturer, och det är bland annat detta som har bidragit till att Java är lämpligt för Internet-applikationer. Från början var projektet ett hemligt och genomfördes internt på Sun, men man insåg att om Java ska kunna bli ett ledande språk för Internet-applikationer måste det bygga på en öppen standard. Därför låter man nu alla som vill göra implementationer av Java-omgivningar, kompilatorer, och allt annat som bygger på Java-standarden. Detta har inneburit att flera ledande företag, som Netscape, 13

17 Microsoft och IBM har valt att göra egna implementationer av olika Java-program för olika plattformar. Den som har skapat all uppmärksamhet kring Java är förstås att java-program kan köras över WWW. Java-program kan bäddas in i webbsidor och göra dem interaktiva. När en användare går till en webbsida hämtas de Java-program som finns på sidan automatiskt till användarens dator där de exekveras, om webbläsaren har stöd för Java. Detta har skapat helt nya möjligheter när det gäller att skapa webbsidor, eftersom en websida då kan innehålla i princip vilka program som helst Uppbyggnad Språkets syntax och objektorienterade struktur liknar C++, men det är mindre och enklare, bland annat innehåller det inte pekare och minneshanteringen är autiomatisk. Istället för pekare används en slags referenser till objekt, som i de flesta fall fungerar på samma sätt som pekare, men programmeraren kan inte manipulera dem lika fritt som traditionella pekare. Till exempel kan man inte utföra pekararitmetik. Att minneshanteringen är autimatisk innebär att programmeraren varken behöver eller kan avallokera objekt när han inte behöver dem längre. Detta sköts istället av Java-omgivningen, som håller reda på vilka objekt som används, och vilka som inte gör det, så att deras minne kan frigöras. För att kompilera Java-program används en Java-kompilator. Skillnaden mellan den och de flesta andra kompilatorer är att en Java-kompilator inte genererar maskinspecifik maskinkod, utan en abstrakt maskinkod Java-bytekod. Detta är en förutsättning för Javas plattformsoberoende, som i 5.3. Bytekoden kan sedan interpreteras av Java-interpretatorer på olika plattformar, eller kompileras vidare till maskinspecifik kod och köras som ett vanligt exekverbart program. Javakompilatorn är egentligen ingen fullständig kompilator i ordets rätta bemärkelse, utan en front end till en kompilator (se nån bok om kompilatorer???), som genererar en mellankod: Java-bytekod. Det finns två huvudtyper av Java-program: applets och applications. Applets är program som kan placeras på webbsidor och köras av vissa webbläsare, medan applications körs av en fristående java-interpretator. När en webbläsare med stöd för Java stöter på en webbsida med applets på, hämtas bytekoden för dessa applets över nätet, på samma sätt som andra filer hämtas av webbläsare, och lagras temporärt lokalt. Detta sker utan att användaren behöver tänka på det, och utan att webbservern behöver vara medveten om att det är en applet som hämtas. Sedan körs bytekoden, till exempel av en interpretator som finns i webbläsaren, på användarens maskin. För användaren blir effektern alltså att webbsidan innehåller program som körs autimatiskt. Applications kan inte placeras på webbsidor köras av webbläsare, utan körs fristående på användarens system, till exempel av en Java-interpretator, men även då är det samma bytekod som körs oberoende av plattform. Inget mulitpelt arv (?) 14

18 5.1.3 Java-VM The Java Virtual Machine eller Java-VM är en virtuell maskin som man tänker sig exekverar Java-bytekod. Denna maskin definierar hur bytekoden ska tolkas, det vill säga hur ett kompilerat Java-program ska exekveras. För att kompilerade java-program ska kunna köras behövs en implementation av den virtuella maskinen. Denna implementation kan till exempel vara i form av en interpretator, en kompilator som kompilerar till maskinspecifik maskinkod, eller något annat exakt hur implementationen ska se ut anges inte i specifikationen av i den virtuella maskinen. Poängen med den virtuella maskinen är att den exekverar Java-bytekod, oberoende av vilken plattform den är implementerad på, eller exakt hur implementationen ser ut. Den kanske naturligaste implementationen av Java-VM är i form av en interpretator. Interpretatorn läser bytekodinstruktionerna en efter en, och exekverar för varje instruktion en sekvens av maskinspecifika instruktioner på den egna maskinen. Nackdelen med interpretatorer är att de är ganska långsamma jämfört med att exekvera maskinkod direkt. Därför har man utvecklat just-in-timekompilatorer för Java. En sådan kompilator bygger på insikten att en interpretator faktiskt innehåller en sekvens av maskinspecifika instruktioner för varje Javabytekodinstruktion. När en metod körs för första gången lagras de maskinspecifika instruktioner som exekveras för varje bytekodinstruktion. Nästa gång metoden körs behöver man inte interpretera bytekoden, utan exekverar helt enkelt den maskinspecifika koden för metoden direkt. En just-in-time-kompilator motsvarar alltså en back end i en kompilator som använder Java-bytekod som mellankod. Java-VM exekverar som sagt Java-bytekod, men det finns egentligen inget som binder Java-VM till språket Java. Man skulle mycket väl kunna tänka sig kompilatorer för andra språk som genererar Java-bytekod. Men innan man sätter sig och skriver en Java-kompilator för C, är det några saker man bör tänka på: Java-VM bryr sig visserligen inte om vilken kompilator som har genererat bytekoden, men det måste vara korrekt bytekod, till exempel kan man inte använda traditionella pekare direkt till minnet. Dessutom använder Java-VM garbage collection, och det är alltså inte längre programmerarens ansvar att avallokera minne. Detta innebär att det kanske inte är helt enkelt att skriva en Java-kompilator för C och liknande språk. Vad som specas, och vad som inte specas Hur referenser hanteras garb 5.2 Säkerhet Ett problem som måste lösas om man vill kunna skriva program vem som helst ska kunna köra över Internet, är säkerheten. Hur ska man kunna garantrera att det programmet inte i själva verket är ett elakt visus? Javas lösning innebär att ett antal krav ställs på varje program som ska köras över Internet. Lösningen verkar bra men är inte helt vattentät, och dessutom begränsar dessa krav vad som går att implementera. 15

19 5.2.1 Vad är problemet? Tänk dig att du är en ond människa och vill skriva ett program som raderar hårddisken på alla maskiner som kör programmet. Ett smidigt sätt att göra det skulle vara att skriva en applet och lägga upp den på din hemsida, som naturligtvis redan innehåller mycket nyttig och intressant information som många människor vill läsa. Alla som går till din hemsida med en webbläsare med Java-stöd kommer automatiskt få sin hårddisk raderad utan att de kan göra något åt det, de vet inte ens om att ditt program körs på deras dator innan det är för sent Om du var ond på riktigt skulle du förstås ha skrivit din applet så att den även snokade reda på all hemlig eller privat information som fanns okrypterat på den stackars användarens pc, och skickat den över nätet till din egen dator, innan den raderade hårddisken. Detta är ett alvarligt hot, även om det inte är något nytt. Tänk på alla share wareprogram folk hämtar från nätet. De kan vara precis lika otrevliga som appleten ovan. Den enda skillnaden är att användaren själv hämtar och installerar programmet, så hon är åtminstone medveten om att hon kör ett program, även om hon inte tänker på hur farligt det är. När det gäller applets räcker det att titta på en webbsida för att alla möjliga konstiga program ska kunna köras på ens maskin. Detta är dock inget argument för att det skulle vara onödigt med säkerhetsåtgärder när det gäller Java, utan snarare ett argument mot att hämta okända 3 program över nätet Javas lösning Java försöker skydda användarna från farliga applets, varesig de är skrivna av onda programmerare eller vanliga programmerare som har råkat göra fel, genom flera säkerhetsmekanismer. Den första är Java-språket i sig. Språket är konstruerat för att minska risken att program kommer åt andra delar av datorns minne än de ska, till exempel genom att inte tillåta pekare. I språk där pekare finns, ökar möjligheten för en programmerare att, avsiktligt eller oavsiktligt, läsa eller modifiera data i objekt han egentligen inte ska ha tillgång till. Java är säkrare än många andra språk enbart genom sin definition, eftersom vissa potentiellt farliga konstruktioner inte finns i språket. Om programmeraren ändå skulle försöka skapa en slags pekare, till exempel genom cast:a ett integer till ett objekt, och på så sätt skapa en referens till ett objekt, protesterar kompilatorn. Kompilatorn kontrollerar att programmeraren inte försöker komma runt de säkerhetsbarriärer som finns definierade i språket genom den här typen av kontroller. Ett annat exempel är att man inte får referera till värdet på oinitialiserade lokala variabler. 3 Om man vet att ett känt företag har tillverkat programmet kan man känna sig ganska lugn. De har antagligen inget intresse av att riskera relationen med kunderna genom att radera deras hårddiskar. Om man däremot inte vet vem som har gjort ett program, bör man vara mycket försiktig. Deras syfte kan vara vad som helst, och man kan antagligen inte hitta någon att ställa till svars om man råkar ut för ett elakt program. 16

20 Språkets konstruktion och kompilatorns kontroller hjälper en programmerare utan onda avsikter att skriva korrekta program, men det finns inget som hindrar en elak beslutsam hacker att skriva sin egen kompilator för ett eget språk, som genererar Jaba-bytekod. När man hämtar applets över nätet kan man alltså inte förutsätta att de har gått igenom några säktehetskontroller alls. Därför verifieras all Javabytekod innan den exekveras. Verifieraren utför olika kontroller av varierande komplexitet av bytekodens struktur för att garantera att inget otillåtet görs. Till exempel kontrolleras att inga otillåtna typkonverteringar görs och att alla attributoch metodreferenser är tillåtna (till exempel att inga private-metoder refereras av andra objekt). Detta är möjligt genom att bytekodinstruktionerna innehåller mer typinformation än vad som egentligen behövs för att exekvera koden. Nästa säkerhetsbarriär är the Class Loader. Den ser till att klasser som hämtas hamnar i olika namnrymder, och att namnrymderna söks igenom i rätt ordning när en klass refereras. Systemklasserna placeras i en egen namnrymd, och klasser som hämtas från olika källor på Internet placeras i olika namnrymder. Om ett objekt refererar till ett annat under körning, söks systemklassernas namnrymd igenom först, och sedan den refererande klassens namnrymd. På så sätt kan en klass från nätet inte ersätta en systemklass och göra elaka saker. Den sista säkerhetskontrollen är implementerad i Javas klassbibliotek i form av en klass som kallas Security Manager. Det finns alltid en instans av en Security Manager som kontrollerar vilka känsliga operationer som får utföras. Med känsliga operationer menas till exempel att skriva och läsa från filer, kommunikation mellan processer, nätverkskommunikation, och att skapa fönster och dialogrutor. När en klass, som inte är en systemklass, vill utföra en känslig operation, går det automatiskt genom Security Manager, som kontrollerar om det är tillåtet för den klassen att utföra operationen eller inte. För systemklasser sker detta inte automatiskt, utan programmeraren måste se till att explicit anropa Security Manager om han vill utföra en känslig operation i en public-metod. Man kan välja vilken säkerhetsnivå som ska användas. Beroende på vilken nivå man väljer äe det tillåtet för klasser att utföra olika känsliga operationer. Till exempel kan man ange att det ska vara tillåtet för alla applets att läsa och skriva på fil eller inte, om applets ska kunna kommunicera fritt på Internet, eller bara med andra applets från samma ställe, eller inte kommunicera alls. De flesta webbläsare 4 idag tvingar användaren att använda en säkerhetsnivå som inte tillåter applets att göra särskilt mycket alls. Användaren kan inte själv specificera vad som ska vara tillåtet, utan bara om applets över huvud taget ska köras eller inte. Om hon väljer att tillåta att applets körs, får de: inte läsa filer inte skriva filer inte ta bort filer inte kommunicera med någon annan dator än den de hämtades från 4 Jag vet att detta gäller för Netscape Navigator 2.0 och

21 inte skapa fönster utan varningstext 5 Däremot får de kommunicera med andra applets från samma ställe och kommunicera med den dator de hämtades från. Alla dessa säkerhetsmekanismer samverkar för att minimera risken för att applets ska orsaka skada avsiktligt eller oavsiktligt. Språkets konstruktion och kompilatorns kontroller eliminerar flera faror redan innan någon kod har genererats. Men man kan inte vara säker på att all bytekod har skapats av en Javakompilator. Därför verifieras all bytekod när innan den exekveras. Sedan kontrollerar Class Loader att inga klasser försöker ersätta systemklasserna, och under körning ser en Security Manager till att inga objekt gör några otillåtna känsliga operationer. Ett helt annat sätt att undvika fientliga applets är att låta användaren själv välja vilka applets hon litar på, och inte tillåta några andra applets att köra över huvud taget. Det skulle vara möjligt om varje applet var märkt på något sätt så att man kunde vara säker var den kom från, och att ingen hade ändrat den sedan märkningen. Då skulle varje användare kunna välja vilka tillverkare hon litade på, och ge deras applets stor frihet att göra vad de behöver. Sun arbetar på ett system med digitala signaturer som ska möjliggöra just detta, se vidare??? Problem med lösningen Javas säkterhetsmekaismer ger Java en hög säkerhetsnivå, men det finns brister. Säkerheten ofta så hög att det inte går att skriva användbara program, och samtidigt finns det luckor som kanske gör det möjligt att skriva farliga applets. Javas säkerhetsmodell orsakar oftast inga problem för en applet-programmerare, så länge man inte vill att ens applets ska fungera i någon webbläsare, för då blir det problem. Den stränga säkerhetspolicy som används av många webbläsare idag medför att det är mycket svårt att skriva användbara Java-applets, eftersom de inte får läsa eller skriva filer, och inte kommunicera över nätet med någon annan än den webbserver de hämtades från. Detta är egentligen inte ett problem som direkt beror på Javas säkerhetsmodell, men det är så alvarligt att det måste tas upp ändå. Vad dessa begränsningar innebär i praktiken analyseras i kapitel 7. Trots de noggranna säkerhetskontroller som görs, finns vissa möjligheter att skriva fientliga Java-program. En möjlighet är att skriva en klass som utger sig för att vara en systemklass, till exempel en Security Manager, men som gör elaka saker. Nu hindrar Class Loader en sådan klass att ta den riktiga systemklassens plats om klassen hämtas över nätet, men om klassen finns på den lokala hårddisken kan den under vissa förutsättningar betraktas som en riktig systemklass 6. Det gäller alltså 5 Fönster som skapas av applets i Netscape Navigator 2.0 eller 3.0 eller Microsoft Internet Explorer 3.0 får en varningstext längst ner som talar om för användaren att fönstret tillhör en applet. Anledningen är att det annars skulle vara möjligt att skriva applets som liknade operativsystemets fönster, och som lurade användaren att till exempel skriva in sitt personliga lösenord. 6 Alla klasser som finns i någon av de kataloger som anges i omgivningsvariabels CLASSPATH betraktas automatiskt som systemklasser. 18

22 bara att lura användaren att klassen är en systemklass, så att hon läggen den på hårddisken tillsammans med de andra systemklasserna. En annan potentiell fara är att applets från samma webbserver placeras i samma namnrymd av Class Loader, och kan kommunicera obehindrat med varandra. I en HTML-fil kan man placera applets som inte fysiskt ligger lagrade på den egna webbservern, och även dessa kommer alltså att kunna kommunicera med varandra, så länge de hämtas via webbsidor på samma server. (??? Referens till Internet) Som jag nämde ovan är det inte nödvändigt för systemklasserna att använda Security Manager, men när en känslig operation utförs i en public-metod hos en systemklass, anropas Security Manager explicit, för att kontrollera att det är tillåtet att utföra operationen. Detta innebär att de som skriver systemklasserna måste vara mycket noggranna med att alltid anropa Security Manager i sådana situationer. Om de glömmer det vid ett tillfälle, kan det utnyttjas av elaka applets för att göra saker de inte egentligen skulle kunna. [???Referens] argumenterar för att det skulle vara bättde om även systemklasserna automatiskt använde Security Manager om inget annat var angivet, och att man istället skulle vara tvungen att ecplicit ange när man vill gå förbi dess säkerhetskontroller. Eftersom applets kan kommunicera med den webbserver de hämtades från, kan de också skicka e-post om servern har något protokoll för det. Detta har nämnts som en säkerhetsrisk eftersom en applet kan skicka e-post till vem som helst från vem som helst. Den kan visserligen inte ta reda på användarens identitet, men e-brevet skickas faktiskt från användarens dator, och det finns inget sätt att binda det till den som har skrivit appleten. Trots dessa potentiella säkerhetsrisker är Java relativt säkert. Ingen av de risker jag har tagit upp behöver innebära några problem. Det viktiga är att applets inte kan komma åt information från användarens dator de inte ska ha tillgång till, och förstöra den eller föra den vidare till olämpliga personer. Det är svårt för applets att göra det idag. Ett större problem är att många bläddrares hårda säkerhetsrestriktioner gör det mycket svårt att skriva användbara applets. Det är ingen mening med säkra Java-program om ingen vill använda dem. 5.3 Plattformsoberoende En viktig förutsättning för att Java-program ska kunna köras över WWW, är att de inte är bundna till en specifik plattform. Precis som webbsidor kan ses av alla användare oberoende av vilken dator eller vilket operativsysytem de använder, ska Java-applets kunna köras av alla användare, utan att programmeraren ska behöva skriva olika versioner av sina applets. Målet är att Java-program ska kunna köras oberoende av plattform, både nu och i framtiden. Detta plattformsoberoende uppnås, som den intresserade läsaren säkert redan har förstått, genom den virtuella maskinen, Java-VM. Varje Java-interpretator eller just-in-time-kompilator kan betraktas som en emulator som emulerar Java-VM. Detta betyder att Java-program alltid exekveras på en Java-VM, oberoende av plattform. Det enda som behövs för att man ska kunna köra Java-program på en plattform, är en implementation av Java-VM för den plattformen. 19

Objektorienterad programmering

Objektorienterad programmering Objektorienterad programmering Emil Ahlqvist (c10eat@cs.umu.se) Didrik Püschel (dv11dpl@cs.umu.se) Johan Hammarström (c08jhm@cs.umu.se) Hannes Frimmel Moström (c10hml@cs.umu.se) 1 1. Introduktion 1.1 Objektorienterad

Läs mer

Projektarbete 2: Interaktiv prototyp

Projektarbete 2: Interaktiv prototyp Projektarbete 2: Interaktiv prototyp Jonatan Hilmarch (Grupp 13) 880427-5595 hilmarch@skip.chalmers.se Kurs: Människa-Datorinteraktion TIG061 HT 2010 Projekt 1 - en tillbakablick Enligt projektets systemdefinition

Läs mer

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen 20150613, kl. 9.00-12.00

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen 20150613, kl. 9.00-12.00 Skolan för datavetenskap och kommunikation Objektorienterad Programkonstruktion, DD1346 FACIT Tentamen 20150613, kl. 9.00-12.00 Tillåtna hjälpmedel: Papper, penna och radergummi. Notera: Frågorna i del

Läs mer

Editering, Kompilering och Exekvering av Javaprogram

Editering, Kompilering och Exekvering av Javaprogram UMEÅ UNIVERSITET Institutionen för informatik B.1, Programmeringens grunder, 5 poäng Editering, Kompilering och Exekvering av Javaprogram Introduktion Syftet med kursmomentet Programmeringens grunder (B.1)

Läs mer

Hitta kunder som frilansare

Hitta kunder som frilansare Hitta kunder som frilansare Hitta kunder som frilansare 4 Att livnära sig som frilansare, genom att ta långa- eller kortsiktiga uppdrag, är en allt vanligare arbetsform. På Billogram träffar vi många frilansare,

Läs mer

Att komma igång med FirstClass (FC)!

Att komma igång med FirstClass (FC)! Att komma igång med FirstClass (FC)! Vi har tillgång till FC genom vårt samarbete med folkhögskolor och därigenom med Folkbildningsnätet. FC kan användas på en dator på två sätt (dessutom kan du använda

Läs mer

ELEVHJÄLP. Diskussion s. 2 Åsikter s. 3. Källkritik s. 11. Fördelar och nackdelar s. 4. Samarbete s. 10. Slutsatser s. 9. Konsekvenser s.

ELEVHJÄLP. Diskussion s. 2 Åsikter s. 3. Källkritik s. 11. Fördelar och nackdelar s. 4. Samarbete s. 10. Slutsatser s. 9. Konsekvenser s. Källkritik s. 11 Diskussion s. 2 Åsikter s. 3 Samarbete s. 10 Slutsatser s. 9 ELEVHJÄLP Fördelar och nackdelar s. 4 Konsekvenser s. 5 Lösningar s. 8 Perspektiv s. 7 Likheter och skillnader s. 6 1 Resonera/diskutera/samtala

Läs mer

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition. Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Vem är vem på kursen Objektorienterad programvaruutveckling GU (DIT011) Kursansvarig : Katarina Blom, tel 772 10 60 Rum: 6126 (E-huset)

Läs mer

Verktyg för Achievers

Verktyg för Achievers Verktyg för Achievers 2.5. Glöm aldrig vem som kör Bengt Elmén Sothönsgränd 5 123 49 Farsta Tel 08-949871 Fax 08-6040723 http://www.bengtelmen.com mailto:mail@bengtelmen.com Ska man kunna tackla sina problem

Läs mer

Planeringsspelets mysterier, del 1

Planeringsspelets mysterier, del 1 Peter Lindberg Computer Programmer, Oops AB mailto:peter@oops.se http://oops.se/ 28 februari 2002 Planeringsspelets mysterier, del 1 Om jag ska spela ett sällskapsspel för första gången så vill jag att

Läs mer

Får jag be om ordet!

Får jag be om ordet! Får jag be om ordet! Får jag be om ordet är ett datorprogram för läs- och skrivutveckling, utvecklat av logoped Bitte Rydeman. Det innehåller åtta olika delprogram, där man på olika sätt arbetar med ordbilder,

Läs mer

Frågor och svar om TNC-term

Frågor och svar om TNC-term Frågor och svar om TNC-term Allmänt: Onlineversion av TNC-term dröjer Installation: Det går inte att lagra databasen på hårddisk eller exportera posterna till annat söksystem Installation: Singelinstallation

Läs mer

Introduktion. Markera den gröna bocken. Skriv in URL:en http://www.ipoint.se. Klicka på knappen Platser.

Introduktion. Markera den gröna bocken. Skriv in URL:en http://www.ipoint.se. Klicka på knappen Platser. LATHUND Introduktion Välkommen till vår interaktiva kursportal. Detta är en lathund för dig som ska utbilda dig med hjälp av ipoint-kurser. Instruktionerna gäller när du använder Internet Explorer 8.0

Läs mer

En handledning för studerande på Högskolan Kristianstad

En handledning för studerande på Högskolan Kristianstad Använda kurskonferenser i FirstClass En handledning för studerande på Åsa Kronkvist, augusti 2005 Innehåll Introduktion...3 Webbklient eller FirstClassklient?...3 Allt ligger online...3 Hitta rätt...4

Läs mer

Introduktion till arv

Introduktion till arv Introduktion till arv 6 INTRODUKTION TILL ARV Arv Generell-Speciell Arv för att utnyttja det vi redan gjort Återanvändning Basklass Härledd klass Varför arv? Inför en subklass för att uttrycka specialisering

Läs mer

Projektpresentation Wapspel

Projektpresentation Wapspel Projektpresentation Wapspel Innehållsförteckning Projektets namn:...2 Uppdragsgivare:...2 Deltagare och ansvarsfördelning:...2 Adress till www-dokumentation:...2 Adress till WAP-spelet:...2 Adress till

Läs mer

VIDEODAGBOKEN. Individuellt Mjukvaruutvecklingsprojekt. En dagbok i videoform online. Robert Forsgren (rf222ce) UD12 2013-06-05

VIDEODAGBOKEN. Individuellt Mjukvaruutvecklingsprojekt. En dagbok i videoform online. Robert Forsgren (rf222ce) UD12 2013-06-05 VIDEODAGBOKEN En dagbok i videoform online. Individuellt Mjukvaruutvecklingsprojekt Robert Forsgren (rf222ce) UD12 2013-06-05 Abstrakt: Den här rapporten kommer ta upp mitt projekt Videodagboken, en dagbok

Läs mer

ANONYMA TENTAMINA (FÖRDELAR) ÅSIKTSTORG:

ANONYMA TENTAMINA (FÖRDELAR) ÅSIKTSTORG: ANONYMA TENTAMINA (FÖRDELAR) ÅSIKTSTORG: SVAR: 1. En bra lärare kan inte favorisera 2. Kan vara bra för att förminska diskriminering 3. Att man inte kan bli orättvist bedömd 4. Alla blir lika behandlade

Läs mer

19. Skriva ut statistik

19. Skriva ut statistik 19. Skiva ut statistik version 2006-05-10 19.1 19. Skriva ut statistik Den här dokumentationen beskriver hur man skriver ut statistik från SPFs medlemsregister via Internet. Observera att bilderna är exempel

Läs mer

SMD 134 Objektorienterad programmering

SMD 134 Objektorienterad programmering SMD 134 Objektorienterad programmering Lärare: pl@cdt.luth.se A 3113 Tomas Klockar klockar@sm.luth.se A 3019 Mats Folke folke@sm.luth.se A 3019 Labhandledare: Natasja Saburova Fredrik Jonsson Lars Persson

Läs mer

Årsskiftesrutiner i HogiaLön Plus SQL

Årsskiftesrutiner i HogiaLön Plus SQL Årsskiftesrutiner i HogiaLön Plus SQL Installation av HogiaLön Plus version 12.1.14 samt anvisningar till IT-ansvarig eller ITtekniker Viktig information för Terminal Server installation För att programmet

Läs mer

Språkäventyret. Mål. Verktyg. Inledande arbete

Språkäventyret. Mål. Verktyg. Inledande arbete Språkäventyret Mål Sammanfatta hur jag gjorde spelet Språkäventyret på Fronter. Verktyg Fronters provverktyg Inledande arbete Fundera över dessa saker innan du börjar: 1. Vilken del av det centrala innehållet

Läs mer

Tärna Folkhögskola 2010-06-03 IT-pedagogutbildningen Individuellt fördjupningsarbete Vt 2010 2010-06-03 IT I FÖRSKOLAN. Författare:Tove Andersson

Tärna Folkhögskola 2010-06-03 IT-pedagogutbildningen Individuellt fördjupningsarbete Vt 2010 2010-06-03 IT I FÖRSKOLAN. Författare:Tove Andersson Tärna Folkhögskola 2010-06-03 IT-pedagogutbildningen Individuellt fördjupningsarbete Vt 2010 2010-06-03 IT I FÖRSKOLAN Författare:Tove Andersson Innehåll Inledning:... 2 Syfte:... 2 Frågeställningar:...

Läs mer

Hogia Administration AB bedriver kontinuerlig utveckling av programmen och reserverar sig för avvikelse mellan program och handbok.

Hogia Administration AB bedriver kontinuerlig utveckling av programmen och reserverar sig för avvikelse mellan program och handbok. Innehållsförteckning Systemkrav....................................3 Val av installation..............................12 Behörigheter..................................12 InstallationsCD................................13

Läs mer

Antivirus Pro 2011. Snabbguide

Antivirus Pro 2011. Snabbguide Antivirus Pro 2011 Snabbguide Viktigt! På CD-fodralet finns den aktiveringskod som du behöver för att aktivera produkten. Förvara den på ett säkert ställe. Den här produkten får endast användas om det

Läs mer

Çrona Tid. Behörighetssystem. Copyright DataVara AB. Produktutveckling Morgan Klebom, Christian Elber, Hans Bäcklund, Thomas Palm

Çrona Tid. Behörighetssystem. Copyright DataVara AB. Produktutveckling Morgan Klebom, Christian Elber, Hans Bäcklund, Thomas Palm V Çrona Tid Copyright DataVara AB Produktutveckling Morgan Klebom, Christian Elber, Hans Bäcklund, Thomas Palm Handbok Lena Kragelund Omslag Studio Alice Ö Lilla torget 3, 441 30 Alingsås Telefon: 0322-67

Läs mer

Slutrapport för JMDB.COM. Johan Wibjer 2012-06-03

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

Läs mer

Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet 2009-08-09

Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet 2009-08-09 Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet 2009-08-09 1. Introduktion till webbprogrammering Webbprogrammering består av ett antal

Läs mer

Nå Framgång på Instagram En guide till små och medelstora företag

Nå Framgång på Instagram En guide till små och medelstora företag Nå Framgång på Instagram En guide till små och medelstora företag 2014-08-10 Svenska Web Voice Annika Elgeskog www.webvoice.se +46 725 861010 presenterar Företagarens guide till framgång på Instagram.

Läs mer

Jag ritar upp en modell på whiteboard-tavlan i terapirummet.

Jag ritar upp en modell på whiteboard-tavlan i terapirummet. VAD ÄR PROBLEMET? Anna, 18 år, sitter i fåtöljen i mitt mottagningsrum. Hon har sparkat av sig skorna och dragit upp benen under sig. Okej, Anna jag har fått en remiss från doktor Johansson. När jag får

Läs mer

Installationsanvisningar

Installationsanvisningar Installationsanvisningar Hogia Webbrapporter INNEHÅLLSFÖRTECKNING Systemkrav version 2013.x 3 Installation av IIS för Windows Server 2008 5 Nyinstallation av Hogia Webbrapporter 8 Installation och inloggning

Läs mer

Föreläsning 2. Operativsystem och programmering

Föreläsning 2. Operativsystem och programmering Föreläsning 2 Operativsystem och programmering Behov av operativsystem En dator så som beskriven i förra föreläsningen är nästan oanvändbar. Processorn kan bara ges enkla instruktioner såsom hämta data

Läs mer

Översikt. Installation av EasyPHP 1. Ladda ner från http://www.easyphp.org/ Jag använder Release 5.3.4.0 2. Installera EasyPHP.

Ö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

Läs mer

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

Läs mer

Självkänsla. Här beskriver jag skillnaden på några begrepp som ofta blandas ihop.

Självkänsla. Här beskriver jag skillnaden på några begrepp som ofta blandas ihop. Självkänsla Självkänsla är lika med att bottna i sitt innerst. Självkänslan finns i varje människa och söker plats att få fäste i och växa ur. Vissa ger den utrymme medan vissa inte låter den gro. Det

Läs mer

Användarmanual konsult

Användarmanual konsult Användarmanual konsult Innehållsförteckning 1. Registrera konto 2. Logga in 3. Fylla i kontouppgifter och prenumerationstyp 4. Byta lösenord 5. Inaktivera konto 6. Radera konto 7. Skapa profil 8. Editera

Läs mer

Handledning Miljömanualen på webben

Handledning Miljömanualen på webben Handledning Miljömanualen på webben Välkommen till Miljömanualen på webben. Det här dokumentet beskriver hur man använder Miljömanualen. Inloggning Börja med att logga in i avsedda fält uppe till höger

Läs mer

Innehåll. Användarstudier. Användarstudier enligt Microsoft. Varför? Aktivt lyssnande. Intervjuteknik. Intervju Observation Personor Scenarier Krav

Innehåll. Användarstudier. Användarstudier enligt Microsoft. Varför? Aktivt lyssnande. Intervjuteknik. Intervju Observation Personor Scenarier Krav Innehåll Användarstudier Johan Åberg johan.aberg@liu.se Intervju Observation Personor Scenarier Krav Varför? Användarstudier enligt Microsoft http://www.youtube.com/watch?v=v_s13 VtPpJQ Aktivt lyssnande

Läs mer

Din egen webserver med Apache

Din egen webserver med Apache Din egen webserver med Apache Att köra en egen webserver kan vara väldigt skojjigt. Jag själv har ett lokalt nätverk och har till exempel ett CGI script för att koppla upp på Internet och koppla ner igen.

Läs mer

JAG LÅG BREDVID DIG EN NATT OCH SÅG DIG ANDAS

JAG LÅG BREDVID DIG EN NATT OCH SÅG DIG ANDAS JAG LÅG BREDVID DIG EN NATT OCH SÅG DIG ANDAS Christoffer Mellgren Roller: 3 kvinnor, 3 män Helsingfors 060401 1. MOTELLET. (Ett fönster står öppet mot natten. Man hör kvinnan dra igen det, och sedan dra

Läs mer

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer Java: Utvecklingsverktyg, datatyper, kontrollstrukturer Sven-Olof Nyström Uppsala Universitet 13 juni 2005 1 Utvecklingsverktyg för Java Vi rekommenderar Suns utvecklingsverktyg (SDK, tidigare JDK), se

Läs mer

KREATIVA BÖNESÄTT. en praktisk hjälp till dig som är ledare! Initiativtagare till materialet: Maria Melin

KREATIVA BÖNESÄTT. en praktisk hjälp till dig som är ledare! Initiativtagare till materialet: Maria Melin KREATIVA BÖNESÄTT en praktisk hjälp till dig som är ledare! Initiativtagare till materialet: Maria Melin Information om materialet Till vem? I vår verksamhet är andakter en viktig del, men ibland är det

Läs mer

Säg STOPP! Ett samarbete mellan Kulturskolan, föreningen DuD och barn och ungdomsprojektet i Katrineholms kommun

Säg STOPP! Ett samarbete mellan Kulturskolan, föreningen DuD och barn och ungdomsprojektet i Katrineholms kommun Säg STOPP! Ett samarbete mellan Kulturskolan, föreningen DuD och barn och ungdomsprojektet i Katrineholms kommun Säg STOPP en temateater kring mobbning Bakgrund Kulturskolan och DuD:s teatergrupp har under

Läs mer

Utskrift av inspelat samtal hos Arbetsförmedlingen

Utskrift av inspelat samtal hos Arbetsförmedlingen BJÖRN L BERGLUND UTSKRIFT AV SAMTAL HOS AF 1 (9) Utskrift av inspelat samtal hos Arbetsförmedlingen Samtalet ägde rum hos Arbetsförmedlingen i Sollentuna tisdag 13 juni 2006 kl. 11.00 Inspelningen är cirka

Läs mer

DRAFT Mottagningswebben Kravspecifikation

DRAFT Mottagningswebben Kravspecifikation DRAFT Mottagningswebben Kravspecifikation Patrik Stenmark 2006-12-17 Contents 1 Introduktion 2 2 Ordlista 2 3 Användarnas mål 2 3.1 Titel.................................................. 2 3.2 Daddor................................................

Läs mer

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: 13-06-05 Tid: kl 16.00-20.

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: 13-06-05 Tid: kl 16.00-20. Umeå Universitet Datavetenskap Anders Broberg 130605 TENTAMEN Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg VT-13 Datum: 13-06-05 Tid: kl 16.00-20.00 Namn: Personnummer:

Läs mer

Inledande programmering med C# (1DV402) Introduktion till C#

Inledande programmering med C# (1DV402) Introduktion till C# Introduktion till C# Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så här: Allt innehåll i

Läs mer

Liten introduktion till akademiskt arbete

Liten introduktion till akademiskt arbete Högskolan Väst, Inst för ekonomi och IT, Avd för medier och design 2013-09-14 Pierre Gander, pierre.gander@hv.se Liten introduktion till akademiskt arbete Den här texten introducerar tankarna bakom akademiskt

Läs mer

Betatestning - Solsystem

Betatestning - Solsystem Betatestning - Solsystem Mikael Ågren, F03 Innehåll 1 Inledning 2 2 Frågorna 2 2.1 Är programmet konsekvent?................... 2 2.2 Behövs genvägar?......................... 2 2.3 Tillräcklig feedback?.......................

Läs mer

Skriv in sökvägen sam.sll.se

Skriv in sökvägen sam.sll.se Lathund för SAM-användning SAM (Säker Anslutning Multiaccess) används när det är driftavbrott på kommunikationen till Stockholm och vi därför inte kan nå TakeCare. Det du bör göra är att först konstatera

Läs mer

Lumbago - Förord. Välkommen till Journalprogrammet Lumbago.

Lumbago - Förord. Välkommen till Journalprogrammet Lumbago. Lumbago - Förord Välkommen till Journalprogrammet Lumbago. Vår förhoppning är att du ska få mer tid över för dina patienter och att du ska ha nytta av alla de effektiva funktioner som Lumbago erbjuder.

Läs mer

Har du funderat något på ditt möte...

Har du funderat något på ditt möte... Har du funderat något på ditt möte... med mig? Så vill jag bli bemött som patient inom psykiatrin. projektet Bättre psykosvård Har du sett rubriker som de här? troligen inte. De här rubrikerna är ovanligt

Läs mer

Föreläsning 3.1: Datastrukturer, en översikt

Föreläsning 3.1: Datastrukturer, en översikt Föreläsning.: Datastrukturer, en översikt Hittills har vi i kursen lagt mycket fokus på algoritmiskt tänkande. Vi har inte egentligen ägna så mycket uppmärksamhet åt det andra som datorprogram också består,

Läs mer

Sida 1 av 12. WSB Biodling. Manual V.1.1. http://www.wermdobiodlare.se

Sida 1 av 12. WSB Biodling. Manual V.1.1. http://www.wermdobiodlare.se Sida 1 av 12 WSB Biodling Manual V.1.1 Sida 2 av 12 Översikt: WSB Biodling är en app som hjälper dig med olika saker inom biodlingen. Nyheter i denna version är möjlighet att skapa skötselkort och dokumentera

Läs mer

Läkarintyg för sjöfolk. Hur gå vidare?

Läkarintyg för sjöfolk. Hur gå vidare? LÄKARWEBB 1 (5) Fartygsoperativa enheten Handläggare, direkttelefon Johan Bagge, 011-19 13 86 Ert datum Er beteckning Läkare som är intresserade av systemet för digitalt läkarintyg Läkarintyg för sjöfolk.

Läs mer

The Pirate Bay-rättegången, dag 6 Fritt nedtecknat

The Pirate Bay-rättegången, dag 6 Fritt nedtecknat The Pirate Bay-rättegången, dag 6 Fritt nedtecknat PB Pirate Bay TBP The Pirate Bay M Vittne, Jurist vid IFPI, Magnus Mårtensson Å Åklagare, med inriktning på IT-relaterade brott, Håkan Roswall t0 + 00:15:35

Läs mer

Lära känna skrivbordet

Lära känna skrivbordet Är det första gången du använder Windows 7? Den här versionen har mycket gemensamt med tidigare versioner av Windows, men du kan behöva hjälp med att få upp farten. Den här guiden innehåller praktisk information

Läs mer

Att skriva Hur utformar man en Social berättelse? Lathund för hur en Social berättelse kan skrivas

Att skriva Hur utformar man en Social berättelse? Lathund för hur en Social berättelse kan skrivas 52 56 57 57 59 59 61 61 63 64 64 65 67 67 76 77 77 79 80 83 86 87 89 91 93 95 Seriesamtalets andra möjligheter Sammanfattning Seriesamtal Sociala berättelser Vad är en Social berättelse? För vilka personer

Läs mer

Valet 2010 på facebook!

Valet 2010 på facebook! Valet 2010 på facebook! Är det inte en valseger jag ser där borta? Tips från SAP:s IT grupp i Helsingborg Bakgrund Hösten 2009 bildade vi en arbetsgrupp där vi diskuterade hur IT kan gagna oss i valet

Läs mer

Coridendro ett verktyg för att grafiskt åskådliggöra incidensen av malignt melanom inom olika släkter

Coridendro ett verktyg för att grafiskt åskådliggöra incidensen av malignt melanom inom olika släkter Datavetenskap Opponenter: Daniel Jansson Mikael Jansson Respondenter: Mats Almgren Erik Hansen Coridendro ett verktyg för att grafiskt åskådliggöra incidensen av malignt melanom inom olika släkter Oppositionsrapport,

Läs mer

POLICYSAMMANFATTNING FRÅN ENTREPRENÖRSKAPSFORUM VARFÖR SILOTÄNKANDE KAN VARA BRA FÖR INNOVATION

POLICYSAMMANFATTNING FRÅN ENTREPRENÖRSKAPSFORUM VARFÖR SILOTÄNKANDE KAN VARA BRA FÖR INNOVATION POLICYSAMMANFATTNING FRÅN ENTREPRENÖRSKAPSFORUM VARFÖR SILOTÄNKANDE KAN VARA BRA FÖR INNOVATION PS från Entreprenörskapsforum En viktig uppgift för Entreprenörskapsforum är att finna nya vägar att nå ut

Läs mer

- 1 - 3 Ovanliga Tips till ett Smalare Liv av Seif Fendukly 2012. Alla rättigheter förbehålls.

- 1 - 3 Ovanliga Tips till ett Smalare Liv av Seif Fendukly 2012. Alla rättigheter förbehålls. - 1 - - 2-3 Ovanliga Tips till ett Smalare Liv Av Seif Fendukly Användarvillkor I den här guiden presenterar författaren information om muskler, fysiologi och kostråd. All information presenteras enbart

Läs mer

I vilket förhållande står du till din anhörige som har problem med alkohol/droger? make/maka son/dotter förälder syskon arbetskamrat annat.

I vilket förhållande står du till din anhörige som har problem med alkohol/droger? make/maka son/dotter förälder syskon arbetskamrat annat. Bilaga 1 I vilket förhållande står du till din anhörige som har problem med alkohol/droger? make/maka son/dotter förälder syskon arbetskamrat annat. Ange: Hur många år har du känt till att din anhörige

Läs mer

Mäta effekten av genomförandeplanen

Mäta effekten av genomförandeplanen Vård- och omsorgsförvaltningen Mäta effekten av genomförandeplanen -rapport från utvärderingsverkstad 2014 Utvärderingsverkstad Regionförbundet Uppsala län och Uppsala universitet Birgitta Lind Maud Sandberg

Läs mer

Slutrapport YUNSIT.se Portfolio/blogg

Slutrapport YUNSIT.se Portfolio/blogg Slutrapport YUNSIT.se Portfolio/blogg RICKARD HANSSON 2012-06-04 Abstrakt Rapporten du har i din hand kommer handla om mitt projektarbete som jag genomfört under tio veckor för utbildningen Utvecklare

Läs mer

SÄKERHETSLÖSNINGAR TJÄNSTEFIERAD SÄKERHET

SÄKERHETSLÖSNINGAR TJÄNSTEFIERAD SÄKERHET SÄKERHETSLÖSNINGAR TJÄNSTEFIERAD SÄKERHET Tjänstefiering av säkerhet är ett kostnadseffektivt alternativ med lägre risk för dig som strävar efter att din kärnverksamhet ska kunna bedrivas utan driftstörningar.

Läs mer

Karlsängskolan - Filminstitutet

Karlsängskolan - Filminstitutet Projektrapport Karlsängskolan - Filminstitutet 1. Om Skolan Karlsängskolan är en högstadieskola i Nora kommun som ligger 3,5 mil norr om Örebro och i Örebro län men tillhör landskapet Västmanland. Skolan

Läs mer

Kom igång med LUPP 6.1

Kom igång med LUPP 6.1 Kom igång med LUPP 6.1 Introduktion... 3 Installation... 7 Logga in... 9 Skapa användare... 11 Lägg in organisation, stationer och enheter... 13 Öppna Verksamhetsöversikten... 15 Hjälp i LUPP... 17 1 1.

Läs mer

Öppen data och vad vi kan vinna på att offentliggöra uppgifter! Formatdag i västerås 2015-11-17 Björn Hagström bjorn.

Öppen data och vad vi kan vinna på att offentliggöra uppgifter! Formatdag i västerås 2015-11-17 Björn Hagström bjorn. Öppen data och vad vi kan vinna på att offentliggöra uppgifter! Formatdag i västerås 2015-11-17 Björn Hagström bjorn.hagstrom@orebrolse Den information vi har är ofta kopplad till personer. Grundregeln

Läs mer

Dedikerad Server Vilket operativsystem ska jag välja? Är ni i startgroparna och ska beställa en dedikerad server eller en virtuell server?

Dedikerad Server Vilket operativsystem ska jag välja? Är ni i startgroparna och ska beställa en dedikerad server eller en virtuell server? Vilket operativsystem ska jag välja? Är ni i startgroparna och ska beställa en dedikerad server eller en virtuell server? Att välja operativsystem kan vara svårt. Det kan vara svårt att förstå vilka konsekvenser

Läs mer

Färgklövern. Färgklövern är gjord 1998 i samarbete mellan Datateket i Linköping och Hargdata AB i Linköping.

Färgklövern. Färgklövern är gjord 1998 i samarbete mellan Datateket i Linköping och Hargdata AB i Linköping. Färgklövern I Färgklövern kan du leka med färger, på lite olika sätt i de olika delprogrammen. Bestäm själv vilka och hur många färger du vill färglägga med. Alla dina målade bilder kan även skrivas ut

Läs mer

OM KRITERIER av Emelie Johnson Vegh och Eva Bertilsson, publicerad i Canis 2004

OM KRITERIER av Emelie Johnson Vegh och Eva Bertilsson, publicerad i Canis 2004 OM KRITERIER av Emelie Johnson Vegh och Eva Bertilsson, publicerad i Canis 2004 Ibland dyker det upp ord som är så fantastiskt användbara och bra att man inte kan begripa hur man någonsin klarat sig utan

Läs mer

Nyföretagarcentrum 5, 2, 3, 30, 4, 5, 5, 1, 1, 10, 10, 1, 6, 4, 1, 7, 6 20, 15, 10, 20, 3, 30, 4, 6, 20, 20, 3, 15, 10, 3, 1, 1, 2, 2, 3, 30, 10,

Nyföretagarcentrum 5, 2, 3, 30, 4, 5, 5, 1, 1, 10, 10, 1, 6, 4, 1, 7, 6 20, 15, 10, 20, 3, 30, 4, 6, 20, 20, 3, 15, 10, 3, 1, 1, 2, 2, 3, 30, 10, Bilaga 4 Sida 1(11) KL 1900 Inger Åckander, 630222 SAMMANSTÄLLNING AV FRÅGORNA AV TOTALT 37 INTERVJUER FÄRGADE SIFFROR FRÅN STORSTADSLÄN - 24 FRÅN STORSTADSLÄN OCH 13 FRÅN ÖVRIGA LÄN Frågor Ja Nej Hur

Läs mer

Omtentamen i OOSU2, 21 augusti 2014

Omtentamen i OOSU2, 21 augusti 2014 Omtentamen i OOSU2, 21 augusti 2014 Maxpoäng: 50. Betygsgränser: A: 90 % + B: 80 % + C: 70 % + D: 60 % + E: 50 % + Mindre än 50 % ger underkänd tentamen. Är det något du inte uppfattar så förklara hur

Läs mer

Instruktion för att slutföra registreringen

Instruktion för att slutföra registreringen Instruktion för att slutföra registreringen Introduktion Vi antar i den här instruktionen att du redan har registrerat sig. Du kan också ha klickat på aktiveringslänken i mailet. Vi använder ett fiktivt

Läs mer

1. Att lyssna 1. Titta på den som talar. 2. Tänk på vad som sagts. 3. Vänta på min tur att prata. 4. Säg det jag vill säga. 1.

1. Att lyssna 1. Titta på den som talar. 2. Tänk på vad som sagts. 3. Vänta på min tur att prata. 4. Säg det jag vill säga. 1. 1. Att lyssna 1. Titta på den som talar. 2. Tänk på vad som sagts. 3. Vänta på min tur att prata. 4. Säg det jag vill säga. 1. Att lyssna 1. Titta på den som talar. 2. Tänk på vad som sagts. 3. Vänta på

Läs mer

Åtkomst och användarhandledning

Åtkomst och användarhandledning Innehållsförteckning Problemspecifikation...1 Åtkomst och användarhandledning...2 Systembeskrivning...3 Lösningens begränsningar...5 Problem och reflektioner...6 Testkörning...7 Bilagor......Källkod...

Läs mer

- en expertanalys. av Anna Olvenmyr

- en expertanalys. av Anna Olvenmyr IT-universitetet i Göteborg MDI. Interaktionsdesign - en expertanalys av Anna Olvenmyr Grafiska Gränssnitt, 5 poäng 2003-10-27 Inledning och kategorisering...3 Utvärdering indelad i kategorier...4 Impression/

Läs mer

LATHUND Att planera en mässa eller utställning

LATHUND Att planera en mässa eller utställning LATHUND Att planera en mässa eller utställning När man medverkar vid utställningar av olika slag är det viktigt att ha en klar strategi kring sitt deltagande. Att bara åka dit på vinst och förlust med

Läs mer

Så här beställer du från Apoteket Farmaci via nätet www.apoteketfarmaci.se

Så här beställer du från Apoteket Farmaci via nätet www.apoteketfarmaci.se 1(21) Så här beställer du från Apoteket Farmaci via nätet www.apoteketfarmaci.se Lathund beställning_.doc 2(21) Innehållsförteckning 1 INNAN DU BÖRJAR... 3 2 LOGGA IN... 3 3 PÅGÅENDE BESTÄLLNING... 4 4

Läs mer

GYMKEEPER ANDREAS SÖDERSTRÖM

GYMKEEPER ANDREAS SÖDERSTRÖM GYMKEEPER ANDREAS SÖDERSTRÖM 20120529 ABSTRAKT En post mortem på mitt ios-projekt. Utmaningen låg i att under 10 veckors tid sätta sig in i en plattform och programspråk jag aldrig använt förut. Jag har

Läs mer

Kan man veta om Bibeln är sann? Eller HUR kan man veta om Bibeln är sann?

Kan man veta om Bibeln är sann? Eller HUR kan man veta om Bibeln är sann? Kan man veta om Bibeln är sann? Eller HUR kan man veta om Bibeln är sann? För det första så måste det givetvis till en ärlig vilja att själv ta del av det som sägs om Bibelns olika böcker. Att vilja läsa

Läs mer

Kommuniceramer än ord

Kommuniceramer än ord Kommuniceramer än ord 1 2 Kommuniceramer än ord Pratglad eller traggig Skillnaden kan vara hårfin när samma meddelande upprepas. När man väljer att kommunicera så är det oftast hur man pratar med varandra

Läs mer

Alla får ligga. strategier i förförelsekonst för den moderna gentlemannen och kvinnan

Alla får ligga. strategier i förförelsekonst för den moderna gentlemannen och kvinnan Alla får ligga strategier i förförelsekonst för den moderna gentlemannen och kvinnan 001 FÖRSPEL IN 168 KAPITEL ETT N o 001 013 Rätt inställning KAPITEL TVÅ N o 014 022 Utsidan KAPITEL TRE N o 023 051

Läs mer

7 steg från lagom till världsklass - 7 tips som berikar Ditt liv

7 steg från lagom till världsklass - 7 tips som berikar Ditt liv 7 steg från lagom till världsklass - 7 tips som berikar Ditt liv Lagom är bäst, eller? Om vi säger något tillräckligt ofta tenderar det ju att bli sant, eller hur? Jag gissar att Du, mer eller mindre medvetet,

Läs mer

Barns medverkan i den sociala barnavården hur lyssnar vi till och informerar barn. Lyssna på barnen

Barns medverkan i den sociala barnavården hur lyssnar vi till och informerar barn. Lyssna på barnen Barns medverkan i den sociala barnavården hur lyssnar vi till och informerar barn Lyssna på barnen 1 En tanke att utgå ifrån För att förstå hur varje unikt barn uppfattar sin specifika situation är det

Läs mer

7 Mamut Client Manager

7 Mamut Client Manager 7 Mamut Client Manager Tilläggsprodukten Mamut Client Manager består av programmen Client Start och Client Update. Med hjälp av Mamut Client Manager kan du från ett fönster öppna, uppdatera och administrera

Läs mer

Utredning om införande av digital nämndhantering för socialnämnden

Utredning om införande av digital nämndhantering för socialnämnden 6:1 6:2 6:3 6:4 6:5 Socialkontoret Dnr SN/2015:772-036 Administrativa enheten 2015-11-11 1/6 Handläggare Charlotte Arnell Tel. 0152-291 66 Utredning om införande av digital nämndhantering för socialnämnden

Läs mer

Chefens sju dödssynder - undvik dem och lyckas som ledare!

Chefens sju dödssynder - undvik dem och lyckas som ledare! White Paper #6 Chefens sju dödssynder - undvik dem och lyckas som ledare! Malin Trossing för Kontentan, augusti 2013 Kontentan Förlags AB www.kontentan.se För att bli programmerare krävs flera års programmeringsutbildning

Läs mer

Utvärdering av föräldrakurs hösten 2013

Utvärdering av föräldrakurs hösten 2013 Utvärdering av föräldrakurs hösten 2013 - Har du verktyg för att bemöta din oroliga och nedstämda tonåring? Föräldrakursen oro/nedstämdhet är ett samarbete mellan Råd & stöd, Gamla Uppsala familjeenhet

Läs mer

Så här skrivs faktablad om MSB-finansierade forskningsprojekt

Så här skrivs faktablad om MSB-finansierade forskningsprojekt MSB-51.1 Myndigheten för samhällsskydd och beredskap PM 1 (5) Avdelningen för utvärdering och lärande Enheten för inriktning av forskning Anvisningar Så här skrivs faktablad om MSB-finansierade forskningsprojekt

Läs mer

6-stegsguide för hur du tänker positivt och förblir positiv.

6-stegsguide för hur du tänker positivt och förblir positiv. 6-stegsguide för hur du tänker positivt och förblir positiv Låt oss säga att du vill tänka en positiv tanke, till exempel Jag klarar det här galant. och du vill förbli positiv och fortsätta tänka den här

Läs mer

Föreläsning 1. Presentation av kursen Vad är programmering? Lite om java och utvecklingsmiljöer Aktivitetsdiagram Ett första program

Föreläsning 1. Presentation av kursen Vad är programmering? Lite om java och utvecklingsmiljöer Aktivitetsdiagram Ett första program Föreläsning 1 Presentation av kursen Vad är programmering? Lite om java och utvecklingsmiljöer Aktivitetsdiagram Ett första program Deitel: 1.1-1.9, 2.1-2.3 DA101A Programmering Programmering, DA101A Kursansvarig:

Läs mer

Digitalt lärande och programmering i klassrummet

Digitalt lärande och programmering i klassrummet Digitalt lärande och programmering i klassrummet Innehåll Programmering Vad är programmering och varför behövs det? Argument för (och emot) programmering Kort introduktion om programmering Några grundbegrepp

Läs mer

TIPSLISTAN om trans på lajv

TIPSLISTAN om trans på lajv TIPSLISTAN om trans på lajv På Prolog 2015 samlades 17 stycken lajvare med transerfarenheter på utvecklingsforumet Att lajva utanför könsnormerna. Där skapade vi bland annat den här listan med grundläggande

Läs mer

Manual för version V2

Manual för version V2 Innehållsförteckning 1. Om 2. Installera Administration 3. Programmets skrivbord 4. Lägga upp din första kund 5. Kontaktpersoner 6. Besiktningsadresser 7. Kontrollpunkter/Besiktningspunkter 8. Koppla kontrollpunkter/besiktningspunkter

Läs mer

Struktur och Ledning i små organisationer

Struktur och Ledning i små organisationer Kungl. Tekniska Högskolan ME1010, Organisation och kundskapsintensivt arbete Fredrik Bergenlid, 870510-0157 Christian Rane, 810105-0279 Struktur och Ledning i små organisationer Innehåll 1 Inledning 1

Läs mer

REAL Fastighetssystemet. REALPortalen Verktyg för den smarta förvaltaren. Fritt, enkelt, säkert. Passar även bra för enskild BRF.

REAL Fastighetssystemet. REALPortalen Verktyg för den smarta förvaltaren. Fritt, enkelt, säkert. Passar även bra för enskild BRF. REAL Fastighetssystemet Fritt, enkelt, säkert REALPortalen Verktyg för den smarta förvaltaren Till dig som erbjuder ekonomisk förvaltning av bostadsrättsföreningar eller hyresrätter/lokaler. Passar även

Läs mer