Alexander Schmidt: WPF und MVVM richtig einsetzen – Teil 3

Erläuterungen zu IDataErrorInfo

Marco Scheel: Links for 2016-05-27 [del.icio.us]

Fabian Deitelhoff: Gelesen + Verlosung: WordPress 4 – Das umfassende Handbuch

Dieses Mal eine Rezension inklusive Verlosung. Ist schon eine Weile her. In diesem Beitrag geht’s um das Buch WordPress 4: Das umfassende Handbuch von Alexander Hetzel.

Das Buch im Überblick

WordPress 4: Das umfassende Handbuch

Rheinwerk Verlag, 12/2015, 935 Seiten, Deutsch
ISBN: 978-3836239431, 39,90 Euro

Sprache: Deutsch
Ausstattung: Gebunden
E-Book: Auch als E-Book verfügbar
Probekapitel: Leseprobe ansehen
Gesamtnote: sehr gut – 5,0 von 5 Sternen
Leseempfehlung: Ja

WordPress 4: Das umfassende Handbuch (Alexander Hetzel, Rheinwerk Verlag)

Der Inhalt

Da ich zu WordPress das ein oder andere Seminar durchführe, war ich am aktualisierten Buch zu WordPress 4 vom Rheinwerk Verlag sehr interessiert. Ich war neugierig, welche Themen in einem Buch, das immerhin über 900 Seiten Umfang hat, angesprochen werden.

Enttäuscht wurde ich auf gar keinen Fall. Das Sammelsurium hat Themen ist sehr groß. Von einer kurzen Einführung, was WordPress eigentlich ist, über Systemanforderungen, Installation, Themes, Plugins SEO und Sicherheit ist alles vertreten. Unter anderem sind diese Themen enthalten:

  • Installation von WordPress
  • Administrationsoberfläche
  • Responsive Webdesign
  • Theme-Programmierung
  • Einführung in HTML und CSS
  • Eigene Seitentypen
  • Plugins nutzen und selbst programmieren
  • SEO
  • Sicherheit und Wartung
  • Google Analytics und Piwik

Also eine ganze Menge. Und das gefällt mir auch wirklich gut, da Einsteiger direkt am Anfang abgeholt werden. Aber auch schon fortgeschrittene Nutzer bleiben nicht im Regen stehen und können sich bei Themen wie der Theme-Programmierung und dem Programmieren von Plugins austoben. Wer das schon gemacht hat, für den ist das Buch dann aber vielleicht auch nichts, denn hier bleibt der Inhalt stehen.

Fazit & Bewertung

Ich kann das Buch nur wärmstens empfehlen. In meinen Seminaren zu WordPress kann ich immer nur einen kleinen Teil des Inhalts abdecken. In einem Tagesseminar komme ich beispielsweise maximal zu einem Drittel durch das Buch. Bedeutet, es bleiben noch zwei Drittel übrig mit vielen weiteren Themen und inhaltliches. Wer also mehr über WordPress erfahren will, ist mit dem Buch von Alexander Hetzel gut bedient.

Sehr positiv finde ich die kritische Auseinandersetzung mit WordPress recht am Anfang des Buchs. Jeder sollte sich die Frage stellen, ob WordPress etwas für das eigene Anliegen ist oder ob es nicht doch bessere Lösungen gibt.

Ebenfalls sehr gut finde ich die kurze Einführung in HTML und CSS. Wer also vor hat, seine WordPress Installation etwas zu erweitern, zum Beispiel durch ein eigenes Theme oder ein eigene Plugin, findet auch dafür im Buch einen Einstieg.

Zur Verlosung

Und wieder einige obligatorische Informationen zur Verlosung. Das Buch wurde mir freundlicherweise vom Rheinwerk Verlag zur Verfügung gestellt. Das Buch ist in einem sehr guten Zustand, da ich es nicht vollständig gelesen habe, sondern mir wichtige Themengebiete ausgewählt habe.

Das Buch wird von mir verschickt. Alle Kosten übernehme selbstverständlich ich. Bis auf eine Adresse brauche ich dann auch nichts weiter. Dazu melde ich mich allerdings noch mal beim Gewinner beziehungsweise der Gewinnerin per E-Mail, die beim Kommentar mit angegeben werden muss. Die E-Mail Adresse ist natürlich nur von mir einsehbar.

Wer gewinnen möchte, hinterlässt bitte einen Kommentar, warum er oder sie das Buch gerne hätte. Das muss nichts Besonderes sein. Ich möchte nur gerne vermeiden, dass Kommentare auftauchen, die offensichtlich dadurch entstanden sind, das einmal von links nach rechts mit dem Gesicht über die Tastatur gerollt wurde. 🙂

Aus allen Kommentaren fische ich dann per Zufall einen heraus, so wie ich das bei den letzten Verlosungen auch gemacht habe. Die Verlosung läuft von heute, Freitag den 27. Mai 2016 bis zum Freitag, den 03. Juni 2016 um 12:00 Uhr. Die Teilnahme ist ab 18 Jahren möglich und der Rechtsweg ist wie üblich ausgeschlossen.

Bei Fragen zum Buch oder sonstigen Angelegenheiten zur Verlosung freue ich mich immer über Kommentare und Nachrichten.

Vielen Glück allen!

Sven Hubert: WordToTFS 5.1 released

Recently we released WordToTFS 5.1. This update is a mix of features and bugfixes. This post gives a brief description of the changes.

Work Item Links – Support for HTML Fields

Whenever a user wants to show links between Work Items in Word, she can define an appropriate links section in the WordToTFS template as already described in section Defining link mappings (p.33) in the WordToTFS User Guide. However, this worked well only with fields (see LinkFormat in the following screenshot of a sample configuration) of simple data types (string, number).

image

Now the user can also reference HTML-fields in that links section. Since this can only be a preview of the linked work item, WordToTFS removes any HTML based formatting and also embedded images to improve readability in the links area.

Test Specification / Test Result Reports

The list of test plans in Test Spec and Test Result Reports is now ordered by name, which makes the list much more usable.

Furthermore the Test Spec by Query now supports usage of Shared Steps work item types.

The WorkItemViewerLink element of the Test Spec and Test Result Reports configuration now supports formatting of links. Therefore the new Format attribute has been introduced at the WorkItemViewerLink tag in the WordToTFS configuration as shown in the following sample configuration.

image

This enables the user to specify formatting with the WorkItemViewerLink similar to the Link-tags described at the beginning of this post.

We now support multiple naming of test suites within test plans. Since the name of a test suite does not need to be unique in the scope of a test plan, specifying the test suite to be reported is not sufficient. In addition to specifying the name of a test suite, the “path” can be used as well. Test suites can now be selected via a path to identify a certain test suite. This is done in the format “TestPlan1RootSuite/SubSuite1/SubSub2” (see also section Identify test suite selection by tree path on page 43 in the WordToTFS User Guide).

Console Extension

Auto update for WordToTFS templates is now also being used by Console Extension. As soon as there is a new version of the used WordToTFS template at the specified template location, WordToTFS refreshes the local template cache even when called via command line interface.

WordToTFS Templates

The default WordToTFS templates got a face lift to achieve a modern layout. Furthmore the default work item type colors of Epic, Feaure, Product Backlog Item and Bug work item types are now used in Word as well. This makes it easier getting an overview of a specification at a glance.

image

Bugfixes

Beyond the new features there are a log of bugfixes within that release:

  • Fixed bug that shrinks images when getting and publishing work items.
  • Fixed bug that throws a COMException when the addon activated and started from command line in some cases.
  • Fixed bug that the command line uses the wrong server connection on loading of an existing document.
  • Fixed bug that the command line ignores the specified dotx-template.
  • Fixed bug with formatting lines in description field. Depending on the formatting of the content an exception was thrown on publish.
  • Fixed bug with reading the latest test results. In some cases when several test runs started parallel and ended in another order than they have been started, WordToTFS interpreted another test result as „latest“ than MTM does.
  • Fixed bug that throws an OutOfRangeException when getting work items.
  • Fixed bug in Test Result Report that created an exception while reading Shared Steps results of automated tests.
  • Fixed bug that Test Reports raised FileNotFound Exception when template location contains subdirectories.
  • Fixed minor error descriptions.
  • Fixed minor bugs in documentation.

Install the Update

It’s worth to mention that we terminated development on WordToTFS 4.*. We highly recommend users that have still installed WordToTFS 4.* to uninstall that version and download version 5.1 from http://aitgmbh.de/wordtotfs. Users having WordToTFS 5.0 already installed, can either wait a few days for the auto-update mechanism or enforce the update mechanism manually by using the update button in the WordToTFS ribbon (see the  next screenshot).

image_thumb3

We’re proud to improve the tool continuously, which would be impossible without the support and valuable feedback of our customers. Thanks for that!

Marco Scheel: Links for 2016-05-26 [del.icio.us]

Marco Scheel: Links for 2016-05-25 [del.icio.us]

codefest.at [MS]: Studenten können jetzt ihren kostenlosen, lebenslangen Store und Windows Dev Center Zugang einrichten

Und wie funktioniert es? Ganz einfach über DreamSpark.

Mit DreamSpark können Schüler und Studenten kostenlos die Microsoft Entwickler- und Designertools herunterladen und mit dem DreamSpark Registrierungscode sich lebenslang kostenlosen Zugang zum Store und Windows Dev Center sichern.

Jetzt registrieren – Infos und Voraussetzungen findet Ihr hier.

Sven Hubert: WiX Toolset Teil 1: Hilfe, Ich brauche einen Installer! – Das WiX Toolset

Zu Beginn eines Entwicklungsprozesses muss man sich um vieles kümmern: Architektur, Konzepte und Verantwortlichkeiten sind nur ein kleiner Teil des Ganzen. Was dabei gerne vergessen wird, ist das eigentlich Wichtige: Wie kommt meine Anwendung später zum Nutzer? Anders formuliert: Wie installiert der Nutzer später meine Software auf seinem System? Wer komplexe Anwendungen entwickelt und diese auf bequeme Art und Weise ausliefern möchte, der stößt bei seiner Suche nach dem richtigen Hilfsmittel auf das WiX Toolset.

Im folgenden ersten Beitrag unserer neuen WiX Toolset Blog Serie werde ich vorstellen, was das WiX Toolset ist und warum es als simple Lösung für viele Anwendungsszenarien zu gebrauchen ist. In den folgenden Beiträgen werde ich auf speziellere Szenarien eingehen.

Die Agenda wird dabei wie folgt aussehen:

1: Hilfe, Ich brauche einen Installer! – Das WiX Toolset

2: Wie sieht das denn aus? – Das WiX Toolset UI

3: Wo war das noch gleich? – Shortcuts und Uninstall

4: Manuell starten war gestern – Autostart und Conditions

5: Access denied! – Permissions setzen leichtgemacht

6: Wie kommt das jetzt zum Kunden? – WiX Setups erstellen und verteilen

7: Mach was du willst! – Custom Actions implementieren

Das WiX Toolset

Als Erstes stellt sich die Frage: Warum soll ich das WiX Toolset nutzen? Es gibt doch durchaus noch Alternativen – ClickOnce, InstallShield oder dotNetInstaller, um nur drei zu nennen. Was ist also der Vorteil des WiX Toolsets? Der größte Vorteil liegt in der Anzahl der verfügbaren Funktionalitäten. Es ist nicht nur möglich einfache Installationsroutinen zu erstellen, die ausschließlich Dateien an die richtige Stelle kopieren. Es können auch komplexe Prozesse abgebildet und eigene Aktionen integriert werden. Das Ganze wird in XML Syntax abgebildet, wodurch ein einfaches Mergen in der Verionsverwaltung möglich ist.

