Dagens föreläsning. Ställa in Apache för Python. Skapa ett Pythonscript. Skapa en statisk sida. Lagerdesign för webbkommunikation

Relevanta dokument
Dagens föreläsningar

Dagens föreläsningar

Repetition. Hypertext. Internet HTTP. Server och klient Text försedd med länkar till andra texter. Många sammankopplade nät

Repetition. Hypertext. Internet HTTP. Server och klient Föreläsning 2. Text försedd med länkar till andra texter. Många sammankopplade nät

Webbteknik. Innehåll. Historisk återblick Teknisk beskrivning Märkspråk Standardisering Trender. En kort introduktion

ORDLISTA WEBBDESIGN 100P

21/01/2016. Stilmallar. styra utseendet av webbplatsen DEL 1. Karin Fahlquist. index.html. recept.html frukt.html grönsaker.html

Tentamen ITK:P2. Inga hjälpmedel tillåtna förutom penna och papper. Skriv tydligt och texta gärna. 14 st frågor, 70 poäng.

Webbservrar, severskript & webbproduktion

Hur hänger det ihop? För att kunna kommunicera krävs ett protokoll tcp/ip, http, ftp För att veta var man skall skicka

Olika slags datornätverk. Föreläsning 5 Internet ARPANET, Internet började med ARPANET

HTML och CSS. Eric Elfving Institutionen för Datavetenskap (IDA)

EDA095 HTML. Per Andersson. April 26, Lund University Innehåll: HTML, CSS, DOM, JavaScript

ITK:P2 F1. Hemsidor med HTML HTML. FTP, HTTP, HTML, XML och XHTML

Webbsidor och webbservrar

F07 Stilmallar Dagens agenda

HTML och CSS. Eric Elfving Institutionen för datavetenskap. 18 augusti 2015

Lektion 2 - CSS. CSS - Fortsätt så här

Förkunskaper: Tim Berners Lees vision webbläsarkriget W3C strukturtagg <h1> layout-tagg <font size="6">

Föreläsning 4. CSS Stilmallar för webben

En grundkurs i hemsidor och hur de är uppbyggda

Avancerade Webbteknologier

Webbprogrammering. Sahand Sadjadee

Programmeringteknik. Planering MÅL LABB: MOMENT LAB4 HTML - EXEMPEL HTML. Webbdelen

/*formatering för html och body elementen - elementens höjd sträcker sig över hela webbläsarfönstrets höjd*/ html, body { height: 100%; }

Inför prov 1 i webbdesign

Lektion 2 Del 1 Kapitel 6

Labora&on 7 Syfte med laborationen:

Introducerande övningar i HTML

TNMK30 - Elektronisk publicering

Karlstads Universitet, Datavetenskap 1

12/9/2010 REGLER WEBBPRODUKTION WEBBDESIGN CASCADING STYLE SHEETS CSS LOKALA STILMALLAR GLOBALA STILMALLAR. Selektor. Deklaration

Webbens grundbegrepp. Introduktion till programmering. Ytterligare exempel. Exempel på webbsida. Föreläsning 5

Övning (X)HTML 2. Sidan 1 av

F02 En första sida. Dagens agenda

En stiligare portal Laboration 3

Introduktion till programmering

Internet A. HTML Grunder Maximilien Chiang 1

Webbteknik II. Föreläsning 4. Watching the river flow. John Häggerud, 2011

Labora&on 8 Formulär övningar/uppgi6er

En bortsprungen katt

Webbutveckling Laboration 1: HTML5 och CSS3.

Klient/server. Översikt. Lektion 1: Webbtekniker från Microsoft. Webbteknik från Microsoft. Klient/server. Designmönster. Utrullning.

Webbprogrammering 725G54

Webbprogrammering - 725G54 PHP. Foreläsning II

2I1073 Föreläsning 1. HTML och XHTML XHTML

Laboration 3 HTML och struktur samt frågorna A - C övningar/uppgifter

