<?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>Cygni</title>
	<atom:link href="http://cygni.se/feed/" rel="self" type="application/rss+xml" />
	<link>http://cygni.se</link>
	<description>expertis inom agil systemutveckling på moderna plattformar</description>
	<lastBuildDate>Mon, 14 May 2012 10:26:58 +0000</lastBuildDate>
	<language>sv</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>jQuery Vector Maps</title>
		<link>http://cygni.se/2012/05/14/jquery-vector-maps/</link>
		<comments>http://cygni.se/2012/05/14/jquery-vector-maps/#comments</comments>
		<pubDate>Mon, 14 May 2012 10:26:58 +0000</pubDate>
		<dc:creator>Lars Hendahl</dc:creator>
				<category><![CDATA[Stacktrace]]></category>
		<category><![CDATA[frontend]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[svg]]></category>

		<guid isPermaLink="false">http://cygni.se/?p=4179</guid>
		<description><![CDATA[Att skapa interaktiva kartor är ett vanligt förekommande behov för webbsajter. Vill man dessutom undvika en flash-lösning och inte lägga ner arbete på en mer statisk lösning finns nu möjligheten att använda jQuery Vector Maps (JQVMap). JQVMap är en jQuery-plugin som gör kartor med vektorbaserad grafik. Den använder Scalable Vector Graphics (SVG) för moderna webbläsare ...]]></description>
			<content:encoded><![CDATA[<p>Att skapa interaktiva kartor är ett vanligt förekommande behov för webbsajter. Vill man dessutom undvika en flash-lösning och inte lägga ner arbete på en mer statisk lösning finns nu möjligheten att använda <a href="http://jqvmap.com/" target="_blank">jQuery Vector Maps</a> (JQVMap).</p>
<p>JQVMap är en <a href="http://jquery.com" target="_blank">jQuery</a>-plugin som gör kartor med vektorbaserad grafik. Den använder <a href="https://developer.mozilla.org/en/SVG/Tutorial" target="_blank">Scalable Vector Graphics (SVG)</a> för moderna webbläsare som Firefox, Safari, Chrome, Opera och Internet Explorer 9. Legacy-stöd för äldre versioner av Internet Explorer 6-8 tillhandahålls via VML.</p>
<p><a href="http://jqvmap.com/" target="_blank"><img class="size-medium wp-image-4183" title="http://jqvmap.com/" src="http://cygni.se/wp-uploads/2012/05/Skärmavbild-2012-05-11-kl.-09.09.16-300x182.png" alt="" width="300" height="182" /></a></p>
<p>Det medkommer ett antal kartor över världen, USA och Europa som är färdiga att använda. Det finns flera konfigurationsmöjligheter som färger, kantlinjer och opacities.</p>

	Tags: <a href="http://cygni.se/taggar/frontend/" title="frontend" rel="tag">frontend</a>, <a href="http://cygni.se/taggar/javascript/" title="javascript" rel="tag">javascript</a>, <a href="http://cygni.se/taggar/jquery/" title="jquery" rel="tag">jquery</a>, <a href="http://cygni.se/taggar/svg/" title="svg" rel="tag">svg</a><br />
]]></content:encoded>
			<wfw:commentRss>http://cygni.se/2012/05/14/jquery-vector-maps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maven 2 &#8211; phases of the default lifecycle</title>
		<link>http://cygni.se/2012/04/26/maven-2-phases-of-the-default-lifecycle/</link>
		<comments>http://cygni.se/2012/04/26/maven-2-phases-of-the-default-lifecycle/#comments</comments>
		<pubDate>Thu, 26 Apr 2012 14:52:11 +0000</pubDate>
		<dc:creator>Nathalie Sandström</dc:creator>
				<category><![CDATA[Stacktrace]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://cygni.se/?p=3921</guid>
		<description><![CDATA[Maven, som tillämpar en livscykelbaserad ansats, kommer med en tydligt fördefinierad bygg- och distribueringsprocess där användaren endast behöver lära sig ett litet antal kommandon för att bygga sin artefakt. I POM:en talar vi om hur projektet ska se ut och vad det ska innehålla. Här definierar vi upp hur projektet paketeras och vilka beroenden det ...]]></description>
			<content:encoded><![CDATA[<p>Maven, som tillämpar en livscykelbaserad ansats, kommer med en tydligt fördefinierad bygg- och distribueringsprocess där användaren endast behöver lära sig ett litet antal kommandon för att bygga sin artefakt. I POM:en talar vi om hur projektet ska se ut och vad det ska innehålla. Här definierar vi upp hur projektet paketeras och vilka beroenden det har. Hur Maven sedan hanterar projektet när det utför sitt jobb bestäms genom mål (goals) knutna till ett gäng bestämda faser (phases) i olika livscykler (lifecycles).</p>
<p>Kort och gott innebär detta att du, när du kör ett Mavenkommando, talar om för Maven att gå igenom ett antal faser och att exekvera de mål som hör till varje fas.</p>
<p><img src="http://cygni.se/wp-uploads/2012/01/levels.png" alt="Illustration över Mavens olika nivåer" title="levels" width="404" height="479" class="size-full wp-image-3953" /><br />
<em>Illustration över Mavens olika nivåer</em></p>
<p>Maven har tre inbyggda livscykler:</p>
<ul>
<li><em>default</em> (även kallad build) som hanterar deployment</li>
<li><em>clean</em> som sköter rensning av projekt</li>
<li><em>site</em> som hanterar projektdokumentering</li>
</ul>
<p>Var och en av dessa cykler innehåller ett antal <em>faser</em> som representerar ett specifikt steg i cykeln. Exempelvis innehåller defaultcykeln fasen <em>compile</em> som ansvarar för kompilering av källkoden. Trots att varje fas har en specifik uppgift kan sättet den utför sin uppgift på variera då det är de mappade <em>målen</em> som i slutändan bestämmer vad som faktiskt sker. Vilka mål som knyts till vilken fas bestäms dels och framöverallt genom sättet artefakten paketerats men också genom de plugins som sugs in i projektet.</p>
<p>Som bilden ovan visar kan ett mål kan vara knutet till ett, flera eller inga faser precis som en fas kan innehålla noll eller flera mål. Ett fristående mål kan exekveras utanför livscykeln samtidigt som ett mål mappat mot flera faser körs en gång för varje mappning. Faser innehållandes multipla mål exekverar dessa i samma ordning som de deklarerats i POM:en. Däremot kommer en fas utan några mål aldrig att exekveras.</p>
<p>Defaultcyklen &#8211; för många användare den mest betydelsefulla cykeln då den fungerar som en generell modell för en applikations byggprocess &#8211; innehåller sammanlagt 23 faser. Nedan listar jag de mest framträdande av dessa:</p>
<p><strong>Validate</strong><br />
Bekräftar att projektet är korrekt och att all information som behövs för att slutföra ett bygge finns tillgänligt.</p>
<p><strong>Compilie</strong><br />
Komplilerar källkoden.</p>
<p><strong>Test</strong><br />
Testar den kompilerade koden mot uppsatta tester.</p>
<p><strong>Package</strong><br />
Paketerar den kompilerade koden till ett distribuerbart format (exempelvis .jar).</p>
<p><strong>Integration-test</strong><br />
Om så är nödvändigt läggs den paketerade koden ut i en miljö anpassad för att köra integrationstester i.</p>
<p><strong>Verify</strong><br />
Kör uppsatta kontroller för verifiering av paketets giltighet samt kontrollerar att paketet möter alla kvalitetskriterier.</p>
<p><strong>Install</strong><br />
Installerar paketet i det lokala repot och kan nu användas som ett beroende i andra projekt lokalt.</p>
<p><strong>Deploy</strong><br />
Kopierar det slutgiltiga paketet till ett remote repo för delning med andra projekt och utvecklare.</p>
<p>Utöver dessa faser tillkommer mellanfaser vilka bland annat hanterar förberedelser som att kopiera och flytta resurser till rätt kataloger samt post-process-steg som att städa upp efter körda tester. <a href="http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference" target="_blank">Här hittar ni den kompletta listan över faser</a>.</p>

	Tags: <a href="http://cygni.se/taggar/java/" title="java" rel="tag">java</a>, <a href="http://cygni.se/taggar/maven/" title="maven" rel="tag">maven</a><br />
]]></content:encoded>
			<wfw:commentRss>http://cygni.se/2012/04/26/maven-2-phases-of-the-default-lifecycle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>En introduktion till JavaScriptMVC</title>
		<link>http://cygni.se/2012/04/11/en-introduktion-till-javascriptmvc/</link>
		<comments>http://cygni.se/2012/04/11/en-introduktion-till-javascriptmvc/#comments</comments>
		<pubDate>Wed, 11 Apr 2012 08:53:34 +0000</pubDate>
		<dc:creator>Nathalie Sandström</dc:creator>
				<category><![CDATA[Stacktrace]]></category>
		<category><![CDATA[documentjs]]></category>
		<category><![CDATA[frontend]]></category>
		<category><![CDATA[funcunit]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[javascriptmvc]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[jquerymq]]></category>
		<category><![CDATA[selenium]]></category>
		<category><![CDATA[stealjs]]></category>
		<category><![CDATA[systemutveckling]]></category>

		<guid isPermaLink="false">http://cygni.se/?p=4122</guid>
		<description><![CDATA[Att skapa och kanske framförallt bibehålla en schyst, begriplig struktur när man kodar JavaScript kan vara en besvärlig uppgift. Stora, dynamiska webbprojekt innebär ofta en stor, JS-tung kodbas som – allteftersom funktionaliteten utökas – kan bli mer och mer svårhanterlig. Koden saknar många gånger organisation, sprids ut och kan i slutändan leda till onödigt invecklad ...]]></description>
			<content:encoded><![CDATA[<p>Att skapa och kanske framförallt bibehålla en schyst, begriplig struktur när man kodar JavaScript kan vara en besvärlig uppgift. Stora, dynamiska webbprojekt innebär ofta en stor, JS-tung kodbas som – allteftersom funktionaliteten utökas – kan bli mer och mer svårhanterlig.  Koden saknar många gånger organisation, sprids ut och kan i slutändan leda till onödigt invecklad kod som blir svår att underhålla och utöka.  </p>
<p><a href="http://javascriptmvc.com/" target="_blank">JavaScriptMVC</a> (JMVC) är ett open source-ramverk med motivationen att hjälpa dig som klientutvecklare att bygga strukturerade, skalbara JavaScript-applikationer av hög kvalitet. Byggt ovanpå <a href="http://jquery.com/" target="_blank">jQuery</a> erbjuder JMVC en samling <em>best-practices</em> och verktyg där man plockat ut det bästa från jQuery i avsikt att bringa ordning i röran: <a href="http://javascriptmvc.com/docs.html#!jquerymx" target="_blank">jQueryMX</a>, <a href="http://javascriptmvc.com/docs.html#!stealjs" target="_blank">StealJS</a>, <a href="http://javascriptmvc.com/docs.html#!FuncUnit" target="_blank">FuncUnit</a> och <a href="http://javascriptmvc.com/docs.html#!DocumentJS" target="_blank">DocumentJS</a>.<span id="more-4122"></span></p>
<h3>jQueryMX</h3>
<p><a href="http://javascriptmvc.com/docs.html#!jquerymx" target="_blank">jQueryMX</a> består av ett gäng jQuery-bibliotek vars syfte är att tillhandahålla den struktur och organisation man många gånger saknar i jQuery-tunga applikationer. jQueryMX kommer bland annat med specialevents som <em>drag-and-drop</em>, <em>DOM extensions</em> och <em>language helpers</em> som förenklar hantering av JavaScript-data.</p>
<p>Utöver detta inför jQueryMX även MVC-tänket i JavaScript med sina <code>$.Model-</code>, <code>$.View-</code> och <code>$.Controller-</code>plugins. Dessa olika delar kan användas tillsammans eller separat vilket innebär att du endast inkluderar de plugins du faktiskt kommer att ha användning för.</p>
<p>MVC-upplägget fungerar enligt förväntan:</p>
<ul>
<li>Modellen kapslar in service- och datalagret och kommunicerar via JSON-baserade REST-anrop.</li>
<li>Vyn renderar modelldata som hämtats från servern.</li>
<li>Controllern lyssnar på events och sköter kommunikation mellan modellen och vyn.</li>
</ul>
<h3>StealJS</h3>
<p><a href="http://javascriptmvc.com/docs.html#!stealjs" target="_blank">StealJS</a> är en samling verktyg som gör det enkelt att bygga, paketera och dela JavaScript-applikationer. Verktygen kommer med en mängd trevliga egenskaper:</p>
<ul>
<li>StealJS är bra på <em>Dependency Management</em>.</li>
<li>StealJS hjälper dig bygga ihop dina JS- och CSS-filer till en enda komprimerad produktionsfil.</li>
<li>StealJS kan användas för att generera projektstrukturer.</li>
<li>StealJS kommer med stöd för SVN och GIT.</li>
<li>StealJS möjliggör <em>code cleaning</em> och validering via <a href="http://www.jslint.com/" target="_blank">JSLint</a>.</li>
<li>Och som en liten bonus kan StealJS <a href="https://developers.google.com/webmasters/ajax-crawling/docs/getting-started?hl=sv-SE" target="_blank">göra din AJAX-app <em>crawlable</em></a>.</li>
</ul>
<h3>FuncUnit</h3>
<p><a href="http://javascriptmvc.com/docs.html#!FuncUnit" target="_blank">FuncUnit</a> är ett testramverk med ambitionen att göra enhetstestning och funktionell testning av webbapplikationer enklare och  &#8211; som de själva säger &#8211; roligare! Med en jQuery-liknande syntax skriver, kör och debuggar du dina tester direkt i browsern (fungerar för IE 6+, FF 2+, Safari 4+, Opera 9+ och Chrome) och samma tester kan, via <a href="http://seleniumhq.org/" target="_blank">Selenium</a>, också automatiseras. FuncUnit stödjer simulering av <em>user actions</em> såsom <em>typing</em>, <em>clicking</em>, <em>dragging </em>och <em>scrolling</em>.</p>
<p>Nedanstående kod, vilken testar att en <em>AutoSuggest</em> returnerar fem resultat, får fungera som exempel på ramverkets hyfsat okomplicerade syntax:</p>
<pre class="brush: jscript; title: ;">
module(&quot;autosuggest&quot;,{
 setup: function() {
   S.open('autosuggest.html')
 }
});

test(&quot;JavaScript results&quot;,function(){
 S('input').click().type(&quot;JavaScript&quot;)

 // wait until we have some results
 S('.autocomplete_item').visible(function(){
   equal( S('.autocomplete_item').size(), 5, &quot;there are 5 results&quot;)
 })
});
</pre>
<h3>DocumentJS</h3>
<p><a href="http://javascriptmvc.com/docs.html#!DocumentJS" target="_blank">DocumentJS</a> tillhandahåller, precis som namnet avslöjar, verktyg för dokumentering av JavaScript-kod. DocumentJS hjälper dig generera, organisera, granska och underhålla din dokumentation och, precis som i alla andra delar av JavaScriptMVC, ligger fokus på användarvänlighet och enkelhet. </p>

	Tags: <a href="http://cygni.se/taggar/documentjs/" title="documentjs" rel="tag">documentjs</a>, <a href="http://cygni.se/taggar/frontend/" title="frontend" rel="tag">frontend</a>, <a href="http://cygni.se/taggar/funcunit/" title="funcunit" rel="tag">funcunit</a>, <a href="http://cygni.se/taggar/javascript/" title="javascript" rel="tag">javascript</a>, <a href="http://cygni.se/taggar/javascriptmvc/" title="javascriptmvc" rel="tag">javascriptmvc</a>, <a href="http://cygni.se/taggar/jquery/" title="jquery" rel="tag">jquery</a>, <a href="http://cygni.se/taggar/jquerymq/" title="jquerymq" rel="tag">jquerymq</a>, <a href="http://cygni.se/taggar/selenium/" title="selenium" rel="tag">selenium</a>, <a href="http://cygni.se/taggar/stealjs/" title="stealjs" rel="tag">stealjs</a>, <a href="http://cygni.se/taggar/systemutveckling/" title="systemutveckling" rel="tag">systemutveckling</a><br />
]]></content:encoded>
			<wfw:commentRss>http://cygni.se/2012/04/11/en-introduktion-till-javascriptmvc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>{less} &#8211; CSS</title>
		<link>http://cygni.se/2012/04/02/less-css/</link>
		<comments>http://cygni.se/2012/04/02/less-css/#comments</comments>
		<pubDate>Mon, 02 Apr 2012 09:00:45 +0000</pubDate>
		<dc:creator>Lars Hendahl</dc:creator>
				<category><![CDATA[Stacktrace]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[frontend]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[less]]></category>
		<category><![CDATA[node.js]]></category>
		<category><![CDATA[rhino]]></category>

		<guid isPermaLink="false">http://cygni.se/?p=4064</guid>
		<description><![CDATA[Att konstruera och underhålla CSS-strukturer och instruktioner för större sajter kan vara nog så tidskrävande. CSS-dokumentationen i sig själv ger inget eget stöd för variabler. Detta leder ofta till att man måste ange samma CSS-värden upprepade gånger i ett CSS-dokument. Men det finns hjälp att tillgå, låt oss ta en titt på det dynamiska CSS-språket ...]]></description>
			<content:encoded><![CDATA[<p>Att konstruera och underhålla <a href="http://www.w3.org/Style/CSS/" target="_blank">CSS</a>-strukturer och instruktioner för större sajter kan vara nog så tidskrävande. CSS-dokumentationen i sig själv ger inget eget stöd för variabler. Detta leder ofta till att man måste ange samma CSS-värden upprepade gånger i ett CSS-dokument.</p>
<p>Men det finns hjälp att tillgå, låt oss ta en titt på det dynamiska CSS-språket <a href="http://lesscss.org/" target="_blank">{less}</a> som genom förkompilering ger oss möjlighet att använda <code>variables</code>, <code>mixins</code>, <code>operations</code> och <code>functions</code>.<br />
<span id="more-4064"></span></p>
<h3>Ange variabler som du kan återanvända</h3>
<pre class="brush: css; title: ;">
// instruktion i less
@color: #4D926F;
#header {color: @color;}
h2 {color: @color;}
</pre>
<pre class="brush: css; title: ;">
/*kompilerat CSS Resultat*/
#header {color: #4D926F;}
h2 {color: #4D926F;}
</pre>
<h3>Mixins, inbäddning av css värden:</h3>
<pre class="brush: css; title: ;">
// instruktion i less
.rounded-corners (@radius: 5px) {
    border-radius:@radius;
    -webkit-border-radius: @radius;
    -moz-border-radius: @radius;
}

#header {.rounded-corners}
#footer {.rounded-corners(10px);}
</pre>
<pre class="brush: css; title: ;">
/*kompilerat CSS Resultat*/
#header {
    border-radius: 5px;
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
}

#footer {
     border-radius: 10px;
    -webkit-border-radius: 10px;
    -moz-border-radius: 10px;
}
</pre>
<h3>Nästlade regler</h3>
<pre class="brush: css; title: ;">
// instruktion i less
#header {
    h1 {
        font-size: 26px;
        font-weight: bold;
    }
    p {
        font-size: 12px;
        a {
            text-decoration: none;
            &amp;:hover {
                border-width: 1px
            }
        }
    }
}
</pre>
<pre class="brush: css; title: ;">
/*kompilerat CSS Resultat*/
#header h1 {
    font-size: 26px;
    font-weight: bold;
}
#header p {font-size: 12px;}
#header p a {text-decoration: none;}
#header p a:hover {border-width: 1px;}
</pre>
<h3>Operations and functions</h3>
<p>Att hantera relativa fontstorlekar i procent beräknat utifrån pixlar är ett vanligt case. Vi utgår från en basstorlek på 13px och skapar en funktion som returnerar ett procenttal utifrån önskad pixel- och basstorlek:</p>
<pre class="brush: css; title: ;">
// instruktion i less
@basefontsize: 13;

