Den personliga hemsidan
|
|
- Linnéa Lundberg
- för 9 år sedan
- Visningar:
Transkript
1 Examensarbete Den personliga hemsidan -Mitt ställe på nätet Staffan Jonsson Ämne: Datavetenskap Nivå: B Kurskod: 1DV40E
2 Abstrakt Denna rapport handlar om utvecklingen av en personlig webbplats. Syftet är att framställa en webbplats som sedan kan tjänstgöra som en personlig sida på webben och innehålla en blogg med kommentarer, en bildtjänst, en sida med personlig information om sidinnehavaren samt en sida med bilder och information om tidigare projekt. Sidan utvecklades för att det fanns ett behov av en webbplats med dessa funktioner och för att lära och ge erfarenhet i att utveckla en webbplats från grunden. Sidan utvecklades i ASP.NET MVC och MS SQL Under projektets gång utvärderades även en ovanlig metod för lagring av bilder i databasen. Resultatet blev en webbplats där nya tekniker kan testas och utvärderas. Abstract This report deals with the development of a personal website. The objective is to produce a site that can then serve as a personal page on the Web and contain a blog with comments, an image service, a page with personal information about the owner of the site and a page with pictures and information about previous projects. This page was developed because there was a need for a site with these features and to teach and give experience in developing a website from scratch. This page was developed in ASP.NET MVC and MS SQL During the project I also tested an unusual method of storing images in the database. The result was a site where new technologies can be tested and evaluated. Staffan Jonsson - I -
3 Förord Projektet uppstod när jag ville utveckla en webbplats åt mig själv. Detta ville jag göra för att lära mig mer och få mer erfarenhet av alla delar i utvecklingen av en webbplats från grunden. Jag själv är alltså både uppdragsgivare och utvecklare i detta projekt. Projektet genomförs som examensarbete vid Linneuniversitetet och är på B-nivå och 15 högskolepoäng Jag vill tacka följande personer: John Häggerud för bra handledning av rapportskrivandet. Mats Loock för hjälp med ASP.NET MVC och C# vid knepiga problem. Staffan Jonsson - II -
4 Innehållsförteckning Abstrakt... I Abstract... I Förord...II 1. Introduktion Bakgrund Avgränsningar Mål Metod Utvecklingsmetod Metod - Inledning MVC - Historia ASP.NET MVC - Historia ASP.NET WebForms Webbapplikation - Metod ASP.NET MVC ett konkret exempel Bilder i databasen vs Bilder i filsystemet/databasen Bilder i databasen ett exempel Bilder i databasen slutsats MarkDown Google Prettify TwitterooCore Genomförande Inledning Design av webbplatsen Design av arkitekturen Funktioner Resultat Blogg Staffan Jonsson - III -
5 6.1.2 Bilder Portfolie Om mig Twitter Slutsats Diskussion Källförteckning Elektroniska källor Böcker Staffan Jonsson - IV -
6 1. Introduktion Detta projekt görs som ett examensarbete inom datavetenskap på webbprogrammeringsprogrammet vid Linnéuniversitet. Under projektets gång kommer det att utvecklas en webbplats som ska tjänstgöra som en personlig plats på webben. Meningen är att knyta olika sociala medier till sidan så användaren får en samlingsplats där användaren, vänner och besökare kan se information om användaren och vart användaren verkar på Internet. Det som ska undersökas under arbetets gång är hur man kan sammanställa data från olika sociala medier och presentera på ett relevant sätt. Då användaren till webbplatsen använder ett flertal olika sociala medier på nätet så var detta är ett intressant problemområde. Data från andra sociala medier kommer hämtas från bland annat öppna API:er (Ett API är ett slags gränssnitt som gör det möjligt att för ett program att hämta data från ett annat program.) Under arbetets gång kommer det även att undersökas om fördelarna och nackdelarna med att spara bilder och annan media direkt i databasen istället för att lagra dem på serverns filsystem. 1
7 2. Bakgrund Detta projekt utvecklas av och för mig, Staffan Jonsson som läser andra året på Webbprogrammeringsprogrammet vid Linnéuniversitet i Kalmar. Efter en del funderande föll valet på att göra en webbplats åt mig själv för att den webbplats som finns idag saknar många av de funktioner som krävs för en väl fungerande webbplats med möjlighet till interaktion. Sidan som finns idag är en statisk sida med lite personlig information och det som efterfrågades är en sida som tillåter mig att uppdatera sidan från ett administrationssystem istället för att uppdatera hela sidan och ladda upp den vilket är tvunget med en statisk sida. Anledningen till att valet föll på en ny webbplats åt mig själv är flera. Går att uppdatera från vart som helst via en inloggning. Tillåter besökare att interagera med webbplatsen. Använder en databas för att lagra information och på så sätt gör det möjligt att hämta ut data med vissa villkor, till exempel hämta de 10 senaste bloggposterna eller hämta alla bilder som ingår i kategori Jobb. Förutom en ny webbplats så är syftet med projektet att lära mig mer och få erfarenhet av utveckling av dynamiska webbplatser. Målgrupperna är två enkelt sett. Den första målgruppen är ägare/administratör som ska administrera webbplatsen, underhålla webbplatsen och vidareutveckla webbplatsen. Den andra målgruppen är besökare och här ingår vänner, bekanta och framtida arbetsgivare/kunder. Detta har viss inverkan på utvecklingsarbetet. När man utvecklar delarna som administratören ska använda så får man göra dem så som administratören vill ha det. När man utvecklar delarna som besökarna ska använda så man ta det i åtanke och kanske lägga lite mer tid på designen jämfört med administratörsgränssnittet. 2
8 2.1 Avgränsningar Vad denna rapport tar upp är utvecklingsarbetet av en webbplats och mina erfarenheter av detta. Rapporten tar även upp en utvärdering om lagring av bilder i databas. Utöver detta så tar rapporten även upp själva designarbetet, både på webbplatsen och arkitekturen och användningen av andra tekniker för att formatera text och så vidare. Då webbplatsen är utvecklad i ASP.NET MVC så handlar rapporten om utvecklingsarbetet med denna teknik. 3
9 3. Mål Målet med projektet är att utveckla en webbplats som möter mina krav och som kan fungera som min personliga webbplats på Internet. Krav: Webbplatsen ska följa webbstandard så att nuvarande och kommande webbläsare som följer standard kan visa sidan utan problem. Bloggposter: Skapa, ta bort, ändra, visa, kommentera. Bilder: Ladda upp, ta bort, kommentera. Portfolie: En avdelning där det ska finnas länkar och bilder till projekt jag varit med i. Om mig: En avdelning där jag presenterar mig själv. Twitter: Hämta mina statusuppdateringar, skapa statusuppdatering när en ny bloggpost skapas. Ett annat mål under projektet är att lära mig och utvecklas som webbutvecklare och att få erfarenhet av att utveckla dynamiska webbplatser. 4
10 4. Metod 4.1 Utvecklingsmetod Metod - Inledning Webbplatsen kommer att utvecklas i ASP.NET MVC. Detta är ett serversidespråk utvecklat av Microsoft. ASP står för Active Server Pages och det är en teknik för att skapa dynamiska sidor/applikationer på Internet. MVC står för Model-View- Controller (hädanefter benämnda modell, vy och kontroller) och är en programdesign som delar upp applikationen i tre delar. Figur 1 Uppbyggnaden av ASP.NET MVC 5
11 Modellen innehåller data och affärsregler. Detta betyder att när data ska skapas, ändras eller tas bort så är det här som ändringarna sker och valideras. Vyn innehåller presentationen. Det innebär att här så ska bara presentation av data ske. Ska data ändras eller tas bort så skickas denna instruktion till modellen via kontrollern. I en webbapplikation så kan man enkelt säga att här ska det bara vara visningslogik, det vill säga HTML och CSS. Kontrollern sköter interaktionen mellan modellen och vyn. Fördelen med denna design är att det blir väldigt lätt att dela upp applikationen på ett logiskt sätt och utan beroenden mellan lagren. Det blir då möjligt att till exempel byta ut hela vy-lagret utan att andra delar påverkas eller att byta ut hela datalagret. En annan sak som du får med MVC är en klar separation of concerns, vilket översatt blir nått i stil med ansvarsfördelning och är en filosofi inom programmering där man separerar koden i logiska delar. För att ta ett exempel så kan vi ta HTML och CSS. Har du ett HTML-dokument och ett CSS-dokument så sköter HTML-dokumentet strukturen och innehållet på sidan och CSS-dokumentet sköter stilen. Du kan ändra fritt i HTML-dokumentet och på så sätt ändra strukturen och logiken utan att stilen påverkas. Detta är möjligt för att strukturen/innehåller är separerat från stilen. De olika delarna kan dessutom ha flera lager i sig. Om vi tar mitt projekt som exempel så ser det ut så här i modellen: 6
12 Figur 2 De olika lagren i modellen Alla dessa lager ingår i modellen. Servicelagret är det lager som kontrollern har tillgång till. I detta lager så finns det ett antal metoder som kontrollern kan använda för att hämta, ändra eller ta bort data. Här sker också valideringen. Dataåtkomstlager är det lager där själva dataåtkomsten sker. Här står LINQ to SQLsatserna och dessa jobbar mot de automatgenererade klasserna som verktyget har skapat. 7
13 LINQ to SQL är ett lager som genereras när man väljer tabellerna i Visual Studio. Det är hjälpklasser och innehåller en kodmässig representation av databasstrukturen. Är det t ex varchar(50) på databasen så skapas det en klass med en medlemsvariabel av typen string. Databas är den fysiska databasen, i detta fall MS SQL MVC - Historia MVC-modellen togs fram av Trygve Reenskaug när han besökte Xerox PARC och första tillämpningen var i programspråket Smalltalk.[1] Meningen med arbetet var att minska gapet mellan användaren och modellen i datorn och skapa illusionen att användaren ändrade direkt i modellen. Figur 3 En illustration av MVC som visar hur användaren luras att tro att han påverkar modellen direkt Källa [1] På senare tid så har MVC-mönstret blivit väldigt populärt i webbutvecklingssammanhang då det oftast passar in just denna typ av utveckling. Det finns ett antal ramverk för flera olika språk som är anpassade för MVC designmönster, till exempel: Spring MVC Framwork Java Struts2 Java ASP.NET MVC -.NET 8
14 Cake PHP PHP Codeigniter PHP Joomla 1.5 (extensions) = PHP Zend Framworks PHP Django Python Ruby on Rails Ruby Alla dessa ramverk är uppbyggda på ungefär samma sätt med modeller, kontrollers och vyer ASP.NET MVC - Historia ASP.NET MVC 1.0 släpptes av Microsoft i mars 2009 men redan ett år tidigare hade det börjat dyka upp förhandsversioner. ASP.NET MVC utvecklades av Microsoft för att många hade frågat efter ett inbyggt stöd i ASP.NET som ger möjlighet att utveckla webbapplikationer enligt MVC-principen. Vad ramverket erbjöd var bland annat detta [2] (enligt chefsutvecklaren Scott Guthrie): Möjlighet till ren separation of concerns, testbarhet och testdriven utveckling. TDD (test driven development) är en teknik där man skriver tester för programmet innan man skriver koden. Meningen är att testet ska misslyckas först och sen skriver man koden för programmet så att testet lyckas. Efter det är man fri att omstrukturera koden (refactoring) för att få den mer lättläst, lättare att underhålla och effektivare och direkt se om testerna går igenom. Att alla kopplingar är simulerbara, det vill säga man kan simulera ett helt datalager med en egen klass eller köra controllers och undersöka resultatet utan att skapa en ASP.NET process. Underlättar vid enhetstestning. Väldigt lätt att byta ut delar och/eller skriva nya funktioner. Man kan till exempel byta ut vy-motorn eller bygga ut befintliga komponenter. En kraftfull URL-mappare för att skapa SEO-vänliga och rena urler. Nyligen släpptes ASP.NET MVC 2.0 (mars 2010) och detta tyder på att Microsoft arbetar med ramverket och kommer att fortsätta med det. 9
15 4.1.4 ASP.NET WebForms ASP.NET WebForms, eller ASP.NET 1.0 som det egentligen heter, släpptes av Microsoft i januari Det hade utvecklats som ett svar på de klagomål som vid den tiden fanns mot ASP. [3] Klagomålen rörde främst möjligheterna att separera presentation och innehåll. Vad Microsoft försökte efterlikna var att få utvecklingen av webbapplikationer mer lik utvecklingen av Windowsapplikationer. Detta gjordes via controllers, events och Viewstate. Meningen var att webbapplikationerna skulle uppföra sig mer som vanliga program trots att webben är stateless, det vill säga att webbservern behandlar alla anrop som oberoende och utan koppling till tidigare anrop. Jämfört med ASP kunde man nu dela upp sin kod i presentation och innehåll och man kunde skriva objektorienterade kod. Dessutom kompilerades nu applikationerna så de gick snabbare. ASP.NET WebForms utvecklas och stöds fortfarande av Microsoft och version 4.0 släpptes i April Webbapplikation - Metod ASP.NET MVC ett konkret exempel För att förstå hur en webbplats byggd i ASP.NET fungerar så kommer här ett exempel. Figur 4 Adressfältet i en webbläsare Så här ser en typisk adress ut i ASP.NET MVC. Blog Styr vilken kontroller som ska anropas. ShowPost Styr vilken metod som ska köras i kontrollern. 18 Är en parameter som skickas till metoden. Det går även att skriva egna routes. En route är en slags referens som beroende på vad som står i adressfältet skickar begäran till rätt kontroller. Det är på detta sätt möjligt att 10
16 ha till exempel adresser på olika språk som länkar till samma kontroller. Det är även möjligt att till exempel begränsa parametrar så det inte går att skicka in vilka värden som helst via reguljära uttryck. Så här ser metoden ut i kontrollern Blog Figur 5 En kontroller Här ser vi metoden och signaturen. Vad som händer är att kontrollern hämtar bloggposten och tillhörande kommentarer från databasen via servicelagret och lagrar dem i ViewData som är en slags Dictionary eller en samling av objekt. En Dictionary är en slags lista med nycklar, i detta fall BlogPost och Comments. För att plocka ut objekten man vill åt så använder man rätt nyckel. Metoden i servicelagret som controllern hämtar kommentarerna ifrån ser ut så här. Figur 6 En metod i servicelagret Här ser vi att det inte händer så mycket i servicelagret. Det är för att det inte finns något att validera. Det enda som händer är att metoden returnerar en lista med bloggkommentarer från dataåtkomstlagret. Figur 7 En metod i dataåtkomstlagret 11
17 Här ser vi hur dataåtkomsten sker. Tekniken som används heter LINQ to SQL. LINQ (language-integrated query, översatt blir det ungefär språkintregerad fråga) är ett slags frågespråk som tagits fram av Microsoft. Det fungerar som så att man skriver frågor mot databasen via LINQ to SQL-lagret med hjälp av LINQ. Denna kod kompileras sedan om till SQL-satser som hämtar data från databasen. Fördelen med detta jämfört med att skriva SQL-frågorna själv är att LINQ-uttrycken mer påminner om C#-kod. LINQ används inte bara till databas-åtkomst utan det går även bra att använda på listor, arrayer och strängar till exempel. Att skriva uttrycken i LINQ minskar det språkliga gapet mellan den övriga koden och dataåtkomsten i databasen. I detta fall så plockar vi ut alla poster i tabellen BlogComments där BlogPostID överrensstämmer med parametern som skickas in och sparar resultatet i en lista som sedan returneras. Slutligen är det bara vyn kvar och den ser ut så här: Figur 8 En vy Det som sker överst är att objekten typas om till rätt typ av objekt. Sedan skrivs bloggposten ut. Efter det så körs en loop som skriver ut varje kommentar som finns för bloggposten. Som ni ser så är det enkel html blandat med lite asp-taggar. Detta är en av skillnaderna med ASP.NET MVC jämfört med ASP.NET Webforms. Du får mer kontroll över html-koden som skapas. Resultat ser ni nedan: 12
18 Figur 9 Resultatet i webbläsaren Detta är lite kortfattat om hur en ASP.NET MVC applikation fungerar. Klienten anropar en kontroller som hämtar eller skickar rätt data till modellen och skickar slutligen klienten en vy. Om vi går tillbaka till servicelagret igen så gjorde det inte så mycket i detta exempel. Om vi tar ett annat exempel, t ex när man ska skicka in någon slags data till datalagret så blir det nödvändigt med validering. Om vi tar ett exempel där en bloggpost ska skapas. Så här ser controllern ut: Figur 10 En kontroller som tar emot POST-data 13
19 Längst upp ser vi ett attribut som gör så att metoden accepterar POST-anrop. Ett POST-anrop är en del av http-protokollet och det betyder att ett anrop sker som vanligt men att ett antal extra rader skickas med till skillnad mot ett GET-anrop där det istället står i själva adressen. Sen kommer metoden med metodsignaturen. Argumenten i signaturen överensstämmer med fältens id i formuläret som anropar metoden. Sedan skapas ett objekt av typen BlogPost och objektet tilldelas värdena som kom från formuläret. Efter det så skapas ett nytt objekt av typen ValidationResult som ska innehålla valideringsresultatet. Servicelagret anropas och BlogPost-objektet som skapades skickas in. Metoden i servicelagret som tar emot objektet. Figur 11 En metod i servicelagret Här tas bloggpost-objektet emot och skickas sen till metoden som sköter valideringen. Om det går bra så skickas objektet vidare till dataåtkomstlagret där det sparas i databasen. Om det inte går bra så anropas inte dataåtkomstlagret. 14
20 Figur 12 Metod som sköter validering En ganska enkel funktion som går igenom objektets värden och validerar dem. Om ett värde är fel så läggs det till ett felmeddelande i listan och längst ner kollar den om det finns några felmeddelande och sätter isvalid till true eller false. Figur 13 Metod i dataåtkomstlagret När valideringen är klar så returneras valideringsobjektet till kontrollern. I kontrollern kan man sen se hur valideringen gick och om det inte gick bra så skickar man valideringsobjektet till vyn och skriver ut felen. 15
21 Figur 14 Koden i vyn som skriver ut valideringsresultatet Detta är lite enkelt hur en ASP.NET MVC applikation fungerar Bilder i databasen vs Bilder i filsystemet/databasen En ganska vanlig funktion på en webbplats är möjligheten att ladda upp bilder och kommentera dessa. Det vanliga förfaringssättet är då att spara bilden på serverns filsystem och samtidigt spara en referens i databasen om bilden så att det blir möjligt att koppla kommentarer till den. Något som dök upp tidigt i planeringsstadiet var att undersöka möjligheten att spara bilden i databasen istället och på så sätt undvika att lagra information på två ställen och få en tydlig uppdelning av webbplatsen. 1. Webbapplikationen 2. Data Detta är inget nytt i sig och det finns flertalet argument mot denna lösning. Argumenten mot denna lösning är bland annat: Databasen belastas hårdare med mer data Bilden lagras binärt och kan inte visas med ett externt program. Databasen blir stor. Prestandan blir sämre Det bestämdes att tekniken med att lagra bilderna i databasen skulle testas och användas i projektet. De två största problemen torde vara prestanda och utrymme på databasen. 16
22 Efter samtal med webbhotellet där webbplatsen ska ligga så framkom det att databas och webbapplikation delade utrymme. Det betyder utrymmesfrågan inte spelar någon roll. För att testa prestandan skapades en testsida med åtta bilder. Sedan användes Firebugtillägget[9] för att mäta resultatet, det vill säga tiden det tog att ladda sidan i webbläsaren. Testet genomfördes ett antal gånger för att se att laddningstiderna inte skulle avvika så mycket mellan testerna. Det upptäcktes att det bara skilde några hundradelar mellan testerna på en total tid på runt två sekunder så testerna bedömdes konsekventa och testerna inleddes. Om vi kollar på resultaten för testerna utan cachning på webbservern påslagen så ser vi följande: 3 Utan cachning 2,5 2 1,5 1 Utan cachning 0,5 0 Figur 15 Visar laddningstider utan cachning på webbservern Som ni ser så skiljer det inte så mycket mellan databas och filsystem. Snittet för databas blev 2,23 sekunder och snittet för filsystemet blev 2,11 sekunder. Om vi nu aktiverar cachning på webbservern så blir resultaten så här: 17
23 2,5 Med Cachning 2 1,5 1 0,5 Med Cachning 0 Figur 16 Visar laddningstider med cachning på webbservern Som ni ser så sjunker tiden för databasen dramatiskt medan tiden för filsystemet knappt förändras. Snittet för databasen blev nu 1,07 sekunder och för filsystemet blev 2,08 sekunder. Förklaringen till detta är hur cachningen fungerar. Om vi tar exemplet med bilder från databasen så cachas själva resultatet av databasanropet i serverns primärminne för att sen snabbt kunna skicka datan när klienten begär den, i detta fall bilden. I fallet med filsystemet så cachas bara själva vyn, det vill säga själva html-koden. Sedan när HTML-koden ska renderas på klienten och en img-tag påträffas så sker ett anrop till servern och servern går in och läser filen från filsystemet. Skillnaden blir hur själva hämtningen görs och hur man kan slå på cachning på enskilda metoder i kontroller-lagret. Givetvis tar detta minne från servern men allt detta sköts dynamiskt. Finns det ledigt minne så används det, behöver servern minnet så kastas cachen bort Bilder i databasen ett exempel Här följer ett enkelt exempel på hur det fungerar när man har bilder i databasen och hur det funkar med cachning. Om vi tittar i en vy så ser vi själva img-taggen 18
24 Figur 17 En img-tagg som pekar på metoden som hämtar bilden ur databasen Detta är en vanlig img-tagg. Det som är lite speciellt är att den länkar inte till en fysisk fil utan länkar istället till en metod i en kontroller och skickar med en parameter. /Image/ - använd ImageController /ShowImage/ - använd ShowImage-metoden /10 Inparamteter, i detta fall så begärs bild nummer 10. Figur 18 Metoden som hämtar bilden ur databasen Här ser vi hur metoden är uppbyggd och hur cachning är påslaget. [OutputCache(Duration=3600, VaryByParam= id )] är ett attribut som gör så att metoden cachar sina resultat. Här är det inställt så att resultatet skiljer sig ifrån beroende på vad parametern id är satt till. Finns inte resultatet av databasfrågan på cachen (webbserverns primärminne) så hämtas datan för bilden från databasen och bildresultatet skapas. Finns resultatet i cachen behöver inte databasen anropas utan resultatet kan direkt skickas ut då resultatet redan finns i serverns primärminne. Detta är ett bra sätt att minska risken att databasen skulle få börja jobba riktigt hårt om en bild till exempel skulle bli länkad på ett populärt forum. 19
25 Figur 19 Metoden i dataåtkomstlagret för bilder Här ser vi att man hämtar ut en bild som vilken data som helst. Det man kan tänka på är att bara hämta det man behöver i databasen. Om man till exempel vill hämta en lista med bild-id för alla bilder som finns i databasen så behöver man inte hämta hela databasobjekten utan bara plocka ut det man behöver, i detta fall en lista med bild-id. Figur 20 Visar en metod som hämtar ut viss data ur en databastabell Här returneras enbart en lista med heltal istället för hela Image-objekt. Cache-funktionen funkar så att om servern behöver minnet så kastas cachen bort. Detta gör att man inte behöver göra så mycket mer än markera metoderna som man vill cacha så sköter ramverket och webbservern resten Bilder i databasen slutsats Eftersom de flesta nackdelar får anses antingen utraderade, alternativt minimerade, så bestämdes det att webbplatsen skulle använda databaslagring av bilder. Med den mängd trafik och de antal bilder som kommer att finnas på webbplatsen så kommer det inte bli några problem, varken utrymmesmässigt eller prestandamässigt. Detta beslut togs på grund av följande: Tydlig uppdelning applikation/data med all data på samma ställe. Enklare kod för bilduppladdning istället för separata funktioner som sparar till filsystemet och samtidigt sparar referenser i databasen. Stödet med cachning. Lära mig nya tillvägagångsätt. Flexibel webbplats som är lätt att flytta då alla data som skapats finns på ett och samma ställe, i databasen. 20
26 4.2.5 MarkDown Då man skapar bloggposter och kommentarer så vill man oftast formatera texten med bland annat rubriker, radbrytningar osv. Ett alternativ är att skriva html-kod direkt när man skapar en bloggpost eller kommentar. Detta kan vara osäkert då en illvillig person kan skriva in javascript-taggar för att genomföra XSS (cross site scripting). Detta betyder att förövaren kan få javascript att exekveras för alla som besöker sidan. Detta alternativ valdes bort, mycket på grund av säkerhetsaspekten. ASP.NET MVC ramverket är även inställt så att man inte kan posta potentiellt farliga taggar per default. Försöker man till exempel posta <h1>rubrik</h1> via ett formulär så kastar ramverket ett undantag. Istället valdes ett markup-språk för att kunna formatera texten i bloggposter och kommentarer. Valet föll på MarkDown[4] då detta är en fri teknik med stöd i de flesta språk. Ett exempel på hur det fungerar: Säg att vi vill skapa en ny blogg-post med en rubrik, en lista och två paragrafer. Vi skriver då följande i formuläret: Figur 21 Exempel på MarkDown kod Texten som sparas i databasen är vanlig text men när applikationen hämtar bloggposten och skickar det till vyn för visning så körs texten genom MarkDown och det skapas html-kod. 21
27 Figur 22 Metod i servicelagret som skapar HTML-kod av MarkDown-kod Resultatet blir detta: Figur 23 Resultat i HTML Slutligen renderas html-koden i webbläsaren och slutresultatet blir det här: Figur 24 Resultat i webbläsare Det finns även stöd för att skapa länkar, bilder och så vidare. På detta sätt så får man en säker hantering av indatan samtidigt som det ges stor möjlighet att formatera texten. Dessutom ges det möjlighet till mer avancerat formulär om man vill använda det med en WYSIWYG-funktion. (What you see is what you get, betyder att formuläret mer 22
28 liknar en editor där man direkt ser hur texten kommer att se ut och har möjlighet att markera text och sen välja formatering liknade ordbehandlingsprogram) Google Prettify Då ett av användningsområdena på bloggen ska vara utveckling och då främst webbutveckling och diverse kodsnuttar ska postas och diskuteras så vore det bra med någon slags funktion som gör kod mer lättläst. Valet föll på Google Prettify[5] som är ett javascript-bibliotek som formaterar och färgar kodsnuttar. Att valet blev just Google Prettify var att det var enkelt att använda och att all modifiering sköttes av javascript. Ett exempel: Antag att vi vill posta en kodsnutt från applikationen. I Visual Studio ser det ut så här: Figur 25 En metod föreställandes kod i Visual Studio 2008 Kopierar jag den koden och postar den i en ny bloggpost med fyra mellanslag innan koden (så MarkDown lägger till <code>-taggar runt koden) så blir resultatet detta: 23
29 Figur 26 Kod postad på bloggen utan färgkodning Formateringen blir rätt men det blir ganska svårt att läsa koden. Det vore bättre om texten fick färgkodning liknande den i Visual Studio och det är precis detta Google Prettify gör. Det man gör är att länka in Google Prettifys javascript. 24
30 Figur 27 Kod postad på bloggen med färgkodning av Google Prettify. Mycket lättare att läsa och resultatet påminner mer om koden. Det fungerar så att javascriptet går igenom dokumentet och ledat efter <code>-taggar som den sen behandlar. Efter Google Prettify behandlat html-koden ser den ut så här: Figur 28 Exempel på HTML-kod för Google Prettify Som ni ser så lägger Prettify på <span>-taggar i texten med olika klassnamn som sen färgas. Prettify stödjer ett flertal språk, bland annat C, C++, C#, Java, Python, Bash, SQL, HTML, XML, CSS, Javascript TwitterooCore Ett av målen med webbplatsen var att få någon slags koppling mot sociala medier, och då främst Twitter[10] inledningsvis. 25
31 Twitter är en mikroblog, vilket betyder att man är begränsad till 140 tecken. Det finns även möjlighet att märka sina meddelanden med ämnen eller taggar. Det fungerar så att om man vill skriva ett inlägg om t ex Sveriges Television så skriver man ordet #svt i meddelandet. Då märks meddelandet och andra som bevakar ämnet ser det. På detta sätt är det möjligt att nå en stor publik om man skriver om populära ämnen. Twitter ger även möjlighet till followers, det vill säga att man följer någon. Detta betyder att de som valt att följa någon får en lite påminnelse, oftast direkt via någon twitterklient i telefonen eller på datorn. Meningen var att skapa twitter-meddelanden automatiskt när man skapar en ny bloggpost. På detta sätt kan intresserade direkt få information om den nya posten via twitter. Ett exempel: Antag att Microsoft just släppt en ny teknik. Tekniken är intressant för många inom den branschen. Bloggägaren skriver ett blogginlägg om tekniken med ett litet exempel och sina tankar om det och samtidigt så skapas det ett twitter-meddelande med taggar som stämmer med tekniken och en länk till sin bloggpost. Nu kan intresserade och de som följer bloggägaren direkt få ett meddelande om den nya bloggposten och en länk. Tycker de att den är bra så kanske de retweetar, vilket betyder att de postar om meddelandet för att ge feedback eller bara för att de tycker att den är bra. Då kan flera tipsas om inlägget och bloggposten når en större publik. Detta sker oftast väldigt fort, mycket snabbare än till exempel Google eller andra sökmotorer hinner indexera informationen. Valet föll på TwitterooCore[6] för att det är ett väldigt enkelt ramverk. Ett kort exempel Figur 29 Exempel på koppling till Twitter via TwitterooCore Som ni ser så är det väldigt enkelt att skapa nya tweets (twittermeddelande). Det finns även planer att utveckla stöd för LINQ to Twitter[7] som är ett ramverk som tillåter att man ställer frågor mot Twitter liknande de som används i dataåtkomstlagret. 26
32 Figur 30 Exempel på kod med LINQ to Twitter På detta sätt blir Twitter mer som en slags databas där man går in och hämtar användare och meddelande som man sen kan använda på webbplatsen. 27
33 5. Genomförande Inledning När projektet påbörjades så delades arbetet upp i tre delar. 1. Design av webbplatsen 2. Design av arkitekturen 3. Funktioner Designen av webbplatsen är hur sidan ser ut och uppför sig för användaren. Design av arkitekturen är hur själva koden och applikationen är uppbyggd och uppdelad. Funktioner är vilka funktionalitet som ska finnas på webbplatsen och hur den ska fungera Design av webbplatsen Vad som eftersträvades av designen av webbplatsen var en enkel och snygg design. Då det finns många gratis och fria designer för webbplatser på internet så bestämdes det att designen skulle baseras på en sådan för att spara tid och få ett bra resultat. Till slut föll valet på en mall från andreasviklund.com[8] som är en sida med gratis mallar för webbplatser. Mallen som valdes var Daleri Single. 28
34 Figur 31 Daleri Single mall Mallen modifierades och placerades i en masterpage, en slags mall för webbplatsen som kommer att användas på flera platser. Då det var tänkt att webbplatsen även skulle ha en sidopanel så mallen modifierades för detta. När mallen var klar bestod masterpagen av sidhuvud, menyn och sidfoten. Dessutom fanns det två stycken contentplaceholders, en för själva innehållet där alla bloggposter, formulär, kommentarer, bilder och så vidare så vara och en för sidopanelen. Figur 32 Uppbyggnad av webbplatsen 29
35 När själva masterpagen är skapad så följer denna med alla nya vyer man skapar. När man väljer att skapa en ny vy så får man detta: Figur 33 Exempel på en ny vy Sen kan man fylla de olika områdena med innehållet man vill ha. Det går även att ha olika masterpages om man vill med i detta projekt så är masterpagen samma. Man kan även länka in css(stilmallar) och javascript i masterpagen med fördel så behöver man bara göra det på ett ställe. Efter en del justerande av mallen för att få den mer lik mina önskemål så började designen bli klar. Målet var att få en enkel och elegant design där innehållet ligger i fokus. Ett mål var också att utseendet inte skulle förändras mellan områdena på webbplatsen utan allt innehåll ska hamna på samma ställe oavsett var man är. Detta gjorde jag för att det var meningen att det skulle vara lätt att se informationen och att besökaren inte ska behöva ögna runt och leta efter informationen. Sidopanelen är tänkt att användas till hjälp och tips, till exempel vid formulär så kan det stå hur många tecken man får skriva och hur man formaterat texten enligt MarkDown Design av arkitekturen Efter att designen av webbplatsen var klar så var det dags att börja med designen av arkitekturen. Eftersom jag varit inblandad i ett par tidigare projekt i ASP.NET MVC så hade jag en del erfarenhet och idéer. Dessa gick ut på att försöka dela upp projektet i delar så mycket som möjligt. En annan sak som bestämdes var att modellen skulle vara ett helt eget projekt och alla olika databasobjekt hade en egen klass för servicelagret och dataåtkomstlagret. Till exempel så finns det ett bloggservicelager och ett bloggdataåtkomstlager, ett bildservicelager och ett bilddataåtkomstlager och så vidare. Lösningen med att hela modellen var ett eget projekt gör det också möjligt att kompilera modellprojektet utan att applikationsprojektet påverkas. Håller man på att utveckla i modellen och man får kompileringsfel så har man fortfarande kvar en 30
36 komplierad fil från tidigare kompilering så man kan fortsätta med applikationen. När projekten växer så är det också en fördel då man bara behöver kompilera den delen som man jobbar med. En annan fördel med separata projekt är att de går att återanvända. Jag skulle kunna skrota hela webbapplikationen och skriva en ny och samtidigt ha kvar modellen eller skriva en till applikation som använder samma modellprojekt. För att ta ett exempel så skulle jag till exempel kunna skriva en bildapplikation med mer avancerade funktioner för just bilduppladdning, kommentarer, taggning av bilder och så vidare. Figur 34 De olika klasserna och lagren i modellen Den turkosa delen i figur 35 är dataprojektet. 31
37 5.1.4 Funktioner När webbplatsen och arkitekturen var designad så började jag titta på hur jag skulle implementera funktionerna som webbplatsen skulle ha. Eftersom bloggen var själva framsidan så bestämdes det att arbetet skulle börja där. Utvecklingsprocessen är den att först skapas en kontroller, i detta fall BlogController. Sedan skapar man en vy och modifierar vyn till hur man vill ha den. Här är det lättare om man använder sig av statiska bloggposter (hårdkodat i html-koden) och placerar ut rubriker, text, datum och så vidare som man vill ha det. När man är klar med utseendet så är sidan statisk, det vill säga innehållet förändras inte utan står hårdkodat i vyn. När man är nöjd med hur den statiska sidan ser ut så skapar man tabellerna i databasen. Här får man tänka till vad man vill ha med i en bloggpost och hur fälten ska se ut och vilka format och hur stora fälten behöver vara. Nu kan man skapa LINQ to SQL-klasserna via ett inbyggt verktyg i Visual Studio. Verktyget skapar klasserna som behövs och man har nu möjlighet att skapa objekt av typen bloggpost i koden. Objekten man skapar är en översättning av databasobjekten till C#. Nu när klasserna för databasen är skapad så kan man börja med att skriva dataåtkomstlagret. Det vanliga är att man skapar metoder för att Skapa (Create), Läsa (Read), Uppdatera (Update) och Ta bort (Delete). När detta är klart så har man vad som kallas CRUD-funktionalitet. (Create, Read, Update och Delete). Oftast räcker det inte med bara en metod per funktion utan man kanske vill ha ett par olika för Read osv, till exempel: GetAllBlogPosts GetBlogPost(int id) GetBlogPostsByTags(List<string>) GetTenLatestBlogPosts Nu är det dags att skriva servicelagret. Om man snabbt vill komma vidare så kan man skippa validering och sådant för tillfället här. Efter att metoderna i servicelagret är klara så är man klar för att använda servicelagret i kontrollern man skapade i början. I kontrollern kan man nu hämta data från databasen och skicka det till vyn. I vyn så kan man nu börja sätta ut informationen från databasen istället för den hårdkodade i html-koden. 32
38 Detta är det arbetsätt som jag upplevt som smidigast. Arbetssättet skiljer sig inte så mycket mellan de olika funktionerna man ska lägga in heller. Vad som är bra är bland annat att man snabbt kan få upp en funktion utan att modellera hela databasen först. Nu skapar man de tabeller som behövs under tiden man utvecklar. Detta gör att man blir väldigt flexibel i utvecklingsfasen då man kan komma på nya idéer och implementera dem under tiden. Verktyget för att skapa dataåtkomstklasserna stödjer detta utvecklingsätt då det är lätt att lägga till nya tabeller i en redan befintlig klass. Ovanstående utvecklingsmetod användes genom hela projektet och den skilde sig inte mycket mellan funktionerna. Vissa funktioner krävde mer arbete i databasen och vissa funktioner krävde mer arbete i själva applikationen men överlag så följdes utvecklingsprocessen i hela projektet. Testdriven utveckling tillämpades inte i stor utsträckning i projektet. Detta berodde på utvecklingssättet som användes. Då man utvecklar en sida från scratch som gjorts här så vet man inte exakt vad och hur man ska testa när man börjar utveckla en funktion. Testdriven utveckling har definitivt sin plats i webbutveckling men då gäller det främst applikationer där man har en klar och tydlig kravlista och specifikation när utvecklingen påbörjas. Då kan man skriva test innan funktionerna utvecklas och veta vad man ska testa. 33
39 6. Resultat Blogg Det är här jag har kommit längst med arbetet då jag lagt mest tid här. Meningen var att bloggen skulle utgöra själva grunden på webbplatsen. Alla mål inom den här avdelningen uppfylldes. Det går att skapa blogginlägg, ta bort blogginlägg, kommentera blogginlägg, formatera blogginlägg med bilder, listor, rubriker, stycken, kodsnuttar och så vidare, ta bort kommentarer. Nedan kommer ett par bilder: Figur 35 Resultat blogg 34
40 Figur 36 Resultat kommentarer 35
41 Figur 37 Resultat administrationsgränssnitt Bilder Inom detta område har alla mål inte uppfyllts. Det som uppfyllts av målen är att det går att ladda upp bilder. Dessa bilder går sedan att visa genom den speciella metoden som beskrivs tidigare i rapporten under delen Bilder i databasen ett exempel. Vad som inte finns med när den här rapporten skrivs är möjligheten att ta bort bilder och möjlighet till att kommentera bilder. Det finns möjlighet att ta bort bilder genom att direkt ta bort posten i databasen. 36
42 Figur 38 Tabellen för bilderna i databasen Portfolie Denna avdelning är inte klar vid skrivande stund. Det finns en sida förberedd men det som saknas är en sammanställning av tidigare projekt. Meningen var också att denna avdelning ska fyllas på i framtiden Om mig Denna avdelning är inte klar vid skrivande stund. Även här finns en förberedd sida men innehållet saknas Twitter Detta mål är delvis klart. Vissa tester har genomförts med lyckat resultat men vid skrivande stund så finns det ingen funktionalitet som kopplar webbplatsen mot Twitter. Det finns viss kod förberedd som togs fram under testningsfasen. 37
43 6.1.6 Slutsats Som man kan läsa tidigare under detta avsnitt så blev inte alla mål uppfyllda men jag tycker ändå att jag har nått resultat. Mycket utav det som utvecklats blev som det var planerat innan. Under arbetets gång har jag dessutom lärt mig mycket, både teknikmässigt och designmässigt. 38
44 7. Diskussion Då ett av målen var att utveckla det mesta själv tar allt längre tid. Det hade gått mycket snabbare att välja ett CMS-system, så som Joomla eller Wordpress, och snabbt fått samma resultat som jag nått nu. Detta var dock inget alternativ då ett annat mål var att lära sig och få erfarenhet av själva utvecklingsarbetet. Under arbetets gång har jag lärt mig mycket och fått möjlighet att testa nya tekniker. Dessutom har jag fått erfarenhet av alla delar i att utveckla en specialiserad webbplats. Då jag utvecklat projekt i både ASP.NET WebForms och ASP.NET MVC så kan jag också göra en jämförelse mellan ramverken utifrån mina erfarenheter. Jag föredrar ASP.NET MVC över ASP.NET WebForms och detta beror på detta: Ramverket hjälper till med att få koden väldigt strukturerad. Det blir lätt att hitta i koden. Alla controllers ligger på ett ställe osv. HTML-koden och views blir mycket mer lättlästa och man har större kontroll över vilken HTML-kod som genereras. Ramverket har inbyggt stöd för enhetstestning med integrerat stöd utvecklingsverktyget (Visual Studio). Lättare att skapa mer logiska sökvägar i webbapplikationen. Enkelt att byta ut kod och bygga ut i en webbapplikation. Lättare att visualisera flödet i webbapplikationen. Detta är fördelarna som jag upplever som störst i jämförelsen mellan ASP.NET MVC och ASP.NET WebForms. Då jag jobbat själv så har jag verkligen fått insyn i alla områden. Jobbar man i grupp så finns risken att man inte får samma möjlighet att sätta sig in i alla delar. Under arbetets gång har jag lärt mig att allt tar längre tid än vad man har tänkt sig. Det var väldigt svårt att sätta upp en tidsplan då jag vid projektets början inte visste hur vissa bitar skulle lösas. Lösningen blev att sätta upp en tidsplan som var väldigt flexibel och inte så detaljerad. Detta har funkat bra för mig även om vissa bitar inte hunnits med. Överlag är jag nöjd med resultatet och tycker att det är ett lyckat projekt. Meningen är att vidareutveckla webbplatsen. Först och främst är det tänkt att de funktioner som inte hanns med ska färdigställas. Senare är det tänkt att webbplatsen ska vara ett slags 39
45 testområde där nya tekniker testas och utvärderas. Det finns många tekniker och idéer att prova och denna webbplats är en perfekt testgrund. Sidan kommer definitivt att ligga skarpt på nätet i framtiden men inte med samma syfte som det var tänkt från början. Från början var det tänkt att webbplatsen skulle bli mitt ställe på internet. Som det ser ut nu så lutar det åt att denna webbplats får ligga parallellt med en annan sida utvecklad i Wordpress. Anledningen till detta är för att det skulle ta så lång tid och kräva mycket arbete för att få samma funktionalitet på den utvecklade webbplatsen. Erfarenheterna jag fått under arbetets gång hoppas jag kunna använda inom mitt framtida yrke som webbutvecklare. 40
46 8. Källförteckning 8.1 Elektroniska källor [1] Tryggve M. H. Reenskaug, MVC Xerox Parc Tillgänglig www: [ ] [2] Scott Guthrie, ASP.NET MVC Framework. Tillgänglig www: [ ] [3] Michiel Van Otegem, Interview with Scott Guthrie, creator of ASP.NET. Tillgänglig www: [ ] [4] John Gruber, Markdown Tillgänglig www: [ ] [5] Mike Samuel, Google Code Prettify Tillgänglig www: [ ] [6] Eric Willis, RareEdge, Twitteroo Tillgänglig www: [ ] [7] LINQ To Twitter Tillgänglig www: [ ] [8] Anderas Viklund, andreasviklund.com Tillgänglig www: [ ] [9] Firebug Tillgänglig www: [ ] [10] Twitter Tillgänglig www: [ ] 41
47 8.2 Böcker Walther, Stephen, (2009). ASP.NET MVC Framework Unleashed. Pearson Education. 42
48 Växjö / Kalmar Tel dfm@lnu.se Lnu.se/dfm 43
Webbprogrammering. Sahand Sadjadee
Webbprogrammering Sahand Sadjadee Agenda Webb The World Wide Web (WWW) is a network of online content that is formatted in HTML and accessed via HTTP. The term refers to all the interlinked HTML pages
Webbprogrammering - 725G54 PHP. Foreläsning II
Webbprogrammering - 725G54 PHP Foreläsning II Agenda Serverskript PHP Validering av data med serverskript Säkerhet Lab 2. Live coding Serverskript Kör ett program på servern och resultatet skickas till
Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer.
Informationsinfrastruktur 7.5 hp Mattias Nordlindh Inledning Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer. Dokumentet består av
Avancerade Webbteknologier
Projektledning, Business Knowledge Användbarhet & Layout Avancerade Webbteknologier Lkti Lektion 1 Kommunikation Tobias Landén tobias.landen@chas.se Avancerade webbteknologier del 1 (4 KY poäng) Syfte
Mål med lektionen! Repetera och befästa kunskaperna.
Entity Framework Mål med lektionen! Repetera och befästa kunskaperna. Vad lektionen omfattar Repetera och gå igenom kursen lite snabbt. Vilka problem vill vi lösa? Vi arbetar med Webbapplikationer Vi kommer
CMS. - Content management system
CMS - Content management system Agenda CMS Server, webbhotell och FTP Wordpress, ställ mycket frågor Om vi hinner - Snabb genomgång av CMS - uppgiften Nu & Då Sidor med bara HTML och CSS kräver manuell
MANUAL FÖR JÄGAREFÖRBUNDETS KRETSAR
MANUAL FÖR JÄGAREFÖRBUNDETS KRETSAR I följande dokument hittar ni information om hur ni administrerar er nya hemsida. Manualen går endast igenom grundläggande administration. För mer avancerad redigering
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
Laboration 3 i kursen Produktion för tryckta medier och webb: Webbplatsproduktion med ett publiceringssystem
Laboration 3 i kursen Produktion för tryckta medier och webb: Webbplatsproduktion med ett publiceringssystem Målsättning Att bygg upp en komplett webbplats i ett publiceringssystem. Platsen ska vara snygg,
MANUAL FÖR JÄGAREFÖRBUNDETS KRETSAR
MANUAL FÖR JÄGAREFÖRBUNDETS KRETSAR I följande dokument hittar ni information om hur ni administrerar er nya hemsida. Manualen går endast igenom grundläggande administration. För mer avancerad redigering
Asp.net mvc intro PER KVARNBRINK, 2015-01-27
Asp.net mvc intro PER KVARNBRINK, 2015-01-27 Byggstenarna i ett mvc-projekt 1. Databasen 2. Datamodellen (M:et) 3. Entity framwork 4. Routing 5. Kontroller (C:et) 6. Vy (V:et) 7. Vymodeller 8. Troligen
ASP.NET MVC. Copyright Mahmud Al Hakim mahmud@dynamicos.se http://www.webbacademy.se. Innehåll
ASP.NET MVC Copyright Mahmud Al Hakim mahmud@dynamicos.se http://www.webbacademy.se Innehåll Introduktion till MVC Controller Action-metoder Views Arbeta med Layout-sidor och sektioner Route konfiguration
MANUAL FÖR JÄGAREFÖRBUNDETS KRETSAR
MANUAL FÖR JÄGAREFÖRBUNDETS KRETSAR I följande dokument hittar ni information om hur ni administrerar er nya hemsida. Manualen går endast igenom grundläggande administration. För mer avancerad redigering
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,
SLUTRAPPORT RUNE TENNESMED WEBBSHOP
SLUTRAPPORT RUNE TENNESMED WEBBSHOP -05-30 Abstrakt Under 10 veckor har jag och Oskar Norling arbetat med att ta fram en webbshop-applikation till företaget Rune Tennesmed i Kalmar. I denna rapport tänker
Elektronisk publicering TNMK30
Elektronisk publicering TNMK30 Förra gången Färger CSS - layout och styling Lite repetition (X)HTML och SEO Att separera innehåll från presentation. CSS, layoutproblem med float och boxar CSS, layoutproblem
Ö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
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
Varför ska man använda ett CMS? Vilka är fördelarna och är det alltid bra? Kattis Lodén 2010-03-18
Varför ska man använda ett CMS? Vilka är fördelarna och är det alltid bra? Kattis Lodén 2010-03-18 Innehåll Inledning... 3 Fakta... 4 Innehåll... 4 Texthantering... 4 Granskning och versionshantering...
CMS, optimerade för programmerare Eller hur kan ett sådan skapas.
Examensarbete CMS, optimerade för programmerare Eller hur kan ett sådan skapas. David Strömbom 2011-05-20 Ämne: Datavetenskap Nivå: B Kurskod: 1DV40E Abstrakt Denna rapport fokuserar på att undersöka några
Webbprogrammering TDDD52
Webbprogrammering TDDD52 ERD MySQL+PHP. Förra gången Idag Javascript jquery Progressive enhancement XML & AJAX Lab 4 och 5 Sammanfattning av kursen. Om databastabeller varje tabell ska beskriva en typ
Content Management System. Publiceringssystem
Content Management System Publiceringssystem Vad är ett Content Management System (CMS)? Ett verktyg för att separera innehåll från presentation Skapa webbsidor utan att kunna html Låt många skapa sidor
Elektronisk publicering TNMK30
Elektronisk publicering TNMK30 Förra gången Usability & interaktionsdesign Projektintroduktion Bildbehandling. Byte av handledare Istället för Martin Johansson Annsofi Pettersson, annpe655@student.liu.se
Rune Tennesmed. Oskar Norling 1DV430. Individuellt Mjukvaruutvecklingsprojekt 1DV430 Webbprogrammerare H12 Oskar Norling
Rune Tennesmed Oskar Norling Individuellt Mjukvaruutvecklingsprojekt Webbprogrammerare H12 Oskar Norling 2012-05-30 Abstrakt Denna rapport handlar om mitt mjukvaruutecklingsprojekt som jag och en klasskompis
Webbprogrammering, grundkurs 725G54
Webbprogrammering, grundkurs 725G54 Lab 4, 5 ERD PHP + MySQL Återblick Idag Sessions PHP och MySQL för samband Lab 6 725G54: Genomgång projektuppgift Avstämning av kursmål Om sessions På IDA måste ni göra
Kursplanering Utveckling av webbapplikationer
Kursplanering Utveckling av webbapplikationer Fakta Ämne Programmering Poäng 40 Yh-poäng Kurskod YSYS-WEB Klass Systemutvecklare.NET Syfte och koppling till yrkesrollen För att kunna arbeta som systemutvecklare
VAD GÖR DU / VEM ÄR DU?
INNEHÅLL Vad blir din roll Databaser vad är och varför Terminologi Datamodellering vad är och varför Utvecklingsprocessen SQL vad är det Data / Information / Kunskap Kapitel 1 delar av. Praktisk Datamodellering
TUTORIAL: SAMLING & KONSOLL
TUTORIAL: SAMLING & KONSOLL Denna tutorial är en fortsättning på den tutorial där vi skapade klassen Car och sedan objekt av denna klass. Vi skall nu lära oss att lagra dessa objekt i en samling och även
MVC med Javascript och Ajax. Filip Ekberg
MVC med Javascript och Ajax Filip Ekberg MVC med Javascript och Ajax Lektion 7 ASP.NET MVC mail@filipekberg.se Veckans mål ASP.NET MVC Repetition & Diskussion Vad är MVC? Vad är ASP.NET MVC? Hur skapar
Projekt Foreläsning VI
Webbprogrammering - 725G54 Projekt Foreläsning VI Agenda Sessions update Labb 5 Genomgång projektuppgift Kursinnehåll avstämning Kursmål avstämning Sessions På IDA måste ni göra session_save_path('dir)
Räkna med ASP.NET MVC 3
Instruktion Räkna med ASP.NET MVC 3 Introduktionsuppgift Författare: Mats Loock Kurs: ASP.NET MVC Kurskod:1DV409 Innehåll Du ska följa steg-för-steg -instruktionen i denna introduktionsuppgift och skapa
Att arbeta med. Müfit Kiper
Att arbeta med Müfit Kiper Att skriva nya inlägg Alla inlägg som är postade visas i kronologisk ordning, det vill säga det senast postade inlägget kommer visas först om inget annat angetts i temafilerna.
<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
Introduktion till programmering. Programspråk och paradigmer
Introduktion till programmering Programspråk och paradigmer Vad är ett programspråk? Aprogramming languageis a formal constructedlanguagedesigned to communicate instructions to a machine, particularly
L04.1 Marodören. Inledning. Mål. Genomförande. Uppgift 1 Hello World. Moment I
L04.1 Marodören Inledning Genom att öva sig på de grundläggande koncepten i JavaScript öppnas vägen allteftersom till de mer avancerade funktionerna. Man måste lära sig krypa innan man kan gå, även i JavaScript!
Content Management System. Publiceringssystem
Content Management System Publiceringssystem Vad är ett Content Management System (CMS)? Ett verktyg för att separera innehåll från presentation Skapa webbsidor utan att kunna html Låt många skapa sidor
Klient/server. Översikt. Lektion 1: Webbtekniker från Microsoft. Webbteknik från Microsoft. Klient/server. Designmönster. Utrullning.
Klient/server Översikt Webbteknik från Microsoft. Klient/server. Designmönster. Utrullning. Lektion 1: Webbtekniker från Microsoft Microsoft webbtekniker. ASP.NET. Klientsidan. Internet Information Server.
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
Mål med lektionen! Veta kursmålen. Ha kännedom om några av de grundläggande begreppen.
Entity Framework Mål med lektionen! Veta kursmålen. Ha kännedom om några av de grundläggande begreppen. Vem är jag? Mitt namn är Björn Jönsson och jobbar på Tahoe Solutions, ni når mig via mail: bjorn.jonsson@tahoesolutions.se
Gränssnitt för FakeGranska. Lars Mattsson
Gränssnitt för FakeGranska av Lars Mattsson (larsmatt@kth.se) Innehållsförteckning 1 Introduktion...3 2 Genomförande:...3 3 Användning...5 4 Kända buggar:...6 5 Källförteckning...6 2 1 Introduktion Taken
Konfigurera Wordpress som Hemsida istället för blogg
Konfigurera Wordpress som Hemsida istället för blogg - exempel från hemsidorna: www.vestus.se och www.thingsbym.se Copyrightinformation: Detta dokument är fritt att använda, även kommersiellt, så länge
Brasklapp: REV:s rådgivande verksamhet omfattar egentligen inte något detaljerat IT-stöd, men eftersom många väghållare har behov av att effektivt
Brasklapp: REV:s rådgivande verksamhet omfattar egentligen inte något detaljerat IT-stöd, men eftersom många väghållare har behov av att effektivt kunna förmedla information vill vi med denna presentation
Slutrapport Get it going contracts
Slutrapport Get it going contracts Författare: Anthony Dry Datum: 2011-06-02 Program: Utvecklare av digitala tjänster Kurs: Individuellt mjukvaruutvecklingsprojekt 7.5p Linnéuniversitetet (Kalmar) Abstrakt
Projektuppgift- Mashup- Applikation
Projektuppgift- Mashup- Applikation Som avslutning på denna kurs är det tänkt att Du ska bygga en egen mashup- applikation. Du ska bygga en komplett applikation som du utan tvekan skulle kunna vilja visa
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
E12 "Evil is going on"
E12 "Evil is going on" Föreläsning 12, HT2014 AJAX Kurs: 1dv403 Webbteknik I Johan Leitet E12 Evil is going on Dagens agenda AJAX XMLHttpRequest-objektet JSON Vad är AJAX? Asynchronous JavaScript and XML
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
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
Övning (X)HTML 2. Sidan 1 av 7 2010-11-11
Sidan 1 av 7 2010-11-11 Övning (X)HTML 2 Innan du börjar med laborationen ska du se till så att du har öppnat din editor (till exempel Notepad++). I denna editor ska du skriva (X)HTML-kod som du sedan
dit06omr@cs.umu.se 12 juni 2009 Projektplan Webb-baserat bokningssystem för flyg Kurs: Applikationsutveckling för internet, TFE
Projektplan Webb-baserat bokningssystem för flyg Kurs: Applikationsutveckling för internet, TFE VT-09 Innehållsförteckning Inledning & problembeskrivning...1 Systembeskrivning...2 Affärsobjekt...2 Databasen...4
Lathund för webbpublicering på Vi Ungas distriktswebbplatser
Lathund för webbpublicering på Vi Ungas distriktswebbplatser 1 1. Introduktion 3 2. Inloggning 3 3. Publicering av nyheter 4 4. Hantera nyheter 7 5. Snabblänkar 7 6. Sidor 8 7. Händelser 8 8. Distriktets
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
Programmering B med Visual C++ 2008
Programmering B med Visual C++ 2008 Innehållsförteckning 1 Repetition och lite nytt...5 I detta kapitel... 5 Programexekvering... 5 Loop... 5 Källkod... 6 Verktyg... 6 Säkerhetskopiera... 6 Öppna, kompilera,
Introduktion till integrering av Schenkers e-tjänster. Version 2.0
Introduktion till integrering av Schenkers e- Version 2.0 Datum: 2008-06-18 Sida 2 av 8 Revisionshistorik Lägg senaste ändringen först! Datum Version Revision 2008-06-18 2.0 Stora delar av introduktionen
Introduktion till MySQL
Introduktion till MySQL Vad är MySQL? MySQL är ett programmerings- och frågespråk för databaser. Med programmeringsspråk menas att du kan skapa och administrera databaser med hjälp av MySQL, och med frågespråk
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
Undervisningen i ämnet webbutveckling ska ge eleverna förutsättningar att utveckla följande:
WEBBUTVECKLING Ämnet webbutveckling behandlar de tekniker som används för att presentera och bearbeta information i webbläsaren samt utifrån dessa tekniker skapa och vidareutveckla statiska och dynamiska
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
TUTORIAL: KLASSER & OBJEKT
TUTORIAL: KLASSER & OBJEKT I denna tutorial lär vi oss att använda klasser och objekt samt hur vi bygger en enkel applikation kring dessa. I tutorialen kommer det finnas en mängd kod som du antingen kan
Slutrapport Thunderbug
Slutrapport Thunderbug Individuellt mjukvaruprojekt Linnéuniversitet Sabina Linder Webbprogrammerare -12 2013-06-07 Abstrakt Denna rapport kommer att handla om projektet Thunderbug, som är en webbsida
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
Blogga med Wordpress
Blogga med Wordpress Introduktion En blogg kan användas på en lång rad olika sätt, även om det vanligaste kanske är att se den som en mer eller mindre publik yta på nätet att dela med sig av tankar och
Olika slags datornätverk. Föreläsning 5 Internet ARPANET, 1971. Internet började med ARPANET
Olika slags datornätverk Förberedelse inför laboration 4. Historik Protokoll, / Adressering, namnservrar WWW, HTML Föreläsning 5 Internet LAN Local Area Network student.lth.se (ganska stort LAN) MAN Metropolitan
VAD GÖR DU / VEM ÄR DU?
INNEHÅLL Vad blir din roll Databaser vad är och varför Terminologi Datamodellering vad är och varför Utvecklingsprocessen SQL vad är det Data / Information / Kunskap Kapitel 1 delar av. Praktisk Datamodellering
2009-08-20. Manual för Typo3 version 4.2
2009-08-20 Manual för Typo3 version 4.2 1 2 Innehåll: 1. Allmänt 4 2. Grunderna i Typo3 5 2.1 Knappar 5 2.2 Inloggning 5 2.3 Den inledande vyn 6 2.4 Sidträdet 7 3. Sidor 8 3.1 Skapa en ny sida 8 3.1.1
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
Text och galleri på fotoklubbens nya hemsida
Text och galleri på fotoklubbens nya hemsida Inloggning Denna instruktion vänder sig till användare som skall lägga upp texter/blogginlägg på klubbens hemsida. Användarna har behörighetsnivå Författare
Introduktion Schenker-BTL AB, Stab IT Beskrivning över informationsintegreringmed Schenker, metodbeskrivning version 1.
Schenker har interna system som handhar information som är av intresse för våra kunder/partners. Idag finns ett flertal av dem tillgängliga via Internet, sk Online-tjänster. Dessa erbjuder inte bara hämtning
Manual för din hemsida
Manual för din hemsida Dynamiska hemsidor är en lösning för att man på ett enkelt sätt skall kunna lägga till, ändra och ta bort sidor på sin hemsida. För att detta skall vara möjligt bygger lösningen
Introduktion Till WordPress
Introduktion Till WordPress Vad är WordPress? ett blogg- och innehållshanteringssystem skrivet i PHP och som använder databasen MySQL för datalagringen Wordpress har under åren utvecklats från ett bloggsystem
SQLs delar. Idag. Att utplåna en databas. Skapa en databas
Idag SQLs delar Hur skapar vi och underhåller en databas? Hur skapar man tabeller? Hur får man in data i tabellerna? Hur ändrar man innehållet i en tabell? Index? Vad är det och varför behövs de? Behöver
Dags att skriva uppsats?
Dags att skriva uppsats? Grundkurs i Word 2010 SDM Studentdatorutbildning vid Malmö högskola Att skriva i Word! 1 Börja skriva/skapa ditt dokument- något att tänka på 1 Spara ditt dokument 1 Bra att veta
Dialogue Technologies April 2005
Dialogue Technologies April 2005 En typisk självbetjäningstjänst för web ser ut enligt följande En inledande text för att användaren skall förstå tjänsten En aktuell lista med de 10 vanligast frågorna
Webbsida i Wordpress. Existens på webben och bli sökbar
Webbsida i Wordpress Existens på webben och bli sökbar Om Susann Rickan Susann Rickan bor i Nora Byggt webbsidor i 16 år Eget företag sedan 2009. Hjälper företag med webb och foto. Tycker om att bygga
Verktyg och Utvecklingsmiljö. Föreläsning 2 Eclipse
Verktyg och Utvecklingsmiljö Föreläsning 2 Eclipse Verktyg Modern programutveckling innebär att man måste behärska ett antal verktyg. Editorer Kompilatorer Avlusare(debugger) Versionshantering(kommer i
Next -> Next -> Finish
Next -> Next -> Finish eller? Vad bör man tänka på i samband med uppgradering till eller nyutveckling i EPiServer CMS 7? Oscar Larsson Oscar Larsson Agenda Det Leverantören här är Sogeti lovar Är det verkligen
Användarhandledning Version 1.2
Användarhandledning Version 1.2 Innehåll Bakgrund... 2 Börja programmera i Xtat... 3 Allmänna tips... 3 Grunderna... 3 Kommentarer i språket... 4 Variabler... 4 Matematik... 5 Arrayer... 5 på skärmen...
ASP.NET Thomas Mejtoft
ASP.NET Introduktion till ASP.NET Utveckla i ASP.NET I ASP.NET kan och bör man separera HTML-kod från övrig kod (C#, VB ) I enklare fall läggas kod i script-block Vanligtvis läggs den i en Code Behind-fil
BLOGG PETER WALTONEN @ DPI.FI
BLOGG PETER WALTONEN @ DPI.FI WordPress är en väldigt användbar nätportal, som kan användas både som blogg men även för att bygga upp din hemsida på nätet. Verktygen är lätta att använda och det erbjuds
2007-03-28. Manual för Typo3 version 4.04
2007-03-28 Manual för Typo3 version 4.04 1 2 Innehåll: 1. Allmänt 4 2. Grunderna i Typo3 5 2.1 Knappar 5 2.2 Inloggning 5 2.3 Den inledande vyn 6 2.4 Sidträdet 7 3. Sidor 8 3.1 Skapa en ny sida 8 3.2 Redigera
Wordpress handledning för distrikt, lokalavdelningar och personsidor
Wordpresshandledning fördistrikt,lokalavdelningaroch personsidor 1 Index Adminpanel... 5 Användare... 21 BWS Plugins... 15 inlägg... 6 Inlägg skapa och hantera... 7 Kategorier... 7 Inställningar... 14
Inledande programmering med C# (1DV402) Introduktion till. eller så här är det tänkt att fungera.
Introduktion till kursen eller så här är det tänkt att fungera. Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får
Webbprogrammering 725G54
Webbprogrammering 725G54 Hej! Jakob Bandelin, gästadjunkt jakob.bandelin@liu.se Interaktionsdesign, webbdesign, apputveckling Agenda Kursmål och -upplägg HTML Teckenkodning Validering Lab 1. Kursmål exemplifiera
Vis it. jquery jquery används lite överallt i appen på olika sätt. Det främsta användningsområdet är vid selektering och manipulering av HTML element.
Vis it Introduktion Vi har skapat den webbaserade appen Vis it som bygger på att användare kan ta bilder på och lägga upp sevärdheter via sin mobiltelefon. Dessa sevärdheter är positionsbaserade vilket
Användarmanual för webbapplikationen Fejjan för alla. Manualens version:1.0. Datum: 5 februari 2014
Fejjan för alla 1.0 Användarmanual för webbapplikationen Fejjan för alla. Manualens version:1.0. Datum: 5 februari 2014 Fejjan för alla gör det lättare för personer med olika typer av funktionsnedsättningar
Hemsideutveckling för Anjool AB
Beteckning: Akademin för teknik och miljö Hemsideutveckling för Anjool AB Christopher Gidlöf Maj 2012 Examensarbete 15hp B nivå Datavetenskap Internetteknologi Examinator: Carina Petterson Handledare:
Kort om World Wide Web (webben)
KAPITEL 1 Grunder I det här kapitlet ska jag gå igenom allmänt om vad Internet är och vad som krävs för att skapa en hemsida. Plus lite annat smått och gott som är bra att känna till innan vi kör igång.
Installera din WordPress med 9 enkla steg
Installera din WordPress med 9 enkla steg Den här artikeln förutsätter att du har satt upp en webbserver eller har köpt ett webbhotell där du kan placera din nya WordPress hemsida. Om du inte har det,
Programbeskrivning. Chaos på Web. Version 1.0 2005-09-21
2005-09-21 Programbeskrivning Chaos på Web Version 1.0 Chaos systems AB Tel. 08-410 415 00 e-post: info@chaos.se Solna strandväg 18, 6tr Fax. 08-29 06 66 http://www.chaos.se 171 54 SOLNA Reg. nr: 556476-6813
Användarhandledning. edwise Webbläsarinställningar 2013-10-24
Användarhandledning edwise Webbläsarinställningar 2013-10-24 Sida 2/22 Innehållsförteckning 1 Webbläsarinställningar... 3 1.1 Internet Explorer Kompabilitetsläge... 3 1.1.1 Inställningar för kompabilitetsvyn...
Installationsanvisningar VisiWeb. Ansvarig: Visi Closetalk AB Version: 2.3 Datum: 2009-12-14 Mottagare: Visi Web kund
Sida: 1(7) Installationsanvisningar VisiWeb Ansvarig: Visi Closetalk AB Version: 2.3 Datum: 2009-12-14 Mottagare: Visi Web kund Detta dokument Detta dokument beskriver hur man installerar VisiWeb på en
WEBBAPPLIKATION FÖR ADMINISTRERING AV DOKUMENT
Datateknik C, Examensarbete, 15 högskolepoäng WEBBAPPLIKATION FÖR ADMINISTRERING AV DOKUMENT Paul Kasselia Dataingenjörsprogrammet, 180 högskolepoäng Örebro vårterminen 2015 Examinator: Lars Karlsson WEB
Hur du gör ditt Gilles hemsida - en liten hjälp på vägen
Hur du gör ditt Gilles hemsida - en liten hjälp på vägen Sidan 2 - Logga in Sidan 3 - Uppbyggnad av en sida Sidan 4 - Infoga länk Sidan 5 - Infoga bilaga Sidan 6 - Infoga bild Sidan 7-8 Vad betyder knapparna
Presentera dig själv Laboration 1
Laborationsanvisning Presentera dig själv Laboration 1 Författare: Johan Leitet Version: 2 Datum: 2011-08-01 Inledning Denna inledande laboration syftar i mångt och mycket till att du ska känna dig bekväm
Lathund Hemsida för Astma- och Allergiförbundets föreningar
1/17 Lathund Hemsida för Astma- och Allergiförbundets föreningar Webbplatsen är byggd i WordPress 3.8.1. Den är byggd för att på ett enkelt sätt ska kunna skapa nya föreningshemsidor och innehåller: Inloggning
WEBBSERVERPROGRAMMERING
WEBBSERVERPROGRAMMERING Ämnet webbserverprogrammering behandlar funktionalitet för webblösningar och samspelet mellan beställare, användare, formgivare och utvecklare. Ämnets syfte Undervisningen i ämnet
Snabbguide Visma Compact API Copyright 2006-2010 Visma Spcs AB
Snabbguide Visma Compact API Copyright 2006-2010 Visma Spcs AB Komma igång med Compact API Hur APIet fungerar Visma Compacts API läser och skriver direkt till databasen via ett antal färdiga metoder som
Henrik Häggbom Examensarbete Nackademin Våren 2015
AV Henrik Häggbom Examensarbete Nackademin Våren 2015 1 INLEDNING Som examensarbete på min utbildning på Nackademin Programutveckling.NET kommer jag skapa ett webbaserat system för statistik, tabeller
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
Pyramid Business Studio - e-line & Betalkort
Pyramid Business Studio - e-line & Betalkort 21 mars 2005 Pyramid E-handel med betalkort via DebiTech fr om 3.39A Betalningssätt I kontaktregistret har val av betalningssätt tillkommit betalkort eller