Din egen webserver med Apache

Konstruktion av datorspråk

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.

Nätet. Uppgiften. Nivå

Uppmärkningsspråk. TDP007 Konstruktion av datorspråk Föreläsning 3. Peter Dalenius Institutionen för datavetenskap

Uppmärkningsspråk. TDP007 Konstruktion av datorspråk Föreläsning 3. Peter Dalenius Institutionen för datavetenskap

Webbteknik II. Föreläsning 5. Restless farewell. John Häggerud, 2011

ASP.NET MVC. Copyright Mahmud Al Hakim Innehåll

Objektorienterad Programkonstruktion. Föreläsning 10 7 dec 2015

Introduktion HTML och PHP 732G16 Databaser design och programmering

Statistik från webbplatser

WEBBUTVECKLING Kursplanering

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

Övnings hemtentamen med förslag till lösning, webbprogrammering

Webbpublicering. Teknikintroduktion 1 Jody Foo (jodfo@ida.liu.se)

Webbteknik för ingenjörer

XML. Extensible Markup Language

Elektronisk publicering TNMK30

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

F06 A table form Dagens agenda

Lektion 3 HTML, CSS och JavaScript

CSS- Cascading Stylesheets

TDP003 Projekt: Egna datormiljön

Arbetsmaterial HTML pass 1 - Grunder

Lite mer om CGI-programmering

Kursplanering Utveckling av webbapplikationer

Språk för webben introduk4on 4ll HTML

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

E12 "Evil is going on"

Tentamen etjänster och webbprogrammering

Strukturering med XML och DTD

Frågor och svar - Diagnostisk prov ht14 - Webbutveckling 1

F02 HTML. Föreläsning 2, HT2013 HTML. Kurser: Klientbaserad Webbutveckling 1DV435. Johan Leitet

TDDD52 CSS. Färger. Färger 1/3/13

Att bygga enkla webbsidor

Internets historia Tillämpningar

Kommunikation. Dator med webbläsare Förfrågan: Webserver. Returnerar HTML-kod

TENTAMEN I INTRODUKTION TILL MEDIEPRODUKTION, 5p

Labora&on 2 HTML och validering övningar/uppgi:er

Uppmärkningsspråk. TDP007 Konstruktion av datorspråk Föreläsning 4. Peter Dalenius Institutionen för datavetenskap

behövs för enhetlighet, tala samma språk, så att användaren kan lära sig och använda det vidare.

Xhtml och CSS.Tillämpad fysik och elektronik Per Kvarnbrink (redigering Ulf Holmgren 2011)

HTML. Introduktion till HyperText Markup Language

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

HTML, SGML, CSS, XML, XHTML, MIME, HTTP

Webbdesign vt Innehållsförteckning

F8 Webbteknologier 1. Dynamiska webbsidor

Hyperlänkar. I HTML skapar man en hyperlänk med taggen <a> </a>, som är en förkortning av ordet ankare, på (engelska anchor).

Laboration 2: Xhtml och CSS.

<Webbutvecklare lektion="02"> Kursledare: Mahmud Al Hakim

Att styla webbsidor. Nivå. Uppgiften

Swedbank Mobile Loadtesting. LoadRunner Mobile App protocol

Content Management System. Publiceringssystem

Transkript:

