Holger Schwichtenberg: Windows 10: Ein Aprilscherz wird Realität

Die Idee, Windows 9 zu überspringen, stammt aus einem Aprilscherz des Jahres 2013.

André Krämer: Vortragsfolien: Zentrale Dokumentengenerierung mit dem Open XML SDK

Auf der BASTA hatte ich die Freude, über die zentrale Generierung von Word Kompatiblen Dokumenten mit dem Open XML SDK zu sprechen.

Die dazu passenden Folien habe ich nun wie versprochen auf Slide Share veröffentlicht. In den nächsten Tagen wird dann anschließend der Quellcode folgen.

ppedv Team Blog: Windows 8 Tipp: Mit der Foto-App Bilder aus dem Heimnetzwerk anschauen

Wer gerne die Foto-Kachel in Windows 8 nutzt, um sich die eigene Bildersammlung anzuschauen, muss zunächst feststellen, dass sich die Bilder anderer im Haushalt befindlichen Benutzer, nicht dort anzeigen lassen, da die die Foto-App nur Bilder aus der Windows-Bildbibliothek und aus OneDrive anzeigt. Das ist auch dann der Fall, wenn sich diese Benutzer in der Heimnetzwerkgruppe befinden.

So bekommen Sie die Aufnahmen in die Foto-App

Schritt 1: Überprüfen, ob die Bibliotheken angezeigt werden

Mit der Windows-Taste + E, dann mit einem Klick auf Ansicht und das Symbol "Optionen", setzen Sie ggf. einen Haken und aktivieren "Bibliotheken anzeigen", bestätigen dies mit OK.

clip_image002

clip_image004

Schritt 2: Hinzufügen der Bilderordner

Im geöffneten Dialogfenster des Windows-Explorers auf der linken Seite sehen Sie den Ordner "Bibliotheken". Klicken Sie diesen mit der rechten Maustaste an, wählen Sie Eigenschaften aus und klicken Sie auf die Schaltfläche Hinzufügen... und anschließend Heimnetzgruppe.

clip_image006 clip_image008

clip_image010

Nun klicken Sie doppelt auf den Namen des gewünschten Computers, dann auf Bilder und auf Ordner aufnehmen, abschließend auf OK.

Damit sind Sie nun fertig.

Um die Bilder betrachten zu können, drücken Sie nun die Windows-Taste und dann die Foto-Kachel. Jetzt sehen Sie auch die Bilder der anderen Bildersammlung.

Johannes Renatus: Leichtgewichtige Controller – wohin mit meiner Controllerlogik

Auch wenn man bisher nur an kleineren ASP.NET MVC Projekten gearbeitet hat, kann der Code in einem Controller sehr schnell, sehr unübersichtlich werden. Denn im Controller wird meist zu viel Logik “abgelegt”, die sich eigentlich sehr gut auslagern lässt. In meinen Webprojekten versuche ich, dass ein Controller nur prüft ob der Modelstate Valide ist und […]

Jürgen Gutsch: Pretzel – Statisches .NET Blog à la Jekyll – Teil 2: Setup

Im ersten Teil habe ich eine Kurze Übersicht über Pretzel gegeben. In diesem Teil möchte ich zeigen, wie man ein Pretzel Web aufsetzt.

BTW:
Ich benutze für Kommandozeilenaufrufe den Cmdr, der nicht nur Copy&Paste in der Konsole ermöglicht, sondern auch eine Git-Integration und eine Satz an praktischen Linux-Befehlen bereithält.

Als erste erstelle ich ein Verzeichnis, dass mein Pretzel-Arbeitsverzeichnis sein soll. z. B: C:\tmp\PretzelWeb. Per Cmdr navigiere ich in das Verzeichnis und rufe

> pretzel create

Das Ergebnis sieht wie folgt aus:
PretzelCreate

Wir bekommen ein Set an Markdown Dateien. und einige XML-Dateien. Alle diese Dateien, sind mit der Liquid Template Engine aufgebaut. Nicht nur die Markdown Dateien, sondern auch die XML-Dateien müssen noch interpretiert werden. Das Ergebnis ist dann ein statisches Web, mit statischen RSS- und Atom-Feeds.

Die Dateien können nun mit einem Beliebigen Texteditor bearbeitet werden. Unter Windows bringt jeder Editor ein paar Nachteile mit. Markdown Editoren die eine Vorschau anzeigen (MarPad, MarkdownPad und auch das Visual Studio mit dem Web Extensions) haben Probleme mit eventuellem eingebetteten HTML Code oder JavaScript Code, daher sollte für Alle Dateien außer denen im Ordner _posts ein einfacher Editor wie Notepad oder Notepad++ genutzt werden. Brackets ist ebenfalls eine gute Wahl. Der Grund ist, dass die Vorschau versucht das eingebettete HTML und JavaScript zu interpretieren, welches teilweise durch die Liquid-Engine fehlerhaft ist. Die eigentlichen Blogbeiträge unter _posts sollten dann nur aus Markdown bestehen und können dann auch mit jedem Markdown Editor genutzt werden.

Zum testen ob das Web funktioniert, kann folgendes Kommando aufgerufen werden:
> pretzel taste

Damit wird das Web erstellt und ein Browser öffnet sich mit der URL: http://localhost:8080/ Wichtig das anschließend die Konsole nicht geschlossen wird, da sonst auch der Webserver beendet wird:

PretzelPreview

Im Browser ist nun ein minimalistisches Blog mit responsive Design zu sehen, mit bereits einem Testeintrag. Änderungen die nun an den Markdown und CSS Dateien gemacht werden, werden per Pretzel überwacht, direkt interpretiert und können nach einem Browser-Refresh direkt aufgerufen werden. Das ist deswegen interessant, da sich das aufgerufene Web in einem Unterverzeichnis _site befindet:

PretzelTaste

Auf der Konsole lassen sich dann eventuelle Interpretierungsfehler auslesen, nachdem eine Datei geändert wurde. Es empfiehlt sich nicht, die Dateien unter _site direkt zu bearbeiten, da Pretzel dieses Verzeichnis immer wieder neu erstellen könnte.

Es ist innerhalb von _site schön zu sehen, dass eine saubere Ordnerstruktur angelegt wird. Die Blogpost landen anhand einer Namenskonvention in Unterordnern die sich anhand der Jahreszahl, Monatsnummer und Tagesdatum hierarchisch aufbauen. So erhält man eine schöne sprechende URL, wie z. B:
http://localhost:8080/2014/09/29/myfirstpost.html

Ruft man pretzel bake auf, wird das Verzeichnis _site neu erstellt. Analog zu pretzel taste, allerdings ohne den FileSsystemWatcher und ohne den Webserver.

Git / Mercurial

Generell würde ich empfehlen Arbeitsverzeichnis durch eine Versionskontrolle zu sichern. Da aber nur das _site-Verzeichnis publiziert wird, und das Deployment per Git / Mercurial generell eine Feine Sache ist, würde ich empfehlen zwei Repositories anzulegen.

Direktes Git-Deployment nach github.io, auf eine Azure Website oder ähnliche, bieten sich hier an. Wer das Deployment klassisch manuell machen möchte braucht keine zwei Repositories anlegen. Auch nicht, wer beim Deployment direkt auf ein Unterverzeichnis (in diesem Fall _site geht) geht.

Ich habe das komplette Arbeitsverzeichnis, unter Versionskontrolle gelegt und das Verzeichnis _site per .ignore-Datei ausgeschlossen. Dieses habe ich dann als separates Repository angelegt. Auf diese Art kann ich das fertige Web separat comiten und pushen und das Zielsystem muss nicht auf ein Unterverzeichnis gehen.

codefest.at [MS]: Schritt für Schritt zum kostenlosen Windows Dev Center Account

Dev Center Benefits

Mit den neuen Dev Center Benefits können neue Entwickler (solange der Vorrat reicht) auch einen kostenlosen Developer Account bekommen. Die einzige Voraussetzung: Innerhalb von 90 Tagen soll eine neue Windows oder Windows Phone App im jeweiligen Store publiziert werden. Rina hat in Ihrem Blog Artikel Wie komme ich zu meinem Windows Developer Account?unter anderem auch über ein paar Details zum Windows Dev Center Benefits Programm geschrieben.

Wir wollen uns jetzt Schritt für Schritt ansehen wie man seinen kostenlosen Store Gutschein bekommt und einlöst.

Zuerst besuchen wir die Seite Dev Center Benefits

Dev Center Benefitsund klicken auf “Join now”

Dev Center BenefitsFalls wirklich noch kein Microsoft Account vorhanden ist (a.k.a. Live ID, oder den Senioreren unter uns auch noch als Passport Account bekannt) dann wäre das jetzt ein guter Zeitpunkt über “Get a Microsoft account” einen zu lösen. Ansonsten mit “Sign-up to join” anmelden.

Im Ersten von drei Schritten werden nun die Daten aus dem Microsoft Account angezeigt:

Dev Center Benefits

Zugleich bekommt man hier auch die Information, dass man als neuer Entwickler einen Gratis Gutschein für einen Windows Dev Center Account bekommen könnte. Also schnell sein! Smile:

Dev Center Benefits

Als nächstes das Dev Center Benefits program agreement akzeptieren, und schon ist man Teilnehmer am Dev Center Benefits Programm. Derzeit mal in der ersten Stufe Explorer.

Wir landen also beim zweiten Schritt:

Dev Center Benefits

Hat man schon Apps publiziert kann man hier die Erfolgreichste angeben um in die Dev Center Benefits Stufen Expert oder gar Master vorzurücken. In diesen Stufen gibt es zusätzliche interessante Mitglieder Vorteile. Siehe dazu: https://devcenterbenefits.windows.com/about#!/.

Qualifizierende Apps sind neben Windows Phone und Windows Apps auch Apps im Google Play Store oder für iOS. Hat man noch keine Apps publiziert, oder reicht derzeit der Explorer Level aus, kann man einfach mit “Skip” zum …

… dritten und letzten Schritt weitergehen:

Dev Center Benefits

Hier wollen wir gerne ein bisschen mehr über Euch erfahren, und z.B. das Folgende wissen:

  • Wie groß ist Euer Entwickler Team?
  • Was treibt Euch an Apps zu schreiben?
  • Könnt Ihr über die Plattform für die nächste App (mit)entscheiden?

Damit wir das Programm noch besser auf euch abstimmen können bitte die Fragen beantworten, und mit “Continue” weitergehen (ansonsten mit “Skip” überspringen). Und das war es auch schon.

Nun seid Ihr Mitglieder im Dev Center Benefits Program und könnt gleich alle Vorteile für Mitglieder im Explorer Status nutzen.

Dev Center BenefitsDev Center Benefits

So zum Beispiel eben den “Free Dev Center account for unregistered developers”:

Dev Center Benefits

Wie schon am Anfang gesagt: um einen kostenlosen Developer Account bekommen gibt es zwei Voraussetzungen:

  1. Ihr habt noch keinen Dev Center Account (eh klar, ist ja jetzt ohnedies lebenslang gültig)
  2. Innerhalb von 90 Tagen soll eine neue Windows oder Windows Phone App im jeweiligen Store publiziert werden.

Wenn Ihr diese beiden Voraussetzungen erfüllt, dann einfach noch bestätigen, dass ihr Innerhalb von 90 Tagen eine neue Windows oder Windows Phone App im jeweiligen Store publizieren werdet, und dann mit “Redeem” den Code anfordern. Voilà!

Dev Center Benefits

Jetzt nur noch die Registrierung im Windows Dev Center durchführen und dabei den Dev Center offer code eingeben. Eine Beschreibung dazu findet sich z.B. im Artikel “Ein Entwicklerkonto eröffnen

Viel Spaß bei der Entwicklung Eurer Apps!!

Sven Hubert: Rückblick: BASTA! Herbst 2014 in Mainz

BASTA! Herbst 2014 Speakerbutton 1 Geradezu malerisch begrüßten uns die Rheingoldhallen – Und nun ist sie schon wieder vorbei: Die diesjährige BASTA! Herbst 2014 in Mainz.Mit insgesamt 5 Vorträgen war das AIT-Team vertreten. Von Testing über den Ackerbau, Requirements-Management bis hin zum Release-Management reichte das Themenspektrum.
WP_20140925_005_chs WP_20140925_002_chs

 

 

Den Anfang haben Jan Gröver von CLAAS und Stefan Mieth mit ihrem Vortrag “5 Jahre nach der ALM-/TFS Einführung” gemacht. Im Anwenderbericht haben wir gesehen, wo die Stolpersteine bei der TFS Einführung liegen, und worauf man besonders achten sollte.

WP_20140923_003

Nico Orschel und Marc Müller bei Ihrem Vortrag zum “Testen von XAML-based Windows Store Apps mit VS2013”. Beim Thema Testing blieb es auch in Ihrem zweiten Vortrag: Bei “Testmanagement mit VS 2013” konnten die Zuhörer erfahren, wie man mit dem Visual Studio 2013 Testmanagement effektiv betreiben und verwalten kann.

WP_20140923_014

In seinem zweiten Vortrag konnte Stefan Mieth den Teilnehmern in seiner Session “Pragmatisches Requirements Management” die Definition von pragmatisch und die Bedeutung für das RE/RM erläutern.

WP_20140924_005

Am Donnerstag schließlich waren die Kollegen Thomas Rümmler und Christian Schlag mit ihrem Vortrag zu “Zentrales Build & Release Management mit dem Team Foundation Server” on stage.

WP_20140925_009

 

Wir möchten natürlich auch noch einmal dem Gewinner unserer Verlosung, Herrn Bertram von Beak Consultants GmbH ganz herzlich zu seinem neuen Surface gratulieren!

Unsere Glücksfee…

IMG_6856

…und der Stolze Gewinner:

IMG_6860

 

 

Und hier die Vorträge & Slides noch einmal zum Download:

Rückblick: BASTA! Herbst 2014 in Mainz is a post from: AIT Blog

Sven Hubert: IIS gar nicht so schwer

Hosting von Websites, Anwendungen und Dienste wird heutzutage oft in die Cloud ausgelagert. Doch in manchen Fällen, z.B. bei rein internen Diensten im Firmennetzwerk, kommt man um das eigene “Hosting On-Premise” nicht herum. Dafür bietet Microsoft mit dem IIS (“Internet Information Services”) einen Webserver, mit dem das Bereitstellen und Debugging von Web Apps und Diensten sehr komfortabel ist. Ein paar Dinge sind jedoch bei der Installation und Anwendung zu beachten.

Lesen Sie mehr dazu im Artikel “IIS gar nicht so schwer” von Jan Mattner in der aktuellen Ausgabe der dotnetpro 10/2014.

IIS gar nicht so schwer is a post from: AIT Blog

Jürgen Gutsch: Pretzel – Statisches .NET Blog à la Jekyll – Teil 1: Übersicht

Jekyll ist in der letzten Zeit in aller Munde. Dabei handelt es sich um ein – in Ruby geschriebenes – Toolset, oder Framework mit dem sich statische Blogs erstellen lassen. Statisch bedeutet in diesem Fall, dass die Blogpartikel in Markdown-Files geschrieben und physikalisch abgelegt werden. Jekyll erzeugt dann aus diesen Dateien anhand bestimmter regeln und mit den hinterlegten Templates ein statisches Web, bzw. ein Blog, dass dann auf die eigene Hosting-Plattform (üblicherweise github.io) hochgeladen werden kann.

Ich hoffe, diese Beschreibung stimmt einigermaßen, denn ich habe Jekyll aus bekannten Gründen nie selber zum laufen gebracht habe.

Das System ist dabei recht einfach bedienbar. Wie Markdown selber überzeugt das ganze System durch Einfachheit und wenig Overhead. Markdown ist die perfekte Auszeichnungssprache die sich aufs wesentliche konzentriert, so konzentriert sich Jekyll ebenfalls auf das Wesentliche, nämlich auf das erstellen von Webseiten aus den Markup-Dateien.

Pretzel

Eine auf .NET basierte alternative zu Jekyll ist Pretzel. Es bietet dabei annähernd den gleichen Umfang, unterstützt den gleichen Markup und ist ebenso einfach zu bedienen. Zusätzlich ist es möglich Razor als View Engine zu nutzen. In dieser Serie möchte ich kurz zeigen wie einfach es ist, mit Pretzel zu arbeiten.

Das Setup:

