<?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>Isolated</title>
	<atom:link href="http://www.isolated.se/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.isolated.se</link>
	<description></description>
	<lastBuildDate>Thu, 26 May 2011 21:37:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Nodevore : Using convore with node.js</title>
		<link>http://www.isolated.se/2011/05/26/using-convore-with-node-js/</link>
		<comments>http://www.isolated.se/2011/05/26/using-convore-with-node-js/#comments</comments>
		<pubDate>Thu, 26 May 2011 21:36:18 +0000</pubDate>
		<dc:creator>trouf</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[node.js]]></category>

		<guid isPermaLink="false">http://www.isolated.se/?p=388</guid>
		<description><![CDATA[TweetIt&#8217;s been quite a while since I fell in love with node.js, but only recently have I tried my hand at actually writing a npm module. While working on a project involving node.js, I needed to get build and test results from my deployment enviroment into convore somehow for other members of the team to [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.isolated.se/2011/05/26/using-convore-with-node-js/&via=Trouf&text=Nodevore : Using convore with node.js&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p>It&#8217;s been quite a while since I fell in love with node.js, but only recently have I tried my hand at actually writing a npm module.</p>
<p>While working on a project involving node.js, I needed to get build and test results from my deployment enviroment into convore somehow for other members of the team to see. I checked around a bit and it seemed that noone had actually written a convore API wrapper&#8230; .. so I went ahead and made this</p>
<p><a title="https://github.com/troufster/nodevore" href="https://github.com/troufster/nodevore">https://github.com/troufster/nodevore</a></p>
<p>It&#8217;s really straight forward really. Just install and use like any other node.js module.</p>
<div id="gist-994134" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'>&nbsp;<span class="kd">var</span> <span class="nx">Nodevore</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;nodevore&#39;</span><span class="p">).</span><span class="nx">Nodevore</span><span class="p">;</span></div><div class='line' id='LC2'><br/></div><div class='line' id='LC3'>&nbsp;<span class="kd">var</span> <span class="nx">n</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Nodevore</span><span class="p">({</span> <span class="nx">username</span> <span class="o">:</span> <span class="s1">&#39;user&#39;</span><span class="p">,</span>  <span class="nx">password</span> <span class="o">:</span> <span class="s1">&#39;pass&#39;</span><span class="p">});</span></div><div class='line' id='LC4'><br/></div><div class='line' id='LC5'>&nbsp;<span class="nx">n</span><span class="p">.</span><span class="nx">verifyAccount</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">err</span><span class="p">,</span> <span class="nx">data</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC6'>&nbsp;&nbsp;&nbsp;<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">data</span><span class="p">);</span></div><div class='line' id='LC7'>&nbsp;<span class="p">});</span></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/994134/bfdf5a02434e27c8ae23ba3edf0bc33623dfbacd/nodevore.js" style="float:right;">view raw</a>
            <a href="https://gist.github.com/994134#file_nodevore.js" style="float:right;margin-right:10px;color:#666">nodevore.js</a>
            <a href="https://gist.github.com/994134">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<p>All of the API methods are supported at the time of writing, including the live API.</p>
<p>Cheers.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.isolated.se/2011/05/26/using-convore-with-node-js/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Resharper &amp; Entity Framework Generated Code</title>
		<link>http://www.isolated.se/2011/05/18/resharper-entity-framework-generated-code/</link>
		<comments>http://www.isolated.se/2011/05/18/resharper-entity-framework-generated-code/#comments</comments>
		<pubDate>Wed, 18 May 2011 11:02:55 +0000</pubDate>
		<dc:creator>trouf</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Programmering]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.isolated.se/?p=370</guid>
		<description><![CDATA[TweetBeen looking for a way to get Resharper to ignore the code that is generated by Entity Framework for a while. Sure, I can ignore the entire project, but since we also had some repo/Unit Of Work implementations in the same project, that&#8217;s really not an option. The final solution was to edit the code [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.isolated.se/2011/05/18/resharper-entity-framework-generated-code/&via=Trouf&text=Resharper & Entity Framework Generated Code&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p>Been looking for a way to get Resharper to ignore the code that is generated by Entity Framework for a while. Sure, I can ignore the entire project, but since we also had some repo/Unit Of Work implementations in the same project, that&#8217;s really not an option.</p>
<p>The final solution was to edit the code generating T4 (.tt) templates of Entity Framework to wrap the code in a custom region, i.e. &#8221;EF Generated code&#8221;.</p>
<div id="gist-978348" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="k">void</span> <span class="nf">BeginNamespace</span><span class="p">(</span><span class="kt">string</span> <span class="n">namespaceName</span><span class="p">,</span> <span class="n">CodeGenerationTools</span> <span class="n">code</span><span class="p">)</span></div><div class='line' id='LC2'><span class="p">{</span></div><div class='line' id='LC3'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">CodeRegion</span> <span class="n">region</span> <span class="p">=</span> <span class="k">new</span> <span class="n">CodeRegion</span><span class="p">(</span><span class="k">this</span><span class="p">);</span></div><div class='line' id='LC4'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> <span class="p">(!</span><span class="n">String</span><span class="p">.</span><span class="n">IsNullOrEmpty</span><span class="p">(</span><span class="n">namespaceName</span><span class="p">))</span></div><div class='line' id='LC5'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">{</span></div><div class='line' id='LC6'><span class="err">#</span><span class="p">&gt;</span></div><div class='line' id='LC7'><span class="cp">#region EF Generated Code //&lt;- right here</span></div><div class='line' id='LC8'><span class="k">namespace</span> <span class="err">&lt;#=</span><span class="nn">code.EscapeNamespace</span><span class="p">(</span><span class="n">namespaceName</span><span class="p">)</span><span class="err">#</span><span class="p">&gt;</span></div><div class='line' id='LC9'><span class="p">{</span></div><div class='line' id='LC10'><span class="p">&lt;</span><span class="err">#</span><span class="p">+</span></div><div class='line' id='LC11'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">PushIndent</span><span class="p">(</span><span class="n">CodeRegion</span><span class="p">.</span><span class="n">GetIndent</span><span class="p">(</span><span class="m">1</span><span class="p">));</span></div><div class='line' id='LC12'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC13'><span class="p">}</span></div><div class='line' id='LC14'><br/></div><div class='line' id='LC15'><br/></div><div class='line' id='LC16'><span class="k">void</span> <span class="nf">EndNamespace</span><span class="p">(</span><span class="kt">string</span> <span class="n">namespaceName</span><span class="p">)</span></div><div class='line' id='LC17'><span class="p">{</span></div><div class='line' id='LC18'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> <span class="p">(!</span><span class="n">String</span><span class="p">.</span><span class="n">IsNullOrEmpty</span><span class="p">(</span><span class="n">namespaceName</span><span class="p">))</span></div><div class='line' id='LC19'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">{</span></div><div class='line' id='LC20'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">PopIndent</span><span class="p">();</span></div><div class='line' id='LC21'><span class="err">#</span><span class="p">&gt;</span></div><div class='line' id='LC22'><span class="p">}</span></div><div class='line' id='LC23'><span class="cp">#endregion  //&lt;- and here</span></div><div class='line' id='LC24'><span class="p">&lt;</span><span class="err">#</span><span class="p">+</span></div><div class='line' id='LC25'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC26'><span class="p">}</span></div><div class='line' id='LC27'><br/></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/978348/f42bad71ac64cf0aeea660c38831e23da7b993f9/generator.cs" style="float:right;">view raw</a>
            <a href="https://gist.github.com/978348#file_generator.cs" style="float:right;margin-right:10px;color:#666">generator.cs</a>
            <a href="https://gist.github.com/978348">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<p>Then tell Resharper to simply skip checking anything that is within region &#8221;EF Generated Code&#8221; from ReSharper -&gt; Options -&gt; Generated Code</p>
<p>Done!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.isolated.se/2011/05/18/resharper-entity-framework-generated-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MVC3 Ajax partial view validation</title>
		<link>http://www.isolated.se/2011/05/05/mvc3-ajax-partial-view-validation/</link>
		<comments>http://www.isolated.se/2011/05/05/mvc3-ajax-partial-view-validation/#comments</comments>
		<pubDate>Thu, 05 May 2011 17:42:16 +0000</pubDate>
		<dc:creator>trouf</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[Programmering]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.isolated.se/?p=356</guid>
		<description><![CDATA[TweetRan into a wall of trouble after getting Ajax to work properly in my previous post. Turns out that validation rules are not applied to partial views loaded with Ajax (Even when using the provided Ajax.ActionLink helper). Thanks to this excellent blogpost http://xhalent.wordpress.com/2011/01/24/applying-unobtrusive-validation-to-dynamic-content/ i managed to work it out. But not until after bashing my [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.isolated.se/2011/05/05/mvc3-ajax-partial-view-validation/&via=Trouf&text=MVC3 Ajax partial view validation&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p>Ran into a wall of trouble after getting Ajax to work properly in my previous post. Turns out that validation rules are not applied to partial views loaded with Ajax (Even when using the provided Ajax.ActionLink helper). </p>
<p>Thanks to this excellent blogpost <a href="http://xhalent.wordpress.com/2011/01/24/applying-unobtrusive-validation-to-dynamic-content/">http://xhalent.wordpress.com/2011/01/24/applying-unobtrusive-validation-to-dynamic-content/</a> i managed to work it out. But not until after bashing my head against the wall until numb.</p>
<p>The main problem was not so much the actual validation scripts, it was pretty clear to me that the validation rules would have to be rebuilt after injecting new objects into the DOM, but the fact that MVC refused to acually render the  data-val / data-val-required properties for the elements that needed validating.</p>
<div id="gist-946460" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="n">@using</span> <span class="p">(</span><span class="n">Html</span><span class="p">.</span><span class="n">BeginForm</span><span class="p">(</span><span class="s">&quot;Create&quot;</span><span class="p">,</span> <span class="s">&quot;MyModel&quot;</span><span class="p">,</span> <span class="n">FormMethod</span><span class="p">.</span><span class="n">Post</span><span class="p">,</span> <span class="k">new</span> <span class="p">{</span> <span class="n">id</span> <span class="p">=</span> <span class="s">&quot;CreateForm&quot;</span> <span class="p">}))</span></div><div class='line' id='LC2'><span class="p">{</span></div><div class='line' id='LC3'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">@Html</span><span class="p">.</span><span class="n">ValidationSummary</span><span class="p">(</span><span class="k">true</span><span class="p">)</span></div><div class='line' id='LC4'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">&lt;</span><span class="n">fieldset</span><span class="p">&gt;</span></div><div class='line' id='LC5'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">&lt;</span><span class="n">legend</span><span class="p">&gt;</span><span class="n">MyModel</span><span class="p">&lt;/</span><span class="n">legend</span><span class="p">&gt;</span></div><div class='line' id='LC6'><br/></div><div class='line' id='LC7'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">&lt;</span><span class="n">div</span> <span class="n">class</span><span class="p">=</span><span class="s">&quot;editor-label&quot;</span><span class="p">&gt;</span>        </div><div class='line' id='LC8'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">@Html</span><span class="p">.</span><span class="n">LabelFor</span><span class="p">(</span><span class="n">model</span> <span class="p">=&gt;</span> <span class="n">model</span><span class="p">.</span><span class="n">Property</span><span class="p">)</span></div><div class='line' id='LC9'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">&lt;/</span><span class="n">div</span><span class="p">&gt;</span></div><div class='line' id='LC10'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">&lt;</span><span class="n">div</span> <span class="n">class</span><span class="p">=</span><span class="s">&quot;editor-field&quot;</span><span class="p">&gt;</span></div><div class='line' id='LC11'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">@Html</span><span class="p">.</span><span class="n">EditorFor</span><span class="p">(</span><span class="n">model</span> <span class="p">=&gt;</span> <span class="n">model</span><span class="p">.</span><span class="n">Property</span><span class="p">)</span></div><div class='line' id='LC12'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">@Html</span><span class="p">.</span><span class="n">ValidationMessageFor</span><span class="p">(</span><span class="n">model</span> <span class="p">=&gt;</span> <span class="n">model</span><span class="p">.</span><span class="n">Property</span><span class="p">)</span></div><div class='line' id='LC13'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">&lt;/</span><span class="n">div</span><span class="p">&gt;</span></div><div class='line' id='LC14'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">&lt;/</span><span class="n">fieldset</span><span class="p">&gt;</span></div><div class='line' id='LC15'><span class="p">}</span></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/946460/3cee65d0b178e4be492aa924d8e6fdae71fac479/beginform.cs" style="float:right;">view raw</a>
            <a href="https://gist.github.com/946460#file_beginform.cs" style="float:right;margin-right:10px;color:#666">beginform.cs</a>
            <a href="https://gist.github.com/946460">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<p>These properties are usually rendered by Html.EditorFor / ValidationMessageFor when used as in the example above.</p>
<p>This is how it should look:<br />
<div id="gist-946460" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="nt">&lt;input</span> <span class="na">class=</span><span class="s">&quot;text-box single-line&quot;</span> </div><div class='line' id='LC2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="na">data-val=</span><span class="s">&quot;true&quot;</span> </div><div class='line' id='LC3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="na">data-val-required=</span><span class="s">&quot;This field is required!&quot;</span> </div><div class='line' id='LC4'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="na">id=</span><span class="s">&quot;Property&quot;</span> </div><div class='line' id='LC5'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="na">name=</span><span class="s">&quot;Property&quot;</span> </div><div class='line' id='LC6'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="na">type=</span><span class="s">&quot;text&quot;</span> </div><div class='line' id='LC7'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="na">value=</span><span class="s">&quot;&quot;</span></div><div class='line' id='LC8'><span class="nt">/&gt;</span></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/946460/b5dd2f0224a48f6ca70729a4a57491c08c29cf35/proper.html" style="float:right;">view raw</a>
            <a href="https://gist.github.com/946460#file_proper.html" style="float:right;margin-right:10px;color:#666">proper.html</a>
            <a href="https://gist.github.com/946460">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>
</p>
<p>But when including a partial view through Ajax inside this outer form, the ability to use BeginForm inside that partial view is lost due to the fact that we can not have nested forms. And without BeginForm, no data-val properties <img src='http://www.isolated.se/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>The key to getting the partial view to render the properties was to wrap the contents like the following code snippet:<br />
<div id="gist-946460" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="n">@using</span><span class="p">(</span><span class="k">new</span> <span class="n">MvcForm</span><span class="p">(</span><span class="n">ViewContext</span><span class="p">))</span></div><div class='line' id='LC2'><span class="p">{</span></div><div class='line' id='LC3'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">&lt;</span><span class="n">div</span> <span class="n">class</span><span class="p">=</span><span class="s">&quot;editor-label&quot;</span><span class="p">&gt;</span></div><div class='line' id='LC4'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">@Html</span><span class="p">.</span><span class="n">LabelFor</span><span class="p">(</span><span class="n">model</span> <span class="p">=&gt;</span> <span class="n">model</span><span class="p">.</span><span class="n">Property</span><span class="p">)</span></div><div class='line' id='LC5'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">&lt;/</span><span class="n">div</span><span class="p">&gt;</span></div><div class='line' id='LC6'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">&lt;</span><span class="n">div</span> <span class="n">class</span><span class="p">=</span><span class="s">&quot;editor-field&quot;</span><span class="p">&gt;</span></div><div class='line' id='LC7'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">@Html</span><span class="p">.</span><span class="n">EditorFor</span><span class="p">(</span><span class="n">model</span> <span class="p">=&gt;</span> <span class="n">model</span><span class="p">.</span><span class="n">Property</span><span class="p">)</span></div><div class='line' id='LC8'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">@Html</span><span class="p">.</span><span class="n">ValidationMessageFor</span><span class="p">(</span><span class="n">model</span> <span class="p">=&gt;</span> <span class="n">model</span><span class="p">.</span><span class="n">Property</span><span class="p">)</span></div><div class='line' id='LC9'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">&lt;/</span><span class="n">div</span><span class="p">&gt;</span></div><div class='line' id='LC10'><br/></div><div class='line' id='LC11'><span class="p">}</span>    </div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/946460/292212684a1bb94191cb0630d9643168ccd8f24c/partial.cs" style="float:right;">view raw</a>
            <a href="https://gist.github.com/946460#file_partial.cs" style="float:right;margin-right:10px;color:#666">partial.cs</a>
            <a href="https://gist.github.com/946460">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>
</p>
<p>And then to get the validation going, call xhalent&#8217;s brilliant js-function after appending the results of the Ajax request to the DOM.<br />
<div id="gist-946460" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="nx">$</span><span class="p">(</span><span class="s1">&#39;#ajaxstuff&#39;</span><span class="p">).</span><span class="nx">ajaxLink</span><span class="p">({</span>              </div><div class='line' id='LC2'>&nbsp;&nbsp;<span class="nx">data</span><span class="o">:</span> <span class="p">{},</span></div><div class='line' id='LC3'>&nbsp;&nbsp;<span class="nx">success</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">data</span><span class="p">)</span> <span class="p">{</span>             </div><div class='line' id='LC4'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">$</span><span class="p">(</span><span class="s1">&#39;#ajaxdiv&#39;</span><span class="p">).</span><span class="nx">append</span><span class="p">(</span><span class="nx">data</span><span class="p">);</span></div><div class='line' id='LC5'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">$</span><span class="p">.</span><span class="nx">validator</span><span class="p">.</span><span class="nx">unobtrusive</span><span class="p">.</span><span class="nx">parseDynamicContent</span><span class="p">(</span><span class="s1">&#39;form&#39;</span><span class="p">);</span></div><div class='line' id='LC6'>&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC7'><span class="p">});</span></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/946460/555f8cd5119ea67e55f614add5af1c5798c944b2/js.js" style="float:right;">view raw</a>
            <a href="https://gist.github.com/946460#file_js.js" style="float:right;margin-right:10px;color:#666">js.js</a>
            <a href="https://gist.github.com/946460">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.isolated.se/2011/05/05/mvc3-ajax-partial-view-validation/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Simple and painless Ajax in MVC3</title>
		<link>http://www.isolated.se/2011/04/27/simple-and-painless-ajax-in-mvc3/</link>
		<comments>http://www.isolated.se/2011/04/27/simple-and-painless-ajax-in-mvc3/#comments</comments>
		<pubDate>Wed, 27 Apr 2011 17:06:09 +0000</pubDate>
		<dc:creator>trouf</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Hax]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[Programmering]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.isolated.se/?p=326</guid>
		<description><![CDATA[TweetEven though Microsoft really came through with MVC3 and added a lot of sweetness, I still find myself reluctant to use the provided Ajax-functionality. Here&#8217;s why: This approach is nice and simple, yes. But what if I don&#8217;t like having global javascript functions all over the place to handle the results of the action. It [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.isolated.se/2011/04/27/simple-and-painless-ajax-in-mvc3/&via=Trouf&text=Simple and painless Ajax in MVC3&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p>Even though Microsoft really came through with MVC3 and added a lot of sweetness, I still find myself reluctant to use the provided Ajax-functionality.</p>
<p>Here&#8217;s why:</p>
<div id="gist-944368" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="n">@Ajax</span><span class="p">.</span><span class="n">ActionLink</span><span class="p">(</span><span class="s">&quot;Hurf&quot;</span><span class="p">,</span> <span class="s">&quot;Durf&quot;</span><span class="p">,</span> <span class="s">&quot;Controllurf&quot;</span><span class="p">,</span> </div><div class='line' id='LC2'>&nbsp;&nbsp;<span class="k">new</span> <span class="p">{</span> <span class="n">param</span> <span class="p">=</span> <span class="n">somestuff</span> <span class="p">},</span> </div><div class='line' id='LC3'>&nbsp;&nbsp;<span class="k">new</span> <span class="n">AjaxOptions</span> <span class="p">{</span> </div><div class='line' id='LC4'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">HttpMethod</span> <span class="p">=</span> <span class="s">&quot;Post&quot;</span><span class="p">,</span> </div><div class='line' id='LC5'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">OnSuccess</span> <span class="p">=</span> <span class="s">&quot;Somejs&quot;</span> </div><div class='line' id='LC6'>&nbsp;&nbsp;<span class="p">})</span></div><div class='line' id='LC7'><br/></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/944368/df6bb8b490f31af5fb5d2e96d3c3446cf8a545c9/donotwant.cs" style="float:right;">view raw</a>
            <a href="https://gist.github.com/944368#file_donotwant.cs" style="float:right;margin-right:10px;color:#666">donotwant.cs</a>
            <a href="https://gist.github.com/944368">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<p>This approach is nice and simple, yes. But what if I don&#8217;t like having global javascript functions all over the place to handle the results of the action. It kind of pains me to see that I can use &#8221;unobtrusive&#8221; validation functionality in MVC3 but not unobtrusive Ajax handling. </p>
<p>This is solved by implementing the &#8221;ajaxification&#8221; of a normal Html.ActionLink in a separate javascript,<br />
such as proposed here <a href="http://stackoverflow.com/questions/4878127/mvc3-ajax-actionlink">http://stackoverflow.com/questions/4878127/mvc3-ajax-actionlink</a>. </p>
<p>I needed a more reusable way of doing this, but portable enough to be painlessly lifted to other projects and easy to use for other developers in the project. So i slapped together this jQuery plugin&#8230;</p>
<div id="gist-944368" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">$</span><span class="p">)</span> <span class="p">{</span> </div><div class='line' id='LC2'>&nbsp;&nbsp;<span class="cm">/**</span></div><div class='line' id='LC3'><span class="cm">    * Ajaxify MVC3 ActionLinks</span></div><div class='line' id='LC4'><span class="cm">    *</span></div><div class='line' id='LC5'><span class="cm">    * @params {  </span></div><div class='line' id='LC6'><span class="cm">    *   *success : result handling function(data, textStatus, jqXHR)</span></div><div class='line' id='LC7'><span class="cm">    *   *data : Data to send (accepts json data as default)</span></div><div class='line' id='LC8'><span class="cm">    *    verb : Http verb to use (&#39;POST&#39;, &#39;GET&#39;, ..) Defaults to &#39;POST&#39;</span></div><div class='line' id='LC9'><span class="cm">    *    type : dataType expected from server, Defaults to &#39;html&#39;</span></div><div class='line' id='LC10'><span class="cm">    *    contentType : contentType sent TO server Defaults to &#39;application/json&#39;    </span></div><div class='line' id='LC11'><span class="cm">    *    error : error handling function(jqXHR, textStatus, errorThrown)</span></div><div class='line' id='LC12'><span class="cm">    * }</span></div><div class='line' id='LC13'><span class="cm">    *  </span></div><div class='line' id='LC14'><span class="cm">    *</span></div><div class='line' id='LC15'><span class="cm">    * Usage: </span></div><div class='line' id='LC16'><span class="cm">    * $(&#39;#ajaxstuff&#39;).ajaxLink({</span></div><div class='line' id='LC17'><span class="cm">    *    data: { foo: &#39;Fooinator&#39; },</span></div><div class='line' id='LC18'><span class="cm">    *    success: function (data) { console.log(data); }</span></div><div class='line' id='LC19'><span class="cm">    * });</span></div><div class='line' id='LC20'><span class="cm">    *</span></div><div class='line' id='LC21'><span class="cm">    */</span></div><div class='line' id='LC22'>&nbsp;&nbsp;<span class="nx">$</span><span class="p">.</span><span class="nx">fn</span><span class="p">.</span><span class="nx">ajaxLink</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">params</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC23'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">params</span> <span class="o">||</span> <span class="o">!</span><span class="nx">params</span><span class="p">.</span><span class="nx">data</span> <span class="o">||</span> <span class="o">!</span><span class="nx">params</span><span class="p">.</span><span class="nx">success</span><span class="p">)</span> </div><div class='line' id='LC24'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">throw</span> <span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">&#39;ajaxLink parameters missing&#39;</span><span class="p">);</span></div><div class='line' id='LC25'><br/></div><div class='line' id='LC26'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="c1">//this is equal to $(this) in the current scope</span></div><div class='line' id='LC27'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="c1">//save this reference for use inside nested scopes</span></div><div class='line' id='LC28'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="kd">var</span> <span class="nx">link</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span></div><div class='line' id='LC29'><br/></div><div class='line' id='LC30'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="c1">//Defaults to type:html, verb:POST, </span></div><div class='line' id='LC31'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="c1">//content: &#39;application/json&#39;</span></div><div class='line' id='LC32'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">verb</span> <span class="o">=</span> <span class="nx">params</span><span class="p">.</span><span class="nx">verb</span> <span class="o">||</span> <span class="s1">&#39;POST&#39;</span><span class="p">,</span></div><div class='line' id='LC33'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">type</span> <span class="o">=</span> <span class="nx">params</span><span class="p">.</span><span class="nx">type</span> <span class="o">||</span> <span class="s1">&#39;html&#39;</span><span class="p">,</span>            </div><div class='line' id='LC34'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">contentType</span> <span class="o">=</span> <span class="nx">params</span><span class="p">.</span><span class="nx">contentType</span> <span class="o">||</span> <span class="s1">&#39;application/json&#39;</span><span class="p">,</span></div><div class='line' id='LC35'><br/></div><div class='line' id='LC36'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="c1">//If contentType is set, do not assume json</span></div><div class='line' id='LC37'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">data</span> <span class="o">=</span> <span class="p">(</span><span class="nx">params</span><span class="p">.</span><span class="nx">contentType</span> <span class="o">?</span> <span class="nx">params</span><span class="p">.</span><span class="nx">data</span> <span class="o">:</span> <span class="nx">JSON</span><span class="p">.</span><span class="nx">stringify</span><span class="p">(</span><span class="nx">params</span><span class="p">.</span><span class="nx">data</span><span class="p">));</span></div><div class='line' id='LC38'><br/></div><div class='line' id='LC39'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="c1">//Attach eventhandler to (this) link</span></div><div class='line' id='LC40'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">link</span><span class="p">.</span><span class="nx">click</span><span class="p">(</span><span class="kd">function</span> <span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC41'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">$</span><span class="p">.</span><span class="nx">ajax</span><span class="p">({</span></div><div class='line' id='LC42'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">url</span><span class="o">:</span> <span class="nx">params</span><span class="p">.</span><span class="nx">url</span> <span class="o">||</span> <span class="nx">link</span><span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s1">&#39;href&#39;</span><span class="p">),</span></div><div class='line' id='LC43'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">type</span><span class="o">:</span> <span class="nx">verb</span><span class="p">,</span></div><div class='line' id='LC44'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">data</span><span class="o">:</span> <span class="nx">data</span><span class="p">,</span></div><div class='line' id='LC45'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">contentType</span><span class="o">:</span> <span class="nx">contentType</span><span class="p">,</span></div><div class='line' id='LC46'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">dataType</span><span class="o">:</span> <span class="nx">type</span><span class="p">,</span></div><div class='line' id='LC47'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">success</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">result</span><span class="p">,</span> <span class="nx">status</span><span class="p">,</span> <span class="nx">xhr</span><span class="p">)</span> <span class="p">{</span>                    </div><div class='line' id='LC48'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">params</span><span class="p">.</span><span class="nx">success</span><span class="p">(</span><span class="nx">result</span><span class="p">,</span> <span class="nx">status</span><span class="p">,</span> <span class="nx">xhr</span><span class="p">);</span>                    </div><div class='line' id='LC49'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">},</span></div><div class='line' id='LC50'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">error</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">xhr</span><span class="p">,</span> <span class="nx">status</span><span class="p">,</span> <span class="nx">error</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC51'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> <span class="p">(</span><span class="nx">params</span><span class="p">.</span><span class="nx">error</span><span class="p">)</span> <span class="nx">params</span><span class="p">.</span><span class="nx">error</span><span class="p">(</span><span class="nx">xhr</span><span class="p">,</span> <span class="nx">status</span><span class="p">,</span> <span class="nx">error</span><span class="p">);</span></div><div class='line' id='LC52'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC53'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">});</span></div><div class='line' id='LC54'><br/></div><div class='line' id='LC55'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="c1">//Stop the click from actually posting the page</span></div><div class='line' id='LC56'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC57'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">});</span></div><div class='line' id='LC58'><br/></div><div class='line' id='LC59'>&nbsp;&nbsp;&nbsp;</div><div class='line' id='LC60'>&nbsp;&nbsp;<span class="p">};</span></div><div class='line' id='LC61'><br/></div><div class='line' id='LC62'><span class="p">})(</span><span class="nx">jQuery</span><span class="p">);</span></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/944368/3eeb69fe5ddaf48027cd11186dd5f3d1c3986ecd/ajaxlink.js" style="float:right;">view raw</a>
            <a href="https://gist.github.com/944368#file_ajaxlink.js" style="float:right;margin-right:10px;color:#666">ajaxlink.js</a>
            <a href="https://gist.github.com/944368">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<p>Using it is quite straightforward, or at least it seems to me at the time of writing this.</p>
<p>First, we create the controller action that we want to call with the Ajax link:</p>
<div id="gist-944368" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="k">public</span> <span class="n">ActionResult</span> <span class="nf">AjaxStuff</span><span class="p">(</span><span class="kt">object</span> <span class="n">foo</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2'>&nbsp;&nbsp;<span class="kt">var</span> <span class="n">stuff</span> <span class="p">=</span> <span class="k">new</span> <span class="p">{</span> <span class="n">Name</span> <span class="p">=</span> <span class="s">&quot;Stuff&quot;</span> <span class="p">+</span> <span class="n">foo</span> <span class="p">};</span></div><div class='line' id='LC3'><br/></div><div class='line' id='LC4'>&nbsp;&nbsp;<span class="n">ViewBag</span><span class="p">.</span><span class="n">Stuff</span> <span class="p">=</span> <span class="n">stuff</span><span class="p">.</span><span class="n">Name</span><span class="p">;</span></div><div class='line' id='LC5'><br/></div><div class='line' id='LC6'>&nbsp;&nbsp;<span class="k">return</span> <span class="nf">View</span><span class="p">();</span></div><div class='line' id='LC7'><span class="p">}</span></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/944368/d308bda463d5c660435632e95b16b56a00f59a3e/Somecontroller.cs" style="float:right;">view raw</a>
            <a href="https://gist.github.com/944368#file_somecontroller.cs" style="float:right;margin-right:10px;color:#666">Somecontroller.cs</a>
            <a href="https://gist.github.com/944368">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<p>This action returns a view, so a view will have to be created as well. A simple plain text partial view will do fine. Be sure not to load any layout for this though. The action could have returned JSON as well,<br />
as both cases can be handled by the jQuery plugin.</p>
<p>With a controller action and a view in place, we create the ActionLink in the view where we need the Ajax functionality:</p>
<div id="gist-944368" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'>@Html.ActionLink(&quot;Click me!&quot;, &quot;AjaxStuff&quot;, null, </div><div class='line' id='LC2'>&nbsp;&nbsp;new { id = &quot;ajaxstuff&quot; })    </div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/944368/33ae12dc5f4eb9cdd83129dbaef67b2827bb6e70/AjaxStuff.cshtml" style="float:right;">view raw</a>
            <a href="https://gist.github.com/944368#file_ajax_stuff.cshtml" style="float:right;margin-right:10px;color:#666">AjaxStuff.cshtml</a>
            <a href="https://gist.github.com/944368">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<p>There we go!, now we can declare all our events and handlers well outside the view layout as demonstrated in the following gist:</p>
<div id="gist-944368" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="nx">$</span><span class="p">(</span><span class="s1">&#39;#ajaxstuff&#39;</span><span class="p">).</span><span class="nx">ajaxLink</span><span class="p">({</span>              </div><div class='line' id='LC2'>&nbsp;&nbsp;<span class="nx">data</span><span class="o">:</span> <span class="p">{</span> <span class="nx">foo</span><span class="o">:</span> <span class="s1">&#39;Fooinator&#39;</span> <span class="p">},</span></div><div class='line' id='LC3'>&nbsp;&nbsp;<span class="nx">success</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">data</span><span class="p">)</span> <span class="p">{</span>             </div><div class='line' id='LC4'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">$</span><span class="p">(</span><span class="s1">&#39;#ajaxdiv&#39;</span><span class="p">).</span><span class="nx">html</span><span class="p">(</span><span class="nx">data</span><span class="p">);</span></div><div class='line' id='LC5'>&nbsp;&nbsp;<span class="p">}</span>         </div><div class='line' id='LC6'><span class="p">});</span></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/944368/054b464b79f51e938758b49c0381098619da1821/usage.js" style="float:right;">view raw</a>
            <a href="https://gist.github.com/944368#file_usage.js" style="float:right;margin-right:10px;color:#666">usage.js</a>
            <a href="https://gist.github.com/944368">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://www.isolated.se/2011/04/27/simple-and-painless-ajax-in-mvc3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhoneOS : Arkivera egna objekt</title>
		<link>http://www.isolated.se/2010/03/12/iphoneos-arkivera-egna-objekt/</link>
		<comments>http://www.isolated.se/2010/03/12/iphoneos-arkivera-egna-objekt/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 08:10:24 +0000</pubDate>
		<dc:creator>trouf</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Programmering]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Obj-C]]></category>

		<guid isPermaLink="false">http://www.isolated.se/?p=176</guid>
		<description><![CDATA[TweetLåt oss anta att vi vill designa en applikation som innehåller ett antal egendefinierade objekt. Dessa behöver vi spara på något sätt, t.ex. när användaren stänger av applikationen eller om användaren skulle få ett telefonsamtal under tiden som applikationen körs.  Utifall att detta händer vill vi att applikationens variabler ska bevaras, och att även våra [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.isolated.se/2010/03/12/iphoneos-arkivera-egna-objekt/&via=Trouf&text=iPhoneOS : Arkivera egna objekt&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p>Låt oss anta att vi vill designa en applikation som innehåller ett antal egendefinierade objekt.</p>
<p>Dessa behöver vi spara på något sätt, t.ex. när användaren stänger av applikationen eller om användaren skulle få ett telefonsamtal under tiden som applikationen körs.  Utifall att detta händer vill vi att applikationens variabler ska bevaras, och att även våra egendefinierade objekt ska sparas på samma sätt som andra inställningar sparas.</p>
<p>Att spara användardata är en återkommande punkt i de flesta iPhone-applikationer, och jag brukar använda NSUserDefaults för att på ett enkelt sätt spara och hämta data.</p>
<p>Data sparas på följande sätt</p>
<pre class="brush: objc; light: true; title: ; notranslate">

NSInteger intToSave = 23;

NSUserDefaults *preferences = [NSUserDefaults standardUserDefaults];

[preferences setInteger:intToSave forKey:@&quot;keyToSavedInt&quot;];
</pre>
<p>Och hämtas på följande sätt&#8230;</p>
<pre class="brush: objc; light: true; title: ; notranslate">

NSInteger intToRetrieve;

NSUserDefaults *preferences = [NSUserDefaults standardUserDefaults];

intToRetrieve = [preferences integerForKey:@&quot;keyToSavedInt&quot;];
</pre>
<p>I min mening det absolut smidigaste sättet att hantera användardata på&#8230; det vill säga sålänge som man bara sparar Obj-C datatyper. Men om man däremot vill spara en array av egendefinierade typer, ja då blir det lite mindre smidigt.</p>
<p>Extra smidigt blir det om det dessutom är en hierarki av objekt.</p>
<p>Säg att vi har en applikation som ska hålla koll på lastbilar och deras last.</p>
<p>Låt oss använda en NSMutableArray för att hålla koll på alla lastbilar, och sedan definiera en klass för lastbilar, och en klass för last.</p>
<p>En näst intill pinsamt förenklad implementation av klassen Lastbil följer här.</p>
<p>Lastbil.h</p>
<pre class="brush: objc; light: true; title: ; notranslate">
#import &lt;Foundation/Foundation.h&gt;
#import &quot;Last.h&quot;

@interface Lastbil : NSObject {
	Last *last;
}

@property(nonatomic,retain) Last *last;

@end
</pre>
<p>Lastbil.m</p>
<pre class="brush: objc; light: true; title: ; notranslate">
#import &quot;Lastbil.h&quot;

@implementation Lastbil
     @synthesize last

-(id)init
{
    if (self = [super init])
    {
     //Init
		}

    return self;
}

- (void)dealloc
{
    [self.last release];
    [super dealloc];
}

@end
</pre>
<p>Och så lasten&#8230;</p>
<p>Last.h</p>
<pre class="brush: objc; light: true; title: ; notranslate">
#import &lt;Foundation/Foundation.h&gt;

@interface Last : NSObject {
	NSString *beskrivning;
}

@property(nonatomic,copy) NSString *beskrivning;

@end
</pre>
<p>Last.m</p>
<pre class="brush: objc; light: true; title: ; notranslate">
#import &quot;Last.h&quot;

@implementation Last

@synthesize beskrivning;

- (id)initWithBeskrivning: (NSString*)b
{
	self.beskrivning = b;
	return self;
}

- (void)dealloc
{
    [self.beskrivning release];
    [super dealloc];
}

@end
</pre>
<p>Ja nåt i den stilen. Blind kod och en knapphändig implementation, precis som det ska va.</p>
<p>Då är själva objekten deklarerade, det som återstår är att.. ja.. använda dem.</p>
<pre class="brush: objc; light: true; title: ; notranslate">
NSMutableArray *lastbilar = [[NSMutableArray alloc] init];

Lastbil *lastbil1 = [[Lastbil alloc] init];
Lastbil *lastbil2 = [[Lastbil alloc] init];

lastbil1.last = [[Last alloc] initWithBeskrivning:@&quot;Fisk&quot;];
lastbil2.last = [[Last alloc] initWithBeskrivning:@&quot;Kött&quot;];

[lastbilar addObject:lastbil1];
[lastbilar addObject:lastbil2];

[lastbilar release];
</pre>
<p>Då har vi en datastruktur som innehåller två lastbilar, den ena med fisk i lasten och den andra med gott, mört kött i lasten.</p>
<p>Om vi nu vill spara denna datastruktur till NSUserDefaults så skulle vi kunna göra det genom att först arkivera den till ett NSData-objekt med NSKeyedArchiver..</p>
<pre class="brush: objc; light: true; title: ; notranslate">
NSData *lastbilData = [NSKeyedArchiver archivedDataWithRootObject:lastbilar];
</pre>
<p>MEN detta är inte rumba, och kommer inte att fungera då våra egendefinierade objekt (Lastbil, Last) inte implementerar <a href="http://developer.apple.com/mac/library/documentation/cocoa/Reference/Foundation/Protocols/NSCoding_Protocol/index.html" target="_self">NSCoding protokollet</a>. Alla objekt måste, om de ska kunna arkiveras, implementera metoder för hur de ska arkiveras och hur de ska avarkiveras. Enligt NSCoding måste alltså våra objekt implementera följande metoder.</p>
<pre class="brush: objc; light: true; title: ; notranslate">
- (void)encodeWithCoder:(NSCoder *)encoder
- (id)initWithCoder:(NSCoder *)decoder
</pre>
<p>Så låt oss implementera dessa metoder först i Lastbil.m. Det vi vill göra är att specifiera vilka av objektets egenskaper som ska arkiveras, och under vilka nycklas värdena ska arkiveras, detsamma för avarkivering.</p>
<pre class="brush: objc; light: true; title: ; notranslate">
- (void)encodeWithCoder:(NSCoder *)coder;
{
	[coder encodeObject:self.last forKey:@&quot;last&quot;];

}

- (id)initWithCoder:(NSCoder *)coder;
{
     if (self = [super init])
    {
		self.last = [coder decodeObjectForKey:@&quot;last&quot;];

	}
    return self;
}
</pre>
<p>&#8230;och sedan i Last.m</p>
<pre class="brush: objc; light: true; title: ; notranslate">
- (void)encodeWithCoder:(NSCoder *)coder;
{
	[coder encodeObject:self.beskrivning forKey:@&quot;beskrivning&quot;];

}

- (id)initWithCoder:(NSCoder *)coder;
{
     if (self = [super init])
    {
		self.beskrivning = [coder decodeObjectForKey:@&quot;beskrivning&quot;];

	}
    return self;
}
</pre>
<p>That&#8217;s pretty much it.</p>
<p>Nu går det bra att arkivera hela objekthierarkin, eftersom alla objekt i hierarkin kan arkiveras (NSCoder).</p>
<pre class="brush: objc; light: true; title: ; notranslate">
NSData *lastbilData = [NSKeyedArchiver archivedDataWithRootObject:lastbilar];
</pre>
<p>Och ett objekt av typen NSData går givetvis att spara till NSUserDefaults precis som motsvarande enkla datatyper.</p>
<pre class="brush: objc; light: true; title: ; notranslate">
NSUserDefaults *preferences = [NSUserDefaults standardUserDefaults];

NSData *lastbilData = [NSKeyedArchiver archivedDataWithRootObject:lastbilar];

[preferences setObject:lastbilData forKey:@&quot;Lastbilar&quot;];
</pre>
<p>Och går att läsa tillbaka, med minimal ansträngning.</p>
<pre class="brush: objc; light: true; title: ; notranslate">
NSUserDefaults *preferences = [NSUserDefaults standardUserDefaults];

NSData *lastbilData = [preferences objectForKey:@&quot;Lastbilar&quot;];

	if (lastbilData != nil)
	{
		NSArray *gamlaLastbilar = [NSKeyedUnarchiver unarchiveObjectWithData:lastbilData];

			if (gamlaLastbilar != nil)
			{
				//Presentera information
			}
	}
</pre>
<p>Och så gör man alltså för att arkivera sina egna objekt!</p>
<p>Andra bloggar om: <a href="http://bloggar.se/om/iphone" rel="tag">iphone</a>, <a href="http://bloggar.se/om/apple" rel="tag">apple</a>, <a href="http://bloggar.se/om/programmering" rel="tag"> programmering</a>, <a href="http://bloggar.se/om/xcode" rel="tag"> xcode</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.isolated.se/2010/03/12/iphoneos-arkivera-egna-objekt/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Between The Buried And Me &#8211; The Great Misdirect</title>
		<link>http://www.isolated.se/2010/03/09/between-the-buried-and-me-the-great-misdirect/</link>
		<comments>http://www.isolated.se/2010/03/09/between-the-buried-and-me-the-great-misdirect/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 13:35:26 +0000</pubDate>
		<dc:creator>trouf</dc:creator>
				<category><![CDATA[Gitarr]]></category>
		<category><![CDATA[Musik]]></category>
		<category><![CDATA[Recension]]></category>
		<category><![CDATA[BTBAM]]></category>

		<guid isPermaLink="false">http://www.isolated.se/?p=243</guid>
		<description><![CDATA[TweetDet är nästan obehagligt att lyssna på en ny skiva av BTBAM efter Alaska + Colors som ju varit lyft på lyft. Om jag för ett år sen hade fått välja en skiva som skulle vara den enda skivan jag fick lyssna på resten av mitt liv så hade det nog blivit Colors. Den betyder så [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.isolated.se/2010/03/09/between-the-buried-and-me-the-great-misdirect/&via=Trouf&text=Between The Buried And Me - The Great Misdirect&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p><a href="http://www.isolated.se/wp-content/uploads/2010/03/TheGreatMisdirectCover.png"><img class="alignleft size-medium wp-image-248" title="TheGreatMisdirectCover" src="http://www.isolated.se/wp-content/uploads/2010/03/TheGreatMisdirectCover-300x300.jpg" alt="" width="300" height="300" /></a>Det är nästan obehagligt att lyssna på en ny skiva av BTBAM efter <a href="http://open.spotify.com/album/6dEp3c6qUY9RXPiTfQ1Vcg">Alaska</a> + <a href="http://open.spotify.com/album/7eGmyzWSjjpZopTzd6nfJp">Colors</a> som ju varit lyft på lyft. Om jag för ett år sen hade fått välja en skiva som skulle vara den enda skivan jag fick lyssna på resten av mitt liv så hade det nog blivit Colors. Den betyder så oerhört mycket för mig, det är så mycket minnen knutna till just den perioden i mitt liv så det gör ont att ens behöva tänka tanken &#8221;What if?&#8221;. Vad i hela världen ska jag ta mig till om The Great Misdirect visar sig vara BTBAMs svar på The Human Abstract &#8211; Midheaven.</p>
<p>Jag brukar bete mig som en 5-åring när det gäller min favoritmusik. Det räcker med en dålig skiva för att jag ska bli bitter och börja göra kirurgiska ingrepp i mina playlists för att radera alla spår av den skyldiga artisten, lite som att göra slut. Men allting har sin tid, allting börjar och tar också oundvikligen slut så det är väl lika bra att ta tjuren vid hornen och lyssna på skivan medan öronen fortfarande fungerar.</p>
<p>Det är två saker som jag tänker vara extra uppmärksam på med tanke på tidigare album.</p>
<p>Främst så är det den tekniska aspekten av musiken. Colors var en ren lektion i musikteori som visar exakt var skåpet ska stå för progressiv musik. Det laboreras med allt! Resonans, dissonans, tonartsbyten, genreövergångar, takter och ja det mesta. Colors ligger för mig på samma nivå som Beethoven vad gäller musikalitet, och det sätter ju en del press på The Great Misdirect.</p>
<p>Sedan albumets upplägg, där Colors var på gränsen till för långa låtar, medan Alaska precis tangerar den låtlängd som jag tycker är acceptabel för ett album. Låtarna får inte bli för långa i min mening. Jag vill ha definition mellan spåren annars blir ju albumet bara en enda röra.</p>
<p>Jag brukar vara den som lyssnar mer på texter än på musik, men på senare tid märker jag att det är varken det ena eller det andra som får mig att gilla en låt. Utan det är balansen mellan innehåll/musik som gör att det blir bra, och hur texten framförs, alltså rytmen i sången tillsammans med rytmen i musiken. Speciellt i denna typen av musik där komplexiteten är så pass hög. Enklare musik följer enklare regler.</p>
<p>Ok enough, dags att dyka in i detta dimhöjda, mystiska album. Förstaspåret är just det, mystiskt. Det bygger upp en förväntning om något nytt. En stilla gitarr och en sorgsen sång. En stämma blir två på ett nästan matematiskt beräknat sätt. Trummor rullar över ljudlandskapet och fångas upp av en dansande baslinje. Allt på sin plats. Ordning och reda. Det känns lite för statiskt för att vara BTBAM, väldigt mörkt och väldigt behärskat.</p>
<p>Man undrar när det ska explodera, men det dröjer, för andraspåret tar vid innan någon verklig explosion inträffar och här känner vi igen ett av de mest klassiska elementen i BTBAMs musik. Det vill säga de ständigt föränderliga riff som blir lite av ett tveeggat svärd. Dels gör det ju musiken intressant, för det händer alltid något nytt. Men samtidigt så blir det ibland för lite av det goda, man fastnar för ett visst riff, man hinner precis uppskatta en passage och vips så är den borta och ersatt med något annat. Lite av dilemmat med progressiv musik, när den når en sådan komplexitet att den snarare beter sig som en livsform. Lätt fånget och lätt förgånget.</p>
<p>Hela skivan präglas av just denna föränderlighet. Inget är detsamma i mer än 30 sekunder och det tar lång tid att lyssna in sig. Man skulle kunna säga att man behöver lära sig skivan utantill för att kunna uppskatta den, och det kan ju kännas som en last, men för mig så är belöningen i slutet helt klart värd det.</p>
<p>Det mesta känns igen från Colors, och jag tycker snarare att The Great Misdirect känns som en förängning av Colors. Det är en hel del riff som återkommer, liknande skalor och liknande ackordföljder, men med lite spännande tillägg. Jag hör en häst gnägga, jag hör industriella effekter, jag hör en ökad användning av syntheffekter, piano, blåsinstrument, bongotrummor&#8230; ja listan kan göras mycket längre än så. Vid flera tillfällen känns det tyvärr som om det är lite för mycket. Om man till varje pris måste producera något som verkligen är progressivt, ja då är väl ett hästgnägg det givna ljudet, men som lyssnare behöver man ibland andrum emellan attackerna av progressiva element. De första 3 lyssningarna av albumet var verkligen påfrestande, rent uttröttande.</p>
<p>Det spår som enligt mig sticker ut mest är <a href="http://open.spotify.com/track/59ZvmF6izKUp28dzqp6tc2">&#8221;Desert Of Song&#8221;</a>. Jag var mest förvånad över att kunna lyssna igenom ett helt spår som behåller samma tema, och som håller sig inom tydligt definierade ramar. Jag får massiva Opeth-vibbar av denna låt, och det känns helt rätt. Definitivt ett tema som jag skulle vilja höra mer av från BTBAM.</p>
<p>Sen är det ju det där med långa spår. <a href="http://open.spotify.com/track/5ybGbKgnxhV1nhjTkgrjod">&#8221;Swim To The Moon&#8221;</a> klockar in på 17 minuter och 54 sekunder vilket är lite väl långt, men det är också ett av skivans bästa spår enligt mig. Vi känner igen de typiska skalorna, men här får vi också smaka lite på en massiv crossover mellan det mesta. Min favoritpassage är helt klart 6:40 in där bongotrummor, horn, visselpipor, gitarrer och growl möts i ett av de absolut galnaste breakdowns på denna sida av merkurius.</p>
<p>Det måste sägas att detta är en oerhört &#8221;svår&#8221; skiva som kräver väldigt mycket av lyssnaren och att det framför allt är en gitarr-skiva. Det vill säga att om man gillar gitarr och förstår vad som krävs för att skapa denna typen av musik, då har man en tendens att lyssna på ett annat sätt, på ett mer respektfullt sätt.</p>
<p>Och så till slutsatsen,</p>
<p>Detta är Paul Waggoner &amp; co. i sin rätta miljö. Det finns många musiker som är sanslöst bra, snabba och tekniska men i min mening så är detta album ytterligare ett bevis på inte bara fingerfärdighet av astronomiska mått, utan även musikalitet som ju är så viktigt. Det måste ju låta bra också. För mig är detta BTBAMs svåraste album hittils, och jag brottas med den emellanåt överdrivna progressiva sidan. Vissa spår känns som en enda lång uppladdning inför en explosion som aldrig kommer, och jag känner mig ibland besviken över den slutgiltiga musikaliska destinationen. Samtidigt är det en vanesak. The Great Misdirect är ett album som växer ju mer man lyssnar på det och som har en oändlig potential som endast begränsas av lyssnarens fantasi och uthållighet. En skattkista av gyllene toner med ett ordentligt lås.</p>
<p>Jag tycker dock att spåren är för långa, och hoppas att det inte är en trend för kommande album. Isåfall kommer nästa album ha 3 spår på 20 minuter vardera och nästnästa album kommer vara ett enda spår på 60 minuter. Please don&#8217;t.</p>
<p>Det råder ingen tvekan om att BTBAM kan leverera upp till förväntningar även om att försöka leva upp till Colors måste anses vara en omöjlighet. Jag tycker detta är ett bra album som tar vid där Colors slutar och fortsätter den berättelsen. Det jag gillar främst är att The Great Misdirect öppnar upp en hel del nya spår för BTBAM, och det ska bli spännande att se vad vi får höra härnäst.</p>
<p>Om den lilla musikfén uppenbarade sig för mig och gav mig en musikönskning, skulle jag önska ett projekt med Paul Waggoner och A.J. Minette sida vid sida. Det vore nästan värt en njure.</p>
<p>Avslutar med <a href="http://open.spotify.com/track/7oFef8SrrKoLb8TxgF5Dtq">Selkies</a> för lite nostalgi.</p>
<p>Andra bloggar om: <a href="http://bloggar.se/om/between+the+buried+and+me" rel="tag">between the buried and me</a>, <a href="http://bloggar.se/om/musik" rel="tag"> musik</a>, <a href="http://bloggar.se/om/recension" rel="tag"> recension</a>, <a href="http://bloggar.se/om/colors" rel="tag"> colors</a>, <a href="http://bloggar.se/om/the+great+misdirect" rel="tag"> the great misdirect</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.isolated.se/2010/03/09/between-the-buried-and-me-the-great-misdirect/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NOFX &#8211; Coaster</title>
		<link>http://www.isolated.se/2010/03/09/nofx-coaster/</link>
		<comments>http://www.isolated.se/2010/03/09/nofx-coaster/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 09:07:26 +0000</pubDate>
		<dc:creator>trouf</dc:creator>
				<category><![CDATA[Musik]]></category>
		<category><![CDATA[Recension]]></category>
		<category><![CDATA[NOFX]]></category>
		<category><![CDATA[Punk]]></category>

		<guid isPermaLink="false">http://www.isolated.se/?p=215</guid>
		<description><![CDATA[TweetWaaah! &#8221;NY&#8221; skiva av feta Micke å grabbarna i örat. Har varit lite väck och borta det senaste året, vilken nog kan ses som helt normalt då en blev två och två blev tre snabbare än du kan lista ut vad det innebär. Ja det är attityd, för det ska recenseras punk, och då måste [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.isolated.se/2010/03/09/nofx-coaster/&via=Trouf&text=NOFX - Coaster&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p>Waaah!</p>
<p><a href="http://www.isolated.se/wp-content/uploads/2010/03/NOFX_COASTER_CMYK_SQUARE-e1268063229654.jpg"><img class="size-medium wp-image-217 alignright" title="NOFX_coaster" src="http://www.isolated.se/wp-content/uploads/2010/03/NOFX_COASTER_CMYK_SQUARE-300x300.jpg" alt="oj va fiffigt omslag" width="300" height="300" /></a></p>
<p>&#8221;NY&#8221; skiva av feta Micke å grabbarna i örat. Har varit lite väck och borta det senaste året, vilken nog kan ses som helt normalt då en blev två och två blev tre snabbare än du kan lista ut vad det innebär. Ja det är attityd, för det ska recenseras punk, och då måste man göra det med attityd. Hur fan ska det annars gå till?</p>
<p>Till objektet i fråga då. Ny skiva från vid det här laget legendariska NOFX, och frågan på min och alla andras läppar är ju då: Är det värt att lyssna på?</p>
<p>Det ska sägas att sedan jag recenserade förra skivan (Wolves) så har jag uppfyllt ett av mina livsmål, vilket var att se Fat Mike live och knappt överleva. Det är nu alltså gjort, och även om det är en berättelse i sig så kan jag hinta om att det var sjukt grymt och en av de absolut bästa om inte den bästa konserten jag någonsin varit på, och då har jag sett en och annan och en tredje.</p>
<p>Det  är mycket förväntningar på ett skivsläpp som detta, oerhört mycket förväntningar men det börjar också oerhört bra. Då syftar jag främst på omslaget till skivan. En nonchalant gliring åt vem? Åt mig som skivköpare känns det som. Åh tack, jag har precis betalat en kvarts timlön för ett drinkunderlägg, och herrarna har varit goda nog att inkludera lite musik på köpet om det vore så att jag vill ta en paus i mitt drickande av billig Amerikansk whiskey. Men det är bra, punk är attityd så det gör inget om det känns som jag blir idiotförklarad, det är snarare hedrande.</p>
<p>Det är med ivriga fingrar jag letar efter playknappen för att komma igång och suga i mig lite av vad som enligt backspegeln bör vara ett av de bästa skivsläppen 09, och det tar ungefär 7 sekunder av första spåret att inse att denhär skivan inte riktigt är som alla andra.</p>
<p>Det är fortfarande samma skarpa texter, samma ironi, samma känsla i budskapet och tyvärr samma budskap. Men även om orden som levereras är något som vi antagligen redan hört så levereras de på ett snyggt sätt och det som sticker ut direkt är det rena ljudet. Det är ett annat tempo på Coaster, det känns lite som ett flygplan som kommit upp på marschhöjd och slår av motorerna lite för att glida och spara bränsle. Men är det inte lika skönt att flyga även om inte motorerna går på max? Detta är nya NOFX, det är Fat Mike och grabbarna nyktra i frack och fluga med välstämda instrument och glimten i ögat.</p>
<p>Efter tre ganska mediokra spår är det första spåret som fastnar på min trumhinna  &#8221;My Orphan Year&#8221;. Främst eftersom jag tycker att hela NOFX utveckling destillerat till en och samma låt kan representeras av just denna låt. Den öppnar lugnt med ett harmoniskt riff, och vi som lyssnare vet redan att snart kommer Erik och lägger ner ett såntdär Erik-beat som får en att börja trumma på skrivbordet och bara vänta på att låten ska lyftas till högan sky av en stadig gitarrmatta innan Fat Mike gör sin grej. Och han gör den bra. Det är långt ifrån alla som kan leverera en berättelse om hur det känns att förlora båda sina föräldrar, och samtidigt förmedla en känsla som inget annat band i denna genre kan. På knappt tre minuter gick jag från glad skrivbordstrummis till ledsen och föräldralös och känslan sitter i nästan lite för länge.</p>
<p>Efter en sån låt blir givetvis efterföljande låtar lidande. Jag hör lite kritik mot kristendomen, lite skämt om lesbiska kvinnor med ishockeyfrisyr som nästan lyckas lyfta mitt humör. Bör tilläggas att Fat Mike har fått mycket skit från gaylobbyn för &#8221;Creeping Out Sara/Tegan&#8221;, vilket gör mig glad för då har han lyckats med det han gör bäst nämligen att provocera som ingen annan.</p>
<p>Vi fortsätter med vad jag antar är en het kärleksberättelse om herrarna i Iron Maiden som inte riktigt når hela vägen fram, men som lockar fram ett leende med falsettsång och gitarrharmonier, och stannar på &#8221;Best God In Show&#8221;. Här har vi ett spår som inte alls låter som NOFX. På tidigare skivor har alltid alla brytlåtar varit ska-inspirerade med blåsinstrument och gladbeats, men här görs ett försök att leverera reggae som uppskattas, men jag har väldigt svårt att ta det på allvar.</p>
<p>Däremot gillar jag &#8221;Suits And Ladders&#8221; skarpt, för jag är en gammal gubbe nu, och då gillar jag sådant som påminner mig om hur det var förr i tiden då vi var unga och lyckligt ovetande om livets kval. Detta är skivans tidsmaskin, som visar att det fortfarande finns lite skit kvar under naglarna på grabbarna även om skivan i övrigt känns väldigt ren och redo att visa upp för svärföräldrarna.</p>
<p>Därefter händer inte så mycket mer i min mening, det är repetition, och hur bra repetitionen än är så är det ändå repetition. Vi har hört det förut.</p>
<p>Jag vill gärna tro att jag förstår NOFX, att jag har bättre öron än andra för denna typ av musik. Jag vill tro det eftersom detta är musiken jag växte upp med, detta är musiken som peppade mig när jag bad farsan dra åt helvete istället för att klippa gräsmattan utan protest, detta är soundtracket till MITT liv. Men samtidigt så är det min last, för jag är dömd att automatiskt älska all musik som dessa självgoda, numera välgödda herrar släppt.</p>
<p>Men inte längre.</p>
<p>Jag har vuxit upp, så är det, och hur mycket jag än försöker så kan jag inte längre hitta det som måste finnas där i ett band som NOFX. Jag har vuxit upp och det har även Fat Mike. Det märks att det inte längre är vad det brukade vara, det känns på tonen att det börjar bli lite slitsamt nu, att åren kryper på och med åren kommer skrumplevern och kavajen. Det låter bra men det saknar själ och det saknar framför allt attityd. Att leverera en skiva som är ren och fin i tonen känns ändå väntat, men är en utveckling som jag inte tycker passar.</p>
<p>Det är repetition av för många teman och det enda som är nytt är soundet. Det har hänt så oändligt mycket i soundet sen &#8221;Maximum Rocknroll&#8221;, det har varit en transition från oljud till välljud, en förvandling från garagepunkare till studiomusiker, från punkfester till skrumplever. Nytt sound är inte riktigt min grej, men det är väl en del av den naturliga utvecklingen. Nya lyssnare, dagens NOFX-kids, har kanske lättare att knyta an till ett sound som detta medan jag sitter här och är bitter över att skivan inte peppar mig som gamla skivor gjorde i början av 90-talet. Fan också det måste va något fel på mina öron.</p>
<p>Jag får ta det för vad det är, ett glänsande, 99-kronors drinkunderlägg med alternativa anvädningsområden. Helt plötsligt känns skivans titel och omslagsbild som en medveten gardering till en medvetet medioker skiva som kommer att, iallafall för mig,  gå till historien som &#8221;The Decline&#8221;, bokstavligt talat. Nu måste jag kurera mig med just den och annat från min favoritperiod. Den och &#8221;Dinosaurs Will Die&#8221;, &#8221;The Separation Of Church And Skate&#8221; och &#8221;It&#8217;s My Job to Keep Punk Rock Elite&#8221;</p>
<p>Pepp!</p>
<p>Andra bloggar om: <a href="http://bloggar.se/om/nofx" rel="tag">nofx </a>, <a href="http://bloggar.se/om/punk" rel="tag">punk</a>, <a href="http://bloggar.se/om/musik" rel="tag"> musik</a>, <a href="http://bloggar.se/om/recension" rel="tag"> recension</a>, <a href="http://bloggar.se/om/alkoholism" rel="tag"> alkoholism</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.isolated.se/2010/03/09/nofx-coaster/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>iPhoneOS : Framerate independence</title>
		<link>http://www.isolated.se/2010/03/08/iphoneos-framerate-independence/</link>
		<comments>http://www.isolated.se/2010/03/08/iphoneos-framerate-independence/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 10:51:04 +0000</pubDate>
		<dc:creator>trouf</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Programmering]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Obj-C]]></category>
		<category><![CDATA[XCode]]></category>

		<guid isPermaLink="false">http://www.isolated.se/?p=134</guid>
		<description><![CDATA[TweetNärsom man animerar ett objekt på egen hand (OpenGL) så måste man vara beredd på att saker och ting kan hända i resten av operativsystemet under tiden som animeringen pågår. Detta leder då till osmakliga hack i de annars så vackra rörelsemönstren. För att lösa detta gör jag två saker. 1. Sätter upp en &#8221;target&#8221; [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.isolated.se/2010/03/08/iphoneos-framerate-independence/&via=Trouf&text=iPhoneOS : Framerate independence&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p>Närsom man animerar ett objekt på egen hand (OpenGL) så måste man vara beredd på att saker och ting kan hända i resten av  operativsystemet under tiden som animeringen pågår. Detta leder då till osmakliga hack i de annars så vackra rörelsemönstren.</p>
<p>För att lösa detta gör jag två saker.</p>
<p>1. Sätter upp en &#8221;target&#8221; framerate som är referens vid alla beräkningar.<br />
2. Räknar ut skillnaden mellan faktisk framerate och target-framerate och multiplicerar alla rörelser på skärmen med detta värde.</p>
<p>Något i denhär stilen&#8230;</p>
<pre class="brush: objc; light: true; title: ; notranslate">
- (void)render {

NSDate *startDate = [[NSDate date] retain];

float wantedTime = 0.025; //Target framerate = 40 fps, dvs 1/40

/*
Rendering sker här, vi använder mätvärde från föregående frame för rörelsekompensation
*/

self.speedFactor = [[NSDate date] timeIntervalSinceDate:startDate] / wantedTime;

}
</pre>
<p>Alla rörelser multipliceras sedan med speedFactor, såsom</p>
<pre class="brush: objc; light: true; title: ; notranslate">

obj.Ypos = (sin(obj.direction*(M_PI/180))*BSPEED) * self.speedFactor;
</pre>
<p>Inga fler hack när iPhoneOS kollar din mail, uppdaterar din plats eller skickar hemliga data till Steve Jobs medan du spelar!</p>
<p>Andra bloggar om: <a href="http://bloggar.se/om/iphone" rel="tag">iphone</a>, <a href="http://bloggar.se/om/apple" rel="tag">apple</a>, <a href="http://bloggar.se/om/programmering" rel="tag"> programmering</a>, <a href="http://bloggar.se/om/xcode" rel="tag"> xcode</a>, <a href="http://bloggar.se/om/obj-c" rel="tag"> obj-c</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.isolated.se/2010/03/08/iphoneos-framerate-independence/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Strike!</title>
		<link>http://www.isolated.se/2008/11/18/strike/</link>
		<comments>http://www.isolated.se/2008/11/18/strike/#comments</comments>
		<pubDate>Tue, 18 Nov 2008 21:36:46 +0000</pubDate>
		<dc:creator>trouf</dc:creator>
				<category><![CDATA[Sälkubbning]]></category>
		<category><![CDATA[Humor]]></category>

		<guid isPermaLink="false">http://www.isolated.se/?p=130</guid>
		<description><![CDATA[Tweet]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.isolated.se/2008/11/18/strike/&via=Trouf&text=Strike!&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p><a href="http://www.isolated.se/wp-content/uploads/2008/11/1223609868934.jpg"><img src="http://www.isolated.se/wp-content/uploads/2008/11/1223609868934.jpg" alt="" title="Steeeeeriaek" width="500" height="400" class="alignnone size-full wp-image-129" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.isolated.se/2008/11/18/strike/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Smock</title>
		<link>http://www.isolated.se/2008/11/18/smock/</link>
		<comments>http://www.isolated.se/2008/11/18/smock/#comments</comments>
		<pubDate>Tue, 18 Nov 2008 19:51:33 +0000</pubDate>
		<dc:creator>trouf</dc:creator>
				<category><![CDATA[Sälkubbning]]></category>
		<category><![CDATA[Humor]]></category>

		<guid isPermaLink="false">http://www.isolated.se/?p=127</guid>
		<description><![CDATA[Tweet]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.isolated.se/2008/11/18/smock/&via=Trouf&text=Smock&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p><a href="http://www.isolated.se/wp-content/uploads/2008/11/9f67ceb3dcad2dbc1f7eacdf53517c88dcb4740e.jpg"><img src="http://www.isolated.se/wp-content/uploads/2008/11/9f67ceb3dcad2dbc1f7eacdf53517c88dcb4740e.jpg" alt="" title="BAM" width="500" height="247" class="alignnone size-full wp-image-126" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.isolated.se/2008/11/18/smock/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

