<?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>Blogg - Athega AB &#187; Öppen källkod</title>
	<atom:link href="http://blogg.athega.se/kategori/opensource/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogg.athega.se</link>
	<description>...</description>
	<lastBuildDate>Fri, 28 May 2010 01:00:38 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Extensions för EPiServer</title>
		<link>http://blogg.athega.se/2010/03/18/extensions-for-episerver/</link>
		<comments>http://blogg.athega.se/2010/03/18/extensions-for-episerver/#comments</comments>
		<pubDate>Thu, 18 Mar 2010 18:17:29 +0000</pubDate>
		<dc:creator>Markus Ullmark</dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[Kod]]></category>
		<category><![CDATA[Produktivitet]]></category>
		<category><![CDATA[Öppen källkod]]></category>
		<category><![CDATA[EPiServer]]></category>
		<category><![CDATA[Extensions]]></category>

		<guid isPermaLink="false">http://blogg.athega.se/?p=361</guid>
		<description><![CDATA[Jag har arbetat med EPiServer ett bra tag nu, och har sedan .NET 3.5 släpptes med möjligheten att &#8221;bygga ut&#8221; objekt med egna funktioner använt ett gäng sådana för att underlätta mitt dagliga arbete. Jag har haft mina Extensions liggande ett tag på Github men tänkte även skriva en liten post om det här.
Ett exempel [...]]]></description>
			<content:encoded><![CDATA[<p>Jag har arbetat med EPiServer ett bra tag nu, och har sedan .NET 3.5 släpptes med möjligheten att &#8221;bygga ut&#8221; objekt med egna funktioner använt ett gäng sådana för att underlätta mitt dagliga arbete. Jag har haft mina Extensions liggande ett tag på Github men tänkte även skriva en liten post om det här.</p>
<p>Ett exempel på en användning skulle t.ex kunna vara att du vill slumpa ut tio av en sidas barn, du vill också se till att bara hämta de som är publicerade. Genom att ha några smarta extensions så skulle du kunna göra såhär.</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">PageDataCollection pages <span style="color: #008000;">=</span> CurrentPage.<span style="color: #0000FF;">GetChildren</span><span style="color: #000000;">&#40;</span><span style="color: #008000;">new</span> FilterPublished<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>, <span style="color: #008000;">new</span> FilterRandom<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">10</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>Utan Extensions skulle detta kräva ett antal rader kod ytterligare och det är det lilla extra som gör att man trivs med ett API.<br />
Eftersom filterparametern är en <em>params</em> parameter kan man kombinera ihop hur många filter man vill, egengjorda eller de som ingår i EPiServer. FilterRandom är bara ett enkelt filter för att slumpa ut ett antal sidor som jag gjort.<br />
Min klass innehåller ett antal funktioner för att underlätta arbetet med EPiServer så det är bara att ta ner min klass och se om det är något ni gillar.</p>
<ul>
<li><a href="http://github.com/ullmark/cs-extensions/blob/master/EPiServerExtensions.cs">EPiServer Extensions</a></li>
</ul>
<p>Inte nöjd med mina eller vill du ha ännu mer extensions så kan du kolla på EPiCode där man försöker sammanställa bra extensions från epi-utvecklare.</p>
<ul>
<li><a href="https://www.coderesort.com/p/epicode/wiki/Extensions">EPiCode</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blogg.athega.se/2010/03/18/extensions-for-episerver/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MongoDB</title>
		<link>http://blogg.athega.se/2009/07/06/mongodb/</link>
		<comments>http://blogg.athega.se/2009/07/06/mongodb/#comments</comments>
		<pubDate>Mon, 06 Jul 2009 01:50:58 +0000</pubDate>
		<dc:creator>Peter Hellberg</dc:creator>
				<category><![CDATA[Databaser]]></category>
		<category><![CDATA[Kod]]></category>
		<category><![CDATA[Öppen källkod]]></category>
		<category><![CDATA[BSON]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Databas]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[MongoDB]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://blogg.athega.se/?p=268</guid>
		<description><![CDATA[
MongoDB är en blandning av nyckel-värde databas (t.ex. Scalaris), dokumentdatabas (t.ex. CouchDB) och relationsdatabas (t.ex. MySQL).
Den är skriven i C++ och passar bra för realtidsanalys av webbstatistik
(sidvisningar, unika besökare, osv), Sessionsobjekt, Datacachning och mycket mer.
Den har inbyggd replikering, automatisk failover och sharding, hög prestanda och den är open source.
Internt så sparas datan i formatet BSON, [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" title="MongoDB - Scalability/Performance - Depth of Functionality" src="http://blogg.athega.se/wp-content/uploads/2009/07/MongoDB-Scalability_Performance-Depth-of-Functionality.png" alt="MongoDB - Scalability/Performance - Depth of Functionality" width="301" height="210" /></p>
<p>MongoDB är en blandning av nyckel-värde databas (t.ex. <a href="http://code.google.com/p/scalaris/">Scalaris</a>), dokumentdatabas (t.ex. <a href="http://couchdb.apache.org/">CouchDB</a>) och relationsdatabas (t.ex. <a href="http://www.mysql.com/">MySQL</a>).</p>
<p>Den är skriven i C++ och passar bra för realtidsanalys av webbstatistik<br />
(sidvisningar, unika besökare, osv), Sessionsobjekt, Datacachning och mycket mer.</p>
<p>Den har inbyggd replikering, automatisk failover och sharding, hög prestanda och den är open source.</p>
<p>Internt så sparas datan i formatet BSON, vilket är JSON med ett datumformat och möjlighet att spara binärdata.</p>
<h2 id="installation">Installation</h2>
<p>Jag kommer som vanligt att använda Mac OS X och Ruby men det finns förkompilerade paket för de vanligaste operativsystemen:</p>
<ul>
<li>OS X 32 bit</li>
<li>OS X 64 bit</li>
<li>Linux 32 bit</li>
<li>Linux 64 bit</li>
<li>Windows 32 bit</li>
<li>Solaris i86pc (EXPERIMENTAL)</li>
</ul>
<p>Det finns även bindningar till ett flertal olika språk, dock har jag inte sett någon för .NET</p>
<ul>
<li><a href="http://www.mongodb.org/pages/viewpage.action?pageId=133409">C++</a> (Inkluderas med databasen)</li>
<li><a href="http://www.mongodb.org/display/DOCS/Java+Language+Center">Java</a></li>
<li><a href="http://www.mongodb.org/display/DOCS/Perl+Language+Center">Perl</a></li>
<li><a href="http://www.mongodb.org/display/DOCS/PHP+Language+Center">PHP</a></li>
<li><a href="http://www.mongodb.org/display/DOCS/Python+Language+Center">Python</a></li>
<li><a href="http://www.mongodb.org/display/DOCS/Ruby+Language+Center">Ruby</a></li>
</ul>
<p>Installationen var helt smärtfri, bara att ladda ner senaste tarbollen (<a href="http://downloads.mongodb.org/osx/mongodb-osx-x86_64-0.9.5.tgz">mongodb-osx-x86_64-0.9.5</a>) och packa upp den på valfri plats.</p>
<p>Man behöver skapa en datakatalog (standard är <code>/data/db</code>) och sen starta servern med</p>
<p><code style="padding: 0 0.5em; color: #fff; background-color: #000;">./mongod --dbpath [DATAKATALOGEN]</code></p>
<p>Nu lyssnar databasen på port <code>27017</code> och det finns ett webbgränssnitt på port <code>28017</code>.</p>
<p>På Rubysidan behövde jag bara installera paketet <code>mongodb-mongo</code> från <a href="http://github.com/mongodb/mongo/tree/master">GitHub</a> med RubyGems:</p>
<p><code style="padding: 0 0.5em; color: #fff; background-color: #000;">sudo gem install mongodb-mongo</code></p>
<h2 id="dags_fr_lite_kod">Dags för lite kod</h2>
<p>Att ansluta till databasen:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;">#!/usr/bin/env ruby</span>
&nbsp;
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'rubygems'</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'mongo'</span>
&nbsp;
db = <span style="color:#6666ff; font-weight:bold;">XGen::Mongo::Driver::Mongo</span>.<span style="color:#9900CC;">new</span>.<span style="color:#9900CC;">db</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;mydb&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span></pre></div></div>

<p>MongoDB har konceptet <code>collections</code> för likartade dokument. (Eller olikartade.. det bestämmer du helt själv) Man kan likna dem vid tabeller.</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;"># Hämtar en collection, den skapas om den inte redan finns</span>
coll = db.<span style="color:#9900CC;">collection</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;testCollection&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># Man kan stoppa in olika sorters dokument</span>
coll.<span style="color:#9900CC;">insert</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#ff3333; font-weight:bold;">:name</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;Peter&quot;</span>, <span style="color:#ff3333; font-weight:bold;">:address</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#ff3333; font-weight:bold;">:city</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;Stockholm&quot;</span> <span style="color:#006600; font-weight:bold;">&#125;</span> <span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
coll.<span style="color:#9900CC;">insert</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#ff3333; font-weight:bold;">:name</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;Velociraptor&quot;</span>, <span style="color:#ff3333; font-weight:bold;">:top_speed</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;25 m/s&quot;</span>,
              <span style="color:#ff3333; font-weight:bold;">:can</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#123;</span>
                <span style="color:#ff3333; font-weight:bold;">:open_doors</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#0000FF; font-weight:bold;">true</span>,
                <span style="color:#ff3333; font-weight:bold;">:turn_at_any_angle_at_any_velocity</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#0000FF; font-weight:bold;">true</span>
              <span style="color:#006600; font-weight:bold;">&#125;</span>
            <span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># Man kan sedan hämta ut datat ur databasen med metoden find_first.</span>
peter  = coll.<span style="color:#9900CC;">find_first</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:name</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'Peter'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
raptor = coll.<span style="color:#9900CC;">find_first</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:top_speed</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'25 m/s'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># Man kan även hämta alla dokument i en collection</span>
coll.<span style="color:#9900CC;">find</span>.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>doc<span style="color:#006600; font-weight:bold;">|</span>
  <span style="color:#CC0066; font-weight:bold;">puts</span> doc.<span style="color:#9900CC;">inspect</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<h2 id="vidare_lsning">Vidare läsning</h2>
<p>Jag har bara skrapat lite lätt på ytan av allt som går att göra med MongoDB, om du tycker att det verkar intressant så rekomenderar jag följande länkar:</p>
<ul>
<li><a href="http://www.slideshare.net/pengwynn/mongodb-ruby-document-store-that-doesnt-rhyme-with-ouch">MongoDB &#8211; Ruby document store that doesn’t rhyme with ouch</a> (Presentation av Wynn Netherland)</li>
<li><a href="http://mongodb.org">MongoDB</a> (Wiki)</li>
<li><a href="http://en.wikipedia.org/wiki/BSON">BSON-formatet</a> (Wikipedia)</li>
<li><a href="http://twitter.com/mongodb">@mongodb</a> (Twitter)</li>
<li><a href="http://www.10gen.com/">10gen</a> (Företaget som sponsrar utvecklingen)</li>
<li><a href="http://www.mbeckler.org/velociraptors/">Solution to XKCD Velociraptors Problem #2</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blogg.athega.se/2009/07/06/mongodb/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Potion, ett objekt- och mixin-orienterat språk</title>
		<link>http://blogg.athega.se/2009/07/02/potion/</link>
		<comments>http://blogg.athega.se/2009/07/02/potion/#comments</comments>
		<pubDate>Thu, 02 Jul 2009 00:15:02 +0000</pubDate>
		<dc:creator>Peter Hellberg</dc:creator>
				<category><![CDATA[Kod]]></category>
		<category><![CDATA[Programmeringsspråk]]></category>
		<category><![CDATA[Öppen källkod]]></category>
		<category><![CDATA[Mixin]]></category>
		<category><![CDATA[Objektorienterat]]></category>
		<category><![CDATA[Potion]]></category>

		<guid isPermaLink="false">http://blogg.athega.se/?p=220</guid>
		<description><![CDATA[
Författaren, tecknaren, musikern, konstnären, och programmeraren Why the Lucky Stiff har under en tid jobbat med ett litet och snabbt språk som han döpt till Potion. Språket är inte på något sätt färdigt eller ens menat att tas på allvar, men jag tycker att det är roligt att experimentera med nya och annorlunda språk.
Mantrat bakom [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-223" title="Potion" src="http://blogg.athega.se/wp-content/uploads/2009/07/potion.png" alt="Why’s Potion" width="320" height="211" /></p>
<p>Författaren, tecknaren, musikern, konstnären, och programmeraren <a href="http://whytheluckystiff.net/">Why the Lucky Stiff</a> har under en tid jobbat med ett litet och snabbt språk som han döpt till<strong> </strong>Potion. Språket är inte på något sätt färdigt eller ens menat att tas på allvar, men jag tycker att det är roligt att experimentera med nya och annorlunda språk.</p>
<h2>Mantrat bakom Potion</h2>
<p>&#8221;Allt är ett objekt, men objekten är inte allt&#8221; samt tillägget &#8221;Oh, och allt är en funktion&#8221;</p>
<h2>Vad är speciellt med Potion?</h2>
<ul>
<li>Potion kompilerar ner programmen till maskinkod</li>
<li>Det inkluderar en liten &#8221;generational near-exact garbage collector&#8221;</li>
<li>Det är två språk i ett: ett för kod, ett för data</li>
<li>Det består av färre än 10.000 rader C</li>
</ul>
<p>Potion är inspirerat av språken <a href="http://www.iolanguage.com/">Io</a>, <a href="http://www.ruby-lang.org/en/">Ruby</a>, <a href="http://caml.inria.fr/ocaml/">OCaml</a>, <a href="http://www.lua.org/">Lua</a>, <a href="http://www.rebol.org">REBOL</a> och C. I den ordningen.</p>
<h2>Installation under Mac OS X</h2>
<p>Först måste man installera <a href="http://www.complang.org/ragel/">Ragel</a> och det gör man enklast genom <a href="http://www.macports.org/">MacPorts</a>:</p>
<p><code style="padding: 0 0.5em; color: #fff; background-color: #000;">sudo port install ragel</code></p>
<p>Och sedan klonar man källkoden med <a href="http://git-scm.com/">Git</a>:</p>
<p><code style="padding: 0 0.5em; color: #fff; background-color: #000;">git clone git://github.com/why/potion.git</code></p>
<p>Efter det kompilerar man koden:</p>
<p><code style="padding: 0 0.5em; color: #fff; background-color: #000;">make</code></p>
<h2>Dags att skriva lite kod</h2>
<h3>Enklast möjliga</h3>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#996600;">'Athega'</span> <span style="color:#CC0066; font-weight:bold;">print</span></pre></div></div>

<p>Kommer helt enkelt att skriva ut strängen &#8216;Athega&#8217; genom att man skickar meddelandet <code>print</code>.</p>
<h3>Något lite roligare</h3>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#CC0066; font-weight:bold;">loop</span>: <span style="color:#996600;">'Athega'</span> <span style="color:#CC0066; font-weight:bold;">print</span>.</pre></div></div>

<p>I Potion startar man block av kod med kolon och avslutar med punkt. Kommandot <code>loop</code> kommer att inte helt oväntat loopa över blocket (en oändlig loop). Meddelandet <code>print</code> sänds till strängen &#8216;Athega&#8217;. Strängar är objekt, som allt annat. De tar emot meddelanden. Meddelanden är separerade från objekt med mellanrum. (I de flesta programmeringsspråk använder man punkt för att separera meddelanden, här (precis som i Svenska) representerar punkt ett avslut på något.)</p>
<h3>Listor</h3>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'kaffet'</span>, <span style="color:#996600;">'på'</span>, <span style="color:#996600;">'h21'</span>, <span style="color:#996600;">'rockar'</span><span style="color:#006600; font-weight:bold;">&#41;</span> at <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">2</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#CC0066; font-weight:bold;">print</span></pre></div></div>

<p>Nu skriver vi ut strängen &#8216;h21&#8242;. Allt inom parenteser är <strong>listor</strong>. Vi skickar meddelandet <code>at</code>. Alla listor har ett <code>at</code> meddelande som hämtar poster baserat på positionen i listan.</p>
<p>Notera att efter <code>at</code> meddelandet kommer det en till lista. <code>(2)</code> är ett argument till <code>at</code>. Den ser ut som en lista (och det <em>är</em> en lista,) men vi kallar den för ett argument eftersom den kommer efter ett meddelande.</p>
<h2>Den funktionella sidan</h2>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">  minus = <span style="color:#006600; font-weight:bold;">&#40;</span>x, y<span style="color:#006600; font-weight:bold;">&#41;</span>: x <span style="color:#006600; font-weight:bold;">-</span> y.
  <span style="color:#9900CC;">minus</span> <span style="color:#006600; font-weight:bold;">&#40;</span>y=<span style="color:#006666;">10</span>, x=<span style="color:#006666;">6</span><span style="color:#006600; font-weight:bold;">&#41;</span></pre></div></div>

<p>Här har vi en variabel som innehåller en funktion. Funktionen subtraherar <code>y</code> från <code>x</code>. I detta fall returneras -4.<br />
(Detta liknar hur nyckelordsargument fungerar i Lua och Python)</p>
<h2>Den objektorienterade sidan</h2>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">Person = <span style="color:#9966CC; font-weight:bold;">class</span>: <span style="color:#006600; font-weight:bold;">/</span>name, <span style="color:#006600; font-weight:bold;">/</span>age, <span style="color:#006600; font-weight:bold;">/</span>sex.
&nbsp;
<span style="color:#9900CC;">Person</span> <span style="color:#CC0066; font-weight:bold;">print</span> = <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>: 
 <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'Mitt namn är '</span>, <span style="color:#006600; font-weight:bold;">/</span>name, <span style="color:#996600;">'.'</span><span style="color:#006600; font-weight:bold;">&#41;</span> join <span style="color:#CC0066; font-weight:bold;">print</span>.
&nbsp;
<span style="color:#CC0066; font-weight:bold;">p</span> = Person <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">p</span> <span style="color:#006600; font-weight:bold;">/</span>name = <span style="color:#996600;">'Peter'</span>
&nbsp;
<span style="color:#CC0066; font-weight:bold;">p</span> <span style="color:#CC0066; font-weight:bold;">print</span></pre></div></div>

<h3>En subklass</h3>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">Developer = Person <span style="color:#9966CC; font-weight:bold;">class</span> <span style="color:#006600; font-weight:bold;">&#40;</span>language<span style="color:#006600; font-weight:bold;">&#41;</span>: <span style="color:#006600; font-weight:bold;">/</span>language = language.
&nbsp;
<span style="color:#9900CC;">Developer</span> <span style="color:#CC0066; font-weight:bold;">print</span> = <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>:
  <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'Mitt namn är '</span>, <span style="color:#006600; font-weight:bold;">/</span>name, <span style="color:#996600;">' och jag gillar '</span>, <span style="color:#006600; font-weight:bold;">/</span>language, <span style="color:#996600;">'.'</span><span style="color:#006600; font-weight:bold;">&#41;</span> join <span style="color:#CC0066; font-weight:bold;">print</span>.
&nbsp;
<span style="color:#9900CC;">u</span> = Developer <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'Ruby'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
u <span style="color:#006600; font-weight:bold;">/</span>name = <span style="color:#996600;">'Peter'</span>
&nbsp;
u <span style="color:#CC0066; font-weight:bold;">print</span></pre></div></div>

<h2>Licks</h2>
<p>Till sist har vi <strong>Lick</strong> vilket är dataspråket jag nämnde tidigare. Men varför skulle man vilja ha två språk i ett? En anledning är att det kan vara svårt att uttrycka data i kod. </p>
<p>Genom att ha ett separat litet dataspråk kan man bygga trädstrukturer av godtyckliga element, ungefär som i HTML. (Man kan se det som kod som har blivit tolkad men inte exekverad)</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#006600; font-weight:bold;">&#91;</span>name <span style="color:#006600; font-weight:bold;">&#40;</span>attr1=<span style="color:#996600;">'string'</span>, attr2=<span style="color:#006666;">10</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#996600;">'TEXT HERE'</span><span style="color:#006600; font-weight:bold;">&#93;</span></pre></div></div>

<p>Varje <strong>lick</strong> kan ha ett namn, en tabell med attribut och en lista med barn. Listan med barn kan även vara av någon annan datatyp. (tex nummer eller sträng)</p>
<h2>Vidare läsning</h2>
<ul>
<li><a href="http://hackety.org/potion/">Potion, a Short Pamphlet</a></li>
<li><a href="http://github.com/why/potion/tree/master">why&#8217;s potion at master &#8211; GitHub</a></li>
<li><a href="http://en.wikipedia.org/wiki/Why_the_lucky_stiff">why the lucky stiff &#8211; Wikipedia</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blogg.athega.se/2009/07/02/potion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Athega bidrar till öppen källkod</title>
		<link>http://blogg.athega.se/2009/03/25/athega-bidrar-till-oppen-kallkod/</link>
		<comments>http://blogg.athega.se/2009/03/25/athega-bidrar-till-oppen-kallkod/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 15:35:01 +0000</pubDate>
		<dc:creator>Johan Beronius</dc:creator>
				<category><![CDATA[Kod]]></category>
		<category><![CDATA[Webbutveckling]]></category>
		<category><![CDATA[Öppen källkod]]></category>
		<category><![CDATA[CPAN]]></category>
		<category><![CDATA[GPS]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Positionering]]></category>

		<guid isPermaLink="false">http://blogg.athega.se/?p=113</guid>
		<description><![CDATA[Athega har sedan länge, ända sedan starten 1997, arbetat mycket med programmeringsspråket Perl. Vi använder oss i mycket stor utsträckning av öppna och fria mjukvaror och verktyg för de system vi bygger. Därför är även en stor del av den kod vi själva producerar befriad från licenskostnader och betraktas som &#8221;open source&#8221; även om den [...]]]></description>
			<content:encoded><![CDATA[<p>Athega har sedan länge, ända sedan starten 1997, arbetat mycket med programmeringsspråket <a href="http://perl.org/" target="_blank">Perl</a>. Vi använder oss i mycket stor utsträckning av öppna och fria mjukvaror och verktyg för de system vi bygger. Därför är även en stor del av den kod vi själva producerar befriad från licenskostnader och betraktas som &#8221;<a href="http://sv.wikipedia.org/wiki/Open_source" target="_blank">open source</a>&#8221; även om den kanske i vissa fall inte finns publikt tillgänglig på nätet.</p>
<p>Saker som går att återanvända och andra kan ha nytta av delar vi gärna med oss av. Ett exempel på detta är Perl-modulen <a href="http://search.cpan.org/~jobero/Geo-SweGrid-1.0/SweGrid.pm" target="_blank"><tt>Geo::SweGrid</tt></a> som används för att konvertera geografiska koordinater mellan det system som används globalt och det som används på vissa svenska kartor.</p>
<p>Det distribuerade arkivet för Perl-moduler heter <a href="http://cpan.org/" target="_blank">CPAN</a>, dit kan alla bidra med sin kod. När en modul väl finns i arkivet kan den lätt installeras på vilken dator som helst så här:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span>user<span style="color: #000000; font-weight: bold;">@</span>host ~<span style="color: #7a0874; font-weight: bold;">&#93;</span>$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> cpan
&nbsp;
cpan shell <span style="color: #660033;">--</span> CPAN exploration and modules installation <span style="color: #7a0874; font-weight: bold;">&#40;</span>v1.9304<span style="color: #7a0874; font-weight: bold;">&#41;</span>
ReadLine support enabled
&nbsp;
cpan<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #c20cb9; font-weight: bold;">install</span> Geo::SweGrid</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://blogg.athega.se/2009/03/25/athega-bidrar-till-oppen-kallkod/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