Pretzel kommt ohne Installer und ohne fertige Binaries, was auch nicht nötig ist. Wer Pretzel nutzen möchte, soll die Sourcen herunterladen und dien enthaltene build.bat aufrufen. Das reicht um die benötigten Binaries zu bauen. Der Build ist in ein paar Sekunden durch. Die erstellten Artefakte können nun in ein beliebiges Verzeichnis geladen werden und wer möchte kann den Pfad dahin in den Umgebungsvariablen ablegen um Pretzel überall aufrufen zu können. So habe ich das getan, um bei diversen Tests nicht den kompletten Pfad aufrufen zu müssen.

Her die möglichen Kommandos:
Pretzel

Der einfache Aufruf von Pretzel zeigt die obige Hilfe an. Alle weiteren Parameter für die Kommandos create, import, taste und bake sind optional. Für create sei gesagt, dass der Standardwert für Templates Markdown ist, alternativ lässt sich Razor angeben, was in meinem Fall allerdings nicht so sauber funktioniert hat. Um mit Razor arbeiten zu können wird ein ASP.NET Web mit dem nötigen c# Code angelegt, um die Razor Views mit Daten versorgen zu können. Im Falle von Markdown kommen keine Server-Codes hinzu und das fertige Web kann überall gehostet werden.

import habe ich nicht getestet, es sollen sich aber vorhandene Pretzel und/oder Jekyll Dokumente importieren lassen.

Eine schöne Funktion ist das Kommando taste, die das Web mit bake erstellt und zusätzlich einen Webserver und einen Browser startet, mit dem das Web sofort ausführlich getestet werden kann.

Das Kommando bake erstelt nun aus den Markdown Dateien das Web, indem diese nach HTML übersetzt werden, Linklisten und RSS-Feeds erstellt werden. Stellenweise enthalten die Templates Logik die dafür interpretiert wird. Als Template-Engine wird hier Liquid Engine verwendet.

Im nächsten Teil zeige ich Schritt für Schritt, wie man ein Web mit Pretzel erstellt.

codefest.at [MS]: Office 365 Office Graph Explorer

Seit kurzem kann in Office 365 Tenants der sog. “Office Graph” aktiviert werden. Dieser ist derzeit als Preview in den Plänen Enterprise (Academic, Governmental) E1 bis E4 enthalten. Martina hat im TechNet Blog Delve und der Office Graph über die Aktivierung und die Details geschrieben. Hier ein kurzer Überblick, was der Office Graph ist.

About Delve and Office Graph

Für Developer ist natürlich interessant, wie man den Office Graph selbst anzapfen und verwenden kann. Apropos, der Begriff “Delve” (das Webportal in Office 365) steht für “vertiefen”, die Bezeichnung “Office Graph” (das Service, das Informationen sammelt, verknüpft und bereitstellt) hat Microsoft wahrscheinlich in Anlehnung an andere Systeme gewählt. Facebook App-Developer kennen etwa die “Facebook Graph-API”, die nach erfolgter Authentifizierung einer bekannten App genauso Informationen über Mitglieder liefert.

Ein Unternehmens-Service

Beim Office Graph handelt es sich allerdings um ein Service für Unternehmen, schließlich indiziert es Daten aus verschiedenen Office 365 Datenquellen und liefert (derzeit) vor allem aktuelle Dokumente. Die Idee dahinter ist, dass Informationen die Benutzer finden, anstatt umgekehrt, beschreibt Office 365 Product Managerin Julia White in A milestone for Office Delve.

Hier sind wir schon bei den Office 365 Datenquellen angelangt: Derzeit werden Inhalte aus OneDrive for Business und SharePoint Online indiziert, in Kürze sollen E-Mail (Exchange Online), E-Mail-Anlagen, OneNote, Yammer und Lync folgen.

Graph Query Language

Die Open Graph Schnittstelle kann über die sog. Graph Query Language (GQL) über eine SharePoint Online Search REST API verwendet werden. Mit GQL können also Abfragen für einen Office 365 Benutzer abgefragt werden, siehe MSDN: Using GQL with the SharePoint Online Search REST API to query Office graph.

Die Grafik zeigt die (vereinfachte) Suche in Delve und dem Office Graph:

image

Bildquelle: MSDN

Eine GQL-Abfrage sieht dann beispielsweise so aus:

https://<tenant-domain>/_api/search/query?Querytext='*'&Properties='GraphQuery:actor123456789\,action\:1033)'&RowLimit=50&SelectProperties='DocId,Titl'

Über den Parameter Querytext wird der Content übergeben, '*' steht für keinen Filter. Querytext ist verpflichtend. In den Properties wird spezifiziert, für welchen Benutzer (Actor) die Abfrage erfolgt. Dabei muss die Actor-ID übergeben werden. Als Ergebnis erhält man alle Aktionen, die dem Filter entsprechen. Der Actor-Parameter besitzt diese Parameter: ACTOR(<ActorId> [, filter]).

Alle Infos zur Verwendung der GQL findet ihr hier: MSDN: Using GQL....

Office Graph Explorer SharePoint-App

Natürlich benötigt man eine Authentifizierung bevor man Abfragen gegen den Office Graph durchführen kann. Dazu eignet sich etwa eine SharePoint App. Was man alles in SharePoint abfragen kann, darüber informiert u.a. MSDN: SharePoint Search REST API overview .

Vor kurzem habe ich ein schönes visualisiertes Office Graph Demo von Richard di Zerega gefunden. Dieses ist auf Richards´ GitHub zu finden und heißt OfficeGraphExplorer. Dieses Sample kann sehr gut dazu verwendet werden, sich die Funktionsweise des Office Graph anzusehen.

Nach dem Download muss die fertige Lösung nur gegen eine SharePoint Online Site deployt werden. In den Properties der Solution wird eine Office 365 SPO-Site angegeben.

image

Danach erfolgt die Authentifizierung für den Deployment-Vorgang.

image

Der ganze Code spielt sich in Default.aspx ab. Es ist eine fesche One-Page SharePoint-App, ganz in Javascript mit etwas jQuery und d3 (Data-Driven Documents) geschrieben. Nach dem Deployment folgt die Abfrage, ob der App vertraut wird (JA). Danach beginnt die SPO-App Daten für den aktuell angemeldeten User aus dem Open Graph abzufragen.

image

Das Ergebnis kann sich sehen lassen: Ein Baum zeigt in der Mitte den Benutzer und ordnet rundherum seine letzten (aktuellen) Dokumente an. Die Dokumente können per Link geöffnet werden. Genauso können auch Benutzer ausgewählt werden und dann Infos über den Benutzer abgefragt werden. Der Baum kann auch interaktiv bewegt werden – eine nette Spielerei. Rechts können einige Query Options eingestellt werden.

Die Analyse des Codes ist bei diesem kleinen Projekt noch übersichtlich. So wird etwa beim Maus Click Event auf ein Actor-Objekt die loadUser() Function mit dem jeweiligen Actor aufgerufen.

image

Hier wird dann je nach Aktion die Variable objectGQL mit einem Teil-GQL befüllt und schließlich mit der URL der AppWebUrl (es funktioniert auch mit der HostWebUrl) als Ajax-Call wie oben zusammengebaut und abgesetzt. Wenn der Call ein Ergebnis (success) zurückliefert, wird dieses in einer foreach Function durchlaufen und alle “Kinder” in das Ergebnis-Array ge-pusht, usw.

image

Der Rest ist eine sehr hübsche Visualisierung, aber die Datenbeschaffung funktioniert grundsätzlich recht einfach.

Links

Hier findet ihr verschiedene Ressourcen zum Vertiefen:

Viel Spaß beim Ansehen und Testen von Delve und eigenen Apps mit dem Office Graph in Office 365!

Ralf Westphal: Von Startup-Krautern lernen

Crowdfunfing ist in. Ich habe auch schon mehrfach gesponsort, gefundet, gespendet. Es ist einfach schön, motivierten Menschen unkompliziert ein bisschen helfen zu können - wenn mich die Idee begeistert. So war es auch bei den Krautreportern. Ihre Vision hat mir in Zeiten des hypebasierten Einheitsjournalismus und der undurchsichtigen Verbindungen zwischen Medienmachern und Institutionen

Lars Keller: DNUG Braunschweig Treffen - Entwickeln im Rhythmus der Cloud

Die DNUG Braunschweig trifft sich am 08.10.2014 um 19:00 im Restaurant Zucker (Tagungsraum). Dieses Mal kommt uns Christian Binder von Microsoft besuchen. Christian wird uns etwas über die Art und Weise erzählen, wie Microsoft aktuell Produkte entwickelt und wie dafür die eigenen Tools genutzt werden.

Moderne Anwendungen und Services werden heute viel schneller als je zuvor entwickelt. Neue Themen wie Build-Measure-Learn ändern das Vorgehensmodell hin zu einem mehr Kunden-zentrischen Modell. Aber kürzere Zyklen allein bringen nicht automatisch ein bessere Wertschöpfung. Die eigentliche Frage ist, wie schaffen wir mehr Kundennutzen? Der Vortrag wird am Beispiel der Microsoft Developer Division eine Transformation beschreiben und auch die damit verbundenen Herausforderungen im Engineering nicht auslassen. Telemetrie spielt hierbei eine zentrale Rolle, die in gleicherweise für modernes App Development immer wichtiger wird.

Christian Binder ist als ALM Architect in der DX - Developer Experience Group bei Microsoft tätig. Er arbeitet seit 1999 bei Microsoft und arbeitet eng mit dem Visual Studio Product Development in Redmond zusammen. Hierbei beschäftig er sich intensiv mit ALM Trends wie Backlog Driven Organisations, Lean Teams, Cloud Cadence als auch Build-Measure-Learn und wie diese bei Microsoft als auch bei Kunden umgesetzt werden können.

ppedv Team Blog: globale Variable mit Angular

Ein Set von global gültigen Variablen legt man gerne in eine static oder shared Klasse. Wer mit ASP.NET gearbeitet hat, weis das dies nicht so einfach ist. Noch schwieriger wird es, wenn mit Masterpage (Webforms) oder Layout Pages (MVC). In beiden Fällen wird aus mindestens zwei Dateien Vorlage und Inhalt vereint.

Es erscheint wenig sinnvoll einen einzigen Controller in die Masterpage zu legen und darin die Logik aller Content Pages einzubauen. Folglich wird man einen  Controller für die Masterpage definieren und einen für jede Content Page. Bleibt die Frage, wie sprechen die miteinander, wie tauscht man Daten aus im Sinne einer globalen Variable. Der Connection Status einer Websockets Verbindung muss an vielen Stellen geprüft werden können.

Um gemeinsam nutzbaren Code und damit auch eine Variable anlegen zu können, sieht Angular einen Service, Factory oder Provider vor.  Die Factory erhält den Namen global und liefert den Connection Status mit false zurück.

   1:  App.factory('global', function () {
   2:      var global = {
   3:          isConnected: false
   4:      };
   5:      return global;
   6:  });

Per Depedency Injection wird die Factory im Controller verfügbar. Konkret werden alle Objekte in den Funktonsaufruf des Controllers gepackt, hier der $scope für das Viewmodel und die Factory global.

Die Direktive enthält noch eine Command Funktion, um den Status ändern zu können.

   1:  app.controller('contentController', function($scope,global) {
   2:    $scope.isConnected = global.isConnected;
   3:    $scope.connect=function()
   4:    {
   5:   
   6:      $scope.isConnected=global.isConnected=true;;
   7:    }
   8:  });

Gebunden wird das Angular Typisch im HTML Code. In der Praxis in der Content Page.

   1:  <div  ng-controller="contentController">
   2:    Content Page Dingens
   3:      
   4:       <p>Status {{isConnected}}!</p>
   5:       <button ng-click="connect()">connect</button>
   6:    </div>

 

In der Masterpage wird ein eigner Controller definiert, der z.B. Element im Menübereich bindbar hält. Der JavaScript Code unterscheidet sich auf den ersten Blick nicht vom vorigen Code Beispiel. Allerdings muss der Main Controller die Änderung in  global.isConnected auch mitgeteilt bekommen. Dazu kann man einen Watcher einrichten, der die Änderung des Wertes zum Anlass nimmt, den loklaen Scope neu zu schreiben.

   1:  app.controller('mainController', function($scope,global) {
   2:   
   3:    $scope.isConnected = global.isConnected;
   4:    
   5:     $scope.$watch(
   6:          function(){ return global.isConnected},
   7:   
   8:          function(newVal) {
   9:            $scope.isConnected = newVal;
  10:          }
  11:        )
  12:   
  13:  });

 

Das lauffähige Sample.

Sehr oft sieht man für diese Aufgabenstellung auch einen Ansatz mit Broadcast auf den $rootscope. Dieser erfordert deutlich mehr Code. Alternativ kann man auch im $Rootscope eine Variable nutzen, davor wird allerseits gewarnt.

Holger Sirtl: Preissenkungen bei Microsoft Azure um bis zu 30%

Microsoft hat heute eine Reihe von Preissenkungen für Microsoft Azure bekannt gegeben. Wie das gesamte Preismodell von Azure ist aber auch die Liste der angepassten Preise etwas unübersichtlich. Ich möchte an dieser Stelle deshalb die aus meiner Meinung nach wichtigsten Änderungen auflisten, da sie zu den Services gehören, die viele Nutzer von Azure betreffen:

Service alter Preis neuer Preis Änderung
CDN (0-10 TB pro Monat) 0,09€/GB 0,065 € pro GB -28%
Datenübertragung (5-10 TB, Europa) 0,09€/GB 0,065 € pro GB -28%
Datenübertragung (10-50 TB, Europa) 0,09€/GB 0,065 € pro GB -28%
Media Services (Encoding, erste 5TB) 1,49€/GB 1,04 € pro GB -30%
Media Services (Encoding, nächste 15TB) 1,20€/GB 0,89 € pro GB -26%
Media Services (Reserved Encoding E1) 73,97€/Monat 51,39€/Monat -30%
Media Services (Reserved Streaming) 148,68€/Monat 103,52€/Monat -30%
Scheduler (Premium) 148,68€/Einheit 104,26€/Einheit -28%
Scheduler (Standard) 10,42€/Einheit 14,94€/Einheit -28%
SQL in VM (Enterprise) 1,57€/Std. 1,12€/Std. -29%
SQL in VM (Standard) 0,41€/Std. 0,30€/Std. -27%
SQL in VM (Web) 0,034€/Std. 0,024€/Std. -29%
Storage Transaktionen (100M Tx) 0,004€ €0,0027€ -28%

Eine vollständige Liste der Preisänderungen findet sich auf der Microsoft Azure Homepage.

Weitere Informationen

ppedv Team Blog: C# Antiviren Abfrage

Ob nun aus purem Interesse oder aus Sicherheitsbedenken, es sind viele Gründe annehmbar ein System auf installierte Antivirenprogramme zu prüfen und hier wird gezeigt wie:

namespace diagConsole
{
    class Program
    {
        static void Main(string[] args)
        {
            ManagementObjectSearcher diagObject =
                new ManagementObjectSearcher("root\\SecurityCenter2", "SELECT * FROM " + "AntiVirusProduct");

            string Result = "";

            foreach (ManagementObject queryObj in diagObject.Get())
            {
                Result += "next Antivirus:" + Environment.NewLine;
                foreach (PropertyData propertyData in queryObj.Properties)
                {
                    Result += propertyData.Name.ToString() + ":" + propertyData.Value.ToString() + Environment.NewLine;
                }
            }
            Console.WriteLine(Result);
            Console.ReadLine();
        }
    }
}

Für jedes installierte Antivirenprogramm liefert dieser Code ein Objekt zurück.

image


Um den Eintrag productState deuten zu können muss man ihn in die entsprechende Hexadezimalzahl umwandeln. Das bedeutet für den productState 266240 lautet die entsprechende Umwandlung 041000.

Der erste Byte lässt sich wie folgt deuten:

  WSC_SECURITY_PROVIDER_FIREWALL               = 1,
  WSC_SECURITY_PROVIDER_AUTOUPDATE_SETTINGS    = 2,
  WSC_SECURITY_PROVIDER_ANTIVIRUS              = 4,
  WSC_SECURITY_PROVIDER_ANTISPYWARE            = 8,
  WSC_SECURITY_PROVIDER_INTERNET_SETTINGS      = 16,
  WSC_SECURITY_PROVIDER_USER_ACCOUNT_CONTROL   = 32,
  WSC_SECURITY_PROVIDER_SERVICE                = 64,
  WSC_SECURITY_PROVIDER_NONE                   = 0,

