<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>DevelopersDevelopersDevelopersDevelopers.NET</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/dmx/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/dmx/feed.xml</link>
    <description>Daniel Meixner&amp;#039;s blog about software development</description>
    <lastBuildDate>Thu, 04 Jan 2018 12:47:42 GMT</lastBuildDate>
    <language>de_DE</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>How to create a Twitter sentiment analysis for your service</title>
      <link>https://docs.microsoft.com/archive/blogs/dmx/how-to-create-a-twitter-sentiment-analysis-for-your-service</link>
      <pubDate>Thu, 04 Jan 2018 10:12:30 GMT</pubDate>
      <dc:creator><![CDATA[DanielMeixner]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/dmx/?p=5155</guid>
      <description><![CDATA[Brian Harry’s recent blogpost about a twitter sentiment analysis as a release gate impressed me a...]]></description>
      <content:encoded><![CDATA[<p>Brian Harry’s recent blogpost about a twitter <a href="https://blogs.msdn.microsoft.com/bharry/2017/12/15/twitter-sentiment-as-a-release-gate/">sentiment analysis</a> as a release gate <a href="https://twitter.com/DanielMeixner/status/948208273773285376">impressed me a lot</a> and I wanted to find out how complicated it is to do an analysis for my own stuff. So here’s a little tutorial how you set up things from scratch if you want to know what “the internet”&nbsp; thinks about your product.</p><p>I was expecting some challenges but I got up to speed very fast – actually way faster then expected. Here’s what I wanted to do and what I’m asking you to do as well:</p><p>1. Specifiy a hashtag to identify tweets related to my service<br>2. Create an Azure Logic App to check Twitter periodically.<br>3. Call the sentiment analysis service provided by Bing.<br>4. Write the results of the analysis into this Azure SQL Database.<br>5. Create a PowerBI Dashboard to display the results in a chart.<br>6. Publish this chart and show it on my Team Services Dashboard.</p><p>This sounds like a lot of work. In fact: It’s not. Before we dive into the details, here’s what I got: </p><p><a href="https://msdnshared.blob.core.windows.net/media/2018/01/image43.png"><img width="691" height="396" title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/01/image_thumb43.png" border="0"></a></p><p>This diagram shows the average sentiment for all tweets related to my specified hashtag on a per hour basis. The closer the value to 1 (the higher the bar) the better is the mood. The black line gives an indication about how many messages have been tweeted – so you have an indication whether an increase or decline is backed by many voices or just a single tweet. I’m pretty sure you could beautify the chart a lot and integrate all kinds of colors but that’s not the focus. </p><p>As always here’s a warning: This post shows the technical aspects – I’m totally aware that an interpretation of the sentiment analysis is a totally different story. Be aware that this analysis only displays the sentiment of people who spoke up on Twitter – there might be plenty of unheard voices, though, so this should be considered as just <em>another </em>feedback channel. Anyway it’s an interesting metric to look at.</p><p>Here’s what I did to get there. You can follow the steps to build it yourself. Another warning: I’m working mostly with free plans here. This will limit your experience as the database size is limited and the number of free service calls is limited as well. If you’re not working on a free plan, cost might occur!</p><h3>Create an Azure SQL Database</h3><p>I didn’t create a new one, I just used one I had for demos anyway. You can use the free version. <a href="https://docs.microsoft.com/en-us/azure/sql-database/sql-database-get-started-portal">Here’s</a> how you do this. Then add a new table to the database to store the Tweet Data. I ran this SQL statement to do so:</p><p><em><font size="2">CREATE TABLE MoreTweets (</font></em><p><em><font size="2">id int PRIMARY KEY IDENTITY,</font></em><p><em><font size="2">createdDate datetime DEFAULT(getdate()),</font></em><p><em><font size="2">tweettext varchar(512) SPARSE NULL,</font></em><p><em><font size="2">sentiment Float NULL,</font></em><p><em><font size="2">author VARCHAR (512) ,</font></em><p><em><font size="2">);</font></em><h3>Create a Twitter account</h3><p>Surprise, surprise, you need a twitter account. Go, get it here: <a href="https://www.twitter.com">https://www.twitter.com</a> You need it to be able to query Tweets from the logic app.</p><h3>Get a Cognitive Services key</h3><p>Microsoft provides a bunch of cognitive services to analyze images, speech and text and so on. We’ll be using this service, but you have to sign up for it. You can do a limited amount of analysis per month for free, that’s what we’ll be doing.<p>Get the key for the Text Analysis API here: <a title="https://azure.microsoft.com/en-us/try/cognitive-services/?api=text-analytics" href="https://azure.microsoft.com/en-us/try/cognitive-services/?api=text-analytics">https://azure.microsoft.com/en-us/try/cognitive-services/?api=text-analytics</a><p>See the screenshot below.<p><a href="https://msdnshared.blob.core.windows.net/media/2018/01/image44.png"><img width="474" height="276" title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/01/image_thumb44.png" border="0"></a><h3>Create a Azure Logic App</h3><p><a href="https://msdnshared.blob.core.windows.net/media/2018/01/image45.png"><img width="502" height="214" title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/01/image_thumb45.png" border="0"></a></p><p>We need an Azure Logic app. If you’re working on the free Azure contingent of an VS MSDN Subscription or on a free trial things are free for you as long as you did not delete the cost limit explicitly. If not and you just want to try out things make sure to disable the logic app after some experimentation as cost will occur!</p><p>Edit the workflow of the logic app in the logic app designer after the logic app has been created.</p><p>Click the “new step” button and add three actions. I was impressed when I figured out, that for everything I wanted to do there’s already a step available which means I won’t have to write a single line of code.&nbsp; Just search for the connectors for Twitter, Text Analytics and SQL Server. Those connectors will provide specific events and actions. Just add them as shown below.</p><p>This is what the workflow should look like. </p><p><a href="https://msdnshared.blob.core.windows.net/media/2018/01/image46.png"><img width="576" height="173" title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/01/image_thumb46.png" border="0"></a></p><p>If you click the Twitter step, it will ask you to configure a connection to Twitter. Specify your credentials. Then enter the appropriate values regarding keywords and interval. I set the interval to 3 Minutes. Choose the keyword as you prefer. If you don’t have a good keyword and still want to do the sample, just search for any product name you’re interested in or check the trending hashtags on Twitter. Be warned: This might bring plenty of traffic to your workflow!</p><p><a href="https://msdnshared.blob.core.windows.net/media/2018/01/image47.png"><img width="479" height="166" title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/01/image_thumb47.png" border="0"></a></p><p>The sentiment analysis task is pretty straight forward. First you have to specify the keys you created earlier and give the new connection a name. Then you want to pass in the text of the tweet found. Just click into the text box. This will open up a menu showing “dynamic content”, which is provided based on previous tasks. In our case, of course we know all content related to a tweet containing our keyword by now. So we can just add the tweet text by clicking the Icon “Tweet text”.</p><p><a href="https://msdnshared.blob.core.windows.net/media/2018/01/image48.png"><img width="509" height="267" title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/01/image_thumb48.png" border="0"></a></p><p>This is what it should look like:</p><p><a href="https://msdnshared.blob.core.windows.net/media/2018/01/image49.png"><img width="511" height="137" title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/01/image_thumb49.png" border="0"></a>&nbsp;</p><p>As a result of this step we will get the sentiment of this tweet. So in our last step will will write all of that into our database. Again in the SQL Server “Insert Row” step, we have to establish a connection to a specific database first. This will be very easy if you’re using an Azure SQL Database – the connections will be available already, you just have to pick the database. Then specify the table (Tweets, in my case) and pass the values – again taken from the dynamic content.</p><p><a href="https://msdnshared.blob.core.windows.net/media/2018/01/image50.png"><img width="522" height="231" title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/01/image_thumb50.png" border="0"></a></p><p>We don’t have to specify the “createdDate” – it will be filled when the value is entered to the database automatically.&nbsp; I also store the author. This would allow me to figure out if there might be a single person who’s affecting the metric (I didn’t implement this filter yet, however).</p><p>We’re done. Let’s run the logic app now. Just click run in the editor. Over time, this will fill your Tweets table in your database.</p><h3>Create a report in Power BI</h3><p>Now create a new report in Power BI. You could do the same thing in Excel, but Power BI is pretty handy when it comes to publishing stuff afterwards. </p><p>In Power BI click “Get Data” and pick “Azure SQL Database”. </p><p><a href="https://msdnshared.blob.core.windows.net/media/2018/01/image51.png"><img width="500" height="320" title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/01/image_thumb51.png" border="0"></a></p><p>Specify servername and database name and choose “Direct Query”. This way the data shown by the report is taken directly from the database (with a cache which can be updated). Now it depends on what you’re going to display. I used the “advanced options” to be able to run a T-SQL query on the data to adjust it before I’ll be using it in my report. </p><p>Here’s the query I’m using:</p><p><em>SELECT</em><p><em>Convert ([datetime], </em><p><em>(Convert(Varchar,DatePart(year, createdDate ))) + '-'</em><p><em>+ (Convert(Varchar,DatePart(month, createdDate ))) + '-'</em><p><em>+ (Convert(Varchar,DatePart(day, createdDate ))) +' '</em><p><em>+ (Convert(Varchar,DatePart(hour, createdDate )))+':00 '</em><p><em>) as dateBasedByHour</em><p><em>,</em><p><em>createdDate,</em><p><em>id, sentiment FROM tweets</em><p>The reason I’m doing this is because I want to have the tweets clustered by hour and not listed separately one by one. This seemed to be a simple way to get there – I basically just skip the minutes and set them to 00. Maybe Power BI can do this in another way as well, but that’s the path I took.</p><p>In Power BI now create a “Line and clustered column chart” as seen below. Activate the values “datebasedbyhour” and “id” and “sentiment” as shown below. Make sure you’re using “Average of sentiment” (not sum) as column value and Count of id (not sum) as a line value. I also added a relative date filter showing values from the last 7 days. </p><p><a href="https://msdnshared.blob.core.windows.net/media/2018/01/image52.png"><img width="663" height="353" title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/01/image_thumb52.png" border="0"></a></p><p>Now let’s publish this on Power BI. You can do this via the File menu.</p><h3>Create a public link</h3><p>After publishing you’ll get a direct link into Power BI Web. Create an “Embed code” there by choosing “publish to web” in the file menu of Power BI Web. You’ll be presented a link to your chart. Be aware that every person with this link will be able to see the chart. In our case it doesn’t matter I guess. The information is public on Twitter anyway. </p><h3>Add the chart on your Team Services dashboard</h3><p>Now go to your Team Services account and add an “Embedded Webpage” Widget on your dashboard. I chose the 3x2 size. Specify the embed link you got. Place the Chart on your <a href="https://docs.microsoft.com/en-us/vsts/report/dashboards/index">dashboard</a>. You’re done.</p><p><a href="https://msdnshared.blob.core.windows.net/media/2018/01/image53.png"><img width="643" height="462" title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/01/image_thumb53.png" border="0"></a></p><p>I think this is a very easy way to always keep an eye on what’s going on in public about your product. If sentiments are declining badly it might be an indicator that something is going wrong. If its increasing or if there’s just more chat about your stuff going on – you might be on the right track.</p><p>Go ahead and give it a try and let me know what you think about it.</p>]]></content:encoded>
    </item>
    <item>
      <title>Lasttests in der Cloud mit Visual Studio Team Services</title>
      <link>https://docs.microsoft.com/archive/blogs/dmx/lasttests-in-der-cloud-mit-visual-studio-team-services</link>
      <pubDate>Mon, 28 Aug 2017 09:12:40 GMT</pubDate>
      <dc:creator><![CDATA[DanielMeixner]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/dmx/?p=5005</guid>
      <description><![CDATA[[bing_translator] Dieser Beitrag beschreibt, wie man einen Lasttest mit Visual Studio Team Services...]]></description>
      <content:encoded><![CDATA[[bing_translator] Dieser Beitrag beschreibt, wie man einen Lasttest mit Visual Studio Team Services anlegt. Mit jedem Visual Studio Team Services Account kommt kostenlos ein monatliches Kontingent von 20000 “Virtual User Minutes” für Lasttests. Das Kontingent verfällt nach einem Monat, wenn es nicht genutzt wurde -  es lohnt sich also Gedanken zu machen, es einfach aufzubrauchen, anstatt es verfallen zu lassen.

Es gibt mehrere Wege einen Test zu erstellen – am, einfachsten ist sicher das Erstellen in Visual Studio. Zur Ausführung in der Cloud benötigt man eine <a href="https://azure.microsoft.com/de-de/free/?wt.mc_id=AID603934_QSG_BLOG_147857">Azure Subscription</a> und  und einen <a href="https://www.visualstudio.com/products/visual-studio-team-services-vs">Visual Studio Team Services Account</a>.
<h3>Erstellung und Ausführung eines Lasttests mit Visual Studio</h3>
Einen Lasttest kann man am einfachsten mit Visual Studio erstellen. Dazu legt man ein Web Performance and Load Test Projekt an, Wie der Name schon sagt, gibt es hier zwei Komponenten: Webtests und Lasttests. Ein Lasttest führt einen oder mehrere Webtests in einer vorgegebenen Häufigkeit aus, um eine gewisse Last auf dem zu testenden System zu erzeugen.

Zunächst braucht man aber den Webtest. Eine *.webtest Datei exisitiert schon im Projekt, man kann beliebige weitere hinzufügen. Nach dem Öffnen des Webtests zeigt sich ein kleiner roter “Record” Knopf. Damit kann man das Mitschneiden des Netzwerkverkehrs auf dem eigenen System starten. Anschließend würde man im Internet Explorer die zu testende Website besuchen und hier beispielsweise einen bestimmten Ablauf auf dem Zielsystem ausführen (bsp. User Login, Produktsuche, Ware in Einkaufskorb legen, Ware aus Einkaufskorb entfernen, ausloggen). Den aufgezeichneten Verkehr kann man anschließend einsehen, editieren und parametrisieren. Auf diese Art wird man unnötige Requests los (bspw. Requests auf Advertising-Anbieter) und kann den Webtest flexibler machen, was die Zielsysteme angeht (indem man zum Beispiel die Zielurl als Parameter anlegt.) Die notwendigen Buttons finden sich im Menü zum Webtest.

<a href="https://msdnshared.blob.core.windows.net/media/2017/08/image511.png"><img width="344" height="265" title="image" style="margin-right: auto;margin-left: auto;float: none" alt="image" src="https://msdnshared.blob.core.windows.net/media/2017/08/image_thumb405.png" border="0" /></a>

Als zweiten Schritt würde man jetzt einen Lasttest zum gleichen Projekt hinzufügen. Das Öffnen des *.loadtest startet einen kleinen Wizard, der durch unterschiedliche Einstellungen führt – hier kann man unter anderem auswählen, welche Webtests im Rahmen des Lasttests gestartet werden sollen. Ein Lasttest ist also eigentlich nichts anderes als eine Ausführungsanweisung für andere Tests – in unserem Fall Webtests.

<a href="https://msdnshared.blob.core.windows.net/media/2017/08/image512.png"><img width="496" height="326" title="image" style="margin-right: auto;margin-left: auto;float: none" alt="image" src="https://msdnshared.blob.core.windows.net/media/2017/08/image_thumb406.png" border="0" /></a>

Eigentlich ist man jetzt schon fast am Ziel. Früher – und damit meine ich die Zeit bevor man die grandiose und komfortable Möglichkeit hatte auf Cloud-Resourcen zuzugreifen – hätte man jetzt den Lasttests direkt aus Visual Studio gestartet und auf einem lokal verfügbaren Agent, vielleicht sogar auf der eigenen Maschine gestartet.

Die Cloud bietet uns hier aber den Komfort einfach auf Agents zuzugreifen, die immer, wenn wir sie brauchen zu Verfügung gestellt werden – ohne, dass Last auf eigenen Rechnern entseht. Und für diese Agents gibt es auch das erwähnte Freikontingent.

<a href="https://msdnshared.blob.core.windows.net/media/2017/08/image513.png"><img width="529" height="347" title="image" style="margin-right: auto;margin-left: auto;float: none" alt="image" src="https://msdnshared.blob.core.windows.net/media/2017/08/image_thumb407.png" border="0" /></a>

In diesem Fall würde ich im Load Test Wizard einfach meinen Team Services Account anwählen und kann dann im zweiten Schritt das Datacenter wählen in dem mein Loadtest ausgeführt wird. An sich ist das Datacenter egal – ich kann rund um den Planeten auswählen. Standardmäßig ist das Datacenter die erste Wahl, das zum Visual Studio Team Services Account am nächsten liegt. Unter gewissen Umständen kann es aber sinnvoll sein hier explizit ein anderes auszuwählen, zum Beispiel, wenn man eine möglichst kleine oder große Distanz von Agent zur Zielapplikation haben möchte.

Zum Ausführen drückt man einfach auf “Run Load Test”. Abhängig von den gewählten Einstellungen läuft dann der Test eben lokal oder in der Cloud. Die Ergebnisse werden in beiden Fällen im Visual Studio angezeigt.

<a href="https://msdnshared.blob.core.windows.net/media/2017/08/image514.png"><img width="435" height="346" title="image" style="margin-right: auto;margin-left: auto;float: none" alt="image" src="https://msdnshared.blob.core.windows.net/media/2017/08/image_thumb408.png" border="0" /></a>
<h3>Lasttests im Azure Portal anlegen und starten</h3>
Zugegebenermaßen ist das zwar ganz nett, aber es haut einen vielleicht noch nicht um – dazu ist es zu naheliegend. Wäre es nicht schön, wenn wir derartige Loadtests auch direkt aus dem Azure Portal ausführen könnten? Von Cloud zu Cloud?

Auch diese Möglichkeit besteht. Im Azure Portal kann man für Web Apps einen Performance Test anlegen. Hier besteht die Möglichkeit entweder einzelne URLs abzufragen oder auch hier einen Webtest aus Visual Studio zu verwenden. Kleiner Hinweis: Tatsächlich wählen wir hier ein *.webstest File – nicht, wie man vielleicht meint, ein *.loadtest. Die Konfiguration der gewünschten Last erfolgt dann im Azure Portal – daduch wird dann aus dem Webtest unterm Strich ein Lasttest. Über den Menüeintrag “Set Account” legt man den VSTS Account fest, in dem die Lasttestergebnisse später sichtbar werden – so sehen alle Beteiligten, ob das System ein Problem bekommt.

<em><strong>Kleiner Hinweis</strong>: In diesem Fall kann als Input für die Generierung des Lasttests übrigens auch ein HTTP-Mitschnitt von </em><a href="https://docs.telerik.com/fiddler/Save-And-Load-Traffic/Tasks/VSWebTest"><em>Fiddler dienen – die Beschreibung dazu findet sich hier</em></a><em>.</em>

Die Ausführung der Tests über das Azure Portal ermöglicht es mir also völlig unabhängig von einer Entwicklungumgebung eine Aussage über das Verhalten der Anwendung unter Last zu bekommen. Spätestens jetzt sollte klar sein, dass es sich in jedem Fall lohnt das freie Lastkontingent einfach mal zu verbraten – man bekommt auf jeden Fall ein besseres Gefühl, wie sich die eigene Anwendung unter bestimmter Last verhält und man braucht noch nicht mal eigene Hardware dafür zur Verfügung zu stellen.

<a href="https://msdnshared.blob.core.windows.net/media/2017/08/image515.png"><img width="324" height="347" title="image" style="margin-right: auto;margin-left: auto;float: none" alt="image" src="https://msdnshared.blob.core.windows.net/media/2017/08/image_thumb409.png" border="0" /></a>

<a href="https://msdnshared.blob.core.windows.net/media/2017/08/image516.png"><img width="343" height="238" title="image" style="margin-right: auto;margin-left: auto;float: none" alt="image" src="https://msdnshared.blob.core.windows.net/media/2017/08/image_thumb410.png" border="0" /></a>
<h3>Lasttests und Visual Studio Team Services</h3>
In Visual Studio Team Services gibt es mehrere Möglichkeiten Lasttests anzulegen. Die offensichtliche ist es ebenso wie im Azure Portal einfach manuell einen Lasttest anzulegen. Die Benutzerführung ist hier ähnlich gehalten wie im Azure Portal. Hier finde ich auch unter “Settings” die Möglichkeit die Last des Lasttests zu konfigurieren.

<a href="https://msdnshared.blob.core.windows.net/media/2017/08/image517.png"><img width="403" height="230" title="image" style="margin-right: auto;margin-left: auto;float: none" alt="image" src="https://msdnshared.blob.core.windows.net/media/2017/08/image_thumb411.png" border="0" /></a>

<a href="https://msdnshared.blob.core.windows.net/media/2017/08/image518.png"><img width="587" height="184" title="image" style="margin-right: auto;margin-left: auto;float: none" alt="image" src="https://msdnshared.blob.core.windows.net/media/2017/08/image_thumb412.png" border="0" /></a>

<a href="https://msdnshared.blob.core.windows.net/media/2017/08/image519.png"><img width="416" height="280" title="image" style="margin-right: auto;margin-left: auto;float: none" alt="image" src="https://msdnshared.blob.core.windows.net/media/2017/08/image_thumb413.png" border="0" /></a>
<h3>Regelmäßige Lasttests nach einem Deployment</h3>
Soweit so gut – aber noch nicht gut genug. Wäre es nicht super, wenn wir derartige Lasttests regelmäßig ausführen? Zum Beispiel nach jedem erfolgten Deployment unserer Anwendung in ein bestimmtes Deployment Environment – beispielsweise das Staging System? Auf diese Weise kann man verhindern, dass man ein System öffentlich macht, das zwar “ganz gut” aussieht, aber  der zu erwartenden Last nicht gewachsen wäre.

Hierzu kann ich einen Task im Release Management einbinden, der einen Lasttest ausführt. Konfiguriert wird er nach dem gleichen Schema – einfach ein *.loadtest file im Release Management und den Pfad zum Ordner mit den Testbinaries angeben. Alle Ergebnisse der Testausführung finde ich dann – wie zu erwarten – unter dem Menüpunkt Loadtest in Visual Studio Team Services.

<a href="https://msdnshared.blob.core.windows.net/media/2017/08/image520.png"><img width="430" height="272" title="image" style="margin-right: auto;margin-left: auto;float: none" alt="image" src="https://msdnshared.blob.core.windows.net/media/2017/08/image_thumb414.png" border="0" /></a>

&nbsp;
<h3>Wieviel Kontingent habe ich noch?</h3>
Wer wissen möchte, wieviel Freikontingent noch verfügbar ist, der findet diese Info auch im Azure Portal:

<a href="https://msdnshared.blob.core.windows.net/media/2017/08/image521.png"><img width="608" height="281" title="image" style="margin-right: auto;margin-left: auto;float: none" alt="image" src="https://msdnshared.blob.core.windows.net/media/2017/08/image_thumb415.png" border="0" /></a>

Hier noch ein paar Links, die den Einstieg erleichtern:
<ul>
 	<li><a href="https://www.visualstudio.com/en-us/docs/test/performance-testing/reference-qa">Q&amp;A</a> zu Lasttests</li>
 	<li><a href="https://www.visualstudio.com/en-us/docs/test/performance-testing/index">Genereller Übersicht in Last Tests und Visual Studio Team Servcies</a></li>
 	<li><a href="https://www.visualstudio.com/en-us/docs/test/performance-testing/getting-started/get-started-simple-cloud-load-test">Lasttests mit VSTS</a></li>
 	<li><a href="https://www.visualstudio.com/en-us/docs/test/performance-testing/run-performance-tests-app-before-release">VSTS Lasttests Tutorial</a></li>
 	<li><a href="https://www.visualstudio.com/en-us/docs/test/performance-testing/app-service-web-app-performance-test">Web App Performance Tests im Azure Portal</a></li>
</ul>
&nbsp;

Frohes Lasttesten!]]></content:encoded>
    </item>
    <item>
      <title>How to get Visual Studio 2017 version number and edition</title>
      <link>https://docs.microsoft.com/archive/blogs/dmx/how-to-get-visual-studio-2017-version-number-and-edition</link>
      <pubDate>Tue, 13 Jun 2017 10:11:36 GMT</pubDate>
      <dc:creator><![CDATA[DanielMeixner]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/dmx/?p=4835</guid>
      <description><![CDATA[If you try to find information on the exact version of Visual Studio 2017 installed on your machine...]]></description>
      <content:encoded><![CDATA[<p>If you try to find information on the exact version of Visual Studio 2017 installed on your machine you might be confused by what you find when you look at the programs and features dialog.</p><p><a href="https://msdnshared.blob.core.windows.net/media/2017/06/image357.png"><img width="855" height="54" title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/2017/06/image_thumb339.png" border="0"></a></p><p>First, you might expect a more detailed display name which also names the edition (like Professional or Enterprise). Next, if you know the version numbers from the past you might expect to see a number starting like “15.x.y.z” instead of “1.x.y.z” – after all Visual Studio 2015 had version numbers starting with “14.x.y.z” so a simple increment seems obvious. Instead you see something like “1.x.y.z”. </p><p>It’s important to understand that the entry shown in the screenshot above relates to the installer of Visual Studio 2017 and not to Visual Studio 2017 itself. The installer of Visual Studio 2017 can typically be found in %ProgramFiles(x86)%\Microsoft Visual Studio\Installer .</p><p>Why is that? You might have noticed already that the overall installation experience of Visual Studio has changed dramatically with Visual Studio 2017 allowing not only very slick and quick installations but also side-by-side instances of Visual Studio 2017 . (See also this <a href="https://blogs.msdn.microsoft.com/visualstudio/2016/06/17/redesigning-visual-studio-installation/">post</a>.) These new capabilities lead to described behavior. </p><p>In case you need to find out the version number of Visual Studio on a PC programmatically there are two ways recommended. </p><p>If you prefer to work with Powershell you can use the vssetup module found here (<a href="https://github.com/Microsoft/vssetup.powershell">https://github.com/Microsoft/vssetup.powershell</a>) which will return all the details of your current Visual Studio 2017 installation. The result will look like shown in the screenshot below.</p><p><a href="https://msdnshared.blob.core.windows.net/media/2017/06/image358.png"><img width="533" height="101" title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/2017/06/image_thumb340.png" border="0"></a></p><p>As an alternative you can run <a href="https://github.com/Microsoft/vswhere">vswhere.exe</a> which can be found in the installation folder of Visual Studio Installer per default. If you can’t find it there, it can also installed manually, e.g. via <a href="https://chocolatey.org/packages/vswhere">chocolatey</a>. More details can be found <a href="https://github.com/Microsoft/vswhere">here</a>. The result of vswhere.exe looks like shown below.</p><p><a href="https://msdnshared.blob.core.windows.net/media/2017/06/image359.png"><img width="839" height="233" title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/2017/06/image_thumb341.png" border="0"></a></p>]]></content:encoded>
    </item>
    <item>
      <title>A speedway to Continuous Integration and Continuous Deployment for Java, Node or .NET - Yo Team step by step</title>
      <link>https://docs.microsoft.com/archive/blogs/dmx/a-speedway-to-continuous-integration-and-continuous-deployment-for-java-node-or-net-yo-team-step-by-step</link>
      <pubDate>Fri, 28 Apr 2017 09:47:31 GMT</pubDate>
      <dc:creator><![CDATA[DanielMeixner]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/dmx/?p=4776</guid>
      <description><![CDATA[In this blog post I describe step by step how you set up CI/CD for a Java application in no time. It...]]></description>
      <content:encoded><![CDATA[In this blog post I describe step by step how you set up CI/CD for a Java application in no time. It will take way longer to read this tutorial then actually setting up. I promise.
You might have heard of Yeoman, a great code generation tool. My <a href="https://donovanbrown.com/post/yo-Team">colleague Donovan Brown created a generator generator-team</a> to allow setup of complete CI/CD chains for a number of languages in minutes. (You can find Donvans original post <a href="https://donovanbrown.com/post/yo-Team">here</a>).
Here's a quick tutorial how you get going starting from scratch. It's all pretty straight forward however you might get confused when it comes to the credentials. See below. So I thought it's a good idea to provide a more detailed guide.

<em><strong>Hint</strong>:
</em>

<em>In case you don't want to run step 1-4 and have Docker installed on your machine you can also just pull danielmeixner/yo-team-bash from https://hub.docker.com/r/danielmeixner/yo-team-bash/
However things might behave differently than described here – this is because in docker you're command line only and you should set up your git credentials first. I'll describe some of those specifics in another post.
</em>
<ul style="margin-left: 72pt">
 	<li><em>docker pull danielmeixner/yo-team-bash
</em></li>
 	<li><em>docker run -it danielmeixner/yo-team-bash
</em></li>
</ul>
<strong><em>Step by step:
</em></strong>
<ol>
 	<li>
<div><strong>Install NodeJs.
<a href="https://github.com/nodejs/node"></a></strong>NodeJs provides the runtime required for Yeoman which is the basis for everything else.</div>
I found the my old 6.x version didn't work so I recommend using the latest version. On my machine <strong>v7.7.3</strong> works like a charm.

You can download a NodeJs installer <a href="https://nodejs.org/en/">here</a>.</li>
 	<li>
<div><strong>Install Yeoman.
</strong>Yeoman is a based on node so you install it using npm. If you want to know more about Yeoman check out the <a href="https://yeoman.io">Yeoman website.</a> It's a fantastic tool so it's worth a look. And by the way it's <a href="https://github.com/yeoman/yo">open source</a>.
Open a commandline and run</div>
<p style="margin-left: 36pt"><em>npm install -g yo </em></p>
</li>
 	<li>
<div><strong>Install the team generator.
</strong></div>
Yeoman needs additional code generators to be able to generate stuff. In this step you install the required generator to be able to automate setup of CI/CD in VSTS. It's called generator-team and it's open source.
Open a commandline and run

npm install -g generator-team</li>
 	<li><strong>Install Git. [Optional|recommended]</strong>
You might have Git already installed anyway. You don't really need git for the setup, but it's good to have it to do the first push into your repo. Also the automation tries to fire some Git commands. If you don't have Git installed you might run into errors, however these are typically not completely stopping the show. I still recommend having Git installed. For this tutorial I supposed Git is installed.
You can download Git <a href="https://git-scm.com/downloads">here</a>.</li>
 	<li>
<div><strong>Install Visual Studio Code. [Optional]</strong></div>
You don't really need Visual Studio Code, but I will use it in this tutorial. It's works cross platform and is <a href="https://github.com/Microsoft/vscode">open source</a>.

You can download the installer <a href="https://code.visualstudio.com/Download">here</a>.<em>
</em></li>
 	<li><strong>Set up a free Team Services account</strong>
<a href="https://www.visualstudio.com/team-services/">here</a>. If you already have an account, just use that one.</li>
 	<li><strong>Set up an Azure trial subscription</strong>
<a href="https://azure.microsoft.com/">here</a>. We'll deploy to Azure so we don't have to set up our own hosting in this tutorial. However you could also deploy to a Docker host, if you want. If you already have a subscription that's fine as well.</li>
 	<li>
<div><strong>Start Yo Team
</strong>Trigger the yo team generator. Open a command line and type</div>
<em>yo team</em></li>
 	<li>
<div><strong>Follow the wizard.</strong>
Yo asks you for several inputs. I will explain what those inputs are based on a Java application running on Azure. The first thing you might see (only the first time) is this. <img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/04/042817_0944_YoTeamstepb1.png" /></div>
This only appears if you're running yo for the first time. For our purposes it's not relevant if you answer with Y or n.</li>
 	<li>
<div><strong>Specify Account Name</strong>.
Yo will ask you for an account name.</div>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/04/042817_0944_YoTeamstepb2.png" />

You can use the generator for work with Team Foundation Server. Specify the full URL then as shown. However in our case I consider you have a Visual Studio Team Services account. Then just specify the account name. You can find it in your URL. It's basically the subdomain. In my case it's "dmx". So I respond with dmx.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/04/042817_0944_YoTeamstepb3.png" /></li>
 	<li>
<div>Now I'm asked for my <strong>Personal Access Token</strong>.</div>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/04/042817_0944_YoTeamstepb4.png" />

A personal access token (PAT) is required for giving access to my Team Services account for the Yo tool. I have to create a PAT first. So I navigate to my Team Services account (in my case <a href="https://dmx.visualstudio.com">https://dmx.visualstudio.com</a>) and mouse over my icon in the upper right corner and chose "Security". A page opens where I can create a new PAT. Simply click "Add", give the PAT a description and create a token. I choose "All scopes" to make sure Yo can do whatever it takes. You can invalidate our key right after we are finished. But first create it with "Create Token".<img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/04/042817_0944_YoTeamstepb5.png" />

You have to copy the token in the next dialog. There won't be another chance so better copy it right now! It's pretty long. Don't show it to anybody and keep it safe like a password!<img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/04/042817_0944_YoTeamstepb6.png" />

Provide this PAT as answer.</li>
 	<li>&nbsp;
<div><strong> Configure Build Queue.
</strong>Yo Team will use your PAT to figure out which agent queues are available to build your source code. I prefer to pick "Hosted" here. It certainly depends on what you already have set up, however Hosted should work under all circumstances. You can select using the arrow keys up and down and then just click return.</div>
<img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/04/042817_0944_YoTeamstepb7.png" /></li>
 	<li><strong>Appliation type
</strong>
<div><strong> </strong></div>
Yo Team will ask you what kind of application you want to set up. I'll pick a Java app for this demo. Again, chose with the arrow keys.</li>
 	<li><strong>Name of application
</strong>
<div><strong> </strong></div>
Next specify the name of the app. This will be used as Application name and also as name for the team project you'll be creating in VSTS. You can use whatever you want. I recommend avoiding special characters.

I chose <em>tmpMyYoJavaDemo03</em></li>
 	<li><em></em><strong>Deployment Target
</strong>

<strong> </strong>Yo Team will ask you where you want to deploy – to a Docker host or to Azure App Service? For this demo I don't want to set up a Docker host but just be able to deploy. So I pick Azure.</li>
 	<li><strong>Azure Subscription
</strong>Yo Team asks me which subscription I want to use. Maybe you don't have a choice here, maybe you'll see several subscriptions. Just pick the one where you want to deploy to. I'll go with my MSDN subscription here. If I would have chosen Docker I'd had different questions regarding my Docker host here.</li>
 	<li><strong>Group ID</strong>
Because we chose a JAVA app we also have to specify our GroupId. I just pick <em>MyYoJavaDemoGroup</em> here.</li>
 	<li><strong>Install Dependencies?</strong>
Next you're being asked if you want to install dependencies. I prefer <strong><em>No</em></strong> here otherwise some dependencies will be downloaded on my machine. But I don't need this, I just want to push the code later.</li>
 	<li><strong>Magic starts now</strong>. All in all it looks like this and now the magic starts…<img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/04/042817_0944_YoTeamstepb8.png" /></li>
 	<li><span style="color: red;background-color: yellow"><strong>Credentials again?
</strong></span>
<div><span style="color: red;background-color: yellow"><strong> </strong></span></div>
You might be asked for credentials again and this might be confusing to you. This depends on how you've been working with Git already and how it's been set up locally for you. It's important to note that these credentials are credentials to access your Git repo on VSTS. So your default VSTS credentials might not work. If in doubt go to your VSTS account, open the security page again (as before) and set alternate authentication credentials for your account. Use these to login.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/04/042817_0944_YoTeamstepb9.png" />

When asked for your username use the user name as specified (including @something.com) so e.g. <a href="mailto:your.name@live.com">your.name@live.com</a>. You'll be prompted for the password as well.</li>
 	<li>When everything worked as expected if you get a "Now all you have to do is push when ready" message.</li>
 	<li>If you're used to Git, you can do the push by using the command line git commands. Or you open Visual Studio Code. First navigate to the brand-new directory containing code. In my case I do so by running

<em>cd tmpMyYoJavaDemo03</em></li>
 	<li><em></em>Open Visual Studio Code in this folder by typing

<em>code . </em>
Don't forget the ".", otherwise you can navigate to the folder manually in Visual Studio Code.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/04/042817_0944_YoTeamstepb10.png" /></li>
 	<li>Now navigate to the Git panel in Visual Studio Code and select "Push to …" in the menu.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/04/042817_0944_YoTeamstepb11.png" /></li>
 	<li>In the subsequent dialog choose "origin" as your target.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/04/042817_0944_YoTeamstepb12.png" /></li>
 	<li>This will push the code to your VSTS account. You will find it in the "Code" tab of your account. It will also trigger a build and after the build it will deploy to your Azure subscription into a newly created Azure App Service.</li>
</ol>]]></content:encoded>
    </item>
    <item>
      <title>Create an insane developer workstation in the cloud</title>
      <link>https://docs.microsoft.com/archive/blogs/dmx/create-an-insane-developer-workstation-in-the-cloud</link>
      <pubDate>Wed, 22 Mar 2017 13:07:01 GMT</pubDate>
      <dc:creator><![CDATA[DanielMeixner]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/dmx/?p=4676</guid>
      <description><![CDATA[&nbsp; In this blogpost I describe how to set up your perfect developer workstation running Visual...]]></description>
      <content:encoded><![CDATA[<p>&nbsp;</p> <p>In this blogpost I describe how to set up your perfect developer workstation running Visual Studio 2017 in the cloud without any installation steps required on your side. </p> <p><strong>Why?</strong></p> <p>As developers we always need more performance. A faster CPU or more RAM or more space. Sometimes our physical machines just aren’t powerful enough. On the other hand I often hear from developers who are owning an MSDN license already that they don’t know what to do with the monthly Azure credits which come with MSDN. </p> <p><strong>Here’s my proposal</strong>: Even if your company doesn’t build a cloud service yet and even if you are not very experienced with cloud computing at all – <em><u>why not set up a powerful developer Workstation in the cloud</u></em> – it will cost you nothing! 56GB of RAM. 8 Cores. Or more? Sounds good?</p> <p>If you are licensed with MSDN you get a certain amount of monthly credit you can spend on Azure workloads. If you don’t spend it, it’s gone. If you do spend it, you can use Azure until your credits are gone and then your Azure service just stops working. Per default there’s a spending limit of 0 which makes sure you don’t have to pay and stay within the free credits. So as long as you don’t explicitly delete this limit, you’re save. <br>You haven’t activated your Azure credit yet? <a href="https://blogs.msdn.microsoft.com/dmx/2017/03/22/english-step-by-step-activate-your-free-azure-monthly-credit-for-your-msdn-license/">Here’s a tutorial I wrote how to do this.</a></p> <p>In case you don’t have an MSDN license – go ahead and start an Azure trial. You can then follow the same process as described below and can set up a powerful developer VM (However your budget is different and your trial will expire at some point in time). You can <a href="https://azure.microsoft.com/de-de/free/">activate your Azure trial here</a>.</p> <p>This is an awesome opportunity to get your hands on new software like Visual Studio 2017 which is provided within a VM template already for you. If you like it you might consider trying out the software with your current project and code files. And if you really fancy the experience, this might become your number one developer workstation you connect to every day. In case this is something you’re looking into you should definitely check out <a href="https://azure.microsoft.com/en-us/services/devtest-lab/">our Azure Dev/Test labs</a> as well which is our service offering for exactly this scenario with some additional features. But I think I will cover this in another post.</p> <p>So here’s my step by step tutorial. If you already know how to set up a VM – go ahead, do it, this is the procedure described here.<strong><font style="background-color: #ffff00"> But make sure you switch on Auto-shutdown to save your credits during the times where you’re not using your machine (see steps below). This is important!&nbsp; </font></strong></p> <p><strong>Control cost by shutting down</strong></p> <p><font style="background-color: #ffffff">You might wonder if this makes any sense – a powerful VM on Azure doesn’t come for free and if you take a look at the cost of a really powerful VM it might be a multiple of your free Azure credits. The thing is that the estimated cost per VM which you see in the Azure portal is estimated on a 24/7 basis. This means the estimated cost you see here is a good indication – but based on your usage you can control cost. This makes perfect sense and for our scenario it means if you run the VM just for a few hours every workday you can reduce the cost to a level where you stay within the free Azure contingent.</font> Of course – if you find you like what you see you always have the chance to exceed the limit after you disabled it or you also can scale up or down the machine you are using after creation.</p> <p>If you want to save credits, don’t just shutdown the machine from within the machine but make sure you stop the machine from the Azure portal. (see below) </p> <h1>Step by step – set up a powerful Azure VM running Visual Studio 2017</h1> <p>&nbsp;</p> <p>1. Visit the Azure portal (<a href="https://portal.azure.com">https://portal.azure.com</a>) and create a new VM. To do so, click the + on the left, then select “compute” and “see all”.</p> <p>&nbsp;</p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image536.png"><img title="image" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb504.png" width="544" height="380"></a></p> <p>2. Search for Visual Studio, pick the template you want to use.</p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image537.png"><img title="image" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb505.png" width="580" height="210"></a></p> <p>&nbsp;</p> <p>3. Click Create. A configuration blade will open. Provide the basic information like machine name, user, password, your Azure subscription and a resource group. A resource group is logical construct which holds some Azure resources (like the VM we are creating). You can pick any name to create a new one or use an existing.</p> <p>When it comes to Location pick one which is close to you to avoid unnecessary latency.</p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image538.png"><img title="image" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb506.png" width="421" height="376"></a></p> <p>&nbsp;</p> <p>4.&nbsp; Confirm this dialog at the bottom of the blade. No the fun starts. We can pick a size of the VM. This means we can configure stuff like RAM and cores. Pick “View all” to see more available configurations.</p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image539.png"><img title="image" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb507.png" width="541" height="344"></a></p> <p>5. Go and find a configuration that should work for you. As said before – you can control actual cost of the VM by reducing unnecessary uptimes. A DS3 machine will offer you 8 cores and 56GB RAM. This is somewhat faster than my laptop. As said before -&nbsp; you can’t exceed the zero spending limit if you’re licensed via MSDN as long as you didn’t remove the limit manually.</p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image540.png"><img title="image" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb508.png" width="637" height="445"></a></p> <p>6. Confirm your configuration and provide the necessary setting in the next blade. See a sample configuration below. The only thing where you really have to provide some values is the networking part. For all others you can keep the defaults. Provide an adresss space (e.g. 12.0.0.0/24) and a subnet address range (e.g. 12.0.0.0/24) and pick a name for your subnet.</p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image541.png"><img title="image" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb509.png" width="848" height="261"></a></p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image542.png"><img title="image" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb510.png" width="332" height="508"></a></p> <p>7. Confirm you configuration. You will get a summary and your configuration will be validated. Click OK to start the deployment. In the portal a notification will show up.</p> <p>&nbsp;</p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image543.png"><img title="image" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb511.png" width="513" height="180"></a></p> <p>8. In the notification era you will find information on how much credit is left as well. Here’s a sample screenshot from my credits. Thank got the month is almost over and I will get a new credit in a few days.</p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image544.png"><img title="image" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb512.png" width="434" height="158"></a></p> <p>9. After a few minutes you’ll see the message that the deployment was successful. This means your machine is running.</p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image545.png"><img title="image" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb513.png" width="444" height="191"></a></p> <p>10. Click the “Connect“ button to download an *.rdp file. Click the downloaded file to start an RDP session with your brand new machine.</p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image546.png"><img title="image" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb514.png" width="813" height="146"></a></p> <p>11. Enter your credentials. Make sure you provide your name as machinename\username! In case your machine can’t be found it might still be booting. So give it another try in a few seconds.</p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image547.png"><img title="image" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;margin: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb515.png" width="223" height="244"></a></p> <p>12. As soon as you are connected you’re done. You have set up a virtual machine running Visual Studio 2017 – go ahead and start it, connect it with your account and your source code repositories in VSTS or on Github.</p> <p>&nbsp;</p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image548.png"><img title="image" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb516.png" width="622" height="655"></a></p> <p>13. This last step is important:<font style="background-color: #ffff00"> I recommend you configure auto-shutdown.</font> Your VM will always be shut down automatically at a point in time you choose. Every day. This will save you some credits when you don’t need the machine.</p> <p>15. If you want to start or stop the machine manually, do it from the Azure portal using this menu bar:</p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image549.png"><img title="image" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;margin: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb517.png" width="813" height="134"></a></p> <p>&nbsp;</p> <h1>Check your spending limit</h1> <p>1. You may want to check if your spending limit is still active. You can do this by navigating to “Billing” in the portal. Then click “manage” in the upper menu. </p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image550.png"><img title="image" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb518.png" width="781" height="460"></a></p> <p>2. This will forward you to the “old” Azure portal. You will see that whether you still have set the limit and you can deactivate the limit here. </p> <p>&nbsp;</p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image551.png"><img title="image" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb519.png" width="891" height="580"></a></p>]]></content:encoded>
    </item>
    <item>
      <title>(deutsch) Schritt für Schritt zum Entwicklerarbeitsplatz in der Cloud</title>
      <link>https://docs.microsoft.com/archive/blogs/dmx/deutsch-schritt-fr-schritt-zum-entwicklerarbeitsplatz-in-der-cloud</link>
      <pubDate>Wed, 22 Mar 2017 12:59:20 GMT</pubDate>
      <dc:creator><![CDATA[DanielMeixner]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/dmx/?p=4416</guid>
      <description><![CDATA[&nbsp; Dieser Blogpost beschreibt, wie man sich seine perfekte Entwicklungsumgebung in der Cloud...]]></description>
      <content:encoded><![CDATA[<p>&nbsp;</p> <p>Dieser Blogpost beschreibt, wie man sich seine perfekte Entwicklungsumgebung in der Cloud erschafft, indem man in wenigen Schritten eine virtuelle Maschine mit Visual Studio 2017 erstellt – ohne Kosten!</p> <p><strong>Warum das Ganze?</strong></p> <p>Der Grund ist recht einfach: Als Entwickler geht es nie schnell genug, wir könnten immer mehr RAM oder mehr CPU-Leistung vertragen. Auf der anderen Seite hat man als MSDN-lizensierter Entwickler ein monatliches kostenloses Azurekoningent – oftmals wissen wir nichts damit anzufangen. </p> <p><strong>Mein Vorschlag ist</strong>:&nbsp; Selbst wenn aktuell Cloudcomputing vielleicht für den ein oder anderen im Entwickleralltag noch kein Thema ist, kann ich als Entwickler von der Cloud profitieren. Ich setze mir also einfach eine High-End Entwicklerworkstation gehostet auf Azure auf. Und im Rahmen der MSDN Lizenz wird es mich absolut nichts kosten. 56GB RAM? 8 Kerne? Klingt gut, oder?</p> <p>Mit einer MSDN Lizenz bekommt man monatlich ein bestimmtes Kontingent an Azure Guthaben, dass man für nahezu beliebige Workloads auf Azure ausgeben kann. Unter anderem kann ich damit virtuelle Maschinen erstellen. Standardmäßig ist es so eingestellt, dass – sollte ich das Kontingent ausgenutzt haben – mein Workload einfach nicht mehr funktioniert. Meine VM würde einfach abschalten oder mein Service nicht mehr funktionieren. Ich bin also auf der sicheren Seite. Falls Du Dein Azure Kontingent noch nicht aktiviert hast – <a href="https://blogs.msdn.microsoft.com/dmx/2017/03/22/deutsch-schritt-fr-schritt-so-aktiviert-man-sein-azure-guthaben-als-msdn-abonnent/?wt.mc_id=AID603934_QSG_BLOG_147856">hier</a> steht wie das geht. Es ist ganz einfach.</p> <p>Falls Du nicht im Besitz einer MSDN Lizenz bist, kannst Du Dir einen kostenlosen Testzugang zu Azure holen. Das kannst Du <a href="https://azure.microsoft.com/de-de/free/?wt.mc_id=AID603934_QSG_BLOG_147857">hier</a> tun. Danach gilt dieses Tutorial auch für Dich.</p> <p>Die Möglichkeit eine vorkonfigurierte Maschine auf Azure zu betreiben ist eine super Möglichkeit die neue Version auszuprobieren, damit zu spielen, den eigenen Code damit zu testen, Kompatibiliäten zu überprüfen – oder um damit richtig zu arbeiten. Wer Gefallen an der Vorstellung findet Entwicklermaschine auf Azure für sich oder sein Team zu hosten, der sollte sich die <a href="https://azure.microsoft.com/en-us/services/devtest-lab/">Azure Dev/Test Labs</a> auch einmal näher ansehen. Darauf gehe ich jetzt nicht weiter ein, aber letztlich ist das unser Service, der genau dieses Szenario noch komfortabler macht.</p> <p>Hier ist also meine Schritt-für-Schritt Anleitung. Wenn Du schon weißt, wie man eine Azure VM aufsetzt, dann kannst Du einfach loslegen – hier beschreibe ich nichts anderes. <font style="background-color: #ffff00"><strong>Stelle aber auf jeden Fall sicher, dass Du Auto-Shutdown aktivierst, um Dein Kontingent nicht unnötig zu belasten! (siehe unten)</strong></font></p> <p>&nbsp;</p> <p><strong>Kosten sparen durch Shut Down</strong></p> <p>Vielleicht fragt man sich, was das soll – letztlich kostet eine VM auf Azure ja Geld und je stärker die Maschine, umso höher die Kosten. Die geschätzen Preise im Azure Portal pro Maschine übersteigen das Freikontingent im Rahmen der MSDN in der Regel. Allerdings beziehen diese sich auf einen Betrieb rund um die Uhr. Wenn wir also dafür sorgen, dass die VM nur läuft, wenn wir sie benötigen – z.B. ein paar Stunden jeden Werktag - , dann kommen wir mit dem Freikontingent doch schon recht weit. Man hat auch jederzeit die Möglichkeit nach der Erstellung noch die Maschinenleistung zu verändern – eindeutig ein Vorteil einer virtuellen Maschine gegenüber der Abhängigkeit von Hardware.</p> <p>Kleiner Hinweis: Es ist nicht ausreichend, die Maschine einfach herunterzufahren, wie man seinen PC halt so herunterfährt. Um Kosten zu sparen muss man die Maschine entweder über den automatischen Azure Auto-Shutdown Mechanismus stoppen oder im Azure Portal stoppen. Weiter unten steht wie das geht. </p> <h1>Schritt für Schritt Anleitung: So erstellt man eine VM auf Azure mit Visual Studio 2017</h1> <p>&nbsp;</p> <p>1. Gehe auf das Azure Portal (<a href="https://portal.azure.com">https://portal.azure.com</a>) und klicke + auf der linken Seite, dann “compute” und “see all”.</p> <p>&nbsp;</p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb1100.png"><img title="image_thumb[1]" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;margin: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image_thumb[1]" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb1_thumb.png" width="544" height="380"></a></p> <p>2. Suche nach Visual Studio, und wähle die Vorlage, die Du nutzen willst.</p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb3100.png"><img title="image_thumb[3]" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;margin: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image_thumb[3]" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb3_thumb.png" width="580" height="210"></a></p> <p>&nbsp;</p> <p>3. Klicke Create. Das öffnet eine weitere Ansicht zur Konfiguration. Hier gibst Du Username und Passwort an. Interessant ist die Resourcegroup. Das bezeichnet eine Art logischer Klammer um einzelne Azure Resourcen. Du kannst sie nennen wie Du willst. Beim Ort bietet es sich an, einen möglichst nahen Standort zu wählen, um Latenzen zu vermeiden.</p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb1010.png"><img title="image_thumb[10]" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;margin: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image_thumb[10]" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb10_thumb.png" width="421" height="376"></a></p> <p>&nbsp;</p> <p>4.&nbsp; Bestätige und wähle im nächsten Schritt die Größe der VM. Über “View All” siehst Du mehr Konfigurationen. </p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb910.png"><img title="image_thumb[9]" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;margin: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image_thumb[9]" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb9_thumb.png" width="541" height="344"></a></p> <p>5. Du kannst hier wählen was Du willst – lass Dich nicht von den Preisen erschrecken. Da die Maschine nicht rund um die Uhr laufen soll, wird nicht der volle Betrag fällig – und die Kosten sind ja standartmäßig bei 0 Euro gedeckelt, so dass keine Kosten entstehen, nachdem Du Dein Freikontingent aufgebraucht hast. Im schlimmsten Fall ist Deine Maschine schneller abgeschaltet als Du möchtest.</p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb1110.png"><img title="image_thumb[11]" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;margin: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image_thumb[11]" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb11_thumb.png" width="637" height="445"></a></p> <p>6. Bestätige die Konfiguration. Im nächsten Schritt werden noch ein paar Einstellungen gemacht. Spannend ist nur die Netzwerkeinstellung, hier gibst Du Adressraum (z.B.. 12.0.0.0/24) und Subnetzkonfiguration und Namen an (e.g. 12.0.0.0/24).</p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb3510.png"><img title="image_thumb[35]" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;margin: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image_thumb[35]" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb35_thumb.png" width="848" height="261"></a></p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb3310.png"><img title="image_thumb[33]" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;margin: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image_thumb[33]" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb33_thumb.png" width="332" height="508"></a></p> <p>7. Klicke OK. Auf der Zusammenfassung siehst Du nochmal Deine Konfiguration und kannst die Erstellung anstoßen. Das dauert ein paar Minuten. Folgende Meldung wird angezeigt:</p> <p>&nbsp;</p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb1610.png"><img title="image_thumb[16]" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;margin: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image_thumb[16]" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb16_thumb.png" width="513" height="180"></a></p> <p>8. Im Bereich der Benachrichtigungen findest du auch Info zu Deinem verbleibenden Azure Guthaben. Bei mir sind es noch gut 4€. Aber der Monat ist ja nicht mehr lang. <img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none;border-left-style: none;border-bottom-style: none;border-right-style: none" alt="Smile" src="https://msdnshared.blob.core.windows.net/media/2017/03/wlEmoticon-smile4.png"></p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb1710.png"><img title="image_thumb[17]" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;margin: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image_thumb[17]" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb17_thumb.png" width="434" height="158"></a></p> <p>9. Nach ein paar Minuten bekommst du den Hinweis, dass die Maschine erstellt ist.</p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb3710.png"><img title="image_thumb[37]" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;margin: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image_thumb[37]" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb37_thumb.png" width="444" height="191"></a></p> <p>10. Über den “Connect” Knopf laden wir ein *.rdp File und verbinden uns per Remote Desktop zur VM.</p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb3610.png"><img title="image_thumb[36]" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;margin: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image_thumb[36]" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb36_thumb.png" width="813" height="146"></a></p> <p>11. Wir geben Username &amp; Passwort an. Wichtig – der Username benötigt auch den Maschinennamen, z.B.: machinename\username Falls die Verbindung nicht zustande kommt, dann bootet die Maschine vielleicht gerade noch. Probier’s in ein paar Sekunden nochmal.</p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb2010.png"><img title="image_thumb[20]" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;margin: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image_thumb[20]" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb20_thumb.png" width="223" height="244"></a></p> <p>12. Sobald Du verbunden bist kannst Du loslegen. Verbinde VS2017 mit Deinem Account, lade Deine Projekte… Viel Vergnügen!</p> <p>&nbsp;</p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb2310.png"><img title="image_thumb[23]" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;margin: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image_thumb[23]" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb23_thumb.png" width="622" height="655"></a></p> <p>13.&nbsp; Diesen letzten Schritt darfst Du nicht vergessen! <font style="background-color: #ffff00">Konfiguriere auf jeden Fall Auto-Shutdown</font>. Du kannst eine Zeit angeben, wann Deine VM automatisch heruntergefahren wird. Das spart einen Teil Deines monatlichen Freikontingents und Du kannst die VM länger nutzen. </p> <p>15. Manuelles Stoppen geht über den “Stop” Knopf im Azure Portal.</p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb4410.png"><img title="image_thumb[44]" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;margin: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image_thumb[44]" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb44_thumb.png" width="813" height="134"></a></p> <p>&nbsp;</p> <h1>Überprüfe Dein Ausgabenlimit</h1> <p>1. Wenn Du nicht sicher bist, ob Dein Ausgabenlimit auf 0€ noch existiert, dann kannst Du das überprüfen. Geh im Azure Portal auf “Billing” und wähle Deine Subscription. Klicke dann auf “Manage”. Die Ersteinstellung für MSDN lizensierte Nutzer ist mit Ausgabenlimit.</p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb541.png"><img title="image_thumb[54]" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;margin: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image_thumb[54]" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb54_thumb.png" width="781" height="460"></a></p> <p>2. Das bringt Dich zur Übersicht auf der Du siehst, ob Dein Limit noch besteht. </p> <p>&nbsp;</p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb521.png"><img title="image_thumb[52]" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;margin: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image_thumb[52]" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb52_thumb.png" width="891" height="580"></a></p>]]></content:encoded>
    </item>
    <item>
      <title>(english) Step by step – activate your free Azure monthly credit for your MSDN license</title>
      <link>https://docs.microsoft.com/archive/blogs/dmx/english-step-by-step-activate-your-free-azure-monthly-credit-for-your-msdn-license</link>
      <pubDate>Wed, 22 Mar 2017 10:33:00 GMT</pubDate>
      <dc:creator><![CDATA[DanielMeixner]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/dmx/?p=4135</guid>
      <description><![CDATA[In this blogpost I describe how to activate your free monthly Azure credit for your MSDN license....]]></description>
      <content:encoded><![CDATA[<h1><font size="2">In this blogpost I describe how to activate your free monthly Azure credit for your MSDN license. It’s easy! Per default you will have set a spending limit you can’t exceed – it’s set at zero. You have to explicitly delete this limit to be able to exceed you free credits.</font></h1> <p>1. Visit <a href="https://my.visualstudio.com/benefits">https://my.visualstudio.com/benefits</a> and log in.</p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb611.png"><img title="image_thumb[61]" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image_thumb[61]" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb61_thumb.png" width="801" height="559"></a></p> <p>2. Click “Activate” in the Azure tile to start the activation process to get your monthly credit. </p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb2710.png"><img title="image_thumb[27]" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image_thumb[27]" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb27_thumb.png" width="802" height="247"></a></p> <p>3. The activation page will open. You have to accept the terms and then click to sign up.</p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb621.png"><img title="image_thumb[62]" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image_thumb[62]" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb62_thumb.png" width="238" height="209"></a></p> <p>4. The activation is running. Check your inbox for a mail which looks like this.</p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb671.png"><img title="image_thumb[67]" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;margin: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image_thumb[67]" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb67_thumb1.png" width="563" height="442"></a></p> <p>&nbsp;</p> <p>5. Click the link in the mail to navigate to your portal. Sign up if required. Click “Portal” in the upper right to get started.</p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb681.png"><img title="image_thumb[68]" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;margin: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image_thumb[68]" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb68_thumb1.png" width="626" height="406"></a></p> <p>6. You’ll get a notification on the credits you get monthly. The amount of credits depends on your license.</p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb711.png"><img title="image_thumb[71]" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;margin: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image_thumb[71]" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb71_thumb1.png" width="570" height="226"></a></p> <p>7. You’re done! Go and try out some of our services. </p>]]></content:encoded>
    </item>
    <item>
      <title>(deutsch) Schritt für Schritt–so aktiviert man sein Azure Guthaben als MSDN-Abonnent</title>
      <link>https://docs.microsoft.com/archive/blogs/dmx/deutsch-schritt-fr-schritt-so-aktiviert-man-sein-azure-guthaben-als-msdn-abonnent</link>
      <pubDate>Wed, 22 Mar 2017 10:29:59 GMT</pubDate>
      <dc:creator><![CDATA[DanielMeixner]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/dmx/?p=4055</guid>
      <description><![CDATA[Dieser Blogpost beschreibt, wie man sein kostenloses monatliches Azurekontingent als MSDN Abonnent...]]></description>
      <content:encoded><![CDATA[<h1><font size="2">Dieser Blogpost beschreibt, wie man sein kostenloses monatliches Azurekontingent als MSDN Abonnent aktiviert.</font></h1> <p>1. Öffne <a href="https://my.visualstudio.com/benefits">https://my.visualstudio.com/benefits</a> im Browser und logge Dich ein.</p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image531.png"><img title="image" style="border-top: 0px;border-right: 0px;border-bottom: 0px;padding-top: 0px;padding-left: 0px;border-left: 0px;padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb501.png" width="599" height="418"></a></p> <p>2. Auf der “Azure”-Fläche auf “aktivieren” klicken, um den Prozess zu starten.</p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb27_thumb1.png"><img title="image_thumb[27]_thumb[1]" style="border-top: 0px;border-right: 0px;border-bottom: 0px;padding-top: 0px;padding-left: 0px;border-left: 0px;margin: 0px;padding-right: 0px" border="0" alt="image_thumb[27]_thumb[1]" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb27_thumb1_thumb.png" width="802" height="247"></a></p> <p>3. Eine neue Seite öffnet sich. Hier die Vereinbarungen aktzeptieren und “Anmelden” klicken.</p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb62_thumb1.png"><img title="image_thumb[62]_thumb[1]" style="border-top: 0px;border-right: 0px;border-bottom: 0px;padding-top: 0px;padding-left: 0px;border-left: 0px;margin: 0px;padding-right: 0px" border="0" alt="image_thumb[62]_thumb[1]" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb62_thumb1_thumb.png" width="238" height="209"></a></p> <p>4. Die Aktivierung läuft. Nach ein paar Minuten sollte eine neue Email in Deinem Postfach sein, die ungefähr so aussieht.</p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb67_thumb.png"><img title="image_thumb[67]_thumb" style="border-top: 0px;border-right: 0px;border-bottom: 0px;padding-top: 0px;padding-left: 0px;border-left: 0px;margin: 0px;padding-right: 0px" border="0" alt="image_thumb[67]_thumb" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb67_thumb_thumb.png" width="563" height="442"></a></p> <p>&nbsp;</p> <p>5. Über den Link in der Mail kommt man auf eine Website – hier führt der blaue Button “Portal” oben links zum Azure Portal. Bei Bedarf einloggen.</p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb68_thumb.png"><img title="image_thumb[68]_thumb" style="border-top: 0px;border-right: 0px;border-bottom: 0px;padding-top: 0px;padding-left: 0px;border-left: 0px;margin: 0px;padding-right: 0px" border="0" alt="image_thumb[68]_thumb" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb68_thumb_thumb.png" width="626" height="406"></a></p> <p>6. Man erhält sofort eine Benachrichtigung, wie hoch das monatliche Guthaben ist. Der genaue Betrag hängt dabei von der jeweiligen MSDN-Lizenz ab.</p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb71_thumb.png"><img title="image_thumb[71]_thumb" style="border-top: 0px;border-right: 0px;border-bottom: 0px;padding-top: 0px;padding-left: 0px;border-left: 0px;margin: 0px;padding-right: 0px" border="0" alt="image_thumb[71]_thumb" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb71_thumb_thumb.png" width="570" height="226"></a></p>]]></content:encoded>
    </item>
    <item>
      <title>DevOps for IoT (Part 3 – Talking to Azure IoT Hub from VSTS)</title>
      <link>https://docs.microsoft.com/archive/blogs/dmx/devops-for-iot-part-3-talking-to-azure-iot-hub-from-vsts</link>
      <pubDate>Fri, 03 Mar 2017 10:08:16 GMT</pubDate>
      <dc:creator><![CDATA[DanielMeixner]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/dmx/?p=3945</guid>
      <description><![CDATA[In this blogpost, I'll explain how the communication between VSTS and our devices works in our...]]></description>
      <content:encoded><![CDATA[In this blogpost, I'll explain how the communication between VSTS and our devices works in our DevOps for IoT scenario. In two previous blogposts I described the <a href="https://blogs.msdn.microsoft.com/dmx/2017/01/26/devops-for-iot-part-1/">end-to-end scenario</a> and explained how <a href="https://blogs.msdn.microsoft.com/dmx/2017/01/30/devops-for-iot-part-2-installing-an-app-from-within-an-app/">the installation of the application</a> on the target device works. I suggest you read at least the first part to get the big picture.

It's important to point out that the scenario described is technology-agnostic for the most part. It really doesn't matter if your device is running Windows IoT Core (as chosen in my implementation) or any kind or Linux system or something totally different. The only part where this is important is the automated UI tests which clearly demonstrate the power of the <a href="https://docs.microsoft.com/en-us/windows/uwp/layout/design-and-ui-intro">Universal Windows Platform.</a>

For this blogpost, I'll concentrate on how our devices are being notified.

<img width="707" height="396" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/03/030317_1003_DevOpsforIo1.png" />
<h2>The challenges</h2>
In contrast to standard DevOps scenarios (something like a CI/CD chain for Web Development) - there are several challenges. Let's stick with the "refrigerator control" scenario. If I want to program a software for a refrigerator and want to be able to update it after the refrigerator has been shipped, here's a number of things I have to deal with:
<ul>
 	<li>
<div><strong>Access to Devices</strong></div>
I won't have physical access to the devices. So, I can't plug in a USB stick and install new software. I also won't be able to RDP into the devices.</li>
</ul>
<ul>
 	<li>
<div><strong>Connectivity</strong></div>
I can't even tell if the devices are online all the time. So, when I want to send a message, I have to make sure the message really arrives, even if the device is currently unplugged. For an IoT device of course I expect it to be online again at some point.</li>
</ul>
<ul>
 	<li>
<div><strong>Device Management</strong></div>
I don't have "System Center" or something similar to manage my device. My device might be pretty low powered and might not be supported by classic device management solutions at all.</li>
</ul>
<ul>
 	<li>
<div><strong>Scale</strong></div>
I have to expect to have not only ten or 100 devices. If this was the case, you might think it is okay to do something manually. But in my refrigerator scenario I want to be able to ship millions of refrigerators. So, I have to deal with millions of devices. I need to be able to communicate and orchestrate this massive number of "things".</li>
</ul>
<h2>Azure IoT Hub</h2>
The good news is, that for all of those topics there's a solution out there which has been built to exactly address these. It's called <a href="https://azure.microsoft.com/de-de/services/iot-hub/">Azure IoT Hub</a>. It's here to allow devices to register, to report their state and to communicate bidirectionally between the hub and the device.

So the implemented flow is:

Whenever a device starts an app deployed on the device contacts IoT Hub and registers itself with a unique identifier. In my implementation, this is done by a custom app which could be delivered with the device initially (e.g. it might be burned into the OS image). If the device is already registered, that's fine as well, the device will then just keep a connection open to IoT Hub. This guarantees that IoT Hub is able to talk to the device and vice versa. The protocols supported here are HTTP, AMQP and MQTP - and IoT Hub really doesn't care what the device looks like as long as it is capable to "speak" those protocols.

It's possible to report its state using <a href="https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-device-twins">Device Twins</a>. This could be used to identify certain devices based on properties they are reporting. I didn't do this in my scenario, it's just something I want to point out because you probably would be using this to be able to cluster your devices later.

Whenever you want to send an information to the devices, you would use Azure IoT Hub as your communicator - basically this means we are telling Azure IoT Hub what message we want to transfer to the devices. We can decide what this message should look like content wise. All we need on the device is an app which is able to interpret this message. In my implementation, I already have an app on the device which was responsible for registering the device at IoT Hub. So, I just leverage this application to listen for incoming messages from IoT Hub as well. In my implementation, this is a background application which automatically starts on boot and always restarts itself in case it crashes. (See b<a href="https://developer.microsoft.com/en-us/windows/iot/docs/backgroundapplications">ackground applications for Windows 10 IoT Core</a>) If you're working with another operation system you'd just pick something similar for your OS.

In my case the message sent triggers a download of the new application from a FTP server and triggers the installation after the download. I picked this solution because a) it was easy to implement and b) is kind of general purpose. You could of course change the action depending on your specific scenario.

What is worth pointing out is, that Azure IoT Hub really takes all the pain from me, when it comes to the challenges addressed earlier.
<ul>
 	<li>I don't have to have physical access - my device registers itself with IoT Hub and I'm able to talk to it afterwards.</li>
 	<li>I don't have to care about connectivity of my device - Azure IoT Hub makes sure messages arrive even if the device is offline while the message is being triggered (similar to sending an SMS via mobile phone).</li>
 	<li>I don't have to set up any kind of homegrown device management - because this is exactly what Azure IoT Hub does for me.</li>
 	<li>I really don't have to worry about scale, because Azure IoT Hub is built for scale - it supports up to 10.000.000 devices per Azure IoT Hub instance. This is amazing - imagine all of those devices are sending messages in short intervals - Azure IoT Hub is capable of receiving them because this is what it's been created for.</li>
 	<li> The best thing is that you can get started with Azure IoT Hub <a href="https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-create-through-portal">in literally 5 minutes </a>- you just spin up an instance in your Azure portal.</li>
</ul>
<h2>Talking to Azure IoT Hub from VSTS</h2>
Now that we know how to communicate with our devices it's really just a question of how to trigger the communication during our End-To-End CI/CD chain based on Visual Studio Team Services (VSTS). In this case I created a release definition which just triggers a node.js script which again is responsible to send a message to all devices.

<img alt="" src="https://msdnshared.blob.core.windows.net/media/2017/03/030317_1003_DevOpsforIo2.png" />

The script is based on the <a href="https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-node-node-c2d">sample script </a>for cloud to device messaging and can be found <a href="https://github.com/DanielMeixner/vstsArtifacts/blob/master/sendCloud/sendC2AllDevices.js">here</a>. (I'll go into details on how to setup everything in a future post where I will also point out all downloads again.)

What the script basically does is it queries all devices registered at my IoT Hub instance and then ask IoT Hub to send a message to all of these sequentially. (In my case the message just says "Cloud to device message from VSO" to keep things simple. Of course, I could add Ids, version numbers etc. and based on the information I could react differently on the device after receiving. For my end-to-end show case, I'm just triggering an installation, no matter what message is coming in.

Working with IoT Hub really took the pain from communicating to a wide range of devices. It's easy to get started with and scales for extensive use in the future. So, it's a very crucial component when automating communication to IoT devices. I don't even want to think about building something similar myself because I'd have to bring tons of budget and time to realize this. Azure IoT Hub also works when connecting devices behind firewalls because the connection is always established outgoing - from device to IoT Hub. It should be easily possible to set up the communication whatever the network infrastructure looks like.

Besides this I think it's pretty amazing that I'm able to run npm and node during deployments on a hosted (!) VSTS release agent. This makes leveraging existing scripts really easy and in my case saved a lot of work.

Let me know in the comments section if you have feedback for this scenario.]]></content:encoded>
    </item>
    <item>
      <title>Why Reporting Sucks</title>
      <link>https://docs.microsoft.com/archive/blogs/dmx/why-reporting-sucks</link>
      <pubDate>Wed, 01 Mar 2017 09:38:06 GMT</pubDate>
      <dc:creator><![CDATA[DanielMeixner]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/dmx/?p=3925</guid>
      <description><![CDATA[I don't know a single person who likes reporting. Seriously. I never met a person who said: I like...]]></description>
      <content:encoded><![CDATA[I don't know a single person who likes reporting. Seriously. I never met a person who said: I like reporting. I know a lot of people who demand data for reports from others. But even these people hate it when they have to do it themselves. Reporting comes in different colors and shapes. I think we all experienced reporting by Excel throughout our career. You are asked to fill out some cells with values by a certain due date. It might also be a more informal status report during a team meeting. Or maybe during a daily scrum when you answer the question "What are you working on?" - while this isn't exactly meant to be reporting in the classic sense it is still some kind of status sharing.
<h2>Hidden intentions of reports</h2>
It's worth spending a thought on why reporting sucks. Reporting can be powerful if done right. There's a <a href="https://www.visualstudio.com/team-services/reporting/">ton of tools out</a> there which can be used to get better using reports. So why do we often seem to fail here? Maybe we can all use the insights gained to make reporting less sucking in the future.

In the past I had to do a lot of reporting myself. Here's an overview on what I experienced throughout my career (not necessarily in the companies I've been working for)
<ol>
 	<li>
<div>Status Reports</div>
Status reports are the kind of reports I had to deal with most often. The goal is that somebody wants to gain insights in the status of a project. So maybe my project lead asks for a number of hours left on a certain task. Or my boss asks what the progress is on a certain job. This kind of reporting can help to bring more transparency into your deeds. And after all this is the core idea of reports.</li>
 	<li>
<div>"Cover your ass" Reports</div>
These kinds of reports are never really called "Cover your ass" reports. Instead they are covered as Status reports. However, in this case reporting is executed "post mortem". So all the number crunching is made after the jobs were done. In result the numbers are more a proof of work. Often these kinds of reports are demanded by managers to be able to take the numbers and pass it on to the next level of management. I imagine those numbers being passed with the words "See - here's all the work we did in this are. You don't want to call us lazy, do you?" This kind of report guards you from being offended and from becoming vulnerable.</li>
 	<li>
<div>"Process driven" Reports</div>
I've seen multiple cases where numbers are being reported because the "process" demands it. Nobody really knows why a certain field has to be filled, but everybody does it and that handbook about how to manage projects successfully claims that you can build a critical performance index out of that number. So better report it.</li>
 	<li>
<div>"Just do it" Reports</div>
I'm sure you've seen those as well. Someone asks for a number and you have to report it. If you ask why, whoever asked you for this specific number just answers something like "Well, I actually don't need the number but XYZ asked for it, so we better give them these numbers. Don't question it!"
<p style="margin-left: 27pt"></p>
</li>
 	<li>
<div>Show-off Reports</div>
When the true reason for reporting isn't obvious, people start adjusting the message in a report to become heroes. I've seen this a dozen times and you probably have as well. Not sure what to put in that field and what the exact criteria is for a count? Well, let's just put in the maximum, because it looks better.</li>
 	<li>
<div>Scapegoat Reports</div>
This last case of reporting is something I crossed several times in my career and I came up with the term "Scapegoat reporting". When something goes wrong people in charge might try to shift responsibility for the mess by reporting it. However the report is not made in a traditional transparent way to make people aware of the problem but instead it is hidden in a way that a) the person in charge can easily say: "I reported it and made the problem transparent" while b) the person who is in charge to recognize the problem will most likely not recognize it.
This might be in form of a very lengthy email where the problem is not clearly pointed out but phrased. In case of an email the person reporting has even written evidence. It will be hard to acuse him of not being transparent later.</li>
</ol>
There might be other's but I think that's enough for now. It's obvious that except for the status report all other kinds of reports are indicators that something is going wrong in your company. Still I think the status report should - theoretically - be strong enough to make all other reports superfluous.

So why do we get bored by a fully legitimate status report my boss demands from time to time? Why does it seem so hard for us to put numbers in fields once a day, once in a week, once a month? Why does the time invested in reporting feel like 3 hours when it really rather 1-30 minutes?
<h2>Why it's not the tool</h2>
From what I found myself thinking and what I heard from colleagues and co-workers the first conclusion you might draw is that it's a tooling problem. The reporting tool might be too slow, too big, too confusing, too complicated, not integrated enough, too integrated, wrongly scoped. I know people complain about bad tooling a lot and I think I'm one of them. Sure, it is a tremendous waste of time if the tool you are using recurrently is designed badly. While this certainly could be a problem I think, this is not the root cause of frustration when it comes to reporting.
<h2>No effect? Skip the data.</h2>
The true problem is that status reporting - and therefore the kind of reporting that is being done with the right intension and should help you getting better- lacks effect because no matter what is being reported nothing happens and no actions are started as a result of the reporting.

Example: You might know the situation where people are asked for a status in a meeting. People point out that difficulties are rising and that something might be delayed. What's the consequence? There's none. Another example: You put numbers in a list. Sometimes they are smaller, sometimes they are bigger. Sometimes you forget about it. What's the consequence? There's none. In an ideal world people would use the data being reported to find out where things might go wrong in the near future and would try to avoid this by countermeasures. Like: "Oh - I see a decline in number XYZ. Let's discuss how we can bring this back on track, maybe we can ask ABC for help here. "In reality unfortunately often nothing happens until it's too late. Reporting is basically reduced to the action of collecting data instead of working interpreting and working with data.

Basically, this means that the lack of action based on reported data leads to a lack of trust, recognition and appraisal of reporting. Reporting becomes a meaningless activity which isn't here to help in the sense of true "status reporting" but to fulfill one of the other effects mentioned above. Clearly this is something nobody really wants and so people don't see a value in reporting and start to hate it. The reported data becomes worse because people try to minimize efforts and as a consequence the activities deviated from the reports become even worse as well. And here you are, right in the middle of a vicious circle.

It all comes down to some basics I already pointed out in my article "<a href="https://blogs.msdn.microsoft.com/dmx/2016/08/29/thoughts-on-agility/">Thoughts on agility</a>": While all we do should be commonsense, somehow we manage to behave like idiots. It's our job to make sure we break though the insanity we experience when it comes to reporting. Reporting is here to show what works well and what doesn't. To provide a prediction of the future based on facts collected in the past. We have to carefully scope and define the data we want to see in a report so that it really helps us to learn and improve our own process. A "collect it all" mentality is really only acceptable if you don't do it manually and if you know how to handle all the data afterwards so that you can use this data to learn and get better.

If the data we are delivering for reports don't seem to have any effect, it's our job to question the report. It's part of the "always learning and always improving" mentality every modern company should follow. Otherwise it's just a waste of time and resources.
<p style="margin-left: 27pt"></p>]]></content:encoded>
    </item>
  </channel>
</rss>