<?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>Stavelin.com &#187; kode</title>
	<atom:link href="http://stavelin.com/blog/category/nerding/kode/feed/" rel="self" type="application/rss+xml" />
	<link>http://stavelin.com/blog</link>
	<description>digital lekeplass</description>
	<lastBuildDate>Sat, 14 Jan 2012 12:33:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Firebug bundle for TextMate</title>
		<link>http://stavelin.com/blog/2011/01/16/firebug-bundle-for-textmate/</link>
		<comments>http://stavelin.com/blog/2011/01/16/firebug-bundle-for-textmate/#comments</comments>
		<pubDate>Sun, 16 Jan 2011 13:43:32 +0000</pubDate>
		<dc:creator>Eirik</dc:creator>
				<category><![CDATA[kode]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[firebug]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://stavelin.com/blog/?p=1007</guid>
		<description><![CDATA[Debugging av javascript i firebug gjør avlusing til en langt mer oversiktlig og ryddig affære. Å benytte en liten leksehjelp som denne bundlen hjelper deg videre fra alert() og console.log(), som fort blir tungvindt i lengden. Få alle console-funksjonene rett i handa med Firebug bundle for TextMate. Last ned .dmg-filen, åpne og dobbeltklikk. Ferdig arbeid.. [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="http://stavelin.com/blog/?p=1007"><!-- &nbsp; --></abbr>
<p>Debugging av javascript i firebug gjør avlusing til en langt mer oversiktlig og ryddig affære. Å benytte en liten leksehjelp som denne bundlen hjelper deg videre fra alert() og console.log(), som fort blir tungvindt i lengden.<br />
<img src="http://stavelin.com/blog/wp-content/bilder/firebundle-1.png" alt="Få alle console-funksjonene rett i handa med Firebug bundle for TextMate" class="" /></p>
<p class="bildetekst">Få alle console-funksjonene rett i handa med Firebug bundle for TextMate.</p>
<p><a href="http://doctyper.com/downloads/Firebug.tmbundle.dmg"><img src="http://stavelin.com/blog/wp-content/bilder/firebundle-2.png" alt="Last ned .dmg-filen, åpne og dobbeltklikk. Ferdig arbeid." class="" /></a></p>
<p class="bildetekst">Last ned .dmg-filen, åpne og dobbeltklikk. Ferdig arbeid..</p>
<p>Åpne menyen i TextMate med <em>cmd + D</em></p>
<p>Via <a href="http://doctyper.com/archives/200703/firebug-bundle-for-textmate/">doctyper.com</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://stavelin.com/blog/2011/01/16/firebug-bundle-for-textmate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gratis kropp &#8211; dyr sjel</title>
		<link>http://stavelin.com/blog/2010/11/18/gratis-kropp-dyr-sjel/</link>
		<comments>http://stavelin.com/blog/2010/11/18/gratis-kropp-dyr-sjel/#comments</comments>
		<pubDate>Thu, 18 Nov 2010 11:45:43 +0000</pubDate>
		<dc:creator>Eirik</dc:creator>
				<category><![CDATA[kode]]></category>
		<category><![CDATA[Studentliv]]></category>
		<category><![CDATA[commentspace]]></category>
		<category><![CDATA[iTunesU]]></category>
		<category><![CDATA[mit]]></category>

		<guid isPermaLink="false">http://stavelin.com/blog/?p=989</guid>
		<description><![CDATA[Har du lyst til å studere på MIT? Jeg óg. I følge denne diskutable (i den mest positive forstand) grafen skårer MIT best på ROI over 30 år. Samtidig koster det flesk. Å studere på MIT koster flesk, men betaler seg tydeligvis i lengden. Det virkelig kule er at en del innhold fra utdanningen ved [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="http://stavelin.com/blog/?p=989"><!-- &nbsp; --></abbr>
<p>Har du lyst til å studere på MIT? Jeg óg.</p>
<p>I følge <a href="http://www.commentspace.net/commentspace/?vis=http://www.commentspace.net/media/swf/CollegeROIVis.swf&showLinks=false&workspace=CollegeROI">denne diskutable</a> (i den mest positive forstand) grafen skårer MIT best på ROI over 30 år. Samtidig koster det flesk.<br />
<img src="http://stavelin.com/blog/wp-content/bilder/mit_roi.png" alt="MIT ROI" class="" /></p>
<p class="bildetekst">Å studere på MIT koster flesk, men betaler seg tydeligvis i lengden.</p>
<p>Det virkelig kule er at en del innhold fra utdanningen ved MIT er tilgjengelig på nett. Via MIT OpenCourseWare er fag som "Introduction to Computer Science and Programming" tilgjengelig for alle. Det er faktisk like kult som at bøker er gratis tilgjengelig i offentlige bibliotek. Bare bedre.</p>
<p>På <a href="http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-00-introduction-to-computer-science-and-programming-fall-2008/video-lectures/">denne nettsiden</a> er videoer av alle forelesningene tilgjengelige. Og om du er en eplefantast eller ellers har iTunes kan du laste det samme ned via <a href="http://www.apple.com/education/itunes-u/">iTunesU</a>. </p>
<p>Så innholdet, - kunnskapen kan tilegnes gratis. Med hjelp av MITs forelesere på video. Vitnemålet, nettverket og opplevelsen derimot; det forblir for de få.</p>
]]></content:encoded>
			<wfw:commentRss>http://stavelin.com/blog/2010/11/18/gratis-kropp-dyr-sjel/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Utvide django admin</title>
		<link>http://stavelin.com/blog/2010/10/14/utvide-django-admin/</link>
		<comments>http://stavelin.com/blog/2010/10/14/utvide-django-admin/#comments</comments>
		<pubDate>Thu, 14 Oct 2010 13:32:59 +0000</pubDate>
		<dc:creator>Eirik</dc:creator>
				<category><![CDATA[kode]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[django-admin]]></category>

		<guid isPermaLink="false">http://stavelin.com/blog/?p=959</guid>
		<description><![CDATA[Alt i django er mer eller mindre tilgjengelig for å utvides. Koden er åpen, og den som vil knote seg fram til nye løsninger kan bare sette i gang. I denne posten viser jeg hvordan du får tak i verdier fra fra dine modeller fra admin-panelet via change_form.html Fordelen med rammeverk er selvsagt at noen [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="http://stavelin.com/blog/?p=959"><!-- &nbsp; --></abbr>
<p>Alt i django er mer eller mindre tilgjengelig for å utvides. Koden er åpen, og den som vil knote seg fram til nye løsninger kan bare sette i gang. I denne posten viser jeg hvordan du får tak i verdier fra fra dine modeller fra admin-panelet via change_form.html</p>
<p>Fordelen med rammeverk er selvsagt at noen allerede har tenkt på det aller meste fra før, ulempen er at du ikke vet hva de tenkte da de skreiv koden. Det meste er vell dokumentert et-eller-annet sted, men hvor skal du begynne å leite? Google, så klart, men hvilke søke-termer?</p>
<p>Min klasse i models.py har mange verdier, som dermed er representert med samme kolonne-navn i databasen. Men hvordan henter jeg disse enkeltvis ut når jeg skal redigere objektet fra admin-panelet? Hva heter objektet?<br />
<span style="color: #00ccff;">{{ obj.verdi }}</span>, <span style="color: #00ccff;">{{ object.verdi }}</span> ?</p>
<p>Hvordan skal man gjette slikt?</p>
<p>Vell, det heter<span style="color: #00ccff;"> {{ <strong>original</strong>.verdi }}</span>.<br />
Dette er sakset ut fra min nå redigerte /templates/admin/appname/app/change_form.html (eksempler på appname og app: flatpages/flatpage)</p>
<pre>
{% block form_top %}
{% if original.url  and original.organization != 'nytimes.com' %}
< iframe src ="{{ original.url }}" width="100%" height="500"></ iframe>
{% endif %}
</pre>
<p>Ja, jeg vill ha en iframe som viser nettsiden som er laget, men ikke hvis den ligger hos nytimes.com, for de videresender panelet mitt til sin artikkel.</p>
]]></content:encoded>
			<wfw:commentRss>http://stavelin.com/blog/2010/10/14/utvide-django-admin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nye greier på python-stien</title>
		<link>http://stavelin.com/blog/2010/06/01/nye-greier-pa-python-stien/</link>
		<comments>http://stavelin.com/blog/2010/06/01/nye-greier-pa-python-stien/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 13:21:43 +0000</pubDate>
		<dc:creator>Eirik</dc:creator>
				<category><![CDATA[kode]]></category>
		<category><![CDATA[freeBSD]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[python path]]></category>
		<category><![CDATA[server]]></category>

		<guid isPermaLink="false">http://stavelin.com/blog/?p=879</guid>
		<description><![CDATA[Jeg krangler tidvis med python på sen server som kjører freeBSD, som jeg leier hos subsys.no. Hovedpoenget med prosjektet er å lære django og python for mer effektiv webutvikling/prototyping. Å lære ny teknologi handler ofte, for min del i alle fall, om å sitte fast før jeg får med meg hvordan ting fungerer. Denne posten [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="http://stavelin.com/blog/?p=879"><!-- &nbsp; --></abbr>
<p>Jeg krangler tidvis med python på sen server som kjører freeBSD, som jeg leier hos subsys.no. Hovedpoenget med prosjektet er å lære django og python for mer effektiv webutvikling/prototyping. Å lære ny teknologi handler ofte, for min del i alle fall, om å sitte fast før jeg får med meg hvordan ting fungerer. Denne posten inneholder info om hvordan legge til foldere på python-stien, slik at importering med "from module import stuff" fungerer. Grunnen til at jeg blogger dette er at jeg glemmer det mellom hver gang det er nyttig, og derfor fint å ha tilgjengelig på nett, for meg og kanskje deg.</p>
<p>I roten på webhotellet mitt (og ditt) ligger det en usynlig fil som heter .bash_profile. Den kan hete andre ting som .bashrc, men i mitt tilfelle altså .bash_profile. Denne kan redigeres med nano, eller andre terminal-baserte editorer.</p>
<pre class="bash">$ nano .bash_profile</pre>
<p>Legg til en ny sti:</p>
<pre>export PYTHONPATH=/home/users/dittbrukernavn/mappen_du_vil_adde:$PYTHONPATH</pre>
<p>Lagre (ctrl + o i nano).</p>
<p>Du må logge ut og inn igjen via ssh for at dette skal tre i kraft. </p>
<p>For å teste om ting virket kan du printe ut sys.path'n i python:</p>
<pre>
$ python
Python 2.6.5 (r265:79063, May 21 2010, 00:49:11)
[GCC 4.2.1 20070719  [FreeBSD]] on freebsd7
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path</pre>
<p>det du får ut på skjermen er da en liste over foldere som er på python-stien:<br />
['', '/usr/local/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg', '/usr/local/lib/python2.6/site-packages/pytz-2010h-py2.6.egg', '/usr/local/lib/python2.6/site-packages/Pygments-1.3.1-py2.6.egg', '/usr/local/lib/python2.6/site-packages/boto-1.9b-py2.6.egg', '/usr/local/lib/python2.6/site-packages/lxml-2.2.4-py2.6-freebsd-7.3-RELEASE-amd64.egg', '/usr/local/lib/python2.6/site-packages/simplejson-2.1.1-py2.6-freebsd-7.3-RELEASE-amd64.egg', '/usr/local/lib/python2.6/site-packages/Genshi-0.6-py2.6.egg', '/usr/local/lib/python2.6/site-packages/flup-1.0.2-py2.6.egg', '/home/users/<strong>dittbrukernavn/mappen_du_vil_adde</strong>', '/usr/local/lib/python26.zip', '/usr/local/lib/python2.6', '/usr/local/lib/python2.6/plat-freebsd7', '/usr/local/lib/python2.6/lib-tk', '/usr/local/lib/python2.6/lib-old', '/usr/local/lib/python2.6/lib-dynload', '/usr/local/lib/python2.6/site-packages', '/usr/local/lib/python2.6/site-packages/PIL']</p>
<p>Hvori den nye forhåpentligvis er å finne.</p>
]]></content:encoded>
			<wfw:commentRss>http://stavelin.com/blog/2010/06/01/nye-greier-pa-python-stien/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Lage indexer i mysql med MAMP</title>
		<link>http://stavelin.com/blog/2010/04/08/lage-indexer-i-mysql-med-mamp/</link>
		<comments>http://stavelin.com/blog/2010/04/08/lage-indexer-i-mysql-med-mamp/#comments</comments>
		<pubDate>Thu, 08 Apr 2010 09:54:37 +0000</pubDate>
		<dc:creator>Eirik</dc:creator>
				<category><![CDATA[kode]]></category>
		<category><![CDATA[Nerding]]></category>
		<category><![CDATA[databaser]]></category>
		<category><![CDATA[mamp]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://stavelin.com/blog/?p=849</guid>
		<description><![CDATA[Jeg har ikke funnet noen måte å lager indexer på i Sequel Pro, og med det har jeg alternativet klart; i terminalen. Antagelsen er at mysql kjører i MAMP på OSX (10.5.8). Åpne terminalen. Skriv inn /Applications/MAMP/Library/bin/mysql -uroot -p kvitter med root-passordet som ut-av-boksen er root. Velg en database: mysql&#62; USE tabellnavn; Vis tabellene i [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="http://stavelin.com/blog/?p=849"><!-- &nbsp; --></abbr>
<p>Jeg har ikke funnet noen måte å lager indexer på i <a href="http://stavelin.com/blog/2010/03/28/sequel-pro-avloser-cocoamysql/">Sequel Pro</a>, og med det har jeg alternativet klart; i terminalen.</p>
<p>Antagelsen er at <a href="www.mysql.com/">mysql</a> kjører i <a href="www.mamp.info/">MAMP</a> på OSX (10.5.8).</p>
<p>Åpne terminalen.<br />
Skriv inn</p>
<pre class="bash">/Applications/MAMP/Library/bin/mysql -uroot -p</pre>
<p>kvitter med root-passordet som ut-av-boksen er <em>root</em>.</p>
<p>Velg en database:</p>
<pre class="mysql">mysql&gt; <span style="color: #993333; font-weight: bold;">USE</span> tabellnavn;</pre>
<p>Vis tabellene i databasen (fint å vite hva som finnes):</p>
<pre class="mysql">mysql&gt; <span style="color: #993333; font-weight: bold;">SHOW</span> tables;</pre>
<p>Sjekk om tabellen har en index:</p>
<pre class="mysql">mysql&gt; <span style="color: #993333; font-weight: bold;">SHOW</span> indexes <span style="color: #993333; font-weight: bold;">FROM</span> 2009analyse_int;</pre>
<p>Lag en index</p>
<pre class="mysql">mysql&gt; <span style="color: #993333; font-weight: bold;">CREATE INDEX</span> minNye_index ON tabellnavn<span style="color: #66cc66;">&#40;</span>kolonne_du_vil_lage_index_på<span style="color: #66cc66;">&#41;</span>;</pre>
<p>Done.</p>
<p>PS - Note to self: Behovet for indexer dukket for min del opp når jeg skulle hente ut ca 75.000 rader fra en tabell over nettartikler, hvorav noen var duplikater. For å hente ut kun én linje per unike url gjorde jeg følgende spørring:</p>
<pre class="mysql"><span style="color: #993333; font-weight: bold;">SELECT</span> *, COUNT<span style="color: #66cc66;">&#40;</span>unik_id<span style="color: #66cc66;">&#41;</span> AS duplikat
<span style="color: #993333; font-weight: bold;">FROM</span> min_fine_tabell
<span style="color: #993333; font-weight: bold;">GROUP</span> <span style="color: #993333; font-weight: bold;">BY</span> unik_id
<span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span> duplikat DESC;
&nbsp;</pre>
<p>Da kommer duplikatene (med antall større enn 1) øverst, følger alle som er unike.</p>
]]></content:encoded>
			<wfw:commentRss>http://stavelin.com/blog/2010/04/08/lage-indexer-i-mysql-med-mamp/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Sequel Pro avløser CocoaMySQL</title>
		<link>http://stavelin.com/blog/2010/03/28/sequel-pro-avloser-cocoamysql/</link>
		<comments>http://stavelin.com/blog/2010/03/28/sequel-pro-avloser-cocoamysql/#comments</comments>
		<pubDate>Sun, 28 Mar 2010 16:46:55 +0000</pubDate>
		<dc:creator>Eirik</dc:creator>
				<category><![CDATA[kode]]></category>
		<category><![CDATA[cocoamysql]]></category>
		<category><![CDATA[databaser]]></category>
		<category><![CDATA[dbms]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[mamp]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[sequel pro]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[sql klient]]></category>
		<category><![CDATA[xamp]]></category>

		<guid isPermaLink="false">http://stavelin.com/blog/?p=840</guid>
		<description><![CDATA[CocoaMySQL er en fantastisk liten klient til DBMSet mySQL. For Mac. På tross av at cocoamysql alltid fikk jobben gjort, så ser videreføringen i Sequel Pro ut som et steg opp. Sequel Pro GUI. At CocoaMySQL hverken var fullt av fancy funksjoner eller revolusjonerende teknologier var aldri noe hinder for arbeidsflyten for oss som stort [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="http://stavelin.com/blog/?p=840"><!-- &nbsp; --></abbr>
<p><a href="http://osx.iusethis.com/app/cocoamysql">CocoaMySQL</a> er en fantastisk liten klient til  <abbr title="Database Management System">DBMSet</abbr> <a href="http://www.mysql.com/">mySQL</a>. For Mac. På tross av at cocoamysql alltid fikk jobben gjort, så ser videreføringen i <strong><a href="http://osx.iusethis.com/app/sequelpro">Sequel Pro</a></strong> ut som et steg opp.</p>
<p><img src="http://stavelin.com/blog/wp-content/bilder/squelPro.png" alt="Sequel Pro GUI" class="" /></p>
<p class="bildetekst">Sequel Pro GUI.</p>
<p>At CocoaMySQL hverken var fullt av fancy funksjoner eller revolusjonerende teknologier var aldri noe hinder for arbeidsflyten for oss som stort sett jobber med databaser for web. Sequel Pro følger i samme fotspor. Det er først og fremst <abbr title="Graphical User Interface">GUIet</abbr> som er oppdatert til dagens standard for Mac, så vell som mindre endringer som nærmest likner bugfixer. Personlig er det bare muligheten til å kommentere tabellene som jeg virkelig savnet.
<p class="bildetekst">(som er uendelig nyttig hvis du lagrer verdier av typen verdiskalaer, f.eks. 0 - 10 hvor 10 er admin og tallene nedover beskriver ulike tilgangrettigheter, eller tallskalaer som kategoriserer variabler i et analyseopplegg).</p>
<p>En av de viktigste egenskapene til en SQLklient, er at den er enkel å bruke og sette opp. Typisk kjører jeg en lokal server på laptop'n min, og da stort sett en ferdig pakke ala <a href="http://www.mamp.info/">MAMP</a>. At det tar mindre enn 2 minutter å sette dette opp er målet, og dette viderefører Sequel Pro. Se f.eks. <a href="http://www.sequelpro.com/docs/Connecting_to_MAMP_or_XAMPP">instruksene for MAMP/XAMP her</a>. </p>
<p>Jeg snublet over Sequel Pro da cocoamysql, av en aller annen grunn, tok urimelig mye systemresurser i et stort datasett jeg jobber med. Sequel Pro kjører som det skulle være det neste på skjermen her, noe som er langt fram sannheten. At små detaljer som redigering av innhold i celler, reorganisering av tabellstrukturer og bedre håndtering av tabellenes metadata er betydelig smoothere enn før gjør opplevelsen sammenliknbar med forgjengeren, men samtidig et skritt opp. Jobber du med mysqldatabaser på mac, så er Sequel Pro absolutt verdt å ta en titt på. Open source er det også. </p>
]]></content:encoded>
			<wfw:commentRss>http://stavelin.com/blog/2010/03/28/sequel-pro-avloser-cocoamysql/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Cron-jobber</title>
		<link>http://stavelin.com/blog/2010/02/09/cron-jobber/</link>
		<comments>http://stavelin.com/blog/2010/02/09/cron-jobber/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 17:19:16 +0000</pubDate>
		<dc:creator>Eirik</dc:creator>
				<category><![CDATA[kode]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[cron-jobber]]></category>
		<category><![CDATA[cronjob]]></category>
		<category><![CDATA[crontab]]></category>
		<category><![CDATA[subsys.no]]></category>

		<guid isPermaLink="false">http://stavelin.com/blog/?p=805</guid>
		<description><![CDATA[- Resultater etter prøv og feil metoden. Å kjøre cron-jobber er et spennende skritt videre fra å kun scripte for kode som trigges av brukeres aktivitet. Med cron-jobber kan prosesser kjøres automatisk på tidspunkt etter dine preferanser. For orden skyld; jeg har har et webhotell hos subsys.no. Cronjobber er en tjeneste som sjeldent kommer som [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="http://stavelin.com/blog/?p=805"><!-- &nbsp; --></abbr>
<p>- Resultater etter prøv og feil metoden.<br />
Å kjøre <a href="http://en.wikipedia.org/wiki/Cron">cron-jobber</a> er et spennende skritt videre fra å kun scripte for kode som trigges av brukeres aktivitet. Med cron-jobber kan prosesser kjøres automatisk på tidspunkt etter dine preferanser. </p>
<div style="width:200px;margin:5px; padding:5px; float:right;border-left:1px dashed gray;"><b>For orden skyld</b>;<br /> jeg har har et webhotell hos subsys.no. Cronjobber er en tjeneste som sjeldent kommer som standard hos webhotelltilbydere.</div>
<p>Å sette opp cronjobber fordrer at du kan logge deg inn på serveren via kommandolinjen (SSH), og videre redigere innstillingene for oppsettet i terminalen. For meg var det ikke intuitivt hvordan dette skulle gjøres i praksis, så her er hvordan jeg gjorde det hos subsys.</p>
<p>Koble til med SSH.</p>
<pre class="bash"><span style="color: #c20cb9; font-weight: bold;">ssh</span> -L <span style="color: #000000;">8888</span>:server10.subsys.no:<span style="color: #000000;">3306</span> brukernavn@server10.subsys.no</pre>
<p>Kvitter med passord.</p>
<p>Så skriver du inn crontab -e</p>
<pre class="bash"><span style="color: #7a0874; font-weight: bold;">&#91;</span>brukernavn@server10 ~/mevi<span style="color: #7a0874; font-weight: bold;">&#93;</span>$ crontab -e</pre>
<p><strong>-e</strong> står for "edit", du kan lese mer om <a href="http://www.opengroup.org/onlinepubs/9699919799/utilities/crontab.html">handlingsrommet ditt her</a>.</p>
<p>Hos subsys.no kjører de freeBSD, og der åpnes contab-filen i en "editor" i terminalen, denne heter nano(?). Du kan skrive inn tekst i filen (som er helt blank i utgangspunktet og som ikke vises/finnes via en ftp-klient), lagre, bla, osv. Hva du kan gjøre listes under det som i første omgang er en helt hvit terminal.</p>
<p>Rediger filen etter mønsteret "alle" guider for crontab gir, du kan f.eks. ta <a href="http://en.wikipedia.org/wiki/Cron#Operators">wikipedias tekst om saken som utgangspunkt</a>.</p>
<p><img src="http://stavelin.com/blog/wp-content/bilder/Terminal_ssh_crontab.png" alt="$HOME fungerer fint i stede for å skrive inn hele adressen som er noe slikt som home users  brukernavn" class="" /></p>
<p class="bildetekst">$HOME fungerer fint i stede for å skrive inn hele adressen som er noe slikt som /home/users/brukernavn/.</p>
<p>Her er et eksempel på mine redigeringer:<br />
<code><br />
MAILTO=gjett@stavelin.com<br />
30 * * * * $HOME/pythonscript/python.py<br />
0 0 * * * $HOME/phpscript/phpfil.php<br />
</code></p>
<p>MAILTO er en glimrende sak som sender deg en rapport på mail hver gang oppgaven utføres. Den er særlig nyttig når du setter dette opp for første gang, for å sjekke at ting fungerer som det skal, event hva som ikke fungerer.</p>
<p>Den første oppgaven jeg satt opp var å kjøre et pythonscript. Husk</p>
<pre class="python"><span style="color: #808080; font-style: italic;">#!/usr/local/bin/pytho</span></pre>
<p>i starten av filen, slik at scriptet vil kjøre. Husk også å sette rettighetene på filen slik at den blir kjørbar (executable), med </p>
<pre class="bash"><span style="color: #c20cb9; font-weight: bold;">chmod</span> +x filnavn.py</pre>
<p>Slike ting avslører feilmeldingene som jeg fikk på mail fram MAILTO-biten.</p>
<p>Når det kommer til tidsaspektene hvor når disse kommandoene skal gå av, så finner du også mye dokumentasjon rundt om. Selv hadde jeg en hvis glede av denne <a href="http://www.htmlbasix.com/crontab.shtml">crontab kalkulatoren</a>. Kodene jeg bruker i eksemplet over leser du slik:<br />
30 * * * * betyr det 30. minuttet, hver time, hver dag, hver måned, alle ukedager. aka hver eneste time, 30 minutter over hel. Altså 24 jobber i døgnet.<br />
0 0 * * * betyr det 0. minuttet, den 0. timen hver dag, hver måned, alle ukedager. aka første minutt den første timen i døgnet. Altså ved midnatt hvert døgn.</p>
<p>Håper dette er nyttig for noen, det hadde vært det for meg for noen dager siden.</p>
]]></content:encoded>
			<wfw:commentRss>http://stavelin.com/blog/2010/02/09/cron-jobber/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Fra tab- til kommeseparerte verdier</title>
		<link>http://stavelin.com/blog/2010/01/13/fra-tab-til-kommeseparerte-verdier/</link>
		<comments>http://stavelin.com/blog/2010/01/13/fra-tab-til-kommeseparerte-verdier/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 15:12:11 +0000</pubDate>
		<dc:creator>Eirik</dc:creator>
				<category><![CDATA[kode]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Nerding]]></category>
		<category><![CDATA[csv]]></category>
		<category><![CDATA[kommaseparerte verdier]]></category>
		<category><![CDATA[tabseparerte verdier]]></category>
		<category><![CDATA[textmate]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[unix-commando]]></category>

		<guid isPermaLink="false">http://stavelin.com/blog/2010/01/13/fra-tab-til-kommeseparerte-verdier/</guid>
		<description><![CDATA[Du har en fil med tabseparerte verdier, og ønsker å ha den som kommaseparerte verdier. Det hadde i alle fall jeg i dag, og dette er slik jeg løste problemet. Åpne TextMate, marker alt, og høyreklikk. Velg 'Filter Through Command..' og bruk følgende snippet: tr '\t' ',' Jeg valgte 'input: selection' (fordi jeg markerte alt [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="http://stavelin.com/blog/2010/01/13/fra-tab-til-kommeseparerte-verdier/"><!-- &nbsp; --></abbr>
<p>Du har en fil med tabseparerte verdier, og ønsker å ha den som kommaseparerte verdier. Det hadde i alle fall jeg i dag, og dette er slik jeg løste problemet.</p>
<p>Åpne TextMate, marker alt, og høyreklikk. Velg 'Filter Through Command..' og bruk følgende snippet:<br />
<code><br />
tr '\t' ','<br />
</code><br />
Jeg valgte 'input: selection' (fordi jeg markerte alt først) og 'output: Create New Document', for å være på den sikre siden.</p>
<p>Slik ble alle tab-karakterene (hvordan visualisere en ikke-alfanumerisk karakter?) konvertert til komma (,) </p>
]]></content:encoded>
			<wfw:commentRss>http://stavelin.com/blog/2010/01/13/fra-tab-til-kommeseparerte-verdier/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Konamikoden i javascript</title>
		<link>http://stavelin.com/blog/2009/11/17/konamikoden-i-javascript/</link>
		<comments>http://stavelin.com/blog/2009/11/17/konamikoden-i-javascript/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 14:35:07 +0000</pubDate>
		<dc:creator>Eirik</dc:creator>
				<category><![CDATA[kode]]></category>
		<category><![CDATA[Nerding]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[digital kultur]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Spill]]></category>

		<guid isPermaLink="false">http://stavelin.com/blog/?p=742</guid>
		<description><![CDATA[Den godeste tanketom kvitret i dag at konamikoden også fungerer på facebook. Jeg kan ikke si jeg ble veldig imponert over easteregget som ble avduket, men likevel: nerdete moro. Facebook er jo ikke aleine om å bruke konamikoden på nett, så jeg antok at det er lett å finne ferdig javascriptkode for å få til [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="http://stavelin.com/blog/?p=742"><!-- &nbsp; --></abbr>
<p>Den godeste <a href="http://tanketom.net/">tanketom</a> <a href="https://twitter.com/tanketom/status/5794165593">kvitret</a> i dag at <a href="http://en.wikipedia.org/wiki/Konami_Code">konamikoden</a> <a href="http://konamicodesites.com/">også fungerer</a> på <a href="http://www.facebook.com/">facebook</a>. Jeg kan ikke si jeg ble veldig imponert over <a href="http://en.wikipedia.org/wiki/Easter_egg_%28media%29">easteregget</a> som ble avduket, men likevel: nerdete moro.</p>
<p>Facebook er jo <a href="http://konamicodesites.com/">ikke aleine om å bruke konamikoden på nett</a>, så jeg antok at det er lett å finne ferdig javascriptkode for å få til dette på egen side, og det var det:</p>
<pre class="javascript">&nbsp;
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #66cc66;">&#40;</span> window.<span style="color: #006600;">addEventListener</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
            <span style="color: #003366; font-weight: bold;">var</span> kkeys = <span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span>, konami = <span style="color: #3366CC;">&quot;38,38,40,40,37,39,37,39,66,65&quot;</span>;
            window.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;keydown&quot;</span>, <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span>e<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
                    kkeys.<span style="color: #006600;">push</span><span style="color: #66cc66;">&#40;</span> e.<span style="color: #006600;">keyCode</span> <span style="color: #66cc66;">&#41;</span>;
                    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #66cc66;">&#40;</span> kkeys.<span style="color: #006600;">toString</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">indexOf</span><span style="color: #66cc66;">&#40;</span> konami <span style="color: #66cc66;">&#41;</span> &gt;= <span style="color: #CC0000;">0</span> <span style="color: #66cc66;">&#41;</span>
                            window.<span style="color: #006600;">location</span> = <span style="color: #3366CC;">&quot;http://ejohn.org/apps/hero/&quot;</span>;
            <span style="color: #66cc66;">&#125;</span>, <span style="color: #003366; font-weight: bold;">true</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #66cc66;">&#125;</span>
&nbsp;</pre>
<p>Denne snutten er btw fra <a href="http://blog.jquery.com/2008/08/29/death-to-javascript-rock-stars/">jquerys webside</a>. Har kun testet i Firefox.</p>
<p>Da jeg ikke vet helt enda hva jeg selv ville skule bak konamikoden på stavelin.com har jeg kun lagt den inn på startsiden <a href="http://stavelin.com/">stavelin.com</a> slik som vist i eksemplet over.</p>
<p>Hva ville du ha brukt konamikoden til på din side?</p>
]]></content:encoded>
			<wfw:commentRss>http://stavelin.com/blog/2009/11/17/konamikoden-i-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>113 dager er 3 måneder og 3 uker</title>
		<link>http://stavelin.com/blog/2009/08/30/113-dager-er-3-maneder/</link>
		<comments>http://stavelin.com/blog/2009/08/30/113-dager-er-3-maneder/#comments</comments>
		<pubDate>Sun, 30 Aug 2009 19:41:01 +0000</pubDate>
		<dc:creator>Eirik</dc:creator>
				<category><![CDATA[kode]]></category>
		<category><![CDATA[menneskevennlighet]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[tid]]></category>

		<guid isPermaLink="false">http://stavelin.com/blog/?p=698</guid>
		<description><![CDATA[Å jobbe med datoer, det være seg i mattestykker eller programmering, har jeg tidvis funnet vrient. Det er lett å finne ut hvor mange dager det er siden sommerferien var over, eller hvor mange dager det er til jul, men vi mennesker teller ikke tid i ti-tall men i måneder, uker, dager og timer. I [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="http://stavelin.com/blog/?p=698"><!-- &nbsp; --></abbr>
<p>Å jobbe med datoer, det være seg i mattestykker eller programmering, har jeg tidvis funnet vrient. Det er lett å finne ut hvor mange dager det er siden sommerferien var over, eller hvor mange dager det er til jul, men vi mennesker teller ikke tid i ti-tall men i måneder, uker, dager og timer. I denne posten viser jeg hvordan du kan telle ned dagene til jul, på en pen menneskevennlig måte, i PHP.<br />
Koden i denne posten er hentet fra <a href="http://aidanlister.com/2004/04/making-time-periods-readable/">Aidan Lister</a>. Det eneste jeg har gjort er å oversette months til måneder, osv.</p>
<pre class="php">&nbsp;
<span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #808080; font-style: italic;">/**
 * A function for making time periods readable
 *
 * @author      Aidan Lister &lt;aidan@php.net&gt;
 * @version     2.0.0
 * @link        http://aidanlister.com/2004/04/making-time-periods-readable/
 * @param       int     number of seconds elapsed
 * @param       string  which time periods to display
 * @param       bool    whether to show zero time periods
 */</span>
<span style="color: #000000; font-weight: bold;">function</span> time_duration<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$seconds</span>, <span style="color: #0000ff;">$use</span> = <span style="color: #000000; font-weight: bold;">null</span>, <span style="color: #0000ff;">$zeros</span> = <span style="color: #000000; font-weight: bold;">false</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
    <span style="color: #808080; font-style: italic;">// Define time periods</span>
<span style="color: #808080; font-style: italic;">// jeg har skrevet å som &amp;aring; - med riktig bruk av charset er dette muligens unødvendig.</span>
    <span style="color: #0000ff;">$periods</span> = <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a> <span style="color: #66cc66;">&#40;</span>
        <span style="color: #ff0000;">'&amp;aring;r'</span>      =&gt; <span style="color: #cc66cc;">31556926</span>,
        <span style="color: #ff0000;">'m&amp;aring;neder'</span> =&gt; <span style="color: #cc66cc;">2629743</span>,
        <span style="color: #ff0000;">'uker'</span>          =&gt; <span style="color: #cc66cc;">604800</span>,
        <span style="color: #ff0000;">'dager'</span>         =&gt; <span style="color: #cc66cc;">86400</span>,
        <span style="color: #ff0000;">'timer'</span>         =&gt; <span style="color: #cc66cc;">3600</span>,
        <span style="color: #ff0000;">'minutter'</span>      =&gt; <span style="color: #cc66cc;">60</span>,
        <span style="color: #ff0000;">'sekunder'</span>      =&gt; <span style="color: #cc66cc;">1</span>
        <span style="color: #66cc66;">&#41;</span>;
    <span style="color: #808080; font-style: italic;">// Break into periods</span>
    <span style="color: #0000ff;">$seconds</span> = <span style="color: #66cc66;">&#40;</span>float<span style="color: #66cc66;">&#41;</span> <span style="color: #0000ff;">$seconds</span>;
    <span style="color: #b1b100;">foreach</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$periods</span> <span style="color: #b1b100;">as</span> <span style="color: #0000ff;">$period</span> =&gt; <span style="color: #0000ff;">$value</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$use</span> &amp;&amp; <a href="http://www.php.net/strpos"><span style="color: #000066;">strpos</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$use</span>, <span style="color: #0000ff;">$period</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span> === <span style="color: #000000; font-weight: bold;">false</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
            <span style="color: #b1b100;">continue</span>;
        <span style="color: #66cc66;">&#125;</span>
        <span style="color: #0000ff;">$count</span> = <a href="http://www.php.net/floor"><span style="color: #000066;">floor</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$seconds</span> / <span style="color: #0000ff;">$value</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$count</span> == <span style="color: #cc66cc;">0</span> &amp;&amp; !<span style="color: #0000ff;">$zeros</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
            <span style="color: #b1b100;">continue</span>;
        <span style="color: #66cc66;">&#125;</span>
        <span style="color: #0000ff;">$segments</span><span style="color: #66cc66;">&#91;</span><a href="http://www.php.net/strtolower"><span style="color: #000066;">strtolower</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$period</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#93;</span> = <span style="color: #0000ff;">$count</span>;
        <span style="color: #0000ff;">$seconds</span> = <span style="color: #0000ff;">$seconds</span> % <span style="color: #0000ff;">$value</span>;
    <span style="color: #66cc66;">&#125;</span>
<span style="color: #808080; font-style: italic;">// Build the string</span>
<span style="color: #808080; font-style: italic;">// dette er endret til å fungere med norske suffix</span>
    <span style="color: #b1b100;">foreach</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$segments</span> <span style="color: #b1b100;">as</span> <span style="color: #0000ff;">$key</span> =&gt; <span style="color: #0000ff;">$value</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #0000ff;">$segment_name</span> = <a href="http://www.php.net/substr"><span style="color: #000066;">substr</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$key</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">-2</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #808080; font-style: italic;">//        $segment_name = substr($key, 0, -1);</span>
        <span style="color: #0000ff;">$segment</span> = <span style="color: #0000ff;">$value</span> . <span style="color: #ff0000;">' '</span> . <span style="color: #0000ff;">$segment_name</span>;
        <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$value</span> != <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
<span style="color: #808080; font-style: italic;">//            $segment .= 's';</span>
            <span style="color: #0000ff;">$segment</span> .= <span style="color: #ff0000;">'er'</span>;
        <span style="color: #66cc66;">&#125;</span>
        <span style="color: #0000ff;">$array</span><span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span> = <span style="color: #0000ff;">$segment</span>;
    <span style="color: #66cc66;">&#125;</span>
    <span style="color: #0000ff;">$str</span> = <a href="http://www.php.net/implode"><span style="color: #000066;">implode</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">', '</span>, <span style="color: #0000ff;">$array</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #b1b100;">return</span> <span style="color: #0000ff;">$str</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span>
&nbsp;</pre>
<p>Denne funksjonen kan du lime rett inn i php-dokumentet ditt, kanskje helst inn i en klasse av noe slag?</p>
<h3>Så når funksjonen kjøres:</h3>
<p>Funksjonen tar antall sekunder som parameter, så...<br />
..var det de pokkers sekundene da. </p>
<pre class="php">&nbsp;
<span style="color: #0000ff;">$dag</span>   = <span style="color: #cc66cc;">21</span>;     <span style="color: #808080; font-style: italic;">// Dagen vi teller ned til</span>
<span style="color: #0000ff;">$maaned</span> = <span style="color: #cc66cc;">12</span>;      <span style="color: #808080; font-style: italic;">// Måned vi teller ned til</span>
<span style="color: #0000ff;">$ar</span>  = <span style="color: #cc66cc;">2009</span>;   <span style="color: #808080; font-style: italic;">// Året vi teller ned til</span>
<span style="color: #0000ff;">$tidspunkt</span>  = <span style="color: #cc66cc;">23</span>;     <span style="color: #808080; font-style: italic;">// Klokken (hele timer) vi teller ned til</span>
<span style="color: #0000ff;">$sekunder_til_noe_skjer</span> = <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/mktime"><span style="color: #000066;">mktime</span></a> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$tidspunkt</span>,<span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">0</span>,<span style="color: #0000ff;">$maaned</span>,<span style="color: #0000ff;">$dag</span>,<span style="color: #0000ff;">$ar</span><span style="color: #66cc66;">&#41;</span>-<a href="http://www.php.net/time"><span style="color: #000066;">time</span></a><span style="color: #66cc66;">&#40;</span>void<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">// sekunder</span>
&nbsp;</pre>
<p>Og funksjonen kjøres:</p>
<pre class="php">&nbsp;
<span style="color: #000000; font-weight: bold;">&lt;?php</span>
<a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> time_duration<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$sekunder_til_noe_skjer</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">?&gt;</span>
&nbsp;</pre>
<p>Resultatet er en nedteller som gir et resultat i dette formatet:</p>
<p><b>3 måneder, 3 uker, 19 timer, 26 minutter, 3 sekunder</b></p>
<p>Og slikt liker vi.</p>
<p>PS: jeg har også lagt koden på <a href="http://snipplr.com/view/19028/pen-php-nedteller/">snipplr</a>, og du kan lese Aidans post om koden sin <a href="http://aidanlister.com/2004/04/making-time-periods-readable/">her</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://stavelin.com/blog/2009/08/30/113-dager-er-3-maneder/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