Dagens föreläsning Scriptprogrammering Sommaren 2007 Webbuppgift HTTP och hur kontakten sker mellan klient och server. Apache-servern HTML. Exekvera Pythonscript. Formulär. Model-View-Controller på webben. CSS. Presentation av uppgiften. ORM och Zope. Django. IT Uppsala universitet 2007-06-26 2 Lagerdesign för webbkommunikation Ställa in Apache för Python Tre lager (förenklat). Klient och server kommunicerar via protokollet HTTP, HyperText Transfer Protocol. HTTP är tillståndslöst, varje förfrågan behandlas separat. Klient Server Databas Då WAMP installeras väljs en mapp som är rotkatalog för servern. Standardinställningen är {sökväg till WAMP\www till exempel c:\program\wamp\www. För att testa servern anges adressen http://localhost i en webbläsare. 2007-06-26 3 2007-06-26 4 Skapa en statisk sida. HTML-koden sparas som test01.html i mappen www\python. Adressen blir därmed http://localhost/python/test01.html. Skapa ett Pythonscript Pythonkoden sparas som script01.py i mappen www\python. Adress: http://localhost/python/script01.py.!c:/program/python25/python.exe <head> <title>hello web world!</title> </head> Detta är ett första HTML-test. <head> <title>hello dynamic world!</title> </head> Klockan är. """ 2007-06-26 5 2007-06-26 6 1

Exekvera Pythonscript Om vi inte talar om för Apache att Pythonscript ska exekveras kommer de att visas som vanliga textfiler. Steg 1: Lägg till exekvering av script för rotkatalogen. Steg 2: Tala om att py-filer är exekverbara script. <Directory "C:/Program/wamp/www"> Possible values for the Options directive are "None", "All", or any combination of: Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews Note that "MultiViews" must be named *explicitly* --- "Options All" doesn't give it to you. The Options directive is both complicated and important. Please see http://httpd.apache.org/docs/2.2/mod/core.htmloptions for more information. Options Indexes FollowSymLinks ExecCGI AllowOverride controls what directives may be placed in.htaccess files. It can be "All", "None", or any combination of the keywords: Options FileInfo AuthConfig Limit AllowOverride all Controls who can get stuff from this server. onlineoffline tag - don't remove Order Deny,Allow Deny from all Allow from 127.0.0.1 </Directory> 2007-06-26 7 2007-06-26 8 Steg 2: Lägg till py-filer AddHandler allows you to map certain file extensions to "handlers": actions unrelated to filetype. These can be either built into the server or added with the Action directive (see below) To use CGI scripts outside of ScriptAliased directories: (You will also need to add "ExecCGI" to the "Options" directive.) AddHandler cgi-script.cgi.py Därmed är Apache konfigurerat. Det finns andra (bättre) sätt att exekvera Pythonscript i Apache men detta är det enklaste. Felmeddelanden Studera följande kod som innehåller ett fel:!d:/program/python25/python.exe print "<p>hej</p>" pri print "Hej igen" Då detta exekveras visas allt som genererats fram till felet. Ingen information om felet visas. 2007-06-26 9 2007-06-26 10 Skriv ut information Lägg till raden.!d:/program/python25/python.exe print "<p>hej</p>" pri print "Hej igen" Uppmärkningsspråk. Uppmärkningsspråk används för att märka innehållet i en textfil. Märkningen är abstrakt. Man talar om att en text är en rubrik, inte hur rubriken ska se ut. SGML, Standard Generalized Markup Language, är ett metaspråk för uppmärkning. Används inte lika mycket som sina derivat. XML, extensible Markup Language, är en förenklad variant av SGML som förenklar arbetet att implementera en parser. XML används som bas för många olika standardformat såsom XHTML, SVG, RSS och SOAP. HTML, HyperText Markup Language, baserades från början på SGML men implementerar inte dess strikta krav på uppmärkningen. 2007-06-26 11 2007-06-26 12 2

Introduktion till HTML Som vi redan sett består HTML av ett antal "taggar" som beskriver vad texten inuti taggarna är för typ av text. Taggar skrivs <tagnamn> </tagnamn> eller <tagnamn/>. Varje HTML-dokument bör börja med en <html/>tag. Därefter följer en <head/>-tag som innehåller metainformation om dokumentet. Sist kommer <body/>-taggen som innehåller själva innehållet. HTML skiljer inte på stora och små bokstäver men w3 rekommenderar användandet av små bokstäver. å ä ö Å Ä Ö Svenska tecken å ä ö Å Ä Ö 2007-06-26 13 2007-06-26 14 <head></head> <h1></h1> <p></p> <b> <i></i> <a></a> <table></table> <tr></tr> <td></td> <form></form> <img/> Vanliga HTML-taggar HTML-dokument. Metainformation om dokumentet. Innehållet i dokumentet. Rubrik nivå 1, 2 o.s.v. Paragraf. Fet stil. Kursiv stil. Hyperlänk. Tabell. Rad i tabell. Kolumn i tabell. Formulär. Bild. Attribut för taggar Taggar kan ha attribut som anges med namn och värde.!d:/program/python25/python.exe <p title="denna text visas inte direkt."> Sätt muspekaren på texten. </p> """ 2007-06-26 15 2007-06-26 16 Bilder Länkar!d:/program/python25/python.exe Ett litet bi:<br/> <img src="images/honeybee.jpg" """!d:/program/python25/python.exe <a href="http://www.google.se">hitta en sak.</a> """ 2007-06-26 17 2007-06-26 18 3

Formulär Formulär används för att skicka information från klienten till servern. Eftersom HTTP är tillståndslöst måste kommunikationen ske i flera steg. Steg 1: Servern skickar ett formulär till klienten. Steg 2: Användaren fyller i formuläret och klickar på "Skicka in"-knappen. Steg 3: Servern tar emot informationen från formuläret och utför något beroende på innehållet. Steg 4: Oftast skickar servern tillbaka någon form av information som meddelar vad som hänt med informationen. Exempel med formulär Ett formulär innesluts av <form/>-taggen och kan innehålla valfritt antal <input/>-taggar. action-attributet anger vilket script som ska hantera formuläret. method-attributet styr hur informationen skickas till det mottagande scriptet. Varje <input/>-tag har en typ och ett namn. <h1>litet formulärexempel</h1> <p>fyll i vad du heter och vilket år du är född:</p> <form action="handleform01.py" method="get"> <input type="text" name="fullname" /><br/><br/> <input type="text" name="year" /><br/><br/> <input type="submit" value="behandla formulär" /> </form> 2007-06-26 19 2007-06-26 20 Formuläret i webbläsaren <h1>litet formulärexempel</h1> <p>fyll i vad du heter och vilket år du är född:</p> <form action="handleform01.py" method="get"> <input type="text" name="fullname" /><br/><br/> <input type="text" name="year" /><br/><br/> <input type="submit" value="behandla formulär" /> </form> Hanteraren!d:/program/python25/python.exe import datetime import cgi form = cgi.fieldstorage() if form.has_key("fullname") and \ form.has_key("year"): body = """Hejsan %s. Du är %s år gammal.""" % \ (form["fullname"].value, datetime.date.today().year - int(form["year"].value)) else: body = """Felaktigt formulärdata.""" <head> <title>hello dynamic world!</title> </head> %s """ % body 2007-06-26 21 2007-06-26 22 Särskilda tecken Andra uppmärkningsspråk Vissa tecken har särskilda betydelser i HTML och måste därför skrivas som "escapekoder". >>> import cgi >>> cgi.escape("<>åäöåäö%&?") '<>\x86\x84\x94\x8f\x8e\x99%&?' HTML:s "luddighet" gör det olämpligt som format för datalagring. Försök har gjorts och görs för att strama upp HTML, exempelvis XHTML-validering. Det är bättre att spara data i ett rigoröst definierat format, exempelvis XML, och sedan omvandla det till HTML när det ska skickas till en klient. 2007-06-26 23 2007-06-26 24 4

Layout för strukturerade dokument HTML har taggar som styr innehållets utseende, exempelvis <b/> och <i/>. Typsnitt kan detaljstyras med <font/> och tabeller kan ges en specifik layout genom attributinställningar. Genom att blanda layout och innehåll bryter vi mot designmodellen Model-View-Controller (MVC). En bättre lösning är att ange layout separerat från HTML-dokumentet. CSS Cascading Style Sheets är ett sätt att definiera en design separat från ett HTMLdokument. Används ofta i kombination 2007-06-26 25 2007-06-26 26 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/tr/html4/loose.dtd"> <head> <title>racing with rails</title> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> <style type="text/css"> <!-- @import url(styles.css); --> </style> </head> <!-- BaseWrapper --> <div id="basewrapper"> <!-- Header --> <div id="header"> <h1>racing with rails</h1> <!-- /Header --> HTML-koden <!-- ContentWrapper --> <div id="contentwrapper"> <!-- MainContent --> <div id="maincontent"> <h1>den fina hemsidan</h1> <p>text om vad som helst</p> <!-- /MainContent --> <!-- Menu --> <div id="menu"> <ul id="menulist"> <li><a href="">hem</a></li> <li><a href="">sida</a></li> </ul> <!-- /Menu --> <!-- /ContentWrapper --> <!-- /BaseWrapper --> /*--------------------------------------Basic style sheet --------------------------------------*/ /* GENERAL --------------------------------------*/ * { padding: 0; margin: 0; /* POSITIONING --------------------------------------*/ body { padding: 10px; margin: 0; divbasewrapper { width: 500px; divheader { width: 500px; height: 70px; padding: 20px 0 0 20px; margin: 0; divmaincontent { width: 360px; float: right; padding: 10px 0 0 0; divmenu { width: 110px; float: left; padding: 10px 0 0 20px; CSS-koden /* TYPOGRAPHY ----------------------------------*/ body { font-size: 75%; font-family: Verdana, Arial, Helvetica, sans-serif; divheader h1 { font-size: 3.5em; font-family: "Times New Roman", Times, serif; divmaincontent p { divmaincontent h1 { font-size: 1.7em; /* COLOR ----------------------------------*/ body { background-color: ffffff; color: 666666; divheader { background-color: eeeeee; border-bottom: 3px solid 90b11f; divmaincontent h1 { color: FF3300; 2007-06-26 27 2007-06-26 28 Utan CSS Med CSS 2007-06-26 29 2007-06-26 30 5

Inlämningsuppgiften Uppgiften består i att skapa ett bokningssystem för en tandläkarmottagning. Utförs i grupper om två personer. Inlämningsuppgiften lämnas in skriftligt enligt instruktionerna på nätet. En muntlig tentamen kommer att äga rum under vecka 34. Förutsättningar Mottagningen har öppet kl 8-17 måndag till fredag, förutom kl 12-13 då den är lunchstängd. Varje behandling startar på hel timma och pågår 60 minuter. Det räcker om prototypen kan hantera en enda vecka. Det ska finnas en startsida där patienterna hittar länkar till sidor för olika ändamål. När en patient ska boka en tid bör det finnas en veckoöversikt, där det framgår vilka tider som är lediga. En patient bör kunna få upp en förteckning över sina bokade tider, där det är möjligt att avboka besök vid behov. Tandläkaren ska ha en egen vy av veckoöversikten, där hon kan se alla bokade tider och där patientens namn och typen av behandling (undersökning, lagning, rotfyllning med mera) framgår. Normalt skulle sådan funktionalitet hanteras av ett separat lösenordsskyddat program, men för att förenkla prototypen ska även denna veckoöversikt vara tillgänglig för alla via webben. I övrigt är uppgiften relativt fri. Tveka inte att experimentera. Det viktiga är att öva programmering, inte få till en optimal bokningstjänst. 2007-06-26 31 2007-06-26 32 Nivå 2 Ska utföras individuellt av de som inte kan närvara vid den muntliga tentamen. Den som lämnar in nivå 2 ska även göra nivå 1 individuellt eftersom det är betygsgrundande. Betygsättning Inlämningsuppgifter och den muntliga tentamen betygssätts på skalan Underkänd, Godkänd och Väl godkänd. Varje inlämningsuppgift (två av webb, beräkning och bio) betygssätts separat. Tentamen utgör 40% och inlämningsuppgiften 60% av slutbetyget. Minst godkänt krävs på alla ingående delar. Totalt kommer alltså fyra betyg ges till dem som gör nivå 1 och två till dem som gör nivå 2. 2007-06-26 33 2007-06-26 34 Val av språk Efter moget övervägande har jag kommit fram till att inlämningsuppgiften nivå 1, får skrivas i Python, PHP, Perl eller Ruby. Nivå 2 får skrivas i Django, Zope, Ruby on Rails eller motsvarande ramverk i något av ovanstående språk. Inga "färdiga" bokningssystem får användas. Tyvärr kan jag endast erbjuda begränsad handledning i Perl. Övriga språk likvärdiga. Val av lagringsmodell Valet är fritt: Relationsdatabas (MySQL, SQLite). Textfil. Binär fil. pickle/shelve ORM. 2007-06-26 35 2007-06-26 36 6

Objektsdatabaser Relationsdatabaser är bra för stora mängder homogen data. Mindre bra för komplexa, heterogena datamängder. För dessa fall kan objektsdatabaser (ODBMS/OODBMS) vara en bra lösning. Objektsdatabaser Fördelar: Enkelt att spara objekt från exempelvis Python. Inga extra steg krävs för att spara dtaa från objektorienterade applikationer. Nackdelar: Få standarder. Få verktyg. Inbyggd motsättning mellan OOP:s inkapsling av data och databasers datacentrerade perspektiv. Sämre prestanda än relationsdatabaser. 2007-06-26 37 2007-06-26 38 Mappning En hybridlösning är att skapa en mappning mellan objekt i en applikation och tabeller i en relationsdatabas. Klasser motsvaras av tabeller och attribut av kolumner. Denna process kan enkelt automatiseras. Detta har gjorts med stor framgång i exempelvis Zope Object Database och Active Records i Ruby on Rails. Object publishing Alternativt sätt att hantera server-side scripting. CGI-programmering tenderar att resultera i stort fokus på generering av rätt text att skicka tillbaka till klienten. Object publishing innebär att steget från webbadresser till funktions- och metodanrop automatiseras. 2007-06-26 39 2007-06-26 40 Zope Zope är ett web publishing framework. Zope är skrivet i Python. Består av flera komponenter. De viktigaste är: Zope Object Request Broker (Zope ORB) HTML mallar. Separerar logik och layout. Object database. Bygger på samma teknik som shelve, men stöder även bland annat transaktioner och samtidig dataaccess. Zope ORB Agerar mellanhand mellan CGI-världen och Python objektvärld. Vanlig CGI-applikation: URL request Klient Server Zope ORB HTML response Zope: Vanliga URL request anrop Klient Server Zope ORB Pythonkod HTML response 2007-06-26 41 2007-06-26 42 7

Zope ORB översätter URL:er En URL (Uniform Resource Locator) anger hur ett objekt eller en tjänst lokaliseras på Internet. Zope ORB översätter en URL till metodanrop för objekt: http://server/path/mod/obj1/obj2/met_name?arg1=val1&arg2=val2 Detta översätts av ZORB:en på server till ett Pythonanrop för ett objekt i sökvägen path: mod.obj1.obj2.met_name(arg1=val1,arg2=val2) Zope ORB fortsättning Svaret som skapas av Pythonkoden omformateras av Zope (mha HTML-mallar) till HTML och skickas tillbaka till klienten. Klienten märker ingen skillnad. HTML-kod från statiskt innehåll och dynamiskt innehåll, oavsett om det genereras av Pythonscript via CGI direkt eller via Zope, ser likadant ut då det når klienten. 2007-06-26 43 2007-06-26 44 Django och Rails Webbramverk som levereras med en egen webbserver för snabb och enkel utveckling. Kräver få andra programvaror vilket gör det lättinstallerat. http://www.djangoproject.com http://www.rubyonrails.org 2007-06-26 45 2007-06-26 46 2007-06-26 47 8