Der zweite Byte lässt sich so interpretieren:


  SCANNER_UNKNOWN = 1,
  SCANNER_RUNNING = 16,

Und schließlich der dritte Byte:

00: up-to-date
10: not up-to-date

Daraus geht für das obere Beispiel hervor: Antivirus + Running + up-to-date.
Bei Interesse ist oben auch noch ein zweiter productState zum Üben.

Sven Hubert: Geht noch ‘ne Spalte mehr?

Der Konflikt zwischen der Standardisierung von Software-Produkten und der Erfüllung einzelner Kundenwünsche ist ein stetig wiederkehrendes Thema. Bei einer konventionellen Implementierung rufen Anpassungen am Datenmodel das Entwicklungsteam auf den Plan. Durch den Einsatz von entsprechenden Technologien und Modellierungsansätzen ist es jedoch auch möglich eine datengetriebene Anwendung ohne Entwicklungsaufwand kundenspezifisch anpassen zu können.

Lesen Sie mehr über das Thema im Artikel “Geht noch ‘ne Spalte mehr? ” von Benjamin Boost in der aktuellen Ausgabe der dotnetpro 10/2014.


Geht noch ‘ne Spalte mehr? is a post from: AIT Blog

Uli Armbruster: Die 3 wichtigsten Facebook Einstellungen

Generell lohnt sich immer der Blick in die Privatsphäre-Einstellungen von Facebook. Die 3 Punkte, die aber jeder Nutzer richtig konfiguriert haben sollte, erläutere ich hier:

Ruft diese Seite auf

Abschnitt 1:

Wählt rechts ‘Bearbeiten’ aus

facebook_settings_1_0

Wählt ‘Niemand’ aus

facebook_settings_2_1

 

Abschnitt 2:

Wählt rechts ‘Bearbeiten’ aus

facebook_settings_2_0

Wählt ‘Niemand’ aus

facebook_settings_2_1

 

Abschnitt 3:

Wählt ‘Deaktiviere’ aus

facebook_settings_3_0

Auf der nächsten Seite wählt ihr ‘Abbestellen’ aus

facebook_settings_3_1

 

Eine interessante Nachricht zum Thema Facebook Werbung könnt ihr auf Chip.de nachlesen. Wie sich das verhindern lässt, zeige ich in meinem nächsten Beitrag.


Einsortiert unter:German, Misc Tagged: Facebook

Dirk Primbs [MS]: The Back Cover of Primbs.de

I’ve been a blogger for more than 15 years. During this time my personal homepage (primbs.de) made quite a transformation from a basic personal web page to a simple self-developed personal blog, and finally ending in the semi-professional portfolio site it is today. In all this time I was always blogging personal thoughts, was mostly writing in German, and even more so I loved seeing my ideas becoming debatable texts.

By killing the German blog with personal thoughts a few months ago I rid myself from that medium. Initially I thought of this as of just any other clean-up. In fact, it felt good to delete age old posts and give it a fresh start. But old habits die hard, so I started soon stashing ideas for blog posts again that I did not post since they did not quite fit the site anymore.

So… you probably guessed where this is heading… I finally settled on creating a brand new blog which caters for all that. So if you care to read about my musings, or have a healthy discussion about any of my opinions: Just head over to http://dauerstauner.de

I think of it as the back cover of primbs.de as it is quite the opposite of what you’ll find here…
It’s German only, text only, and much less about my professional live, but more about my personal thoughts.
Also it is quite basic in its layout. I think even my first blog which was completely self-developed had been more sophisticated than that. So far I really like the puristic style and btw: Ghost is a nice blogging tool too.

So let me know what you think, or not ;-)

The post The Back Cover of Primbs.de appeared first on Dirk Primbs Online.

codefest.at [MS]: Big Data und Hadoop/HDInsight für .NET Entwickler – Entwicklungsumgebung

In diesem – dem 2. Teil - der Blog-Reihe über Big Data mit Hadoop in der Microsoft-Entwickler-Welt möchte ich gerne zeigen, wie jemand, der sich für dieses Thema interessiert:

1. Die benötigte Technologie lokal installiert.
2. Die Installation überprüft

In diesem Blog-Beitrag werde ich - so gut es geht - auf Theorie und detaillierte Beschreibungen verzichten, sofern diese nicht notwendig sind, um das fertige Programmbeispiel fertig zu stellen. Theorie zu Big Data und HDInsight/Hadoop, sowie der Integration davon unter Windows könnt Ihr in meinem Blog-Beitrag „Hadoop/HDInsight Einführung Big Data mit HDInsight/Hadoop für .NET Entwickler” nachlesen.

Nachfolgend werden folgende Abschnitte beschrieben:

· Einrichten der Entwicklungsumgebung – welche Schritte werden benötigt, um Big Data Lösungen auf dem lokalen Rechner „anzuprogrammieren“.
· Verwendung der mitgelieferten HDInsight/Hadoop Überwachungs-Tools.

Warum eine lokale Entwicklungsumgebung

Seine Stärke bildet HDInight/Hadoop erst aus, wenn es in einem Cluster läuft, der die MapReduce-Jobs parallel auf riesigen Datenmengen ausführt. Als Entwickler reichen einem aber erst einmal kleine Datenmengen und eine lokale Installation. Es muss nicht gleich ein Azure HDInsight Cluster sein, das ist ja schließlich auch eine Kostenfrage, wie man sehr einfach selbst feststellen kann.

Preisübersicht für HDInsight in Azure:
http://azure.microsoft.com/en-us/pricing/details/hdinsight/

image

In diesem Blog-Eintrag soll gezeigt werden, dass das „lokale Entwickeln“ hervorragend funktioniert (und erst einmal keinerlei Kosten verursacht), auch wenn man natürlich den Vorteil von HDInsight, bzw. Hadoop komplett aus der Hand gibt: der lokale Emulator unterstützt nur 1 Node, d. h. keinerlei parallele Verarbeitung der Daten.

Einrichten der lokalen Entwicklungsumgebung

Um ein „Big Data“-Beispiel programmieren zu können, werden folgende Softwarepakete benötigt:

· Ein 64-bit Windows Betriebssystem ist für den lokalen HDInsight-Emulator Voraussetzung (ein 32-Bit OS wird nicht unterstützt).
· Eine Installation von Visual Studio 2012/2013/2014.
· Microsoft „Web Platform Installer“, der die gesamte Arbeit abnimmt, um
     o HDInsight/Hadoop (mit weiteren Unterprojekten, wie z. B. Hive) zu installieren, sowie
     o (optional) die Installation der PowerShell durchzuführen. 

Das nächste Mal werden wir noch folgendes benötigen:
· Den ODBC-Treiber für Hive, diesen bekommt ihr hier.
· Excel, um auf Hive zuzugreifen.

Ich gehe einmal davon aus, dass es keine Probleme bereitet Visual Studio auf dem lokalen Rechner zu installieren, alle anderen Schritte werden nachfolgend beschrieben.

Installation des Microsoft Web Platform Installers

Der Web Platform Installer war in gewisser Weise der Einstieg von Microsoft in die Open Source Welt. Man wollte der Open-Source Entwicklergemeinde eine Option liefern Ihre Produkte, bzw. APIs einfach auf der Windows Platform zu installieren. Beispiele hierfür sind z. B. Python, oder PHP für den IIS, es finden sich darin auch viele Klassiker der freien Software, etwa Drupal, WordPress oder DotNetNuke. Micorosft selbst liefert auch einige Tools und SDKs, wie z. B. das Windows Azure SDK for Python, oder .NET, die Office Developer Tools, oder eben den „Microsoft HDInsight Emulator for Windows Azure“, der in diesem Fall benötigt wird.

Die Microsoft Web Platform Installer-Datei findet man hier:
http://www.microsoft.com/web/downloads/platform.aspx

image

Rechts unten unter „Free Download“ kann der Installer (wpilauncher.exe) heruntergeladen und installiert werden. Im nächsten Schritt wird „Hadoop“ mit Hilfe des Web Platform Installers auf dem Rechner lokal installiert.

Installation des HDInsight-Emulators

Nach der Installation steht der „Microsoft Web Platform Installer“ zur Verfügung. Unter Windows 8.1 einfach in der Suchbox nach „web platform installer“ suchen und diesen starten.

image

Es öffnet sich ein neues Fenster, am einfachsten ist es, wenn man in der Suchbox den Begriff “HDInsight“ eingibt. Als Ergebnis sollten der „Microsoft HDInsight Emulator for Windows Azure“ aufscheinen.

image

Hier am Besten auf “Install” klicken und es kann losgehen mit der Installation. Je nach vorhandener Internetverbindung kann das ein klein wenig dauern. Wenn alles geklappt hat, dann ist folgendes Fenster sichtbar:

image

Falls Probleme auftreten, findet man in den Windows “Programs and Features” im Control Panel 2 neue Einträge:

· Microsoft HDInsight Emulator for Windows Azure
· Hortonworks Data Platform 1.1 Developer

Zur Deinstallation wählt man zuerst den Microsft HDInsight Emulator for Windows Azure, danach den Eintrag Hortonworks Data Platform 1.1 Developer und es kann wieder von vorne los gehen.

image

Sollten Probleme während des Downloads auftreten, so können die Setup-Dateien gelöscht werden, diese sind hier zu finden:

"c:\Users\<USERNAME>\AppData\Local\Microsoft\Web Platform Installer\installers"

image

Bei einem erneuten Installationsversuch werden die benötigten Dateien erneut heruntergeladen.

 

Optionale Installation der PowerShell

Microsoft liefert mit HDInsight auch eine Anbindung an die PowerShell mit, bzw. auch gleich einige Skripte, die das (Entwickle-)Leben mit HDInsight erleichtern. Ich würde empfehlen die Powerhell ebenfalls mit Hilfe des „Web Platform Installers“ auf dem Rechner zu installieren.

image

Überprüfen der Installation

Die Installation sollte ohne Problem von statten gehen. Auf dem Rechner befindet sich nun HDInsight. Das kann leicht überprüft warden, wenn man sich die lokane Dienste ansieht, hier sind einige dazu gekommen – diese Dienste sollten nun auch laufen:

image

Die Dienste im Einzelnen und Ihre Funktion (in aller Kürze):

· Apache Hadoop datanode: Hadoop DataNode Service
· Apache Hadoop derbyserver: Datenbank für Hive
· Apache Hadoop Historyserver: REST-Api für Statusinformationen abgearbeiteter Jobs.
· Apache Hadoop hiveserver: Hive’s native service für Client-Anbindungen
· Apache Hadoop hiveserver2: ODBC und JDBC-Unterstützung
· Apache Hadoop hwi: Hive-Web-Interface (zusätzlich zur Console)
· Apache Hadoop isotopejs: interaktive Konsole im HDInsight Management Portal
· Apache Hadoop jobtracker: Das Hadoop JobTracker-Service
· Apache Hadoop metastore: Hive/Oozie Metastore
· Apache Hadoop namenode: Hadoop NameNode service
· Apache Hadoop oozieservice: Oozie service
· Apache Hadoop secondarynamenode: 2tes NameNode (Ausfallsicherheit)
· Apache Hadoop tasktracker: Das Hadoop TaskTracker Service
· Apache Hadoop templeton: Hadoop Templeton service (REST-API für HCatalog)

Tipp: Sollten die Dienste vorübergehend nicht benötigt werden, so können diese mit Hilfe der PowerShell gestoppt (und auch wieder gestartet werden). Die CMD-Dateien, die dazu benötigt werden:

· c:\Hadoop\start-onebox.cmd
· c:\Hadoop\stop-onebox.cmd

Auf dem Desktop sind nach der Installation 3 neue Icons zu finden, diese werden wir uns nun anschließend genauer ansehen:

· Hadoop Command Line
· Hadoop Name Node Status
· Hadoop Map Reduce Status

image

Hadoop Name Node Status Übersicht

Das Hadoop Name Node Status web interface zeigt Informationen über den HDInsight/Hadoop cluster. Das sind z. B Informationen über den gesamten Speicher der zur Verfügung steht, dem verbrauchten Speicher, die Anzahl der Datenknoten (Live Nodes) und den Zustand des Clusters. Von Interesse kann auch die Anzeige des Inhaltes des Hadoop File-Systems (HDFS) sein, oder der Inhalt der Log-Dateien. Dazu später mehr, wenn das Coding startet und Dateien in das HDFS importiert wurden.

Das Name Node Status Portal ist eine Java Web Applikation, die am Port 50070 auf Zugriffe wartet. Die komplette URL kann jederzeit im Browser eingegeben und lautet (in unserem Fall): http://localhost:50070/dfshealth.jsp Noch einfacher ist der Aufruf über das Desktop-Icon:
image

Es öffnet sich ein Browserfenster und die Informationen über das NameNode werden angezeigt.

image

Hadoop MapReduce Status

Das Hadoop MapReduce portal zeigt Informationen über MapReduce Jobs an, diese werden wir im nächsten Blog-Eintrag geneuer unter die Lupe nehmen. Konfigurationsparameter und Statistiken über die Ausführung (running/completed/failed) sind hier einsehbar. Auch Log-Dateien über die Jobs sind hier abrufbar.

Diese Ansicht wird auch das JobTracker portal genannt, da jede MapReduce Operation als sogenannter Job im Cluster ausgeführt. Die URL ist hier http://localhost:50030/jobtracker.jsp.

image

Sollte es ein Problem mit einem MapReduce Job geben, ist das die erste Anlaufstelle zum “Troubleshooten”.

Zusammenfassung

Die Installation des HDInsight Emulator Dienstes geht ganz einfach von der Hand. Eine lokale Entwicklungsumgebung ist sehr schnell aufgesetzt, diese wollen wir im nächsten Blog gleich einmal mit einem MapReduce Job “an-programmieren” und uns genauer ansehen, wie die bestehenden BI-Tools von Microsoft in dieser neuen Umgebung verwendet und eingebettet werden können.

Holger Sirtl: Microsoft Azure Redis Cache jetzt allgemein verfügbar (GA)

Azure Redis Cache ist ein verteilter, in-Memory, Managed Cache, mit dem leistungsfähige Caching-Lösungen umgesetzt werden können. Er basiert auf dem beliebten Open Source Redis Cache. Bei der Verwendung im Kontext von Microsoft Azure übernimmt Azure die Einrichtung der benötigten Infrastruktur und verwaltet den Betrieb vollautomatisch. Redis Cache zeichnet sich durch einige interessante Features aus:

  • Hohe Performance
    Azure Redis Cache kann in Szenarien eingesetzt werden, in denen ein leistungsfähiger Cache benötigt wird, um Daten zwischen zu speichern, Zugriffe auf langsamere Speichermedien zu beschleunigen und damit insbesondere bei steigender Last die betreffende Anwendung nutzbar zu halten.
  • Komplexe Datenoperationen
    Redis Cache kann nicht nur als Key-Value-Store verwendet werden, sondern auch als Ablageort für größere Datenstrukturen. Er unterstützt Transaktionen auf den gespeicherten Daten, Master/Subordinate Replikation, Notifications (bei Datenänderungen) und einiges mehr.
  • Einfache Verwendung
    Redis Cache kann über das Preview Portal eingerichtet werden. Aufgrund der weiten Verbreitung kann der Cache aus den meisten Programmiersprachen heraus verwendet werden. Über das Portal kann der Status des Cache und Performancedaten ausgelesen werden.

Azure Redis Cache wird in zwei Leistungsstufen (Tiers) angeboten:

  • Basic: in dieser Leistungsstufen läuft Redis Cache auf einem einzelnen Rechenknoten. Diese Stufe eignet sich für Dev/Test-Szenarien oder unkritische Workloads.
  • Standard: Hier läuft Redis Cache auf zwei Knoten in einer Primary/Secondary-Konfiguration. Die Synchronisation der beiden Knoten erfolgt vollautomatisch.

Mit Redis Cache besitzt Microsoft Azure nun drei Caching-Services

Der früher noch verfügbare Shared Cache ist seit 01.09.2014 deprecated. Zur Frage, welcher sich im Einzelfall am besten eignet, habe ich vor kurzem einen Blog-Artikel (Microsoft Azure Caching - welchen Service soll ich nehmen?) verfasst.