.fontresizer(@fontsize: 13px)  {
    font-size: percentage(@fontsize/@basefontsize);
}
.classx { .fontresizer(); }
</pre>
<pre class="brush: css; title: ;">
/*kompilerat CSS Resultat*/
.classx{ font-size: 100%;}
</pre>
<pre class="brush: css; title: ;">
// instruktion i less
.classx{ .fontresizer(20px);}
</pre>
<pre class="brush: css; title: ;">
/*kompilerat CSS Resultat*/
.classx{font-size: 153.846%;}
</pre>
<p>Ett annat vanligt förekommande behov är att reducera instruktioner för så kallade imagesprite-bakgrunder</p>
<pre class="brush: css; title: ;">
// instruktion i less
.sprite(@offset-x: 0, @offset-y: 0) {
    background: url(&quot;../sprites/icons.png&quot;) scroll no-repeat @offset-x @offset-y;
}
.classx {.sprite(100%, -100px);
}
</pre>
<pre class="brush: css; title: ;">
/*kompilerat CSS Resultat*/
.classx{ background: url(&quot;../sprites/icons.png&quot;) scroll no-repeat 100% -100px;}
</pre>
<h3>Installera och använd {less}</h3>
<p>Less kan användas såväl från klienten (Chrome, Safari och Firefox för lokal utveckling)  som från servern med <a href="http://nodejs.org/" target="_blank">Node.js</a> och <a href="http://www.mozilla.org/rhino/" target="_blank">Rhino</a>. Använder du Maven rekommenderar jag <a href="http://mojo.codehaus.org/lesscss-maven-plugin/">denna plugin</a> för kompilering av {less}-resurser till CSS-filer.</p>
<p>Som Mac-användare kan du även använda {less}-appen från <a href="http://incident57.com/less/" target="_blank">CodeKit</a> i din lokala utvecklingsmiljö</p>

	Tags: <a href="http://cygni.se/taggar/css/" title="css" rel="tag">css</a>, <a href="http://cygni.se/taggar/css3/" title="css3" rel="tag">css3</a>, <a href="http://cygni.se/taggar/frontend/" title="frontend" rel="tag">frontend</a>, <a href="http://cygni.se/taggar/html/" title="html" rel="tag">html</a>, <a href="http://cygni.se/taggar/javascript/" title="javascript" rel="tag">javascript</a>, <a href="http://cygni.se/taggar/less/" title="less" rel="tag">less</a>, <a href="http://cygni.se/taggar/node-js/" title="node.js" rel="tag">node.js</a>, <a href="http://cygni.se/taggar/rhino/" title="rhino" rel="tag">rhino</a><br />
]]></content:encoded>
			<wfw:commentRss>http://cygni.se/2012/04/02/less-css/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Är du vass på frontend?</title>
		<link>http://cygni.se/2012/03/29/ar-du-vass-pa-frontend/</link>
		<comments>http://cygni.se/2012/03/29/ar-du-vass-pa-frontend/#comments</comments>
		<pubDate>Thu, 29 Mar 2012 09:35:59 +0000</pubDate>
		<dc:creator>Tommy Wassgren</dc:creator>
				<category><![CDATA[Jobbannonser]]></category>
		<category><![CDATA[arbetsgivare]]></category>
		<category><![CDATA[frontend]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[rekrytering]]></category>

		<guid isPermaLink="false">http://cygni.se/?p=4113</guid>
		<description><![CDATA[I så fall bör du söka jobb på Cygni! Vi är ett konsultbolag med ambitionen att vara Stockholms bästa arbetsgivare för skickliga IT-konsulter.​ Bland våra kunder finns SVT, Aftonbladet, Eniro, Metro, Com Hem och många andra företag som är ledande inom sin bransch.​ Cygni består idag av drygt 40 killar och tjejer i åldrarna 25-58. ...]]></description>
			<content:encoded><![CDATA[<p>I så fall bör du söka jobb på Cygni! Vi är ett konsultbolag med ambitionen att vara <strong>Stockholms bästa arbetsgivare</strong> för skickliga IT-konsulter.​ Bland våra kunder finns SVT, Aftonbladet, Eniro, Metro, Com Hem och många andra företag som är ledande inom sin bransch.​</p>
<p>Cygni består idag av drygt <strong>40 killar och tjejer</strong> i åldrarna 25-58. Vi har några av Stockholms absolut <strong>vassaste frontendutvecklare</strong> och satsar nu stenhårt på att utöka vår frontendavdelning med ytterligare frontendexperter.</p>
<p>För att trivas som frontendutvecklare på Cygni måste du vara <strong>grym på JavaScript</strong> och webstandards. Du ska ha stenkoll på begrepp såsom <strong>progressive enhancement</strong> och <strong>responsive design</strong>, vara väl insatt i nyheterna hos HTML5 och CSS3 och inte ha några problem med att <strong>skicka JSON över HTTP</strong>. Du är bekväm med Git och strävar ständigt efter att ligga i framkant när det gäller nya tekniker. Att <strong>jobba agilt är en självklarhet</strong> för dig och du brinner för att leverera kod av högsta kvalitet.</p>
<p>Absolut viktigast är dock att du är en <strong>relationsbyggare som trivs i konsultrollen</strong>!</p>
<p>Om du vill vara en del av ett <strong>ungt företag</strong> som har <strong>Stockholms bästa konsulter</strong>, fantastisk gemenskap, roliga kunder samt ett exceptionellt bra förmånspaket &#8211;  skicka då ett mejl med din ansökan till <a href="mailto:rekrytering@cygni.se">rekrytering@cygni.se</a>.</p>

	Tags: <a href="http://cygni.se/taggar/arbetsgivare/" title="arbetsgivare" rel="tag">arbetsgivare</a>, <a href="http://cygni.se/taggar/frontend/" title="frontend" rel="tag">frontend</a>, <a href="http://cygni.se/taggar/javascript/" title="javascript" rel="tag">javascript</a>, <a href="http://cygni.se/taggar/rekrytering/" title="rekrytering" rel="tag">rekrytering</a><br />
]]></content:encoded>
			<wfw:commentRss>http://cygni.se/2012/03/29/ar-du-vass-pa-frontend/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cygnis vårkonferens i Champoluc</title>
		<link>http://cygni.se/2012/03/29/cygnis-varkonferens-i-champoluc/</link>
		<comments>http://cygni.se/2012/03/29/cygnis-varkonferens-i-champoluc/#comments</comments>
		<pubDate>Thu, 29 Mar 2012 07:30:35 +0000</pubDate>
		<dc:creator>Tommy Wassgren</dc:creator>
				<category><![CDATA[Cygnibloggen]]></category>
		<category><![CDATA[cygni]]></category>
		<category><![CDATA[cygnibloggen]]></category>
		<category><![CDATA[konferens]]></category>
		<category><![CDATA[konsulter]]></category>

		<guid isPermaLink="false">http://cygni.se/?p=4095</guid>
		<description><![CDATA[Förra fredagen började Magnus Jonnerby på Cygni och inledde i sann Cygni-anda med en vårkonferens. Cygnis vårkonferens 2012 gick av stapeln i Champoluc, Italien. Konferensens fokus var att ta fram en handbok för konsultchefer och det resultatet av övningarna kommer att ligga till grund för hur konsultchefer &#8211; befintliga och framtida &#8211; ska jobba på ...]]></description>
			<content:encoded><![CDATA[<p>Förra fredagen började <em>Magnus Jonnerby</em> på Cygni och inledde i sann Cygni-anda med en vårkonferens. Cygnis vårkonferens 2012 gick av stapeln i Champoluc, Italien. Konferensens fokus var att ta fram en <em>handbok för konsultchefer</em> och det resultatet av övningarna kommer att ligga till grund för hur konsultchefer &#8211; befintliga och framtida &#8211; ska jobba på Cygni.<br />
<span id="more-4095"></span></p>
<p>På Cygni kör vi utvecklingssamtal 1 gång per år och dessa är i full gång.  Det är fantastiskt roligt att ringa till kunderna för få feedback &#8211; alla är lyriska över den nivå som Cygnikonsulterna håller och vi visar gång på gång att vi är <em><a href="/jobba-pa-cygni/vara-konsulter/">Stockholms bästa IT-konsulter</a></em>!</p>

<a href='http://cygni.se/2012/03/29/cygnis-varkonferens-i-champoluc/p3161163/' title='P3161163'><img width="150" height="150" src="http://cygni.se/wp-uploads/2012/03/P3161163-150x150.jpg" class="attachment-thumbnail" alt="P3161163" title="P3161163" /></a>
<a href='http://cygni.se/2012/03/29/cygnis-varkonferens-i-champoluc/p3161157/' title='P3161157'><img width="150" height="150" src="http://cygni.se/wp-uploads/2012/03/P3161157-150x150.jpg" class="attachment-thumbnail" alt="P3161157" title="P3161157" /></a>
<a href='http://cygni.se/2012/03/29/cygnis-varkonferens-i-champoluc/p3161153/' title='P3161153'><img width="150" height="150" src="http://cygni.se/wp-uploads/2012/03/P3161153-150x150.jpg" class="attachment-thumbnail" alt="P3161153" title="P3161153" /></a>
<a href='http://cygni.se/2012/03/29/cygnis-varkonferens-i-champoluc/sdc13937/' title='SDC13937'><img width="150" height="150" src="http://cygni.se/wp-uploads/2012/03/SDC13937-150x150.jpg" class="attachment-thumbnail" alt="SDC13937" title="SDC13937" /></a>
<a href='http://cygni.se/2012/03/29/cygnis-varkonferens-i-champoluc/sdc13878/' title='SDC13878'><img width="150" height="150" src="http://cygni.se/wp-uploads/2012/03/SDC13878-150x150.jpg" class="attachment-thumbnail" alt="SDC13878" title="SDC13878" /></a>


	Tags: <a href="http://cygni.se/taggar/cygni/" title="cygni" rel="tag">cygni</a>, <a href="http://cygni.se/taggar/cygnibloggen-2/" title="cygnibloggen" rel="tag">cygnibloggen</a>, <a href="http://cygni.se/taggar/konferens/" title="konferens" rel="tag">konferens</a>, <a href="http://cygni.se/taggar/konsulter/" title="konsulter" rel="tag">konsulter</a><br />
]]></content:encoded>
			<wfw:commentRss>http://cygni.se/2012/03/29/cygnis-varkonferens-i-champoluc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Moduler i JavaScript med CommonJS</title>
		<link>http://cygni.se/2012/03/26/moduler-i-javascript-med-commonjs/</link>
		<comments>http://cygni.se/2012/03/26/moduler-i-javascript-med-commonjs/#comments</comments>
		<pubDate>Mon, 26 Mar 2012 14:00:27 +0000</pubDate>
		<dc:creator>Rudolf Hersén</dc:creator>
				<category><![CDATA[Stacktrace]]></category>
		<category><![CDATA[commonjs]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[nodejs]]></category>

		<guid isPermaLink="false">http://cygni.se/?p=4045</guid>
		<description><![CDATA[JavaScript är ett av våra mest underskattade programmeringsspråk. Detta beror på flera saker; det har förmodligen skrivits fler fulhack i JavaScript än i något annat språk, möjligtvis med undantag för Perl. Dessutom har JavaScript några rejäla skönhetsfläckar. De flesta brukar uppröras av jämförelseoperatorerna som ibland gör oväntade typkonverteringar. Personligen tycker jag att avsaknaden av ett ...]]></description>
			<content:encoded><![CDATA[<p>JavaScript är ett av våra mest underskattade programmeringsspråk. Detta beror på flera saker; det har förmodligen skrivits fler fulhack i JavaScript än i något annat språk, möjligtvis med undantag för Perl. Dessutom har JavaScript några rejäla skönhetsfläckar. De flesta brukar uppröras av jämförelseoperatorerna som ibland gör oväntade typkonverteringar. Personligen tycker jag att avsaknaden av ett modulsystem är värre.</p>
<p><a target="_blank" href="http://www.commonjs.org/">CommonJS</a> är ett initiativ startat för tre år sedan under namnet ServerJS av Kevin Dangoor. Det syftar till att göra JavaScript till ett seriöst alternativ som serverplattform. CommonJS innehåller ett antal API-specifikationer, exempelvis för filsystemaccess, hantering av binärdata, kommandoradsargument och utmatning till konsol. Dessutom finns en specifikation för modulhantering: CommonJS Modules. Enligt denna specifikation publicerar man variabler och funktioner med <code>exports</code> och importerar dem med <code>require</code>. Så här kan en modul se ut:</p>
<p><strong><code>movieFinder.js</code></strong></p>
<pre class="brush: jscript; title: ;">
var priv = [];

exports.add = function (item) {
    priv.push(item);
};

exports.findAll = function () {
    return priv;
};
</pre>
<p>Variabeln <code>priv</code> är inte tillgänglig utanför modulen. Det är däremot funktionerna <code>add</code> och <code>findAll</code>, eftersom de lagts till objektet <code>exports</code>. Om en modul behöver importera en annan görs det med <code>require</code>:</p>
<p><strong><code>movieLister.js</code></strong></p>
<pre class="brush: jscript; title: ;">
var finder = require(&quot;./movieFinder&quot;);

exports.moviesDirectedBy = function (arg) {
    var hasDirector = function (movie) {
        return movie.getDirector() === arg;
    };

    return finder.findAll().filter(hasDirector);
};
</pre>
<p>Dessa två moduler kommer bara att finnas i ett exemplar vardera. Om man istället behöver en klass där man kan instansiera objekt tilldelar man en konstruktor till <code>exports</code>:</p>
<p><strong><code>Movie.js</code></strong></p>
<pre class="brush: jscript; title: ;">
var constructor = function (title, director) {
    return {
        getTitle: function () {
            return title;
        },

        getDirector: function () {
            return director;
        },

        toString: function () {
            return title + &quot; by &quot; + director;
        }
    };
};

module.exports = constructor;
</pre>
<p>Notera att det här är ett av många sätt att skriva konstruktorer i JavaScript. Douglas Crockfords <a target="_blank" href="http://www.amazon.com/exec/obidos/ASIN/0596517742/wrrrldwideweb">JavaScript: The Good Parts</a> har ett helt kapitel om detta. Huvudmodulen kan sedan se ut så här:</p>
<p><strong><code>main.js</code></strong></p>
<pre class="brush: jscript; title: ;">
var Movie = require(&quot;./Movie&quot;);
var movieFinder = require(&quot;./movieFinder&quot;);
var movieLister = require(&quot;./movieLister&quot;);

movieFinder.add(Movie(&quot;Terminator&quot;, &quot;James Cameron&quot;));
movieFinder.add(Movie(&quot;Blade Runner&quot;, &quot;Ridley Scott&quot;));
movieFinder.add(Movie(&quot;Titanic&quot;, &quot;James Cameron&quot;));

var movies = movieLister.moviesDirectedBy(&quot;James Cameron&quot;);

for (var i = 0; i &lt; movies.length; i++) {
    console.log(movies[i].toString());
}
</pre>
<p>För att allt det här ska fungera behöver man naturligtvis en implementation av CommonJS Modules. På serversidan implementerar exempelvis <a target="_blank" href="http://nodejs.org/">Node.js</a> specifikationen. Om man skriver kod som ska köras i browsern kan man bland annat välja på <a href="https://github.com/linkedin/inject">inject</a> och <a href="http://requirejs.org/">require.js</a>. </p>

	Tags: <a href="http://cygni.se/taggar/commonjs/" title="commonjs" rel="tag">commonjs</a>, <a href="http://cygni.se/taggar/javascript/" title="javascript" rel="tag">javascript</a>, <a href="http://cygni.se/taggar/nodejs/" title="nodejs" rel="tag">nodejs</a><br />
]]></content:encoded>
			<wfw:commentRss>http://cygni.se/2012/03/26/moduler-i-javascript-med-commonjs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ny kund: Avanza Bank</title>
		<link>http://cygni.se/2012/02/07/ny-kund-avanza-bank/</link>
		<comments>http://cygni.se/2012/02/07/ny-kund-avanza-bank/#comments</comments>
		<pubDate>Tue, 07 Feb 2012 14:01:28 +0000</pubDate>
		<dc:creator>Jon Persson</dc:creator>
				<category><![CDATA[Pressmeddelanden]]></category>
		<category><![CDATA[bank]]></category>
		<category><![CDATA[finans]]></category>
		<category><![CDATA[ledande]]></category>
		<category><![CDATA[ny kund]]></category>

		<guid isPermaLink="false">http://cygni.se/?p=3994</guid>
		<description><![CDATA[Cygni har idag tecknat avtal med Avanza Bank om att leverera avancerade konsulttjänster inom webbutveckling. Avanza är Sveriges största nätmäklare och det helägda dotterbolaget Avanza Bank är Sveriges största nischbank inom sparande. Avanza-aktien är noterad på MidCap-listan på Stockholmsbörsen. Detta avtal befäster Cygnis ställning som en ledande leverantör av konsulttjänster till företag vars webbtjänster har ...]]></description>
			<content:encoded><![CDATA[<p>Cygni har idag tecknat avtal med Avanza Bank om att leverera avancerade konsulttjänster inom webbutveckling. Avanza är Sveriges största nätmäklare och det helägda dotterbolaget Avanza Bank är Sveriges största nischbank inom sparande. Avanza-aktien är noterad på MidCap-listan på Stockholmsbörsen.</p>
<p>Detta avtal befäster Cygnis ställning som en ledande leverantör av konsulttjänster till företag vars webbtjänster har exceptionella krav på prestanda, säkerhet och användbarhet.</p>

	Tags: <a href="http://cygni.se/taggar/bank/" title="bank" rel="tag">bank</a>, <a href="http://cygni.se/taggar/finans/" title="finans" rel="tag">finans</a>, <a href="http://cygni.se/taggar/ledande/" title="ledande" rel="tag">ledande</a>, <a href="http://cygni.se/taggar/ny-kund/" title="ny kund" rel="tag">ny kund</a><br />
]]></content:encoded>
			<wfw:commentRss>http://cygni.se/2012/02/07/ny-kund-avanza-bank/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Synkronisering av multipla Google Calendars med iPhone</title>
		<link>http://cygni.se/2012/01/24/synkronisering-av-multipla-google-calendars-med-iphone/</link>
		<comments>http://cygni.se/2012/01/24/synkronisering-av-multipla-google-calendars-med-iphone/#comments</comments>
		<pubDate>Tue, 24 Jan 2012 07:19:05 +0000</pubDate>
		<dc:creator>Nathalie Sandström</dc:creator>
				<category><![CDATA[Stacktrace]]></category>
		<category><![CDATA[cygni]]></category>
		<category><![CDATA[e-post]]></category>
		<category><![CDATA[exchange]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[microsoft]]></category>

		<guid isPermaLink="false">http://cygni.se/?p=3598</guid>
		<description><![CDATA[På Cygni använder vi Google Apps för en stor del av all kommunikation: e-post, kalendrar, wiki, kontakter o.s.v. vilket fungerar grymt. Kalenderbiten är en viktig del och personligen har jag ett tiotal olika kalendrar &#8211; egna som andras, privata som arbetsrelaterade &#8211; kopplade till mitt konto. I kombination med detta kör jag iPhone, både privat ...]]></description>
			<content:encoded><![CDATA[<p>På Cygni använder vi Google Apps för en stor del av all kommunikation: e-post, kalendrar, wiki, kontakter o.s.v. vilket fungerar grymt. Kalenderbiten är en viktig del och personligen har jag ett tiotal olika kalendrar &#8211; egna som andras, privata som arbetsrelaterade &#8211; kopplade till mitt konto. I kombination med detta kör jag iPhone, både privat och på jobbet, och ser det som en nödvändighet att kunna nå och editera mina kalendrar från den enheten.</p>
<p>Det finns redan mängder med tutorials över hur man sätter upp Google-konton på sin iPhone men jag har upplevt det aningen problematiskt att synka multipla Google-kalendrar och tänker mig att detta inlägg får fungera som en steg för steg-guide över hur jag fick till synkningen. Jag har en iPhone 3GS med iOS 5 och använder mig av <a href="http://www.google.se/mobile/sync/">Google Sync</a> för synkronisering.</p>
<p>Har du inte redan satt upp ett Google-konto på din iPhone följer du dessa steg:</p>
<ol>
<li>Under inställningsmenyn på din iPhone väljer du<strong> E-post, kontakter, kalendrar</strong></li>
<li><strong>Lägg till konto</strong></li>
<li>Välj att skapa ett <strong>Microsoft Exchange</strong>-konto (vilket är det protokoll Google Sync använder vid synkronisering till iPhone)</li>
</ol>
<p><a href="http://cygni.se/2012/01/24/synkronisering-av-multipla-google-calendars-med-iphone/gallery1-5/" rel="attachment wp-att-3636"><img src="http://cygni.se/wp-uploads/2011/10/gallery14.png" alt="Add Microsoft Exchange account" width="550" height="255" class="alignnone size-full wp-image-3636" /></a></p>
<ol start="4">
<li>Under <strong>E-post</strong> fyller du i din fullständiga e-postadress</li>
<li>Lämna <strong>domän</strong>fältet tomt</li>
<li>Fyll i din fullständiga e-postadress under <strong>Användarnamn</strong></li>
<li>Skriv in <strong>lösenordet</strong> för ditt Google-konto</li>
<li>Klicka på <strong>Nästa</strong></li>
<li>När fältet <strong>Server</strong> poppar upp fyller du i <em>m.google.com</em></li>
<li>Klicka på <strong>Nästa</strong></li>
<li>Välj vad du vill synka (denna guide kräver att du åtminstone väljer att synka kalendrar)</li>
</ol>
<p><a href="http://cygni.se/2012/01/24/synkronisering-av-multipla-google-calendars-med-iphone/gallery2/" rel="attachment wp-att-3637"><img src="http://cygni.se/wp-uploads/2011/10/gallery2.png" alt="Account information" width="550" height="255" class="alignnone size-full wp-image-3637" /></a></p>
<p>Setup av synkroniseringen är nu klar och beroende på vad du i steg 11 valde att synka kommer det nu att pushas ut information till din iPhone.</p>
<p>Med Google Sync kan du synka upp till 25 kalendrar på din iPhone vilket man enkelt ska kunna sätta upp genom att surfa in på <a href="http://m.google.com/sync">http://m.google.com/sync</a> och logga in på sitt konto. Här stötte jag dock på problem. Sidan talade om för mig att Google Sync tyvärr inte kunde stödja min enhet eftersom jag var tvungen att ha iOS 3 eller senare &#8211; något som jag uppenbarligen hade då jag precis uppdaterat till iOS 5.</p>
<p><a href="http://cygni.se/2012/01/24/synkronisering-av-multipla-google-calendars-med-iphone/error/" rel="attachment wp-att-3638"><img src="http://cygni.se/wp-uploads/2011/10/error.png" alt="" width="260" height="400" class="alignnone size-full wp-image-3638" /></a></p>
<p>Efter en tids undersökning kunde jag konstatera att detta var en bugg fler användare upplevt och en konsekvens av att Google Sync befinner sig i ett beta-stadie. Sajten kräver att sidan presenteras på engelska och det du behöver göra för att komma runt problemet är att byta språk från svenska till just engelska enligt nedan steg:</p>
<ol start="12">
<li>Med din iPhone, surfa in på <a href="http://m.google.com/sync">http://m.google.com/sync</a></li>
<li>För att ändra språk klickar du på länken <strong>Byt språk</strong> (jag valde English (UK))</li>
<li>Sidan laddas om och du har nu möjlighet att logga in. Gör detta genom att klicka på <strong>Sign in with your Google Account</strong></li>
<li>Du möts nu av de enheter du har satt upp ditt Google-konto på och genom att klicka dig in på de olika enheterna kan du välja exakt vilka kalendrar du vill synka</li>
</ol>
<p><a href="http://cygni.se/2012/01/24/synkronisering-av-multipla-google-calendars-med-iphone/gallery3/" rel="attachment wp-att-3639"><img src="http://cygni.se/wp-uploads/2011/10/gallery3.png" alt="Sync devices" width="550" height="410" class="alignnone size-full wp-image-3639" /></a></p>
<ol start="16">
<li>Efter att ha valt vilka kalendrar du vill synka och klickat på <strong>Save</strong> är du klar</li>
</ol>
<p>När du nu lägger till, editerar eller tar bort händelser i dina kalendrar kommer dessa speglas på alla enheter du synkat enligt ovan steg &#8211; detta gäller självfallet oberoende av om du gör förändringarna i kalendern på din iPhone eller i webbgränssnittet på din dator.</p>
<p><a href="http://cygni.se/2012/01/24/synkronisering-av-multipla-google-calendars-med-iphone/gallery4/" rel="attachment wp-att-3640"><img src="http://cygni.se/wp-uploads/2011/10/gallery4.png" alt="Devices synced" width="550" height="300" class="alignnone size-full wp-image-3640" /></a></p>

	Tags: <a href="http://cygni.se/taggar/cygni/" title="cygni" rel="tag">cygni</a>, <a href="http://cygni.se/taggar/e-post/" title="e-post" rel="tag">e-post</a>, <a href="http://cygni.se/taggar/exchange/" title="exchange" rel="tag">exchange</a>, <a href="http://cygni.se/taggar/iphone/" title="iphone" rel="tag">iphone</a>, <a href="http://cygni.se/taggar/microsoft/" title="microsoft" rel="tag">microsoft</a><br />
]]></content:encoded>
			<wfw:commentRss>http://cygni.se/2012/01/24/synkronisering-av-multipla-google-calendars-med-iphone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ny kund: Svenska Dagbladet</title>
		<link>http://cygni.se/2012/01/16/ny-kund-svenska-dagbladet/</link>
		<comments>http://cygni.se/2012/01/16/ny-kund-svenska-dagbladet/#comments</comments>
		<pubDate>Mon, 16 Jan 2012 09:38:29 +0000</pubDate>
		<dc:creator>Jon Persson</dc:creator>
				<category><![CDATA[Pressmeddelanden]]></category>
		<category><![CDATA[media]]></category>
		<category><![CDATA[SvD]]></category>

		<guid isPermaLink="false">http://cygni.se/?p=3979</guid>
		<description><![CDATA[Cygni har tecknat avtal med Svenska Dagbladet om att leverera avancerade konsulttjänster inom javautveckling, webbutveckling och Content Management. SvD.se är en av Sveriges största nyhetssajter och blev nyligen utsedd till Årets dagstidning – digitala medier. Cygni har de senaste åren framgångsrikt levererat konsulttjänster till majoriteten av de största svenska mediebolagen. Det nya avtalet med Svenska Dagbladet ...]]></description>
			<content:encoded><![CDATA[<p>Cygni har tecknat avtal med Svenska Dagbladet om att leverera avancerade konsulttjänster inom javautveckling, webbutveckling och Content Management. SvD.se är en av Sveriges största nyhetssajter och blev nyligen utsedd till Årets dagstidning – digitala medier.</p>
<p>Cygni har de senaste åren framgångsrikt levererat konsulttjänster till majoriteten av de största svenska mediebolagen. Det nya avtalet med Svenska Dagbladet är ytterligare ett i raden av bevis för att Cygnis spetskompetens är efterfrågad i mediebranschen.</p>

	Tags: <a href="http://cygni.se/taggar/media/" title="media" rel="tag">media</a>, <a href="http://cygni.se/taggar/svd/" title="SvD" rel="tag">SvD</a><br />
]]></content:encoded>
			<wfw:commentRss>http://cygni.se/2012/01/16/ny-kund-svenska-dagbladet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