Um ein WiX Toolset Projekt in Visual Studio in eine Solution zu integrieren, muss es vorher installiert werden. Auf der offiziellen Homepage des Projektes gibt es neben den Binaries auch einen Installer, um das WiX Toolset zu installieren. Nach einem Neustart von Visual Studio kann der Solution ein neues Setup Projekt hinzugefügt werden.

SNAGHTML1f652297

Aufbau eines Windows Installer XML Projektes

Eine der ersten Aufgaben beim Erstellen eines Installationsprojektes, ist das Strukturieren aller Dateien, die installiert werden sollen. Das Windows Installer XML Format gibt uns hier eine Vielzahl an Möglichkeiten an die Hand. Wie diese Möglichkeiten aussehen, wird im Folgenden dargestellt.

clip_image004

Zentraler Punkt eines WiX Projektes ist das Product Element. Das Product kann als Einstiegspunkt verstanden werden, unter dem sich weitere Elemente vereinen. Ein Pflicht-Element ist dabei das Package. Die an dieser Stelle eingetragenen Attribute sind später in den Eigenschaften der Installationsdatei einsehbar, beeinflussen aber auch die Ausführung dieser. Hier können beispielsweise Versionsnummern, Herstellerinformationen, aber auch die benötigten Rechte, um die Installation ausführen zu können, definiert werden.

Besondere Aufmerksamkeit sollte man dem Feature Element widmen. Damit lassen sich funktionale Unterscheidungen sauber trennen sowie später aus dem Installer ausklammern, ohne große Anpassungen vornehmen zu müssen. Ein Feature Element kann als „kleinste installierbare Einheit“ gesehen werden. Unter ihr werden einzelne Komponenten aufgeführt, die gemeinsam installiert werden. Über das Level Attribut können Features von der Installation ausgeklammert werden. Somit lässt sich leicht steuern, welche Features installiert werden sollen. Dies kann theoretisch für verschiedene Lizenzen oder aber für während der Installation vom Nutzer an und abwählbare Features genutzt werden.

Ein weiteres, wichtiges Element ist das Media Element. Es gibt uns die Möglichkeit, die Dateien der Installation auf mehrere Cabinets aufzuteilen und somit beispielsweise Installationen auf mehrere Datenträger zu verteilen. Im Zeitalter der Software-Downloads besteht aber die Möglichkeit, innerhalb des Media Elements zu spezifizieren, dass alle Dateien in die erstellte *.msi eingebettet werden sollen und am Ende somit nur noch eine Datei ausgeliefert werden muss. Im folgenden Screenshot ist die Definition eines Product Elementes abgebildet.

clip_image006

Das WiX Toolset bietet uns die Möglichkeit, über einfache Verschachtelung von Directory Elementen den Installationspfad zu bestimmen. Dabei steht jedes Directory Element für einen Ordner in der Ordnerstruktur. Zur besseren Übertragbarkeit auf verschiedene Systeme, werden bestimmte Werte fest vordefiniert. So verweist das Directory Element mit der ID „WINDOWSVOLUME“ auf jedem System auf die Installationspartition des aktuellen Windows-Betriebssystems. Eine komplette Auflistung der reservierten IDs finden sie hier. Um Elemente außerhalb des Products zu definieren, müssen diese unterhalb eines Fragment Elementes angeordnet werden.

clip_image008

Um die einzelnen Dateien, die installiert werden sollen, zu strukturieren, werden Component oder ComponentGroup Elemente, welche mehrere Component Elemente zusammenfassen, benutzt. Diese werden jeweils mindestens einem Feature zugeordnet. Component Elemente, welche keinem Feature zugeordnet wurden, erzeugen Link Errors und verhindern so einen erfolgreichen Build des WiX Projektes.

Um ein Component einem Feature zuzuordnen, wird im Feature ein ComponentRef beziehungsweise ein ComponentGroupRef Element angelegt, das auf die ID des Component, beziehungsweise des ComponentGroup Elements zeigt. Wichtig ist an dieser Stelle, dass die angesprochenen Elemente nicht in der gleichen Datei liegen müssen. Es ist also möglich, die Anwendungsarchitektur auch im Installationsprojekt abzubilden und so den dokumentationsaufwand zu minimieren.

Das Component Element selbst kann beliebig viele Elemente verschiedener Typen beinhalten. Das am häufigsten benötigte Element ist das File Element. Es dient zur Definition einer Datei, die während der Installationsroutine kopiert werden soll. Im hier gezeigten Beispiel, wird das Component Element unterhalb eines DirectoryRef Elementes angelegt. Dieses zeigt auf die ID eines oben angelegten Directory Elements.

clip_image010

clip_image012

Die hier aufgeführten Elemente erlauben es, einfachste Installationsdateien mit Hilfe des WiX Toolsets zu erstellen. Im Laufe der weiteren Blog-Serie, werden verschiedene Anwendungsszenarien betrachtet, die es nötig machen, tiefer in die Struktur von WiX Setups zu blicken.

Marco Scheel: Links for 2016-05-24 [del.icio.us]

Marco Scheel: Links for 2016-05-23 [del.icio.us]

codefest.at [MS]: GeoJSON & (SQL) Spatial Data … am Ende war’s eigentlich ganz einfach.

Kürzlich, im Rahmen eines kleinen Testprojekts, wurde ich mit der Verarbeitung von Geodaten konfrontiert. Kurz zusammengefasst, die Kernkomponente des Programms sollte feststellen können ob ich mich (genauer gesagt ob sich meine Position) innerhalb eines definierten Bereichs befinde. Ein (für heutige Verhältnisse und Möglichkeiten) an sich “triviales” Problem; dennoch stieß ich hier und da auf ein paar Hürden. Die Erkenntnisse habe ich in diesem Artikel zusammengefasst.

Schritt #1: Die passenden Daten. Woher nehmen und nicht stehlen.

Glücklicherweise finden sich im Internet div. Plattformen, die unterschiedliche Geodaten, u.a. kostenfrei anbieten. Open Data ist im Vormarsch; vor allem im öffentlichen Bereich! In meinem Fall war die Lösung schnell gefunden. Für mein Testprojekt konnte ich auf Daten aus dem österreichischen “Open Government Wien” Fundus zurückgreifen. Dort findet man eine Vielzahl von interessanten Daten. Für alle die diese Plattform bis dato noch kannten – ein Besuch lohnt sich!

Schritt #2: Das passende Datenformat.

Open Government Data bietet die Daten in unterschiedlichen Formaten an. Darunter auch in JSON. Hierbei wird das GeoJSON Format verwendet. Wenn man einen Blick in die JSON Daten wirft, erwarten einem meist (natürlich abhängig von den repräsentierten geometrischen Elementen) eine Vielzahl von geschachtelten und oft großen Arrays.

geojson-raw

(Bild: “Raw” GeoJSON Daten von Open Government Wien. Stand 05.2016)

Ich bin ein persönlicher Fan von guter Datenvisualisierung. Das hilft mir die Strukturen und die einzelnen Elemente besser zu verstehen. Arbeitet man mit Geodaten ist dieser Schritt relativ einfach. Man muss die Daten nur auf einer Karte darstellen. Hierbei helfen (Web) Plattformen wie z.B. GeoJSON.io. Einfach die GeoJSON Daten in GeoJSON.io hochladen und man bekommt eine anschauliche Darstellung von Geo Elementen wie Punkten, Polygonen und Multipolygone. Ein Klick auf z.B. ein Polygon öffnet ein kleines Fenster, welches die spezifischen Metadaten des jeweiligen Elements anzeigt. Nicht uninteressant für die weitere Entwicklung.

geojson-io

(Bild: Screenshot von GeoJSON.io. Daten stammen von Open Government Wien. Stand 05.2016) 

Schritt #3: Die Datenhaltung. NoSQL Stores? Relationale Datenbanksysteme?

Nachdem ich einen Überblick über die Daten erhalten habe, bestand der nächste Schritt darin eine passende Datenablage für diese Daten zu finden (die Daten nur im Applikationsspeicher zu halten war für mich keine Option). Aber welcher ist der “Richtige”? Nun ja, ein Analyse bis ins kleinste Detail habe ich mich an der Stelle erspart. Ich konzentrierte mich auf folgende Kriterien:

  • Infrastruktur Overhead und Kosten auf ein Minimum reduzieren.
  • Der Datencontainer soll Funktionen zur Verarbeitung von Geodaten (Spatial Types) anbieten (z.B. befindet sich ein Punkt innerhalb eines Polygons, wie weit sind zwei Punkte voneinander entfernt, etc.)

Beide Punkte werden von den Microsoft Azure Plattform-as-a-Service (PaaS) Services Azure DocumentDB und Azure SQL Database erfüllt.

Meine Favoriten waren identifiziert. Aus reiner Neugier habe ich mich dann auch entschlossen beide Varianten auszuprobieren.

GeoJSON und Azure DocumentDB (NoSQL)

Seit August 2015 unterstützt Azure DocumentDB Geospatial Daten (Announcing Geospatial support in Azure DocumentDB bzw. Working with Geospatial data in Azure DocumentDB) und bietet sich als NoSQL Store für die vorhandenen JSON Daten an. Wer sich unsicher ist und die Funktionalität vorab testen möchte, wird im Azure DocumentDB Query Playground fündig werden. Dort gibt es eine separate Sektion um die Geospatial Funktionen (ST_DISTANCE und ST_WITHIN) testen zu können.

Der Import der vorhandenen GeoJSON Daten war Dank des Azure DocumentDB Migration Tools ein Kinderspiel. Das Tool runterladen, installieren, starten, die GeoJSON Datei, welche importiert werden soll, als Datenquelle angeben, die Ziel DocumentDB Collection spezifizieren und schon kann es losgehen. Das Tool übernimmt den Rest. Und bereits nach kurzer Zeit sind die Daten in der DocumentDB Instanz abgelegt.

Um den Start zu erleichtern, gibt es auf Github auch einige Azure DocumentDB Spatial Code Samples.

GeoJSON und Azure SQL Database

Ich ging davon aus, dass es sich hierbei (GeoJSON –> SQL Spatial Types) um ein geläufiges Problem handelt und bereits eine wiederverwendbare Lösung (z.B. ein Import-/Migrationstool) existiert. Fehlanzeige. Meine erste Recherche war ernüchternd. Ich fand einige Artikel, die beschreiben wie man SQL Spatial Types nach JSON konvertieren kann; die gefundenen Informationen, die sich mit der Konvertierung in die andere Richtung beschäftigen waren doch sehr “überschaubar”.

Es sah so aus, dass ich an einer “Custom” Import/Parsing Lösung nicht herumkommen würde (vor allem auch weil die Geodaten ein Dictionary mit Custom Daten beinhalten). Obwohl es möglich ist dies direkt mit T-SQL umzusetzen (JSON Data (SQL Server)), entschied ich mich diese Logik in eine C# Applikation packen. Da ich ohnehin beabsichtigte den Datenbankzugriff mittels Entity Framework (EF) zu abstrahieren (EF Provider Support for Spatial Types), schien diese Option durchaus naheliegend (mittels EF Code-First Ansatz). Glücklicherweise gibt es das Nuget Paket “GeoJSON.NET”, welches neben den entsprechenden .NET Typen auch Json.Net GeoJSON (De)Serializer zur Verfügung stellt.

Die Implementierung ist einfach:

GeoJSON.Net.Feature.FeatureCollection featureCollectionZones =
    JsonConvert.DeserializeObject<GeoJSON.Net.Feature.FeatureCollection>("<YOUR GEOJSON>");
foreach (GeoJSON.Net.Feature.Feature item in featureCollectionZones.Features)
{ }

Im Anschluss müssen die eingelesenen Daten noch in einen SQL Spatial Data Type überführt und dem Entity Framework in einer interpretierbaren Form zur Verfügung gestellt werden.