Weitere Informationen

Sven Hubert: A simple and secure way to deploy test and release versions

TFS functions enhanced and simplified using the TFS ASAP

With the Release Management for Visual Studio a new TFS component is available to roll out the results of a build process to the staging- or production environment. Even the realization of a complex publishing process is possible.

But is it really necessary to have a complex server solution if you just want to copy the compiled binaries to a specific folder and send an e-mail afterwards? Does this simple requirement justify to upgrade to the latest TFS version?

As a simple alternative it is possible to use an existing TFS function in combination with a rule of the TFS Automated Servicing & Administration Platform.

A TFS function that is hardly used in practice is the possibility to mark a build with a quality flag.

The selection could get adjusted according to your needs using the Visual Studio -> Build -> Manage Build Qualities menu.

After setting a new quality on a build a server side event is raised by the TFS which is handled by TFS ASAP.

The actions which should get performed are defined within a configuration file within the mapped source control branch.

Tasks are defined for each quality that should get handled.

In the shown configuration for example the target “DeployTestVersion” in the  MSBuild script file “Deploy.targets” should get executed as soon as the quality is set to „Ready For Initial Test“.

Within the script all common MSBuild commands including all the available extensions can be used. Even complex scenarios can be realized thereby. Simple tasks like copying the build output to a file share requires only a few lines.

All configuration and script files are under version control. That makes it possible to deploy also a previous release.

It is a small extension through the TFS Automated Servicing & Administration Platform with great effect! Providing the latest stable version for the test team was never that easy before.

A simple and secure way to deploy test and release versions is a post from: AIT Blog

Holger Sirtl: Neue D-Serie für Virtual Machines jetzt mit SSDs verfügbar

Microsoft hat gestern eine neue Serie von Virtual Machines produktiv gesetzt: die D-Serie. Diese Serie ist mit bis zu 112 GB Hauptspeicher, neuen Prozessoren, die ca. 60% schneller als die der bisherigen A-Serie sind, und darüber hinaus mit SSDs als lokalen Laufwerken ausgestattet. Diese neuen VM-Serien können für Virtual Machines und Cloud Services (Web und Worker Roles) genutzt werden.

Die Images der neuen Serie sind wie folgt definiert:

Allgemeine VM-Images

Name vCores RAM Local SSD Preis/Monat
Standard_D1 1 GB 3,5 GB 50 GB 87,88 €
Standard_D2 2 GB 7,0 GB 100 GB 176,50 €
Standard_D3 4 GB 14 GB 250 GB 352,25 €
Standard_D4 8 GB 28 GB 500 GB 704,49 €

VM-Images mit großer Speicherausstattung

Name vCores RAM Local SSD Preis/Monat
Standard_D11 1 GB 14 GB 50 GB 202,56 €
Standard_D12 2 GB 28 GB 100 GB 405,87 €
Standard_D13 4 GB 56 GB 400 GB 730,56 €
Standard_D14 8 GB 112 GB 800 GB 1.314,40 €

Alle genannten Preise sind grobe Angaben, die von einem durchgängigen Betrieb einer VM über einen Monat (= 744 Stunden) ausgehen. Tatsächlich werden alle VMs, wie gehabt, minutengenau abgerechnet, wobei Stundenpreise als feste Größe dienen. Genauere Angaben zu den VM-Preisen können der offiziellen VM-Preisliste entnommen werden.

SSDs für das lokale Laufwerk D:

Die Tatsache, dass die SSDs als lokaler Laufwerke bereitstehen, bedeutet, dass in der jeweiligen Virtual Machine Laufwerk D: (bzw. /mnt oder /mnt/resource auf Linux) deutlich höhere Performance aufweist. Zu beachten ist, dass Laufwerke D: nur als temporärer Speicher genutzt werden sollte, da dieser nicht wie die anderen Laufwerke, die auf Blob Storage basieren, durch 3-fach-Speicherung persistent ist. Dieses temporäre Laufwerk sollte deshalb nur für Workloads, die über mehrere Instanzen replizieren (z.B. MongoDB), oder temporären Cache genutzt werden.

Erzeugung einer Virtual Machine auf Basis der D-Serie

Das Erzeugen einer Virtual Machine auf Basis der neuen Images ist denkbar einfach: im klassischen Management-Portal oder im neuen Portal stehen die Images beim Anlegen einer VM ab sofort zur Auswahl. Die folgenden Abbildungen zeigen dies:

image

image

Erzeugung eines Cloud Services auf Basis der D-Serie

Die Erzeugung eines Cloud Service, welcher Web bzw. Worker Roles auf Basis der neuen Images enthalten soll, erfolgt analog: In Visual Studio sind ab sofort entsprechende Auswahlmöglichkeiten vorhanden:

image

Alternativ können die entsprechenden Images in der Definitionsdatei des Cloud Service (*.csdef) gesetzt werden:

<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="AzureCloudService2" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2014-06.2.4">
  <WebRole name="WebRole1" vmsize="Standard_D1">
    <Sites>
      <Site name="Web">
        <Bindings>
          <Binding name="Endpoint1" endpointName="Endpoint1" />
        </Bindings>
      </Site>
    </Sites>
    <Endpoints>
      <InputEndpoint name="Endpoint1" protocol="http" port="80" />
    </Endpoints>
    <Imports>
      <Import moduleName="Diagnostics" />
    </Imports>
  </WebRole>
</ServiceDefinition>

In beiden Fällen (Auswahl in der Eingabemaske oder Angabe in der Definitionsdatei) werden kleine VMs aus der D-Serie konfiguriert.

Weitere Informationen

Alexander Schmidt: Erfahrungen mit Microsoft Projekt Siena BETA

Microsoft promotet schon seit längerem das Projekt Siena (mittlerweile in der 3. Beta Variante link) – ein Grund sich mal mit diesem Tool zu beschäftigen. Ist es ein möglicher Ersatz um schnell UIs zubauen? Oder vielleicht sogar eine komplette Alternative zu entwickeln von Apps? Diese Fragen schossen mir durch den Kopf als ich vom Projekt […]

ppedv Team Blog: Windows METRO Apps Cross Plattform mit WinJS 3

Cross-Plattform-Development ist in aller Munde. Nun steigt Microsoft mit der neuen WinJS-Bibliothek in den JavaScript Framework Markt ein. Konkurrenz sind JQuery Mobile, AngularJS oder auch Kendo UI. Das sind alles Themen auf der ADCX Konferenz.

Der erste Blick auf die JavaScript für Windows Bibliothek per Nuget Download in Visual Studio 2013 eröffnet ernüchternde Download Zahlen: nur 167 in der ersten Woche.

winjs

In meinem Fall hat zwar die Installation scheinbar geklappt, es waren aber keine neuen CSS oder JS Dateien im Projekt angelegt. Erst der Manuelle Download des Zip mit anschließendem Entpacken in das Web-Projekt, hat den Start ermöglicht. Nebenbei bemerkt: der Download kommt von Amazon Web Services.

winjs2:

Die Zeiten haben sich geändert, gut finde ich das nur bedingt.

Als nächstes wird WinJS in eine ASPX Seite eingebunden. Es gibt zwei Design-Varianten: dark und light.

   1:   <link href="Content/ui-dark.css" rel="stylesheet" />
   2:   <script src="Scripts/WinJS.js"></script>

Die Controls sind in einzelne JavaScript-Dateien aufgeteilt und sozusagen modularisiert. Für den Einstieg packe ich die komplette Bibliothek, immerhin unkomprimiert 3,7 MB groß, in die HTML-Seite.

Ans Ende des HTML-Blockes wird der Script Block gecoded. Die Daten kommen per Json aus einem REST ASP.NET Web Api Service und beinhalten die Northwind Customer Daten. Nachdem die Daten geladen sind, wird die Bindung aktualisiert (Zeile 11)

   1:<script>
   2: WinJS.Application.onready = function () {
   3:              var options = {
   4:                  url: '/api/kunden',
   5:                  type: 'GET'
   6:              };
   7: WinJS.xhr(options).done(
   8:      function (result) {
   9:     callback(result.responseText, result.status);
  10:                      //Binding aktivieren
  11:     WinJS.UI.processAll();
  12:                  },
  13:                  function (result) {
  14:                      callback(null, result.status);
  15:                  }
  16:              );
  17:          };
  18:   
  19: WinJS.Application.start();
  20:   
  21: function callback(responseText, status) {
  22:     if (status === 200) {
  23:       var customers = JSON.parse(responseText);
  24:       WinJS.Namespace.define("DataExample", {
  25:          data: new WinJS.Binding.List(customers)
  26:                  });
  27:   
  28:              } else {
  29:   
  30:              }
  31:          }
  32:   </script>

Etwas ungewohnt werden die empfangenen JSON Array Daten in eine bindbare WinJS Liste umgewandelt. Der Namensraum kombiniert mit dem Eigenschaftsnamen, ergänzt um das Schlüsselwort dataSource, wird im HTML Code per win-Options an das Listview Control gebunden.

Das eigentliche Itemtemplate wird extern, das heißt außerhalb des Listview DIV extra deklariert. Die Feldbindung erfolgt per win-bind Attribut.

   1:  <h1>Demo METRO Liste</h1>
   2:  <div class="customerTemplate" 
data-win-control="WinJS.Binding.Template" style="display: none;">
   3:      <div style="height:80px">
   4:          <h4 data-win-bind="textContent: CompanyName"></h4>
   5:     </div>
   6:  </div>
   7:  <div id="basicListView"
   8:     data-win-control="WinJS.UI.ListView"
   9:     data-win-options="{ itemDataSource : DataExample.data.dataSource, 
  10:     itemTemplate: select('.customerTemplate') }">
  11:  </div>

Richtig erstaunlich wird es im Browser. Die Website sieht aus wie Windows 8.1 und ist genauso bedienbar. In dem Fall mit einem horizontalen Scrolling.

image

Nun hat Microsoft also mit WinJs 3.0 Yet Another JavaScript Library für mobile Clients. Stellt sich die Frage: wer braucht das, wer wird das nutzen? Konzeptionell ist die Architektur gut gelungen und einfach nutzbar. Die für JavaScript typischen Probleme mit Asynchronität finden sich auch hier. Hervorzuheben ist, dass der HTML Code und vermutlich weitestgehend der JS Code aus einer nativen Windows 8.1 Anwendung übernommen werden können. Die HTML5 Designer aus Blend sind das Beste, was der Markt aktuell an WYSIWYG zum Thema zu bieten hat. In der Gesamtbetrachtung bin ich vorsichtig optimistisch, würde aber aktuell kein Projekt damit starten.

Mehr zum Thema Cross Plattform auf der ADCX in Mannheim und Wien.

codefest.at [MS]: Game Development Contest beginnt!

