UNDERSÖKNING AV PRESTANDA MED MVC INTEGRERAT I ETT CMS
|
|
- Elin Ek
- för 7 år sedan
- Visningar:
Transkript
1 Malskapad avhenrik Mals kapad avhenrik UNDERSÖKNING AV PRESTANDA MED MVC INTEGRERAT I ETT CMS BACKBONE.JS INTEGRERAT I ETT CMS SURVEY OF PERFORMANCE WITH MVC INTEGRATED IN A CMS BACKBONE.JS INTEGRATED IN A CMS Examensarbete inom huvudområdet Datalogi Grundnivå 30 högskolepoäng Vårtermin 2013 Johan Nygren Handledare: Henrik Gustavsson Examinator: Mikael Berndtsson
2 Sammanfattning Responstider är något som alltid har varit och fortfarande är en viktig del att tänka på vid utveckling av webbapplikationer. Speciellt CMS kan upplevas som väldigt långsamma ibland. En lösning på detta är MVC ramverk, i detta arbete javascriptramverket backbone. Problemet handlar om att implementera backbone i ett CMS och ta reda på hur prestandan påverkas. För att testa detta skapades två versioner av en sida i wordpress, den ena med en implementation av backbone för att skapa och rendera kommentarer. Tester i olika webbläsare och med olika långa texter på kommentarerna visar på en prestandavinst som ligger omkring 90%. Nyckelord: Backbone, Prestanda, CMS, MVC, Javascript
3 Innehållsförteckning 1 Introduktion Bakgrund CMS MVC Model View Controller Backbone Model View Problemformulering Metodbeskrivning Steg 1 val av CMS Steg 2 utveckla applikationer att utföra tester på Steg 3 utföra mätningar Alternativa metoder och etik Genomförande Val av CMS Utveckling av backbone applikation Implementation i CMS Förberedelser inför testning Ytterligare funktionalitet som kan läggas till Insamling av data Analys Resultat Resultat text Resultat text Resultat text Ministudie för bortfall Ändrad kod Slutsatser Resultatsammanfattning Diskussion Framtida arbete Referenser... 28
4 1 Introduktion Internet är det största informationsmedel som någonsin har funnits i mänsklighetens historia (Taivalsaari, Mikkonen, Anttonen & Salminen, 2011). Det har inte alltid varit enkelt att skapa och driva egna hemsidor utan det har krävts en stor kunskap inom ämnet för att det ska vara möjligt. Idag finns det många möjligheter för alla människor att skapa och driva sina egna webbplatser. Något som har underlättat webben för många användare är CMS system. Dessa system kräver en del kunskap för att du som användare ska ha möjlighet att använda dessa men det är inte alls på samma nivå som det tidigare har varit. Ett CMS är ett webbgränssnitt där användare enkelt kan skapa och administrera sin webbplats. Det är vanligt att CMS använder sig utav What You See Is What You Get redigering för att underlätta ytterligare för sina användare. Ett CMS kan enkelt byggas ut med plugins så som bildspel och SEO förbättrare, som ger extra funktionalitet. Användare orkar inte vänta på långa laddningstider (Nah Fui-Hoon 2007). Det är därför av stort värde att ha en så snabb webbplats som möjligt för att tillfredställa dina användare. Det finns många olika varianter för att få en snabbare webbplats men det är inte säkert att alla dessa kommer att fungera för just dig. En lösning är att använda sig utav Backbone som är ett MVC ramverk för javascript. Ett MVC ramverk är ett designmönster som är mycket användbart vid utveckling av interaktiva mjukvarusystem (Leff & Rayfield 2001). I det här arbetet vill vi ta reda på om backbone kan ge en bättre prestanda åt ett CMS. Problemet är att det inte finns någon färdig lösning för hur det ska implementeras i ett CMS. Det finns ingenting som pekar på att det inte skulle fungera så vi utgår ifrån att det är möjligt. För att testa om backbone kan ge bättre prestanda åt ett CMS så kommer det att skapas två stycken applikationer som det sedan kommer att utföras benchmarktester på. Den ena applikationen är en installation av ett CMS men där backbone har implementerats för att skapa kommentarer. Den andra applikationen är en vanlig standard installation av samma CMS. Under genomförandet så valdes vilket CMS som skulle användas. Vid valet av CMS så stod valet mellan de tre största (Joomla, Drupal och WordPress). Efter detta så skapades en backbone applikation för att skapa kommentarer. När denna applikation var färdig så implementerades den i det CMS som valdes. En vanlig installation av det valt CMS gjordes också för att användas vid testning. 1
5 2 Bakgrund I bakgrunden kommer att innehålla information om de olika tekniker som kommer att användas under projektet. 2.1 CMS CMS (Content Management System) är skapade för att underlätta hantering och publicering av information på webben. Användaren skapar sina sidor med hjälp utav ett webbgränssnitt som oftast använder WYSIWYG (What You See Is What You Get) redigering så att användaren inte ska behöva använda sig utav någon HTML när sidor ska skapas. Det innebär kort och gott att du som användare kan lägga till tex bilder i en text och se hur resultatet kommer att bli på sida direkt i redigeringsverktyget. Allt innehåll sparas sedan i en databas och genereras fram med hjälp utav de script som ett CMS har för att göra detta. Wordpress använder sig tex utav detta när användaren skapar nya blogginlägg. Figur 1 visar strukturen för databastabellen som innehåller alla blogginlägg. Ett CMS kan byggas ut med plugins som innehåller nya funktioner beroende på vad du behöver. Detta är något som du inte kan göra med vanliga statiska HTML sidor. Detta innebär att ett CMS är ett dynamiskt system (Patel, Rathod & Prajapati 2011). En plugin är en mjukvarukomponent som lägger till en specifik funktion till en existerande applikation. Det finns också så kallade widgets som går att installera i CMS. En widget är en liten modul som erbjuder anpassningsmöjligheter som tex kategorier och arkiv medans en plugin tex kan vara funktionalitet för att skapa och visa bildspel. Det finns även olika teman som tillåter dig att ändra utseendet av din webbsida. Det finns idag väldigt många CMS att välja på men Wordpress, Joomla och Drupal har enligt Patel, Rathod och Parikh (2011) fått en större spridning än de övriga. Joomla är ett kraftfullt open source CMS som är designat för att skapa högt interaktiva flerspråkiga webbplatser på kort tid som till exempel bloggar och e-köp tjänster. (Patel, Rathod & Prajapati 2011). Drupal är ett open source CMS som är skapat för att bygga robusta och flexibla webbplatser. (Patel, Rathod & Prajapati 2011). Wordpress är ifrån början skapad som en blogg plattform men han under de senaste åren byggts om till ett användbart CMS. En av de stora fördelarna Wordpress har är att det finns väldigt många plugins att tillgå. (Patel, Rathod & Prajapati 2011). 2
6 Figur 1 Skärmdump ifrån phpmyadmin över strukturen för tabellen wp_posts 2.2 MVC Ett designmönster är en återanvändbar lösning som kan användas för vanliga problem. Designen är inte färdig för att direkt implementeras i källkoden för en applikation utan programmeraren måste själv bygga applikation med de hjälpmedel designmönstret har gett honom. På webben finns gott om problem som utvecklare lägger ner mycket arbete på och som skulle gå fortare om ett designmönster användes. MVC (Model View Controller) är ett mycket användbart designmönster vid utveckling av interaktiva mjukvarusystem. MVC är partioneringsoberoende då det beskrivs som en interaktiv applikation som körs på en addressrymd (Leff & Rayfield 2001). MVC är framtaget för att underlätta utvecklingen av mjukvarusystem. Det är enkelt att ändra utseendet av en applikation utan att röra applikationens backend kod, med backend menas serverkod. All frontend (html kod) finns i så kallade view filer och all backend finns i controller och modeller. Det är applikationens alla controller som kommer att styra applikationen utifrån vad användaren gör och det är dessa som kommunicerar med modellerna för att med hjälp av dessa utföra olika kommandon och hämta ut data som sedan laddas in och visas i en view fil. Se figur 2 för ett exempel på hur MVC fungerar. 3
7 Detta gör att designen enkelt kan göras om totalt utan att påverka applikationen i sig något märkbart. Från långt tillbaka inom objektorienterad programmering så har model-view-controller paradigmet gett en klar design över olika ansvarsområden inom en interaktiv applikation (Veit & Herrmann 2003). (Leff & Rayfield 2001) MVC gör det lättare att utveckla och underhålla en applikation för att: En applikations utseende kan göras om helt utan att påverka någon annan kod. Applikationen kan enkelt bibehålla olika gränssnitt som tex olika språk eller olika typer av användarrättigheter. Visa meddelanden Användarinmatning Visa utdata Controller 1 1 View * * Tillgång till modell och redigering av meddelanden 1 Model 1 Ändra meddelanden Ändra meddelanden Figur 2 Hur ett meddelande för en applikation uppdateras med hjälp utav MVC. (Leff & Rayfield 2001) Model En model har ingenting med gränssnittet att göra utan representeras istället med hjälp utav en view. En model är inte bunden till en view utan kan ha flera då det kan finnas flera sätt att representera modellens dataset på (Veit & Herrmann 2003). Modellen byggs utan någon kännedom om controller och view. Modellen används för att hantera en applikations data. Detta innebär att utföra eventuella beräkningar och strukturera upp datan för att skriva den till en databas View En view är alltid kopplad till en controller och används för att skicka kommandon till denna med eventuell hjälp av data ifrån en modell som är kopplad till view filen (Veit & Herrmann 2003). 4
8 2.2.3 Controller En controller tar emot händelser ifrån en view och utför utifrån detta olika metoder som i sin tur kan anropa en modell för att utföra någonting med indata ifrån view filen som skickade händelsen (Veit & Herrmann 2003). 2.3 Backbone Backbone är ett ramverk som är utvecklat för javascript och som använder sig utav MVC som designmönster. Det kan hjälpa dig som utvecklare att få en mer strukturerad kod och kan hjälpa tunga javascript applikationer att få en bättre prestanda (Backbonejs.org 2013). Då backbone använder MVC så finns all data i modeller som kan sparas till servern. Om ett attribut skulle ändras i en modell så kommer ett event att köras som talar om för view filen som är kopplad till denna modell att någonting har ändrats i modellen och denna ändring kommer då också att utföras i view filen. Ska detta jämföras med traditionellt javascript där du hela tiden måste kontrollera om någonting har ändrats och det kräver betydligt mycket mer prestanda än om ditt objekt själv kan tala om att det har ändrats. Figur 3 visar ett diagram över hur backbone fungerar. Backbone fungerar inte helt på egen hand utan är beroende av ett bibliotek som heter underscore.js för att få många användbara funktioner som kommer att underlätta användandet av backbone. Underscore.js är utvecklat av samma personer som skapat backbone. (Braun, Volke, Schlamp, Bodisco & Carle, 2012) använder backbone i sin applikation för att enkelt ha möjligheten att återanvända sina modeller för att hämta ut data. Det finns många andra exempel på applikationer som använder backbone på backbones hemsida Uppdaterar modell Backbone.model Modell händelse Backbone.view DOM händelse Uppdaterar DOM Cloud DOM Figur 3 Diagram över hur backbone fungerar 5
9 2.3.1 Model En modell i backbone fungerar som en vanlig modell i javascript men genom att utöka den med Backbone.model så får vi funktionalitet för att hantera förändringar av modellen (Backbonejs.org 2013). Figur 4 visar ett exempel på hur en modell kan se ut i backbone och hur det går till för att skapa en ny. var Test_model = Backbone.Model.extend({ initialize: function(){ // Stuff to happen when a new model is created, defaults: function(){ // default values if the input is empty return { name: 'No name', ); validate: function(attrs) { // validate input if (attrs.text == ""){ return "You must write a text!"; // create new model var test = new Test_model({name: 'Test', text: 'This is a test!'); Figur 4 Exempel över hur en modell kan se ut i backbone och hur en ny modell skapas View Backbone.view kan användas med vilket javascript-ramverk som helst men den huvudsakliga idén är att organisera gränssnittet i logiska vyer. Genom att koppla en view till en modell så kan varje view uppdatera sig själv automatiskt genom att binda en view till en modells change händelse. Då undviker vi att leta upp ett element och uppdatera dess html för hand. All data som finns i en modell kommer automatiskt att vara up to date omedelbart i gränssnittet tack vare backbone (Backbonejs.org 2013). Se figur 5 för ett exempel på hur en view kan se ut i backbone. var Test_view = Backbone.View.extend({ initialize: function(){ this.listento(this.model, 'change', this.render);, // render in a div with the class test-class tagname: 'div', classname: 'test-class', render: function(){ 6
10 ); // render something Figur 5 Exempel över hur en view kan se ut i backbone. 7
11 3 Problemformulering Backbone som är ett MVC ramverk för javascript hjälper till att få en mer strukturerad kod och ett snabbare utförande. Till skillnad ifrån vanligt javascript där utvecklare ofta måste hålla reda på flera element och hela tiden kontrollera om något har ändrats i databasen som sedan måste ändras på webbplatsen. Med backbone så behövs inte detta göras utan där kommer modellen att tala om för sin view att om ett objekt har ändrats så ska också dess view uppdateras så att användaren kan se vad som har hänt. Enligt Richards, Lebresne, Burg & Vitek (2010) så är ett av de stora problemen med javascript säkerheten men de säger också att prestanda har hög fokus. Detta innebär att utvecklare måste ha säkerheten lite extra i åtanke men även att det kan hjälpa prestanda tunga applikationer som tex ett CMS som är fallet i detta arbete. MVC ramverk underlättar delar av utvecklingsprocessen av applikationer men kan vara komplicerat att applicera för webbapplikationer då dagens teknik uppmuntrar utvecklaren att partionera sin applikation redan i designfasen (Leff & Rayfield 2001). En ytterligare aspekt på detta är införandet av ramverk i en existerande applikation som kan kräva omfattande förändring av programkoden. I det här projektet så kommer MVC ramverket Backbone att integreras i ett CMS. Det här arbetet kommer att fokusera på att införa Backbone i ett existerande CMS och sedan undersöka hur prestandan påverkas. Vi antar att det finns en lösning för detta och vill då även undersöka hur mycket programkod som måste ändras i valt CMS för att Backbone ska fungera. Min hypotes är att backbone kan ge en bättre prestanda åt ett CMS eftersom att det är javascript och använder sig utav ajax. Detta gör då att det blir möjligt att enbart uppdatera en del av webbplatsen utan att ladda om hela sidan och det kommer då att leda till bättre responstider. Kan backbone ge en bättre prestanda åt ett CMS så är detta väldigt bra då enligt Nah Fui- Hoon (2007) så tycker användare inte om långa laddningstider. Problemet är att det inte finns någon färdig lösning för att integrera Backbone i befintlig CMS kod. 3.1 Metodbeskrivning För att utföra de undersökningar som ska göras så kommer experiment att användas och dessa tre steg kommer att följas Steg 1 val av CMS Vid val av CMS så kommer valet att stå mellan wordpress, joomla och drupal. Detta görs för att dessa är det tre CMS som har störst spridning enligt Patel, Rathod och Parikh (2011). Hur lätt det är att navigera sig i källkoden för varje CMS och hur lätt det är att hitta de filer som kan behöva ändras kommer att vara en stor del vid valet av CMS. 8
12 3.1.2 Steg 2 utveckla applikationer att utföra tester på För att detta arbete ska vara möjligt att utföra så krävs det två stycken applikationer en som använder backbone och en som inte gör det. Eftersom det är ett CMS som ska användas så kommer den ena applikationen enbart att vara en enkel installation av valt CMS. Den andra applikationen måste utökas med backbone. Det är viktigt att det finns en kommentarsfunktion implementerad i applikationerna då det är detta som ska användas för att utföra prestandatesterna Steg 3 utföra mätningar Mätningarna kommer att göras på en lokal server och eventuellt även på en live server om det finns att tillgå vid testning. Patel, Rathod och Parikh (2001) använder sig utav både en lokal och live server för att utföra sina tester när de jämför olika CMS system. Då det även är ett CMS som ska testas i detta fall så lämpar sig deras testmetod bra som en grund för även detta projekt. Alla tester kommer även att utföras med de tre största webbläsarna (Google chrome, Internet explorer och Mozilla firefox) för att kontrollera om det är stora skillnader mellan dessa och i så fall eventuellt ta reda på vad dessa skillnader kan bero på. För att prestandatesta de två applikationerna så kommer benchmarking att användas. Det kommer att användas tre stycken olika långa texter som kommer att testas 100 gånger var i varje webbläsare. Vid mätning så kommer tiden från då att en kommentar skapas till dess att den visas på skärmen att mätas. Anledningen till att mätningen sker på detta vis är för att vi inte endast vill veta om backbone är snabbare när det gäller att skapa kommentarer utan också om det är snabbare att rendera resultatet Alternativa metoder och etik Nah Fui-Hoon (2007) använder sig utav verkliga personer för att utföra sina tester. Detta är något som inte behöver göras i detta projekt då vi enbart är intresserade av om backbone kan ge några prestandaförbättringar åt ett CMS och inte om användarna kan märka några skillnader. Detta gör att vi slipper hantera känsliga personuppgifter som inte får komma ut. Även all eventuell data som kommer att användas i applikationerna kommer att vara framgenererad och inte hämtad ifrån något specifikt ställe. Att vi inte kommer att använda några verkliga testpersoner eller någon verklig testdata gör att allt som vi använder kommer att kunna delas med andra utan att vi får några etiska problem. De mätresultat som vi kommer att få kan enbart användas för att jämföra just det CMS som valts med backbone och inte något annat CMS eftersom vi inte utför några tester på något annat. Det kommer ändå att ge en syn på om backbone kan vara till hjälp för ett CMS men det är inte säkert att det kommer att gälla för alla. 9
13 4 Genomförande I detta kapitel kommer genomförandet av projektet att beskrivas. Det kommer att skapas två applikationer som skapar kommentarer för ett CMS. Det ena applikationen kommer att vara en standard installation av ett CMS och den andra kommer att vara samma CMS men backbone kommer att användas för att skapa kommentarerna. I Appendix A finns javascript koden för backbone applikationen som är implementerad i CMS:et. I Appendix B finns PHP koden för att skriva kommentarer till CMS:ets databas. 4.1 Val av CMS För att genomföra experimentet så måste ett CMS väljas. När detta skulle göras så var ett krav att det CMS som valdes att det måste finnas funktionalitet för att kommentera på artiklar eller liknande. Detta är ett krav eftersom att den applikation som ska utvecklas i backbone och testas är till för att skapa kommentarer. Enligt Patel, Rathod och Parikh (2011) så är det Drupal, Joomla och Wordpress som är de tre största CMS på marknaden just nu. Detta gjorde att valet av CMS stod mellan dessa tre. Efter att ha testat Joomla, Drupal och Wordpress så valdes Wordpress då det var det CMS som det var lättast att hitta vilka filer som behövde skrivas om för att fungera tillsammans med backbone applikationen. 4.2 Utveckling av backbone applikation Applikationen för att skapa kommentarer med backbone skapas först enskilt och är inte från början implementerad i något CMS. Detta görs för att det ska gå fortare att få den färdig för att sedan implementera den i ett CMS. Applikationens klientsida är skriven i javascript och koden finns i filen comment.js. Serversidan är skriven i PHP och koden finns i filen comments.php. I filen som innehåller formuläret för att skapa en kommentar så finns även en template som används utav javascriptet för att rendera kommentarer. Testapplikationen använder sig utav en databas som innehåller en tabell som i sin tur innehåller tre kolumner, se figur 6. När applikationen senare ska implementeras i ett CMS så kommer fler fält att tillkomma men detta ska inte spela någon roll. Figur 6 Skärmdump ifrån phpmyadmin över strukturen för tabellen comments som används i backbone applikationen Applikationen består utav en modell (Comment_modell), en kollektion (Comment_collection) och två stycken vyer (Comment_view och App_view). När 10
14 applikationen startas så skapas en ny kollektion som ska hålla alla kommentarer. Det sista som sker är att den vy som styr hela applikationen (App_view) skapas och när denna skapas så talar vi om för den att den ska lyssna på vissa specifika händelser för den kollektion som har skapats. this.listento(comments, 'change', this.render_comment), this.listento(comments, 'reset', this.render_all_comments), Figur 7 Talar om för vyn App_view att lyssna på förändringar I kollektionen Comments och utföra metoder utifrån det. Figur 7 visar två rader talar om för vyn att den ska utföra vissa funktioner när något speciellt händer. I detta fall så ska vyn rendera en kommentar om kollektionen ändras och rendera alla kommentarer om den återställs. Comments.fetch(); Figur 8 Kod för att fylla kollektionen Comments med kommentarer ifrån databasen. Figur 8 visar en kodrad som utför en ajax förfrågan till filen comments.php för att hämta alla kommentarer ifrån databasen och sedan returnera dessa med JSON för att på så vis fylla kollektionen med kommentarer, se figur 9. Detta räknas som att kollektionen har återställts och detta innebär att vyn kommer att rendera alla kommentarer som finns i kollektionen. $sql = "SELECT * FROM comments ORDER BY id ASC"; $query = mysql_query($sql); $count = 0; while ($row = mysql_fetch_assoc($query)) { $data[$count] = $row; if (date('y-m-d') == date('y-m-d', strtotime($row['created']))) { $data[$count]['created'] = date('h:i', strtotime($row['created'])); else { $data[$count]['created'] = date('y-d-m H:i', strtotime($row['created'])); $count++; Echo json_encode($data); Figur 9 PHP kod för att hämta ut alla kommentarer ifrån databasen. Varje gång en kommentar ska renderas så anropas funktionen render_comment som ligger i vyn App_view. Funktionen tar emot en parameter som ska vara den kommentar som ska renderas. Det första som händer i funktionen är att en ny vy skapas och sedan anropas en funktion i denna som renderar kommentaren. Se figur 10, 11 och 12 för de funktioner som används för att rendera kommentarer. 11
15 render_comment: function(comment){ var view = new Comment_view({model: comment); this.$('#comments').prepend(view.render().el);, Figur 10 Metod för att rendera en kommentar. Detta är funktionen som körs. På den andra raden i funktionen sker renderingen av kommentaren. Som vi kan se så anropas funktionen render() i Comment_view. render_all_comments: function(){ Comments.each(this.render_comment, this), Figur 11 Metod för att rendera alla funktioner. render: function(){ this.$el.html(this.template(this.model.tojson())); return this; Figur 12 Metoden render i vyn Comment_view. Metoden använder sig utav en template för att rendera. Vad som händer är att den modell som skapades för den nya kommentaren i metoden render_comment används för att fylla templaten med den information som finns i denna. Figur 13 visar kod för den template som används. Den template som kommer att användas för rendering i valt CMS kommer antagligen att se annorlunda ut då det antagligen kommer vara mer information som ska renderas för varje kommentar. <script type="text/template" id="comment_template"> <%- name %>:<br> <p class="comment-text"> <%- text %> </p> <span class="comment-date"><%- created %></span> </script> Figur 13 Kod för template som används för att rendera kommentarer. För att skapa en ny kommentar så finns det en metod i vyn App_view som heter post_comment. Denna metod skapar en ny Comment_model och lägger till denna i den kollektion som skapats tidigare. För att denna metod ska köras krävs det att en användare klickar på en knapp som har id post_comment. Figur 14 visar hur klick händelsen har bundits till id post_comment. events: { 'click #post_comment': 'post_comment', Figur 14 Kod för att binda ett klick event till elemetet id post_comment. Efter att kommentaren har skapats så kommer den automatiskt att renderas eftersom att vi tidigare att talat om för applikationen att den ska rendera en ny kommentar om kollektionen ändras. 12
16 4.3 Implementation i CMS När backbone applikationen skulle implementeras i wordpress så uppstod vissa problem. Vilka filer som användes och vilka av dessa som behövde ändras för att applikationen skulle fungera. Detta gick dock att lista ut någorlunda enkelt med hjälp utav google och lite eget sökande ibland filerna. Det visade sig att det var tre stycken filer som det behövdes göra några små ändringar i för att det skulle vara möjligt att skapa kommentarer med backbone istället för wordpress egna funktion. I filen wp-includes/comment-template.php så gjordes en ändring i funktionen comment_form som används för att rendera ett formulär för att skapa kommentarer. Knappen för att skicka formuläret var av typen submit. Detta ändrades till typen button istället så att vi kan låta backbone utföra all hantering av informationen. I filen wp-content/themes/twentytwelve/comments.php så lades kod för den template som ska användas för att rendera kommentarer till, se figur 15. Denna template kunde ha placerats någon annanstans men valdes att läggas i denna fil eftersom att det är denna fil som renderar alla kommentarer. Ytterligare en ändring gjordes i denna fil och det var att ett dolt input fält lades till som innehåller id:t för den artikel som är öppen, se figur 16. Detta gjordes för att backbone ska ha möjlighet att veta vilken artikel en kommentar som skapas ska tillhöra. <script type="text/template" id="comment_template"> <article id="comment-<%- comment_id %>" class="comment"> <header class="comment-meta comment-author vcard"> <img alt="" src=" class="avatar avatar-44 photo avatar-default" height="44" width="44"> <cite class="fn"> <a href="<%- comment_author_url %>" rel="external nofollow" class="url"><%- comment_author %></a> </cite> <a href="?p=1#comment-<%- comment_id %>"> <time datetime="<%- comment_datetime %>"><%- comment_date_display %></time> </a> </header> <section class="comment-content comment"> <p><%- comment_content %></p> </section> <div class="reply"> <a class="comment-reply-link" href="/wordpress/?p=1&replytocom=<%- comment_id %>#respond" onclick="return addcomment.moveform('comment-<%- comment_id %>', '<%- comment_id %>', 'respond', '<?php echo $_GET[p]?>')">Reply</a> <span> </span> </div> </article> </script> Figur 15 Template för att rendera kommentarer med backbone i wordpress. 13
17 <input type="hidden" id="article-id" value="<?php echo $_GET['p']?>"> Figur 16 Extra dolt inputfält för att hålla reda på vilken artikel en kommentar ska tillhöra. I filen wp-content/themes/twentytwelve/header.php så inkluderades de javascript som behövdes för att få backbone applikationen att fungera. De javascript som används placerades i mappen wp-includes/js/comment. PHP filen som används för seversidan (comments.php) placerades i root mappen för wordpress. Den backbone kod som används i wordpress har inte samma bredd av funktionalitet som den fristående backbone applikationen har. I wordpress har funktionen för att hämta ut alla kommentarer vid sidhämtning tagits bort då det blev för mycket arbete med att få det att fungera. Då den databastabell som används av wordpress för att lagra kommentarer har betydligt fler kolumner än den tabell som användes vid utvecklingen av den fristående backbone applikationen så måste vissa ändringar göras i både klient och server kod för att det ska stämma överens med wordpress. Figur 17 visar strukturen för tabellen. Figur 17 Skärmdump ifrån phpmyadmin över strukturen för tabellen wp_comment som lagrar alla kommentarer i wordpress. När någon väljer att skapa en kommentar så skickar javascriptet inte med all information för alla kolumner i databasen utan endast för fem stycken av dessa. Comments.create({comment_post_ID: $('#article-id').val(), comment_author: $('#author').val(), comment_author_ $('# ').val(), comment_author_url: $('#url').val(), comment_content: $('#comment').val()); Figur 18 Kod för att skapa och lägga till en ny Comment_model i wordpress applikationen. 14
18 I figur 18 framgår det vilka kolumner i databasen som kan fyllas med hjälp utav de DOM element som finns i formuläret för att skapa kommentarer. $comment_post_id = mysql_real_escape_string($comment->comment_post_id); $comment_author = mysql_real_escape_string($comment->comment_author); $comment_author_ = mysql_real_escape_string($comment- >comment_author_ ); $comment_author_url = mysql_real_escape_string($comment- >comment_author_url); $comment_content = mysql_real_escape_string($comment->comment_content); $comment_date = date('y-m-d H:i:s'); $sql = "INSERT INTO wp_comments (comment_post_id, comment_author, comment_author_ , comment_author_url, comment_date, comment_content) VALUES ('$comment_post_id', '$comment_author', '$comment_author_ ', '$comment_author_url', '$comment_date', '$comment_content')"; mysql_query($sql)or exit(mysql_error()); Figur 19 PHP kod för att skriva in en kommentar i databasen i wordpress applikationen. I figur 19 kan vi se att en extra variabel skapas innan något skrivs till databasen. Det är variabeln $comment_date som innehåller information om vilket datum och vilken tid en kommentar skapades. Efter att en kommentar har skrivits till databasen så hämtas denna ut igen för att vi vill ha alla kolumner ifrån databasen i vår backbone modell när informationen skickas tillbaka till javascriptet. Vi vill ha all information ifrån databastabellen för att det behövs när backbone sedan ska rendera kommentaren på webbsidan. // fetch the comment and return its data $query = mysql_query("select * FROM wp_comments WHERE comment_id='$comment_id'"); $data = mysql_fetch_assoc($query); // change the appearance of the date so it matches the site $data['comment_datetime'] = date('y-m-d\th:i:s+00:00', strtotime($data['comment_date'])); $data['comment_date_display'] = date('f, j Y \a\t H:i a', strtotime($data['comment_date'])); Figur 20 PHP kod för att hämta ut senast inmatade kommentar i databasen och kod för att göra om formatet av datumet. I figur 20 så ändrar vi formatet på hur datumet ser ut. Detta görs för att det ska stämma överens med hur wordpress renderar datumet för sina kommentarer Förberedelser inför testning För att det skulle vara möjligt att utföra mätningar så behövdes vissa filer i båda applikationerna ändras för att det skulle vara möjligt. I backbone applikationen lades det till fem stycken globala variabler som kommer att användas vid testingen, se figur 21. Se figur 22 för hur benchmark startas för backbone applikationen. 15
19 // global variables to check performance var start; var stop; var total_time; var benchmark_array = new Array(); var benchmark_intervals = 0; Figur 21 Globala variabler i comment.js // start benchmark benchmark_interval = setinterval(this.post_comment, 50); Figur 22 Kod som startar benchmark i backbone applikationen När funktionen post_comment körs så kommer variabeln start att sättas till tiden i millisekunder från då att sidan laddades. När kommentaren sedan har renderats så kommer den totala tiden att beräknas, se figur 23. // get performance time and calculate total time from post to render of a comment stop = performance.now(); total_time = stop - start; benchmark_array[benchmark_intervals] = total_time; benchmark_intervals++; // stop benchmark after given number of posts if (benchmark_intervals > 99){ clearinterval(benchmark_interval); console.log(benchmark_array); Figur 23 Kod som beräknar den totala tiden för att skapa och rendera en kommentar. När det gäller den vanliga installationen av wordpress så har rad kommenterats bort i filen wp-includes/comment.php. Denna kod förhindrar att en användare kan skicka samma kommentar flera gånger. Detta kan inte vara kvar inför testningen då samma text kommer att användas flera gånger. I filen wp-comment-post.php så lades en session till högst upp i filen som innehåller tiden för när requestet att skapa en ny kommentar startade, se figur 24. session_start(); $_SESSION['benchmark_start'] = $_SERVER["REQUEST_TIME_FLOAT"]; Figur 24 Session som innehåller tiden för requeststart I filen wp-content/themes/twentytwelve/comments.php så lades det till kod för att beräkna tiden för hur lång tid det tog att skapa och rendera kommentaren. Detta skrivs sedan till en fil som innehåller alla resultat, se figur
20 session_start(); if (!empty($_session['benchmark_start'])) { $benchmark = (microtime(true) - $_SESSION['benchmark_start']) * 1000; $file = 'benchmark.txt'; // Open the file to get existing content $current = file_get_contents($file); // Append a new person to the file $current.= ", ".$benchmark; // Write the contents back to the file file_put_contents($file, $current); $_SESSION['benchmark_start'] = ""; Figur 25 Kod som beräknar och sparar testtiden för wordpress applikationen. För att göra det möjligt att utföra flera tester i rad utan att själv behöva klicka på knappen så skapades ett javascript som genom ett ajax-anrop anropar filen som skapar kommentaren och skickar med all data som behövs. Figur 26 visar detta script. var benchmark_count = 0; var benchmark_stop = 99; var time_interval = 1000; var url = "wp-comments-post.php"; var data = {author: 'The nameless', 'ganodorf91@hotmail.com', url: '', comment_post_id: '1', comment: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'; // start benchmark benchmark_interval = setinterval(function(){benchmark(), time_interval); console.log("benchmark started!"); function benchmark(){ benchmark_count++; $.ajax({ type: 'post', url: url, data: data, success: function(result){ //console.log(benchmark_count); ); if (benchmark_count > benchmark_stop){ clearinterval(benchmark_interval); console.log("benchmark done!"); Figur 26 Javascript som utför benchmark på wordpress applikationen. 17
21 4.3.2 Ytterligare funktionalitet som kan läggas till Wordpress erbjuder funktionen att svara på andra kommentarer, detta är något som inte stöds utav den backbone applikation som har implementerats. Detta valdes att inte implementeras då det inte är av större vikt för det experiment som ska utföras. Vi vill veta om det finns någon prestandavinst genom att använda backbone och det räcker då om det enbart fungerar att skapa en toppkommentar. Att hämta ut alla kommentarer med backbone vid ny sidladdning är något som också kan implementeras men det har tidigare i rapporten nämnts att detta inte implementerades på grund av tidsbrist. Detta är dock inget som kommer att påverka experimentet. 18
22 5 Insamling av data För att samla in data för att sammanställa ett resultat så har tester utförts vid totalt nio testtillfällen. Dessa nio tester består av tre stycken olika långa texter som har testats en gång var i tre olika webbläsare. Vid varje testtillfälle så har 100 stycken kommentarer skapats och tiden från då att requestet startar till dess att kommentaren har renderats mäts och sparas. Inför testningen så plockades tre texter fram som skulle användas. Dessa tre texter hämtades ifrån Nedan finns en lista med de tre texter som användes. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean suscipit congue purus dapibus pharetra. Vestibulum tortor tellus, mattis sit amet vehicula sed, pharetra non urna. Pellentesque ullamcorper erat sit amet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec malesuada ultricies risus, id vestibulum velit malesuada id. Quisque condimentum aliquet sapien, ac iaculis purus pretium non. Quisque ac erat ipsum. Duis tristique nulla non enim molestie non ultricies arcu feugiat. Quisque iaculis vehicula venenatis. Quisque nec purus non odio pretium dignissim. Mauris lectus nisi, laoreet non iaculis vel, luctus ut libero. Nulla non mauris eu felis euismod cursus sit amet non augue. Vivamus ultrices elementum bibendum. Ut ante arcu, placerat vel bibendum vitae, varius sed nulla. Aliquam vehicula blandit ipsum ac aliquam. Sed tincidunt congue eros, in fringilla dui fermentum. Vid varje testtillfälle så utfördes 100 stycken tester av varje text i de tre webbläsarna Google Chrome , Mozilla Firefox och Internet Explorer Detta ger alltså totalt 300 olika resultat av varje text. Alla tester har gjorts på en lokal server. Intervallen mellan varje kommentar för backbone applikationen är 50 ms och tiden för wordpress applikationen är 1000 ms. Anledning till att det är så mycket längre tid för wordpress applikationen är för att det tar så mycket längre tid att skriva kommentaren och rendera om hela sidan igen. Är det kortare tid så kommer vissa mätresultat inte komma med. Inför varje ny text så tömdes databasen för att få så rättvisa resultat som möjligt. 19
23 6 Analys I detta examensarbete så ligger fokus på att ta reda på om backbone kan ge en bättre prestanda för ett CMS. För att ta reda på detta så utfördes tester med tre olika långa texter för att skapa kommentarer på två stycken applikationer. Den ena applikationen består utav en vanlig installation utav WordPress och den andra är samma version av WordPress men i denna har kommentarsfunktionen bytts ut emot en backbone applikation som gör detta istället. 6.1 Resultat I detta kapitel kommer de resultat som har tagits fram visas i tabeller och grafer. I tabellerna finns en rad som heter PÖ (prestandaökning) och denna har beräknats på detta vis: ((WordPress - Backbone) / WordPress) * 100. Alla mätresultat visas i millisekunder Resultat text 1 Den första texten består utav 8 stycken ord. Figur 27, 28 och 29 visar mätresultat för den första texten. Figur 30 visar en graf med medelvärden. Min Max Genomsnitt Backbone ,47 WordPress 141,91 622,99 463,51 PÖ 95,00% 91,49% 95,80% Figur 27 Mätresultat ifrån webbläsaren Google Chrome för text 1 Min Max Genomsnitt Backbone 7,66 53,86 19,43 WordPress 703,06 975,76 860,21 PÖ 98,91% 94,48% 97,74% Figur 28 Mätresultat ifrån webbläsaren Mozilla Firefox för text 1 Min Max Genomsnitt Backbone 2,91 87,12 20,02 WordPress 201,83 620,99 414,55 PÖ 98,56% 85,97% 95,17% Figur 29 Mätresultat för webbläsaren Internet Explorer för text 1 Vid testning av text 1 med wordpress applikationen i Internet Explorer så gick ett testfall förlorat och det blev endast 99 stycken. Detta kan bero på att något test tog längre tid än 1000 ms och detta gjorde då att det sista inte hans med. 20
24 Medelevärde responstider text 1 Responstid (ms) Chrome Firefox IE WordPress Backbone Figur 30 Graf som visar skillnader i prestanda för alla webbläsare Mätresultaten för backbone applikationen visade sig vara väldigt mycket bättre än de för wordpress applikationen. En stor faktor till detta är att backbone applikationen inte behöver ladda om hela sidan när en kommentar skapas. Detta är något som wordpress måste och det tar då mycket längre tid eftersom att hela sidan ska renderas igen och många andra funktioner som inte behövs för att skapa en kommentar körs Resultat text 2 Den andra texten består utav 25 stycken ord. Figur 31, 32 och 33 visar mätresultat för den andra texten. Figur 34 visar en graf med medelvärden. Min Max Genomsnitt Backbone ,63 WordPress 127, ,4 561,2 PÖ 97,64% 97,84% 96,68% Figur 31 Mätresultat för webbläsaren Google Chrome för text 2 Min Max Genomsnitt Backbone 7,27 154,33 20,04 WordPress 128,98 988,54 512,54 PÖ 94,36% 84,39% 96,09% Figur 32 Mätresultat för webbläsaren Mozilla Firefox för text 2 Min Max Genomsnitt Backbone 7,08 70,32 21,47 WordPress 587,69 887, PÖ 95,79% 92,08% 97,10% Figur 33 Mätresultat för webbläsaren Internet Explorer för text 2 21
25 Efter testning av text två så blev det bortfall både för Google Chrome och Firefox vid testning av wordpress applikationen. Google Chrome fick endast 84 resultat och Firefox fick 98 stycken. Detta är antaligen av samma anledning som vid testning av text 1 i wordpress applikationen i Internet Explorer. Men eftersom att det blev så många bortfall vid detta tillfälle så utfördes även en ministudie för att ta reda på om detta var problemet. Den finns att läsa om senare i det här kapitlet. Medelevärde responstider text Responstid (ms) WordPress Backbone 0 Chrome Firefox IE Figur 34 Graf som visar skillnader i prestanda för alla webbläsare Efter tester av den andra texten så blev det också där ett väldigt bra resultat för backbone applikationen. Vid testning av denna text fick däremot backbone applikationen sitt enda resultat som var sämre än vissa wordpress resultat. Detta kan bero på att php koden eller databasen tog längre tid på sig än vad de gjorde vid andra testfall. Men det kan även bero på att klienten var långsammare. Det kan helt enkelt ha berott på många faktorer Resultat text 3 Den tredje texten består utav 100 stycken ord. Figur 35, 36 och 37 visar mätresultat för den tredje texten. Figur 38 visar en graf med medelvärden. Min Max Genomsnitt Backbone ,1 WordPress 127,67 993,14 360,32 PÖ 93,73% 95,47% 94,45% Figur 35 Mätresultat för webbläsaren Google Chrome för text 3 Min Max Genomsnitt Backbone 5,86 50,91 21,43 WordPress 325,6 655,69 488,86 PÖ 98,20% 92,23% 95,61% Figur 36 Mätresultat för webbläsaren Mozilla Firefox för text 3 22
26 Min Max Genomsnitt Backbone 7,41 32,2 20,18 WordPress 618,86 974,37 809,73 PÖ 98,80% 96,69% 97,50% Figur 37 Mätresultat för webbläsaren Internet Explorer för text 3 Efter testning av wordpress applikationen så blev det bortfall för Google Chrome och det blev endast 94 resultat. Det beror antagligen på samma sak som vid tidigare tester av de andra texterna. Medelevärde responstider text Responstid (ms) Chrome Firefox IE WordPress Backbone Figur 38 Graf som visar skillnader i prestanda för alla webbläsare Efter att ha testat alla tre texterna så har backbone applikationen visat lika bra resultat för alla tre. Det var inte några direkta skillnader mellan resultaten för de olika texterna och det visar att det inte spelar så stor roll hur lång text en kommentar har. Inte heller den vanliga installationen av wordpress visade några större skillnader mellan de tre texterna. Alla tre ebbläsare fick däremot väldigt olika resultat för de olika texterna vid testning av wordpress. Detta antar jag att det beror helt och hållet på webbläsarna själva. 6.2 Ministudie för bortfall Då det blev bortfall vid vissa utav testerna på wordpress applikationen så utfördes en ministudie för att ta reda på om detta berodde på att vissa testfall tog för lång tid på sig. För att testa detta så utfördes fem stycken tester i en webbläsare (Google Chrome) som alla hade 100 testfall var men olika långa intervall mellan varje kommentar. Vid varje test användes den kortaste texten. Efter att fem stycken olika intervall testats så visade det sig att det blev fler bortfall med ett kortare intervall och att det blev färre eller inte några alls med ett längre. Se figur 39 för 23
27 resultat. Detta visar på att jag antog rätt när jag sa att det berodde på att vissa testfall tog för lång tid på sig för det intervall som användes. Intervall Min Max Genomsnitt Bortfall ,43 911,64 471, ,75 371,58 158, ,47 498,85 311, ,64 601,78 460, ,81 614,25 469,36 0 Figur 39 Tabell som visar resultat för ministudien 6.3 Ändrad kod I problemformuleringen står det att vi också ville undersöka hur mycket kod som behövde ändras för att backbone applikationen skulle gå att implementera i wordpress. Det visade sig att det inte var så mycket kod som behövde skrivas om för att det skulle fungera. Det slutade med att ändringar gjordes i totalt tre stycken filer för att få det att fungera. Dessa ändringar var inte jättestora utan handlar om några få rader kod. Ändringar utfördes i dessa filer: wp-includes/comment_template.php Ändrade knappen för att posta en kommentar till en button istället för en submit. wp-content/themes/twentytwelve/comments.php La till en template som används av backbone applikationen för att rendera kommentarer. La till ett dolt input fält som innehåller info om vilken artikel som visas. wp-content/themes/twentytwelve/header.php Inkluderade de javascript som behövdes för att backbone applikationen skulle fungera. 24
28 7 Slutsatser I detta kapitel finns slutsatser och diskussion kring examensarbetet. 7.1 Resultatsammanfattning I problemformuleringen står det att detta arbete ska fokusera på att undersöka hur prestandan påverkas för ett CMS om backbone skulle implementeras och användas istället. Efter att ha undersökt de tester som utfördes så visade det sig att backbone kan ge wordpress väldigt stora prestanda vinster, speciellt när det gäller rendering av tex kommentarer på blogg artiklar som undersöktes i detta arbete. Prestandaökningen låg omkring 90% för alla tester vilket är ett väldigt bra resultat. Jag anser att det var ett lyckat experiment då vi ville undersöka om en backbone applikation skulle fungera snabbare än befintlig CMS kod. Vid vissa testtillfällen så blev det bortfall i resultaten för wordpress applikationen. För att ta reda på om detta berodde på att vissa testfall tog för lång tid på sig utfördes en ministudie. Denna ministudie bestod utav fem stycken testtillfällen och visade att det blev fler bortfall med kortare intervalltid och färre eller inte några alls med en längre. 7.2 Diskussion Backbone har i det här arbetet gjort så att det går mycket snabbare att posta en kommentar på en artikel i wordpress än vad det gjorde innan. Den stora prestandavinsten som man kan se utifrån de resultat ifrån testningen gör att det är helt klart värt att implementera. Att det går så mycket snabbare som det gör i wordpress betyder inte att det kommer att gå lika mycket snabbare i ett annat CMS. Men jag anser att eftersom att det är en så stor vinst i prestanda för wordpress så tror jag att det troligen är till stor nytta även för andra CMS. Då backbone är ett MVC ramverk så gör detta att det lämpar sig bra för stora projekt. Att det är ett ramverk för javascript gör att det enkelt går att binda events till specifika element och uppdatera enbart specifika delar av hemsidan som behövs vid dessa event och inte ladda om hela sidan. Detta är en stor del till att det blev så bra testresultat med backbone applikationen. I problemformuleringen står det att det inte finns någon färdig lösning för att integrera backbone i befintlig CMS kod. Det visade sig att det inte behövdes göra några större ändringar i källkoden för wordpress för att backbone applikationen skulle fungera. Jag trodde från början att det skulle vara svårare än vad det var att implementera min applikation. Detta visar att det är väldigt enkelt att implementera backbone i åtminstone wordpress. Det enda som egentligen behöver göras är att du någonstans laddar in dina scriptfiler. Det kan behövas vissa ändringar av källkoden i wordpress för att vissa saker ska fungera, jag var tex tvungen att ändra typen på en knapp från submit till button. Det är alltså fråga om att ändra i html kod och inte i php koden. Jag har i genomförandet gett en beskrivning över hur man gör för att integrera en backbone applikation. Även om beskrivningen gäller för just min applikation så ska det inte vara något problem för någon annan att följa mina instruktioner för att implementera sin egen i wordpress. När det gäller etiska och forskningsetiska aspekter så ska det inte vara några större problem med dessa. Dels för att det inte används några verkliga personer i varken undersökningsmetoden eller någonstans i applikationerna. Ingen ska heller behöva ta illa 25
29 upp av de texter som har använts vid testning då dessa texter är vanliga att använda vid testning och dem betyder inte något speciellt. Testerna kan återupprepas om någon skulle vilja göra detta. All kod för backbone applikationen finns i appendix. Det skulle däremot inte gå att göra tester på något annat CMS än wordpress med den kod som finns att tillgå då den enbart är anpassad för just wordpress. Enligt Nah Fui-Hoon (2007) så brukar användare referera till WWW som World Wide Wait och enligt Skadberg, Kimmel och James (2004) så försämras användarnas omdöme av webbsidans design och innehåll om det är för långa väntetider. Efter resultaten ifrån mina tester så kan man se att det är extremt stora vinster i prestanda. Detta hjälper då användarna väldigt mycket eftersom att de blir otåliga om det tar för lång tid att ladda sidan. Det skulle vara den samhälleliga nyttan. 7.3 Framtida arbete Eftersom att backbone är javascript så gör detta att det kan användas ihop med i princip vad som helst på webben och ändå fungera som det ska. Detta gör också att det är lätt att implementera i de flesta webbapplikationer utan att stöta på några större problem. Om någon vill använda koden som är skapad för detta examensarbete så skulle det inte gå att implementera den i vilken applikation som helst utan det skulle behövas vissa ändringar för att den ska fungera. Koden skulle däremot fungera som en bra grund att utgå ifrån och bygga något större. Vill någon återupprepa denna studie senare så ska detta inte vara några problem då all källkod för min applikation finns bifogad i rapporten och jag har i genomförandet gått igenom vilka filer som ska ändras i wordpress för att det ska fungera. Det som kan ställa till problem är om det inte går att få tag i samma version av wordpress eller de webbläsare som har använts vid testning. Ska jag se på lite kortare sikt när det gäller framtida arbete med det här examensarbetet så går det helt klart att fortsätta att bygga på wordpress med mer backbone för att på så vis vinna prestanda på fler ställen än bara vid kommentarer. Att implementera backbone i ett annat CMS än wordpress för att jämföra hur det påverkar olika CMS kan vara intressant att undersöka. Det vore också intressant att se om backbone kan vara till nytta vid utveckling av ett större system och om det kommer att fungera bra. Att kombinera backbone med någon form av förhämtning kan vara något som skulle ge intressanta resultat. Detta skulle kunna ge en stor prestandavinst för tunga sidor med innehåll som samma användare tittar på ofta. Det går då att få en vinst i prestanda både när det gäller att hämta informationen och att rendera den. Något som vore intressant att testa vore att kombinera backbone med node.js som är en plattform för javascript som gör det möjligt att skapa en applikation med enbart javascript. Detta går att göra eftersom att node.js har ett inbyggt HTTP bibliotek och kan då fungera som webbserver. Det vore intressant att se hur prestandan kan påverkas vid en kombination av dessa två. Något som jag personligen skulle tycka vara spännande är att utveckla en applikation där användarna tillåts att chatta med varandra där realtidsuppdatering används, detta är något där en kombination av node och backbone skulle kunna ge ett bra resultat tror jag. 26
Rubriktexten. Tilläggsrubrik. Upphovsperson Avdelning 2012
Rubriktexten Tilläggsrubrik Ett citat eller en kort text tagen ur innehållet i broschyren. Texten bör väcka intresse och locka till att läsa broschyren. Texten behöver inte fylla hela det gula fältet.
En mötesplats i centrum
Finlands svenska biblioteksförenings medlemstidning Nr 1/2011 En mötesplats i centrum EAHIL INTERNET LIBRARIAN INTERNATIONAL ISSOME s turpis vel urna luctus dictum. Morbi non libero mauris, vehicula facilisis
Inbjudan till professor Nome Neskens installation
Inbjudan till professor Nome Neskens installation Den 3 februari 2012 kl 18, i Akademisalen, Strandgatan 2, Vasa. www.abo.fi Med anledning av att professor i samhällsvetenskap, med inriktningen rural
Detta är en dokumentmall för examensarbeten. Dokumentmallen har följande egenskaper:
Detta är en dokumentmall för examensarbeten. Dokumentmallen har följande egenskaper: teckensnittet Times New Roman används genomgående. bröd har storlek 12 punkter och 1,15 radavstånd. i tabellen har storlek
Regular expressions. "regexps" "grep" Jan Erik Moström,
Regular expressions "regexps" "grep" Reguljära uttryck Relativt vanligt att vi vill manipulera eller söka i text Text är inte alltid strukturerad, exempel emailadresser i ett email Definition av mönster
Grafisk manual. En grafisk guide till vår identitet.
Grafisk manual En grafisk guide till vår identitet www.tstgruppen.se Grafisk manual Innehåll Logotyp 3 Logotyp / Alternativ... 3 Avstånd / placering... 4 Ej tillåten användning... 5 typografi 6 Vår Typografi...
Frågan om typsnitt för HT sönderfaller
Typsnitt för Heraldisk Tidsskrift Frågan om typsnitt för HT sönderfaller i två delar: dels omslag, dels inlaga. Val av typsnitt för omslagets styrs av att den grundläggande utformningen av framsidan skall
Välkomna till SJÖLOG 2017! Denna blankett är till för er som skall medverka på SJÖLOG 2017 och som skall presenteras i dess katalog.
Välkomna till SJÖLOG 2017! Denna blankett är till för er som skall medverka på SJÖLOG 2017 och som skall presenteras i dess katalog. Jättekul att ni skall medverka på SJÖLOG 2017! Nu börjar det bli dags
Manual Manual 1 Senaste uppdatering: 2015/03/26 Olsson & Gerthel
Manual Manual 1 Senaste uppdatering: 2015/03/26 Olsson & Gerthel Innehållsförteckning Personalrabatt... 1 Test2... 2 Test... 3 IT... 4 Servern... 5 Nätverket... 7 Personalrabatt Alla som arbetar här har
GRAFISK MANUAL Visuell identitet, logotyp och riktlinjer NOVEMBER 2013
GRAFISK MANUAL Visuell identitet, logotyp och riktlinjer NOVEMBER 2013 2 INNEHÅLL Innehållsförteckning INLEDNING... 3 LOGOTYP... 4 Versioner... 4 Användning... 5 Frizon... 5 SYMBOLEN... 6 TYPOGRAFI...
Välkomna! till e-butik.se
Välkomna! till e-butik.se Butiken - Butiken - Admin - Arbeta i butiken - Utseende - Viktigt att tänka på - Tips & Idéer Butiken Varukorgen längst ner 1/4 Butiken Varukorgen högst upp 2/4 Butiken Vänstermenyn
GRÄNSÄLVSGYMNASIET. Samhällskunskap 1b. Vårterminen Baksidan av media. En studie om bullar och bakverk i tidningen.
GRÄNSÄLVSGYMNASIET Samhällskunskap 1b Vårterminen 2016 Baksidan av media En studie om bullar och bakverk i tidningen Ram Streamingsson Innehållsförteckning Inledning... 1 Syfte och frågeställningar 1 Metod
Vår grafiska profil. Antagen av direktionen
Vår grafiska profil Antagen av direktionen 2016-12-16 En viktig del av vår profil är den grafiska. Vår profil ska hjälpa våra kunder att identifiera oss som avsändare och helst minnas oss på ett positivt
Innehåll. Inledning... 3 Typsnitt & färg... 4 Logotyp... 5 Visitkort... 6 Brevpapper... 7 Kuvert... 8 Produkter... 9 Hemsida... 10
Grafisk manual Innehåll Inledning... 3 Typsnitt & färg... 4 Logotyp... 5 Visitkort... 6 Brevpapper... 7 Kuvert... 8 Produkter... 9 Hemsida... 10 2 Inledning Företaget Lorem ipsum dolor sit amet, consectetur
F10 Mer CSS Dagens agenda
F10 Mer CSS Dagens agenda Stila formulär CSS-genererat innehåll Mediatyper Utskrift Negativa marginaler Sprites Gridbaserade layouter Ramverk Formulär Prydliga formulär #cform { width: 500px;} #cform
Personas och scenarios i webbutveckling - möjligheter och fallgropar. Rósa Guðjónsdóttir - PinkPuffin
Personas och scenarios i webbutveckling - möjligheter och fallgropar Rósa Guðjónsdóttir - PinkPuffin Tema Vad är personas och scenarios? Hur skapar man personas och scenarios? Hur använder man personas
Grafisk Profil. Northai
Grafisk Profil Northai Förord Vi har skapat en grafisk profil för Northai som enligt oss speglar företaget på bästa möjliga sätt. Profilen attraherar med dess svenska design tillsammans med de kinesisk
Grafisk manual 2010/2011 1
Grafisk manual 2010/2011 1 Förord Vi inom Ung Företagsamhet arbetar för fler företagsamma människor och fler företag i Sverige. Vi gör det genom utbildningskoncept i skolan. Var och en inom Ung Företagsamhet
kontorsmaterial/visitkort
kontorsmaterial/visitkort Det är viktigt att allt som syns utåt har en enhetlig profil, och här spelar kontorsmaterialet en viktig roll. Med kontorsmaterial menas visitkort, kontaktkort, meddelandeblock,
Grafisk manual för Göteborgs rättighetscenter. Regler och ramar för användande av logotyp, färger, typsnitt m.m både inom webb och tryck.
Grafisk manual för Regler och ramar för användande av logotyp, färger, typsnitt m.m både inom webb och tryck. 1 Innehåll Sida 3 4 Sammanfattning Sida 5 Färger Sida 6 8 Logotyp Sida 9 Bildspråk Sida 10
Utvärdering av Turistbyrå
23/09 2016 09:39:57 Allmänt Enkätens namn Utvärdering av Turistbyrå Upphovsman Richard Žižka Enkäts språk Svenska Enkätens URL http://dev.survio.com/survey/d/u3x3a9g1t0i9u5l9h Första svaret 23/09 2016
brandbook blågrön innovation
brandbook blågrön innovation blågrön innovation blue green innovations Grafisk profil för Blågrön Innovation (Marint Centrum) joar_l_j@hotmail.com Joar Lisberg Jakobsson 2011 Namnet Blågrön Innovation
Riktlinjer och inspiration till dig som gör annonser
Riktlinjer och inspiration till dig som gör annonser Kommunal har tagit fram exempelannonser i stående och liggandeformat. Det finns exempel med röd- och vit utfallande bakgrund. Vårt förstahandsval är
Appar med ryggrad. Introduktion till JavaScriptramverket Backbone
Appar med ryggrad Introduktion till JavaScriptramverket Backbone Vanlig webbsida Databas MVC - Model View Controller MVC - Model View Controller MVC Backbone.js Ger struktur Bygger på MVC konceptet Tvingar
Läs Mig Först Med fak
Läs Mig Först Med fak Denna fil innehåller några förklaringar till mallarna för Spikblad, Titelblad (Inlaga) samt Pärm. Informationen ges som pratbubblor och markeringar på bilder av den korrekta layouten
REGLER FÖR ANVÄNDNING AV LOGOTYPER, DEKORFÄRGER OCH TYPSNITT
REGLER FÖR ANVÄNDNING AV LOGOTYPER, DEKORFÄRGER OCH TYPSNITT 1 2008 Flemingsberg är ett varumärke Ett varumärke att vara stolta över Flemingsberg är ett varumärke. I stort sett allt som påverkar ett eller
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
Titel. kurs uppgift. Författare A & Författare B cid@student.chalmers.se
Titel kurs uppgift Författare A & Författare B cid@student.chalmers.se Fysik, Göteborgs Universitet Göteborg, 16 november 2015 Abstract Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus
GRAFISK MANUAL LATHUND 1.0 24.10.2013
GRAFISK MANUAL LATHUND 1.0 24.10.2013 INNEHÅLL NYCKELKOMPONENTER 5 LOGOTYP 6 TYPSNITT 16 TYPOGRAFI 18 FÄRGER 22 ANNONSER 27 AFFISCHER 29 Manualen är framtagen av Andrzej Olas PROFORMA HB 2013 2 Välkommen
Denna fil innehåller några förklaringar till mallarna för Spikblad, Titelblad (Inlaga) samt Pärm.
Läs Mig Först Spikblad.. sid 2-3 Titelblad.. sid 4-5 Pärm.. sid 6 Övrigt. Sid 7 Denna fil innehåller några förklaringar till mallarna för Spikblad, Titelblad (Inlaga) samt Pärm. I zip-filen som innehåller
Årsräkning/Sluträkning Period:
Årsräkning/Sluträkning Period: 2012-01-01-2012-12-31 Överförmyndarenheten Spårvägen 22 12345 Överby X Huvudman Underårig Namn Telefon Personnummer Evald Karlsson 390205-1234 Gatuadress Postnummer Postadress
F02 En första sida. Dagens agenda
F02 En första sida Dagens agenda doctype taggar, element, attribut, värden teckenkodning HTML/XHTML Indentering Block/inline-element Struktur Se demo #2
Grafisk profil. Rapporter. uppdaterad
Grafisk profil Rapporter uppdaterad 2010-02-11 1 Innehåll Mått och storlekar inlaga S5... 3 Rapportformat S5... 3 Typsnittsformat... 3 Satsyta, mått... 4 Webbrapporter A4... 8 Rapportformat A4... 8 Typsnittsformat...
Godkänd av stadsstyrelsen xx.xx.2010
1 s grafiska anvisningar Godkänd av stadsstyrelsen xx.xx.2010 2 Innehåll Logons och den visuella profilens planering och genomförande: Aptual Oy www.aptual.fi Innehåll Logo Vapen Färgsättning Brevmall
VISUELL IDENTITET FÖR TELTEK
VISUELL IDENTITET FÖR TELTEK En grafisk profil är en viktig byggsten i skapandet av ett starkt varumärke och syftar till att skapa en enhetlig visuell identitet för Teltek som är enkel att känna igen för
KAMPANJPLATS XX Projektplan
2007-03-01 1 (16) Projektplan Av: Emil Blomqvist 2007-03-01 2 (16) Innehåll 1 Projektidé och mål... 3 1.1 Bakgrund och projektidé... 3 1.2 Projektmål... 3 1.3 Avgränsningar... 3 2 Leverans och överlämning...
Årsräkning/Sluträkning Period: 2013-01-01-2013-12-17
Årsräkning/Sluträkning Period: 2013-01-01-2013-12-17 Överförmyndarenheten Myndighetsvägen 13B 12345 Kungshamn X Huvudman Underårig Namn Telefon Personnummer Astrid Axelsson 0523 71234 600101-1234 Gatuadress
ÄDELFORS FOLKHÖGSKOLA GRAFISK MANUAL. Ädelfors Folkhögskolas nya grafiska manual gäller fr.o.m. den 1 januari 2015
ÄDELFORS FOLKHÖGSKOLA GRAFISK MANUAL Ädelfors Folkhögskolas nya grafiska manual gäller fr.o.m. den 1 januari 2015 INNEHÅLLSFÖRTECKNING FÖRORD Den grafiska manualen 03 Våra kärnvärden 04 LOGOTYP Vår logotyp
Innehåll. 3. Utskrift under arbetets gång...11
Innehåll 1. Om GNS-mallen...1 1.1 Om mallen...1 1.2 Viktiga skillnader...2 1.3 Att arbeta med formatmallar...2 1.3.1 Applicera formatmallar...4 1.3.2 Radera formatering...4 2. Exempel på formatmallar...5
LOGOTYP GO WITH THE FLOW
DESIGNBOK JUNI 2014 LOGOTYP GO WITH THE FLOW + = SÅ HÄR ANVÄNDS LOGOTYPEN Logotypens frizon, 8 mm. Logotypen används endast mot vit bakgrund. PROFILFÄRGER Mogen stark och mustig kallar vi FAIs färgskala.
Wireframes Arla - Naturens egen sportdryck Christoffer Du Rietz GreatWorks
Wireframes Arla - Naturens egen sportdryck Christoffer Du Rietz GreatWorks Page 2 Startsida... Navigering inom subsiten. Länkar till nya sidor inom substrukturen. Få 25% på träningskläder! Någon i SOK/
Innehållsförteckning. Innehåll
Javascript övningar Innehåll Detta dokument innehåller flera stycken olika javascript-övningar i olika svårighetsnivåer. Vissa är utförligare beskrivna än andra. Du kan själv välja vilka du vill testa
Logotyp. Så här kan pilen användas i en punktlist. Frizon för logotyp. Minsta tillåtna bredd är 15 mm
Minimanual 2015 Logotyp Logotypen placeras vanligtvis högerställd i nederkant som avsändare till det huvudsakliga budskapet, med en bredd som aldrig överstiger 41 mm (gäller ytorna A6-A3). Överst till
Färgkodning: Turism & Evenemang. Näringsliv. Kommun & Samhälle. Nya Gällivare
GRAFISK MANUAL Färgkodning: För att få en tydlig, visuell indelning av Gällivares olika verksamhetsben jobbar Gällivare med färgkodning. Nedan visas de olika färgerna med tillhörande värden i olika färgrymder.
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
Dagstidningsannonsering med logga mindre än 42 mm. Dagstidningsannonsering med logga större än A5 samt magasin. Vid svartvita annonser.
LOGOTYP I rekryteringsmaterial 2011/2012/2013 skall etikettlogotypen (labeln) användas. Vit logotyp mot röd botten får endast användas när slutformatet är större än A5 (105 mm bredd), dvs när logotypen
F13 HTML5 Dagens agenda
F13 HTML5 Dagens agenda HTML5 Struktur Outline Nya element APIr Microdata/RDF/Microformats WHAT Working Group? Initiativ, 2004, startat av Apple, Mozilla och Opera WHATWG adapterades 2007 av W3C och rekommendationen
Profilmanual. Övergripande regler och riktlinjer Reviderad: 2011-06-30
Profilmanual Övergripande regler och riktlinjer Reviderad: 2011-06-30 Innehåll Inledning 3 Grafiska grunder 4 Logotyp 5 Färger 6 Teckensnitt Neo Sans 7 Teckensnitt Calibri 8 Teckensnitt Arial 9 Dekor 10
1. Om GNS-mallen. 1.1 Om mallen. 1.2 Viktiga skillnader
Innehållsförteckning 1. Om GNS-mallen...1 1.1 Om mallen...1 1.2 Viktiga skillnader...1 1.3 Om formatmallar...2 1.4 Att arbeta med formatmallar...2 1.4.1 Lista formatmallar...2 1.4.2 Applicera formatmallar...3
Profilmanual Version 1.0. 2003-12-03
Profilmanual Version 1.0. 2003-12-03 Innehåll Förord 3 Ett varumärke och en logotyp 4 Vår logotyp 5 Logotypens uppbyggnad 6 Logotypens reproduktioner 7 Logotypens fria yta 8 Logotypens storlekar 9 Internationell
Designprocessen Användarcentrerad design
Syfte Förstå syftet och nyttan med användarcentrerad design Förstå processen Veta vilka metoder som används för att uppnå hög användbarhet Designprocessen Användarcentrerad design Rósa Guðjónsdóttir Vem
Sara Berlekom Metallvägen 30 719 40 Garphyttan 070-2430821 sara@xoda.se. Webbplats: www.xoda.se www.berlekom.se. Portfolio
Sara Berlekom Metallvägen 30 719 40 Garphyttan 070-2430821 sara@xoda.se Webbplats: www.xoda.se www.berlekom.se Portfolio Utställnings affisch Sara Berlekom Målningar, teckningar och foton Hantverksboden
Visuell identitet garant
Visuell identitet garant sveriges radio VER 1.3 8 1. Logotypen Logotypen består av ett ordmärke där bokstäverna S och R skapar ett bokstavsmärke. Ordmärke och bokstavsmärke används alltid tillsammans och
Innehåll. 3. Utskrift under arbetets gång...11
Innehåll 1. Om GNS-mallen...1 1.1 Om mallen...1 1.2 Viktiga skillnader...1 1.3 Att arbeta med formatmallar... 1.3.1 Applicera formatmallar...3 1.3.2 Radera formatering...4 2. Exempel på formatmallar...5
Ö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
GRAFISKA ANVISNINGAR BUSSPOOLEN - VÄSTERBOTTEN
GRAFISKA ANVISNINGAR BUSSPOOLEN - VÄSTERBOTTEN Logotype och symbol Färger Pantone 485 C 100% svart 70% svart 50% svart 40% svart Pantone 485 C 100% svart 70% svart 70% svart 50% svart 100% svart 40% svart
F02 HTML. Föreläsning 2, HT2013 HTML. Kurser: Klientbaserad Webbutveckling 1DV435. Johan Leitet
Föreläsning 2, HT2013 HTML F02 HTML Kurser: Klientbaserad Webbutveckling 1DV435 Johan Leitet F02 HTML Dagens agenda doctype taggar, element, attribut, värden teckenkodning HTML/XHTML
Visuell identitet P4. sveriges radio VER 1.3 104
Visuell identitet P4 sveriges radio VER 1.3 104 19. P4 / Verktygslåda Verktygslådan för P4 lyfter fram guidens breda, nyfikna och folkliga karaktär. Verktygslådan består av P1:s logotyp i svart, vitt eller
Modern Demokratisk Trygg
Svenska lantbruksproducenternas centralförbund SLC r.f. GRAFISK PROFIL 2015 Modern Demokratisk Trygg 2 3 Använd denna bok som en inspirationskälla. Agency Leroy 2015 4 5 6 7 8 9 SLC är en organisation
GRAFISK M A N U A L SVAB
GRAFISK MANUAL SVAB Ver. 1 080801 Vår grafiska profil... 4 Logotyp... 6 Logotyp - Frizon... 8 Logotyp - Korrekt användande... 10 Logotyp - Felaktigt användande... 12 Färger... 14 Typografi... 18 Layout...
GRAFISK PROFIL Innehåll
Grafisk profil Innehåll Logotyp...3 Färg...4 Typsnitt...5 Korrespondens...6 Visitkort...10 Butik Återbruk...12 2 Logotyp Ursprungsformat, liggande Stående Nätverk Sverige-Lettlands logotyp består av en
Grafisk manual
Grafisk manual Innehåll Inledning... 3 Logotypen... 4 Placering och frizon... 5 Logotypens färger... 6 Kommunvapnets historia... 7 Typografi... 8 Grafiska element... 9 Budskapen... 10 Färgranden... 11
ROUND TABLE 117 LINKÖPING-FILBYTER
ROUND TABLE 117 LINKÖPING-FILBYTER Round Table 117 Linköping-Filbyter grafisk profil 2016. Ord och form av Alexander Åkerberg. Fotografi av Oskar Lüren. I Round Table möter du gamla vänner för första gången
SÅ HÄR SPRIDER VI BILDEN AV HEMSLÖJDEN.
INLEDNING STARTSIDA Har du frågor eller funderingar rörande det här dokumentet? Per Björklund Kommunikatör M: 070-890 94 58 T: 08-54 54 94 58 E: per.bjorklund@hemslojden.org SÅ HÄR SPRIDER VI BILDEN AV
BRA. Nytt flygbolag, nya möjligheter. Destinationer. Resenären. Fakta. Mediakanaler. Redaktionell produktion & Projektledning.
Nytt flygbolag, nya möjligheter Sverige har fått ett nytt inrikesflygbolag med mer än 2,2 miljoner passagerare om året. BRA Braathens Regional Airlines är en saanslagning av Malmö Aviation och Sverigeflyg.
INTRODUKTION TILL ANGULAR JS
INTRODUKTION TILL ANGULAR JS DEL 1 Mahmud Al Hakim www.alhakim.se mahmud@alhakim.se VAD ÄR ANGULAR? Angular är ett JavaScript ramverk. Angular används för utveckling av frontendwebbapplikationer. Angular
Kocktävlingen Äkta Rök E-post kundtjanst@aktarok.se
Vår/sommar 2016 Kocktävlingen Äkta Rök E-post kundtjanst@aktarok.se Sveriges Äkta Rök kock 2015 Tisdagen den 5 maj 2015 gick startskottet för Sveriges Äkta Rök kock 2015 som är en kocktävling för professionella
Vår grafiska profil en viktig del i hur vi uppfattas.
1 2 Vår grafiska profil en viktig del i hur vi uppfattas. Vår framtoning är egentligen inte bara en grafisk fråga. Det är främst resultatet av det dagliga och konsekventa arbete som vi alla lägger ned
RIKSUTSTÄLLNINGARS BARN- & UNGDOMSSTRATEGI 2012-2014
RIKSUTSTÄLLNINGARS BARN- & UNGDOMSSTRATEGI 2012-2014 Print Visby 2011 INNEHÅLLSFÖRTECKNING 4. 5. 7. 10. Syfte Fokusområden Här beskrivs vilka områden som lorem isum dolor sit. In sed dolor viverra enim
Grafisk manual
Grafisk manual 2018-04-30 Innehåll Inledning... 3 Logotypen... 4 Placering och frizon... 5 Logotypens färger... 6 Kommunvapnets historia... 7 Typografi... 8 Grafiska element... 9 Budskapen... 10 Färgranden...
Martinsons Grafisk manual. Grafisk Manual
Grafisk Manual 1 INNEHÅLLSFÖRTECKNING Martinsons visuella identitet...3 Logotyp...4 Dekorelement...8 Typografi...9 Färger...10 Korrespondensmaterial...11 Pärm...17 Mapp...18 Trycksaker...19 Annonser...24
Modern webbutveckling. av Robert Welin-Berger
Modern webbutveckling av Robert Welin-Berger robertwb@kth.se Modern webbutveckling 1. Projektstorlek och Arkitektur 2. Callbacks 3. Event driven arkitektur 4. MEAN stack 5. ODM/ORM 1. Projektstorlek och
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
Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php
Introlektion PHP är ett av de enklare språken att lära sig just pga. dess dynamiska struktur. Det används för att bygga upp båda stora och mindre system. Några vanliga system som använder sig av PHP är
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
Avhandlingens titel med plats för undertitel
Guide till utformning av din avhandling Här får du råd och tips om hur du kan använda Kunskapsdatabasens mall vid skapande av manus till avhandling. Skriver du ut mallen syns sidornas korrekta storlek
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
Grafisk profil RIKTLINJER OCH STÖD I VÅRT KOMMUNIKATIONSARBETE. osthammar.se
Grafisk profil RIKTLINJER OCH STÖD I VÅRT KOMMUNIKATIONSARBETE Tillsammans förmedlar vi bilden av Östhammars kommun Vårt varumärke Den bild vi förmedlar av oss själva är betydelsefull idag kanske mer än
GRAFISK PROFILMANUAL
GRAFISK PROFILMANUAL GRAFISK PROFILMANUAL Allt arbete som utförs i Gislaveds kommuns namn har i grunden ett och samma syfte att göra livet lättare för alla som bor och verkar i vår kommun. Med detta i
Glimåkra folkhögskola
grafisk manual Glimåkra folkhögskola Den grafiska manualen är överenskomna regler inom Glimåkra folkhögskola som anger hur vi bör kommunicera internt och externt. Manualen anger råd och riktlinjer för
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
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
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
Programmeringteknik. Planering 2014-05-12 MÅL LABB: MOMENT LAB4 HTML - EXEMPEL HTML. Webbdelen
MÅL Programmeringteknik Webbdelen Efter webbmomentet ska du: kunna använda ett tiotal kommandon i: HTML (göra webbsidor) CSS (webbsidans utseende) Javascript (programmering - klienten) PHP (programmering
FoU primärvård Fyrbodal FoUU-centrum Fyrbodal Lathund för hur man skriver en rapport för en litteraturstudie
FoU primärvård Fyrbodal FoUU-centrum Fyrbodal Lathund för hur man skriver en rapport för en litteraturstudie Omslag Mallens uppgifter och loggor ska finnas. Rapportnummer lämnas av FoUkoordinator. Titelsidans
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
Grafisk manual för företagssamarbeten BARNCANCERFONDEN GRAFISK MANUAL FEBRUARI 2017
Grafisk manual för företagssamarbeten Inledning Hej samarbetspartner! Välkommen till Barncancerfondens grafiska värld och manualen för märket Vi stödjer Barncancerfonden. Skatten du har i din hand hjälper
Del 2 Grafisk profil
Del 2 Grafisk profil 02.1 Logotypen Skåne Nordost logotyp består av den nya symbolen och texten Skåne Nordost. Logotypen ska stå som avsändare för alla kommunikation, internt såväl som extern. Nordost
Grafiskt profilprogram 1. Grafiskt profilprogram
Grafiskt profilprogram 1 Grafiskt profilprogram 2015 2 Grafiskt profilprogram Grafiskt profilprogram 3 Innehållsförteckning 4. Logotyp - De olika varianterna av logotypen och hur den används. 6. Typografi
SALTSTÄNK. Nummer: 6 Icke RS/TS-kontrollerat medlemsorgan för Göteborgs Sjöscoutkår Årgång: 61
Utgivare: Krabban Krönikör: Åsa-Micaela SALTSTÄNK Nummer: 6 Icke RS/TS-kontrollerat medlemsorgan för Göteborgs Sjöscoutkår Årgång: 61 PINGSLÄGER 2011 Såhär glad är man när man seglar till Nya Elfsborg
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
JAVASCRIPT. Beteende
JAVASCRIPT Beteende OVERVIEW HTML Formulär JavaScript Syntax Events DOM Validering av fomulär WEBBPROGRAMMERING PÅ KLIENTSIDAN Skriptspråk som körs på klientsidan (klientskript) Koden exekveras i webbläsaren
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
Anvisningar för litteraturstudie kurs Vetenskapligt Förhållningssätt ST-arbete
Anvisningar för litteraturstudie kurs Vetenskapligt Förhållningssätt ST-arbete 1 Innehållsförteckning Anvisningar för litteraturstudie, ST-arbete... 1 Omslag... 1 Sammanfattning... 1 Introduktion... 1
Som man sår får man skörda...
Som man sår får man skörda... Grafiska anvisningar för Raps Egen identitet i den stora floran En upp till 1,5 meter hög ört med blågröna blad och gula blommor i toppställda klasar. Brassica napus, om man
Alumni International site Kontakta oss A - Ö
Welcome! LOREM IPSUM DOLOR SIT AMET, CONSECTETUR ADIPISCING ELIT. FUSCE EU CONVALLIS DUI. MAURIS RISUS TELLUS, MATTIS AC POSUERE QUIS, PULVINAR AUCTOR TURPIS. Promo 8 promo 23 VEL EUM IURE REPREHENDERIT
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
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
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
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