<?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>David Steinsland &#187; PHP</title>
	<atom:link href="http://blog.davidsteinsland.net/emner/webprogrammering/php-webprogrammering-2/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.davidsteinsland.net</link>
	<description>Personlig blogg om programmering og andre uinteressante emner</description>
	<lastBuildDate>Sun, 25 Jul 2010 16:54:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Sikkerhet i PHP gjort lettere</title>
		<link>http://blog.davidsteinsland.net/2010/07/sikkerhet-i-php-gjort-letter/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=sikkerhet-i-php-gjort-letter</link>
		<comments>http://blog.davidsteinsland.net/2010/07/sikkerhet-i-php-gjort-letter/#comments</comments>
		<pubDate>Sun, 25 Jul 2010 16:54:55 +0000</pubDate>
		<dc:creator>David Steinsland</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmering]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[sikkerhet]]></category>

		<guid isPermaLink="false">http://blog.davidsteinsland.net/?p=354</guid>
		<description><![CDATA[Når du utvikler en nettside, enten det er en applikasjon, rammeverk, bibliotek &#8212; hva som helst &#8212; er det desidert viktigste sikkerhet. Likevel er det mange som tar snarveier, og slurver seg unna. Om du vil unngå å stå med skjegget i postkassen den dagen du blir angrepet via XSS, CSRF eller SQL injections bør [...]]]></description>
			<content:encoded><![CDATA[<p>Når du utvikler en nettside, enten det er en applikasjon, rammeverk, bibliotek &#8212; hva som helst &#8212; er det desidert viktigste sikkerhet. Likevel er det mange som <a href="http://en.wikipedia.org/wiki/Security_by_obscurity">tar snarveier</a>, og slurver seg unna. Om du vil unngå å stå med skjegget i postkassen den dagen du blir angrepet via <a href="http://en.wikipedia.org/wiki/Cross-site_scripting">XSS</a>, <a href="http://en.wikipedia.org/wiki/Cross-site_request_forgery">CSRF</a> eller <a href="http://en.wikipedia.org/wiki/SQL_injection">SQL injections</a> bør du følge med nå.</p>
<h3>Hvorfor?</h3>
<p><strong>Du skal aldri stole på brukerne dine</strong>. Selv om det er familien eller vennene dine. Årsaken er at enkelte personer kan utnytte sårbarhetene i systemet ditt, som kan resultere i at sensitiv informasjon blir samlet, slettet eller endret. Det kan resultere i at noen tar fysisk kontroll over nettsiden din.</p>
<h3>Hva kan man gjøre?</h3>
<p>Ved å følge prinsippet ovenfor, må du sørge for å <em>validere</em> all data du skal hente inn fra brukerne. Du bør også <em>sanitere</em> data.</p>
<p><em>Validering</em>: sjekke om data er av riktig type, for eksempel en ordentlig E-postadresse eller postnummer.<br />
<em>Sanitering</em>: manipulasjon av data, som for eksempel å fjerne enkelte tegn/bokstaver/tall og så videre.</p>
<p>I PHP får vi tilgang til brukerdata via super-globalene <var>$_GET</var>, <var>$_POST</var>, <var>$_COOKIE</var>, <var>$_SERVER</var> og <var>$_SESSION</var>.</p>
<p>Her kan brukere bokstavelig talt skrive hva de vil, og det kan betyr store følger om du ikke sjekker dataene ordentlig.</p>
<h3>Løsningen</h3>
<p>Jeg har skrevet et bibliotek i PHP kalt &#8220;<a href="http://php.davidsteinsland.net/php-security-wrapper">PHP Security Wrapper</a>&#8220;. Dette biblioteket tar seg av brukerdata fra GET, POST, SERVER og COOKIE, samtidig som du får muligheten til både å validere og sanitere dem.</p>
<p>Biblioteket er selvfølgelig gratis, og oppdateres hyppig. Om du ønsker å lære mer om dette biblioteket kan du lese <a href="http://norskwebforum.no/viewtopic.php?f=50&amp;t=43806">forumtråden</a> jeg postet på <a href="http://norskwebforum.no/">Norsk Webforum</a>, <a href="http://php.davidsteinsland.net/php-security-wrapper/">sjekke ut nettside</a>n og <a href="http://php.davidsteinsland.net/php-security-wrapper/documentation/">lese dokumentasjonen</a>.</p>
<p>Det er ikke meningen at dette blogginnlegget skulle ta for seg hvordan du kan sikre deg mot angrep, men om du ønsker å lese videre på emnet kan du sjekke ut følgende linker:</p>
<ul>
<li><a href="http://phpsec.org/projects/guide/">http://phpsec.org/projects/guide/</a></li>
<li><a href="http://ilia.ws/files/phpworks_security.pdf">http://ilia.ws/files/phpworks_security.pdf</a></li>
<li><a href="http://www.symantec.com/connect/fr/articles/securing-php-step-step">http://www.symantec.com/connect/fr/articles/securing-php-step-step</a></li>
<li><a href="http://www.phparch.com/2010/07/08/never-use-_get-again/">http://www.phparch.com/2010/07/08/never-use-_get-again/</a></li>
<li><a href="http://www.phpfreaks.com/tutorial/php-security">http://www.phpfreaks.com/tutorial/php-security</a></li>
<li><a href="http://articles.sitepoint.com/print/php-security-blunders">http://articles.sitepoint.com/print/php-security-blunders</a></li>
<li><a href="http://php.net/manual/en/security.php">http://php.net/manual/en/security.php</a></li>
<li><a href="http://php-security.org/category/articlesandtools/index.html">http://php-security.org/category/articlesandtools/index.html</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.davidsteinsland.net/2010/07/sikkerhet-i-php-gjort-letter/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Yr.no &#8211; vise værdata direkte på nettsiden din</title>
		<link>http://blog.davidsteinsland.net/2010/03/yr-no-vise-v%c3%a6rdata-direkte-pa-nettsiden-din/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=yr-no-vise-v%25c3%25a6rdata-direkte-pa-nettsiden-din</link>
		<comments>http://blog.davidsteinsland.net/2010/03/yr-no-vise-v%c3%a6rdata-direkte-pa-nettsiden-din/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 21:59:12 +0000</pubDate>
		<dc:creator>David Steinsland</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[værdata]]></category>
		<category><![CDATA[yr]]></category>

		<guid isPermaLink="false">http://blog.davidsteinsland.net/?p=257</guid>
		<description><![CDATA[Siden den norske nettbaserte værtjenesten Yr.no frigir sine værdata gratis, er det mange som er i stand til å vise været fra sin hjembygd på nettsidene sine. Men hvordan gjør dem det? Jeg skrev for en stund tilbake siden en PHP-klasse som gjorde akkurat dette: hentet frem værdata basert på et norsk postnummer. Funksjonen mellomlagrer [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://blog.davidsteinsland.net/wp-content/uploads/2010/03/yr-e1268685790227.jpg"><img class="aligncenter size-full wp-image-270" title="Yr.no" src="http://blog.davidsteinsland.net/wp-content/uploads/2010/03/yr-e1268685790227.jpg" alt="" /></a></p>
<p style="text-align: left;">Siden den norske nettbaserte værtjenesten Yr.no frigir sine værdata gratis, er det mange som er i stand til å vise været fra sin hjembygd på nettsidene sine. Men hvordan gjør dem det?</p>
<p>Jeg skrev for en stund tilbake siden en PHP-klasse som gjorde akkurat dette: hentet frem værdata basert på et norsk postnummer.</p>
<p>Funksjonen mellomlagrer værdataene i ti minutter, slik at belastningen på Yrs servere skal minimeres, og at lastetiden hos brukeren skal oppleves raskere.</p>
<p>Kort fortalt er det kun fem linjer med kode du bør konsentrere deg om:</p>
<pre class="brush: php;">define ('PATH_WEATHER_ICONS', 'img/weather/');
define ('PATH_CACHE', 'cache/');
define ('CACHE_EXPIRATION', 600);
// How many days we are going to show
define ('DAYS_TO_SHOW', 3);

// The Zip code to which place we will fetch information about
// Defaults to 5440
$zip = isset ($_GET['zip']) ? intval ($_GET['zip']) : 5440;
</pre>
<p>Først av alt må du fortelle hvilken mappe bilde-ikonene ligger i, og hvor PHP-klassen skal mellomlagre dataene. Deretter spesifiserer du hvor lenge dataene skal bli mellomlagret (600 sekunder = 10 minutter), samt hvor mange dager fremover i tid du skal vise.</p>
<p>Sist, men ikke minst må du spesifisere fra hvor du skal hente værdata fra. Du må endre &#8220;5440&#8243; til det postnummeret du vil scriptet skal vise ved default. Dersom du vil se værdata fra et annet postnummer, skriver du følgende i adressefeltet:</p>
<p><code>index.php?zip=&lt;nytt postnummer her&gt;</code></p>
<h3>Laste ned</h3>
<p>PHP-klassen er tilgjengelig via <a href="http://tillegg.yr.no/medlemmer/davidsteinsland/php5-vaertjeneste-1">tillegg.yr.no</a>, og er som vanlig lisensiert under <a href="creativecommons.org/licenses/by-sa/3.0/">Creative Commons</a>.</p>
<h3>Tips</h3>
<p>Du kan meget lett integrere PHP-klassen min med databasesettet mitt over alle norske postnummer. Slik kan du også finne ut om postnummeret brukeren ønsker å vise, faktisk finnes. Mer informasjon om databasesettet finner du i <a href="http://blog.davidsteinsland.net/2010/03/komplett-databasesett-over-norges-postnummer-med-koordinater/">egen artikkel</a>.</p>
<h3>Tilbakemeldinger</h3>
<p>Som vanlig setter jeg pris på tilbakemeldinger, som du kan dele i kommentarfeltet!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davidsteinsland.net/2010/03/yr-no-vise-v%c3%a6rdata-direkte-pa-nettsiden-din/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Komplett databasesett over Norges postnummer (med koordinater)</title>
		<link>http://blog.davidsteinsland.net/2010/03/komplett-databasesett-over-norges-postnummer-med-koordinater/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=komplett-databasesett-over-norges-postnummer-med-koordinater</link>
		<comments>http://blog.davidsteinsland.net/2010/03/komplett-databasesett-over-norges-postnummer-med-koordinater/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 21:49:51 +0000</pubDate>
		<dc:creator>David Steinsland</dc:creator>
				<category><![CDATA[Guider]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[postnummer]]></category>

		<guid isPermaLink="false">http://blog.davidsteinsland.net/?p=259</guid>
		<description><![CDATA[Her kommer det er oversikt over absolutt alle postnummer i Norge med tilhørende fylke, kommune og poststed. Hvert postnummer har også en lengde- og breddegrad tilknyttet seg. På denne måten kan du koble opp postnummeret til f.eks Google Maps. Det er i alt fire tabeller i databasesettet: Comments County Municipal Zip _codes _places Første tabell [...]]]></description>
			<content:encoded><![CDATA[<p>Her kommer det er oversikt over absolutt alle postnummer i Norge med tilhørende fylke, kommune og poststed. Hvert postnummer har også en lengde- og breddegrad tilknyttet seg. På denne måten kan du koble opp postnummeret til f.eks Google Maps.</p>
<p>Det er i alt fire tabeller i databasesettet:</p>
<ul>
<li> Comments</li>
<li>County</li>
<li>Municipal</li>
<li>Zip
<ul>
<li>_codes</li>
<li>_places</li>
</ul>
</li>
</ul>
<p>Første tabell inneholder bare seks rader, som forklarer om postnummeret er av typene:</p>
<ul>
<li> Firma med eige postnummer</li>
<li>Fleire bruksområde</li>
<li>Gateadresser</li>
<li>Gateadresser og postboksar</li>
<li>Postboksar</li>
<li>Serviceboksar</li>
</ul>
<p>Databasesettet er generert med hjelp av <a href="http://www.erikbolstad.no/geo/noreg/postnummer/">Postnummer-dugnaden</a> <a href="http://yr.no">Yr.no</a> arrangerte sommeren 2009.</p>
<p>Ved hjelp av lengde- og breddegradene kan du jo også regne deg frem til avstanden mellom to steder, eller finne nærmeste postkontor til en bruker.</p>
<p>For å få lett oversikt over alle postkoder, kjører du følgende spørring:</p>
<pre class="brush: sql;">
SELECT
z.zip, c.name as fylke, m.name as kommune, p.name as poststed, cc.comment, z.lat, z.lon
FROM `zip_codes` z
INNER JOIN zip_places p
ON p.place_id = z.place_id
INNER JOIN municipal m
ON m.id = p.municipal_id
INNER JOIN county c
ON c.county_id = m.county_id
INNER JOIN comments cc
ON cc.comment_id = z.comment_id
ORDER BY
z.zip ASC, fylke ASC, kommune ASC, poststed ASC</pre>
<p>Med enhver sak kan det forekomme feil, så om dere kommer over noe som skulle vise seg til å være en bug: si i fra.</p>
<p><strong>Liste over alle postnummer</strong>:<br />
<a href="http://trunk.davidsteinsland.net/zip_codes.htm">http://trunk.davidsteinsland.net/zip_codes.htm</a></p>
<h3>Oppdateringer</h3>
<ul>
<li>Ser ut til at Jan Mayen og Svalbard har klart å falle ut. Dette er pga. øyene ikke tilhører noe fylke. Skal ordnes.</li>
<li>Fikset nå. Poststeder på øyene er plassert i et eget dummy-fylke kalt &#8220;Svalbard og Jan Mayen&#8221;</li>
<li>Fylkene har nå fått korrekt fylkesnummer basert på ISO 3166-2:NO. Fikset opp i kommuner på Jan Mayen og Svalbard</li>
</ul>
<h3>Laste ned</h3>
<p><a href="http://norskwebforum.no/download/file.php?id=251">Norske postnummer.zip</a>, lisensiert under <a href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons</a>.</p>
<h2>Tips &amp; triks</h2>
<h3>Hvordan finne et originalpunkt basert på gitt bredde- og lengdegrad?</h3>
<p>Basert på sfærisk trigonometri kan vi &#8220;enkelt&#8221; regne oss frem til dette. Først av alt må vi gjøre punktene våres om til radianer (fra grader) for at funksjonen skal gjelde. Vi benytter oss også av jordradien i meter.</p>
<p>Distansen mellom punktene er gitt ved <em>s</em>:</p>
<img src='http://s.wordpress.com/latex.php?latex=s%20%3D%20%5Ccos%5E%7B-1%7D%5Cbig%28%20%5Csin%20%5Cphi%20%5Ccdot%20%5Csin%20%5Cphi_0%20%2B%20%5Ccos%20%5Cphi%20%5Ccdot%20%5Ccos%20%5Cphi_0%20%5Ccdot%20%5Ccos%20%5CDelta%20%5Clambda%20%5Cbig%29%20%5Ccdot%20R_%5Coplus&#038;bg=ffffff&#038;fg=000000&#038;s=1' alt='s = \cos^{-1}\big( \sin \phi \cdot \sin \phi_0 + \cos \phi \cdot \cos \phi_0 \cdot \cos \Delta \lambda \big) \cdot R_\oplus' title='s = \cos^{-1}\big( \sin \phi \cdot \sin \phi_0 + \cos \phi \cdot \cos \phi_0 \cdot \cos \Delta \lambda \big) \cdot R_\oplus' class='latex' />
<p>Breddegradene (<img src='http://s.wordpress.com/latex.php?latex=%5Cphi&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\phi' title='\phi' class='latex' />) og lengdegradene (<img src='http://s.wordpress.com/latex.php?latex=%5Clambda&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\lambda' title='\lambda' class='latex' />) må først gjøres om til radianer. Dette gjør du med følgende formel:</p>
<img src='http://s.wordpress.com/latex.php?latex=%7Brad%7D%20%3D%20%5Cfrac%7B180%5E%5Ccirc%7D%7B%5Cpi%7D%20%5Ccdot%20%7Bdeg%7D%20&#038;bg=ffffff&#038;fg=000000&#038;s=1' alt='{rad} = \frac{180^\circ}{\pi} \cdot {deg} ' title='{rad} = \frac{180^\circ}{\pi} \cdot {deg} ' class='latex' />
<p>Dette er igrunn irrelevant, for dette har jeg allerede tatt høyde for i kodene.</p>
<p>For å løse det i MySQL, kan man gjøre det slik:</p>
<pre class="brush: sql;"> SET @MY_LAT = 59.7022480, @MY_LON = 5.3764340;

SELECT z.zip, p.name, z.lat, z.lon, acos(SIN( RADIANS(@MY_LAT)) * SIN( RADIANS(z.lat))
+(cos(RADIANS(@MY_LAT)) * COS( RADIANS(z.lat)) * COS(RADIANS(z.lon) - RADIANS(@MY_LON))
)) * 6378137 AS distance
FROM zip_codes z
INNER JOIN zip_places p
ON z.place_id = p.place_id
HAVING distance &lt;= 2000
ORDER BY distance ASC</pre>
<p>Her har jeg satt variablene utenfor selve spørringen slik at det blir litt lettere å få det med seg.</p>
<p>I PHP kan man gjøre det slik:</p>
<pre class="brush: php;">$lat_1 = deg2rad (59.7022480);
$lat_2 = deg2rad (59.7022480);

$lon_1 = deg2rad (5.3764340);
$lon_2 = deg2rad (5.3764340);

$R = 6378137; // meters

$distance = acos ( sin($lat_1) * sin($lat_2) + cos ($lat_1) * cos($lat_2) * cos ($lon_2 - $lon_1)) * $R;
echo 'Distance: ' . (int)$distance/1000 . ' km'; </pre>
<p><strong>Hva betyr dette? Hva kan man nytte det til?</strong><br />
Dersom du bruker en pakkeløsning hvor du kan dra frem koordinatene til en bruker basert på hans IP, kan du finne ut en circa-plassering på hvor han er i Norge. Formelen har en feilkilde på rundt 1 meter.</p>
<h3>Bruke jQuerys Ajax-funksjonalitet til å hente ut data om postnummer</h3>
<p>1. Opprett en fil kalt &#8220;get_postal.php&#8221; med følgende kode:<br />
<a href="http://norskwebforum.no/pastebin/11243">http://norskwebforum.no/pastebin/11243</a></p>
<p>2. Opprett så index.html med følgende kode:<br />
<a href="http://norskwebforum.no/pastebin/11244">http://norskwebforum.no/pastebin/11244</a></p>
<p>3. Opprett en mappen &#8220;cache&#8221;</p>
<p>Test ved å skrive inn et postnummer (fire siffer langt) eller et poststed. Informasjon om postnummeret/-stedet vil etterhvert poppe opp i avsnittet under skjemaet.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davidsteinsland.net/2010/03/komplett-databasesett-over-norges-postnummer-med-koordinater/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>LaTeX på nett: matematiske formler til bilder</title>
		<link>http://blog.davidsteinsland.net/2010/03/latex-pa-nett-matematiske-formler-til-bilder/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=latex-pa-nett-matematiske-formler-til-bilder</link>
		<comments>http://blog.davidsteinsland.net/2010/03/latex-pa-nett-matematiske-formler-til-bilder/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 17:58:54 +0000</pubDate>
		<dc:creator>David Steinsland</dc:creator>
				<category><![CDATA[Guider]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[latex]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.davidsteinsland.net/?p=240</guid>
		<description><![CDATA[Innenfor realfagene matematikk, fysikk og kjemi skriver jeg alt av rapporter og øvinger i LaTeX, som er et typesettingssystem for dokumentproduksjon. Det er spesielt egnet for matematisk litteratur, og blir definert av den engelske Wikipedia slik: A document-typesetting system derived from TeX and used mainly to create scientific and mathematical literature. LaTeX er originalt skrevet [...]]]></description>
			<content:encoded><![CDATA[<p>Innenfor realfagene matematikk, fysikk og kjemi skriver jeg alt av rapporter og øvinger i <a href="http://no.wikipedia.org/wiki/LaTeX">LaTeX</a>, som er et typesettingssystem for dokumentproduksjon. Det er spesielt egnet for matematisk litteratur, og blir definert av den engelske Wikipedia slik:</p>
<blockquote><p>A document-typesetting system derived from TeX and used mainly to create scientific and mathematical literature.</p></blockquote>
<p>LaTeX er originalt skrevet for Linux, men er per i dag tilgjengelig på alle plattformer gjennom ulike distribusjoner. Personlig bruker jeg distribusjonen <a href="http://miktex.org">MikTeX</a> med versjonsnummer 2.8. Redigeringsprogrammet jeg bruker heter <a href="http://www.latexeditor.org/">LaTeX Editor</a> &#8212; forkortet LEd.</p>
<p style="text-align: center;"><a href="http://blog.davidsteinsland.net/wp-content/uploads/2010/03/led.png"><img class="size-large wp-image-241  aligncenter" title="LaTeX Editor" src="http://blog.davidsteinsland.net/wp-content/uploads/2010/03/led-e1268686172110.png" alt="" /></a></p>
<p>Det er tusenvis av fordeler for å bruke LaTeX kontra såkalte <em>What You See Is What You Get</em>-program (Microsoft Office, OpenOffice, Lotus Symphony etc.). Den største er at i LaTeX så er det du som har kontrollen: What You See Is What You Mean.  Ting blir faktisk slik du sier det skal være!</p>
<p>Du har vel sett noen matematiske formler på Wikipedia? Der anvender de nemlig  LaTeX, og ser omtrent slik ut:</p>
<p><img class="alignnone" title="ABC-formel" src="http://upload.wikimedia.org/math/3/e/a/3ea647783b5121989cd87ca3bb558916.png" alt="" width="179" height="44" /></p>
<p>Det er nemlig dette jeg har tenkt å ta tak i, i denne posten: nemlig forklare deg hvordan du også kan få slike deilige formler på din nettside!</p>
<h2>Hva må gjøres klart?</h2>
<p>For å skrive LaTeX på PC-en din, og for at alt skal gå optimalt, krever det en rekke program som f.eks MikTeX (LaTeX-distro), LEd (redigering) og GhostScript / Ghost View (postscript-støtte). For å skrive LaTeX på nett krever jeg derimot at du kun har MikTeX installert!</p>
<p><em>PS: Jeg tar som utgangspunkt at webserveren din er din egen PC. Veldig få webhotell-leverandører som installerer LaTeX&#8230;<img class="alignright" title="MikTeX Installasjon" src="http://blog.davidsteinsland.net/wp-content/uploads/2010/03/miktex-install-300x178.png" alt="" width="300" height="178" /></em></p>
<p><strong>Last så ned siste versjon av <a href="http://miktex.org/">MikTeX</a> og installer denne på PC-en din</strong>. For din egen del er det nok lurest å velge &#8220;Basic Installer&#8221;. Her vil kun de mest nødvendige pakkene bli installert (pakker kan oversettes som plugins). Om du ønsker å installere alle pakker tilgjengelig, velger du &#8220;Complete MikTeX System&#8221;.</p>
<h2>La oss begynne!</h2>
<p>Det aller første du må gjøre rede for er følgende:</p>
<ol>
<li>Hvor installerte du MikTeX?</li>
</ol>
<p>La oss si du installerte programmet i <code>C:\Programfiler\MikTeX 2.8\</code></p>
<p>Da må du leite frem til <code>miktex\bin\latex.exe</code> og <code>\miktex\bin\dvipng.exe</code>.</p>
<p>Dersom disse programmene ikke er tilstede, vil du ikke være i stand til å gjennomføre denne guiden: prøv da å re-installere MikTeX.</p>
<p>Har du lokalisert programmene? Flott &#8212; da går vi videre.</p>
<p>Finn frem til root-mappen på serveren din (bruker du WampServer er dette <code>C:\wamp\www\</code>). Opprett en mappe som du kaller for &#8220;latex&#8221;.<br />
Inni den nye mappen, oppretter du så følgende mapper:</p>
<ul>
<li><code>images</code></li>
<li><code>tmp</code></li>
</ul>
<p>«Images» er mappen hvor de endelige formlene kommer til å bli plassert, og «tmp» er mappen hvor produksjonsfilene våre ligger. Når du kompilerer et dokument i LaTeX vil det bli opprettet totalt 4 filer per prosjekt. Disse er respektivt .tex, .aux, .log og .dvi. Tex-filen inneholder selve dokumentet vårt, og <a href="http://en.wikipedia.org/wiki/Device_independent_file_format">DVI-filen</a> er selve outputen etter kompilering. Disse to er essensielle.</p>
<h2>PHP-klassen</h2>
<p>Jeg har allerede skrevet klassen ferdig, som du skal få. Før jeg overrekker den, vil jeg ta tiden til å forklare litt hva den gjør.</p>
<p>Det er to ting du umiddelbart må få i stand etter at du har lastet ned klassen:</p>
<p>- Øverst i klassen er det deklarert to variabler: <code>_latex_path</code> og <code>_dvipng_path</code>. Disse må du endre til hva du fant ut i punkt #1 (under «La oss begynne!»). Det er veldig viktig at du følger denne regelen når du endrer sti: <strong>Variabelen må være omgitt av to enkle apostrofer, og selve stien til programmene må være omgitt av gåseøyne.</strong></p>
<p>Dette er fordi at dersom det er mellomrom en plass i stien (i <code>C:\Program Files\MikTeX\</code> er det mellomrom i &#8220;Program Files&#8221;) må teksten være omgitt av gåseøyne, som forteller at teksten skal tolkes som én sti, og ikke to.</p>
<p>Dersom stien til latex.exe på PC-en din er følgende: <code>C:\Program Files\MikTeX 2.8\miktex\bin\latex.exe</code> skal <code>_latex_path</code> være formet slik:</p>
<pre class="brush: php;"> $_latex_path = '&quot;C:\Program Files\MikTeX 2.8\miktex\bin\latex.exe&quot;';</pre>
<p>Utover dette, skal klassen fungere ut-av-boksen (dersom du har opprettet de korrekte mappene).</p>
<h2>Laste klassen ned</h2>
<p><a href="http://blog.davidsteinsland.net/wp-content/uploads/2010/03/latex.zip">PHP5 LaTeX Renderer</a>, lisensiert under <a href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons</a>.</p>
<h2>Hvordan fungerer klassen?</h2>
<p>I seg selv er den ganske liten, og rett frem. Det er en innebygget cache-funksjon som lagrer bildene ved hjelp av:</p>
<ul>
<li>den matematiske formelen</li>
<li>tekst-størrelsen</li>
</ul>
<p>Om du vil endre tekst-størrelse, gjør du slik:</p>
<pre class="brush: php;">$latex = new LaTeX();

$latex-&gt;set ('font_size', 16); // 16 is the font size, measured in &quot;points&quot;</pre>
<p>Dersom du vil endre artikkel-klassen for dokumentet, gjør du slik:</p>
<pre class="brush: php;">$latex-&gt;set ('article_class', 'article'); </pre>
<p>Ved default er det «scrartcl» som fungerer som dokumentets klasse, men dette er en tilleggspakke som må installeres. Derfor kan du anvende «article» som kommer ferdig-installert via MikTeX.</p>
<p>&#8230; og slik setter du innholdet:</p>
<pre class="brush: php;">$latex-&gt;set ('tex_content', '\frac{1}{2}');</pre>
<p>For å rendere dokumentet, og vise den endelige formelen som et bilde, gjør du slik:</p>
<pre class="brush: php;">$data = $latex-&gt;render ();
echo '&lt;img src=&quot;' . $data['img'] . '&quot; alt=&quot;' . $data['tex'] . '&quot; /&gt;';</pre>
<p>Klassen støtter naturligvis linking, og kan brukes slik:</p>
<pre class="brush: php;">$latex = new LaTeX();

$data = $latex-&gt;set ('font_size', 16)-&gt;set ('tex_content', 'ax^2 + bx + c = 0')-&gt;render ();</pre>
<p>Dersom du ønsker å skrive ABC-formelen (som jeg viste lengre oppe i artikkelen), skriver du den slik:</p>
<pre class="brush: plain;"> x = \frac{ -b \pm \sqrt{b^2 - 4ac}}{2a}</pre>
<h3>Flyteskjema</h3>
<p>For de av dere som er interessert i flowcharts (meg inkludert): slik er fremgangsmåten i klassen:</p>
<p><a href="http://blog.davidsteinsland.net/wp-content/uploads/2010/03/flowchart.png"><img class="aligncenter size-full wp-image-284" title="Flyteskjema - application flowchart" src="http://blog.davidsteinsland.net/wp-content/uploads/2010/03/flowchart-e1268685107832.png" alt="" width="575" height="378" /></a></p>
<h2>Det var det!</h2>
<p>Nå er du i bunn og grunn ferdig, og kan begynne å eksperimentere selv. Det rådes selvsagt at du har noen kunnskaper innen LaTeXs måter å skrive ting på. Om du vil lese deg opp på emnet, er det mange gode ressurser for det:</p>
<ul>
<li><a href="http://www.ctan.org/tex-archive/info/lshort/english/lshort.pdf">The Not So Short Introduction to LaTeX</a></li>
<li>Wikipedia (<a href="http://no.wikipedia.org/wiki/LaTeX">norsk</a> / <a href="http://en.wikipedia.org/wiki/LaTeX">engelsk</a>)</li>
<li>LaTeX guide på <a href="http://www.eksamensoppgaver.org/guider/latex-guide/10/">Eksamensoppgaver.org</a></li>
</ul>
<p>Om det er noen spørsmål om hjelp, tips til forbedringer etc, kan dette tas opp i kommentarfeltet.</p>
<p>PS: LaTeX uttales Lah-tek. Vil ikke høre om noen som sier det rett ut..</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davidsteinsland.net/2010/03/latex-pa-nett-matematiske-formler-til-bilder/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Wamp: Hvordan installere ffmpeg (Windows)</title>
		<link>http://blog.davidsteinsland.net/2010/01/installere-ffmpeg-pa-wampserver-windows/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=installere-ffmpeg-pa-wampserver-windows</link>
		<comments>http://blog.davidsteinsland.net/2010/01/installere-ffmpeg-pa-wampserver-windows/#comments</comments>
		<pubDate>Sat, 16 Jan 2010 02:27:15 +0000</pubDate>
		<dc:creator>David Steinsland</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Guider]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmering]]></category>
		<category><![CDATA[diy]]></category>
		<category><![CDATA[ffmpeg]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[wamp]]></category>
		<category><![CDATA[wampserver]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://blog.davidsteinsland.net/?p=135</guid>
		<description><![CDATA[Noen ganger kan det være ganske ålreit å kunne konvertere videoer via PHP, eller for eksempel hente ut miniatyrbilder fra en film. Da er det også ganske ålreit at ffmpeg finnes. Med ffmpeg kan du gjøre slike ting lekende lett, men veien der til er ikke alltid like grei. Heldigvis har jeg i den sammenheng [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-134" title="Howto: Installere ffmpeg på Wamp med Windows" src="http://blog.davidsteinsland.net/wp-content/uploads/2010/01/banner.png" alt="" width="560" height="164" /></p>
<p>Noen ganger kan det være ganske ålreit å kunne konvertere videoer via PHP, eller for eksempel hente ut miniatyrbilder fra en film. Da er det også ganske ålreit at ffmpeg finnes.</p>
<p>Med ffmpeg kan du gjøre slike ting lekende lett, men veien der til er ikke alltid like grei. Heldigvis har jeg i den sammenheng laget en liten guide til hvordan du kan gjøre det!</p>
<h3>Før vi begynner &#8230;</h3>
<p>Sørg for at du har:</p>
<ul>
<li>Installert <a href="http://www.wampserver.com/">Wampserver</a> på en Windows-maskin</li>
<li><a href="http://downloads.sourceforge.net/wampserver/WampServer2-PHP525.exe?download">Lastet ned og installert PHP 5.2.5</a> til Wamp (husk og aktiver denne versjonen, det er denne vi må bruke)</li>
</ul>
<p>Når du har de to punktene under kontroll er du klar til å gå videre.</p>
<h3>Hva vi trenger</h3>
<p>Da er tiden inne for å laste ned ffmpeg-arkivene. Last ned de to arkivene under, og plasser dem f. eks på skrivebordet ditt.</p>
<p><strong>FFmpeg</strong>:  <a href="http://sourceforge.net/projects/mplayer-win32/files/FFmpeg/">http://sourceforge.net/projects/mplayer-win32/files/FFmpeg/</a>(last ned en .7z-fil)<br />
<strong>FFmpeg-php</strong>:<a href="http://sergey89.ru/files/ffmpeg-php/ffmpeg-php-win32-all.zip"> http://sergey89.ru/files/ffmpeg-php/ffmpeg-php-win32-all.zip</a> (kun kompatibel med PHP 5.2.5)</p>
<h3>La oss begynne</h3>
<p>Pakk ut innholdet fra den første zip-filen, og kopier filen <em>ffmpeg.exe </em>til <em>C:\ffmpeg\</em>. Det er denne filen PHP kommer til å sende kommandoene til.</p>
<p>Pakk så ut innholdet fra det siste arkivet (ffmpeg-php). Her vil det være totalt 5 filer som vi trenger. Kopier filene <em>avcodec-51.dll, avformat-51.dll, avutil-49.dll </em>og <em>pthreadGC2.dll </em>og lim dem inn i: <em>C:\WINDOWS\System32\</em>.</p>
<p><em>Dersom du kjører et 64-bits operativsystem, må du også legge de samme filene i: C:\WINDOWS\SysWOW64\.</em></p>
<p>Da gjenstår det én fil igjen, og det er: <em>php_ffmpeg.dll</em>.  Dette er utvidelsefilen for PHP; denne må du plassere i <em>C:\wamp\bin\php\php5.2.5\ext\</em> som da er PHPs mappe over utvidelser. Siste punktet du må gjøre er å endre PHPs konfigurasjonsfil, <em>php.ini</em>. Denne kan du nå på to måter:</p>
<ul>
<li>Trykke på Wampserver-ikonet i Tray, klikke på <em>PHP</em> og så velge <em>php.ini</em></li>
<li>Gå til <em>C:\wamp\bin\php\php5.2.5\</em></li>
</ul>
<p>Åpne konfigurasjonsfilen i en teksteditor (f. eks Notepad), og bla ned til du kommer til &#8220;Windows extensions&#8221;. Her kommer det opp en liste over mange ulike utvidelser; lag en ny linje, og lim inn følgende kode:</p>
<p><em>extension=php_ffmpeg.</em><em>dll</em></p>
<p>Nå trenger du bare starte Wampserver om igjen, ved å trykke på Wampserver-ikonet i tray og deretter velge &#8220;Restart all services&#8221;.</p>
<p>Nå kan du åpne din favoritt-nettleser, og lime inn følgende adresse:</p>
<p><em>http://localhost/?phpinfo</em></p>
<p>Dersom installasjonen har vært vellykket, vil du kan kunne finne ffmpeg på den listen (se bilde).</p>
<p><img class="aligncenter size-full wp-image-137" title="ffmpeg er installert!" src="http://blog.davidsteinsland.net/wp-content/uploads/2010/01/ffmpeg.png" alt="" width="560" height="164" /></p>
<h3>Sluttord</h3>
<p>Nå er det bare til å sette i gang med å konvertere videoer, hente ut stillbilder, lyd eller hva det måtte være. Du kan teste installasjonen ved å kjøre følgende kode:</p>
<pre class="brush: php;">&lt;?php
    $clip = 'clip.mp4'; // Which video to extract from
    $frame = '00:00:10'; // ... and at which frame
    $dimensions = '640x480'; // Image dimensions (width x height)
    $output = 'myscreen.png'; // path to captured image

    $command = 'C:\ffmpeg\ffmpeg.exe -y -i ' . $clip . ' -vframes 1 -ss ' . $frame . ' -an -vcodec png -f rawvideo -s ' . $dimensions . ' ' . $output;
    exec ($command);
?&gt;</pre>
<p>Den vil hente ut et bilde fra videoen<em> <a href="http://blog.davidsteinsland.net/video.zip">clip.mp4</a></em> ti sekunder ut i filmen, og lagre bildet som <em>myscreen</em>.png. Legg spesielt merke til at vi må spesifisere fulle stien til hvor vi har plassert ffmpeg.exe-filen. De fleste plasser på Internett, så står det som regel bare &#8220;ffmpeg&#8221;, istedenfor full sti; slik må du <span style="text-decoration: underline;">ikke</span> gjøre det!</p>
<p>Du kan også teste installasjonen ved å skrive denne koden:</p>
<pre class="brush: php;">&lt;?php
    echo shell_exec ('C:\ffmpeg\ffmpeg.exe -formats');
?&gt;</pre>
<p>Om du har innspill, kommentarer eller lignende, så er du velkommen til å kommentere artikkelen!<br />
Video som viser hva jeg gjør &#8212; i dårlig kvalitet &#8212; er å se under:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="540" height="370" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://blip.tv/play/g%2BAIgb3%2BGQA" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="540" height="370" src="http://blip.tv/play/g%2BAIgb3%2BGQA" allowfullscreen="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davidsteinsland.net/2010/01/installere-ffmpeg-pa-wampserver-windows/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Liten oppdatering til Fileshed</title>
		<link>http://blog.davidsteinsland.net/2009/08/liten-oppdatering-til-fileshed/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=liten-oppdatering-til-fileshed</link>
		<comments>http://blog.davidsteinsland.net/2009/08/liten-oppdatering-til-fileshed/#comments</comments>
		<pubDate>Wed, 12 Aug 2009 16:29:41 +0000</pubDate>
		<dc:creator>David Steinsland</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmering]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[fileshed]]></category>
		<category><![CDATA[oppdatering]]></category>

		<guid isPermaLink="false">http://blog.davidsteinsland.net/?p=96</guid>
		<description><![CDATA[I dag fikk jeg ideen å oppdatere filopplastningssystemet mitt litt. Tanken var følgende: la brukere legge passord på filene sine. Fra før kan brukerne velge mellom &#8220;offentlig&#8221; eller &#8220;privat&#8221; status på filene. Dersom filen er privat er det kun han som kan laste ned den, er den offentlig kan alle. Problemet var at det ikke [...]]]></description>
			<content:encoded><![CDATA[<p>I dag fikk jeg ideen å oppdatere <a href="http://fileshed.davidsteinsland.net/">filopplastningssystemet</a> mitt litt. Tanken var følgende: la brukere legge passord på filene sine. Fra før kan brukerne velge mellom &#8220;offentlig&#8221; eller &#8220;privat&#8221; status på filene. Dersom filen er privat er det kun han som kan laste ned den, er den offentlig kan alle. Problemet var at det ikke fantes noe mellomledd: det kom i dag.</p>
<p>Nå kan brukere lett legge passord på filen sin (også et hint, om nødvendig), og passe på at uvedkommende ikke laster ned filen (selv om den er markert offentlig). Når en bruker klikker på filen for å laste ned den, kommer det opp en side som spør etter passord.</p>
<p>Dersom dere har flere tips til hva som kan være nyttig, er det bare å si i fra. Jeg personlig har tenkt litt over en E-posttjeneste, hvor brukeren får i valg å sende en E-post med markert fil som vedlegg. Hadde dette vært noe?</p>
<p><a href="http://blog.davidsteinsland.net/wp-content/uploads/2009/08/gH2rd.png"><img class="aligncenter size-full wp-image-97" title="Fileshed-oppdatering" src="http://blog.davidsteinsland.net/wp-content/uploads/2009/08/gH2rd.png" alt="Fileshed-oppdatering" width="656" height="343" /></a>Filer med nøkkel etter filnavnet er passordbeskyttede filer. Dersom de har rød bakgrunn er de markert privat. For å bytte status er det bare til å klikke på det røde utropsikonet / grønne v-ikonet. For masseendringer finnes det avkryssningsbokser.</p>
<p>Edit 13/08-09: Nå er det også blitt lagt til en passord-glemmer.<br />
Edit 14/08-09: Har laget en logg for nedlastninger, slik brukeren kan følge med på hvem som laster ned fra han (hvilken fil, og dato).<br />
Edit 16/08-09: Nå er også E-postvideresenderen på plass, som gjør du kan sende filer via E-post.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davidsteinsland.net/2009/08/liten-oppdatering-til-fileshed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nytt utseende til Fileshed &#8212; trenger feedback</title>
		<link>http://blog.davidsteinsland.net/2009/06/nytt-utseende-pa-fileshed-trenger-feedback/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=nytt-utseende-pa-fileshed-trenger-feedback</link>
		<comments>http://blog.davidsteinsland.net/2009/06/nytt-utseende-pa-fileshed-trenger-feedback/#comments</comments>
		<pubDate>Sun, 28 Jun 2009 03:21:55 +0000</pubDate>
		<dc:creator>David Steinsland</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmering]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[fileshed]]></category>
		<category><![CDATA[layout]]></category>

		<guid isPermaLink="false">http://blog.davidsteinsland.net/?p=73</guid>
		<description><![CDATA[Fileshed, filopplastningssiden jeg har laget, fikk en etterlengtet ansiktsløftning i disse nattetider, hvor jeg skiftet ut det dystre og kjedelige designet med noe nytt. For å fortelle litt om tjenesten, er det en side hvor du kan laste opp filer slik du kan for eksempel sende dem mellom multiple PC-er. Du kan også organisere filene [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://fileshed.davidsteinsland.net/">Fileshed</a>, filopplastningssiden jeg har laget, fikk en etterlengtet ansiktsløftning i disse nattetider, hvor jeg skiftet ut det dystre og kjedelige designet med noe nytt.</p>
<p>For å fortelle litt om tjenesten, er det en side hvor du kan laste opp filer slik du kan for eksempel sende dem mellom multiple PC-er. Du kan også organisere filene i mapper, gjøre dem offentlige (andre kan se dem, og laste de ned) eller private. Det er også mulighet for å laste ned mange filer på én gang (vil bli arkivert i et Zip-arkiv).</p>
<p>Tjenesten ligger også ute for salg, om det er noen som har lyst å bruke det kommersielt/privat.</p>
<p style="text-align: left;">Her følger to før-bilder; hvordan siden såg ut for ti minutt siden:<a href="http://blog.davidsteinsland.net/wp-content/uploads/2009/06/Magical-Snap-2009.06.28-04.00-001.png"><img class="aligncenter size-medium wp-image-74" title="Fileshed, fremsiden" src="http://blog.davidsteinsland.net/wp-content/uploads/2009/06/Magical-Snap-2009.06.28-04.00-001-300x157.png" alt="Fileshed, fremsiden" width="500" height="263" /></a><a href="http://blog.davidsteinsland.net/wp-content/uploads/2009/06/Magical-Snap-2009.06.28-04.01-002.png"><img class="aligncenter size-medium wp-image-75" title="Fileshed, oversikt over filer" src="http://blog.davidsteinsland.net/wp-content/uploads/2009/06/Magical-Snap-2009.06.28-04.01-002-300x159.png" alt="Fileshed, oversikt over filer" width="500" height="263" /></a></p>
<p style="text-align: left;">Her er den nye siden, fra samme sider som bildene over:</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-77" title="Fileshed (ny), fremsiden" src="http://blog.davidsteinsland.net/wp-content/uploads/2009/06/u5naz.png" alt="Fileshed (ny), fremsiden" width="500" height="263" /><img class="aligncenter size-full wp-image-80" title="Fileshed (ny), oversikt over filer" src="http://blog.davidsteinsland.net/wp-content/uploads/2009/06/bfg15.png" alt="Fileshed (ny), oversikt over filer" width="500" height="266" />Ble det bedre, eller hva synes <strong>du</strong>? Skjekk selv på: <a href="http://fileshed.davidsteinsland.net/">http://fileshed.davidsteinsland.net/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davidsteinsland.net/2009/06/nytt-utseende-pa-fileshed-trenger-feedback/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Hemmeligheten bak rask og kvalitetsikret programmering</title>
		<link>http://blog.davidsteinsland.net/2009/06/hemmeligheten-bak-rask-og-kvalitetsikret-programmering/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=hemmeligheten-bak-rask-og-kvalitetsikret-programmering</link>
		<comments>http://blog.davidsteinsland.net/2009/06/hemmeligheten-bak-rask-og-kvalitetsikret-programmering/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 02:24:50 +0000</pubDate>
		<dc:creator>David Steinsland</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmering]]></category>
		<category><![CDATA[codeigniter]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programmering]]></category>

		<guid isPermaLink="false">http://blog.davidsteinsland.net/?p=31</guid>
		<description><![CDATA[I mange år har jeg strebet meg frem når det gjelder å programmere raske, men omfattende PHP-løsninger. Hver dag fant jeg alltid en bedre måte og gjøre ting på, og midt oppi alt leste jeg om klasser, Singletons, MVC og sikkerhet, som ikke gjorde dagene lettere. Jeg har hele tiden brydd meg veldig mye om [...]]]></description>
			<content:encoded><![CDATA[<p>I mange år har jeg strebet meg frem når det gjelder å programmere raske, men omfattende PHP-løsninger. Hver dag fant jeg alltid en bedre måte og gjøre ting på, og midt oppi alt leste jeg om klasser, <a href="http://en.wikipedia.org/wiki/Singleton_pattern">Singletons</a>, <a href="http://en.wikipedia.org/wiki/Model–view–controller">MVC</a> og sikkerhet, som ikke gjorde dagene lettere.</p>
<p>Jeg har hele tiden brydd meg veldig mye om fleksibilitet, ytelse, kvalitet og sikkerhet. Å kombinere alt dette til én løsning er ikke bare-bare. Etter som tiden gikk, startet jeg med tanken om å lage mitt eget rammeverk for mine løsninger, slik jeg lett kunne &#8220;hive inn&#8221; ferdige moduler uten noen spesiell konfigurering for hvert prosjekt.</p>
<p>Jeg innså fort at jeg hadde tatt vann over hodet, og ble enda mer fortvilet da jeg kikket på de største rammeverkene for PHP. De var store, komplekse, og så veldig overarbeidet ut.</p>
<p>Det faktisk ikke før ved en tilfeldighet, da jeg satt og hørte på et foredrag av <a href="http://en.wikipedia.org/wiki/Rasmus_Lerdorf">Rasmus Lerdorf</a>, der han blant annet tok opp emnet &#8220;rammeverk&#8221;. Han også ergret seg over at de var store, tunge, og faktisk tregere enn å kun konvensjonell PHP. Det var ikke før mot slutten han sa: &#8220;Det rammeverket jeg liker best er det som ligner mist på et&#8221;. Det var <a href="http://codeigniter.com/">CodeIgniter</a>.</p>
<p>Sekunder etter å ha hørt på gründeren bak PHP, navigerte jeg meg til CodeIgniters hjemmeside og lastet ned pakken. Jeg gikk innom &#8220;brukerhåndboken&#8221; og dens egen Wiki for å sette meg bedre inn i det.</p>
<p>Det gikk et par dager med lesing og lett testing (jeg hadde jo aldri prøvd ut noen skikkelig, og syntaksen var litt små-rar). På dag fire startet jeg med et prosjekt hvor jeg ville laste opp filer, og dele dem med andre.</p>
<p>Rundt én måned senere stod systemet klart, som jeg kallet for <a href="http://fileshed.davidsteinsland.net/">Fileshed</a> (filskur: en rote-/samleplass for filer du vil dele med andre, eller med deg selv over ulike PC-er). Selv bruker jeg systemet flittig, da jeg merket det faktisk var nyttig.</p>
<p>Poenget mitt i denne anekdoten er verken å skryte over mine egne prestasjoner eller fremme et spesifikt rammeverk. Det er rett og slett å fremme selve overskriften i artikkelen. Rammeverk har alt du trenger: databaseklasser, inputklasser, sessionklasser &#8230; you name it.</p>
<p>For å danne litt kontrast brukte jeg, som tidligere nevnt, rundt én måned på Fileshed &#8211; på <a href="http://logopedane.no/">Logopedane</a>, hvor jeg måtte hardkode <em>hele</em> systemet, brukte jeg rundt 4-5 måneder.</p>
<p>Aldri tvil på kraften til et rammeverk. Du sparer utrolig mye verdifull tid som du heller kan bruke ute i vår fagre natur, eller på kundekommunikasjon om du driver business.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davidsteinsland.net/2009/06/hemmeligheten-bak-rask-og-kvalitetsikret-programmering/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