Wie bereits angekündigt, beginnt heute unser Game Development Contest, der erste Teil unserer Game Development Challenge. Wenn ihr ein Spiel von heute bis 31. Oktober 2014 in den Windows Store oder Windows Phone Store stellt und uns bekanntgebt, mit welchem Spiel ihr teilnehmt, könnt ihr einen dieser Preise gewinnen:

  • 1 XBox 360 inkl. Special Edition Controllerund 2 Kinect-Spiele (Kinect Sports, Dance Central 3), im Wert von je UVP 39 €
  • 5 Xbox One Spiele (Watch Dogs, RYSE, Dead Rising 3, Forza 5), im Wert von je UVP 69 €
  • 2 Xbox 360 Spiele (Halo 4, Alan Wake), im Wert von je UVP 69 €
  • 3 PC-Spiele (Watch Dogs), im Wert von je UVP 69 €
  • 10 Lizenzen für das PC-Spiel Panzer Tactics HD, im Wert von je 30 €

    Es gibt auch als Sonderpreis eine 1 Jahr Starter Lizenz von V-Play im Wert von 250 €.

    Die Gewinner werden am 9. Dezember ermittelt, in dem wir uns die Store Downloads und Ratings anschauen. Das heißt, je früher ihr das Spiel in den Store stellt, desto mehr Zeit habt ihr, im Store gute Downloadzahlen zu erzielen.

    Falls ihr Insipirationen sucht, haben wir für euch hier eine Liste mit Game Development relevanten Infos. Einige Beispiele sind zb fertige Samples und Tutorials, die ihr mit euren eigenen Grafiken anpassen könnt: Flappy Bird auf Unity, Flappy Bird auf V-Play, Slide Shooter auf Unity, etc.

    Oder ihr schaut euch die kostenlosen Trainings zu Spiele-Entwicklung auf der MVA an. Falls ihr schon ein Spiel für eine andere Plattform mit Unity entwickelt habt, dann gibt es hier einen Kurs dazu, wie man auf Windows Store / Windows Phone das Spiel portiert.

  • Um ein fertig kompiliertes Spiel in den Windows Store / Windows Phone Store einzureichen, benötigt ihr zuerst einen Developer Account. Ihr könnt dann dort euer Package hochladen.

    Viel Glück bei der Challenge!

    Karsten Kempe: Der TFS Web Access ist ein Sensibelchen – Folge 2: “Der fehlende Effort”

    VTFS2013_WebAccesseränderungen am TFS Work Item Template können weitreichende Auswirkungen haben und sollten deshalb im Vorfeld gut durchdacht sein. In der letzten Folge von “Der TFS Web Access ist ein Sensibelchen” habe ich Euch gezeigt was passiert, wenn ein Work Item ohne das Feld Backlog Priority in die Requirement Category aufgenommen wird. Auch in dieser Folge geht es um ein fehlendes Work Item Feld, nämlich um das Feld Effort, welches für die Forecast-Funktion benötigt wird.

    Der vermisste Effort

    Das Feld Microsoft.VSTS.Scheduling.Effort (kurz: Effort) ist ein backlog-relevantes Feld, welches z.B. für die Berechnung des Sprint-Forecasts verwendet wird. Wenn Ihr ein Work Item aus einer älteren TFS Version (TFS2010 oder älter) in Euer Work Item Modell aufnehmen und als Backlog Item im Web Access anzeigen wollt, dann müsst Ihr unbedingt darauf achten, dass dieses Feld in der Work Item Definition existiert.

    TFS WebAccess - Forecast

    Alle Work Items, die auf dem Product Backlog visualisiert werden sollen, müssen in der Requirement Category des TFS Web Access hinterlegt werden. Die Kategorien des TFS sind in der Definitionsdatei Categories.xml zu finden. Fehlt einem darin referenzierten Work Item das Feld Effort, kommt es zu folgendem Fehler:

    TFS WebAccess - effort

    Hinweis: Das Feld Microsoft.VSTS.Scheduling.Effort wird in der Konfigurationsdatei ProcessConfiguration.xml referenziert und wird für die Forecast-Funktion des Backlogs verwendet.

    Um den Fehler zu beheben, kommen zweierlei Lösungsansätze in Frage. Entweder man nimmt das Feld Microsoft.VSTS.Scheduling.Effort in das Work Item auf (Field Type: double | Reportable: Measure) oder man ändert den Feld-Verweis in der Prozess Konfiguration ProcessConfiguration.xml. Allerdings muss man beim zweiten Lösungsansatz daran denken, dass ein neu-referenziertes Feld auch in allen anderen Requirement Work Items existieren muss, sonst bekommt man den selben Fehler wieder.

    Wie Ihr die Prozess Konfiguration ändern könnt, dass zeige Ich Euch in folgendem Video:

    Achtung: Alle Änderungen am Prozess Template des TFS, sowohl Work Item Änderungen als auch Änderungen an der Prozess Konfiguration, sollten unbedingt zuerst in einer Test-Umgebung geprobt werden. Ausserdem solltet Ihr immer auf die letzte Version Eurer Definitions-Dateien zurückgreifen können – bitte Versionskontrolle verwenden.

    codefest.at [MS]: Wie komme ich zu meinem Windows Developer Account?

    Da es seit der letzten Woche wieder zu einigen Neuerungen rund um den Developer Account zu Windows Store/Windows Phone Store gekommen ist, will ich euch hier einige Infos zusammenstellen.

    Es gibt zur Zeit zwei Stores: den Windows Store und den Windows Phone Store. Die Registrierung eines Developer Accounts ermöglicht euch, dass ihr Apps oder Spiele in beide Stores veröffentlichen könnt.

    Die Registrierung des Stores kostet einmalig 19 USD und bleibt euch immer erhalten.

    Es gibt allerdings zahlreiche Programme, wie ich gratis zu einem Developer Account kommen kann.

    Als Student:


    Jeder Student kann das DreamSpark Programm nutzen und bekommt damit nicht nur kostenlose Software, sondern auch einen Token für den Developer Account.
    www.dreamspark.com

    Als IT-Startup:


    Bei Erfüllung bestimmter Kriterien bekommen IT-Startups die gleichen Vorteile wie DreamSpark Studenten mit kostenloser Software und Zugänge zu den Windows Stores. Zusätzlich habt ihr bei BizSpark auch ein monatliches Azure Kontingent zur Verfügung.
    www.bizspark.com

    Als MSDN Subscriber:


    In eurer MSDN Subscription befindet sich ein Token mit dem ihr euch gratis einen Developer Account registrieren könnt.
    http://msdn.microsoft.com

    Als angehender App-Entwickler für Windows:


    Windows Dev Center Benefits Programm (neu)
    Wenn ihr vorhabt eine App in den nächsten 90 Tagen zu veröffentlichen, so könnt ihr euch beim Windows Dev Center Benefits Programm anmelden.

    Dieses Programm teilt Entwickler in drei Stufen auf (Explorer, Expert, Master) und ihr bekommt je nach eurem Level unterschiedliche zusätzliche Angebote, die ihr nutzen könnt. Eines der Angebote ist kostenlos ein Developer Account zu bekommen, sofern ihr nicht bereits registrierte Dev Center Benutzer seid. 

    Wenn ihr bereits Apps oder Spiele auf anderen Plattformen veröffentlicht habt und nun diese für die Windows Plattform portieren und veröffentlichen wollt, so könnt ihr eure erfolgreichste App in diesem Programm angeben und hab die Möglichkeit, in die höheren Levels aufzusteigen und von den Zusatzangeboten zu profitieren.
    https://devcenterbenefits.windows.com/

    Als bestehender App-Entwickler für Windows:

    Wie oben bereits erwähnt, gibt es nun nurmehr eine einmalige Registrierung für den Developer Account, der dann immer gilt. Das heißt, alle bereits registrierten Entwickler müssen keine Erneuerung ihres Developer Accounts mehr durchführen!

    Natürlich gilt das im vorigen Abschnitt erwähnte Dev Center Benefits Programm auch für Entwickler, die bereits Apps oder Spiele im Windows Store / Windows Phone Store veröffentlicht haben. Ihr gebt auch hier eure erfolgreichste App an und bekommt einen Level mit den dazugehörigen Angeboten, die ihr in Anspruch nehmen könnt.
    https://devcenterbenefits.windows.com/

    codefest.at [MS]: V-Play Aktion für die Game Development Challenge

    Ab morgen beginnt der Game Development Contest, und ihr könnt eure Spiele einmelden, um coole Preise zu gewinnen. Wenn ihr euch überlegt habt, die V-Play Engine auszupobieren, dann ist jetzt der beste Zeitpunkt dafür.

    Für diesen Game Development Challenge hat V-Play den Zeitraum für die Trial Version der Engine auf 30 Tage verlängert. Und wenn ihr eure Spiele dann für Windows Store oder Windows Phone publishen wollt, so könnt ihr auch das gratis machen. Einfach an das V-Play Team schreiben, dass ihr an der Challenge teilnehmt und ihr bekommt die Lizenz zu publishen. Mehr Infos zu dem Prozess findet ihr bei V-Play. Um mit dier Engine zu starten, gibt es ein Flappy Bird Tutorial, und wie man das Spiel dann für Windows Phone portiert. Wo man Grafiken und Sounds findet, wisst ihr ja bereits.

    Und nicht vergessen, die besten V-Play Spiele bekommen eine 1 Jahr Starter-Lizenz als Preis!

    Ralf Westphal: Vom Problemtrichter zum Lösungsbaum

    Software soll doch einfach nur laufen. Das wünscht sich der Kunde und meint damit, dass sie ein bestimmtes Verhalten zeigen soll. Sie soll gewünschte Funktionalität in bestimmter Qualität bieten, also z.B. rechnen, aber schnell, oder überweisen, aber sicher, oder Videos zeigen, aber für Millionen Benutzer gleichzeitig. Verhalten wird hergestellt durch Logik. So nenne ich die Summe aus Ausdrücken

    Holger Sirtl: Kostenkontrolle bei Microsoft Azure Virtual Machines

    Das Preismodell für Virtual Machines enthält leider ein paar Fallstricke, die sich unangenehm auf die monatliche Abrechnung der Nutzung von Microsoft Azure auswirken können. Dabei kommt es immer wieder zur Frage, wie sich die Kosten niedrig halten lassen bzw. bei Nicht-Verwendung von Virtual Machines so weit wie möglich vermeiden lassen. In der Tat lassen sich bei der Auswahl bzw. beim Betrieb von Virtual Machines einige Entscheidungen treffen, die sich positiv auf die anfallenden Kosten auswirken. Folgende Faktoren sind wichtig:

    • Berücksichtigung aller Kostenpositionen für Virtual Machines
    • Wahl der richtigen Leistungsstufe (Basic vs. Standard Tier)
    • Beachtung der anfallenden Kosten in den verschiedenen Zuständen einer Virtual Machine

    Kosten für Virtual Machines

    Während des Betriebs von Virtual Machines fallen dreierlei Arten von Kosten an:

    • Kosten für Rechenkerne
      Für Rechenkerne, die in betriebenen VM-Instanzen arbeiten, fallen zeitabhängig Kosten an. Auf der offiziellen Preisliste sind deshalb je nach VM-Größe (die ja die Zahl der Rechenkerne bestimmt) entsprechende Preise gelistet. Die Preisliste enthält die Preise pro Stunde. Tatsächlich erfolgt die Abrechnung aber minutengenau, d.h. für VMs, die nur eine halbe Stunde betrieben wurden, fallen entsprechend nur 50% der Stundenkosten an.
      Wichtig: diese Rechenkern-Kosten fallen so lange an, wie die VM im Status “Starting”, “Running” oder “Stopped” ist, da während dieser Zeit die Rechenkerne auch tatsächlich bereitgehalten werden.
    • Kosten für Speicherplatz
      Die Preise der Virtual-Machine-Preisliste beziehen sich nur auf die Kosten für die Bereitstellung von Rechenkernen. Darin sind jedoch NICHT die Kosten für den Speicherplatz enthalten, der von den VM-Disks (Ausnahme: Laufwerk D:\)belegt wird. Jede VM enthält mindestens zwei Laufwerke: Laufwerk C: und Laufwerk D:. Laufwerk C: ist die OS-Disk. Diese wird im Blob-Storage persistiert. Entsprechend wird im Blob-Storage Speicher allokiert, für den dann wiederum entsprechende Kosten anfallen. Laufwerk D: ist ein nicht-persistiertes Laufwerk in der VM (geeignet für das Pagefile, Temp-Verzeichnisse etc.). Für dieses Laufwerk fallen keine Kosten an. Werden weitere Disks an eine VM gehängt fallen auch für diese – wie für Laufwerk C: – Kosten für den belegten Blob-Storage an. Kosten können über die Page-Blob-Storage-Preisliste eingesehen werden.
    • Kosten für Lizenzen
      In der Regel fallen zusätzlich zu den Rechenkern- und den Speicherplatzkosten noch weitere Kosten für die Lizenzen der Software an, die in der VM betrieben werden. Diese sind in der Regel in den Kosten der betreffenden Virtual Machine Images (siehe Abbildung) enthalten.

      image
       

    Hinzu kommen etwaige Datenübertragungskosten. Dabei fallen nur für Datenverkehr Kosten an, bei dem Daten aus einem Azure-Rechenzentrum hinaus übertragen werden. Die Kosten können über die Datentransfer-Preisliste eingesehen werden.

    Leistungsstufen bei Virtual Machines

    Bei Virtual Machines kann zwischen zwei Leistungsstufen unterschieden werden. Dabei beeinflusst die konkrete Auswahl auch die Kosten, die für den Betrieb anfallen.

    • Basic Compute Tier
      Die Basisvariante ist sehr ähnlich zu Standardvariante. Gegenüber Letzterer fehlen der Loadbalancer und die Möglichkeit der Autoskalierung. Das Fehlen dieser beiden Funktionalitäten ist jedoch für einige Workloads nicht weiter tragisch: für Entwicklungs- und Test-Szenarien oder einfachere Batch-Verarbeitung ist die Basisvariante völlig ausreichend. 27% Kostenersparnis sind deshalb durchaus ein guter Grund für entsprechende Workloads diese Variante für Virtual Machines zu verwenden.
    • Standard Compute Tier
      Die Standardvariante ist die Ausprägung, die für Virtual Machines schon immer bereit stand. Die im Vergleich zur Basisvariante höheren Kosten sind begründet in der Verfügbarkeit der Funktionalitäten, die eben in der Basisvariante fehlen: Loadbalancer, Autoskalierung etc.

    Überblick über Kosten in den verschiedenen Zuständen

    Eine Virtual Machine kann  im Rahmen ihres Lebenszyklus verschiedene Zustände annehmen. Dabei unterscheiden sich die anfallenden Kosten von Zustandzustand. Dabei ist sowohl beim Herunterfahren als auch beim Löschen einer Virtual Machine die genaue Vorgehensweise zu beachten, um unnötige Kosten zu vermeiden. Folgende Tabelle gibt einen Überblick welche Kostenpositionen in den einzelnen Zuständen jeweils zum Tragen kommen:

    Zustand Kosten für
    Rechenkerne
    Kosten für
    Speicherplatz
    Kosten für
    Lizenzen
    Starting Ja Ja Ja
    Running Ja Ja Ja
    Stopped (Allocated) Ja Ja Nein
    Stopped (Deallocated) Nein Ja Nein
    Deleted (ohne Löschen der Disks) Nein Ja Nein
    Deleted (mit Löschen der Disks) Nein Nein Nein

    Für das Herunterfahren einer Virtual Machine gilt: wird die Virtual Machine über das Management-Portal oder über den PowerShell-Befehl ShutdownRoleOperation mit der Option PostShutdownAction=StoppedDeallocated heruntergefahren, landet die Virtual Machine Zustand “Stopped (Deallocated)”, was dazu führt, das noch Kosten für den Speicherplatz der ei Welnen Disks anfallen. wird die Virtual Machine jedoch über die Shutdown-Funktion in Windows (z.B. via Remote Desktop) oder den PowerShell-Befehl ShutdownRoleOperation mit der Option PostShutdownAction=Stopped heruntergefahren, werden die betreffenden Rechenkerne der Virtual Machine weiterhin bereitgehalten, und es fallen neben den Speicherkosten auch weiterhin Kosten für die Rechenkerne an.

    Für das Löschen einer Virtual Machine gilt: über das gleichzeitige Löschen der zugehörigen Disks führt dazu, das tatsächlich keine weiteren Kosten mehr anfallen. Verbleiben die Disks im Storage (d.h. sie werden beim Löschen der VM nicht mit gelöscht), fallen auch weiterhin Speicherkosten an. 

    Weitere Informationen

    Holger Schwichtenberg: Zugang zu einer Azure-VM mit deaktivierten Netzwerkadaptern

    Mit einem Trick kann man sich wieder mit einem virtuellen Computern verbinden, aus dem man sich ausgesperrt hat.

    codefest.at [MS]: Kinect V2 Hands-On Workshop

    Vom 11. – 17. Oktober 2014 findet it Codeweek EU statt. Das ist eine EU-weite Initiative, um Coding Skills zu verbreiten. Es finden daher in der genannten Woche Code-related Events statt.

    Tieto organisiert hierbei einen 4-Stunden Hands-On Workshop, indem eine Windows Store App mit Kinect V2 entwickeln könnt. Ihr lernt dabei, wie ihr mit Gesten eure App steuern könnt.

    Mehr Infos findet ihr hier.

    Viel Spaß bei der Programmierung mit Kinect!

    Holger Sirtl: Azure Active Directory Sync ist allgemein verfügbar

    Microsoft hat gestern die allgemeine Verfügbarkeit (GA) des neuen Azure Active Directory Synchronization Service (AAD Sync) bekanntgegeben. AAD Sync vereinfacht den Prozess zur Verknüpfung von Azure AD mit einem Windows Server AD einschließlich dem Setup komplexer, Multi-Forest Deployments. Die einzelnen Funktionen werden in einem Blog-Eintrag des Active Directory Teams genauer aufgeführt.

    Wer einfach loslegen möchte, kann sich das Konfigurationstool für den AAD Sync Service herunterlegen und mit dem Setup beginnen.

    In der aktuellen Version werden folgende Funktionalitäten vom AAD Sync unterstützt:

    • Active Directory und Exchange Multi-Forest Umgebungen können in die Cloud ausgedeht werden.
    • Kontrolle darüber, welche Attribute synchronisiert werden, basierend auf dem gewünschten Cloud Service.
    • Auswahl der Accounts, die über Domains und Organisationseinheiten hinweg synchronisiert werden.
    • Möglichkeit zur Etablierung einer Verbindung zum AD mit minimalen Windows Server AD Privileges.
    • Aufsetzen von Synchronisationsregeln durch das Mapping von Attributen.
    • Die Funktionen Passwort-Ändern und -Rücksetzen aus dem Preview AAD Premium können auch mit einem On-Premises AD verwendet werden.

    Weitere Funktionen werden zu einem späteren Zeitpunkt folgen. Dazu gehören insbesondere die Möglichkeit zur Passwort-Synchronisation in Multi-Forest-Umgebungen. Danach kommen Funktionen wie die Unterstützung erweiterter Attribute, das Rückschreiben von Usern, Geräten und Gruppen sowie die Unterstützung von Nicht-AD-Verzeichnissen.

    Feedback und Wünsche sind jederzeit über das Windows Azure AD Forum willkommen.

    Weitere Informationen

    Holger Schwichtenberg: Aus ASP.NET vNext wird ASP.NET 5.0

    Im aktuelle Quellcode findet man schon Hinweise darauf, dass die nächste ASP.NET-Version die Versionsnummer 5.0 tragen wird.

    Kay Giza [MS]: Microsoft auf der BASTA 2014: Infos, Stand, Experten, Sprecher...

    Für alle die nächste Woche in Mainz auf der BASTA sein werden oder noch hingehen möchten: Vom 22.-26.09.2014 findet die BASTA! 2014 (Konferenz für .NET, Windows & Web) statt. Wir von Microsoft begleitet die Konferenz mit Sprechern und Experten, einem Stand auf der Expo (23.09-25.09.) und einem Gewinnspiel (zu gewinnen gibt es ... [... mehr auf Giza-Blog.de]


    This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
    © Copyright 2006-2013 Kay Giza. All rights reserved. Legal

    Sven Hubert: Einfaches Bereitstellen von Testversionen und Releases

    TFS Funktionen vereinfacht und erweitert mit dem TFS ASAP

    Mit dem Release Management for Visual Studio steht eine neue TFS-Komponente zur Verfügung um die Ergebnisse von Buildprozessen auf die Staging- oder Produktivumgebung auszurollen. Eine Realisierung von komplexen Veröffentlichungsprozessen ist, vorausgesetzt man verfügt über die neueste TFS Version, relativ unkompliziert möglich.

    Aber benötigt man tatsächlich gleich eine komplexe Server Lösung wenn man nur das Ergebnis eines Buildprozesses in ein bestimmtes Verzeichnis verschieben und danach eine E-Mail versenden möchte? Muss man deshalb auf die neueste TFS Version upgraden?

    Als einfache Alternative bietet sich eine schon seit der ersten TFS Version vorhandene Funktion in Verbindung mit einer Automatisierungsregel der TFS Automated Servicing & Administration Platform an.

    Eine TFS Funktion, die in der Praxis kaum genutzt wird, ist die Möglichkeit Buildergebnisse mit einer „Qualität“ zu versehen.

    Unter Build -> Manage Build Qualities… kann man die Auswahl entsprechend den eigenen Bedürfnissen anpassen.

    Der TFS ASAP bietet die Möglichkeit über eine Automatisierungsregel auf das Setzen einer Qualität serverseitig zu reagieren.

    Das Verhalten wird über eine in den Branch eingecheckte Konfigurationsdatei gesteuert.

    In dieser werden zu jeder Qualität auf deren Setzen man reagieren möchte Aktionen hinterlegt.

    Im Beispiel wird festgelegt das sobald die Qualität auf „Ready For Initial Test“ gesetzt wird die MSBuild Skriptdatei Deploy.targets mit dem Einsprungspunkt DeployTestVersion aufgerufen werden soll.

    In der Skriptdatei stehen alle gewohnten MSBuild Kommandos mit all ihren Erweiterungen zur Verfügung. Auch komplexe Szenarien lassen sich hierdurch realisieren. Für einfache Dinge wie dem Umkopieren der Buildergebnisse auf ein Fileshare benötigt man nur wenige Zeilen.

    Alle Dateien stehen dabei unter Versionskontrolle. Sollte ein früheres Release noch einmal bereitgestellt werden müssen, kommen automatisch auch die dazugehörenden Skripte zur Anwendung.

    Eine kleine TFS-Erweiterung durch den TFS ASAP mit großer Wirkung, die in vielen Fällen die Installation der Release Komponente erspart.

    Einfaches Bereitstellen von Testversionen und Releases is a post from: AIT Blog

    Jürgen Gutsch: Umlaute im Windows Benutzernamen

    Ich hatte es im letzten Beitrag bereits kurz geschrieben, dass ich meinen Benutzernamen im Windows tatsächlich blöderweise “Jürgen” genannt habe. Im Grunde funktioniert alles, außer man möchte “Exotische” Tools nutzen, die nicht mit Umlauten zurecht kommen.

    Das Problem das entsteht ist ein weiteres Userverzeichnis:

    explorer

    Wir haben hier hier ein Verzeichnis, dass wie “Jrgen” aussieht, aber nicht ist. Zwischen dem J und dem r versteckt sich ein Sonderzeichen, das der Windows Explorer versteckt. Sichtbar wird das erst in der Kommandozeile:

    commander

    Welches Zeichen hier tatsächlich steht, kann ich nicht herausfinden. Es wird sich wohl um ein abgeschnittenes Zeichen aus dem UTF-8 Zeichensatz handeln.

    Schaut man in das Userverzeichnis rein, sieht man die Anwendungen die dort Daten ablegen. Unter anderem tatsächlich auch das Microsoft. Das Userverzeichnis enthält nur das Verzeichnis AppData und darunter nur Local und Roaming:

    Local

    Die hier sichtbaren Anwendungen und Plattformen kommen mit dem Userverzeichnis klar. Probleme machen aber unter anderem leider:

    • npm (benötigt für node.js)
      • node.js selber macht keine Probleme
    • Ruby und RubyGems

    Das Resultat sind immer Unmengen von Fehlermeldungen wegen nicht gefundener Verzeichnisse.

    Das Fazit hier lautet hier also: Umlaute in generell Benutzernamen vermeiden, vor allem auf Entwicklermaschinen ;)

    Code-Inside Blog: OpenGraph for Twitter Cards

    On of the first things I did on this blog was to enable the “Twitter Card” integration.

    What is Twitter Card?

    Twitter Cards are a way to preview you content / post / site when shared via Twitter. When someone tweets your blog post Twitter (and Facebook and others…) will reach out to your site and try to find meta information. With the correct meta tags Twitter & co. will display more information.

    Minimal Twitter Card Integration

    Twitter understands Twitters “own” proprietary meta tags and (some) OpenGraph meta tags. If you try to get the minimal “Twitter Card” integration for your site you will need the following meta tags:

    <meta name="twitter:card" content="summary">
    <meta name="twitter:site" content="@TWITTERHANDLE"> 
    
    <meta property="og:title"       content="SOME TITLE" />
    <meta property="og:type"        content="blog" /> 
    <meta property="og:url"         content="HTTP://AWESOMENESS.IO" /> 
    <meta property="og:description" content="SOME DESCRIPTION" >
    

    This markup works well on nuget.org

    Twitter Card Markup

    I only applied the minimal Twitter Card Integration on this blog currently and it works for me. If you need a more sophisticated Twitter Card read the docs at the Twitter Dev Center.

    Register for Twitter Card

    To get things running you need to verify your site via the Twitter Dev Center. This process takes one or two days and doesn’t cost anything.

    Test your site

    You can test your site here.

    Social Meta Tags for Twitter, Google, Facebook and more

    This Blogpost is an awesome resource to learn more about the different Meta-Tags for Facebook, Goolge & co.

    Christian Binder [MS]: ALM Readiness Treasure Map

    Die ALM Rangers haben die ALM Readiness Treasure Map aktualisiert. Die Treasure Map enthält Links zu den Guidance Dokumenten und anderen informativen Ressourcen rund um VS ALM.

    image

    Hier der Link zur App : http://aka.ms/vsartmapapp

    Uli Armbruster: Regelwerk und Beispiele für die eigene Retrospektive

    611912_web_R_B_by_Lisa Spreckelmeyer_pixelio.deBei uns führt jeder IT-ler täglich seine eigene Retrospektive durch. Für neue Mitarbeiter will ich in diesem Blogbeitrag festhalten, was wir darunter verstehen. Statt die Information in unserem internen Wiki zu persistieren, wollte ich sie öffentlich machen, damit gegebenenfalls Andere davon profitieren können. Eine letzte Anmerkung für Außenstehende: Natürlich führen wir zusätzlich noch Team bzw. Sprint Retrospektiven durch, die sich zum Teil erheblich unterscheiden.

     

    Regelwerk

    • Die Retrospektive ist ein Werkzeug aus unserem Werkzeugkasten zur kontinuierlichen Verbesserung
    • Eine Retrospektive ist eine Reflexion, bei der der Tag nochmal in Gedanken durchgegangen wird. Eine feste Dauer gibt es nicht, da jeder Tag anders ist. Aber um eine Orientierungshilfe zu nennen: 10-30 Minuten.
    • Idealerweise wird die Retrospektive immer am Ende eines Tages gemacht, weil die Erinnerungen noch frisch sind. Eine feste Vorgabe gibt es jedoch nicht. Es ist genauso möglich täglich mehrmals Notizen festzuhalten oder frisch ausgeruht am Morgen des Folgetages zu reflektieren.

    Was ist festzuhalten?

    • Sowohl das Gute, als auch den Verbesserungsbedarf. Jedoch nicht nur das Problem an sich, sondern möglichst gleich eine entsprechende Lösung.
    • Wenn ich selbst etwas Neues probiert habe und es gut funktioniert hat, dann könnte eine Schlussfolgerung lauten, die Vorgehensweise meinen Kollegen zu empfehlen. Eine weitere könnte lauten, dass es sich lohnt noch mehr Zeit in die Optimierung bzw. das Testen zu stecken, um noch mehr herauskitzeln zu können
    • Bei negativen Punkten ist zu unterscheiden, ob es sich um regelmäßig benutze Ansätze respektive auftretende Verhaltensweise handelt oder ob es ein einmaliges Problem war
    • Wenn es regelmäßig auftritt, sollte es in jedem Fall festgehalten und über eine Lösung nachgedacht werden. Im Zweifel kann es in die Team Retrospektive eingebracht werden, um Hilfestellung zu bekommen. Oder es könnte sich um das Verhalten des Kollegen handeln, welches negative Konsequenzen für die eigene Arbeit mitbringt. Dann könnte eine Schlussfolgerung sein dies zunächst unter 4 Augen zu klären.
    • Bei einmalig aufgetretenen Problemen sollte jeder selbst entscheiden, ob es sich ein Eintrag lohnt. Bei einem menschlichen Fehler, der einmalig und unter einer einmaligen Konstellation auftrat, ist das vermutlich wenig zielführend. Allerdings hängt es auch ein wenig von den Konsequenzen ab. Vergesse ich beispielsweise beim Gehen das Abschließen und Sichern des Firmengebäudes, so kann ich – oder eben nicht – selbiges notieren und z.B. darüber nachdenken eine kleine Checkliste am Monitor zu befestigen. Auf der könnte übrigens dann auch stehen, dass die abendliche Retrospektive durchzuführen ist.

    Beispiele

    • Vergesse ich als Schüler, der ich ca. 1x in der Woche bei einem Betrieb jobbe, mehrfach meine meine Retrospektive durchzuführen oder mir meine Arbeitszeit per Unterschrift bestätigen zu lassen, dann kann ich mir die oben erwähnte Checkliste an meinem Arbeitsplatz (am besten auf Augenhöhe) befestigen.
    • Verstoße ich als Entwickler gegen das Don’t Repeat Yourself-Prinzip, dann notiere ich das. Stelle ich nach einem Monat fest, dass das häufig vorkommt, überlege ich mir, woran es liegt. Arbeite ich z.B. viel mit Copy & Paste, so könnte ich z.B. für 1-2 Wochen in meiner IDE die Tastenkombination STRG+C umstellen.
    • Vergesse ich als Administrator regelmäßig E-Mails an Externe, weil der Empfänger sich nicht von alleine meldet, so kann ich mir in Outlook auf die gesendete E-Mail einen Reminder setzen.
    • Verbringe ich als Vorgesetzter den Großteil meiner Zeit in Meetings, so sollte ich selbige vielleicht analysieren. Unproduktive Meetings lassen sich mit einfachen Mitteln deutlich verbessern (vgl. meinen Artikel Wir arbeiten timeboxed). Eine weitere Möglichkeit ist es alle Meetings auf einen Tag zu legen oder an bestimmten Tagen / zu bestimmten Uhrzeiten gar keine Meetings anzusetzen.

    Aus unserer täglichen Retrospektive berichte ich hier. Natürlich ist die Retrospektive ein sehr weites Feld und das oben genannte Regelwerk nur ein Tropfen auf den heißen Stein. Aber für den Einstieg reicht uns das. Der Rest kommt über Gespräche darüber und beim täglichen Reflektieren.

    Wie hält es der Leser? Sind Retrospektiven bei euch in der Firma fest im Prozess etabliert? Nur bei Scrum oder auch in Eigenregie? Wollen die Kollegen sich überhaupt weiterentwickeln?


    Einsortiert unter:CIO Topics, German Tagged: Agile Development, Retrospektive

    ppedv Team Blog: Windows 8 Tipp – Dateiversionsverlauf nutzen

    Ein Feature in Windows 8 sorgt für die Sicherung und Wiederherstellung Ihrer Dateien und Ordner. Der sogenannte Dateiversionsverlauf sichert nämlich regelmäßig Versionen Ihrer Dateien aus den Ordnern für Dokumente, Musik, Bilder, Videos und dem Desktop sowie die OneDrive-Dateien, die sich offline auf Ihrem PC befinden. Je länger Sie mit Windows arbeiten, desto größer ist der Verlauf an Dateien, über den Sie verfügen. Angenommen, Ihre Originaldateien gehen verloren, sind beschädigt oder werden gelöscht, können Sie diese einfach wiederherstellen.

    Ebenso können Sie auch verschiedene Versionen der Dateien suchen und wiederherstellen, sogar dann, wenn diese nicht gelöscht wurden oder verloren gingen. Sie können die gewünschte Version auswählen und wiederherstellen. Persönliche Daten lassen sich somit bequem automatisch speichern. Dazu kann der Dateiversionsverlauf genutzt werden.

    Mit der Tastenkombination Windows + S aktivieren Sie die Suche. Geben Sie in das Suchfeld „Dateiversionsverlauf“ ein und wählen Sie den unterhalb angezeigten Dateiversionsverlauf aus.

    clip_image002

    Wenn zum Zeitpunkt des Aufrufs des Dateiversionsverlaufs keine Festplatte angeschlossen ist, erscheint die angezeigte Meldung, dass kein verwendbares Laufwerk gefunden wurde.

    clip_image004

    Um diese Funktion nutzen zu können, ist es beispielsweise nützlich eine externe USB-Festplatte anzuschließen. Daraufhin zeigt Windows an, dass der Dateiversionsverlauf ausgeschaltet ist. Ihnen wird nun angeboten, Dateien auf Ihre USB-Festplatte zu speichern, indem Sie auf Einschalten klicken.

    clip_image006

    Links in der Übersichtsleiste können Sie optional die Einstellung wählen, welche Ordner Sie ggf. aus dem Dateiversionsverlauf ausschließen möchten.

    clip_image008

    Des Weiteren können Sie ebenso mit Klick auf den Punkt „Erweiterte Einstellungen“ bestimmen, wie oft Kopien der Dateien gespeichert werden sollen, sowie wie lange diese gespeicherten Versionen im Verlauf aufbewahrt werden.

    clip_image010

    Nach vorgenommenen Einstellungen und durchgeführtem Dateiversionsverlauf können Sie per Klick auf der linken Seite „Persönliche Dateien wiederherstellen“ im geöffneten Dialogfenster per Ordner auswählen, was Sie wiederherstellen möchten.

    clip_image012

    Nachdem Sie einen Ordner ausgewählt haben, erscheinen die darin befindlichen Dateien. Mit Rechtsklick auf das jeweilige Symbol erscheint die Möglichkeit Wiederherstellen sowie Wiederherstellen in, je nach dem was Sie benötigen.

    clip_image014

    Abschließend ist die Datei wiederhergestellt.

    Mein Fazit: Die Funktionalität ist sehr nützlich, jedoch sollte man wissen, dass der vom System erstellte Ordner FileHistory je nach Menge des Inhalts sehr groß werden kann. Auf meinem Rechner weist dieser eine Größe von 26 GB auf.

    image

    ppedv Team Blog: Neue Serviceankündigungen und Preisänderungen bei Azure

    SQL Database

    Der SQL Datenbankdienst ist jetzt mit einem Service Level Agreement von 99,99 % für die Versionen Basic, Standard und Premium generell verfügbar. Die Abrechnung erfolgt jetzt auch stundenweise und die Preise wurden um bis zu 50 % gesenkt. Alle Änderungen sind zum 1. November 2014 gültig.  Die genaue Preisstruktur finden Sie unter http://azure.microsoft.com/en-us/pricing/details/sql-database/#basic-standard-and-premium. Eine Übersicht der verschiedenen Versionen finden Sie unter http://msdn.microsoft.com/library/azure/dn741340.aspx.

    Die Webeditionen von SQL Database bleiben bei einer garantierten Verfügbarkeit von 99,9 %, werden aber bald nicht mehr angeboten. Ursprünglich war geplant diese Dienste im April 2015 einzustellen. Sie werden nun bis zum 10. September 2015 angeboten.

    Azure API Management

    Der im Mai 2014 als Vorschau angebotene Dienst Azure API Management ist jetzt allgemein verfügbar. Dieser REST-basierte Dienst ermöglicht es, API Verwaltungsoperationen zu automatisieren und mit anderen Systemen und Prozessen zu verbinden. Der Dienst bietet auch OAuth 2.0 Unterstützung. Das Entwicklerportal für die API steht mittlerweile in zehn verschiedenen Sprachen, darunter auch deutsch, zur Verfügung. Mehr Informationen erhalten Sie unter http://azure.microsoft.com/en-us/documentation/services/api-management/.

    Azure Media Services

    Ab dem 1. Oktober 2014 ist der Media Encoder allgemein verfügbar. Die Kosten berechnen sich nach der Größe des Datenvolumens der durch die Encoding Pipeline zurückgegeben wird (es wird in GB abgerechnet). Das sollte zu einer Reduzierung der Kosten gegenüber den heutigen Preisen führen. Sie können dabei zwischen einer Basic, Standard und Premium Encoding-Version wählen, die die Geschwindigkeit des Encodings beeinflusst. Der aktuelle Windows Azure Media Data Encoder wird zum 15. September 2015 eingestellt.

    Live Streaming und der Schutz von Content ist momentan in der öffentlichen Vorschau. Diese Live Streams wurden bereits für die Winterolympiade 2014 und die FIFA Fussballweltmeisterschaft in Brasilien verwendet. Der Dienst bietet dabei die gleiche Skalierbarkeit und Verfügbarkeit wie bei den beiden Großereignissen. Für den Schutz des Contents steht eine statische und dynamische Verschlüsselung zur Verfügung. Mehr Informationen erhalten Sie unter http://azure.microsoft.com/en-us/services/media-services/.

    Rollenbasierte Sicherheit

    Azures rollenbasierte Sicherheit (RBAC) ermöglicht eine feingranulare Zugriffssteuerung auf Azuredienste. Diese rollenbasierte Sicherheit befindet sich ab sofort in der öffentlichen Vorschau und erzeugt keine zusätzlichen Kosten. Der Dienst steht über das Azure Preview Portal zur Verfügung.

    ppedv Team Blog: Windows Phone 8/8.1 Kinderecke

    Das Smartphone wird immer mehr zum beliebten Gameboy-Ersatz. Um zu verhindern, dass die Weitergabe an Kinder und Jugendliche zu immensen In-App-Käufen und enormen Telefonrechnungen führt, verfügt bereits Windows 8 über eine Kinderecke. Diese abgesicherte Umgebung konfiguriert man bei der Initialisierung über Einstellungen –> Kinderecke. Es ist sinnvoll für spätere Konfiguration eine Kachel auf dem Startbildschirm anzulegen.

    Kindereckenkonfig



    Dieser Modus wird dann aktiviert, indem Sie auf dem Sperrbildschirm nach links wischen. Es bietet folgende Vorteile:

    -In-App Käufe werden geblockt, sofern keine Brieftaschen-Pin hinterlegt ist.

    nichtmoeglich

    - In der Kinderecke ist weder ein Browser noch der Zugriff auf die Daten des Handys oder der SD Karte verfügbar.
    Spiele, Musik, Videos und Apps können jedoch einzeln frei gegeben werden.

    KCmixedwip

     

     

    Zusatztipp:

    Sollten Sie das Smartphone einmal verlieren, bietet Windows Phone den Service es zu orten bzw. die letzte Position, die bestimmt werden konnte, anzuzeigen.

    Unter www.windowsphone.com in der Rubrik Mein Handy –> Mein Handy finden, lässt sich, nach Login im Microsoft-Konto, die letzte Position des Smartphones anzeigen bzw. das Smartphone anklingeln, selbst wenn es eigentlich auf Stumm geschaltet ist.

     

    aktuellerStandort

    Sven Hubert: Artikel: Von PS zu TFS und wieder zurück

    Der Microsoft Team Foundation Server bietet neben der klassischen Quellcodeverwaltung auch die Möglichkeit zur Planung und Steuerung von Projekten. Anforderungen, Aufgaben, Zeitpläne und Ressourcen können gezielt koordiniert, berichtet und somit effizient eingesetzt werden. Die im TFS mitgelieferten Project Management Werkzeuge wie Product Backlog, Task Board oder Sprint Capacity ermöglichen eine leichtgewichtige Projektkontrolle. Aber wie kann eine Überbuchung verhindert werden, wenn die Mitarbeiter mehreren Projekten zugeordnet ist? Wie können die Auswirkungen eines Teil-Projektverzuges auf das Gesamtprodukt einfach ermittelt werden? Was passiert, wenn mehrere Personen an einer Aufgabe arbeiten? In solchen Fällen stoßen wir mit dem TFS und seiner Planungsfunktionalität an Grenzen. Ein eher selten genutztes Feature des TFS ist die Integration mit dem Microsoft Office Project Server.

    Lesen Sie mehr über das Thema im Artikel “Von PS zu TFS und wieder zurück” von Stefan Mieth in der aktuellen Ausgabe der Windows Developer 10/2014.

    image

    Artikel: Von PS zu TFS und wieder zurück is a post from: AIT Blog

    codefest.at [MS]: Teil 1: Plattformübergreifende App-Entwicklung mit dem MVVMbasics Framework

    Gastbeitrag von Andreas Kuntner

    Dieser Artikel ist der erste Teil einer dreiteiligen Serie.

    Andreas Kuntner arbeitet als .NET Entwickler mit Schwerpunkt auf Client-, UI- und Mobile Development, und betreut in seiner Freizeit das MVVMbasics Framework und den Developer-Blog http://blog.mobilemotion.eu/

    Das Model-View-Viewmodel Design Pattern ist – nicht zuletzt dank Universal Apps für Windows 8 und Windows Phone – mittlerweile den meisten Entwickler ein Begriff. Um das Pattern in „Real Life“ Projekten zu verwenden braucht es aber das eine oder andere MVVM Framework – wer will schon das INotifyPropertyChanged Interface oder Command Binding jedes Mal aufs neue selbst implementieren?

    Das MVVMbasics Framework ist seit wenigen Tagen in der Version 2.0 verfügbar – zu diesem Anlass möchte ich euch anhand einer kleinen Demo-App zeigen, was damit möglich ist und wo es die tägliche Arbeit erleichtern kann, sowohl in Bezug auf die typischen MVVM-Anwendungsfälle wie etwas Data und Command Binding, als auch im Bereich der plattformübergreifenden Entwicklung.

    Eine erste App

    Die komplette Solution steht zum Mitschauen unter http://mobilemotion.eu/downloads/SimpleChat.zip zum Download zur Verfügung – hier im Blog werde ich nur die wichtigsten Code-Snippets zeigen.

    Als Demo habe ich einen kleinen, sehr primitiven Chat-Client geschrieben. Dazu ist natürlich eine Server-Anbindung notwendig - Das kann ein Azure-Mobile-Service oder ein beliebiges anderes Webservice sein, ich habe für die Demo ein (sehr reduziertes) Test-Service gebaut dass ich lokal hosten kann, und das nur drei Funktionen bietet: Anlegen eines Users, Senden einer neuen Nachricht, und Abrufen aller neuen Nachrichten. Auf diese drei Funktionen werden wir aus dem Client zugreifen.

    Los geht’s! Neue Solution anlegen und ein Projekt hinzufügen – um später für eine plattformübergreifende Lösung gerüstet zu sein, empfehle ich die Models und Viewmodels vom Rest zu trennen. Wir legen also als erstes Projekt eine Portable Class Library an, die .NET 4.5, Windows 8 und Windows Phone 8.1 unterstützt:

    clip_image001

    Zu diesem Projekt muss jetzt die MVVMbasics Bibliothek hinzugefügt werden. Eine Suche nach „mvvmbasics“ im NuGet Package Manager bringt eine Liste an Ergebnissen, wir installieren das erste angebotene Paket „MVVMbasics“ (die weiteren Bibliotheken dienen nur der Abwärtskompatibilität und werden in neuen Projekten nicht mehr benötigt):

    clip_image003

    Jetzt ist es an der Zeit, die Struktur des Programms festzulegen: Für das einfache Demoprogramm ist nur ein einziges Datenmodell nötig das eine einzelne Chatnachricht repräsentiert. Außerdem wird das Programm zwei Pages beinhalten, eines zum Login und eines für den tatsächlichen Chat, für jede dieser Pages brauchen wir ein Viewmodel. (In MVVMbasics existiert immer exakt ein Viewmodel pro Fenster bzw. Page, alle anderen Daten werden in Models organisiert. Diese fixe 1:1-Beziehung ist für die plattformübergreifende Navigation sowie um direkt auf Navigations-Events zu reagieren notwendig, wie wir später noch sehen werden). Wir legen also (zur besseren Übersicht am besten in zwei neuen Namespaces Models und Viewmodels) die Klassen MessageModel, LoginViewmodel und ChatViewmodel an.

    Data Binding

    Models werden in MVVMbasics immer vom Typ BaseModel abgeleitet, das für eine korrekte (und möglichst einfache) Implementierung des INotifyPropertyChanged Interfaces sorgt. Im Fall des MessageModel erstellen wir drei Properties, die den Namen des Users der die Nachricht geschrieben hat, den Inhalt der Nachricht, und den Zeitpunkt zu dem die Nachricht geschrieben wurde beinhalten. Jedes Property, das an ein Control in der Page gebunden werden soll, muss bei Änderung das PropertyChanged Event auslösen - dafür bietet MVVMbasics die Set Methode:

    private string _username;
    
    public string Username
    {
    	get { return _username; }
    	set { Set(ref _username, value); }
    }

    Die Set Methode sorgt dafür, dass der Inhalt des Properties mit dem neuen Wert befüllt wird, und löst das PropertyChanged Event aus – beides aber nur dann, wenn der alte und neue Wert des Properties unterschiedlich sind. Die anderen beiden Properties Content und Timestamp werden analog definiert.

    Viewmodels müssen immer von der Basisklasse BaseViewmodel abgeleitet werden. Diese erbt intern von BaseModel, sodass die bequeme INotifyPropertyChanged Implementierung wie oben beschrieben auch hier zur Verfügung steht, und bietet zusätzliche Methoden an die für die Navigation gebraucht werden.

    Das LoginViewmodel enthält drei Properties: Name und Age (der Benutzer muss zur Anmeldung seinen Namen und sein Alter angeben), sowie Username (dieser setzt sich aus Namen und Alter zusammen und wird zur Anmeldung ans Webservice geschickt). Das Username Property erhält nur einen Setter, der von den anderen beiden Properties abhängt:

    public string Username
    {
    	get { return String.Format("{0} ({1})", Name, Age); }
    }

    Name und Age müssen nun zusätzlich zu ihren eigenen auch noch das PropertyChanged Event des Username Properties auslösen. Wir nutzen dazu eine erweiterte Variante der Set Methode:

    private string _name;
    public string Name
    {
    	get { return _name; }
    	set { Set(ref _name, value, () => NotifyPropertyChanged(() => Username)); }
    }

    In diesem Fall wird der Set Methode als dritter Parameter eine Methode (hier in Form einer Lambda Expression) übergeben, die nach dem Aktualisieren des Property-Werts aufgerufen wird, allerdings nur wenn der alte und neue Wert des Properties unterschiedlich waren. Innerhalb dieser Methode lösen wir durch die NotifyPropertyChanged Methode das PropertyChanged Event des Username Property aus.

    Holger Sirtl: Hintergrundinformationen zu den Neuerungen in Azure Media Services

    Die Azure Media Services wurden letzte Woche deutlich erweitert. Nicht zuletzt die Möglichkeiten zum Live Streaming unter Media Indexer erweitern das Funktionsspektrum der Media Services beträchtlich. Zeit, ein paar Informationsquellen zusammen zu suchen, über die man sich in diesen neuen Funktionen einarbeiten kann.

    Live Streaming

    Bisher boten die Media Services ausschließlich Unterstützung für on-demand Streaming, d.h. Videos mussten zunächst nach Azure hochgeladen werden, wo sie nach Abschluss des Uploads dann konvertiert, verschlüsselt, bearbeitet und dann zum Streaming bereitgestellt werden konnten. Ab sofort ist auch Live Streaming möglich, d.h. Videos können bereits während des Uploads über Streaming Clients ausgelesen werden.

    Azure Media Indexer

    Der Media Indexer ist ein Werkzeug zum Extrahieren von Inhaltsinformationen aus Videos, die dann als Grundlage für Suchfunktionen genutzt werden können. Neben dem Auslesen von Meta-Informationen können für englischsprachige Videos sogar Untertitel erzeugt und mit entsprechenden Zeitstempeln für die Wiedergabe versehen werden. Der Media Indexer erweitert somit die Möglichkeiten zur Archivierung und zum Durchsuchen von Videoinhalten beträchtlich.

    Artikel und Blogposts

    Folgende Artikel und Blogposts kann ich als Lektüre empfehlen:

    Aus dem Azure Media Services Blog sind folgende Artikel äußerst lesenswert:

    Karsten Kempe: ‘TFS loves Git’ auf der BASTA! 2014

    Basta ALM TodayEingebettet in die Basta! 2014 findet die ALM Today Konferenz vom 22.09. bis 25.09. in Mainz statt. Ich freue mich als Sprecher dabei sein zu können. Am Mittwoch den 24.09. werde ich Einblicke in die Beziehung von Git und Team Foundation Server geben, dem heißesten Promi-Paar seit Angelina Jolie und Brad Pitt.

    TFS loves Git

    Promi-Hochzeiten hat und wird es immer geben. Meist sind die beiden Partner erfolgreich und sexy. Als sich TFS und Git zueinander bekannten, war die Skepsis groß. Er (der TFS) ist laut Gartner die führende ALM Plattform, gilt aber als schwer und behäbig. Sie (Git) ist eine der angesagtesten Versionskontrollen unserer Zeit, leicht und sexy! Würde diese Beziehung gut gehen? Diese Liebe hält nun schon seit mehr als einem Jahr und ist enger als je zuvor. Grund genug also, um sich die Partnerschaft einmal näher anzusehen. Wer profitiert von wem? Und warum sind sie als Paar so außerordentlich erfolgreich? In dieser Session erhalten Sie einen Eindruck über das Zusammenspiel von Git und TFS und sehen wie man als Entwickler von den Stärken der Beiden profitieren kann.

    ALM Today Konferenz

    Die ALM today im Rahmen der BASTA! bündelt konsequent diese einzelnen Aspekte des Application Lifecycle Managements unter einem Dach: Die methodischen Aspekte aus der Agilität, die Qualitätssicherung durch das Testing sowie das Tooling rund um Visual Studio und TFS. Ergänzt werden diese Aspekte nun durch neuere Trends wie DevOps, Design Thinking und Softskills sowie Vermarktungs- und Managementstrategien.

    Die ausgewählten Sessions und erfahrenen Sprecher der ALM today repräsentieren diese erweiterten und entscheidend Produkt-Lifecyle von der ersten Idee, über die Entwicklung, den Betrieb und Vertrieb bis hin zum zufriedenen Kunden. Das notwendige und praxisorientierte Know-how für die digitale Transformation und IT Leadership unter einem Dach.

    Holger Schwichtenberg: nameof()-Operator in C# 6.0

    Der neue C#-Operator nameof() bringt Typsicherheit in allen Fällen, wo bisher der Name eines Typs, eines Klassenmitglieds, eines Namensraums oder einer Variablen als Zeichenkette zu verwenden war.

    codefest.at [MS]: Hadoop/HDInsight Einführung Big Data mit HDInsight/Hadoop für .NET Entwickler


    “HDInsight is Microsoft’s Hadoop-based service that brings an Apache Hadoop-based solution to the cloud. It gives you the ability to gain the full value of Big Data with a modern, cloud-based data platform that manages data of any type, whether structured or unstructured, and of any size.”

    Quelle: http://azure.microsoft.com/en-us/pricing/details/hdinsight/

    image

    Big Data mit Hadoop und HDInsight

    In dieser Blog-Reihe über Big Data mit Hadoop und HDInsight möchte ich euch, den Entwicklern, den Einstieg in die Welt von Big Data schmackhaft machen. Das natürlich auf Basis der Microsoft Lösung HDInsight, die ja zu 100% Hadoop beinhaltet. Aber bevor wir so richtig mit Hands-On loslegen können, sollten wir uns ein wenig mit der vorhandenen Technologie in der Theorie beschäftigen, die dem Ganzen zu Grunde liegt. Keine Angst, ich bin eher ein „Mann der Praxis“, ich werde mich also so kurz wie möglich halten, damit wir recht bald einmal die Praxis beleuchten können.

    Was ist Big Data?

    Bevor wir uns den Technologie-Stack selbst genauer ansehen können, sollten wir uns dem Begriff “Big Data” einmal genauer widmen. Nun ja, da beginnen die Schwierigkeiten bereits. Big Data kann nämlich für jeden etwas anderes bedeuten. Für mich bedeutet es, dass Daten vorliegen, die einfach zu komplex sind, um sie in traditionellen relationalen Datenbanken UND auch in multidimensionalen Datenbanken zu analysieren. Das ist aber eben nur eine Begründung für Big Data, nämlich rein die Anzahl der Daten, bzw. eben die Datenmenge. Aber für mich ist auch schon ein einzelnes Buch „Big Data“, da die Wörter in einem Buch komplett unstrukturiert vorliegen (Vorsicht in etwaigen Diskussionen über Big Data in eurem Lieblingsliteraturzirkel, der Autor eines Buches sieht das naturgemäß etwas anders) und es nun einmal schwierig ist, die Anzahl der Hauptwörter oder alle Bindewörter in einem, oder mehreren Büchern einfach einmal so zu zählen. Also wie ihr möglicherweise schon an anderer Stelle gelesen habt, zieht man sich in der einschlägigen Literatur zu dem Thema auf eine allgemeine Beschreibung zurück.

    Im Allgemeinen haben sich, wenn man von Big Data spricht, die „3V’s“ eingebürgert (Doug Laney von Gartner hat schon 2001 darüber sinniert, siehe hier) . Das sind Volume, Variety und Velocity. Sehen wir uns jeden dieser drei einmal kurz an:

    · Volume – Datenmenge: Hierunter fallen sowohl große Datenmengen von Terrabytes bis Petabytes, als auch viele kleine Datenmengen, die es gemeinsam zu analysieren gilt.

    · Variety – Datenvielfalt: Nicht nur die (sehr) großen Datenmengen an sich, sondern auch die Vielfältigkeit der anfallenden Daten sind eine der Herausforderungen im Big Data Bereich. Ihr werdet das vermutlich selbst kennen aus eurer Vergangenheit, oder in eurer aktuellen Firma, wo die Daten aus unternehmensinternen, und/oder aber auch aus externen Quellen stammen. Diese unterschiedlichen Daten liegen entweder

    o strukturiert (z. B. in relationalen Datenbanken)
    o halb-strukturiert (z. B. Log-Dateien von Web-Servern) und/oder
    o komplett unstrukturiert (z. B. Texte, Webseiten, Video-, Audio-Dateien) vor.

    · Velocity – Geschwindigkeit: Daten, die sich andauernd verändern und kurze Gültigkeit/Aktualität beinhalten. Diese erfordern eine andauernde Generierung und Verarbeitung – sehr häufig in Echtzeit.

    image

    Noch extra erwähnen möchte ich, dass die zugrundeliegenden Daten natürlich vertrauenswürdig und korrekt sein MÜSSEN, denn wenn die Datenbasis schon schlecht ist, dann wird es mit der besten Technologie nicht gelingen brauchbare Ergebnisse für den Endbenutzer zu erzeugen, aber das war ja schon in der Vergangenheit bei euren Projekten mit relationalen Datenbanken und Analysis Services ja auch schon ein kritischer Punkt.

    Soweit so gut, aber ich kann es schon richtig hören, wie ihr mir zuruft:

    Die 3V’s sind nett und gut, aber SQL Server und/oder SQL Server Analysis Services mit den Integration Services erledigen diesen Job für die oben angeführten Problemstellungen doch hervorragend. Hmm, ja, möglicherweise, für strukturierte Daten. Möglicherweise.

    Mit den unstrukturierten Daten und der komplexen Bearbeitung derselben sind wir nun schon eher bei des Pudels Kern angelangt, warum wir mit den bisher eingesetzten Technologien vermutlich an Grenzen stoßen werden und was das Thema Big Data im Endeffekt ausmacht. Wir wollen ja nicht „nur“ einen Server, der sich um die großen Daten, die unstrukturiert vorliegen (oder vielen kleinen Daten) kümmert, sondern die Bearbeitung der Daten soll mit mehreren Maschinen durchgeführt werden.

    Und, Schwupps sind wir schon beim nächsten Thema angelangt. Die verwendete Technologie für das Thema Big Data. Aber eines sollte hier noch klar gesagt werden: Big Data wird keine der erwähnten Technologien ersetzen, sondern im Gegenteil. Es wird ergänzend eingesetzt. Für manche von euch ist das bestimmt eine Frohbotschaft, es kommt noch mehr Technologie auf euch zu….

    Die Big Data Technologie

    Die Daten sollen also mit „geballter Power“, also mit mehreren Maschinen, „beackert“ werden, und das nicht mit SQL oder MDX. Die Daten werden eher in einer Art Batch-Processing bearbeitet, das Resultat landet möglicherweise (muss nicht sein) wieder in Tabellenform. Nun, das genau ist eine (sehr kurze) Zusammenfassung der Kernfunktionalität von Hadoop. Das verteilte Bearbeiten von Daten, innerhalb eines Clusters mit einem Head-Node und mehreren Data-Nodes, wo jedes Node an einem Teil der Daten die Bearbeitung durchführt, um das gewünschte Resultat zu erzeugen.

    Hadoop Übersicht

    Hadoop selbst ist ein Open Source Projekt und ein Apache Projekt - http://hadoop.apache.org. Der innerste Kern besteht aus 2 Teilen:

    · Hadoop Distributed File System (HDFS) – speichert die Daten im Cluster. Die Daten werden in Blöcke geteilt und auf verschiedene Nodes im Cluster verteilt.

    · MapReduce – ein Programmiermodell, das in zwei Phasen aufgegliedert ist. Wie der Name schon sagt eben Map und Reduce. Damit ist es möglich die Datenbearbeitung auf mehrere Nodes zu verteilen, in der Map Phase werden so Zwischenergebnisse erzeugt, die in der Reduce Phase – ebenfalls parallelisiert - zu einem Gesamtergebnis weiter verarbeitet werden.

    Mit diesem Wissen können wir uns schon einmal ansehen, wie die Basis Komponenten innerhalb eines Hadoop Clusters aussehen könnten (sofern dieser einmal läuft, was aber keine große Hexerei ist, wie wir in meinem nächsten Blog Eintrag sehen werden) und wie diese zusammen interagieren:

    · Der Name Node (auch oft “Head Node” innerhalb des Clusters genannt): Hält primär die Metadaten für HDFS und da die Daten ja verteilt von den Daten Nodes in einzelnen Datenblöcken bearbeitet werden, muss jemand die Ablage der Daten koordinieren und den Cluster überwachen und bei einem Ausfall dementsprechend reagieren, d. h. die Daten neu auf die verbliebenen Data Nodes verteilen. Dies ist die Aufgabe des Name Node, was ihn aber auch gleichzeitig zum „Single Point of Failure“ in einem Hadoop Cluster macht.

    · Data Node: Speichert ihm zugewiesene Daten in sogenannten HDFS Datenblöcken. Diese Datenblöcke werden innerhalb eines Hadoop-Clusters repliziert um Ausfallsicherheit zu gewährleisten. Jeder Data Node meldet sich fortwährend beim Name Node, der ansonsten auf einen Ausfall reagieren muss.

    Soweit zur Datenhaltung, die Überwachung eine MapReduce-Jobs obliegt zwei sogenannten Trackern:

    · Der Job Tracker verteilt die einzelnen Aufgaben innerhalb des MapReduce Jobs, ist aber im Fehlerfall weniger kritisch zu handhaben als der Ausfall des Name Nodes, da bei Neustart des Job Tracker alle Jobs erneut gestartet werden.

    · Der Task Tracker erledigt die eigentliche Arbeit bei dem angeforderten MapReduce Job, läuft üblicherweise auf jedem Data Node.

    Bildlich gesprochen lässt sich das folgendermaßen darstellen:

    image

    Soweit zum Core, weitere zugehörige Hadoop-Projekte, die durchaus hilfreich sind und das Gesamtbild - und die damit verbundenen technologischen Möglichkeiten - doch um einiges erweitern:

    · Hive – Die Ergebnisse, die mit MapReduce Jobs erzeugt werden können mittels Hive in einer SQL ähnlichen Abfragesprache, der Hive Query Language (HQL) aus dem Hive store abgefragt werden. Hive ist ideal, um die mittels MapRedue erzeugten Ergebnisse in die bestehende BI Landschaft zu integrieren.

    · Pig – Eine weitere Möglichkeit, die Daten von MapReduce Jobs abzufragen ist Pig, welches eine Scripting Engine mit dem Namen Pig Latin zur Verfügung stellt. Mit dieser können Abfragen ‚anprogrammiert‘ werden, also Prozedural abgefragt werden, im Gegensatz zu Hive, das wie erwähnt, ähnlich zu SQL – also deklarativ – arbeitet.

    · HCatalog – Dieser setzt auf den Hive Metastore auf und stellt Schnittstellen für MapReduce und Pig zur Verfügung, um Daten in Tabellenform darzustellen.

    · Oozie – Eine Workflow Engine für mehrere MapReduce Jobs.

    · Sqoop – Wird angewendet, um Daten aus und in relationale Datenbanken in HDFS zu importieren und/oder zu exportieren.

    Weitere sind noch: Fume (zum Importieren von Daten in HDFS), Mahout (machine-learning), oder Ambari (Monitoring Tool für den Cluster). Zusammengefasst sieht die Landschaft dann im Großen und Ganzen so aus:

    image

    Wie man deutlich erkennen kann ist Hadoop nicht etwa (nur) eine Datenbank, bzw. ein Datenbankmanagementsystem (wie SQLServer z. B. eines ist). Es ist ein verteiltes Dateisystem, das mit riesigen (unstrukturierten) Datenmengen – mit dutzenden Terabytes - gefüttert werden kann, diese wiederum mit MapReduce Jobs bearbeitet und sortiert werden können - und das mit Hilfe der zu Grunde liegende Cluster-Technologie in Sekunden. In Kombination mit den erwähnten Unterprojekten kann Hadoop Prozesse ausführen, die weit über die Leistung eines (normalerweise) eingesetzten relationalen Datenbank, oder Datawarehouse-Systems hinausgehen.

    Sehen wir uns doch einmal gemeinsam ein paar Einsatzszenarien für Big Data und Hadoop/HDInsight an.

    Einsatz-Szenarien

    1. Hadoop als ETL-Tool

    Wenn große Datenmengen zur Verfügung stehen, dann steht man immer wieder vor der großen Herausforderung die für das Unternehmen relevanten Daten herauszufiltern. Nun, Hadoop ist hier ein eleganter Ansatz. Die Daten werden in Hadoop geladen und mit MapReduce Jobs bearbeitet. Mit eigenen Filtern und eigener Logik - das Resultat sind strukturierte, summierte Daten. Diese können mit bestehenden Analyse-Werkzeugen verfeinert werden, bzw. dem Reporting zugeführt werden.Normalerweise wird nu rein kleiner Prozentsatz vom gesamten vorhandenen Datenstrom für ein bestimmtes Business-Problem benötigt. Hadoop mit MapReduce, dem Clusteraufbau und den weiteren Unterprojekten ist dafür eine sehr gut geeignete Plattform.

    2. Hadoop als Exploration-Engine

    Wenn die Daten einmal im Cluster sind können nahezu beliebige Tools zur Analyse verwendet werden. Dies werden wir in einem der Blog-Einträge noch genauer betrachten, wenn wir Excel, PowerBI, Reportung Services usw. auf unseren (lokalen) Cluster loslassen. Neue Daten werden hinzugefügt, die bestehenden Ergebnisse bleiben weiter vorhanden und können aber natürlich zur erneuten/weiteren Analyse der Daten verwendet, bzw. weiter verdichtet werden. Das Laden in andere Systeme, wie einem SQLServer, bzw. einem SQL Server Analysis Server ist problemlos möglich und so können die Ergebnisse innerhalb des Unternehmens weiteren Anwendern zur Verfügung gestellt werden.

    3. Hadoop als Archiv

    Historische Daten Daten werden nicht ewig vorgehalten, sondern landen irgendwann einmal im Archiv. Werden die Daten für eine Analyse wieder benötigt, so ist es häufig mühsam diese wieder herzustellen. Mit dem Ergebnis, dass historische Daten oft nicht für die Analyse zur Verfügung stehen, da man versucht diesen Aufwand zu vermeiden. Die zugrunde liegende Speichertechnik in HDFS, sowie die effektiven Indizierungsmöglichkeiten innerhalb des Clusters - und da Speicher heutzutage günstig ist - können die (originalen) Daten in einem Hadoop Cluster weiter vorgehalten werden. Der Aufwand der Wiederherstellung entfällt und die Daten stehen jederzeit für eine historische Analyse zur Verfügung.

    Microsoft HDInsight - Hadoop unter Windows

    HDInsight ist die Microsoft Implementierung für Big Data Lösungen mit Apache Hadoop als Unterbau. Ihr braucht jetzt keine Angst zu haben, falls ihr denkt, dass Microsoft hier nun etwas eigenes gebaut hätte.

    HDInsight ist zu 100 Prozent kompatibel mit Apache Hadoop und baut komplett auf den Open Source Framework auf.

    Microsoft hat das Projekt großartig unterstützt, indem es die Funktionalität zur Verfügung gestellt hat, um Hadoop unter Windows laufen zu lassen, da Hadoop ursprünglich nur für Linux entwickelt wurde. Sie haben den notwendigen Source Code der Community zur Verfügung gestellt und diese hat dann diesen dankenswerter Weise (für uns Windows Entwickler) komplett in den Source einfließen lassen. Somit läuft Hadoop unter Windows und Microsoft hat hier die Unterstützung noch nicht gestoppt. Es wurden weitere APIs geschrieben, um mit C# Hadoop anprogrammieren zu können, bzw. den ODBC-Treiber entwickelt um auf die Daten von Hadoop auch aus bestehenden Applikation zugreifen zu können. Auch das werden wir in im Laufe dieser Blog-Reihe sehen können.

    HDInsight ist in zwei Ausprägungen verfügbar, als Cloud-Lösung und als lokale Installation:

    1. Windows Azure HDInsight Service: Solltet Ihr noch keine Azure Subscription euer eigen nennen, ist es nun soweit, HDInsight steht euch unter Azure zur Verfügung und wartet nur darauf, von euch als Cluster verwendet zu werden. Wir werden die Installation und die anfallenden Kosten im nächsten Blog-Eintrag näher beleuchten.

    2. Windows Azure HDInsight Emulator: Eine hervorragende Lösung von Microsoft, die einen single-node, geeignet als Einzelplatz Installation, zur Verfügung stellt, welcher z. B. auf eurer Entwicklungsmaschine bestimmt eine ganz gute Figur macht. Dafür ist er nämlich gemacht: als lokale Big Data Entwicklungsinstallation zu dienen. Eure Resultate könnt ihr dann in das Azure HDInsight Service überführen und in einen richtigen Cluster in Produktion bringen. Erst einmal ohne anfallender Kosten für den Cluster.

    Und genau diese beiden Lösungen werden wir uns im zweiten Teil dieser Blog-Reihe genauer ansehen.

    Zusammenfassung

    Hadoop an sich eignet sich perfekt für die Verarbeitung umfangreicher Batchjobs. Hadoop kann Dutzende Terabyte dateibasierter Daten sehr schnell verarbeiten. Mit diesen grundlegenden, aber leistungsfähigen Funktionen ist Hadoop sehr gut geeignet, um große Dateien zu durchsuchen, Informationen zu aggregieren oder grundlegende mathematische Funktionen wie Summe, Mittelwert oder Durchschnittswert auszuführen. HDInsight ist Microsoft’s Cloud Lösung für Big Data, zu 100% basierend auf den Open Source Framework Hadoop.

    So, erst einmal genug der Theorie, ab jetzt wird kräftig mit der Software gearbeitet, ich hoffe ihr seid bei den nächsten Einträgen wieder fleißige Leser!


    Berndt Hamböck ist seit 2007 MCT, darüber hinaus befasst er sich mit Lösungen für komplexe Anwendungsszenarien mit den neuesten Microsoft Technologien. Die Erfahrungen aus der Projektarbeit gibt er in Vorträgen und Trainings weiter und begleitet Entwicklerteams in Softwareunternehmen bei Projekten im Microsoft Umfeld. Folge ihm auf Twitter, um nichts zu verpassen.

    Das ist ein Gastbeitrag. Die Meinung des Autors muss sich nicht mit jener von Microsoft decken. Durch den Artikel ergeben sich keinerlei Handlungsempfehlungen. Microsoft übernimmt keine Gewähr für die Richtigkeit oder Vollständigkeit der Angaben.

    Holger Sirtl: Microsoft Migration Accelerator für Azure als Preview verfügbar

    Letzte Woche hat Microsoft den Migration Accelerator (MA) für Azure als Preview verfügbar gemacht. Damit ist es möglich, virtuelle Maschinen aus physischen, VMware-, AWS- und Hyper-V- Umgebungen sehr einfach nach Microsoft Azure zu migrieren. Die Preview ist zunächst auf einen eingeschränkten Benutzerkreis beschränkt, wird jedoch nach und nach geöffnet.

    Der Migration Accelerator vereinfacht viele Aspekte einer Migration virtueller Maschinen nach Microsoft Azure:

    • Analyse der Workloads, die in der virtuellen Maschine ausgeführt werden
    • Installation des Remote Agents
    • Einrichten der Netzwerkkonfiguration
    • Konfiguration der Endpunkte

    Der Migration Accelerator ist zunächst nur in Nordamerika (USA & Kanada) verfügbar und unterstützt als Gastbetriebssystem nur Windows Server 2008 R2 und höher. Der Einsatz des Accelerators selbst ist kostenlos, Kosten fallen nur für die Workloads an, die am Ende tatsächlich auf Microsoft Azure ausgeführt werden, also die virtuellen Maschinen.

    friends header

    bloggers headline

    links header

     
    Don't contact us via this (fleischfalle@alphasierrapapa.com) email address.