foreach (GeoJSON.Net.Feature.Feature item in featureCollectionZones.Features)
{
    var geoFromJson = item.ToSqlGeometry();
    var geography = DbGeography.FromText(geoFromJson.ToString());
}

Fazit

Liegen Geodaten im GeoJSON Format vor, so können diese schnell in die eigene Applikation integriert werden um interesante Abfragen durchzuführen. Dank diverser Tools ist es zudem einfach die Daten in die Azure Services Azure DocumentDB und Azure SQL Database zu übernehmen und damit sowohl die NoSQL als auch SQL User zu bedienen.

Holger Schwichtenberg: Neue Fachbücher zur Windows PowerShell 5.0

Der Dotnet-Doktor hat seine Scripting-Fachbücher zur Version 5.0 der Windows PowerShell aktualisiert und erweitert.

Sven Hubert: Qualität als Konzept: Aus der Werkzeugkiste eines Testers – Tools zur Untersuchung von Oberflächen

Eine wesentliche Aufgabe im Testing ist es, sicherzustellen, dass die Software in verschiedenen Anwendungsszenarien, wie z.B. mit verschiedenen Endanwendergeräten, Betriebssystemen oder Browsern, fehlerfrei und in gleicher Weise funktioniert. Werden ausschließlich manuelle Tests ausgeführt, so stößt man bei dieser Aufgabe aufgrund der Komplexität und dem damit verbundenen hohen zeitlichen Aufwand schnell an seine Grenzen. Automatisierte Oberflächentests hingegen bieten hierfür eine skalierbare Lösung, welche zudem die Fehleranfälligkeit der Tests reduziert.

Automatisierte Oberflächentests steuern die Oberflächenelemente einer Anwendung an und führen vordefinierte Aktionen auf ihnen aus, wie z.B. das Befüllen einer Textbox oder das Drücken eines Buttons. Dabei werden die Oberflächenelemente anhand einer oder mehrerer Eigenschaften, wie z.B. dem Namen oder der ID, identifiziert. Eine zentrale Aufgabe beim Erstellen solcher automatisierter Oberflächentests ist das Bestimmen eben dieser Eigenschaften, mit welchen die Oberflächenelemente identifiziert werden. Aus der Bandbreite an Tools, die hierfür verwendet werden können, werden in diesem Blogbeitrag die beiden Tools Inspect und die Developer Tools des Internet Explorers vorgestellt.

Inspect

Inspect ist ein Tool, welches es erlaubt, sowohl Microsoft Active Accessibility (MSAA)– als auch Microsoft User Interface Automation (UIA)-Eigenschaften von Oberflächenelementen zu untersuchen. Das Tool eignet sich damit sowohl zur Untersuchung von WinForms- als auch von WPF-Anwendungen. Standardmäßig wird es unter Windows 8 mit dem Windows Software Development Kit (Windows SDK) installiert und ist in dem Ordner \bin\<platform> des Windows SDK-Installationspfades (z.B. C:\Program Files (x86)\Windows Kits\8.1\bin\x86\inspect.exe) zu finden.

Die für die Oberflächenuntersuchung zu verwendende API (MSAA bzw. UIA) wird in der Toolbar ausgewählt (vgl. Abb. 1 (1)).  In der Hauptansicht, welche aus zwei Bereichen besteht, wird die Oberfläche untersucht: Die Baumansicht (vgl. Abb. 1 (2)) stellt die hierarchische Ansicht der Oberflächenelemente dar und wird zum Navigieren zwischen den Oberflächenelementen benutzt. Dabei kann zwischen den drei Sichten Raw View,  Control View und Content View gewählt werden, welche jeweils unterschiedliche Filterkriterien zum Anzeigen des Baumes definieren. Die Detailansicht (vgl. Abb. 1 (3)) listet die Eigenschaften des aktuell ausgewählten Oberflächenelementes auf.

image

Abb. 1: Inspect-Fenster

Mit Hilfe der Toolbar (oder alternativ über das Menü oder Shortcuts) bietet Inspect verschiedene Möglichkeiten an, zwischen den Elementen zu navigieren sowie Aktionen auf ihnen auszuführen. Ausgehend von dem ausgewählten Element kann beispielsweise…

  • … zum Elternelement navigiert werden (vgl. Abb. 2 (1)),
  • … zum ersten Kindelement navigiert werden (vgl. Abb. 2 (2)),
  • … zum vorhergehenden Geschwisterelement navigiert werden (vgl. Abb. 2 (3)),
  • … zum nachfolgenden Geschwisterelement navigiert werden (vgl. Abb. 2 (4)),
  • … zum letzten Kindelement navigiert werden (vgl. Abb. 2 (5)),
  • … die hinterlegte Default-Aktion ausgeführt werden (z.B. Drücken eines Buttons, vgl. Abb. 2 (6)),
  • … der Fokus gesetzt werden (vgl. Abb. 2 (7)) oder
  • … das Element durch einen gelben Kasten hervorgehoben werden (vgl. Abb. 2 (8)).

image

Abb. 2: Toolbar des Inspect-Fensters

Developer Tools

Für die Untersuchung der Oberfläche von Webanwendungen sind im Internet Explorer die Developer Tools integriert, welche über F12 geöffnet werden können. Diese enthalten nicht nur Features zur Untersuchung der Oberflächenelemente sondern bieten darüber hinaus Unterstützung beim Erstellen und Debuggen von Webseiten.

Die für die Untersuchung der Oberfläche relevanten Features befinden sich im Tab DOM Explorer (vgl. Abb. 3 (1)). Der DOM Explorer stellt die Interpretation des Document Object Model (DOM) dar und erlaubt es, die HTML-Struktur der Webseite sowie die verwendeten CSS-Formatvorlagen zu untersuchen.

Der DOM Explorer unterteilt sich in zwei Hauptbereiche: Auf der linken Seite befindet sich der Elementbereich (vgl. Abb. 3 (2)), welcher das aktuelle DOM anzeigt und erlaubt, zwischen den Elementen der Webseite zu navigieren und diese zu untersuchen. Auf der rechten Seite des DOM Explorers befindet sich der Formatvorlagenbereich (vgl. Abb. 3 (3)). Dieser unterteilt sich wiederum in die 5 Tabs Styles, Computed, Layout, Events und Changes. Die verschiedenen Tabs bieten z.B. die Möglichkeit, zu überprüfen, welche Formatvorlagen auf das aktuell ausgewählte Element angewendet sind. Hierbei wird zwischen Vorlagen, die von anderen Elementen geerbt sind und solchen, die direkt auf das Element angewendet sind, unterschieden.

Wie Inspect bietet auch der DOM Explorer noch zwei nützliche Features für die Untersuchung von Webseiten:

  1. Durch Klicken des Select Element-Buttons (vgl. Abb. 3 (4)) und Auswählen eines Elementes der Webseite mittels Mausklick wird direkt zur entsprechenden Stelle im DOM navigiert. Alternativ kann man dieselbe Aktion über das Kontextmenü eines Oberflächenelementes einer Webseite und dem anschließenden Auswählen des Eintrags Element untersuchen im Kontextmenü ausführen.
  2. Durch Klicken des DOM Element Highlighting-Buttons (vgl. Abb. 3 (5)) und Auswählen eines Elementes der Webseite im DOM Explorer wird das Element farblich auf der Webseite hervorgehoben.

image

Abb.3: Developer Tools im Internet Explorer

Fazit

Möchte man Oberflächen automatisiert testen, so besteht eine grundlegende Aufgabe darin, die Oberflächenelemente zu identifizieren und deren Eigenschaften zu untersuchen. Wie so oft beeinflusst die Wahl des Tools wesentlich die Effizienz, mit welcher diese Aufgabe gemeistert werden kann. Daher ist es essentiell, die zu untersuchende Technologie bei der Auswahl des unterstützenden Tools, wie z.B. Inspect oder den Developer Tools, mit einzubeziehen. Mit dem richtigen Werkzeug an der Hand und ein wenig Übung kann der Tester so schnell und strukturiert Informationen über die zu automatisierende Oberfläche einholen, um seine automatisierten Oberflächentests zu erstellen.

Marco Scheel: Links for 2016-05-22 [del.icio.us]

  • Marco Scheel aka GeekDotNet — The Future of SharePoint (Online)
    Die Roadmap schließt somit eine Lücke, die überwiegend Hardcore SharePoint User (Publishing, echte Listen und Metadaten) betroffen hat und begeistern wird. Für den Rest wird es einfach einfacher und schöner. via Pocket
  • Motify | Tumblr
    Motify is an excellent theme for bloggers who love to write. It has a simple design with large readable fonts. If the default colors don't take your fancy, don't worry, we have you covered. via Pocket
  • Hipster | Tumblr
    Customize Everything Colors, images, logos, avatars, icons, buttons, links, titles, descriptions, intros, features, toggles, sizes, shapes, fonts... if you can see it then you can customize it! Hipster is designed for you to make it your own and show off your individual style. via Pocket
  • https://support.microsoft.com/en-us/kb/2629108
    Article translations via Pocket

Marco Scheel: Links for 2016-05-21 [del.icio.us]

  • The Golden Age of x86 Gaming
    The golden age of x86 gaming is well upon us. That's why the future of PC gaming is looking brighter every day. via Pocket
  • Back to the Home Realm Discovery in 2012 R2 | The Access Onion
    Hello all.  You may recall from older posts on this blog (2012) that we’ve played around in the past with Home Realm Discovery (HRD) in AD FS. First with IWA and forms logon here and then a little bit more for good measure. via Pocket
  • Missing link - IFTTT
    via Pocket
  • GitHub vs. VSTS Pricing, in more than 140 characters
    GitHub has introduced a flat rate structure for unlimited private repos and I wanted to understand how it compares to the Visual Studio Team Services (VSTS - previously Visual Studio Online (VSO)) pricing where you get that already. I drew up a quick picture and tweeted it: via Pocket
  • Microsoft Band 2: Meine Erfahrungen mit dem zweiten Garantiefall - WindowsUnited
    Als das Microsoft Band 2 letztes Jahr vorgestellt wurde, dachte ich gleich „das Teil werd ich mir holen“. Die Verfügbarkeit war jedoch auf wenige Länder (USA, England und später noch Australien) beschränkt. Also habe ich es mir aus England (UK) importiert und war sehr schnell begeistert. via Pocket

Marco Scheel: The Future of SharePoint (Online)

TL;DR

Die Roadmap schließt somit eine Lücke, die überwiegend Hardcore SharePoint User (Publishing, echte Listen und Metadaten) betroffen hat und begeistern wird. Für den Rest wird es einfach einfacher und schöner.
Alle die Office 365 noch nicht verwenden können die Zeit bis Ende 2016 nutzen, um eine solide Basis aufzubauen. Alle mit einer guten Office 365 Basis können die Zeit nutzen in ersten Gehversuchen mit Office 365 Groups eigene Erfahrungen zu sammeln. In nächsten Jahr (2017) können dann hoffentlich alle das volle Potential von SharePoint Online nutzen und über den Datei-Tellerrand schauen und den nächsten Level der modernen Teamräume ausnutzen.


Am 4.5.2016 hat Microsoft Details zur weiteren Roadmap von SharePoint in einem Online-Event vorgestellt. In den letzten Monaten hat man den Eindruck bekommen, dass SharePoint sich immer mehr auf das Verwalten von Dateien konzentriert und dies auch mit einem sehr rudimentären Funktionsumfang. Woher kam die Vermutung? Meine persönliche Wahrnehmung als Berater im SharePoint Umfeld, Blogs aus der (MVP-)Community, die aktuelle (Stand Mai 2016) Implementierung der Office 365 Groups und nicht zuletzt der starte Fokus auf den OneDrive for Business Bereich (Next Gen Sync, …).

Ich als SharePoint Berater bei der Glück & Kanja Consulting AG möchte ihnen gerne meine Wahrnehmung und Interpretation der Dinge schildern. Es ist keine 1:1 Zusammenfassung, denn die hat Microsoft selber hier geliefert:

