ppedv Team Blog: Windows 10 kommt!

Nun ist es also bekannt – das nächste Client-Betriebssystem aus dem Hause Microsoft wird nicht “Windows 9” sondern “Windows 10” heissen. Das hat Microsoft heute Nacht in einer Pressekonferenz und –Erklärung bekannt gegeben (http://www.microsoft.com/en-us/news/press/2014/sep14/09-30futureofwindowspr.aspx)

Das Betriebssystem ist im Gegensatz zu Windows 8 wieder mehr auf Business-Kunden zugeschnitten. Dies ist auch an der gravierenden Änderung bzgl. der “Metro-Oberfläche” zu sehen: Das Startmenü wird wie erwartet eine Mischung aus Metro und Windows-7-Startmenü sein.

Im Laufe des heutigen 01. Oktobers soll eine erste Preview-Version auf folgender Webseite erhältlich sein:

http://windows.microsoft.com/de-de/windows/preview-coming-soon

Sobald diese Verfügbar ist und ich Gelegenheit hatte, diese zu testen, werde ich wieder berichten.

Jürgen Gutsch: Pretzel – Statisches .NET Blog à la Jekyll – Teil 3: Customizing

In den letzten beiden Teilen habe ich eine kurze Übersicht über die Möglichkeiten von Pretzel gegeben und gezeigt wie das Setup funktionieren kann. In diesem Teil widme ich mich dem Customizing eines Pretzel Blogs.

Wie bereits erwähnt, wird standardmäßig die Liquid Engine für die Templates verwendet. Eine ausführliche Dokumentation ist am besten im Wiki von Liquid oder in der Dokumentation von Jekyll zu finden: http://jekyllrb.com/docs/templates/ Da sich Pretzel an Jekyll orientiert, ist letztere Dokumentation eher zu empfehlen.

Schauen wir uns noch einmal an, wie das Arbeitsverzeichnis aufgebaut ist:
PretzelCreate

Die Verzeichnisse css und img sprechen für sich. Interessanter ist das Verzeichnis _layouts, welches ein Template für die Seitenstruktur, sowie eines für Blog-Posts enthält. Beide Templates sind als HTML-Datei angelegt, können aber Steuerinformationen in Form von Markdown-Code enthalten. So enthält die posts.html am Dateianfang eine Steuerinformation die auf die layout.html verweist:

---
layout: layout
---

Schaut man sich die Datei about.md an, so finden wir auch hier einen Verweis auf eine Datei aus dem Verzeichnis _layout, und zwar auf die posts.html

---
layout: post
title: About
comments: false
---

Die Kind-Elemente verweisen also immer auf eine übergeordnete Layout-Datei. Alle diese Meta-Informationen am Dateianfang einer Seite, wie z. B. einem Blog Post oder der about.md werden in den Templates mit page.title oder z. B. page.coments angesprochen und können so genutzt werden. Die layout.html gibt auf diese Art den Seitentitel aus:

<title>{{ page.title }}</title>

Ein Template muss einen Bereich ausweisen, in dem Inhalte und/oder Kind-Templates ausgegeben werden. Das passiert über folgendes Statement:

{{ content }}

Ausgaben von Werten erfolgt grundsätzlich über die doppelten geschweiften Klammern. Anweisungen und Schleifen mit einer geschweiften Klammer und einem Prozentzeichen. z. B.

<ul>
{% for tag in page.tags %}
    <li><a href="http://www.aspnetzone.de/tag/{{ tag }}">{{ tag }}</a></li>
{% endfor %}
</ul>

Auf die gleiche Art sind rss.xml, atom.xml und die sitemap.xml, allerdings ohne Verweis auf eine Layout-Datei. Diese Datei greifen direkt auf die Blog Posts Auflistung im Site-Objekt zu und geben die Links zu den Blog Posts aus:

{% for post in site.posts %}

Für weitere Eigenschaften im Site- oder im Page-Kontext, schaut ihr am besten ebenfalls in der Jekyll-Dokumentation nach

Zu beachten ist auch: In der rss.xml, atom.xml und der sitemap.xml muss die Domain für die URLs noch angepasst werden, da hier standardmäßig auf http://domain/ verwiesen wird.

Aus meiner Sicht ist die index.md nach dem Setup ebenfalls zu beachten. Diese Datei, die eigentliche eine Content-Datei sein könnte, enthält hier HTML-Code, der eine Übersicht über die aktuellen Posts erzeugt und ausgibt. Wir sehen hier ein Beispiel, wie sich in jeder Content-Datei auch direkt HTML einbetten lässt um die Seiten etwas zu erweitern.

Viel mehr gehe ich nicht auf die Möglichkeiten der Template Engine ein. Bitte entnehmt weiter Informationen den vorhandenen Templates oder den oben angegebenen Dokumentationen.

Wer will und kann, sollte das Layout entsprechend anpassen. hat man sich einmal in die Template-Engine eingearbeitet, ist es recht einfach die nötigen Anpassungen vorzunehmen.

Ist das aussehen des Blogs angepasst, können wir uns dem ersten Blog Post widmen. Wie das Prinzip von Pretzel funktioniert zeige ich im Vierten Teil dieser kurzen Serie

Beispiel

Ich möchte auf der Startseite nicht nur Den Titel und das Datum des Blogposts anzeigen, sondern auch einen kurzen Einleitungstext, damit die Besucher erfahren, was sich hinter eine möglicherweise reißerischen Überschrift verbirgt. Dafür kann ich einfach die Metainformationen eines Blog Posts ergänzen:

---
layout: post
title: My pritty cool titel for the next article
comments: true
teaser: This article containes super cool information about creating a blog with pretzel
image: /img/coolarticle/teaserImage.jpg 
tags:
- pretzel
- tutorials
---

Diese Informationen kann ich nun direkt, sowohl in der index.md, als auch in den Feeds nutzen. In diesem Fall möchte ich auf der Startseite den letzten Artikel etwas stärker anpreisen und ergänze um den teaser und das image:

<h1><a href="{{ post.url }}">{{ post.title }}</a></h1>
<p><img align="left" src="{{ post.image }}" alt="" />{{ post.teaser }}</p>
<div class="postdate">{{ post.date | date: "%e %B, %Y"  }}
    <ul>
    {% for tag in post.tags %}
        <li><a href="http://www.aspnetzone.de/tag/{{ tag }}">{{ tag }}</a></li>
    {% endfor %}
    </ul>
</div>

Kommentare

Im Standardtemplate ist Disqus als externe Kommentarfunktion eingebaut, die noch angepasst werden muss. Zum einen muss man einen Account dort besitzen und zum anderen Name des eigenen Kommentarbereichs (Disqus spricht von einem Forum) angegeben werden.

Das Pretzel ein statisches Blog ist, muss auf eine externe Kommentar-Plattform zurückgegriffen werden. Wer Disqus nicht verwenden möchte kann die entsprechenden JavaScripts entfernen und durch eine andere Plattform ersetzen.

Tags

Im Standardtemplate nach der Installation werden die im Post angegebenen Tags angezeigt, aber auch verlinkt, ohne dass es die entsprechende verlinkte Seite gibt. Es wird auf einen Unterordner tag verwiesen und dort wiederum auf einen Unterordner mit dem Namen des Tags. Das funktioniert leider so nicht nicht. Auf die schnelle kann die Verlinkung entfernt werden um den Benutzer nicht in die Irre zu führen. Langfristig könnte aber ein entsprechendes Template für die Tagübersicht angelegt werden.

Ich bin ursprünglich davon ausgegangen, dass Pretzel die Struktur anhand der angegebenen Tags automatisch erstellt. Das scheint leider nicht der Fall zu sein

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.

Manfred Steyer: Entity Framework Performance Tip #2: Pre-Loading

Entity Framework stellt auch Verknüpfungen zwischen Objekte, die die Anwendung hintereinander in den Context lädt, über deren Navigationseigenschaften her. Ich bezeichne dies als Pre-Loading. Pre-Loading kann eine effiziente Alternative zum Eager Loading darstellen, zumal Entity Framework beim Einsatz von Eager Laoding sämtliche Daten über eine einzige Abfrage lädt. Um benachbarte Daten zu laden, kommen dabei Outer-Joins zum Einsatz. Diese bewirken, dass sich die abgerufene Datenmenge aufbläht, zumal die einzelnen Spalten ausgekreuzt werden. Würde die Anwendung auf diese Weise zum Beispiel 20 Regionen mit 20 Hotels und 20 Ferienwohnungen laden, so würde die Ergebnismenge durch den Outer-Join aus 20 20 20 Datensätzen bestehen, obwohl darin insgesamt lediglich 3 * 20 Objekte zu finden sind.

Durch den Einsatz von Pre-Loading erhöht sich zwar die Anzahl der Datenbankabfragen, dafür verringert sich die Anzahl der abzurufenden Datensätze, da man mit weniger Outer-Joins auskommt. Das nächste Listing veranschaulicht dies anhand eines einfachen Beispiels. Zuerst lädt es sämtliche Regionen. Obwohl die Anwendung mit diesen Regionen nichts macht, landen sie durch den Ladevorgang im Context. Anschließend lädt es ausgewählte Hotels. Diese verknüpft Entity Framework mit den Regionen im Context unter Verwendung der abgerufenen Fremdschlüssel. Aus diesem Grund kann die Anwendung in weiterer Folge über die Eigenschaft Region auf die Region des Hotels zugreifen.

using (var ctx = new HotelDbContext())
{
    ctx.Region.ToList();
    var hotels = ctx.Hotel.Where(h => h.Sterne >= 3).ToList();

    foreach (var h in hotels)
    {
        Debug.WriteLine(h.Bezeichnung);
        Debug.WriteLine(h.Region.Bezeichnung);
    }
}

Beim Einsatz von Pre-Loading als Alternative zu Eager-Loading muss der Entwickler abwiegen, was sich effizienter gestaltet: Das Auskreuzen der abgerufenen Daten durch den Outer-Joins oder das Absetzen mehrerer Abfragen.

Manfred Steyer: Entity Framework Performance Tip #1: Ladestrategien

Entity Framework unterstützt zwei Ladestrategien für benachbarte Objekte: Lazy Loading lädt benachbarte Objekte bei Bedarf nach, Eager Loading lädt benachbarte Objekte mittels Outer-Joins sofort. Daneben kann der Entwickler eine weitere Lade-Strategie verwenden, die hier als Pre-Loading bezeichnet und in einem weiteren Beitrag näher betrachtet wird.

Lazy Loading bietet sich für Fälle an, in denen die Anwendung nur die Nachbarn weniger Objekte benötigt und man nicht vorhersagen kann, welche Nachbarn das sein werden. Werden die Nachbarn sämtlicher Objekte benötigt, ergibt sich beim Einsatz von Lazy Laoding ein Problem, dass man als 1+N-Problem bezeichnet. Der Name legt nahe, dass der O/R-Mapper hier 1+N einzelne Abfragen ausführt: Eine Abfrage für die benötigten Objekte sowie für jedes der N abgefragten Objekte eine Abfrage zum Ermitteln der Nachbarn.

Dieses Problem kann durch den Einsatz von Eager Laoding und Pre-Loading umgangen werden. Während bei Eager Loading die einezelnen Daten durch einen Outer-Joins ausgekreuzt werden und sich die Ergebnismenge somit aufblähen kann, führt Pre-Loading mehrere Abfragen aus. Welche Option am besten für ein bestimmtes Szenario geeignet ist, muss der Entwickler von Fall zu Fall austarotieren.

Generell ist es jedoch wichtig, dass der Entwickler weiß, welche Strategie wann zum Einsatz kommt, sowie, dass er sich bewusst für diese Strategien entscheidet. Dabei helfen die Entity-Framework-internen Möglichkeiten zur Protokollierung der an die Datenbank gesendeten SQL-Anweisungen (context.Database.Log) und Werkzeuge, wie der EF-Profiler.

Manfred Steyer: Middleware in ASP.NET vNext, Teil 1: Überblick

Wie von Microsofts OWIN-Implementierung Katana bekannt, besteht die Aufgabe der Klasse Startup bei ASP.NET vNext darin, Middleware-Komponenten zu registrieren. Diese Komponenten werden von jeder HTTP-Anfrage in der definierten Reihenfolge durchlaufen, wobei jede Komponente auch die weitere Verarbeitung einer Anfrage durch nachfolgende Komponenten unterbinden kann. HTTP-Antworten durchlaufen diese in umgekehrter Reihenfolge. Middlware-Komponenten implementieren verschiedene Aspekte der Kommunikation mit Clients. Dazu zählt zum Beispiel die Implementierung von Security-Szenarien, die Komprimierung von Seiteninhalten, das Unterstützen von CORS und Web-Sockets, das Ausliefern von statischen Dateien oder das Delegieren an Anwendungs-Frameworks, wie ASP.NET MVC oder SignalR.

Obwohl ASP.NET vNext nicht primär auf OWIN basiert, ist seine Architektur stark an OWIN und Katana angelehnt, sodass es einfach möglich ist, OWIN-Komponenten zu registrieren. Die von Katana bereitgestellten OWIN-Komponenten sollen darüber hinaus für die direkte Verwendung mit ASP.NET vNext angepasst werden. Indem der Entwickler lediglich jene Middleware-Komponenten registriert, die seine Anwendung auch tatsächlich benötigt, kann er die Leistung seiner Web-Anwendung steigern. Somit kann ASP.NET vNext auch in diesem Punkt mit Konkurrenz-Technologien, welche – wie zum Beispiel NodeJS - für ihre Leichtgewichtigkeit bekannt sind, Schritt halten.

Das nachfolgende Listing zeigt ein Beispiel für eine Startup-Klasse. Diese kann sich in einem beliebigen Namensraum befinden, muss jedoch den Namen Startup mit der gezeigten Methode Configure aufweisen. Configure bekommt von ASP.NET vNext eine Instanz von IBuilder übergeben und registriert bei dieser die gewünschten Middleware-Komponenten. Zum Registrieren der meisten Middleware-Komponenten stellt Microsoft Erweiterungsmethoden für IBuilder zur Verfügung. Das betrachtete Beispiel verwendet die Erweiterungsmethode UseStaticFiles, um eine Middleware-Komponente zum Ausliefern von statischen Dateien sowie UseWelcomePage, um eine Komponente, welche eine Begrüßungsseite anzeigt, zu registrieren. Erstere Liefert die angeforderte statische Datei zurück, sofern sie existiert. Ansonsten gibt sie die Kontrolle an die nächste Komponente weiter, sodass in diesem Beispiel der Benutzer zumindest begrüßt wird.

using Microsoft.AspNet.Builder;

namespace SomeNamespace
{
    public class Startup
    {
        public void Configure(IBuilder app)
        {
            app.UseStaticFiles();
            app.UseWelcomePage();
        }
    }
}

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

Manfred Steyer: Benutzerdefinierte AngularJS-Direktiven: Beispiel und Folien von der BASTA! 2014

Nachfolgend findet man die Folien und Beispiele aus meiner Session zu benutzerdefinierten Direktiven in AngularJS. Das Beispiel zeigt unter anderem den Unterschied zwischen der Link- und Compile-Phase, den Einsatz von isolierten Scopes sowie Möglichkeiten zur Kommunikation zwischen Direktiven.

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.

Manfred Steyer: ASPNET vNext: Unterlagen von Live-Coding auf der #bastacon

Nachfolgend findet man meine Unterlagen von unserem Vortrag zur Zukunft von .NET am Server. Die Beispiele sind mit Visual Studio 2014 CTP 3 erstellt und zeigen folgende Aspekte, wobei die letzten drei aus Zeitgründen in der Session nicht gezeigt wurden.

  • Konfiguration der Middleware-Pipeline
  • Vereinheitlichung von MVC und Web API
  • Verwendung des einheitlichen Dependency-Injection-Konzeptes
  • Verwendung des neuen Konfigurations-Mechanismus
  • Attribut-basierte Areas
  • View-Components als Ersatz für partielle Views
  • POCO-Controller


Beispiele zu ASP.NET vNext (MVC 6)

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.

Manfred Steyer: Entity Framework 6.1 erweitern: Unterlagen von #bastacon

Nachfolgend die Unterlagen meines Vortrages zum Erweitern von Entity Framework 6.1 von der BASTA! 2014 in Mainz. Die Beispiele zeigen, wie man mit Command-Interceptoren einen Second-Level-Cache implementieren kann, wie man mit Command-Tree-Interceptoren gobale Filter für mandantenfähige Systeme und "Soft-Delete" definieren kann, wie man einen deutschsprachigen Pluralisierungs-Service entwickeln kann sowie wie man mit Migrations und einem eigenen MigrationSqlGenerator zusätzliche SQL-Anweisungen für Historisierungstabellen generieren lassen kann.

Manfred Steyer: Einführung in Entity Framework: Beispiele von #bastacon

Nachfolgend der Link und das Cheat Sheet zum Beispiel unseres Workshops zu Entity Framework von der BASTA! 2014 in Mainz.


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

    friends header

    bloggers headline

    links header

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