<?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>Websiteudvikler &#187; SQL Azure</title>
	<atom:link href="http://websiteudvikler.dk/post/tag/sql-azure/feed" rel="self" type="application/rss+xml" />
	<link>http://websiteudvikler.dk</link>
	<description>med fokus på integration, web 2.0, social media, analytics, konvertering og usability</description>
	<lastBuildDate>Sun, 05 Sep 2010 21:14:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Twitter overvågning med streaming API</title>
		<link>http://websiteudvikler.dk/post/twitter-overvaagning-med-streaming-api.html?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=twitter-overvaagning-med-streaming-api</link>
		<comments>http://websiteudvikler.dk/post/twitter-overvaagning-med-streaming-api.html#comments</comments>
		<pubDate>Sun, 22 Nov 2009 21:48:54 +0000</pubDate>
		<dc:creator>Kevin Steffer</dc:creator>
				<category><![CDATA[Sociale Medier]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[S3]]></category>
		<category><![CDATA[SQL Azure]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://blogs.co3.dk/kevinsteffer/post/twitter-overvaagning-demo-applikation/</guid>
		<description><![CDATA[Jeg har kigget lidt på mulighederne med Twitter API’et eftersom jeg selv er blevet mere og mere fascineret af de alsidige måder som Twitter bruges på. Jeg har leget lidt med en streaming applikation som kan overvåge Twitter med nøgleord, hvor du kan få vist alle tweets (Twitter beskeder), hvor i nøgleordet indgår. Det lyder [...]]]></description>
			<content:encoded><![CDATA[<p>Jeg har kigget lidt på mulighederne med <a href="http://apiwiki.twitter.com/">Twitter API</a>’et eftersom jeg selv er blevet mere og mere fascineret af de alsidige måder som <a href="http://www.twitter.com">Twitter</a> bruges på.</p>
<p>Jeg har leget lidt med en streaming applikation som kan overvåge Twitter med nøgleord, hvor du kan få vist alle tweets (Twitter beskeder), hvor i nøgleordet indgår. Det lyder måske ikke som noget du lige kan bruge, men hvis du har brugt Twitter lidt så har du sikkert stødt ind i, at det er en gængs at skrive #-tegnet foran særlige betydelige ord i en tweet. Jeg har selv observeret, at blive kontaktet af et software firma via Twitter fordi jeg nævnte deres produkts navn og så kiggede de også på mit blog-indlæg og kommenterede på mit spørgsmål til softwaren – en ny vinkel at yde support på eller bare god kundeservice? </p>
<p>Det åbner i hvertfald op for, at hvis du overvåger Twitter kan du skabe nogle ret gode relationer og måske fange misforståelser af dit produkt eller brand, når du involverer dig i andre folks ønsker og spørgsmål.</p>
<p>Jeg gik i gang med at studere Twitters API lidt nærmere og mest interessant fandt jeg deres <a href="http://apiwiki.twitter.com/Streaming-API-Documentation">streaming</a> adgang, hvor man LIVE kan få alle de tweets vist, som bliver fundet på et angivet keyword eller en liste af dem. </p>
<p>Jeg brugte min demo applikation ret intensivt under Microsofts seneste <a href="http://microsoftpdc.com/">konference</a> i Los Angeles (PDC09), hvor de havde annonceret at bruge twitter-nøgleordet <a href="http://twitter.com/#search?q=%23pdc09" target="_blank">#pdc09</a>. Så jeg satte mit program til at overvåge tweets hvori “#pdc09” indgik og kunne følge med i alt, hvad der blev skrevet og annonceret om. </p>
<p>Konferencen havde et LIVE TV-show, hvor man kunne stille spørgsmål til TV showets gæster via Twitter, hvis man skrev til <a href="http://twitter.com/ch9live" target="_blank">@ch9live</a>. Det keyword overvågede jeg også for følge med i alle de spørgsmål der blev stilt TV showets gæster (også de spørgsmål som ikke blev nævnt i showet).</p>
<p>Man kan bruge <a href="http://search.twitter.com">http://search.twitter.com</a>, men det er ikke LIVE og man skal hele tiden opdatere sin søgning, det blev jeg træt af og skrev en lille applikation.</p>
<p><a href="http://blogs.co3.dk/kevinsteffer/wp-content/uploads/2009/11/twitterstreamdemoapp.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="twitterstreamdemoapp" border="0" alt="twitterstreamdemoapp" src="http://blogs.co3.dk/kevinsteffer/wp-content/uploads/2009/11/twitterstreamdemoapp_thumb.png" width="681" height="346" /></a></p>
<h2>Download demo applikation</h2>
<p>Jeg fraskriver mig ethvert ansvar for, hvordan du installere applikationen eller på anden måde bruger den, og at applikationen muligvis ikke fungere da Twitters streaming API stadig er i alpha. Applikationen kræver, at du skal logge på med din Twitter konto, så sådan en skal du selvfølgelig have &#8211; opret dig på <a href="http://www.twitter.com">Twitter</a></p>
<p>Og jeg må på det kraftigste henvise til Twitters dokumentation:</p>
<blockquote><p><strong><font color="#ff0000">IMPORTANT NOTE: The Streaming API is currently under an alpha test</font></strong></p>
<p><font color="#ff0000">All developers using the Streaming API must tolerate possible unannounced and extended periods of unavailability, especially during off-hours, Pacific Time. New features, resources and policies are being deployed on very little, if any, notice. Access to restricted resources is extremely limited and is only granted on a case-by-case basis after acceptance of an additional terms of service document.</font></p>
<p><font color="#ff0000"><a href="http://apiwiki.twitter.com/Streaming-API-Documentation">Læs mere</a></font></p>
</blockquote>
<p><a href="http://bit.ly/twitterstreamdemoinstall" target="_blank">Installér applikationen</a> til Windows</p>
<p><a href="http://bit.ly/twitterstreamdemoappsrc" target="_blank">Download kildekoden</a></p>
<h2>Anvendt teknologi</h2>
<p>Jeg har anvendt Twitters API og Microsofts <a href="http://sql.azure.com/" target="_blank">SQL Azure</a> til opsamling af brugs data, hvis du giver tilladelses til, at jeg må samle det op. Programmet er programmeret i .NET i C# og kræver Framework version 3.5 SP1. Til download og storage har jeg anvendt <a href="http://aws.amazon.com" target="_blank">Amazon Web Services</a>&#160;<a href="http://aws.amazon.com/s3" target="_blank">S3</a>. Sidst har jeg anvendt <a href="http://bit.ly">http://bit.ly</a> til at kunne holde en statistik på, hvormange der klikker på “Installér applikation”-&#160; og “Download kildekoden” links’ne.</p>
]]></content:encoded>
			<wfw:commentRss>http://websiteudvikler.dk/post/twitter-overvaagning-med-streaming-api.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Windows Azure eksempel på SQL Service</title>
		<link>http://websiteudvikler.dk/post/windows-azure-eksempel-paring-sql-service.html?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=windows-azure-eksempel-paring-sql-service</link>
		<comments>http://websiteudvikler.dk/post/windows-azure-eksempel-paring-sql-service.html#comments</comments>
		<pubDate>Mon, 24 Nov 2008 20:39:33 +0000</pubDate>
		<dc:creator>Kevin Steffer</dc:creator>
				<category><![CDATA[Webudvikling]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Microsoft .NET]]></category>
		<category><![CDATA[SQL Azure]]></category>

		<guid isPermaLink="false">http://blogs.co3.dk/KevinSteffer/post.aspx?id=b9756c88-a598-4820-a139-d3795cf8854c</guid>
		<description><![CDATA[Jeg har afpr&#248;vet Windows Azure SQL Services med succes. Og jeg vil pr&#248;ve at demonstrere tilgangen med nogle kode eksempler, men overordnet er min oplevelse at det minder lidt om at arbdejde Db4o. Db4o er en &#34;Database For Objects&#34;, og er bygget op omkring at databasen er fil p&#229; filsystemet som der arbejdes med gennem [...]]]></description>
			<content:encoded><![CDATA[<p>Jeg har afpr&#248;vet <a href="http://azure.com/">Windows Azure</a> <a target="_blank" href="http://www.microsoft.com/azure/sql.mspx">SQL Services</a> med succes. Og jeg vil pr&#248;ve at demonstrere tilgangen med nogle kode eksempler, men overordnet er min oplevelse at det minder lidt om at arbdejde <a target="_blank" href="http://www.db4o.com/">Db4o</a>. <a target="_blank" href="http://www.db4o.com/">Db4o</a> er en &quot;Database For Objects&quot;, og er bygget op omkring at databasen er fil p&#229; filsystemet som der arbejdes med gennem databasesystemets <a target="_blank" href="http://da.wikipedia.org/wiki/API">API</a>. Et eksempel p&#229; hvordan <a target="_blank" href="http://www.db4o.com/">Db4o</a> kan bruges:</p>
<h2>(<a target="_blank" href="http://www.db4o.com/">Db4o</a>) &#197;bn database</h2>
<p>&#160;</p>
<div class="csharpcode">
<pre><span class="lnum">   1:  </span><span class="rem">// accessDb4o</span></pre>
<pre><span class="lnum">   2:  </span>&#160;</pre>
<pre><span class="lnum">   3:  </span>   ObjectContainer db=Db4o.openFile(Util.DB4OFILENAME);</pre>
<pre><span class="lnum">   4:  </span>   <span class="kwrd">try</span> {</pre>
<pre><span class="lnum">   5:  </span>       <span class="rem">// do something with db4o</span></pre>
<pre><span class="lnum">   6:  </span>   }</pre>
<pre><span class="lnum">   7:  </span>   <span class="kwrd">finally</span> {</pre>
<pre><span class="lnum">   8:  </span>       db.close(); </pre>
<pre><span class="lnum">   9:  </span>   }</pre>
</div>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<h2>(<a target="_blank" href="http://www.db4o.com/">Db4o</a>) Gem et objekt</h2>
<p>&#160;</p>
<div class="csharpcode">
<pre><span class="lnum">   1:  </span><span class="rem">// storeFirstPilot </span></pre>
<pre><span class="lnum">   2:  </span>&#160;</pre>
<pre><span class="lnum">   3:  </span>   Pilot pilot1=<span class="kwrd">new</span> Pilot(<span class="str">&quot;Michael Schumacher&quot;</span>,100);</pre>
<pre><span class="lnum">   4:  </span>   db.set(pilot1); </pre>
<pre><span class="lnum">   5:  </span>   System.<span class="kwrd">out</span>.println(<span class="str">&quot;Stored &quot;</span>+pilot1);</pre>
<pre><span class="lnum">   6:  </span>&#160;</pre>
<pre><span class="lnum">   7:  </span>    OUTPUT: </pre>
<pre><span class="lnum">   8:  </span>       Stored Michael Schumacher/100</pre>
</div>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<h2>(<a target="_blank" href="http://www.db4o.com/">Db4o</a>) Foresp&#248;rgsel</h2>
<p>&#160;</p>
<div class="csharpcode">
<pre><span class="lnum">   1:  </span><span class="rem">// retrieveAllPilotQBE </span></pre>
<pre><span class="lnum">   2:  </span>   </pre>
<pre><span class="lnum">   3:  </span>   Pilot proto=<span class="kwrd">new</span> Pilot(<span class="kwrd">null</span>,0);</pre>
<pre><span class="lnum">   4:  </span>   ObjectSet result=db.get(proto);</pre>
</div>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>&#160;</p>
<p>Ser vi n&#230;rmere p&#229; hvordan <a target="_blank" href="http://azure.com/">Windows Azure</a> <a target="_blank" href="http://www.microsoft.com/azure/sql.mspx">SQL Services</a> kan bruges her i mit eksempel via <a target="_blank" href="http://en.wikipedia.org/wiki/SOAP_(protocol)">SOAP</a>:</p>
<h2>(<a target="_blank" href="http://azure.com/">Azure</a>) &#197;bn database, betegnes som Container, og gem et objekt.</h2>
<pre class="code"><span style="color: blue">public void </span>Save()
{
    <span style="color: blue">using </span>(<span style="color: #2b91af">SitkaSoapServiceClient </span>s = <span style="color: blue">new </span><span style="color: #2b91af">SitkaSoapServiceClient</span>(<span style="color: #a31515">&quot;BasicAuthEndpoint&quot;</span>))
    {
        s.ClientCredentials.UserName.UserName = <span style="color: #2b91af">ConfigurationManager</span>.AppSettings[<span style="color: #a31515">&quot;sdsUsername&quot;</span>];
        s.ClientCredentials.UserName.Password = <span style="color: #2b91af">ConfigurationManager</span>.AppSettings[<span style="color: #a31515">&quot;sdsPassword&quot;</span>];

        <span style="color: #2b91af">Scope </span>objScope = <span style="color: blue">new </span><span style="color: #2b91af">Scope</span>();
        objScope.AuthorityId = AuthorityId;                       <span style="color: green">// My solution name
        </span>objScope.ContainerId = ContainerId;                       <span style="color: green">// The id of the container
        </span><span style="color: #2b91af">Entity </span>objSupportEntity = <span style="color: blue">new </span><span style="color: #2b91af">Entity</span>();
        objSupportEntity.Id = <span style="color: blue">this</span>.Id;                            <span style="color: green">// Unique id of my entity
        </span>objSupportEntity.Kind = <span style="color: blue">this</span>.GetType().ToString();        <span style="color: green">// Name of the Kind
        </span>objSupportEntity.Properties = <span style="color: blue">this</span>.GetDictFromThis();     <span style="color: green">// Properties a Dictionary

        </span>s.Create(objScope, objSupportEntity);                     <span style="color: green">// Save the entity into the container

    </span>}
}</pre>
<pre class="code"><span style="color: blue">private </span><span style="color: #2b91af">Dictionary</span>&lt;<span style="color: blue">string</span>, <span style="color: blue">object</span>&gt; GetDictFromThis()
{
    <span style="color: #2b91af">Dictionary</span>&lt;<span style="color: blue">string</span>, <span style="color: blue">object</span>&gt; obj = <span style="color: blue">new </span><span style="color: #2b91af">Dictionary</span>&lt;<span style="color: blue">string</span>, <span style="color: blue">object</span>&gt;();
    obj[<span style="color: #a31515">&quot;Id&quot;</span>] = <span style="color: blue">this</span>.Id;
    obj[<span style="color: #a31515">&quot;Subject&quot;</span>] = <span style="color: blue">this</span>.Subject;
    obj[<span style="color: #a31515">&quot;Message&quot;</span>] = <span style="color: blue">this</span>.Message;
    obj[<span style="color: #a31515">&quot;Date&quot;</span>] = <span style="color: blue">this</span>.Date;
    obj[<span style="color: #a31515">&quot;IsSolved&quot;</span>] = <span style="color: blue">this</span>.IsSolved;
    obj[<span style="color: #a31515">&quot;CreatedBy&quot;</span>] = <span style="color: blue">this</span>.CreatedBy;
    obj[<span style="color: #a31515">&quot;AssignedTo&quot;</span>] = <span style="color: blue">this</span>.AssignedTo;
    <span style="color: blue">return </span>(obj);
}</pre>
<p>Metoden GetDictFromThis kunne vi faktisk lave mere generisk hvis vi ville med <a target="_blank" href="http://msdn.microsoft.com/en-us/library/f7ykdhsy(VS.71).aspx">Reflections</a>.</p>
<h2>(<a target="_blank" href="http://azure.com/">Azure</a>) Foresp&#248;rgsel p&#229; alle entities i min container</h2>
<pre class="code"><span style="color: #2b91af">Scope </span>objScope = <span style="color: blue">new </span><span style="color: #2b91af">Scope</span>();
objScope.AuthorityId = AuthorityId;
objScope.ContainerId = ContainerId;
<span style="color: #2b91af">List</span>&lt;<span style="color: #2b91af">Entity</span>&gt; objEntities = s.Query(objScope, <span style="color: #a31515">&quot;from e in entities select e&quot;</span>);</pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p>Scope objektet underst&#248;tter foresp&#248;rgsler i <a target="_blank" href="http://msdn.microsoft.com/en-us/netframework/aa904594.aspx">LINQ</a> og i min Service Reference Configuration til min <a target="_blank" href="http://www.microsoft.com/azure/sql.mspx">SQL Services</a> solution skal vi s&#230;tte &quot;Collection type&quot; til System.Collections.Generic.List da det er hvad <a target="_blank" href="http://www.microsoft.com/azure/sql.mspx">SQL Services</a> return&#233;rer.</p>
<p>Sammen lignet med <a target="_blank" href="http://www.db4o.com/">Db4o</a> er <a target="_blank" href="http://www.microsoft.com/azure/sql.mspx">SQL Services</a> lidt mere abstrakt og der rejser sig ogs&#229; hurtigt nogle h&#229;ndterings sp&#248;rgsm&#229;l i hovedet p&#229; mig: Hvordan styrer jeg hvilke entities der gemmes hvor og i det hele taget bevarer et overblik over min datastruktur? Godt nok har jeg attributen &quot;Kind&quot; p&#229; min Entity, men det er en string-v&#230;rdi og hvad sker der hvis den overskrives med en forkert &quot;Kind&quot;?</p>
<p>S&#229; der skal stadig planl&#230;gges en datastruktur hvor jeg i dette tilf&#230;lde synes der ville virke logisk at man styrer efter &quot;conventions over configuration&quot; s&#229; man bygger en ensartethed op i nogle base-klasser som ens objekters data kan styres med.</p>
<p>Hvis du vil se ovenst&#229;ende <a target="_blank" href="http://azure.com/">Windows Azure</a> <a target="_blank" href="http://www.microsoft.com/azure/sql.mspx">SQL Services</a> i aktion s&#229; hop ind p&#229; <a href="http://co3azurelab.co3.dk">http://co3azurelab.co3.dk</a>. Demo l&#248;sningen er t&#230;nkt som et mikro support-system hvor alle data gemmes i <a target="_blank" href="http://azure.com/">Windows Azure</a> <a target="_blank" href="http://www.microsoft.com/azure/sql.mspx">SQL Services</a> som vist ovenfor.</p>
<p>Demo: <a title="http://labs.co3.dk/azure/" href="http://labs.co3.dk/azure/">http://labs.co3.dk/azure/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://websiteudvikler.dk/post/windows-azure-eksempel-paring-sql-service.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