Sites heißt jetzt wieder SharePoint – Das Versteckspiel hat eine Ende

Meine erste Reaktion auf Twitter:

image

Persönlich bin ich mit dem Event sehr zufrieden. SharePoint versucht sich nicht nur auf Dateien zu beschränken, sondern möchte auch in Office 365 als echtes Intranet wahrgenommen werden. Abseits von Groups und OneDrive gibt es ja noch Listen. Ein Feature das nur “Wenige” verwenden, aber eigentlich liegt dort der Teil der SharePoint definiert. Was hat Microsoft nun getan, um die traditionellen Wert wiederzubeleben?

  1. Moderne Teamsites sehen gut aus und funktionieren im Browser und in einer neuen SharePoint Mobile App
  2. Moderne Teamsites bieten mehr als eine Dokumentenbibliothek
  3. Moderne Teamsites fokussieren auf "Pages“ und ”Webparts“ um Informationen aus der puren Existenz zum Benutzer zu führen
  4. Moderne Teamsites bieten Discovery ala Delve und zeigen Activities auf einer Zeitlinie ähnlich wie Yammer
image

Ist der Focus auf das Intranet (News, Publishing, …) und echte Listenfunktionalität die Lösung aller SharePoint (Online) Probleme?

Nein! Ich bin noch immer der Meinung, dass der Großteil meiner Kunden primär eine grundsolide Lösung für das Arbeiten mit Dateien benötigt. Die Roadmap hierfür (OneDrive for Business Client) scheint klar. Wird die Zeitlinie gehalten, dann sehe ich hier keine Probleme.

Für was brauche ich jetzt aber Listen? Auch in internen Gesprächen wird den meisten Leuten nicht klar, warum man Listen benötigt. Selbst zusätzliche Metadaten an Dateien sind immer wieder ein Streitthema mit einem klaren Gewinner: Die Out-Of-The-Box Metadaten (Ersteller + Datum, Änderungshistorie, Version, Name) sind ausreichend. Benutzer wundern sich schon oft genug, warum SharePoint bei Dateien neben dem Dateinamen auch ein Titel Attribut hat. Zusätzliche Daten zu erfassen, ist für viele Benutzer neu und ungewohnt. Es mag valide Situationen (aber wirklich nur ein kleiner Prozentsatz) geben, wo extra Metadaten hilfreich sind. Das Handling der Metadaten stellt für Dateien aber noch immer ein Problem dar. Offline, Non-Office Dateien und verschiedene andere Situationen erlauben kein Zugriff auf diese extra Metadaten. Ein Bulkupload über OneDrive for Business oder den Browser erzeugt Dateien ohne Metadaten und oft ohne einen relevanten Handlungshinweis für den End-Benutzer. Kann ich auf Ordner verzichten, wenn ich Metadaten pflegen? Meine Meinung ist hier in 95% der Fälle ein "Nein”, da ich ohne Ordner zum Beispiel Offline ein Problem bekomme, wenn ich zum Beispiel 2000 Dateien in einer flachen Dateiliste bekomme. In solchen Situationen kann auch kein “selective Sync” helfen, wenn er mal implementiert wurde.

Die Demos von Microsoft zeigen die Modern Teamsites unter Verwendung der “neuen” Seiten und Webparts zum Aufbereiten multipler Informationen und Quellen. Sieht toll aus. Ich fand schon immer die Startseite einer Teamsite dafür geeignet, neben einem Dokumentenbaum (wie aus dem Dateisystem) auch andere relevanten Informationen aufzubereiten. Die Realität zeigt aber, dass sich so was gerade für Demos perfekt eignet, aber im echten Leben nur selten angewendet wird.

Also doch alles Grütze?

Nein, denn es gibt alleine durch die neue “Out-Of-The-Box” Funktionen so viele Vorteile, dass auch das normale Arbeiten unterstützt wird. Die neue SharePoint App funktioniert auch ohne zusätzliche Listen und Metadaten. Ein Delve ähnliches Discovery findet jetzt “überall” statt. Die “neue” Oberfläche kennen die User schon aus ihrem OneDrive for Business. Ergänzungen wie PowerApps und Flow können bei Bedarf aktiviert und genutzt werden. Das neue SharePoint Framework erweitert und ergänzt die bestehenden Add-In basierenden Entwicklungen.

Es gibt noch einige nicht unwesentliche Unbekannte:

  • Wie integriert sich die Groups-Funktionalität in die neuen Teamsites und anderes herum
  • Modern Teamsites für On-Premise (SP2016) gibt es wahrscheinlich erst 2017 in einem Feature Pack
  • Wie überbrücken wir die Zeit bis Ende 2016 (da kommen das Gesamtpaket zusammen)

Die Roadmap schließt somit eine Lücke, die überwiegend Hardcore SharePoint User (Publishing, echte Listen und Metadaten) betroffen hat und begeistern wird. Für den Rest wird es einfach einfacher und schöner.

Planlos?

Kein Grund nix zu tun. Nutzen Sie noch kein Office 365? Starten Sie einen Piloten und untersuchen Sie, was ihr Unternehmen der Cloud abgewinnen kann. Bevor es um SharePoint geht benötigen Sie solide Grundlagen/Planungen im Bereich Authentifizierung (Azure AD), eine eventuelle Verzeichnissynchronisation, Office Pro Plus (Client) Rolloutplanung, Mailmigration und mehr. Ist alles ready, dann ist es fast schon 2017 und mit all den wahrgewordenen SharePoint Funktionen kann auch hier solide ein Plan entwickelt werden.

Ihr Unternehmen hat schon die stabile Basis in Office 365 oder befindet sich in einem Proof-of-Concept? Diese Ausgangssituation ist ganz so einfach. Persönlich würde ich hier versuchen auf Basis der aktuellen Office 365 Groups Implementierung erste Gehversuche zu machen und so bis Ende 2016 die Grundlagen für eine erfolgreiche Modern SharePoint Implementierung vorzubereiten.


Wir von der Glück & Kanja haben vor kurzem die GK WebcastFriday Serie gestartet. Im letzten Webcast haben meine Kollege Jan Geisbauer und ich das Thema SharePoint und im speziellen The Futute of SharePoint betrachtet. Schaut doch mal rein.

codefest.at [MS]: Xtreme Coding Dojo – TDD für Raspberry Pi, Arduino & Co. am 11.6.2016 in Wien

Am 11.6.2016 besuchen uns die Kollegen vom Coding Dojo München und werden mit uns eine (oder mehrere) Code Kata(s)– d.h. kleine, aber herausfordernde Programmieraufgabe – mittels TDD (Test Driven Development) lösen. Als Besonderheit werden wir bei diesem Dojo auch Hardware – z.B. Raspberry Pi, Arduino, Intel Galileo – ansteuern.
Und alles unter dem Motto „Lernen & Lehren“ mit Spaß!

Wie kann das ganze letztendlich aussehen…?
Anmeldung entweder über das Coding Dojo München Meetup oder via Facebook

See you am 11.6. um 10:00 im Microsoft Office in Wien!

codefest.at [MS]: ADAL v3 ist da

App-Developer aufgepasst, die neue Version der Active Directory Authentication Library (ADAL) .NET v3 ist verfügbar (GA). ADAL ist eine Portable Class Library, welche – nomen est omen – (Windows und Azure) Active Directory Authentifizierung von eigenen Apps für verschiedene Plattformen wie Windows ermöglicht und stark vereinfacht.

Dank der neuen Xamarin Integration können Apps nun auf iOS, Android und Windows mit ADAL authentifizieren. ADAL v3 kann somit Authentifizierungen über alle Plattformen anbieten.

Die Original-Ankündigung ist in ADAL .NET v3 reaches GA! nachzulesen. Die Neuigkeiten im Detail sind:

  • .NET 4.5+ applications: WPF apps, console apps, code behind of ASP.NET 4.6 web apps and API, etc etc
  • UWP apps (Windows 10 and Windows 10 Mobile)
  • Windows Store apps
  • Xamarin iOS and Android apps
  • Xamarin Forms apps
  • [noch in preview] .NET Core apps

Ein wichtiger Hinweis hierzu: Windows Phone wird ADAL v3 nicht mehr unterstützt. Für WP8.1 muss ADAL v2.x verwendet werden, schreibt PM Vittorio Bertocci. Vittorio beschreibt auch den Unterschied in der Verwendung von ADAL v3 and MSAL. MSAL wurde auf der BUILD angekündigt und ist eine neue Authentication Library, die mit dem v2 Authentication Endpoint von Azure AD für MSAL UND ORG Accounts funktioniert. Hier ist etwa wichtig, dass MSAL nicht mit ADFS zusammenarbeitet, während ADAL v3 diese Form der Authentifizierung sehr wohl unterstützt.

Installiert wird ADAL über den NuGet Package Manager (ab NuGet 2.8.6):
Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory

image

ADAVL v3 ist stabil und offiziell unterstützt. ADAL für .NET Core RC2 wird in den nächsten Wochen folgen…

Kazim Bahar: Kostenlose E-Books zu Windows 10 Themen

Step into Windows 10 UWP Dieses kostenlose E-Book von Daresh M beschreibt die UI Features...

codefest.at [MS]: “Turn data into apps” mit PowerApps

PowerApps sind ein neues Service, welches Formulare und Workflows auf Computern und mobilen Geräten bereitstellt. Dies beschreibt sinngemäß aber recht nüchtern die Funktionalität des neuen Services – natürlich basierend auf Azure. Sehen wir uns PowerApps einmal an…

Zur Geschichte von PowerApps

Zuvor möchte ich noch ein paar Worte zur Produkt-Historie anbringen. Microsoft hat das neue PowerApps Tool recht still Ende November 2015 auf der Convergence 2015 EMEA in Barcelona und in einem Blogpost in Introducing Microsoft PowerApps der breiten Öffentlichkeit vorgestellt.

Auf der Build Developer Conference gab es gerade einmal eine Session im “Theater” (im Booth-Bereich), die nicht als Webcast aufgezeichnet wurde. In einem persönlichen Gespräch mit einem der Product Manager auf der Build wurde die Strategie klar, die Aussage war sinngemäß: “We want to keep our feet on the ground (until we are further in developing the product)”. (Das Product Team sucht übrigens noch Developer für Feedback und Use Cases, bei Interesse bitte einfach mit dem Kontaktformular bei mir melden.)

Nun ist es soweit: Seit dem “The Future of SharePoint” (SharePoint 2016) Event Anfang Mai sind die PowerApps offiziell “alive”. Dieser Artikel stellt eine erste kleine Einführung in das Thema dar.

Preview

PowerApps ist derzeit (seit etwa Jahresanfang) in Preview. Auf der Produkt-Website kann man sich dafür registrieren: powerapps.microsoft.com.

image

Was bieten PowerApps?

Auf der Website gibt es auch bereits eine hübsche, animierte Grafik, welche einen Eindruck über das Look and Feel und etwas Funktionalität zeigt. Ich habe diese von der Website übernommen, da man so sehr rasch sieht, wie der Design-Modus und das Ergebnis von PowerApps aussehen.

PowerApps Formulare werden für den Einsatz auf mobilen Geräten bis hin zum Tablet und Computer erstellt.innovations

Der Designer ist eine eigene, auf dem Computer zu installierende App. Diese erinnert sinngemäß etwas an PowerPoint und ermöglicht Anwendern, Formulare und Workflows zu designen. Das bedeutet hier werden “Screens” zusammengeklickt und Eigenschaften eingestellt und zwar ganz ohne programmieren.

Vielleicht haben es manche Developer schon bemerkt: In Wahrheit stellen die PowerApps die Weiterentwicklung von “Project Siena” dar (Details zu Project Siena siehe Project Siena Is Alive and Well!). Der Codename lautete übrigens “Project Kratos”.

