<?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>Hinnerup Net</title>
	<atom:link href="http://www.hinnerup.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.hinnerup.net</link>
	<description>Udvikling - fra backend til frontend</description>
	<lastBuildDate>Sat, 26 Jun 2010 19:39:17 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>da</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Samarbejde mellem Hinnerup Net og kandidatstuderende fra Aarhus Universitet</title>
		<link>http://www.hinnerup.net/permanent/2010/06/15/aarhus-university-group-project/</link>
		<comments>http://www.hinnerup.net/permanent/2010/06/15/aarhus-university-group-project/#comments</comments>
		<pubDate>Tue, 15 Jun 2010 08:52:41 +0000</pubDate>
		<dc:creator>Michael Schøler</dc:creator>
				<category><![CDATA[Projekt]]></category>
		<category><![CDATA[Universitet]]></category>

		<guid isPermaLink="false">http://www.hinnerup.net/?p=986</guid>
		<description><![CDATA[En gruppe kandidatstuderende fra Institut for Informations- og Medievidenskab skrev i foråret 2010 eksamensopgave i samarbejde med Hinnerup Net. 



I forbindelse med et eksamensprojekt i kurset IT-projektledelse har Hinnerup Net og de fire kandidatstuderende Rune Lykke, Mikkel Løfquist, Daisy Steffensen og Pernille Thorsen været så heldige at få lejlighed til at indgå i et samarbejde [...]]]></description>
			<content:encoded><![CDATA[<p>En gruppe kandidatstuderende fra <a href="http://www.imv.au.dk/">Institut for Informations- og Medievidenskab</a> skrev i foråret 2010 eksamensopgave i samarbejde med <a href="http://www.hinnerup.net">Hinnerup Net</a>. </p>
<div style="text-align:center">
<a href="http://www.imv.au.dk/"><img src="http://www.hinnerup.net/wp-content/uploads/2010/06/ifiom-logo.png" alt="" title="ifiom-logo" width="380" height="98" class="aligncenter size-full wp-image-987" style="border:none;" /></a>
</div>
<p>I forbindelse med et eksamensprojekt i kurset IT-projektledelse har Hinnerup Net og de fire kandidatstuderende Rune Lykke, Mikkel Løfquist, Daisy Steffensen og Pernille Thorsen været så heldige at få lejlighed til at indgå i et samarbejde om en case. </p>
<p>Kurset de studerende fulgte omhandlede overordnet alle faserne i et projektforløb, hvor gruppen valgte at have særlig fokus på opstart, styring og udførelse af et IT-projekt. Her inddragedes forskellige ledelses- og projektmæssige teorier til at beskrive opstarten. </p>
<p>Basis for casen var det samarbejde Hinnerup Net har med <a href="http://www.lego.com">LEGO</a>, i forbindelse med de nuværende og kommende projekter, der er henholdsvis er i gang og under planlægning. I og med at Hinnerup Net og LEGO anvender <a href="http://da.wikipedia.org/wiki/Scrum">SCRUM</a>, blev dette desuden et af fokusområderne i opgaven.</p>
<p>Eksamensprojektet er tvedelt, således at opgaven i sig selv gøres til objekt for projektledelse, sideløbende med at der blev udarbejdet en analyse af den aktuelle case. Gennem casen opnås værdifuld indsigt i, hvad det vil sige at opstarte og lede et projekt samtidigt med, at der opnås et indblik i hvorledes en professionel organisation griber projektledelse og projektarbejde an. </p>
<p>For Hinnerup Net betyder samarbejdet med de fire studerende en mulighed for at holde fingeren på pulsen med hvad der sker i uddannelsesmiljøet, og det er naturligvis ikke uden en vis stolthed, at der bringes viden tilbage til en af de institutioner vi selv gennem tiden er uddannet fra.</p>
<p>Karaktererne for projektet er netop uddelt idag, og vi bringer hermed et stort tillykke til de fire 12&#8242;tals modtagere! Godt gået!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hinnerup.net/permanent/2010/06/15/aarhus-university-group-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LINQ to XML</title>
		<link>http://www.hinnerup.net/permanent/2010/06/04/linq-to-xml/</link>
		<comments>http://www.hinnerup.net/permanent/2010/06/04/linq-to-xml/#comments</comments>
		<pubDate>Fri, 04 Jun 2010 09:34:04 +0000</pubDate>
		<dc:creator>Lars Støttrup</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Programmering]]></category>

		<guid isPermaLink="false">http://www.hinnerup.net/?p=969</guid>
		<description><![CDATA[Language-Integrated Query (LINQ) er en teknologi der tillader query-egenskaber direkte i C#. I query-form ligner det SQL i syntax og opbygning. Alternativet er method-syntax som vi ikke vil bruge tid på i dette indlæg. Til de interesserede kan forskellen mellem query og method syntax ses her: http://msdn.microsoft.com/en-us/library/bb397947.aspx. MS anbefaler at man bruger query syntax alle de steder [...]]]></description>
			<content:encoded><![CDATA[<p>Language-Integrated Query (LINQ) er en teknologi der tillader query-egenskaber direkte i C#. I query-form ligner det SQL i syntax og opbygning. Alternativet er method-syntax som vi ikke vil bruge tid på i dette indlæg. Til de interesserede kan forskellen mellem query og method syntax ses her: <a href="http://msdn.microsoft.com/en-us/library/bb397947.aspx">http://msdn.microsoft.com/en-us/library/bb397947.aspx</a>. MS anbefaler at man bruger query syntax alle de steder man kan, frem for method syntax.</p>
<p><a href="http://msdn.microsoft.com/en-us/library/bb387098.aspx">LINQ to XML</a> er en del af <a href="http://msdn.microsoft.com/en-us/netframework/aa904594.aspx">LINQ</a>, og er designet til at trække data ud af xml, fra eksempelvis en fil.</p>
<p>Vi skal bruge namespacet ”System.Xml.Linq”. Dette namespace indeholder klasser som XDocument, XElement, XAttribute og XNode. Det er nogle af disse vi bruger i vores query.</p>
<p>LINQ syntaksen minder meget om SQL og kan ses her:<br />
<a title="LINQ Syntax" href="http://msdn.microsoft.com/en-us/library/bb308959.aspx#linqoverview_topic5" target="_blank">http://msdn.microsoft.com/en-us/library/bb308959.aspx#linqoverview_topic5</a></p>
<p>Lad os springe ud i det.</p>
<p>Lad os først finde noget XML vi selektivt vil trække data ud af. Følgende er et log udtræk fra SVN:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=”1.0″<span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;log<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;logentry</span> <span style="color: #000066;">revision</span>=”200″<span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;author<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Lars<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/author<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;date<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>2010-06-03T08:24:19.329726Z<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/date<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;paths<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;path</span> <span style="color: #000066;">action</span>=”M”<span style="color: #000000; font-weight: bold;">&gt;</span></span>/sti/Upload.ascx.cs<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/path<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;path</span> <span style="color: #000066;">action</span>=”D”<span style="color: #000000; font-weight: bold;">&gt;</span></span>/sti/Projekt.csproj.user<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/path<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/paths<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;msg<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Changes to upload path handling<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/msg<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/logentry<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;logentry</span> <span style="color: #000066;">revision</span>=”199″<span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;author<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Lars<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/author<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;date<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>2010-05-31T14:30:23.080950Z<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/date<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;paths<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;path</span> <span style="color: #000066;">action</span>=”M”<span style="color: #000000; font-weight: bold;">&gt;</span></span>/sti/Database.mdf<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/path<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;path</span> <span style="color: #000066;">action</span>=”M”<span style="color: #000000; font-weight: bold;">&gt;</span></span>/sti/Database.ldf<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/path<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/paths<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;msg<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Shrinked database again<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/msg<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/logentry<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;logentry</span> <span style="color: #000066;">revision</span>=”198″<span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;author<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Lars<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/author<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;date<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>2010-05-31T13:59:33.689391Z<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/date<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;paths<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;path</span> <span style="color: #000066;">action</span>=”A”<span style="color: #000000; font-weight: bold;">&gt;</span></span>/sti/Projekt.sln<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/path<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;path</span> <span style="color: #000066;">action</span>=”A”<span style="color: #000000; font-weight: bold;">&gt;</span></span>/sti/Projekt.suo<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/path<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/paths<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;msg<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>VS2010 Solution files.<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/msg<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/logentry<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;logentry</span> <span style="color: #000066;">revision</span>=”197″<span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;author<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Sral<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/author<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;date<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>2010-05-28T07:10:51.597195Z<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/date<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;paths<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;path</span> <span style="color: #000066;">action</span>=”M”<span style="color: #000000; font-weight: bold;">&gt;</span></span>/sti/<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/path<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/paths<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;msg<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Added files/folders to ignore filter.<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/msg<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/logentry<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/log<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>Først tæller vi alle log entries grupperet på author. Det kan klares således:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="csharp" style="font-family:monospace;">var output <span style="color: #008000;">=</span> from logentry <span style="color: #0600FF;">in</span> SvnLog.<span style="color: #0000FF;">Elements</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;logentry&quot;</span><span style="color: #000000;">&#41;</span>
    group logentry by <span style="color: #000000;">&#40;</span><span style="color: #FF0000;">string</span><span style="color: #000000;">&#41;</span> logentry.<span style="color: #0000FF;">Element</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;author&quot;</span><span style="color: #000000;">&#41;</span>
    into logentries
    select <span style="color: #008000;">new</span> <span style="color: #000000;">&#123;</span> 
        Author <span style="color: #008000;">=</span> logentries.<span style="color: #0000FF;">Key</span>,
        Entries <span style="color: #008000;">=</span> logentries.<span style="color: #0000FF;">Count</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#125;</span><span style="color: #008000;">;</span></pre></td></tr></table></div>

<p>Vi piller querien fra hinanden og ser på de enkelte dele.</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">from logentry <span style="color: #0600FF;">in</span> SvnLog.<span style="color: #0000FF;">Elements</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;logentry&quot;</span><span style="color: #000000;">&#41;</span></pre></div></div>

<p>Dette statement returnerer en IEnumerable liste af XElementer indeholdende alle under-noder i hvert &lt;logentry&gt; element. Disse bliver så placeret i en variabel kaldet &#8220;logentry&#8221;.</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">group logentry by <span style="color: #000000;">&#40;</span><span style="color: #FF0000;">string</span><span style="color: #000000;">&#41;</span> logentry.<span style="color: #0000FF;">Element</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;author&quot;</span><span style="color: #000000;">&#41;</span> into logentries</pre></div></div>

<p>Vi grupperer her på datasættet fra før med en under-node i &lt;logentry&gt; ved navn &lt;author&gt;. Note: Det er vigtigt at huske castet til string da de fleste klasser i System.Xml.Linq har custom type converters (<a title="Custom Type Converters" href="http://msdn.microsoft.com/en-us/library/ayybcxe5.aspx" target="_blank">http://msdn.microsoft.com/en-us/library/ayybcxe5.aspx</a>).</p>
<p>Et cast til string giver elementets værdi, hvor logentry.Element(&#8220;author&#8221;).ToString() ville give en string repræsentation af objektet.</p>
<p>Til sidst placerer vi vores gruppering i en ny variable ved navn ”logentries”.</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">select <span style="color: #008000;">new</span> <span style="color: #000000;">&#123;</span> Author <span style="color: #008000;">=</span> logentries.<span style="color: #0000FF;">Key</span>, Entries <span style="color: #008000;">=</span> logentries.<span style="color: #0000FF;">Count</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#125;</span><span style="color: #008000;">;</span></pre></div></div>

<p>Her over laver vi en anonym type indeholdende vores fundne data (Anonymous Types: <a title="Anonymous Types" href="http://msdn.microsoft.com/en-us/library/bb397696.aspx" target="_blank">http://msdn.microsoft.com/en-us/library/bb397696.aspx</a>)<br />
Logentries.Key er altid hvad man grupperer på. I dette eksempel laver vi en simpel count på de fundne værdier.</p>
<p>Vi kører det igennem en foreach løkke:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF;">foreach</span> <span style="color: #000000;">&#40;</span>var d <span style="color: #0600FF;">in</span> output<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
     Console.<span style="color: #0000FF;">WriteLine</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;{0}: {1} entries.&quot;</span>, d.<span style="color: #0000FF;">Author</span>, d.<span style="color: #0000FF;">Entries</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Resultat:</p>
<div style="background-color:#000;font-family:courier new; font-size:8pt; color:white; padding:5px;">
Lars: 3 entries.<br />
Sral: 1 entries.
</div>
<p>Lad os prøve en lidt mere avanceret query med nestede selects.</p>
<p>Vi prøver følgende: Vores query skal tælle attributen action (i &lt;path&gt;) grupperet på værdien. For at være endnu mere vanskelig grupperer vi også på author igen.<br />
Resultatet vi søger skulle gerne se sådan ud:</p>
<div style="background-color:#000;font-family:courier new; font-size:8pt; color:white; padding:5px;">
Lars: A:2, M:3, D:1<br />
Sral: A:0, M:1, D:0
</div>
<p>Querien kommer til at se således ud:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
</pre></td><td class="code"><pre class="csharp" style="font-family:monospace;">var data <span style="color: #008000;">=</span>
  from logentry
  <span style="color: #0600FF;">in</span> SvnLog.<span style="color: #0000FF;">Elements</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;logentry&quot;</span><span style="color: #000000;">&#41;</span>
  group logentry by <span style="color: #000000;">&#40;</span><span style="color: #FF0000;">string</span><span style="color: #000000;">&#41;</span>commit.<span style="color: #0000FF;">Element</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;author&quot;</span><span style="color: #000000;">&#41;</span>
    into logentries
    select <span style="color: #008000;">new</span>
    <span style="color: #000000;">&#123;</span>
      Author <span style="color: #008000;">=</span> logentries.<span style="color: #0000FF;">Key</span>,
      Added <span style="color: #008000;">=</span> <span style="color: #000000;">&#40;</span>
          from path <span style="color: #0600FF;">in</span> logentries.<span style="color: #0000FF;">Elements</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;paths&quot;</span><span style="color: #000000;">&#41;</span>.<span style="color: #0000FF;">Elements</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;path&quot;</span><span style="color: #000000;">&#41;</span>
          where <span style="color: #000000;">&#40;</span><span style="color: #FF0000;">string</span><span style="color: #000000;">&#41;</span>path.<span style="color: #0000FF;">Attribute</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;action&quot;</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">==</span> <span style="color: #666666;">&quot;A&quot;</span>
          select path
      <span style="color: #000000;">&#41;</span>.<span style="color: #0000FF;">Count</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>,
      Modified <span style="color: #008000;">=</span> <span style="color: #000000;">&#40;</span>
        from path <span style="color: #0600FF;">in</span> logentries.<span style="color: #0000FF;">Elements</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;paths&quot;</span><span style="color: #000000;">&#41;</span>.<span style="color: #0000FF;">Elements</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;path&quot;</span><span style="color: #000000;">&#41;</span>
        where <span style="color: #000000;">&#40;</span><span style="color: #FF0000;">string</span><span style="color: #000000;">&#41;</span>path.<span style="color: #0000FF;">Attribute</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;action&quot;</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">==</span> <span style="color: #666666;">&quot;M&quot;</span>
        select path
      <span style="color: #000000;">&#41;</span>.<span style="color: #0000FF;">Count</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>,
      Deleted <span style="color: #008000;">=</span> <span style="color: #000000;">&#40;</span>
        from path <span style="color: #0600FF;">in</span> logentries.<span style="color: #0000FF;">Elements</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;paths&quot;</span><span style="color: #000000;">&#41;</span>.<span style="color: #0000FF;">Elements</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;path&quot;</span><span style="color: #000000;">&#41;</span>
        where <span style="color: #000000;">&#40;</span><span style="color: #FF0000;">string</span><span style="color: #000000;">&#41;</span>path.<span style="color: #0000FF;">Attribute</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;action&quot;</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">==</span> <span style="color: #666666;">&quot;D&quot;</span>
        select path
      <span style="color: #000000;">&#41;</span>.<span style="color: #0000FF;">Count</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#125;</span><span style="color: #008000;">;</span></pre></td></tr></table></div>

<p>Det første i querien ligner statementet fra før: vi grupperer blot på author. Inde i vores anonyme type har vi nu 3 næsten ens selects:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">from path <span style="color: #0600FF;">in</span> logentries.<span style="color: #0000FF;">Elements</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;paths&quot;</span><span style="color: #000000;">&#41;</span>.<span style="color: #0000FF;">Elements</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;path&quot;</span><span style="color: #000000;">&#41;</span></pre></div></div>

<p>Vi finder alle ”path” noder som vores gruppering i det ydre scope indeholder.</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">where <span style="color: #000000;">&#40;</span><span style="color: #FF0000;">string</span><span style="color: #000000;">&#41;</span>path.<span style="color: #0000FF;">Attribute</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;action&quot;</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">==</span> <span style="color: #666666;">&quot;A&quot;</span></pre></div></div>

<p>Af de fundne path noder, finder vi alle dem der har attributten ”A”.</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">select path</pre></div></div>

<p>Dem der matcher vores where clause selecter vi, plus pakker det hele ind til sidst, så vi kan lave en Count() på det.</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF;">foreach</span> <span style="color: #000000;">&#40;</span>var user <span style="color: #0600FF;">in</span> data<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
   Console.<span style="color: #0000FF;">WriteLine</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;{0}: A:{1}, M:{2}, D:{3}&quot;</span>,
      user.<span style="color: #0000FF;">Author</span>, user.<span style="color: #0000FF;">Added</span>, user.<span style="color: #0000FF;">Modified</span>, user.<span style="color: #0000FF;">Deleted</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span> </pre></div></div>

<p>Og nu får vi det output vi søgte:</p>
<div style="background-color:#000;font-family:courier new; font-size:8pt; color:white; padding:5px;">
Lars: A:2, M:3, D:1<br />
Sral: A:0, M:1, D:0
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.hinnerup.net/permanent/2010/06/04/linq-to-xml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nyt kontor i Århus</title>
		<link>http://www.hinnerup.net/permanent/2010/05/31/new-office-in-aarhus/</link>
		<comments>http://www.hinnerup.net/permanent/2010/05/31/new-office-in-aarhus/#comments</comments>
		<pubDate>Sun, 30 May 2010 23:28:15 +0000</pubDate>
		<dc:creator>Michael Schøler</dc:creator>
				<category><![CDATA[Meddelelser]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[kontor]]></category>

		<guid isPermaLink="false">http://www.hinnerup.net/?p=940</guid>
		<description><![CDATA[


Hinnerup Net ApS har netop indfundet sig i nye lækre lokaler i Frichsparken, Søren Frichs Vej 38C stth, 8230 Århus/Åbyhøj. Vi glæder os enormt meget til at tage de nye lokaler i brug, og ikke mindst at få besøg af samarbejdspartnere, kunder og gæster i al almindelighed.
Vi placerer snarest en flok billeder af det fine [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align:center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="500" height="300" id="flash_3doffice_aarhus" align="middle"><param name="allowScriptAccess" value="sameDomain" /><param name="allowFullScreen" value="false" /><param name="movie" value="/wp-content/uploads/2010/05/3d_office_aarhus.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><embed src="/wp-content/uploads/2010/05/3d_office_aarhus.swf" quality="high" bgcolor="#ffffff" width="500" height="300" name="flash_3doffice_aarhus" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /><br />
</object>
</div>
<p>Hinnerup Net ApS har netop indfundet sig i nye lækre lokaler i <a href="http://da.wikipedia.org/wiki/Frichs">Frichsparken</a>, <a href="http://maps.google.dk/maps?f=q&#038;source=s_q&#038;hl=en&#038;geocode=&#038;q=S%C3%B8ren+Frichs+Vej+38+C,+8230+%C3%85rhus&#038;sll=56.15261,10.17779&#038;sspn=0.008259,0.015385&#038;g=S%C3%B8ren+Frichs+Vej+38C,+8230+%C3%85rhus&#038;ie=UTF8&#038;hq=&#038;hnear=S%C3%B8ren+Frichs+Vej+38,+8000,+Aarhus+Municipality&#038;ll=56.152993,10.17607&#038;spn=0.002065,0.00589&#038;t=h&#038;z=18">Søren Frichs Vej 38C stth, 8230 Århus/Åbyhøj</a>. Vi glæder os enormt meget til at tage de nye lokaler i brug, og ikke mindst at få besøg af samarbejdspartnere, kunder og gæster i al almindelighed.</p>
<p>Vi placerer snarest en flok billeder af det fine nye sted her på bloggen.</p>
<div style="text-align:center; font-size:7pt;">
<img src="http://www.hinnerup.net/wp-content/uploads/2010/05/800px-Frichsparken.jpg" alt="" title="Frichsparken" width="500" /><br />
Foto: <a href="http://da.wikipedia.org/wiki/Fil:Frichsparken.jpg">Nils Jepsen</a>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.hinnerup.net/permanent/2010/05/31/new-office-in-aarhus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unity &#8211; 3D i browsere</title>
		<link>http://www.hinnerup.net/permanent/2010/05/18/unity-3d-i-browsere/</link>
		<comments>http://www.hinnerup.net/permanent/2010/05/18/unity-3d-i-browsere/#comments</comments>
		<pubDate>Tue, 18 May 2010 08:09:41 +0000</pubDate>
		<dc:creator>Asger Dam Hoedt</dc:creator>
				<category><![CDATA[Ramblings]]></category>

		<guid isPermaLink="false">http://www.hinnerup.net/?p=922</guid>
		<description><![CDATA[Unity&#8217;s 3D engine blev sidste år gratis og da 3D grafik er sjovt, og 3D grafik gjort nemt er endnu sjovere, skulle den naturligvis prøves.
Og Unity har gjort det rigtig nemt at lave 3D. En af de største styrker ved Unity er at brugeren kan lave projektet en gang og så udgive det til flere forskellige platforme, så som [...]]]></description>
			<content:encoded><![CDATA[<p>Unity&#8217;s 3D engine blev <a href="http://blogs.unity3d.com/2009/10/29/a-free-unity/">sidste år gratis</a> og da 3D grafik er sjovt, og 3D grafik gjort nemt er endnu sjovere, skulle den naturligvis prøves.</p>
<p>Og Unity har gjort det rigtig nemt at lave 3D. En af de største styrker ved Unity er at brugeren kan lave projektet en gang og så udgive det til flere forskellige platforme, så som OS X, windows eller deres egen webplayer. Med Unity Pro kan man også udgive til Wii og iPhone/iPad.</p>
<p>Derudover er selve editoren nem at bruge, hvor objektor i verdenen, så som geometri og lyskilder, kan skabes som GameObjets. Fysik og scriptet adfærd er hellere ikke længere end et klik væk.</p>
<p>Et sjovt projekt der kombinere fysik, simpel geometri og en introduktion til scripting er <a href="http://xkcd.com/724/">xkcd&#8217;s Hell</a>. Desuden er point systemet utroligt nemt.</p>
<p>Først skal blokkene laves. Under menuen GameObject -&gt; CreateOther findes Cube, som skaber en kube i verdenen. Disse kuber kan så skaleres og placeres til at skabe alle de kendte tetris blokke.</p>
<p><a href="http://www.hinnerup.net/2010/05/TetrisHell/TetrisHell.html"><img src="http://www.hinnerup.net/wp-content/uploads/2010/05/Blocks-150x150.jpg" alt="Blocks" title="Blocks" width="150" height="150" class="aligncenter size-thumbnail wp-image-923" /></a></p>
<p>For at kunne arbejde med blokkene som et stykke geometry skabes der et nyt tomt GameObject og geometrien for hver blok placeres under hver deres tomme GameObject. Tyngdekraft og kollision tilføjes som beskrevet blot ved at tilføje en rigidbody komponent til GameObjectet.</p>
<p>Til sidst skal geometrien gemmes som en struktur hvorfra et nyt objekt kan instantieres hver gang en ny blok skal dale ned. Til dette bruges Unity&#8217;s Prefabs, prefabrikeret geometry. At obrette en ny blok kan nu gøres ved simpel drag &#8216;n drop fra prefab&#8217;en og over i scenen, eller ved at instantiere prefab&#8217;en i et script.</p>
<p>Selve banens geometri er ligeledes lavet ud fra 7 kuber. Hele geometrien samles så til et fungerende spil gennem 3 <a href="http://unity3d.com/support/documentation/ScriptReference/index.html">scripts</a>.</p>
<p>Det første script <a href="http://www.hinnerup.net/2010/05/TetrisHell/Assets/TetrisGod.js">TetrisGod.js</a>, hvis navn er inspireret <a href="http://www.collegehumor.com/video:1924722">herfra</a>. Formålet<br />
med dette script er at skabe en tilfældig og muligvis spejlvendt blok.</p>
<p>Det andet script er <a href="http://www.hinnerup.net/2010/05/TetrisHell/Assets/StartGame.js">StartGame.js</a>. Dette scripts eneste formål er at bede den almægtige tetris gud om at starte spillet ved at skabe den første blok. Scriptet bliver sammen med TetrisGod.js placeret på kameraet og sat til at starte når kameraet &#8220;vågner&#8221;.</p>
<p>Det sidste script hedder <a href="http://www.hinnerup.net/2010/05/TetrisHell/Assets/MoveBlocks.js">MoveBlocks.js</a> og er tilføjet på alle vores blocke. MoveBlocks er ansvarlig for at spilleren kan flytte blokken, at blokkene ikke falder udenfor banen og at en ny blok bliver spawnet når blokken kolliderer med et andet objekt. Desuden fjerner scriptet blokke når de ikke længere kan ses af kameraet.</p>
<p>Resultatet kan ses <a href="http://www.hinnerup.net/2010/05/TetrisHell/TetrisHell.html">her</a>. Et lille ekstra touch af smerte og pinsel er tilføjet ved ikke at teste for om der plads til at blokkene kan spawne. Hvis en blok derfor spawner oven i en anden blok resulterer det i at en sværm af blokke spawnes og spilleren må siges at have tabt.</p>
<p>For at finde ud af mere om Unity og hvordan man nemt kommer igang med at lave 3D projekter, kan man klikke ind på Unity3D.com&#8217;s resource sektion eller se en af de mange tutorials, der er tilgængelige på youtube.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hinnerup.net/permanent/2010/05/18/unity-3d-i-browsere/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Certificerede Sitecore CMS .NET udviklere</title>
		<link>http://www.hinnerup.net/permanent/2010/04/09/certified-sitecore-cms-developers/</link>
		<comments>http://www.hinnerup.net/permanent/2010/04/09/certified-sitecore-cms-developers/#comments</comments>
		<pubDate>Fri, 09 Apr 2010 17:02:16 +0000</pubDate>
		<dc:creator>Michael Schøler</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Meddelelser]]></category>
		<category><![CDATA[Programmering]]></category>
		<category><![CDATA[Certificering]]></category>
		<category><![CDATA[Sitecore CMS]]></category>

		<guid isPermaLink="false">http://www.hinnerup.net/?p=875</guid>
		<description><![CDATA[
Så har en flok fra Hinnerup Net været afsted på certificeringskurser: Sitecore Developer Foundation og Sitecore .NET Developer.
Certified .NET Developers

Et stort tillykke til de ny-certificerede medarbejdere:

&#160;Michael Schøler
&#160;Jakob Justsen
&#160;Rune Alblas
&#160;Tobias Hinnerup
&#160;Lars Støttrup Nielsen
&#160;Casper Hornstrup


Vi føler os nu rigtig godt klædt på til at indgå i opgaveløsning med relation til Sitecore CMS, med en fornyet og gennemgående [...]]]></description>
			<content:encoded><![CDATA[<div style="padding-top:4px;">
<img src="/wp-content/uploads/2010/04/DSC_3058-200x300.jpg" alt="" title="Kursus-eksamen" width="200" height="300" style="float:right;padding-left:1em;" />Så har en flok fra Hinnerup Net været afsted på certificeringskurser: <a href="http://www.sitecore.net/Training/Course-Overview/CMS-6-Sitecore-Foundations.aspx">Sitecore Developer Foundation</a> og <a href="http://www.sitecore.net/Training/Course-Overview/CMS-6-Website-NET-Developer.aspx">Sitecore .NET Developer</a>.</p>
<div style="text-align:center;font-family:tahoma;font-size:11pt;"><img src="/wp-content/uploads/2010/04/sitecore_logo.gif" alt="" title="sitecore logo" width="200" /><br /><b>Certified .NET Developers</b></div>
<p></p>
<p>Et stort tillykke til de ny-certificerede medarbejdere:</p>
<div style="padding-left:1em;padding-top:0.2em;">
<img src="/wp-content/uploads/2010/04/sitecore_icon.png" alt="" title="sitecore_icon" width="16"  />&nbsp;Michael Schøler<br />
<img src="/wp-content/uploads/2010/04/sitecore_icon.png" alt="" title="sitecore_icon" width="16"  />&nbsp;Jakob Justsen<br />
<img src="/wp-content/uploads/2010/04/sitecore_icon.png" alt="" title="sitecore_icon" width="16"  />&nbsp;Rune Alblas<br />
<img src="/wp-content/uploads/2010/04/sitecore_icon.png" alt="" title="sitecore_icon" width="16"  />&nbsp;Tobias Hinnerup<br />
<img src="/wp-content/uploads/2010/04/sitecore_icon.png" alt="" title="sitecore_icon" width="16"  />&nbsp;Lars Støttrup Nielsen<br />
<img src="/wp-content/uploads/2010/04/sitecore_icon.png" alt="" title="sitecore_icon" width="16"  />&nbsp;Casper Hornstrup
</div>
</div>
<p>Vi føler os nu rigtig godt klædt på til at indgå i opgaveløsning med relation til Sitecore CMS, med en fornyet og gennemgående teknisk indsigt, inden for eksempelvis:</p>
<ul>
<li>Rådgivning om forskellige aspekter omkring Sitecore CMS løsninger</li>
<li>Udvikleroplæring og workshops</li>
<li>Integration af websites, webservices og eksterne systemer med Sitecore CMS</li>
<li>Udvikling af komponenter, kontroller, layouts med videre</li>
<li>Udvidelser til Sitecore CMS systemet samt administrations-wizards</li>
<li>Design, implementering og vedligeholdelse af eksisterende såvel som nye Sitecore CMS Sites</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.hinnerup.net/permanent/2010/04/09/certified-sitecore-cms-developers/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Click tracking</title>
		<link>http://www.hinnerup.net/permanent/2010/01/22/click-tracking/</link>
		<comments>http://www.hinnerup.net/permanent/2010/01/22/click-tracking/#comments</comments>
		<pubDate>Fri, 22 Jan 2010 12:37:31 +0000</pubDate>
		<dc:creator>Lars Støttrup</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Programmering]]></category>
		<category><![CDATA[Click tracking]]></category>
		<category><![CDATA[Trafic analysis]]></category>

		<guid isPermaLink="false">http://www.hinnerup.net/?p=828</guid>
		<description><![CDATA[Vi har installeret CrazyEgg click tracking på hinnerup.net.
CrazyEgg er et værktøj til at visualisere brugernes færden på ens site, og indeholder smarte funktioner som: Click-overlay, Heatmap og Confetti.
Man indsætter en enkelt linje kode på de sider der skal trackes:

&#60;script src=&#34;http://s3.amazonaws.com/new.cetrk.com/pages/scripts/0010/6701.js&#34;
type=&#34;text/javascript&#34;&#62;&#60;/script&#62;

Derefter opsættes de sider der skal trackes i CrazyEgg:

Efter nogle dage begynder statistikken at være på [...]]]></description>
			<content:encoded><![CDATA[<p>Vi har installeret <a href="http://www.crazyegg.com/">CrazyEgg</a> click tracking på <a href="http://hinnerup.net">hinnerup.net</a>.</p>
<p>CrazyEgg er et værktøj til at visualisere brugernes færden på ens site, og indeholder smarte funktioner som: Click-overlay, Heatmap og Confetti.</p>
<p>Man indsætter en enkelt linje kode på de sider der skal trackes:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>script src<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;http://s3.amazonaws.com/new.cetrk.com/pages/scripts/0010/6701.js&quot;</span>
type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span><span style="color: #339933;">&gt;&lt;/</span>script<span style="color: #339933;">&gt;</span></pre></div></div>

<p>Derefter opsættes de sider der skal trackes i CrazyEgg:</p>
<div style="text-align:center"><a href="/wp-content/uploads/2010/01/Hinnerup_crazyegg_ops_tning.png"><img src="/wp-content/uploads/2010/01/Hinnerup_crazyegg_ops_tning.png" alt="" title="CrazyEgg opsætning" width="525" class="aligncenter size-medium wp-image-841" style="border:none;" /></a></div>
<p>Efter nogle dage begynder statistikken at være på plads.</p>
<p>Her er de forskellige overlays.</p>
<p>Standard overlay:</p>
<div style="text-align:center"><a href="/wp-content/uploads/2010/01/Hinnerup_front_page.png"><img src="/wp-content/uploads/2010/01/Hinnerup_front_page.png" alt="" title="Standard overlay, CrazyEgg" width="525" class="aligncenter size-medium wp-image-843" style="border:none;" /></a></div>
<p>Heatmap:</p>
<div style="text-align:center"><a href="/wp-content/uploads/2010/01/Hinnerup_heatmap.png"><img src="/wp-content/uploads/2010/01/Hinnerup_heatmap.png" alt="" title="Heatmap overlay, CrazyEgg" width="525" class="aligncenter size-medium wp-image-845" style="border:none;" /></a></div>
<p>Confetti:</p>
<div style="text-align:center"><a href="/wp-content/uploads/2010/01/Hinnerup_time_to_click.png"><img src="/wp-content/uploads/2010/01/Hinnerup_time_to_click.png" alt="" title="Confetti overlay, CrazyEgg" width="525" class="aligncenter size-medium wp-image-848" style="border:none;" /></a></div>
<p>Standard overlayet giver os mulighed for at se hvor mange clicks et givet link har fået. Heatmap er rimeligt selvforklarende &#8211; den viser os hvor &#8220;populært&#8221; et link eller anden detalje er. Den mest interessante er Confetti, som har følgende indstillings-muligheder:</p>
<div style="text-align:center"><a href="/wp-content/uploads/2010/01/Options.png"><img src="/wp-content/uploads/2010/01/Options.png" alt="" title="Options, CrazyEgg" width="123" height="185" class="aligncenter size-full wp-image-850" style="border:none;" /></a></div>
<p>Alle disse overlays skulle sammenlagt give ens hjemmesidedesigner mulighed for at designe en mere brugervenlig oplevelse.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hinnerup.net/permanent/2010/01/22/click-tracking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Brug ikke hverken Gmail eller Hotmail</title>
		<link>http://www.hinnerup.net/permanent/2010/01/07/brug-ikke-hverken-gmail-eller-hotmail/</link>
		<comments>http://www.hinnerup.net/permanent/2010/01/07/brug-ikke-hverken-gmail-eller-hotmail/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 09:29:35 +0000</pubDate>
		<dc:creator>Tobias Hinnerup</dc:creator>
				<category><![CDATA[Gode råd]]></category>
		<category><![CDATA[Ramblings]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[mailserver]]></category>
		<category><![CDATA[MX]]></category>
		<category><![CDATA[nsloopkup]]></category>
		<category><![CDATA[SMTP]]></category>

		<guid isPermaLink="false">http://www.hinnerup.net/?p=813</guid>
		<description><![CDATA[De sidste 14 dage har de to haft mindst een defekt mailserver i deres DNS rotation, hvilket effektivt fører til at det er umuligt at udtale sig om hvorvidt en modtager på domænerne kan/vil modtage mails man sender til dem. 
Kombineret med det faktum, at det kan konstateres at have været tilfældet temmelig mange gange [...]]]></description>
			<content:encoded><![CDATA[<p>De sidste 14 dage har de to haft mindst een defekt mailserver i deres DNS rotation, hvilket effektivt fører til at det er umuligt at udtale sig om hvorvidt en modtager på domænerne kan/vil modtage mails man sender til dem. </p>
<p><a style="float: right;" href="http://www.hinnerup.net/wp-content/uploads/2010/01/New-Picture-1.jpg"><img src="http://www.hinnerup.net/wp-content/uploads/2010/01/New-Picture-1-208x300.jpg" alt="" title="nslookup type=mx hotmail.com" width="208" height="300" class="aligncenter size-medium wp-image-814" /></a>Kombineret med det faktum, at det kan konstateres at have været tilfældet temmelig mange gange over de seneste par år, samt at det (selvsagt) er 100% umuligt at komme igennem med en fejlmelding til de to giganter, kan jeg vanskeligt konkludere andet end at det er en usædvanlig dårlig idé at benytte deres services, med mindre man er indstillet på at acceptere at mails periodisk og uden meldinger eller advarsler vil gå tabt. </p>
<p>Dog vil gælde, at afsenderen af mails der ikke afleveres må forventes at modtage en tilbagemelding om, at den/de pågældende mails ikke kunne afleveres &#8211; men hvis ikke afsender derefter finder en anden måde at kontakte modtager på, og orienterer om problemet, vil man aldrig blive opmærksom på at der er noget galt.</p>
<p>Supplerende ovenstående, for at give det lidt mere tekniske indblik, er mailserver-administrationen for systemer så store som de to, naturligvis ikke en enkel og simpel sag. Jævnfør det her indsatte øjebliksbillede af et opslag med nslookup, fordeler <a href="http://www.hotmail.com">Hotmail</a> sine mailservere over 5 indgange, hver med cirka 10 IP numre. Hvorvidt det i praksis bliver til 50 servere er vanskeligt at udtale sig om udefra &#8211; men det er indlysende at kompleksiteten af en sådan opsætning ikke er ubetydelig.</p>
<p><b>Opdatering 2010-06-25</b>, af Michael Schøler</p>
<p>Vi er ikke de eneste der har opdaget problemer med <a href="http://gmail.com">Gmail</a>, og man kan i dag på <a href="http://www.computerworld.dk">Computerworld</a> læse en artikel om <a href="http://www.computerworld.dk/art/56726?a=rss&#038;i=0">lange modtage- og leveringstider</a>, ligesom at der i April i <a href="www.securecomputing.net">Secure Computing magazine</a> blev udgivet en artikel om at der var opstået panik blandt alle <a href="http://www.hotmail.com">Hotmail&#8217;s</a> brugere da de <a href="http://www.securecomputing.net.au/News/142262,hotmail-log-in-problems-cause-user-panic.aspx">ved forsøg på login fik af vide at de ikke havde en konto</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hinnerup.net/permanent/2010/01/07/brug-ikke-hverken-gmail-eller-hotmail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Y2k+10 bug</title>
		<link>http://www.hinnerup.net/permanent/2010/01/05/y2k10-bug/</link>
		<comments>http://www.hinnerup.net/permanent/2010/01/05/y2k10-bug/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 16:36:23 +0000</pubDate>
		<dc:creator>Michael Schøler</dc:creator>
				<category><![CDATA[Ramblings]]></category>
		<category><![CDATA[Encoding]]></category>
		<category><![CDATA[Y2k]]></category>

		<guid isPermaLink="false">http://www.hinnerup.net/?p=791</guid>
		<description><![CDATA[Knapt er vi kommet os over panikken omkring år 2000-problemet, også kendt som Y2k, der nærmest truede med verdens undergang i en sådan skala at det gør selv 2012 filmen til skamme, inden at vi rammes af en ny katastrofe; 2010 årsskiftet!

Som man kan læse i denne artikel, er Dankort systemet i ca. 1.600 P-automater [...]]]></description>
			<content:encoded><![CDATA[<p>Knapt er vi kommet os over panikken omkring år <a href="http://da.wikipedia.org/wiki/%C3%85r_2000-problemet">2000-problemet</a>, også kendt som <a href="http://da.wikipedia.org/wiki/Y2K">Y2k</a>, der nærmest truede med verdens undergang i en sådan skala at det gør selv <a href="http://www.imdb.com/title/tt1190080/">2012 filmen</a> til skamme, inden at vi rammes af en ny katastrofe; 2010 årsskiftet!</p>
<div style="text-align:center"><img src="http://www.hinnerup.net/wp-content/uploads/2010/01/hinnerupnet_encoding.png" alt="" title="hinnerupnet_encoding" width="376" height="262" class="aligncenter size-full wp-image-795" /></div>
<p>Som man kan læse i <a href="http://ekstrabladet.dk/kup/dinepenge/article1277105.ece">denne artikel</a>, er Dankort systemet i ca. 1.600 P-automater i København, umiddelbart lige efter kl. 23.59 d. 31/12-2009, ophørt med at fungere til stor undren for folkene bag, og stor irritation for alle øvrige. </p>
<p>Det er en påstand herfra, at P-automat betalingssystemet der anvendes utvivlsomt er udviklet efter år 2000-problemet blev konstateret og løst.</p>
<p>Dels har det jo kørt upåklageligt da årstallet viste &#8220;00&#8243;, &#8220;01&#8243;, &#8220;02&#8243;, &#8220;03&#8243;, &#8230;, og &#8220;09&#8243;, og der ville nok først igen opstå problemer når der trilles over de &#8220;99&#8243; til &#8220;00&#8243; (lige som sidst). Desværre vippede det nye årstal <a href="http://nyhederne.tv2.dk/article/27577577/">ikke rundt til et &#8220;10&#8243;</a> som man vist havde regnet med, men istedet til &#8220;0A&#8221;, der er det <a href="http://da.wikipedia.org/wiki/Hexadecimale_talsystem">hexadecimale talsystems repræsentation</a> af decimaltallet 10. Det hexadecimale talsystem er et som computere har det ret godt med &#8211; en byte omfatter 8 bits, der dækker decimaltallene 0 til 255, eller hexadecimalt <a href="http://da.wikipedia.org/wiki/Byte">00-FF</a>. Og så gik maskineriet i selvsving, &#8220;0A&#8221; og &#8220;10&#8243; kunne ikke sammenholdes mellem den <a href="http://da.wikipedia.org/wiki/Gr%C3%A6nseflade_(teknologi)">grænseflade</a> der er mellem betalingssystemet og yderligere systemer. </p>
<p>Den anden vinkel på hvorfor P-automat betalingssystem må og skal være etableret efter Y2k er at det simpelthen ville være opdaget i 1999 også; decimaltallet 99 repræsenteres som 63 hexadecimalt. Mon ikke der havde været rod i et regnskab eller to, med bogføring af indkomster fra 1963 i år 1999 uden nogen form for renteindtægt eller forudgående poster med langsigtede krediteringer?</p>
<p>Hvis vi tænker lidt over hvorfor man efter en så voldsom omgang skruen på kode der vedrører datoer, alligevel er kommet frem til at holde årstallet i en byte og repræsentere denne talværdi i systemet hexadecimalt både internt og eksternt, ja så er min personlige konklusion helt klar. Tanken må have været at alle da bare skal se i en fart at få lært det hexadecimale talsystem. Det er jo over 2,5 gange mere fremtidssikret med hensyn til hvornår en ny Y2K fejl opstår, vi har jo med talrummet fra 0 til 255 at gøre og ikke kun 0 til 99. Desuden vil det fjerne enhver form for enkodnings- og/eller formatteringsproblematik der måtte være en gang for alle, ved ganske enkelt blot at anvende et fælles og maskinelt nemt behandlingsbart talsystem.</p>
<p>Snedigt! <img src='http://www.hinnerup.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Der er flere der er ramt af andre nye årstals problemer, blandt andet kan nævnes <a href="http://www.theregister.co.uk/2010/01/05/windows_mobe_bug/">Windows Mobile</a>. Her er problemet at SMS beskeder ankommer i 2010 som om de er sendt i 2016. Det skyldes samme problemstilling bare vendt på hovedet: &#8220;10&#8243; kommer ind, og behandles hexadecimalt, hvilket giver decimalværdien 16.</p>
<p>Alle SAP systemer er tilsyneladende også ramt af 2010 problemet, det kan man <a href="http://www.version2.dk/artikel/13388-alle-sap-installationer-ramt-af-aar-2010-problem">læse mere om her</a>.</p>
<p>Så husk det nu: <b>Enkodning, formattering og valg af datatyper er vigtigt.</b></p>
]]></content:encoded>
			<wfw:commentRss>http://www.hinnerup.net/permanent/2010/01/05/y2k10-bug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Strukturel processering af billeder</title>
		<link>http://www.hinnerup.net/permanent/2010/01/02/structural-image-processing/</link>
		<comments>http://www.hinnerup.net/permanent/2010/01/02/structural-image-processing/#comments</comments>
		<pubDate>Sat, 02 Jan 2010 21:17:43 +0000</pubDate>
		<dc:creator>Michael Schøler</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Computer Vision]]></category>
		<category><![CDATA[Programmering]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Dilate]]></category>
		<category><![CDATA[Erosion]]></category>
		<category><![CDATA[Image Processing]]></category>

		<guid isPermaLink="false">http://www.hinnerup.net/?p=753</guid>
		<description><![CDATA[Når billeder skal processeres programmatisk anvendes en matematisk metode der kaldes morfologiske transformationer (morphological transformations), mønster genkendelse (pattern recognition) og/eller egenskabs ekstraktion (feature extraction).
Her i juletiden har mange været påvirket af huller i asfalten langs eksempeltvist Vejle fjordbroen. Hvis vi begiver os ud i et tankeeksperiment er det med relativt simple billedbehandlingsalgoritmer &#8220;nemt&#8221; at detektere [...]]]></description>
			<content:encoded><![CDATA[<p>Når billeder skal processeres programmatisk anvendes en matematisk metode der kaldes <a href="http://en.wikipedia.org/wiki/Mathematical_morphology">morfologiske transformationer</a> (morphological transformations), <a href="http://en.wikipedia.org/wiki/Pattern_recognition">mønster genkendelse</a> (pattern recognition) og/eller <a href="http://en.wikipedia.org/wiki/Feature_extraction">egenskabs ekstraktion</a> (feature extraction).</p>
<p>Her i juletiden har mange været påvirket af huller i asfalten langs eksempeltvist <a href="http://stiften.dk/article/20091228/AAS/712289815/1002">Vejle fjordbroen</a>. Hvis vi begiver os ud i et tankeeksperiment er det med relativt simple billedbehandlingsalgoritmer &#8220;nemt&#8221; at detektere en betydelig andel af opbyggende huller og dermed kunne man forebyggende iværksætte udbedrende vejarbejde før et problem opstår.</p>
<p>Et eksempel kunne være anvendelse af <a href="http://en.wikipedia.org/wiki/Thresholding_(image_processing)">thresholding</a>, <a href="http://en.wikipedia.org/wiki/Erosion_(morphology)">erosion</a> og <a href="http://en.wikipedia.org/wiki/Dilation_(morphology)">dilation</a> på en stribe billeder taget af asfaltoverfladen på udvalgte vejstrækninger. For resten af denne artikel antages det, at sådanne billeder er tilgængelige.</p>
<p>Herunder vises en række billeder af asfaltoverflader hvor der er opstået minimale huller og sprækker, samt hvor alvorlige slaghuller forekommer og er delvist udbedrede. Ligeledes vises en normal asfalt overflade. Under hvert billede vises en morfologisk behandlet udgave, der har været underlagt den samme algoritme for samtlige billeder. Givet disse resultatbilleder er det relativt simpelt at afgøre hvorvidt et behandlet resultatbillede udgør en kandidat til manuel inspektion eller ej.</p>
<p><a href="http://www.hinnerup.net/wp-content/uploads/2010/01/2009-12-31_1559.png"><img src="http://www.hinnerup.net/wp-content/uploads/2010/01/2009-12-31_1559.png" alt="" title="Asfalt billedbehandling" width="510" class="aligncenter size-medium wp-image-755" style="border:none;" /></a></p>
<p>Klik på billedet for at se en stor udgave.</p>
<p>&#8220;Proof-of-concept&#8221; algoritmen benyttet på resultatbillederne herover er skrevet i .NET C#, og ser overordnet således ud:</p>
<pre>
Bitmap input = new Bitmap(filename);
Bitmap output =
  Dilate(
    Dilate(
      Threshold(
        Dilate(
          Dilate(
            Dilate(
              Dilate(
                Grayscale(input)
              )
            )
          )
        ), 70
      )
    )
  );

output.Save(
  Path.GetFileNameWithoutExtension(filename) +
  ".processed" + Path.GetExtension(filename));</pre>
<p>Tankeeksperimentet skal naturligvis føres videre ud før det bliver praktisk anvendeligt. </p>
<p>Det er klart at der vil være tale om mange tusinde billeder og adskillige terrabytes data, hvorfor system arkitekturen bag processeringssystemet bør være baseret på en skalerbar multiserver/multikerne teknologi. Et eksempel på en gratis open-source arkitektur kunne være <a href="http://developer.amd.com/cpu/libraries/framewave/Pages/default.aspx">AMD&#8217;s Framewave</a> eller <a href="http://www.nvidia.com/object/cuda_home.html">nVidia&#8217;s CUDA</a>.</p>
<table>
<tr style="vertical-align:top">
<td>
<a href="http://developer.amd.com/cpu/libraries/framewave/Pages/default.aspx"><img src="/wp-content/uploads/2010/01/framewave.gif" style="width:250px;padding-right:10px;border:none;" alt="" /></a></td>
<td><a href="http://www.nvidia.com/object/cuda_home.html"><img src="/wp-content/uploads/2010/01/cuda_logo.jpg" style="width:220px;padding-right:40px;border:none;" alt="" /></a></td>
</tr>
</table>
<p>Ligeledes vil der være særlige elementer i billederne der skal tages særlig hånd om, f.eks. vejstriber og overgange mellem forskellige belægningstyper med videre.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hinnerup.net/permanent/2010/01/02/structural-image-processing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Glædelig Jul og Godt Nytår</title>
		<link>http://www.hinnerup.net/permanent/2009/12/24/gl%c3%a6delig-jul-og-godt-nytar/</link>
		<comments>http://www.hinnerup.net/permanent/2009/12/24/gl%c3%a6delig-jul-og-godt-nytar/#comments</comments>
		<pubDate>Thu, 24 Dec 2009 12:55:09 +0000</pubDate>
		<dc:creator>Tobias Hinnerup</dc:creator>
				<category><![CDATA[Blandet]]></category>

		<guid isPermaLink="false">http://www.hinnerup.net/?p=747</guid>
		<description><![CDATA[Hinnerup Net ønsker alle vore kunder og samarbejdspartnere en glædelig jul og et godt nytår.
Herfra tak for året der går på hæld, med alle de bedste ønsker for de næstkommende.

]]></description>
			<content:encoded><![CDATA[<p>Hinnerup Net ønsker alle vore kunder og samarbejdspartnere en glædelig jul og et godt nytår.</p>
<p>Herfra tak for året der går på hæld, med alle de bedste ønsker for de næstkommende.</p>
<p><a href="http://www.hinnerup.net/wp-content/uploads/2009/12/DSCN0291.JPG"><img src="http://www.hinnerup.net/wp-content/uploads/2009/12/DSCN0291-300x225.jpg" alt="Chokolade og guf hører til!" title="Ønsker om Glædelig Jul fra Hinnerup Net" width="475" class="size-medium wp-image-750" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.hinnerup.net/permanent/2009/12/24/gl%c3%a6delig-jul-og-godt-nytar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
