<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Verkstedet</title>
	<atom:link href="http://e-tjenesten.org/verkstedet/feed/" rel="self" type="application/rss+xml" />
	<link>http://e-tjenesten.org/verkstedet</link>
	<description></description>
	<lastBuildDate>Tue, 14 Dec 2010 21:37:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.5</generator>
		<item>
		<title>Et kart over vennskap</title>
		<link>http://e-tjenesten.org/verkstedet/2010/12/et-kart-over-vennskap/</link>
		<comments>http://e-tjenesten.org/verkstedet/2010/12/et-kart-over-vennskap/#comments</comments>
		<pubDate>Tue, 14 Dec 2010 17:05:19 +0000</pubDate>
		<dc:creator>Wilhelm Joys Andersen</dc:creator>
				<category><![CDATA[Ukategorisert]]></category>

		<guid isPermaLink="false">http://e-tjenesten.org/verkstedet/?p=105</guid>
		<description><![CDATA[Paul Butler hos Facebook har laget et fantastisk kart (se det i full størrelse her!) som viser vennskap verden over. Her er ingen kontinenter, grenser, hav eller elver tegnet inn, men vi kan allikevel tydelig se konturene av verden slik vi kjenner den. Kartet forteller mye om sosiale og politiske forhold forskjellige steder i verden. [...]]]></description>
			<content:encoded><![CDATA[<p><a href='http://sphotos.ak.fbcdn.net/hphotos-ak-snc4/hs1382.snc4/163413_479288597199_9445547199_5658562_14158417_n.jpg' title='Se kartet i full størrelse'><img src='/bilder/201012-kart.png' alt='Se kartet i full størrelse.'></a></p>
<p>Paul Butler hos Facebook har <a href='http://www.facebook.com/notes/facebook-engineering/visualizing-friendships/469716398919'>laget et fantastisk kart</a> (<a href='http://sphotos.ak.fbcdn.net/hphotos-ak-snc4/hs1382.snc4/163413_479288597199_9445547199_5658562_14158417_n.jpg'>se det i full størrelse her!</a>) som viser vennskap verden over. Her er ingen kontinenter, grenser, hav eller elver tegnet inn, men vi kan allikevel tydelig se konturene av verden slik vi kjenner den. </p>
<p>Kartet forteller mye om sosiale og politiske forhold forskjellige steder i verden. Her er noen av tingene jeg finner mest interessant:</p>
<ul>
<li>Observer forskjellen mellom mellom <a href='http://en.wikipedia.org/wiki/East_Germany'>Øst-</a> og <a href='http://en.wikipedia.org/wiki/West_Germany'>Vest-Tyskland</a>. Det er gått 20 år siden <a href='http://en.wikipedia.org/wiki/German_reunification'>gjenforeningen</a>, men det er ingen tvil om hvor <a href='http://en.wikipedia.org/wiki/File:Deutschland_Bundeslaender_1957.png'>grensen</a> gikk. Vest-Tyskland skinner like lyst som Danmark, Nederland og England. Øst-Tyskland, med unntak av Berlin, ligner mer på Polen eller Tyrkia.
<li>Se på grensen mellom USA og Canada mellom de store innsjøene og vestkysten. Det er mange vennskap internt i USA og i Canada, men nesten ingen mellom de to landene. Du kan se det samme mellom Tsjekkia og Tyskland og langs den greske grensen mot Albania, Makedonia og Bulgaria.
<li>Russland og Kina mangler nesten fullstendig. I Russland bruker folk heller <a href='http://vk.com/'>VKontakte</a>. I Kina bruker de <a href='http://venturebeat.com/2010/04/07/china’s-top-4-social-networks-renren-kaixin001-qzone-and-51-com/'>QQ</a>. I tillegg til at Facebook er blokkert av Den Store Brannmuren, selvsagt. Unntaket er Hong Kong.
<li>Facebook-bruk er et fullstendig urbant fenomen i Vietnam og Kambodsja. Hanoi, Ho Chi Minh-byen og Phnom Penh er godt synlige, mens resten av landet er tomt. I nabolandet Thailand er bruken jevnere fordelt.
<li>I Afrika syd for Sahara finner vi noen spredte øyer med lys i et ellers mørklagt kontinent. Sør-Afrika, Nigeria, Ghana, Kenya og Uganda er tilsynelatende langt foran resten.
<li>Det er like stor kontakt mellom kurderne i østlige Tyrkia og nordlige Irak som mellom Nord-Irak og Baghdad. De fleste av nabolandene, med unntak av Kuwait og Emiratene, er mørklagte.
</ul>
<p>Har du fått øye på noe annet interessant?</p>
]]></content:encoded>
			<wfw:commentRss>http://e-tjenesten.org/verkstedet/2010/12/et-kart-over-vennskap/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Jeg kan ta over Facebook-kontoen din</title>
		<link>http://e-tjenesten.org/verkstedet/2010/10/jeg-kan-ta-over-facebook-kontoen-din/</link>
		<comments>http://e-tjenesten.org/verkstedet/2010/10/jeg-kan-ta-over-facebook-kontoen-din/#comments</comments>
		<pubDate>Sun, 31 Oct 2010 16:47:52 +0000</pubDate>
		<dc:creator>Wilhelm Joys Andersen</dc:creator>
				<category><![CDATA[Ukategorisert]]></category>

		<guid isPermaLink="false">http://e-tjenesten.org/verkstedet/?p=87</guid>
		<description><![CDATA[Denne uken har det vært mange avisoppslag og blogginnlegg om Firesheep &#8211; en Firefox-utvidelse som gjør det svært lett å bryte seg inn i andres kontoer til sosiale nettverk og epost. Det er ikke noe nytt sikkerhetshull Firesheep utnytter. Å stjele andres informasjonskapsler for å få tilgang til deres konto har vært mulig siden 1994. [...]]]></description>
			<content:encoded><![CDATA[<p><img src='/bilder/201010-https/mellomtjenere.png' alt='' ></p>
<p>Denne uken har det vært mange avisoppslag og blogginnlegg om <a href='http://codebutler.com/firesheep'>Firesheep</a> &#8211; en Firefox-utvidelse som gjør det svært lett å bryte seg inn i andres kontoer til sosiale nettverk og epost. Det er ikke noe nytt sikkerhetshull Firesheep utnytter. Å stjele andres informasjonskapsler for å få tilgang til deres konto har vært mulig <a href='http://en.wikipedia.org/wiki/HTTP_cookie#History'>siden 1994</a>. Men med Firesheep har det plutselig blitt veldig mye enklere for spammere, ekskjærester, kikkere og ungdomsskoleelever å ta over Facebook-profilen din.</p>
<p>Prinsippet bak angrepet er veldig enkelt. Hver gang du laster en side fra Facebook &#8211; eller et hvilket som helst annet nettsted du er logget inn på &#8211; sender nettleseren din med en hemmelig nøkkel som viser at du er logget inn med din konto. Nøkkelen gjør i praksis samme jobb som et brukernavn og passord i ett, og består av en serie tall og bokstaver &#8211; for eksempel <code>df872ef3ae1c836667eb5b59eded8f0a</code>. Hvis noen andre oppgir din nøkkel når de laster Facebook, vil Facebook tro at de er deg. Ikke bare kan de snoke i din private informasjon. De kan også <a href='http://i.imgur.com/cNorB.jpg'>sende meldinger</a> eller kvitre i ditt navn. </p>
<p>Å få tilgang til noen andres hemmelige nøkkel er dessverre latterlig enkelt, spesielt på åpne trådløse nettverk. Din datamaskin og det trådløse tilgangspunktet snakker med hverandre ved hjelp av <a href='http://en.wikipedia.org/wiki/List_of_WLAN_channels'>radiobølger med en gitt frekvens</a>. Om noen andre lytter på den samme frekvensen, vil de kunne plukke opp alle data som sendes mellom deg og tilgangspunktet. Dermed kan uvedkommede se hvilke tvilsomme nettsider du besøker, lese epost du sender og mottar, se hva du søker etter, og &#8211; viktigst av alt &#8211; de kan se den hemmelige nøkkelen du sender til Facebook og andre nettsteder. Å avlytte trafikk på denne måten er såpass enkelt at Googles Street View-biler <a href='http://www.cnn.com/2010/TECH/web/10/22/google.privacy.controls/index.html'>«ved en feil» snappet opp en mengde passord og annen privat informasjon</a> fra folks åpne trådløse nettverk.</p>
<p>Flere avisartikler får det til å høres ut som at så lenge du er på et kryptert trådløst nettverk, er problemet løst. Det stemmer ikke helt. Mange trådløse nettverk benytter den antikke <a href='http://en.wikipedia.org/wiki/Wired_Equivalent_Privacy'>WEP-protokollen</a>, der alle legitime brukere bruker den samme nøkkelen. Selv om du med WEP stenger ute tilfeldig forbipasserende, kan alle som har passordet fremdeles like enkelt snoke i din trafikk. Ikke så mye bedre enn å låse ytterdøren og la alle vinduene stå åpne når du reiser på ferie, altså. </p>
<p>Med <a href='http://en.wikipedia.org/wiki/Wi-Fi_Protected_Access'>WPA og WPA2-protokollene</a> er trafikken sikrere, men ikke bombesikker. Andre legitime brukere av nettverket kan fremdeles skaffe seg tilgang til din trafikk, men det <a href='http://serverfault.com/questions/149888/wep-wpa-wpa2-and-wifi-sniffing'>kreves en del mer arbeid og god timing</a>. </p>
<p>Selv ikke et kablet nettverk er noen helgardering. Det er mye vanskeligere for uvedkommede å skaffe seg tilgang til dine data på et kablet nettverk, men det er fremdeles <a href='http://en.wikipedia.org/wiki/IP_address_spoofing'>fullt mulig</a>. Og angrepsmulighetene stopper ikke der. </p>
<p>Mellom din datamaskin og Facebook er det et dusin forskjellige mellomtjenere alle dine data går gjennom, uten noen form for kryptering. Om det finnes en utro tjener et hvilket som helst sted underveis kan vedkommede lett overvåke din trafikk. Den underbetalte og nysgjerrige ITK-lærlingen som administrerer det lokale nettverket eller <a href='http://news.bbc.co.uk/2/hi/europe/7463333.stm'>offentlige myndigheter</a> er få tastetrykk unna dine hemmeligheter. Å koble til nettsteder via <a href='http://en.wikipedia.org/wiki/Virtual_private_network'>VPN</a> eller <a href='http://en.wikipedia.org/wiki/Ssh_tunnel#Secure_Shell_tunneling'>SSH-tunneller</a> er gode tiltak for å begrense angrepsflaten, men heller ikke det er fullstendig sikkert.</p>
<p>Den eneste måten du kan være <em>sikker</em> på at ingen kan avlytte trafikken underveis er om den er kryptert <em>hele veien</em> fra din maskin til tjenesteleverandøren. Dette er ikke noe du kan sette opp på egenhånd. Tjenesteleverandøren selv må legge til rette for dette. Nettbanken din lar all trafikk gå over den sikre <a href='http://en.wikipedia.org/wiki/HTTPS'><abbr title='HyperText Transfer Protocol Secure'>HTTPS</abbr></a>-protokollen. Gmail gjør <a href='http://gmailblog.blogspot.com/2010/01/default-https-access-for-gmail.html'>det samme</a>. Og E-tjenestens  <a href='https://bikube.no/'>egne tjenester</a>, selvfølgelig.</p>
<p>Om det er en gul eller grønn hengelås i adressefeltet er du trygg.</p>
<p><img src='/bilder/201010-https/https.png' alt='' ></p>
<p><img src='/bilder/201010-https/https-ev.png' alt=''></p>
<p>Om den mangler bør du være forsiktig.</p>
<p><img src='/bilder/201010-https/no-https.png' alt=''></p>
<p>Dersom tjenesteleverandørene du benytter ikke tilbyr å la trafikken gå kryptert over <abbr title='HyperText Transfer Protocol Secure'>HTTPS</abbr> bør du mase på dem, eller bytte til en annen leverandør for å beskytte dine kontoer og dine data.</p>
<p>Når det er sagt &#8211; kryptering av trafikken beskytter deg kun mot uvedkommede som lytter på trafikken mellom deg og dine tjenesteleverandører. Om tjenesteleverandøren selv har et <a href='http://www.businessinsider.com/well-these-new-zuckerberg-ims-wont-help-facebooks-privacy-problems-2010-5'>avslappet forhold til personvern</a> og <a href='http://searchengineland.com/google-ceo-schmidt-fuels-critics-with-controversial-privacy-remarks-48156'>privatliv</a> er det mulig du har et større problem.</p>
]]></content:encoded>
			<wfw:commentRss>http://e-tjenesten.org/verkstedet/2010/10/jeg-kan-ta-over-facebook-kontoen-din/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fotografering for programmerere</title>
		<link>http://e-tjenesten.org/verkstedet/2010/10/fotografering-for-programmerere/</link>
		<comments>http://e-tjenesten.org/verkstedet/2010/10/fotografering-for-programmerere/#comments</comments>
		<pubDate>Thu, 21 Oct 2010 16:29:04 +0000</pubDate>
		<dc:creator>Wilhelm Joys Andersen</dc:creator>
				<category><![CDATA[Ukategorisert]]></category>

		<guid isPermaLink="false">http://e-tjenesten.org/verkstedet/?p=12</guid>
		<description><![CDATA[En av mine mange hobbyer er fotografering. Ikke fordi jeg er spesielt kunstnerisk, men fordi jeg er dypt fascinert over at det går an å fange lys og forevige et øyeblikk med en liten maskin. Det har tatt meg lang tid å forstå hvordan det hele henger sammen. Denne artikkelen oppsummerer alt det jeg kunne [...]]]></description>
			<content:encoded><![CDATA[<p>En av mine mange hobbyer er <a href='http://www.flickr.com/photos/wilhelmja/sets/' title='Mine bilder på Flickr'>fotografering</a>. Ikke fordi jeg er spesielt kunstnerisk, men fordi jeg er dypt fascinert over at det går an å fange lys og forevige et øyeblikk med en liten maskin. Det har tatt meg lang tid å forstå hvordan det hele henger sammen. Denne artikkelen oppsummerer alt det jeg kunne ønske at noen hadde fortalt meg da jeg begynte å fotografere. Det er et par års destillert erfaring, tilrettelagt for å være forståelig for programmerere og andre teknologer.</p>
<h3>Fotografiapparatet</h3>
<p>Et <a href='http://en.wikipedia.org/wiki/Camera'>kamera</a> er <a href='http://en.wikipedia.org/wiki/Pinhole_camera'>grunnleggende</a> sett en lystett boks med et hull i. Lys reflektert fra objekter utenfor boksen (A) går gjennom <a href='http://en.wikipedia.org/wiki/Aperture'>blenderåpningen</A> (B) og treffer et lysfølsomt materiale (C).</p>
<p><img src="/bilder/201010-fotografering/kamera.png" /></p>
<p>I tidligere tider var det som regel <a href='http://en.wikipedia.org/wiki/Photographic_film'>fotografisk film</a> som fanget lyset. I dag er det mer vanlig at det er en digital <a href='http://en.wikipedia.org/wiki/Image_sensor'>bildebrikke</a> som registrerer hvor lyset treffer.</p>
<p><img src="/bilder/201010-fotografering/sensor.gif" /></p>
<p>Jo større den lysfølsomme overflaten er, jo større detaljrikdom eller oppløsning kan den gi.</p>
<p><img src="/bilder/201010-fotografering/nytt-gammelt-liten.jpg" /></p>
<p>Det seksti år gamle <a href='http://en.wikipedia.org/wiki/Medium_format_(film)'>mellomformatkameraet</a> til venstre på bildet gir omtrent <a href='http://en.wikipedia.org/wiki/Medium_format_(film)#Digital_medium_format'>seks ganger så høy oppløsning</a> som det moderne <a href='http://en.wikipedia.org/wiki/Digital_single-lens_reflex_camera'>digitale speilreflekskameraet</a> til høyre.</p>
<h3>Objektiver</h3>
<p>Utenfor hullet i kamerahuset kan man plassere et <a href='http://en.wikipedia.org/wiki/Photographic_lens'>objektiv</a> som bøyer lysstrålene på forskjellige måter. Et objektiv består av en eller flere linseelementer og kan utvide eller krympe synsfeltet avhengig av hvordan linseelementene er plassert i forhold til hverandre. Objektivet kan også <a href='http://en.wikipedia.org/wiki/Focus_(optics)'>fokusere</A> på et spesifikt område. Nyere kameraer gjør dette automatisk for deg med mindre du ber dem la vær.</p>
<p><img src="/bilder/201010-fotografering/objektiv.png" /></p>
<p>Objektiver med kort <a href='http://en.wikipedia.org/wiki/Focal_length'>brennvidde</a> (10-35mm) kaller vi vidvinkelobjektiver. Disse kan brukes for eksempel til landskapsfotografier.</p>
<p><img src="/bilder/201010-fotografering/brennvidde-18mm-liten.jpg" alt="" class='photo' /></p>
<p class='caption'>18mm</p>
<p>Objektiver med middels brennvidde (35-60mm) kaller vi normalobjektiver. Disse er utmerket til for eksempel portretter.</p>
<p><img src="/bilder/201010-fotografering/brennvidde-50mm-liten.jpg" alt="" class='photo' /></p>
<p class='caption'>50mm</p>
<p>Objektiver med lang brennvidde (60mm og høyere) kaller vi teleobjektiver. Disse bringer det som er langt borte nærmere, og er en paparazzis beste venn.</p>
<p><img src="/bilder/201010-fotografering/brennvidde-200mm-liten.jpg" alt="" class='photo' /></p>
<p class='caption'>200mm</p>
<p><a href='http://en.wikipedia.org/wiki/Digital_single-lens_reflex_camera'>Speilreflekskameraer</a> og andre <a href='http://en.wikipedia.org/wiki/System_camera'>systemkameraer</a> er laget for å fungere med et bredt spekter av forskjellige objektiver. Man kan benytte både objektiver med en <a href='http://en.wikipedia.org/wiki/Prime_lens'>fast brennvidde</a> og <a href='http://en.wikipedia.org/wiki/Zoom_lens'>zoom-objektiver</a> man kan skru på for å endre brennvidde.</p>
<h3>Eksponering</h3>
<p>Din fremste jobb som fotograf er å sørge for at bildebrikken får akkurat <a href='http://en.wikipedia.org/wiki/Exposure_(photography)'>passe mengde lys</a>. Som en bleik skandinav i Syden skal den bli brun, ikke solbrent.</p>
<p>Om du slipper inn for lite lys vil bildet ditt bli mørkt og <em>undereksponert</em>, slik som dette:</p>
<p><img src="/bilder/201010-fotografering/eksponering-under-liten.jpg" alt="" class='photo' /></p>
<p class='caption'>50mm, 1/200 sekund, f/11</p>
<p>Om du slipper inn for mye lys blir bildet ditt <em>overeksponert</em>. Store flater vil være helt hvite og «utbrente», slik som dette:</p>
<p><img src="/bilder/201010-fotografering/eksponering-over-liten.jpg" alt="" class='photo' /></p>
<p class='caption'>50mm, 1/200 sekund, f/2.2</p>
<p>Om du slipper inn akkurat passe mengde lys vil bildet ditt se mer riktig ut.</p>
<p><img src="/bilder/201010-fotografering/eksponering-ok-liten.jpg" alt="" class='photo' /></p>
<p class='caption'>50mm, 1/200 sekund, f/7.1</p>
<p>De fleste digitale kameraer lar deg se et <a href='http://en.wikipedia.org/wiki/Histogram'>histogram</a> med en graf som viser fordelingen av lyse og mørke piksler. Om bildet er undereksponert vil grafen være høyest til venstre i histogrammet, ved overeksponering vil den være høyest til høyre. </p>
<table>
<tr>
<td>Overeksponering</td>
<td><img src='/bilder/201010-fotografering/histogram-over.png' alt='[__/]'></td>
</tr>
<tr>
<td>Undereksponering</td>
<td><img src='/bilder/201010-fotografering/histogram-under.png' alt='[\__]'></td>
</tr>
<tr>
<td>Riktig eksponering</td>
<td><img src='/bilder/201010-fotografering/histogram-riktig.png' alt='[_/\_]'></td>
</tr>
</table>
<p>Som oftest vil du at histogrammet skal være feitest på midten, og nå null rett før den når høyre kant. Om kameraet får bestemme eksponeringen selv er det dette det vil prøve å få til. For å la kameraet eksponere automatisk, velger du P-programmet på ditt speilreflekskamera.</p>
<p><img src="/bilder/201010-fotografering/mode-p.png" alt="" /> </p>
<p>Dette er vel og bra for de aller fleste motiver. Men om du tar to bilder – ett av en helt hvit vegg, og ett av en helt svart vegg – kan du ende opp med to helt like, grå bilder. Histogrammet vil se fint ut og kameraet vil tro det har gjort en god jobb, men bildene vil ikke samsvare med virkeligheten. Noen ganger er det derfor hensiktsmessig å eksponere mer enn kameraet ville gjort på egenhånd, og andre ganger mindre.</p>
<p>For å anpasse hvor mye lys som slipper inn har du et par forskjellige innstillinger du kan skru på. Hvis du vil sette alle eksponeringsinnstillingene selv, velg M-programmet på kameraet.</p>
<p><img src="/bilder/201010-fotografering/mode-m.png" alt="" /> </p>
<h3>Lukkertid</h3>
<p>Den første variabelen du kan endre er <a href='http://en.wikipedia.org/wiki/Shutter_speed'>lukkertiden</a>. Kameraet slipper inn lys kun en kort periode. Jo lengre luken er åpen, jo mer lys slipper inn. Lukkertid uttrykkes i brøkdeler av et sekund eller hele sekunder. Hvis du vil sette lukkertiden selv men la kameraet sette de andre variablene, velg S-programmet på Nikon-kameraer og Tv på Canon-kameraer.</p>
<p><img src="/bilder/201010-fotografering/mode-s.png" alt="" /> </p>
<p>Husk at forskjellige eksterne lysforhold kan gjøre at samme kamerainnstillinger kan gi radikalt forskjellige resultater. Om du tar bilder i strålende sol får du mye mer lys per millisekund enn om du tar bilder i et dårlig belyst rom.</p>
<p>Å la luken stå åpent lenge har dog bieffekter. Om det tar et helt sekund å få riktig eksponering, og motivet flytter på seg underveis kan du <a href='http://en.wikipedia.org/wiki/Motion_blur'>bevegelsesuskarphet</a> og et grøtete bilde.</p>
<p>Her har jeg for eksempel tatt et bilde av en bilvei om kvelden:</p>
<p><img src="/bilder/201010-fotografering/lukkertid-lang-liten.jpg" alt=""class='photo'  /> </p>
<p class='caption'>50mm, 5 sekunder, f/16</p>
<p>Lukkertiden er fem sekunder, og i løpet av den tiden kjører bilene mange meter og etterlater seg bare et spor av lys. Det kan være en fin effekt om du vil fremheve bevegelse, men det er det ikke alltid du vil.</p>
<p>Her er samme motiv med langt kortere lukkertid:</p>
<p><img src="/bilder/201010-fotografering/lukkertid-kort-liten.jpg" alt=""class='photo'  /> </p>
<p class='caption'>50mm, 1/15 sekund, f/2.2</p>
<p>Selv om motivet ikke flytter på seg, kan du også få bevegelsesuskarphet om du ikke klarer å holde kameraet helt i ro under eksponeringen. Å holde kameraet i ro et helt sekund er umulig for oss vanlige dødelige, så ved lange eksponeringstider vil du trenge et <a href='http://en.wikipedia.org/wiki/Tripod_(photography)'>stativ</a> for å holde kameraet på plass.</p>
<p><img src="/bilder/201010-fotografering/stativ.png" alt="" /> </p>
<p>Jo lengre brennvidde objektivet ditt har, jo vanskeligere er det å holde det i ro lenge nok. Med et 50mm objektiv kan du forvente å kunne ta klare bilder med lukkertider opp til ca. 1/50 sekund. Med et 200mm objektiv kan du forvente uskarphet ved lukkertider over 1/200 sekund.</p>
<p>Her er et mislykket bilde av en elefant:</p>
<p><img src="/bilder/201010-fotografering/bevegelsesuskarphet-liten.jpg" alt=""class='photo'  /> </p>
<p class='caption'>86mm, 1/30 sekund, f/4.5</p>
<p>Jeg klarte ikke å holde kameraet i ro lenge nok, så hele bildet er uklart. Med kortere lukkertid kunne resultatet vært bedre.</p>
<h3>Blenderåpning</h3>
<p>Den andre variabelen du kan skru på for å regulere lysmengden er <a href='http://en.wikipedia.org/wiki/F-stopf'>blenderåpningen</a> til objektivet.</p>
<p><img src="/bilder/201010-fotografering/blederapning-liten.jpg" alt="" /> </p>
<p>Blenderen kan være helt åpen eller nesten helt lukket. En stor åpning gir mer lys enn en liten. Blenderåpningens innstilling uttrykkes i forholdstallet mellom brennvidden og åpningen. f/16 er en liten åpning, og f/1.4 er en veldig stor åpning. For å stille blenderåpningen selv og la kameraet sette lukkertiden, velg A-programmet på Nikon-kameraer og Av-programmet på Canon-kameraer.</p>
<p><img src="/bilder/201010-fotografering/mode-a.png" alt="" /> </p>
<p>Med en stor blenderåpning kan du ha lav lukkertid og allikevel få inn nok lys. Hvor stor blenderåpning du kan ha varierer veldig fra objektiv til objektiv. Objektiver med en fast brennvidde har typisk mulighet for <a href='http://en.wikipedia.org/wiki/Lens_speed'>langt større blenderåpning</a> enn zoom-objektiver.</p>
<p>Å bruke en stor blenderåpning har også sine bieffekter. Jo større blenderåpning du bruker, jo mindre <a href='http://en.wikipedia.org/wiki/Depth_of_field'>dybdeskarphet</a> blir det i bildet.</p>
<p>Dette bildet er tatt med en blenderåpning på f/16. Det meste av teksten er fint leselig.</p>
<p><img src="/bilder/201010-fotografering/dybdeskarphet-01-liten.jpg" alt=""class='photo'  /> </p>
<p class='caption'>50mm, 4 sekunder, f/16</p>
<p>Dette bildet er tatt med en blenderåpning på f/1.4. Kun et par centimeter av siden er i fokus, og resten blir en uklar grøt.</p>
<p><img src="/bilder/201010-fotografering/dybdeskarphet-02-liten.jpg" alt=""class='photo'  /> </p>
<p class='caption'>50mm, 1/25 sekund, f/1.4</p>
<p>Fra hvert eneste punkt på motivet reflekteres lys i alle mulige retninger. Med en stor blenderåpning vil lyset fra ett og samme punkt kunne prege bildebrikken på flere forskjellige steder. Dette gjør at et gitt punkt på bildebrikken vil bombarderes med lys reflektert fra flere forskjellige deler av motivet. </p>
<p><img src="/bilder/201010-fotografering/blender.png" alt="" /> </p>
<p>Selektiv bruk av fokus med stor blenderåpning kan være veldig fint på portrettbilder. Hovedpersonen i bildet kan være helt i fokus, mens den mindre viktige bakgrunnen kan dempes med uskarphet.</p>
<p><img src="/bilder/201010-fotografering/portrett-liten.jpg" alt=""class='photo'  /> </p>
<p class='caption'>50mm, 1/500 sekund, f/2</p>
<h3>Stopp</h3>
<p>Hver gang du skal fotografere noe av må du vurdere hva som er den riktige balansen mellom lukkertid og blenderåpning for det aktuelle motivet. Ofte vil det være greit å ofre dybdeskarphet i bytte mot lavere lukkertid.</p>
<p>For å angi ønsket blenderåpning eller lukkertid skrur du på hjulene på kameraet. Tallene du kan velge mellom er i utgangspunktet standardiserte <a href='http://en.wikipedia.org/wiki/Exposure_value'>stopp</a>. Hvert stopp opp eller ned medfører en <em>dobling</em> eller <em>halvvering</em> av mengden lys. Vanligvis lar kameraet ditt deg gå et tredjedels stopp om gangen. Tabellen under viser hele stopp.</p>
<table class='big'>
<tr>
<th>Lukkertid</th>
<td>1/4</td>
<td>1/8</td>
<td>1/15</td>
<td>1/30</td>
<td>1/60</td>
<td>1/125</td>
</tr>
<tr>
<th>Blenderåpning</th>
<td>f/11</td>
<td>f/8</td>
<td>f/5.6</td>
<td>f/4</td>
<td>f/2.8</td>
<td>f/2</td>
</tr>
</table>
<p>Om du øker lukkertiden fra 1/8 sekund til 1/4 sekund får du dobbelt så mye lys. Om reduserer blenderåpningen fra f/2.8 til f/4 halvverer du mengden lys. Endrer du begge disse variablene samtidig – lengre lukkertid og mindre blenderåpning – holdes mengden lys konstant. Slik kan du beholde samme eksponering, og bytte en bieffekt mot en annen.</p>
<h3>Lysfølsomhet (ISO)</h3>
<p>Om du tar bilder under dårlige lysforhold, har prøvd alt annet og fremdeles ikke får nok lys til riktig eksponering er det en siste variabel du kan skru på. Du kan øke <a href='http://en.wikipedia.org/wiki/Film_speed'>lysfølsomheten</a> – ISO-verdien – til bildebrikken. </p>
<p>Den ekstra lysfølsomheten kommer dog til en meget høy pris. Jo høyere ISO-verdi, jo mer <a href='http://en.wikipedia.org/wiki/Film_grain'>støy</a> vil du få i bildene dine. De tre bildene under er et lite utsnitt av tre bilder tatt av samme motiv med forskjellige ISO-verdier på min D80.</p>
<p>ISO 100 er den laveste verdien i mitt kamera, og den jeg vanligvis bruker.</p>
<p><img src="/bilder/201010-fotografering/iso-100.jpg" alt=""class='photo'  /> </p>
<p class='caption'>ISO 100</p>
<p><img src="/bilder/201010-fotografering/iso-800.jpg" alt="" class='photo' /> </p>
<p class='caption'>ISO 800</p>
<p><img src="/bilder/201010-fotografering/iso-1600.jpg" alt="" class='photo' /></p>
<p class='caption'>ISO 1600</p>
<p>Ved ISO 1600 er bildene praktisk talt ubrukelige. Nyere og dyrere kameraer gir mindre støy på høyere verdier, men vær allikevel forsiktig.</p>
<h3>Hvilket utstyr trenger jeg?</h3>
<p>Hvilket kamera du har er ikke egentlig så veldig viktig. Alle speilreflekskameraer fra de siste fem årene er veldig gode. Kjøp heller fine objektiver enn et dyrt kamerahus. Om du skal kjøpe noe nytt, kjøp samme merke som vennene dine har. Da kan dere låne objektiver av hverandre.</p>
<p>Hvilke objektiver du trenger avhenger av hva du har tenkt å ta bilder av. Hvis jeg bare kunne hatt ett objektiv, ville jeg valgt et lyssterkt normalobjektiv.</p>
<p><img src="/bilder/201010-fotografering/50mm.png" /></p>
<p>Favorittobjektivet mitt er <a href='http://produkt.akam.no/product.php?productId=8706'>Nikons 50mm f/1.4</a>. Det har så stor blenderåpning at jeg kan ta fine bilder i hvilket som helst lys. Om jeg vil ha litt mer eller litt mindre med i bildet, kan jeg flytte på meg. Zoom trenger jeg ikke.</p>
<p>Alle som liker å fotografere burde ha et liknende objektiv. Overnevnte får du for 2500 kroner. Den litt billigere varianten – <a href='http://produkt.akam.no/product.php?productId=8707'>50mm f/1.8</a> – koster tusen kroner, og er verdt hvert øre.</p>
<p class='sources'>Alle produktfoto er lånt av Nikon. <a href='http://en.wikipedia.org/wiki/File:ModeDial.svg'>Programhjulet</a> er laget av <a href='http://en.wikipedia.org/wiki/User:Althepal'>Althepal</a> og er lisensiert under Creative Commons Attribution-ShareAlike 2.5-lisensen. <a href='http://no.wikipedia.org/wiki/Fil:Hasselblad_1600F.jpg'>Hasselblad</a>-bildet er tatt av Eugene Ilchenko og lisensiert under GNU fri dokumentasjonslisens, versjon 1.2 eller senere. Tegningene er modifiserte skisser fra <a href='http://en.wikipedia.org/wiki/File:Table_of_Opticks,_Cyclopaedia,_Volume_2.jpg'>Cyclopaedia</a> fra 1728. Portrettfotografiet er tatt av Andreas Tolf Tolfsen i E-tjenesten SA. Resten har jeg tatt selv.</p>
]]></content:encoded>
			<wfw:commentRss>http://e-tjenesten.org/verkstedet/2010/10/fotografering-for-programmerere/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Gjør ditt nettsted raskere med færre HTTP-forespørsler</title>
		<link>http://e-tjenesten.org/verkstedet/2010/05/raskere-nettsted-med-f%c3%a6rre-http-foresp%c3%b8rsler/</link>
		<comments>http://e-tjenesten.org/verkstedet/2010/05/raskere-nettsted-med-f%c3%a6rre-http-foresp%c3%b8rsler/#comments</comments>
		<pubDate>Sun, 16 May 2010 22:58:24 +0000</pubDate>
		<dc:creator>Wilhelm Joys Andersen</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[optimalisering]]></category>

		<guid isPermaLink="false">http://e-tjenesten.org/verkstedet/?p=5</guid>
		<description><![CDATA[Forrige uke studerte vi hvordan mange HTTP-forespørsler etter hverandre kan gjøre ditt nettsted tregere enn det behøver å være, og hva du kan gjøre for å unngå dette. Minst like viktig er det å holde det totale antallet bilder, skript og stilsett på nettstedet nede. HTTP Du skjønner, både nettleseren din og tjenermaskinen i den [...]]]></description>
			<content:encoded><![CDATA[<p><img src="/bilder/godstog.jpg" alt="" /></p>
<p><a href="/verkstedet/2010/05/responstid-og-asynkrone-javascript/">Forrige uke</a> studerte vi hvordan mange HTTP-forespørsler etter hverandre kan gjøre ditt nettsted tregere enn det behøver å være, og hva du kan gjøre for å unngå dette.</p>
<p><img src="/bilder/serieforesporsler.png" alt="" /></p>
<p>Minst like viktig er det å holde det totale antallet bilder, skript og stilsett på nettstedet nede.</p>
<h3>HTTP</h3>
<p>Du skjønner, både nettleseren din og tjenermaskinen i den andre enden har en begrensning på hvor mange forskjellige filer de vil overføre samtidig. Vanligvis ligger denne grensen på 16 filer.</p>
<p>Dette betyr at om du har en side med 17 like store bilder, kan denne siden på en dårlig dag ta dobbelt så lang tid å laste som dersom den bare hadde 16. For om alle de 16 sporene på stasjonen allerede er i bruk, må det syttende toget finne seg i å vente til ett av de andre togene har reist videre.</p>
<p>Ikke bare stiller forespørslene seg i kø når det blir for mange av dem. Både nettleseren og tjeneren er glade i å fortelle alt mulig om seg selv hver gang de utveksler en fil. Uansett hvor liten filen er går de samme høflighetsfrasene igjen. Nettleseren pleier å begynne med noe sånt som dette:</p>
<p class="example"><code>GET /eksperimenter/data-uri/img/application_add.png HTTP/1.1<br />
User-Agent: Opera/9.80 (X11; Linux i686; U; nb) Presto/2.5.24 Version/10.52<br />
Host: e-tjenesten.org<br />
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png,<br />
image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1<br />
Accept-Language: nb-NO,nb;q=0.9,en;q=0.8<br />
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1<br />
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0<br />
Referer: http://e-tjenesten.org/eksperimenter/data-uri/img/<br />
Cache-Control: no-cache<br />
Connection: Keep-Alive, TE<br />
TE: deflate, gzip, chunked, identity, trailers</code></p>
<p>Tjeneren kan ikke være noe dårligere, så den svarer omtrent som følger:</p>
<p class="example"><code>HTTP/1.1 200 OK<br />
Date: Mon, 10 May 2010 22:36:07 GMT<br />
Server: Apache/2.2.9 (Debian) mod_auth_kerb/5.3 DAV/2 PHP/5.2.6-1+lenny8 with Suhosin-Patch mod_python/3.3.1 Python/2.5.2 mod_ssl/2.2.9 OpenSSL/0.9.8g mod_perl/2.0.4 Perl/v5.10.0<br />
Last-Modified: Wed, 31 Mar 2010 17:10:48 GMT<br />
ETag: "688cca9-26b-4831bd3d2b600"<br />
Accept-Ranges: bytes<br />
Content-Length: 619<br />
Keep-Alive: timeout=15, max=100<br />
Connection: Keep-Alive<br />
Content-Type: image/png</code></p>
<p>Deretter kommer selve filen. Underveis har altså det lille ikonet på bare 619 byte i praksis blitt tre ganger så stort, alle høflighetsfrasene inkludert. Det samme skjer for hver eneste lille fil.</p>
<h3>Løsninger for å redusere antall forespørsler</h3>
<p>Det er som du kanskje ser flere gode grunner til å holde antallet stilsett, skript og bilder så lavt som mulig. For skript og stilsett er ikke dette så komplisert. Å slå mange små skript eller stilsett sammen til ett stort er en enkel oppgave.</p>
<p>Men hva så med bilder?</p>
<p>Vi er stolte over at <a title="Bikube" href="https://bikube.no/">webapplikasjonene vi utvikler</a> og drifter har et meget enkelt design, uten unødvendig dill som tar stor plass. Men vi har mange små ikoner på menyelementer, knapper og lister, og flere forskjellige bakgrunnsbilder. Det kan være flere titalls slike små elementer på en enkelt side, og selv om hver enkelt fil er veldig liten går sidelastingen tregere enn vi liker.</p>
<p><img src="/bilder/ikoner.png" alt="" /></p>
<p>Er det mulig å redusere antallet forespørsler på noe vis, uten å måtte fjerne ikonene?</p>
<p>Mange jobber seg rundt problemet ved å legge bildene sine på ett subdomene, stilsettene på et andre og skriptene på et tredje. Da vil nettleseren åpne 16 tilkoblinger til hver av disse subdomenene, og laste ned langt flere filer samtidig. Dette er vel og bra når det gjør nettstedet raskere, men er ofte ikke nok.</p>
<p>Google setter sammen alle de grafiske elementene på sin søkeside til ett eneste bilde:</p>
<p><img src="/bilder/google_sprite.png" alt="" /></p>
<p>Riktig del av bildet vises så på riktig element ved hjelp av nøyaktig posisjonering av bakgrunnsbildet, slik at kun den relevante delen av bildet blir synlig for brukeren:</p>
<p class="example"><code>&lt;span class="csb ch" style="background-position:-76px 0; margin-right:34px;width:66px"&gt;</code></p>
<p>Dette reduserer antallet HTTP-forespørsler betraktelig, men et slikt puslespill er kronglete å vedlikeholde og oppdatere. Kildekoden blir heller ikke spesielt leselig.</p>
<p>Finnes det flere måter å løse dette problemet på?</p>
<h3>data URI</h3>
<p>Ja, heldigvis. Si hei til <a title="data URI scheme, Wikipedia" href="http://en.wikipedia.org/wiki/Data_URI_scheme">data URI</a>.</p>
<p>En data URI er en adresse som inneholder en fil. Det høres unektelig litt snodig ut, men er egentlig ganske enkelt. Se for eksempel på denne her:</p>
<p class="example"><code><a href="data:text/plain;charset=utf-8,Jeg%20er%20en%20liten%20tekstfil.%20Kopier%20meg%20til%20adressefeltet%20ditt!">data:text/plain;charset=utf-8,Jeg%20er%20en%20liten%20tekstfil.%20Kopier%20meg%20til%20adressefeltet%20ditt!</a></code></p>
<p>Slike adresser med filer i kan du bruke alle steder på en nettside der du kan henvise til eksterne ressurser – i lenker, stilsett eller bilder. Det betyr at du for eksempel kan bytte ut denne koden:</p>
<p class="example"><code>.ikon { background-image: url(ikon.png); }</code></p>
<p>&#8230; med denne:</p>
<p class="example"><code>.ikon { background-image: url(data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/ INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwA<br />
AAFiSURBVBgZpcEhbpRRGIXh99x7IU0asGBJWEIdCLaAqcFiCArFCkjA0KRJF0EF<br />
26kkFbVVdEj6/985zJ0wBjfp8ygJD6G3n358fP3m5NvtJscJYBObchEHx6QKJ6SK<br />
snn6eLm7urr5/PP76cU4eXVy/ujouD074hDHd5s6By7GZknb3P7mU+WNLZGKn<br />
x595JDvf96zTQSM92vRYA4lMEEO5RNraHWUDH3FV48f0K5mAYJk5pQQpqIgixa<br />
E1JDKtRDd2OsYfJaTKNcTA2IBIIesMAOPdDUGYJSqGYml5lGHHYkSGhAJBBIkAo<br />
WREAT3Z3JLqZhF3uS2EloQCQ8xLBxoAEWO7aZxros7EgISIIkwlZCY6s1OlAJT<br />
WFal5VppMzUgbAlQcIkiT0DXSI2U2ymYZs9AWJL4n+df3pncsI0bn5dX344W<br />
05dhctUFbapZcE2ToiLVHBMbGymS7aUhIdoPNBf7Jjw/gQ77u4AAAAASUVORK<br />
5CYII=); }</code></p>
<p>Det ser kanskje ikke så pent ut, men for hver eksterne referanse du bytter ut på denne måten sparer du en HTTP-forespørsel. Om stilsettet refererer mange bilder kan dette utgjøre en stor forskjell.</p>
<p>For å omgjøre en fil til en data URI kan du bruke <a href='http://software.hixie.ch/utilities/cgi/data/data'>data URI kitchen</a> eller en <a href='http://no2.php.net/manual/en/function.base64-encode.php'>base64_encode()</a>-funksjon i skriptspråket du benytter.</p>
<h3>Blir det noe raskere, da?</h3>
<p>For å teste om denne fremgangsmåten faktisk er noe raskere enn alternativet, har jeg laget en håndfull forskjellige tester. <a href="http://e-tjenesten.org/eksperimenter/data-uri/">Disse finner du her</a>.</p>
<p><img src="/bilder/ikontest.png" alt="" /></p>
<p>I testene laster jeg henholdsvis 10, 20 og 100 forskjellige ikoner på to forskjellige måter. I det ene tilfellet på gamlemåten, der alle ikonene er eksterne filer. I det andre tilfellet er samtlige inkludert i stilsettet ved hjelp av data URI.</p>
<p>Hver av testene er kjørt ti ganger, og gjennomsnittlig lastetid fremgår i tabellen under. Testene er kjørt både på min noenlunde raske nettlinje hjemme, og via en tregere 3G-tilkobling.</p>
<table class="data">
<tbody>
<tr class="top">
<td></td>
<th colspan="2">17Mbit kabel</th>
<th colspan="2">3G</th>
</tr>
<tr class="top">
<th>Antall</th>
<th>Flere filer</th>
<th>Én fil</th>
<th>Flere filer</th>
<th>Én fil</th>
</tr>
<tr>
<th>10</th>
<td>153ms</td>
<td class="best">105ms</td>
<td>1278ms</td>
<td class="best">555ms</td>
</tr>
<tr>
<th>20</th>
<td>217ms</td>
<td class="best">107ms</td>
<td>2342ms</td>
<td class="best">1105ms</td>
</tr>
<tr>
<th>100</th>
<td>575ms</td>
<td class="best">296ms</td>
<td>9514ms</td>
<td class="best">2206ms</td>
</tr>
</tbody>
</table>
<p>På den raskere linjen gir dette trikset en hastighetsøkning på mellom 46% og 102%. På den tregere linjen er forskjellen enda større: mellom 130% og 330%!</p>
<p>Jeg må innrømme at dette var langt over hva jeg hadde forventet.</p>
<h3>Vil dette fungere på mitt nettsted?</h3>
<p>Testene over er syntetiske og tester kun et veldig smalt bruksområde, så det finnes ingen garantier for at du kan få en like stor hastighetsøkning på ditt nettsted. Kanskje er det helt andre flaskehalser  som gjør seg gjeldende der. Jeg vil anbefale deg å kjøre dine egne tester og se hvor stor forskjell dette utgjør hos deg.</p>
<p>I vårt tilfelle har vi et digert stilsett som refererer over hundre forskjellige ikoner, men kun en brøkdel av disse er i bruk på hver enkelt side. For å teste dette scenariet laget jeg en test som refererer til 150 forskjellige ikoner i stilsettet, men kun bruker henholdsvis 10, 20 og 30 av dem.</p>
<p>Nettlesere er såpass intelligente at de ikke laster ned eksterne ressurser de ikke behøver, så her har eksterne bilder et fortrinn. Når du legger alt sammen til én pakke med data URI må du laste ned ned alt eller ingenting.</p>
<table class="data">
<tbody>
<tr class="top">
<td></td>
<th colspan="2">17Mbit kabel</th>
<th colspan="2">3G</th>
</tr>
<tr class="top">
<th>Antall</th>
<th>Flere filer</th>
<th>Én fil</th>
<th>Flere filer</th>
<th>Én fil</th>
</tr>
<tr>
<th>10</th>
<td class="best">99ms</td>
<td>167ms</td>
<td class="best">1221ms</td>
<td>2510ms</td>
</tr>
<tr>
<th>20</th>
<td class="best">155ms</td>
<td>186ms</td>
<td class="best">1910ms</td>
<td>2322ms</td>
</tr>
<tr>
<th>30</th>
<td>210ms</td>
<td class="best">191ms</td>
<td>2881ms</td>
<td class="best">2142ms</td>
</tr>
</tbody>
</table>
<p>Som du ser av tabellen over lønner ikke data URI-trikset seg om du bruker en for liten andel av bildene du refererer i stilsettet. Bruker du kun 20 av 150 refererte ikoner går den optimaliserte versjonen tregere ved første sidelasting, mens ved 30 av 150 ikoner er resultatet positivt. Ved andre sidelasting, når stilsett og ikoner ligger mellomlagret i nettleseren, vil dog den optimaliserte versjonen alltid ha et fortrinn. Uansett bør vi nok rydde godt i stilsettet vårt.</p>
<h3>Hvilke nettlesere fungerer dette i?</h3>
<p>Data URI fungerer fint i alle moderne nettlesere, men ikke i Internet Explorer 6 og 7. Så lenge merkbar andel av våre potensielle kunder bruker disse eldre nettleserne kan vi selvsagt ikke ignorere dette.</p>
<p>Heldigvis kan vi gi et ekstra stilsett eldre versjoner av Internet Explorer ved hjelp av såkalte «<a href='http://www.quirksmode.org/css/condcom.html'>conditional comments</a>»:</p>
<p class='example'><code>&lt;link rel='stylesheet' href='style.css'&gt;<br />
&lt;!--[if lte IE 7]&gt;<br />
&lt;link rel='stylesheet' href='iesucks.css'&gt;<br />
&lt;![endif]--&gt;</code></p>
<p>I <code>style.css</code> har vi vårt ordinære stilsett med data URI. Dette brukes av alle nettlesere. De eldre nettleserne vil ikke forstå noe av data URI-referansene og vil ignorere disse. I <code>iesucks.css</code>, som kun vil lastes av Internet Explorer 6 og 7, overstyrer vi de opprinnelige deklarasjonene. Slik:</p>
<p class="example"><code>.ikon { background-image: url(ikon.png); }</code></p>
<p>Sidelasting vil gå noe tregere for brukere av disse antikke nettleserne, men det kan vi leve med. Det viktigste er at alt fungerer som normalt også for dem.</p>
<p class='sources'>Fotografiet øverst er tatt av <a href='http://www.flickr.com/photos/vitelone/3746865186/'>vitelone</a>. Ikonene er fra <a href='http://www.famfamfam.com/lab/icons/silk/'>famfamfam</a> og <a href='http://commons.wikimedia.org/wiki/Category:GNOME_Desktop_icons'>Gnome-prosjektet</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://e-tjenesten.org/verkstedet/2010/05/raskere-nettsted-med-f%c3%a6rre-http-foresp%c3%b8rsler/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Responstid og asynkrone JavaScript</title>
		<link>http://e-tjenesten.org/verkstedet/2010/05/responstid-og-asynkrone-javascript/</link>
		<comments>http://e-tjenesten.org/verkstedet/2010/05/responstid-og-asynkrone-javascript/#comments</comments>
		<pubDate>Sun, 09 May 2010 11:44:36 +0000</pubDate>
		<dc:creator>Wilhelm Joys Andersen</dc:creator>
				<category><![CDATA[js]]></category>
		<category><![CDATA[optimalisering]]></category>

		<guid isPermaLink="false">http://e-tjenesten.org/verkstedet/?p=7</guid>
		<description><![CDATA[De siste årene har bruk av asynkrone JavaScript fått stor utbredelse. I stedet for å laste en hel side på nytt hver gang du klikker på noe, kan et lite skript ta seg av kommunikasjonen med tjeneren og sømløst dytte inn nye data riktig sted på siden. Dette er vel og bra når det gjør [...]]]></description>
			<content:encoded><![CDATA[<p>De siste årene har bruk av <a href="http://en.wikipedia.org/wiki/Ajax_(programming)">asynkrone JavaScript</a> fått stor utbredelse. I stedet for å laste en hel side på nytt hver gang du klikker på noe, kan et lite skript ta seg av kommunikasjonen med tjeneren og sømløst dytte inn nye data riktig sted på siden.</p>
<p>Dette er vel og bra når det gjør nettstedet raskere og enklere å bruke. Men det er dessverre ikke alltid tilfelle. Blendet av fordelene med dette verktøyet er det mange utviklere som benytter det også i tilfeller der en statisk side hadde fungert like fint. Ofte fører dette til at nettsider og webapplikasjoner blir tregere enn de behøver å være.</p>
<h3>Test #1: Uten asynkrone JavaScript</h3>
<p>La oss bruke <a href="http://e-tjenesten.org/eksperimenter/xhr/uten-xhr.html">følgende enkle side</a> som et eksempel:</p>
<p><img src="/bilder/xhr-testside.png" alt="" /></p>
<p><a href="http://e-tjenesten.org/eksperimenter/xhr/uten-xhr.html">Denne siden</a> består av en statisk HTML-side og to statiske bilder – totalt 1.5kB med data. Å laste denne siden på min datamaskin tar i gjennomsnitt 75 millisekunder, fordelt omtrent som følger:</p>
<table class="http">
<tbody>
<tr>
<td>HTML</td>
<td class="file" style="width: 150px;">50ms</td>
<td></td>
</tr>
<tr>
<td>Bilde</td>
<td></td>
<td class="file" style="width: 75px;">25ms</td>
</tr>
<tr>
<td>Bilde</td>
<td></td>
<td class="file" style="width: 75px;">25ms</td>
</tr>
</tbody>
</table>
<p class='time'>Tid <img src="/bilder/pil.png" alt="→" /></p>
<p>Nettleseren laster først ned HTML-dokumentet og tolker dette. Underveis oppdager nettleseren at det refereres til to forskjellige bilder, og laster ned disse også. Svoosj. Lynraskt.</p>
<h3>Test #2: Med asynkrone JavaScript</h3>
<p>La oss prøve én gang til, men la <a href="http://e-tjenesten.org/eksperimenter/xhr/med-xhr.html">et JavaScript hente inn kommentarene</a> på egenhånd når siden først er lastet. Hvor lang tid vil det ta?</p>
<table class="http">
<tbody>
<tr>
<td>HTML</td>
<td class="file" style="width: 150px;">50ms</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>JS</td>
<td></td>
<td class="file" style="width: 60px;">20ms</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Data</td>
<td></td>
<td></td>
<td class="file" style="width: 108px;">36ms</td>
<td></td>
</tr>
<tr>
<td>Bilde</td>
<td></td>
<td></td>
<td></td>
<td class="file" style="width: 75px;">25ms</td>
</tr>
<tr>
<td>Bilde</td>
<td></td>
<td></td>
<td></td>
<td class="file" style="width: 75px;">25ms</td>
</tr>
</tbody>
</table>
<p class='time'>Tid <img src="/bilder/pil.png" alt="→" /></p>
<p>På min datamaskin tar dette i gjennomsnitt 131 millisekunder. Det er fremdeles ganske raskt, men er allikevel hele 75% lengre tid enn i det første eksempelet!</p>
<h3>Hva er det egentlig som foregår?</h3>
<p>Men hvordan kan forskjellen bli så stor av et så lite skript? Burde ikke den raske og fine nettlinjen min klare å laste ned <a href="http://e-tjenesten.org/eksperimenter/xhr/med-xhr.html">denne lille siden</a> like raskt som <a href="http://e-tjenesten.org/eksperimenter/xhr/uten-xhr.html">den andre</a>?</p>
<p>Nei, det er dessverre ikke slik det fungerer. Selv om du kan overføre store mengder data per sekund over en rask nettlinje, behøver signalene fremdeles en gitt mengde tid for å fysisk komme seg fra A til B. Å sende et signal via Internett fra Oslo til Bergen og tilbake tar minst 15 millisekunder, uansett hvor lite data som følger med. Signalet skal jo fysisk forflytte seg gjennom tusen kilometer med kobber- og fiberkabel, og enn så lenge vi er <a href="http://en.wikipedia.org/wiki/Speed_of_light">begrenset av lysets hastighet</a> må vi belage oss på litt venting.</p>
<p>Når nettleseren min må gjøre fire slike rundturer (HTML, JS, data, bilder) for å få tak i dataene den behøver for å kunne vise siden over, tar det naturligvis lengre tid enn når den bare må gjøre to (HTML, bilder).</p>
<p><img src="/bilder/latens-kart.png" alt="" /></p>
<p>Effekten blir gradvis større jo lenger unna du er fra datamaskinen du vil kommunisere med. Mens det bare tar 15 millisekunder å komme seg fra Oslo til Bergen og tilbake, tar tur-retur Tromsø 30 millisekunder, og skal du kommunisere med noen i California tar det hele 200 millisekunder! Så det som ser fint og raskt ut for deg kan være smertelig tregt for brukerne dine andre steder i verden.</p>
<h3>Konklusjon</h3>
<p>Hvor mange rundturer gjør brukerens nettleser når din nettside lastes? Om du gjør alt riktig bør det aldri være mer enn tre når siden først lastes, og to når du gjør asynkrone oppdateringer underveis. Om du kan redusere antall rundturer ytterligere vil det glede både brukerne dine og tjenermaskinen din.</p>
<p>Om en side inneholder data som skal oppdateres dynamisk og ofte, sørg for å laste ned en statisk versjon først. Så kan du oppdatere den dynamisk noen sekunder senere.</p>
<p class='sources'>Kartet over er basert på <a href="http://en.wikipedia.org/wiki/File:Wideroe_routes.svg">dette</a>, og kan fritt brukes av andre under en <a href="http://creativecommons.org/licenses/by-sa/3.0/deed.en">Creative Commons-lisens</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://e-tjenesten.org/verkstedet/2010/05/responstid-og-asynkrone-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&lt;button&gt;, border-radius og box-shadow</title>
		<link>http://e-tjenesten.org/verkstedet/2010/04/button-border-radius-og-box-shadow/</link>
		<comments>http://e-tjenesten.org/verkstedet/2010/04/button-border-radius-og-box-shadow/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 20:50:28 +0000</pubDate>
		<dc:creator>Wilhelm Joys Andersen</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[design]]></category>

		<guid isPermaLink="false">http://e-tjenesten.org/verkstedet/?p=6</guid>
		<description><![CDATA[Knappene vi bruker i skjemaer på Bikube var inntil nylig ganske kjedelige, triste og ikke spesielt pene. Etter litt eksperimentering med border-radius og box-shadow ble de dog seende slik ut: De blir runde og fine i Opera, Firefox, Chrome og Safari. I Internet Explorer forblir de firkantede, men de går like fint an å trykke [...]]]></description>
			<content:encoded><![CDATA[<p>Knappene vi bruker i skjemaer på <a href='http://bikube.no/'>Bikube</a> var inntil nylig ganske kjedelige, triste og ikke spesielt pene. Etter litt eksperimentering med <code>border-radius</code> og <code>box-shadow</code> ble de dog seende slik ut:</p>
<p><img src='/bilder/knapp.png' alt=''></p>
<p>De blir runde og fine i Opera, Firefox, Chrome og Safari. I Internet Explorer forblir de firkantede, men de går like fint an å trykke på. Skyggen fungerer foreløpig bare i Opera og Firefox, men brukere av andre nettlesere klarer seg sikkert fint uten akkurat den kosmetiske detaljen.</p>
<p>En fungerende demonstrasjon av knappene med og uten ikoner finner du her:</p>
<p class='link'><a href='http://e-tjenesten.org/eksperimenter/knapp/'>http://e-tjenesten.org/eksperimenter/knapp/</a></p>
<p>Lån gjerne deler av <abbr title='Cascading Stylesheets'>CSS</abbr>en vår.</p>
]]></content:encoded>
			<wfw:commentRss>http://e-tjenesten.org/verkstedet/2010/04/button-border-radius-og-box-shadow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stilsett for utskrift</title>
		<link>http://e-tjenesten.org/verkstedet/2010/04/stilsett-for-utskrift/</link>
		<comments>http://e-tjenesten.org/verkstedet/2010/04/stilsett-for-utskrift/#comments</comments>
		<pubDate>Thu, 01 Apr 2010 15:47:31 +0000</pubDate>
		<dc:creator>Wilhelm Joys Andersen</dc:creator>
				<category><![CDATA[css]]></category>

		<guid isPermaLink="false">http://e-tjenesten.org/verkstedet/?p=4</guid>
		<description><![CDATA[Å skrive ut en avisartikkel på papir er ofte en smertefull prosess. Til tross for at artikkelen ser vakker ut på skjerm, fremstår det gjerne som at hele desken ved VG er byttet ut med fulle aper når den kommer ut av skriveren. Artikkelen er sannsynligvis spredd utover dobbelt så mange sider som nødvendig, fulle [...]]]></description>
			<content:encoded><![CDATA[<p>Å skrive ut en avisartikkel på papir er ofte en smertefull prosess. Til tross for at artikkelen ser vakker ut på skjerm, fremstår det gjerne som at hele desken ved VG er byttet ut med fulle aper når den kommer ut av skriveren.</p>
<p><img src="/bilder/utskrift.gif" alt="" /></p>
<p>Artikkelen er sannsynligvis spredd utover dobbelt så mange sider som nødvendig, fulle av menyer, lenker og reklame som vanskelig kan klikkes på når de henger på veggen.</p>
<p>Det finnes flere måter å løse dette problemet på. Den vanligste er å plassere en lenke til en «utskriftsvennlig versjon» på et tilsynelatende tilfeldig valgt sted på siden. Det er dog ikke en spesielt god løsning. Den er tungvindt for vedkommende som lager nettsiden, forvirrende for søkemotorer som kan ende opp med å indeksere to nesten identiske sider. Og, viktigst av alt, irriterende for brukerne som ikke lenger kan bruke «Utskrift»-knappen i nettleseren sin.</p>
<p>Heldigvis finnes der en løsning som både er enklere og mer elegant. Fem linjer <abbr title="Cascading Style Sheets">CSS</abbr> er alt som skal til:</p>
<pre><code>@media print {
   .reklame, .meny {
      display: none;
   }
}</code></pre>
<p><a title="Cascading Style Sheets level 2, chapter 7: Media types" href="http://www.w3.org/TR/CSS2/media.html">CSS-spesifikasjonen</a> definerer en rekke forskjellige medietyper, hvorav «print» er én. Med deklarasjonen <code>@media print {}</code> angir vi at den aktuelle blokken med kode skal ignoreres når dokumentet vises på skjerm, og kun ta effekt ved utskrift. I eksempelet over skjuler vi alle menyer og reklamebannere fra vårt hypotetiske dokument, slik at alt som gjenstår er selve artikkelteksten.</p>
<p>Dersom du ønsker det kan du selvsagt også angi mer leselige skriftstørrelser, farger med bedre kontrast, hensiktsmessige sidemarger eller gjøre andre justeringer for å gjøre utskriften mer leselig:</p>
<pre><code>@media print {

   ...

   #artikkel {
      font-size: 14pt;
      color: black;
      background-color: white;
      width: auto;
      margin: 1% 2%;
      padding: 0;
      float: none;
   }
}</code></pre>
<p>Du kan også putte utskrifts-reglene i et separat stilsett:</p>
<pre><code>&lt;link href='utskrift.css' rel='stylesheet' media='print'&gt;</code></pre>
<p>En demonstrasjon av hvordan disse tingene fungerer i praksis finner du her:</p>
<p class='link'><a href='http://e-tjenesten.org/eksperimenter/utskrift/'>http://e-tjenesten.org/eksperimenter/utskrift/</a></p>
<p>Mer informasjon om relevant <abbr title="Cascading Style Sheets">CSS</abbr>-magi finner du i spesifikasjonen:</p>
<ul>
<li><a href="http://www.w3.org/TR/CSS2/media.html">CSS2, chapter 7: Media types</a></li>
<li><a href="http://www.w3.org/TR/CSS2/page.html">CSS2, chapter 13: Paged media</a></li>
<li><a href="http://www.w3.org/TR/css3-page/">CSS3 Module: Paged Media</a> (fremdeles eksperimentelt, med varierende nettleserstøtte)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://e-tjenesten.org/verkstedet/2010/04/stilsett-for-utskrift/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