Wie funktionieren PowerApps?

Die Idee ist grundsätzlich recht einfach: Es gibt eine Datenquelle (in der Cloud), wofür mit dem PowerApps Tool eine PowerApp “App” erstellt wird. Technisch gesehen ist der Output des Designers eine HTML und Javascript-“App”, auf die Ersteller jedoch keinen direkten Einfluss haben (den generierten Quellcode umschreiben ist nicht möglich, bzw. zu mindestens nicht angedacht). Diese App wird über den PowerApps-Publish Mechanismus innerhalb des Unternehmens für berechtigte Benutzer als Azure App-Service bereitgestellt.

image

Wer sich nun fragt: Wie kommt denn eine PowerApp auf mein Smartphone und wie funktioniert sie dort? Nun Microsoft hat sich hierfür einen Trick ausgedacht: Auf dem Zielgerät wird eine eigene App – nämlich die “PowerApp” – installiert. Diese arbeitet sozusagen als Container für die eigenen Apps. Das bedeutet, auf Smartphones muss nur einmalig die PowerApp installiert werden. Die “Apps” dazu kommen durch die Benutzer-Authentifizierung auf das Gerät.

Das zeigt natürlich auch, dass PowerApps nicht für anonyme User gedacht sind. Eine Umfrage-App, ein Legacy-Webformular o.ä. kann so also nicht umgesetzt werden. Use Cases sind Apps für Unternehmen mit authentifizierten (AAD)-Usern.

Ein wichtiger Aspekt ist, dass PowerApps auch ge-share-t werden können. Der Ersteller kann so also bestimmen, welche User die eigene App erhalten.

Die Zielgruppe von PowerApps sind vornehmlich IT-Pros und PowerUser, sprich Anwender, die über Datenquellen Bescheid wissen und Apps dafür zusammenbauen. Die Endanwender erhalten dann die fertige PowerApp um mit den so visualisierten Daten zu arbeiten.

Die PowerApps Architektur sieht so aus (Screenshot aus dem YouTube Video Native Enterprise Apps with PowerApps).

image

Weitere Infos gibt es in PowerApps documentation und in Azure Documentation Articles.

Die Datenquellen

Der “Treibstoff” für PowerApps sind natürlich die verfügbaren Daten. Es gibt bereits eine Vielzahl von Data Sources für PowerApps, es werden ständig mehr. Um nur einige zu nennen und zu zeigen:

  • Office 365
  • Dynamics CRM
  • Salesforce
  • Dropbox
  • OneDrive
  • SharePoint Online
  • On-premises systems including SharePoint (folgt)
  • SQL Server
  • Oracle Databases
  • SAP
  • facebook
  • Twitter
  • MailChimp
  • GitHub
  • Azure Blob Storage
  • ..und natürlich eigene Datenquellen, dazu später mehr.
image

Die PowerApp Applikation

…gibt es in den Stores: Windows App, iOS App, Android App
Für Windows Phone gibt es dzt. noch keine App…

image

Hinweis: Die PowerApp wird es in Zukunft auch im Web geben, dann wird keine lokale Installation mehr benötigt, war auf der Build zu hören. Zeitrahmen dafür gibt es jedoch noch keinen, die existierende App erfüllt aber ihren Zweck.

Eine PowerApp erstellen

Nach der Installation kann die eigene PowerApp zusammengeklickt werden. Wie das funktioniert, beschreiben und zeigen diese Artikel Schritt-für-Schritt:

Beim Erstellen kann eine “Blank app” oder eine App aus einem “App Template” ausgewählt werden. Der ganze Vorgang ist wirklich einfach (wenn nicht ab und zu Fehler kommen, der Status “Preview” ist zutreffend…).

image

Bei Auswahl eines Templates (hier etwa “ServiceDesk”) wird auch gleich eine Sample-Datasource in Form eines Excel-Files verwendet, die dann etwa im eigenen OneDrive zentral bereit liegt. Das ist sehr fein, denn so sieht man bereits Daten und kann leichter damit arbeiten.

image

Das, was etwa in PowerPoint “Pages” sind, sind in PowerApps die “Screens”. So wird Formular für Formular entwickelt. Jedes Objekt besitzt Properties (wie etwa Layout, Content usw.). Die “Formelzeile” ermöglicht selbst einfache “Regeln” zu definieren, das Ganze erinnert etwas an Access-Formulare, siehe etwa Formula reference. In den Actions können je nach Objekt eben bestimmte Aktionen erfolgen.

image

Die Komplexität?

In PowerApps selbst kann nicht “programmiert” werden, es gibt auch kein Scripting oder Makros. Wie oben erwähnt, sind die Zielgruppe Power-User und IT-Admins, die nicht “coden” müssen.

Umgekehrt ergibt das natürlich nur eine eingeschränkte Client-Funktionalität: Simple CRUD (Create, Update, Delete) Methoden und Verknüpfungen von Ausdrücken sind möglich. Derzeit sind auch etwa keine Lookups aus SPO Listen möglich, also keine komplexen, sondern nur simple Datentypen.

Das ergibt zum derzeitigen Stand eine rasche und einfache Bearbeitung von Listen und “Items” sowie einfache (Work)flows und Visualisierungen. Das Product Team arbeitet jedoch an einer Vielzahl an Erweiterungen und es ist zu erwarten, dass sich die PowerApps nach und nach weiterentwickeln werden.

Für Developer

Natürlich benötigt man auch für PowerApps Developer, und zwar wenn die Datenquelle eine eigene “custom” Data Source ist. Dann muss ein Entwickler ein OData Service für die CRUD Operationen (und ggf. Authentifizierung dafür, Push Notifications usw.) bereitstellen. Dieses Interface können die PowerApps User dann in weiterer Folge verwenden. Der Weg im Unternehmen geht über Azure, wo eigene Interfaces als Managed APIs definiert werden können.

Die folgende Grafik aus dem YouTube Video Native Enterprise Apps with PowerApps zeigt das Konzept. Natürlich gibt es REST APIs und Mobile SDKs für einzelne Services.

image

(Mein) Fazit

PowerApps werden in (naher) Zukunft eine Funktionalität bereitstellen die es ermöglicht, einfache Aufgaben wie das Erstellen und Manipulieren von zentralen Datenquellen innerhalb von Unternehmen leicht umzusetzen – ohne dass Entwickler dafür (Web)formulare bauen müssen.

Die Existenz von Interfaces und eine zentrale Datenquelle (in der Cloud oder im eigenen Unternehmen) sind Voraussetzung. Microsoft bietet bereits eine Vielzahl an Interfaces für Standard-Datenquellen an. Für eigene Interfaces werden nach wie vor Developer gebraucht. Und natürlich laufen PowerApps auf den AppServices in Azure, verwenden AAD Authentifizierung und LogicApps… Azure ist also eine weitere Voraussetzung.

Auch wenn es von Microsoft so niemals angekündigt wurde, werden die PowerApps in der Community oft als InfoPath Nachfolger gehandelt. Das mag aus meiner Sicht in manchen Aspekten Sinn machen, jedoch ist das Konzept ganz anders. Umgekehrt können wir wohl sicher damit rechnen, dass PowerApps in vielen Bereichen Einzug in das Ökosystem der Microsoft (Office) Services halten wird…

Ganz klar ist jedenfalls, dass PowerApps eine coole Möglichkeit sind, Daten auf allerlei Geräten (vernünftig) in Apps mit repsonsive Design zu bearbeiten – SharePoint Anwender, die versucht haben, eine Liste auf einem Smartphone zu öffnen, wissen, was ich meine.

Microsoft wird PowerApps mit den anderen (neuen) Azure Services Flow, Azure LogicApps, Azure Functions, Power-BI und Co. kombinieren und sie zu einem kombinierten Teil von Azure und Office 365 machen.

Weitere Erfahrungen mit PowerApps und wie man selbst Interfaces für PowerApps entwickelt, werde ich nach und nach posten. Dieser Artikel stellt eine kleine Einführung in das Thema dar. Ich hoffe, ich habe euer Interesse für PowerApps geweckt.

Manfred Steyer: Slides and Samples from my Talk about Entity Framework Core 1 at SDD in London 2016

Below, the Slides and Samples from my Talk about Entity Framework Core 1 at SDD in London 2016:



Manfred Steyer: Slides and Samples from my Deep Dive about Web APIs with ASP.NET at SDD London 2016

Below, the Slides and Samples from my Deep Dive about Web APIs with ASP.NET at SDD London 2016:



Manfred Steyer: Slides and Samples from my Talk about Migrating to Angular 2 at SDD 2016

Below, the Slides and Samples for my Talk about Migrating to Angular 2 at SSD 2016:




Manfred Steyer: Slides and Samples from my Talk about Angular 2 at SDD London 2016

Below, the Slides and Samples for my Talk about Angular 2 at SSD London 2016:




Sven Hubert: New release of TFS ASAP for TFS 2015 Update 2.1

We are proud to present the new release of our TFS Automated Servicing and Administration Platform (TFS ASAP). Besides some minor bug fixes, this version supports the update 2.1 of Microsoft Team Foundation Server 2015. In addition, there are some smaller features which will make your daily business a bit easier.

First of all, there is the option of defining a custom reason for state changes. This is one of the most wanted features in our backlog. It took a really long time to get it into our product, but now it’s here! To define a reason for the state change, the workitem field for reasons has to be defined. By default, you should use the System.Reason field, but it is also possible to define a custom field for some other comments which are related to a state change.

The reason itself is an attribute inside of the state configuration. If you are using the System.Reason field, make sure that your custom reason is defined for all transition into the desired state in your process template. But don’t panic – if the reason is not valid for the transition the default value will be set.

Configuration of State Aggregation Automation

Configuration of State Aggregation Automation

 

Second, we like to announce that there are two new default rules for state aggregation in CMMI process templates. The existing aggregation is replaced by these rules. The first rule All children are resolved or closed sets the state of the parent element to Resolved if all of its children are Resolved or Closed. In contrast to the former rule, it does not handle the transition back to Active. Therefore, the new rule Any child is active is provided. It does not only set the parent from Resolved to Active if one child is „moved back“. It also sets the parent from Proposed to Active when the team starts to work on the first child item. As this new rule is not specific for one work item type, it guarantees a consistent backlog. If the first Task is set to Active the whole hierarchy will be updated an at the end also your related Epic will be set to Active.

New State Aggregation Rules

New State Aggregation Rules

 

Finally, we implemented the basic infrastructure for automations based on build completion events. There is no common use case right now, but we are offering the possibility to develop your own automations. The Base Build Completion Automation is the perfect start for a custom automation as it supports XAML Build Completion Event and JSON Build Completion Event. So no matter if you are using the new Team Build or XAML Builds, TFS ASAP can handle it.

All features are available for TFS 2015 RTM and all updates. For further Information about TFS ASAP please refer to www.tfsasap.com or contact us at support@tfsasap.com.

 

codefest.at [MS]: DevOps Training (mit praktischen Übungen) für Microsoft Partner

clip_image002

     

Software engineering practices have changed drastically in the last few years. Agile practices, DevOps, Cloud Computing, Open Source and similar developments have proven their effectiveness. Microsoft’s platforms for software development and cloud computing have also embraced these concepts and are at the leading edge in their domain.

Microsoft Austria offers a free 2-day training to qualifying Partners where you can deepen your knowledge on how software development works and has evolved with Microsoft’s tools and supported languages.

   

 

Date & Time
20. & 21. June 2016, 9am-5pm

Microsoft Office, Am Euro Platz 3, 1120 Wien, Room Forum A+B

Apply here – preference will be given to Microsoft Gold/Silver Certified Partner registrations (AppDev, Cloud & ALM competency), vacant places will be assigned on a frist come first serve basis to all other registrations starting two weeks before the training, please wait for your confirmation to attend the training (ONLY confirmed attendees can participate!)

         

Based on a consistent sample, you will learn how to

  • setup a development environment for a modern SPA web application with the latest versions of
    Visual Studio and Visual Studio Team Services,
  • develop cross-platform RESTful web APIs with C#, .NET Core and ASP.NET Core,
  • benefit from the latest developments in the Visual Studio C# IDE (e.g. PerfTips, live code analysis, CodeLense, diagnostic tools, etc.),
  • integrate modern front-end development frameworks and languages like Angular 2 and TypeScript
    in Visual Studio,
  • use cross-platform build- and test-automation tools like Visual Studio Web and Load Tests, VS Team Services, Gulp, xUnit and Jasmine to automate your build- and quality assurance processes,
  • create highly available and secure environments for your web APIs and web applications in Microsoft Azure with Azure Resource Manager (ARM),
  • setup a multi-stage (dev/test/prod) environment in Azure App Services,
  • learn about the advantages of the upcoming container technology Docker and
  • automate deployment to Microsoft Azure with Visual Studio Release Management.

Further information:

   
Training language: German

Target audience:

  • Software Developers
  • ALM/DevOps consultants
Session level: 300

Speaker: Rainer Stropek (MVP)

Training format:

  • 60% presentations with embedded coding demos
  • 40% hands-on time
 
   

Download additional details (prerequisites etc.) here

   

   

Gerwald Oberleitner
DX, Microsoft Österreich GmbH

P.S. don’t miss to join our ALM and DevOps Yammer network (for customers and partners) and our dedicated Yammer partner group.

   

Sven Hubert: Qualität als Konzept

Ein sinnvolles Ziel professionellen Arbeitens ist es, Qualität anzustreben – sowohl im Ergebnis wie auch auf dem Weg dorthin: Ein qualitativ hochwertiges Ergebnis dokumentiert die Beherrschung des Lösungsraumes sowie der eingesetzten Fertigkeiten und Werkzeuge. Eine qualitativ hochwertige Software tut nicht nur irgendwie. Vielmehr unterstützt sie den Kunden nach allen Regeln der Kunst. Wer in der Vergangenheit eine solche Qualität demonstriert hat, genießt in Zukunft einen Vertrauensvorschuss des Kunden (den zu bestätigen das Ziel sein muss).

Um Qualität liefern zu können, muss Qualität auch gelebt werden. Eine Antwort auf die Frage, ab wann Qualität als zentraler Aspekt im Prozess verankert sein sollte, liefert die Definition von Qualität nach DIN EN ISO 9000:2015. Die ISO-Norm definiert Qualität als den „Grad, in dem ein Satz inhärenter Merkmale Anforderungen erfüllt“. Qualität erwächst demnach aus guten Anforderungen. Auf Basis der Anforderungen wird Qualität in der Umsetzung berücksichtigt und schließlich vorab im Test bzw. zur Laufzeit durch Monitoring sichergestellt.

Aus Basis dieser Überlegungen ergeben sich für den Softwareentwicklungsprozess vier Kernbereiche, welche für eine hohe Qualität ausschlaggebend sind:

  1. Die Anforderungsanalyse
  2. Die Entwicklung
  3. Das Testing
  4. Das Monitoring

Qualität in der Anforderungsanalyse

Einem Kunden (oder dem Markt allgemein) genau das Produkt zu liefern, welches er tatsächlich benötigt, ist schwierig. Der Gedanke „Kommunikation ist der Anfang aller Missverständnisse“ bringt dabei eines der beiden Hauptprobleme auf den Punkt: Zunächst muss der Kunde wissen, was er tatsächlich braucht. Dieses Bedürfnis muss der Analyst ermitteln. Der Analyst muss dem Entwickler das Bedürfnis korrekt übersetzen… (Um eine Vorstellung des Ergebnisses dieser Kommunikationskette ohne geeignete Qualitätssicherungsmaßnahmen zu bekommen, bietet sich das Kinderspiel Stille Post an.)

Das zweite Hauptproblem stellt die Zugänglichkeit dar: Die relevanten Informationen zu einer Anforderung müssen jederzeit leicht zugänglich und in hilfreicher Form zur Verfügung stehen. Andernfalls können sie nicht zielführend einfließen.

Qualität in der Entwicklung

Im Bereich der Entwicklung tummelt sich eine Unendlichkeit an Optionen, welche sich mit dem Messen oder Verbessern von Codequalität beschäftigen. Einige Beispiele sind

  • Aktivitäten wie Test-Driven-Developement oder Pair Programming,
  • Tools wie SonarQube zum Messen und Visualisieren von technischer Schuld sowie
  • Frameworks wie NUnit zum Schreiben von Tests.

Die Kunst der Qualitätssicherung in der Entwicklung besteht häufig darin, eine Beschränkung und Vereinheitlichung festzulegen. Welche Optionen werden durchgeführt und wie werden deren Ergebnisse nachhaltig berücksichtigt?

Qualität durch Testing

Häufig wird bei dem Begriff Qualitätssicherung zunächst an Testing gedacht. Dieser Gedanke entspricht jedoch nur der halben Wahrheit. Es ist richtig, dass das Testing den Kreis der Anforderungen schließt. Das entwickelte Produkt wird gegen die Spezifikationen der Anforderungen (funktional sowie nicht-funktional) abgeglichen.

Es gilt jedoch der vielzitierte Gedanke „Qualität kann nicht in ein System hineingetestet werden“: Nur auf Basis qualitativ hochwertiger Anforderungen und einer anschließenden qualitativ hochwertigen Entwicklung kann durch Testing eine hohe Qualität sichergestellt werden. Mit anderen Worten: „Shit in, shit out“.

Wie im Bereich der Entwicklung, so gibt es auch im Bereich des Testings eine Vielzahl an (teilweise denselben) Optionen. Es gilt, den Dschungel der Optionen auf das zu beschränken, was die zur Verfügung stehenden Ressourcen optimale Ergebnisse erzielen lässt.

Qualität durch Monitoring

Eine vollständige Testabdeckung ist utopisch. Nicht alles kann im Vorfeld bedacht und getestet werden. Es kommt stets der Zeitpunkt, da weitere Testaufwände nicht mehr in Relation zum erzielten Nutzen stehen. Es ist wichtig, diesen Zeitpunkt abzupassen und das Testing im Vorfeld durch Monitoring im Livebetrieb zu ergänzen. Durch ein gutes Monitoring der richtigen Kennzahlen mit den richtigen Tools ist es möglich, bei den ersten Anzeichen von Problemen Gegenmaßnahmen einzuleiten.

Fazit

Qualität erwächst aus den Qualitätssicherungsmaßnahmen im gesamten Application LifeCycle: Von der ersten Anforderungsaufnahme bis hin zum Livebetrieb wird die Qualität nachhaltig geprägt. Genügt die Qualität bereits in einer vorherigen Stufe nicht den Ansprüchen, so wird es nahezu unmöglich, sie auf einer nachfolgenden Stufe noch anzuheben.

Ausblick

In den kommenden Monaten werden wir unter dem Titel „Qualität als Konzept“ regelmäßig Blogbeiträge zu eben diesem Thema veröffentlichen. Wir wollen für den zentralen Begriff der Qualität sensibilisieren. Wir werden Best Practices, praxiserprobte Tools sowie Frameworks vorstellen, die wir durch unsere Arbeit in über 450 Kundenprojekten gemeistert haben, um die Qualität in der Softwareentwicklung nachhaltig zu steigern.

codefest.at [MS]: Xamarin – Info-Update nach der //build

Nach der großen Ankündigung auf der //build und der Verfügbarkeit von Xamarin ohne Zusatzkosten, für alle Visual Studio Kunden, anbei einige Informationen die in der, nach wie vor anhaltenden, Begeisterung etwas untergegangen sein könnten.

Gibt es einen Unterschied zwischen Xamarin bei Visual Studio Professional mit MSDN und Visual Studio Enterprise mit MSDN ?
Ja, den gibt es. Xamarin ist ebenfalls in einer Professional und Enterprise Edition verfügbar und auch die MSDN fügt ein unterschiedliches Leistungsportfolio dazu. Anbei Auszugsweise einige Unterschiede:

Xamarin Professional Xamarin Enterprise
Individuelle Entwickler Entwickler die in Unternehmen oder in Teams arbeiten
X-Plattform Entwicklungsumgebung für Windows (UWP), iOS, Android, ….

X-Plattform Entwicklungsumgebung für Windows (UWP), iOS, Android, ….
+
Live Inspector
Profiler
Embedded Assemblies
.. und mehr im Backlog!

MSDN: Ausgewählte Xamarin University Inhalte (on-demand), Azure Guthaben MSDN: 25% Xamarin Test Cloud Rabatt, Xamarin University Inhalte (on-demand), Azure Guthaben

Was ist die Xamarin Test Cloud ?
Die Xamarin Test Cloud und das dazugehörige Testframework bieten die Möglichkeit Ihre Applikation auf echten Geräten zu Testen. Dazu werden in einem Rechenzentrum mehrere tausend Gerätetypen angeboten die für Tests genutzt werden können sowie eine in Visual Studio Team Services integrierte oder Web-basierte Verwaltung. Um ca. 75% der bei Konsumenten eingesetzten Geräte zu testen müssen über 1.100 unterschiedliche Geräte berücksichtig werden – ohne Automatisierung ein unmögliches Szenario.

Wie sieht die Strategie im Insights-Bereich aus?
Das durch die Akquisition mit übernommene Xamarin Insights wird mit seiner Funktionalität in die Microsoft Werkezuge übernommen und Teil des HockeyApp Teams.
Für alle Client-seitigen Analysen, Crash-Reports, Telemetrie sowie auch das Ausrollen von Applikationen (Beta-Store, Release Management, Feedback) ist HockeyApp die Technologie der Wahl. HockeyApp bietet für alle mobilen Plattformen eine Integration an.
Für alle Server-seitigen Daten & Analysen sowie Webanwendungen wird Visual Studio Application Insights als optimiertes Werkzeug angeboten. 

image

Mit beiden Werkzeugen (Test Cloud und HockeyApp) und den Visual Studio Team Services lassen sich damit auch im mobilen Bereich voll automatisierte DevOps oder Continuous Integration/Continuous Delivery Projekte umsetzen.

Gibt es eine Veranstaltung wo ich mehr erfahren kann?
Infoveranstaltung zu Xamarin von TechTalk: http://techtalk.at/trainings/mobile-development-in-net-mit-xamarin/
TechTalk ist sowohl Gold Certified Microsoft Partner (ALM, Application Development, ..) und war vor der Übernahme von Xamarin durch Microsoft auch unabhängig davon Xamarin Partner.

Kay Giza [MS]: Visual Studio Code 1.0 - Unterlagen zur Lunch-Session auf der dotnet Cologne 2016

Letzte Woche hat die dotnet Cologne 2016 stattgefunden. Wir von Microsoft waren vor Ort und möchten uns für die zahlreichen Gespräche, Diskussionen und den Austausch mit Euch am Stand bedanken. Vielen Dank auch an die zahlreichen Besucher unserer Sessions - wir haben uns sehr gefreut. Ich hatte um 13.40 Uhr eine Lunch-Session zu Visual Studio Code zusammen mit... [... mehr in diesem Blogeintrag auf Giza-Blog.de]


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

Kay Giza [MS]: Aufzeichnung und Rueckblick: 4 Sonderausgaben des DrWindows.de OneCast: Developer Edition

In den letzten Wochen haben wir zusammen mit Dr. Windows vier Spezialausgaben der OneCast-Webinar-Serie gesendet. Vielen Dank an Martin und Marijan von Dr. Windows für die super Zusammenarbeit und die gemeinsame Umsetzung der Idee dazu. Nachdem die erste Folge gelaufen ist, haben wir nach Rückmeldungen gefragt, ob das Thema Developer und App-Entwicklung interessant ist und wir mehr davon machen sollen. Das Feedback war überwältigend positiv, so dass wir noch drei weitere Folgen nachgelegt haben. Alle Referenten waren - und das möchte ich ausdrücklich noch mal erwähnen, sehr positiv überrascht, wie interaktiv es während der Sendungen zuging. Sehr viele Fragen erreichten uns via Chat und wir bemüht, die meisten auch gleich zu beantworten. Tolle Community dort auf DrWindows.de :-) Die Aufzeichnungen stehen zur Nachschau bereit... [... mehr in diesem Blogeintrag auf Giza-Blog.de]


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

Holger Schwichtenberg: Zielgerade für .NET Core: Release Candidate 2 veröffentlicht

Die RC2-Versionen von .NET Core 1.0, ASP.NET Core 1.0 und Entity Framework Core 1.0 sind verfügbar.

codefest.at [MS]: #Ch9weekly - Einführung in Xamarin

 

 

Jede Woche stellen wir ein interessantes Channel 9 Video für Euch hier zur Verfügung, damit Ihr stets einen Wissensvorsprung haben könnt.

Diese Videoserie gibt einen Einblick in die Welt von Xamarin (cross-plattform developement) ... also wie man mit C# und Visual Studio mobile Applikationen für iOS, Android und Windows Smartphones programmieren kann.

Hier geht's zur gesamten Video-Serie :)

 

Johannes Renatus: AngularJs Draggable Direktive für UI-Bootstrap Modal in TypeScript

In meinen aktuellen AngularJs Projekten verwende ich für das Layout meist Bootstrap und für die JavaScript Umsetzung der Komponenten dann entsprechend UI-Bootstrap. Seit einiger Zeit wird das Projekt auch wieder aktiv weiterentwickelt. Leider werden die Komponenten sehr “einfach” gehalten und setzen nur die Funktionalität um die auch das klassische Bootstrap bietet. Es gibt noch weitere […]

codefest.at [MS]: Build 2016 Redelivery Tour

Das Build 2016 Event ist schon wieder vorbei, jedoch bietet Microsoft ab Ende Mai bis Mitte Juni eine Build Tour an, wo Windows App Developers und ISVs die Möglichkeit erhalten, sich persönlich von den Microsoft Product-Teams über die Highlights der Build 2016 conference informieren zu lassen.

Build Tour ist eine kostenfreie Ein-Tages-Veranstaltung für Software Developer, die tiefer in die neuen Technologien der Build-Konferenz eintauchen wollen.

image

Die schlechte Nachricht vorweg: Die Build Tour hält in Europa nur Station in Amsterdam, Barcelona, Warschau und London und es sind jeweils nur rund 400 Plätze verfügbar. Manche Events sind noch verfügbar, andere bereits ausgebucht, hier der Terminplan, falls jemand Lust auf einen Kurztrip mit Build-Flair hat:

Die guten Nachrichten: Die Sessions der Build 2016 conference sind auf Channel9 online verfügbar...

image

…und die zweite gute Nachricht: Wie auch im letzten Jahr wird es im Juni ein Community-Event bei Microsoft Österreich geben, wo die wichtigsten Themen der //build für Entwickler, IT-Spezialisten und Open Source Enthusiasten präsentiert werden. Details hierzu folgen.

Bis dahin, viel Spaß mit den vielen neuen Themen der Build!

Manfred Steyer: Unterlagen von Session zu Web APIs mit ASP.NET Core von der dotnet cologne 2016 #dncgn in Köln

Manfred Steyer: Unterlagen zu Vortrag über Angular 2 bei dotnet cologne #dncgn 2016 in Kölln

Nachfolgend die Unterlagen zu meinem Vortrag über Angular 2 bei dotnet cologne #dncgn 2016 in Kölln:


Code-Inside Blog: Copy to clipboard with Javascript

Clipboard? Current state of the art…

I think everybody knows the clipboard. The goal is that we can store text inside the users clipboard, so he can just paste it. Most sites uses either Flash or some sort of mini-popup with a pre-selected text inside a textarea.

Both ways are not super user friendly and Flash is definitely done.

Clipboard API?

Currently there are some draft specs for a real clipboard API, but as far as I know, it’s far from done.

The good news: For our use case there is a pretty handy workaround available, which I found on StackOverflow.

The code:

<script>
    function detectIE() {
        var ua = window.navigator.userAgent;

        var msie = ua.indexOf('MSIE ');
        if (msie > 0) {
            // IE 10 or older => return version number
            return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);
        }

        var trident = ua.indexOf('Trident/');
        if (trident > 0) {
            // IE 11 => return version number
            var rv = ua.indexOf('rv:');
            return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);
        }

        // other browser or edge
        return false;
    }

    // source: http://stackoverflow.com/questions/400212/how-do-i-copy-to-the-clipboard-in-javascript
    // enhancement with special case for IEs, otherwise the temp textarea will be visible
    function copyTextToClipboard(text) {
        if (detectIE()) {
            try {
                window.clipboardData.setData('Text', text);
                console.log('Copying text command via IE-setData');
            } catch (err) {
                console.log('Oops, unable to copy via IE-setData');
            }
        }
        else {

            var textArea = document.createElement("textarea");

            //
            //  This styling is an extra step which is likely not required. 
            //
            // Why is it here? To ensure:
            // 1. the element is able to have focus and selection.
            // 2. if element was to flash render it has minimal visual impact.
            // 3. less flakyness with selection and copying which might occur if
            //    the textarea element is not visible.
            //
            // The likelihood is the element won't even render, not even a flash,
            // so some of these are just precautions. 
            // 
            // However in IE the element
            // is visible whilst the popup box asking the user for permission for
            // the web page to copy to the clipboard. To prevent this, we are using 
            // the detectIE workaround.

            // Place in top-left corner of screen regardless of scroll position.
            textArea.style.position = 'fixed';
            textArea.style.top = 0;
            textArea.style.left = 0;

            // Ensure it has a small width and height. Setting to 1px / 1em
            // doesn't work as this gives a negative w/h on some browsers.
            textArea.style.width = '2em';
            textArea.style.height = '2em';

            // We don't need padding, reducing the size if it does flash render.
            textArea.style.padding = 0;

            // Clean up any borders.
            textArea.style.border = 'none';
            textArea.style.outline = 'none';
            textArea.style.boxShadow = 'none';

            // Avoid flash of white box if rendered for any reason.
            textArea.style.background = 'transparent';


            textArea.value = text;

            document.body.appendChild(textArea);

            textArea.select();

            try {
                var successful = document.execCommand('copy');
                var msg = successful ? 'successful' : 'unsuccessful';
                console.log('Copying text command was ' + msg);
            } catch (err) {
                console.log('Oops, unable to copy');
            }

            document.body.removeChild(textArea);
        }

    }
</script>

Usage:

The usage is pretty simple, just call copyToClipboard, e.g.

<button type="button" onclick="copyTextToClipboard('Foobar!')">
	Set Foobar to clipboard
</button>

document.execCommand(‘copy’)

This API is a bit strange, because it only works for visible elements and IE might render a small warning. To get rid of this effect we use a older IE-only API. “document.execCommand” is not limited to copy - there are some nice ideas around it. The Mozilla site has a large documentation about this function.

A full demo is available on JSFiddle and the code is stored on GitHub

Hope this helps.

Sven Hubert: Die Session Videos der Visual Studios ALM Days sind online

In diesem Jahr standen die ALM Days ganz im Zeichen von DevOps. Nationale und internationale Experten teilten vom 13.-14. April in Köln ihr Wissen und ihre Erfahrungen rund um modernes Application Lifecycle Management. Für alle, die die diesjährigen ALM Days verpasst haben, oder sich die ein oder andere Session noch einmal ansehen möchten, haben wir gute Nachrichten: Alle Vorträge wurden aufgezeichnet und stehen jetzt zur Verfügung. Insbesondere können Sie sich auch die Vorträge der AIT Consultants in Ruhe ansehen:


Benjamin Boost: Boost your Quality – Reviews richtig durchführen

Funktionalität ist alles! Leider nicht – denn ein Software-Produkt von hoher Qualität zeichnet sich durch weitere Merkmale aus. Mit den richtigen Reviews zum passenden Zeitpunkt lassen sich Schwachstellen jedoch frühzeitig erkennen und beheben. Zusätzlich sind Reviews das perfekte Werkzeug um den Wissensaustausch im Entwicklungsteam zu fördern. Doch sind die in vielen Teams bekannten manuellen Reviews das richtige Mittel? Der Vortrag zeigt welche Review-Formen wofür eingesetzt werden und wie diese am effizientesten durchgeführt werden.


Thomas Rümmler: Integration von Anforderungsmanagement in den Entwicklungsprozess mit dem TFS

Anforderungsmanagement ist eine vielseitige, herausfordernde, wesentliche Disziplin im Entwicklungsprozess. Dennoch wird diese häufig stiefmütterlich behandelt.  In Zeiten agiler Entwicklungsmodelle sind eine gute Methodik sowie ein wohldefiniertes Datenmodell zur Anforderungsverwaltung unabdingbar. Dies dient hoher Qualität sowie durchgängiger Nachverfolgbarkeit der Anforderungen durch den gesamten Entwicklungsprozess. Außerdem hat das konkrete Szenario erheblichen Einfluss auf den Gesamtprozess, da die Entwicklung einer Webanwendung eben nicht das gleich ist wie die Erstellung eines Produktes aus Hard- und Software.


Nico Orschel & Christian Schlag: TFS-Upgrade leichtgemacht

Die on-premise Variante des Team Foundation Servers wird in regelmäßigen Abständen – nahezu quartalsweise – mit neuen Features aktualisiert. Unternehmen die einen eigenen TFS betreiben stehen vor der Herausforderung ihre Infrastruktur bei geringer Downtime und kalkulierbaren Risiko zu aktualisieren. Je nach Branche und Vorgaben sind dabei Abnahmetests und Validierungen des aktualisierten Systems notwendig. In der Session werden notwendige Aufgaben und mögliche Lösungen aufgezeigt, damit Sie mit dem Updatezyklus von Microsoft gefahrlos Schritt halten können.


Nico Orschel & Christian Schlag: Release Management

Release Management vNext ist einer der Schlagwörter wenn es um TFS in der Cloud (VSTS) geht. Seit Update 2 ist es auch für den TFS 2015 verfügbar. Genau die richtige Zeit um sich mit der Plattform genauer auseinanderzusetzen. Im Vortrag berichten Marc und Nico über die Erfahrungen der letzten Monaten mit Release Management in VSTS sowie den dazugehörigen Do’s und Dont’s.


Nico Orschel: Alternativen zu Visual Studio Testtools: Wann lohnt es sich auch mal fremdzugehen?

Mittlerweile haben sich im VS Umfeld immer mehr Nicht-MSTest Testframeworks etabliert. Im Vortrag wollen wir auf mögliche Alternativen zu MS Test und CodedUI eingehen (z.B. Selenium, Ranorex, Proractor, …). Es geht dabei um Vor-/Nachteile, sinnvolle Szenarien und wie man es geschickt in die TFS Werkzeugwelt integrieren kann, sodass man das Beste aus beiden Welten bekommen kann.

Holger Schwichtenberg: Zweite Vorabversion von Visual Studio Version 15

Microsoft hat eine zweite Vorschauversion der nächsten Version seiner Entwicklungsumgebung Visual Studio veröffentlicht. Die interne Versionsnummer ist 15, der Produktname wird mutmaßlich Visual Studio 2016 sein.

Sven Hubert: Mein Tool für die Insel – dotnetpro Artikel

In der aktuellen Ausgabe der dotnetpro (05/2016) ist der Sammelartikel „Mein Tool für die Insel“ mit unserer Beteiligung erschienen.
Erfahren Sie, welche Tools die dotnetpro-Autoren besonders gerne in ihrem Alltag einsetzen und welche Vorteile Ihnen diese Tools bieten.

Kay Giza [MS]: Microsoft auf der dotnet Cologne 2016 - wir freuen uns!

Auch dieses Jahr sind wir von Microsoft mit Freude wieder bei der dotnet Cologne 2016 dabei. Wir freuen uns diese Woche Freitag (13.05.2016) wieder in Köln dabei zu sein, man findet uns mit unserem Stand im Haus 7 direkt bei der Registrierung. Wir bringen nicht nur 5 Kollegen von Microsoft mit und sind gespannt auf den regen Austausch und die Diskussionen, sondern wir bringen auch einen Surface Hub... [... mehr in diesem Blogbeitrag auf Giza-Blog.de]


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

Sven Hubert: Performance issues with Exchange EWS API

While creating a REST component to execute some operations against an exchange instance, I noticed some performance issue. Surprisingly the unit/integration-test suite was a lot faster when Fiddler was active.
This seems to be some kind of default problem when developing .NET application as Telerik even added its own page for this scenario.
However, if none of those apply to your situation – as it was the case for me – you should read on to get an idea on how you can debug this further (and you even might have the same problem!).

In fact, if you have such a problem you will need to go down the protocol line and use tools like „Microsoft Network Monitor“ (now replaced with „Microsoft Message Analyzer“) or „Wireshark“ to further diagnose the problem.

In theory those tools are even able to decrypt SSL traffic (in a world where more and more connections are secured!). But all tools either failed to properly decrypt the traffic or even crashed completely. Maybe I just failed to configure them properly. I therefore temporarily disabled SSL on the Exchange server (a test instance of course) to further diagnose the problem.

After finally comparing the outputs with Fiddler running and not running you could see that a lot more requests were made when it was not running. And you could see that those were obviously NTLM Auth (Integrated Security) messages.
But why doesn’t .NET reuse the connection even when Keep-Alive is set properly?

2016-05-09 09_16_37_Initial_cut

Screenshot of captured packages with ‚Microsoft Network Monitor‘ when Fiddler is not active. You can see on the left that many connections are established and closed. On the right in the frame summary you can see the authentication and a single request. Every connection on the left looks like this, which clearly shows that the connection is not kept alive.

2016-05-09 09_16_37_Fiddler_cut

Screenshot of captured packages with ‚Microsoft Network Monitor‘ when Fiddler is active. You can see on the left Fiddler only established and closed a single connection. On the right in the frame summary you can see the authentication followed by additional requests. Those additional requests don’t have the overhead of establishing an authenticated connection.

 

Now with this new information it was quite easy to find the relevant information on stackoverflow.
There is an additional well-hidden property in the .NET framework, called ‚UnsafeAuthenticatedConnectionSharing‘ to control this behavior. It’s actually a security feature to not accidentally re-use connections with a user when the connection is already authenticated for a different user.

In my case this wasn’t a problem as I only used a single service account for the connection. In Fiddler it would work as expected as they seem to manage the connection pool by themselves. After setting the property everything worked in the application as it did with Fiddler. However, you should be careful. If your application needs to authenticate multiple users you might want to use the ‚ConnectionGroupName‘ property in combination with the ‚UnsafeAuthenticatedConnectionSharing‘ to seperate the connections.

2016-05-09 09_16_37_EwsCode

Code-change in the EWS Managed API.

2016-05-09 09_16_37_AfterChange

Finally our application behaves like Fiddler above. You can see that now our Test-Runner only establishes a single connection (left) and uses it for all its requests (right).

Note: For my service I patched the exchange managed EWS API to set the ‚UnsafeAuthenticatedConnectionSharing‘ property as soon as the ‚ConnectionGroupName‘ is used. Let us now if you are interested in the patch.

If you are afraid of the security implications of these changes let us know in the comments (make sure to anonymize your concern) or contact us directly.

Jürgen Gutsch: Finally we got sort of dates

Every time I watch the ASP.NET Community stand-up, I was pretty curious about the delivery date of ASP.NET Core RC2 and RTM. Last Scott Hunter wrote about the status and the road-map of .NET Core and the tooling around it.

  • In the middle of May
    • .NET Core and ASP.NET Core will be RC2
    • The tooling will be in Preview 1
  • By the end of June
    • .NET Core and ASP.NET Core will be RTM
    • The tooling will be in Preview 2

The tooling will be RTM with Visual Studio "15"

Read lot more about it in Scott Hunters post about the Improvements, Schedule and Roadmap of .NET Core.

codefest.at [MS]: #Ch9weekly - Build An Unity Game

 

 

Jede Woche stellen wir ein interessantes Channel 9 Video für Euch hier zur Verfügung, damit Ihr stets einen Wissensvorsprung haben könnt.

In diesem Channel9 Video wird Dir gezeigt, wie Du step-by-step ein Spiel entwickeln kannst mit Unity und Visual Studio.

Manfred Steyer: Redux für OO-Entwickler kurz und bündig erklärt (Deutsche Version)

Please find the English Version of this article here.

Das Muster hinter Redux hilft bei der Strukturierung komplexer GUIs, indem es den gesamten Anwendungszustand in einem zentralen Zustandsbaum (Single Immutable State Tree). Aufgrund seiner funktionalen Natur wirkt es für Entwickler aus der objektorientierten Welt häufig ein wenig mystisch. Allerdings lässt sich Redux unter Nutzung bekannter Muster eigentlich sehr einfach erklären. Nachfolgend unternehme ich mal einen Versuch dazu. Ergänzend dazu findet man ein vollständiges Beispiel für Redux, das Angular 2 und @ngrx/store nutzt, hier. Eine etwas ausführlichere Beschreibung von Redux und @ngrx/store für Angular 2 findet man hingegen in meinem Artikel bei Heise Online.

  • Eine Action entspricht auf dem ersten Blick einem Command. Im Gegensatz zum Command-Muster findet sich jedoch die eigentliche Ausführungslogik in den einzelnen Reducern, welche jeweils für einen Hauptzweig des State Trees eingerichtet wird. Auf diese Weise können mehrere Reducer ein und die selbe Action behandeln.

  • Die Vorteile des Command-Patterns bleiben jedoch erhalten: Einfache Implementierung von Undo/Redo via Stacks, Protokollierung, Batch-Commands etc.

  • Die Kommunikation zwischen Store und Anwendung erfolgt via CQRS. Commands werden durch Actions beschrieben.

  • Zum lesenden Zugriff auf den State Tree kommt i. d. R. das Observer-Muster zum Einsatz. Auf diese Weise kann sich die Anwendung über Änderungen bestimmter Teile des State Trees informieren lassen. Für jeden zu überwachenden Ast richtet die Anwendung einen Observer ein.

  • Um das Erkennen von Änderungen nach dem Ausführen der Reducer zu vereinfachen, kommt ein Immutable State Tree zum Einsatz. Somit muss der Store pro Observer nur eine Prüfung durchführen anstatt den gesamten Teilbaum zu untersuchen.

Redux, like in @rxjs for Angular 2

Manfred Steyer: Redux for object oriented developers succinctly explained (English version)

Nachfolgend die Unterlagen und Beispiele meiner Session zu Web APIs mit ASP.NET Core von der dotnet cologne 2016 #dncgn in Köln:




Kay Giza [MS]: Das Web in 2016! Mit der Gesamtsituation unzufrieden!? Los geht’s! Let's fix the web!

Zugegeben, ich bin an der einen oder anderen Stelle auch nicht besser. Webentwickler und technisch versierte Nutzer wissen es aber schon längst: Vielen Webseiten fehlt es an Benutzerfreundlichkeit und Performance. Meine Kollegen bei Microsoft Deutschland und OnPage.org haben sich zusammengetan und gemeinsam die 20.000 beliebtesten Internetseiten in Deutschland näher unter die Lupe genommen. Herausgekommen ist eine ernüchternde... [... mehr in diesem Blogbeitrag auf Giza-Blog.de]


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

Christian Giesswein: Mit WPF und PRISM Anwendungen modular entwickeln

In Zusammenarbeit mit der Developer Media (http://developer-media.de/?course=mit-prism-software-modular-entwickeln) fand heute unser 2. Seminar zum Thema "Mit WPF und PRISM Anwendungen modular entwickeln" statt.

Dabei wurde über die folgenden Themenbereiche in knapp 120 Minuten geplaudert:

  • Modulare Kopplung
  • Dependency Injection
  • MEF
  • PRISM Bootstrapping
  • PRISM + MEF
  • PRISM Modules
  • PRISM RegionManager

Ich hoffe doch, dass alle Teilnehmer zufrieden waren, da wir auf Grund der knappen Zeit nur einen kurzen Einblick in das Thema nehmen konnten.

Über Feedback jedglicher Art (ob positiv oder auch negativ) freue ich mich natürlich immer: mail[at]software.tirol.

 

Downloads: 

Kay Giza [MS]: Sparen Sie 25 Prozent und upgraden Sie jetzt auf Visual Studio Enterprise 2015 mit MSDN

Wer derzeit Visual Studio Professional oder Test Professional mit einer MSDN Subscription nutzt, der sollte diesen Blogeintrag ein wenig weiterlesen. Für begrenzte Zeit bietet Microsoft einen Rabatt von 25%, wenn man jetzt von Visual Studio Professional oder Test Professional mit MSDN auf Visual Studio Enterprise 2015 mit MSDN umsteigt... [... mehr in diesem Blogeintrag auf Giza-Blog.de]


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

Sven Hubert: New version of AIT Dependency Manager with Visual Studio 2015 support

A new version of our AIT Dependency Manager for Visual Studio 2013 and 2015 is available. Both versions can now retrieve dependencies from Subversion repositories. The version of Visual Studio 2015 also supports build results of TFS 2015 JSON build system.

 


Subversion Integration

Apart from the existing providers Source Control, File Share, Build Result and Binary Repository it is possible with the new version to download files from Subversion repositories. Figure 1 shows the necessary parameters. The URL of the Subversion repository is stored in the field Subversion Path, a locally stored repository can be defined alternatively. Using the Version Spec field the most recent revision (Head revision) or a specific revision can be retrieved. As with the other providers, it is possible to exclude files and directories by providing an Exclude Filter or to select specific files and folders via Include Filter. The path for storing the dependencies can be defined relative as well as absolute in the Output Path field.

image_thumb[3]

Figure 1: Parameters of Subversion provider

JSON build results (Visual Studio 2015 only)

The version 2015 of TFS includes a completely redesigned build system, which brings many new features, such as cross-platform support (Linux, MacOS), a history of the build parameters and configuration via web browser.

The parameters of a build definition of the new build system are stored in a JSON file, which can be compared via the history of a build definition (see Figure 2). The existing build system (based on XAML) is still supported in TFS 2015.

image_thumb[6]

Figure 2: comparison of two JSON files of the new TFS 2015 build system

Build results based on the JSON build system can be referenced with the new provider called Build Result JSON. This provider offers the same configuration options as the original Build Result provider for XAML Builds, with one difference. Since the JSON build system currently does not support Build Quality indicators, this filter has been replaced with a filter for Build Tags, which can be assigned to each build run.

image_thumb[39]image_thumb[40]

Figure 3: Left: Build Result JSON provider; Right: Build Result provider for XAML builds

The provider Build Result for XAML builds remains unchanged, so the backward compatibility is ensured with existing configurations of AIT Dependency Manager.

The new version for Visual Studio is available on the Visual Studio Gallery (Visual Studio 2013 and Visual Studio 2015). The installation package for the build Integration can be downloaded from our website.

friends header

bloggers headline

links header

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