Archiv des Autors: PemoAdmin

Wenn ein Windows 10-Update eine .NET-Anwendung zum Absturz bringt und warum .NET Core vielleicht doch eine gute Idee ist

Eigentlich sollte soetwas nicht vorkommen, aber bekanntlich gibt es für alle eine Ausnahme. So auch für den Umstand, dass ein Windows 10-Update dazu führt, dass eine .NET-Anwendung von einem Moment auf den anderen Moment nicht mehr funktioniert (sozusagen der kleine „Albtraum“ für alle Entwickler).

Den Hintergrund beschreibt Bruno Garcia in einem Artikel auf Codeproject sehr anschaulich:

https://www.codeproject.com/Articles/1254949/How-a-Windows-10-Update-May-Have-Broken-Your-NET-2

Hintergrund ist eine Abfrage, die in den Konstruktor der SqlConnection-Klasse im Namespace System.Data.SqlClient eingebaut wurde.

Vor .NET 4.7.2 sah der Code wie folgt aus:

Mit dem Update auf .NET 4.7.2 wurde die Abfrage etwas modifiziert:

Unter bestimmten Umständen kann dieser Code zu einer NullReferenceException führen. Um den Fehler zu beheben, muss der Code angepasst und die Anwendung neu ausgeliefert werden.

Bei .NET Core besitzt jede Anwendung ihre eigene Laufzeitumgebung, so dass ein Windows 10-Zwangsupdate auf einem Anwender-PC keine Folgen hat. Vielleicht ist es daher doch eine gute Idee, dass mit dem kommenden .NET Core 3.0 (2019?) auch WinForms- und WPF-Anwendungen (natürlich nur unter Windows) .NET Core verwenden können.

SQL lernen im Jahr 2018

Wie war das noch einmal mit den SQL-Joins? Es gibt Left und Right Inner Joins und dann einen „normalen“ Join, der offenbar einem Left Inner Join entspricht. Wer wie ich SQL nur alle paar Jahre benötigt (ich habe den subjektiven Eindruck, dass das klassische SQL im Jahr 2018 wieder stark gefragt ist) kann nicht alle Details im Kopf behalten. Früher hätte man eines der zahlreichen SQL-Bücher zu Rate ziehen (und in der Regel erst einmal käuflich erwerben müssen, wie z.B. SQL in 21 Tagen oder SQL Queries for Mere Mortals (bei dem es zu jeder SQL-Anweisung auch eine Abbildung gibt).

Seit Jahren lernt man SQL wie vieles andere auch aus dem Internet konkret man findet die Lösung bei Stackoverflow. Ich nutze SO seit vielen Jahren, doch als ich nach dem Stichwort „SQL Left Outer join compare regular join“ suchte, war selbst ich überrascht angesichts der Fülle an Antworten, die fast keine Wünschen offen lassen und die teilweise mit Illustrationen versehen sind, die so manches Fachbuch für Hochschulen qualitativ aufwerten würden.

Hier ist der Link:

https://stackoverflow.com/questions/38549/what-is-the-difference-between-inner-join-and-outer-join#38578

Besonders faszinierend ist der Umstand, dass die Frage lediglich „What is the difference between “INNER JOIN” and “OUTER JOIN”? lautet. Ohne weitere Erläuterungen oder einem „schon einmal vielen Dank für eure Antworten“. In jedem anderen Forum wäre die Antwort, wenn der Fragesteller glimpflich davon kommen würde, ein „LMGTFY“ (die passenden Sticker gibt es hier: https://lmgtfy.com/stickers.html?s=p&v=16). In der Regel wäre die Antwort in fast jedem anderen Forum eine mehr oder weniger explizite Form von Sarkasmus gepaart mit der einen oder anderen Belehrung oder gar Schmähung. Ganz anders bei SO. Nicht nur, dass die Frage in epischer Länge von den unterschiedlichsten Autoren beantwortet wird, auch die Frage selber wird hochbewertet und besitzt über 4000 (Punkte?).

Ich kann es nur immer wieder wiederholen, Stackoverflow ist ein Phänomen, das nicht nur enorm zur Wissensererwerb unter Entwicklern beigetragen hat, sondern, dass auch die Umgangsformen auf ein bis dahin nie erreichtes Niveau gebracht hat. Alleine dafür muss es eines Tages Weltkulturerbe werden.

WCF-Http-Dienste ohne Administratorberechtigungen starten und URL-Reservierung per PowerShell

Wer einen WCF-Dienst per HTTP/HTTPS verwenden möchte, muss die Service-Anwendung (die, die den Dienst hostet) mit Administratorberechtigungen starten. Der Hintergrund ist, dass die verwendete Http/Https-Adresse beim Systemdienst Https.sys registriert werden muss. Und das ist nur per Administratorberechtigungen möglich.

Wird diese URL-Registrierung vorab ausgeführt, kann der Dienst auch ohne Administratorberechtigung gestartet werden. Das wird in der Befehlszeile entweder per netsh oder per PowerShell durchgeführt.

Bei netsh kommt es darauf an, dass die Adresse mit einem / beendet wird.

Der folgende Befehl registriert eine URL für einen Webservice für alle Benutzer:

Das Ganze ist unter docs.microsoft.com ausführlich beschrieben:

https://docs.microsoft.com/de-de/dotnet/framework/wcf/feature-details/configuring-http-and-https

Wer statt Netsh einen PowerShell-Befehl verwenden möchte (wofür es eigentlich keinen Grund gibt), muss das vielseitige Carbon-Modul verwenden und diese per Install-Module Carbon -AllowClobber -Force eventuell erst einmal von der PowerShell Gallery installieren.

Dann steht das Kommando Grant-HttpUrlPermission zur Verfügung:

http://get-carbon.org/Grant-HttpUrlPermission.html

Derselbe Aufruf wie bei netsh sieht damit wie folgt aus:

Ein Get-HttpUrlAcl listet alle Url-Berechtigungen auf.

Anschließend, und darauf kommt es bei der ganzen Übung ja an, kann der WCF-Service auch ohne Adminberechtigungen gestartet werden.

Lästiger Fehler bei VS 2015 mit einer einfachen Lösung

Folgende Fehlermeldung trat „auf einmal“ auf und hielt sich hartnäckig:


install-package : An error occurred while retrieving package metadata for ‚Microsoft.Identity.Client.1.1.2-preview0008‘ from source ‚C:\Users\Administrator\documents\visual
studio 2015\Projects\AzureADTest\packages‘.
In Zeile:1 Zeichen:1
+ install-package microsoft.graph
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Install-Package], Exception
+ FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand

Die Lösung war einfach und im Grunde naheliegend. Nach Löschen der packages.config-Datei war der Spuk vorbei und es ließe sich wieder Packages installieren.

Es ist Build-Konferenz und keiner geht hin?

Nächste Woche (vom 7. bis 9. Mai 2018) findet die diesjährige Build-Konferenzz in Seattle in den USA statt, in der es wie jedes Jahr um die neuesten Microsoft-Technologien für Entwickler geht. Während die Build 2017 innerhalb weniger Stunden ausverkauft war, sind für die diesjährige Konferenz laut Webseite https://register.build.microsoft.com/register immer noch Karten zu erhalten. Da der Konferenzort mit dem Seattle Convention Center derselbe ist wie letztes Jahr und nicht vergrößert wurde, muss es deutlich weniger Interesse geben.

Folgende Gründe sind für mich dafür verantwortlich:

>Microsoft entfernt sich Jahr zu Jahr mehr von ihrer Kernklientel, deren Treue in den 90er Jahren ein wesentlicher Faktor für den rasanten Aufstieg zum Software-Imperium (und Monopolisten) war.

Die Themen der Build 2018 sind für mich eine Art Gemischtwarenladen. Es gibt ca. 350 Vorträge (also mehr als 80 an einem Tag). Während man die klassischen Entwicklerthemen regelrecht im Konferenzprogramm suchen muss (keine Sorge, „The future of C#“ gibt es auch dieses Jahr), handeln geschätzt 80% alle Vorträge um Azure, Machine Learning, mobile Anwendungen und andere Themen. Teilweise hochinteressant, keine Frage, teilweise auch innovativ und mit Sicherheit relevant für die kommenden Jahre, aber für mich sind es in erster Linie Nischenthemen.

Das Thema Cloud interessiert auch im Jahr 2018 nur eine Minderheit der Entwickler. Microsoft mag mit ihrer Cloud-Plattform Azure Gewinne einfahren (in erster Linie vermutlich durch Office 365 und weil manche aus Bequemlichkeit Dienste nicht kündigen, so dass der Gebührenzähler weiterläuft – mir fällt spontan jemand ein, der schon relativ Geld auf diese Weise verbraten hat), für die Mehrheit der Entwickler ist Azure einfach kein Thema. Visual Studio Online aka VSTS ok, ein paar VMs zum Testen betreiben auch noch, eventuell noch ein paar Dienste ausprobieren, aber ganz auf die Cloud setzen, das eher nicht.

>Microsoft nimmt seine Entwickler immer weniger ernst. Jedes Jahr neue Techniken, Tools und APIs, jedes Jahr Übersichtsvorträge und Vorträge auf 100er und 200er-Level, in denen mit einfachen Beispielen unterlegt ein Einstieg in ein vollkommen neues Thema ermöglicht werden soll.

>Microsoft-Konferenzen wurden über die Jahre immer unattraktiver. Die große Begeisterung für neue Themen lassen sich nicht mehr entfachen. Dazu haben auch gescheiterte Projekte wie Windows 8 (wer erinnert sich noch an den Metro-Hype?), WinRT oder Windows Mobile beigetragen. Von eingestellten Projekten (Silverlight) gar nicht zu reden.
Die Liste der gescheiterten Projekte, die auf einer der PDC-Konferenzen, dem Vorläufer der Build, in den Jahren 2001 bis 2005 groß angekündigt wurden, ist leider lang. Spontan fallen mir Hailstorm, WinFx und M ein.

Wer jahrelang auf die Mix-Konferenzen gegangen ist, auf denen regelmäßig neue Versionen von Silverlight angekündigt wurden, wird sich auch fragen, ob sich der ganze Aufwand gelohnt hat (Las Vegas ist natürlich immer eine Reise wert).

>Mit 2500 USD ist die Teilnahme nicht gerade preiswert. Dafür gibt es nur 3 Tage Konferenz.

>Zeitgleich zur Build findet dieses Jahr die Google-Entwicklerkonferenz IO statt. Ob es Zufall oder Absicht kann ich nicht beurteilen. Klug war diese Entscheidung sicher nicht.

Alles in allem tut Microsoft einiges dafür, dass langjährige Entwickler ganz einfach das Interesse verlieren und eventuell einfach nur noch feststellen „Build? War da was?“

Für mich war die Eröffnungskeynote einer Build in den letzten Jahren immer ein Pflichttermin. Dieses Jahr werde ich einmal reinschauen, allerdings ohne allzu große Erwartungen.

Genial was man alles mit JavaScript machen kann (wenn man ein so fähiger Entwickler ist)

Über die Seite bin ich sehr per Zufall gestoßen als ich nach einem HTML-Ersatz für PowerPoint gesucht hatte (wieder einmal):

https://hakim.se/

Auch wenn ich in den letzten Jahren schon einige beeindruckende Browser-Apps gesehen haben, die Beispiele, die der Entwickler hier zusammengestellt hat, verdienen das Prädikat genial.

Irgendwie genial: Ein Bilderbuch erklärt das Web und die Funktionsweise eines Browsers

Auch wenn ich beim Blättern das Gefühl hatte, das alles schon einmal vor 10 Jahren oder länger in ähnlicher Form (was das Blättern angeht) gesehen zu haben, ist das kleine Bilderbuch, das mit einfachen Worten die Funktionsweise des Webs und eines Browsers erklärt, einfach genial:

http://www.20thingsilearned.com/de-DE/home

Ich bewundere Menschen, die so kreativ sind und etwas mit einer solchen Leichtigkeit und dem gewissen Extra auf den Punkt bringen können.

Mein Besuch auf dem Microsoft Tech Summit 2018 in Frankfurt am Main

Vom 21. bis 22. Februar 2018 fand in Frankfurt am Main der Microsoft Tech Summit 2018 statt.

Alle Infos dazu gibt es hier: https://www.microsoft.com/de-de/techsummit/frankfurtAuf der Webseite stehen auch alle Vorträge zur Verfügung. Allerdings nicht bezogen auf den Summit in Frankfurt, sondern, wie könnte es heutzutage im Zeitalter durchoptimierter Firmenveranstaltungen anders sein, in einem globalen Kontext.

Der Tech Sumnmit 2018 ist oder besser war leider nicht die Neuauflage des sehr guten Technical Summits, der die letzten beiden Jahre jeweils zu Jahresende in Darmstadt stattfand. Der Tech Summit ist eine globale Veranstaltung, die in verschiedenen Städten auf der Welt durchgeführt wird. Leztes Jahr fand er unter dem Namen „Azure Summit“ statt (ich habe darüber berichtet – http://codeinsel.de/?p=130).

Wer die Veranstaltung in Frankfurt verpasst hat (oder wem es so gut gefallen hat, dass er alles noch einmal erleben möchte), könnte in diesem Monat noch in Amsterdam oder Paris teilnehmen. Oder in San Francisco. Warum nicht?

Die Teilnahme am Tech Summit ist kostenlos, das Marketingbudget der Office 365-Abteilung dürfte es möglich gemacht haben. Das wirkt sich natürlich nicht nur auf Getränke und Verpflegung aus (beides war aber gut, wenngleich kein Vergleich zum üppigen Buffet auf dem Technical Summit in Darmstadt), sondern leider auch auf die Inhalte. Diese sind etwas zu stark produktorientiert. Im Mittelpunkt standen daher Themen rund um Office 365 und „the new workplace“. Die Vorträge selber waren aber dann doch auch gutem bis hohem Niveau. Jedenfalls jene, die ich besucht hatte. Am zweiten Tag wurden zahlreiche Workshops angeboten, die sich über einen halben Tag erstreckten. Da ich am ersten Tag erst gegen späten Nachmittag eintraf, hatte ich das meiste bereits verpasst. Der Vortrag zum Thema Verbesserungen bei Windows 10 in Bezug auf Sicherheit war sehr gut.

Die Veranstaltung fand in der Halle 3 der Frankfurter Messe statt. In der großen Halle waren ca. 12 große, runde Zeltkapseln aufgestellt, in denen jeweils ca. 100 Personen Platz hatten. Der Vorteil war, dass jede Veranstaltung einen in sich geschlossenen Bereich darstellte und man in der Halle nichts von den Vorträgen mitbekam und sich an einem der zahlreichen runden Tische entspannt unterhalten oder mit Laptop und Smartphone beschäftigen konnte (es gibt bekanntlich ja immer etwas zu tun). Ein Nachteil war, dass es in den Zelten relativ laut war und wer in der Nähe eines Gebläses saß bereits sehr genau hinhören musste.

Am Abend gab es eine Art „Happy hour“ mit belegten Broten und Getränken. Gegen 20 Uhr war Schluss.

Alles in allem war der Tech Summit informativ. Es gab eine relativ breite Palette von Vorträgen zum Thema Azure Cloud, Office 365 sowie „Randthemen“ wie Windows 10 oder .NET Core. Mit knapp 3.000 Besuchern (die Zahl muss nicht stimmen), war er eher durchschnittlich besucht.

Ein Fazit ist, dass auch wenn es viele vielleicht nicht wahr haben möchten, zu Office 365 und Techniken wie OneDrive oder OneDrive for Business (die Unterschiede kann niemand besser erklären als Hans Brender) auch bei uns nahezu alternativlos sein werden bzw. bereits sind. Wer im Microsoft-Umfeld mit dem Anbieten von Dienstleistungen seinen Lebensunterhalt verdient, tut gut daran sich mit den Themen in naher Zukunft zu beschäftigen. Alleine dafür war der Tech Summit die ideale Gelegenheit.

Bye, bye LightSwitch – ein paar Alternativen (to be continued)

LightSwitch war eine gute Idee, die leider nicht gut genug umgesetzt wurde und am Ende aus mehreren Gründen scheiterte. An der Nachfrage kann es nicht gelegen haben. Im Gegenteil. Wenn ein Entwicklerwerkzeug von Microsoft kommt, besitzt es automatisch einen höheren Stellenwert als wenn der Hersteller eine unbekannte Softwarefirma ist. Es wird automatisch darüber auf allen Kanälen berichtet, Buchverlage kündigen Bücher an bevor das Produkt offiziell erhältlich ist, es gibt Schulungen, es gibt die ersten MPVs, es ist ein Thema auf Konferenzen – kurz, es gibt jede Menge kostenloser Werbung.

Eine Erfolgsgarantie geht damit aber nicht automatisch einher (wer erinnert sich noch an Quick Pascal, mit Microsoft Ende der 80er Jahre für eine kurze Zeit versuchte Turbo Pascal ein wenig Konkurrenz zu machen).

LightSwitch war bis VS 2015 noch ein offizieller Bestandteil von Visual Studio. Sogar als Teil der Community Edition. Beim aktuellen VS 2017 ist es leider nicht mehr dabei.

Kurzer Exkurs: Das Attribut „tot“ besitzt in der Softwarebranche bekanntlich eine eigene Bedeutung. Ich habe des Öfteren die Erfahrung gemacht, dass „tot“ gesagte Produkte eine eigene Dynamik entwickeln (der Brotkasten C64 ist das beste Beispiel. Erst nachdem die Produktion offiziell eingestellt wurde, ging es erst richtig los in der Zubehörszene).

LightSwitch kann also nach wie vor für die Entwicklung von Anwendung verwendet werden, man benötigt aber VS 2015. Wie es mit der kostenlosen Community Editon funktioniert beschreibt (Ex-) LightSwitch-Guru Michael Washington auf seiner Webseite:

http://lightswitchhelpwebsite.com/Blog/tabid/61/EntryId/3286/How-To-Get-Visual-Studio-LightSwitch-For-Free.aspx

Ein Heise-News-Beitrag von Alexander Neumann beschreibt zwar, dass Microsoft die Entwicklung von LightSwitch eingestellt hat, ich konnte aber bei Microsoft selber nichts finden:

https://www.heise.de/developer/meldung/Microsoft-beerdigt-Visual-Studio-LightSwitch-3354139.html

Schade, denn LightSwitch hatte Potential. Gerade für Entwickler. Ich habe sogar zwei (?) Schulungen zu LightSwitch durchgeführt und ein kleines Programmierprojekt umgesetzt. Bei diesem Projekt wurden mir aber auch die Grenzen des Tools deutlich vor Augen geführt oder es lag an mir, dass ich mir einiges vielleicht zu einfach vorgestellt hatte (auch wenn es vielleicht so aussah als müssen man sich nur durch einen Assistenten hindurchklicken, die Umsetzung von m:n-Beziehungen sollte man in einer GUI abbilden können).

Da der Bedarf nach einem RAD-Tool unter Windows immer noch groß sein dürfte, werde ich in diesem Blog-Eintrag verschiedene Alternativen vorstellen, auf die ich oft nur durch Zufall stoße, da sie von kleinen Firmen stammen, die man leicht übersehen kann. Der Blog-Eintrag wird über die kommenden Monate immer mal wieder aktualisiert.

Gleich vorweg: Den 1:1 Ersatz für LightSwitch gibt es nicht. Das ist aber auch nicht weiter tragisch, da der von LightSwitch am Anfang verfolge Ansatz ohne eine Zeile Code zu einer fertigen Anwendung zu kommen ohnehin nur für einen kleinen Teil der LightSwitch-Anwender attraktiv war.

Keine der Alternativen ist kostenlos was ebenfalls positiv ist. Kostenlose Community Editions anzubieten, in der alle Features enthalten sind, kann sich nur ein Konzern mit einem üppig gefüllten Bankkonto leisten.

Xojo


Umfangreiches RAD-Tool mit einer an Visual Basic angelehnten Programmiersprache. Das Tool startete eins unter dem Namen RealBasic und wurde im Laufe seiner Geschichte ein paar Mal umbenannt.

https://www.xojo.com/

RadZen


Interessantes Werkzeug, das auf dem JavaScript-Framework Angular basiert. Auch Michael Washington (der erwähnte LightSwitch-Experte) ist von dem Tool sehr angetan, so dass ich es mir in naher Zukunft einmal anschauen werde:

https://www.radzen.com

Word-Dokumente als Markdown speichern – mit Pandoc und einem kleinen VBA-Makro

Markdown ist eine attraktive Alternative zu HTML, da es sich auf das Wesentliche beschränkt: Die Auszeichnung von Textdokumenten ohne Extras und Formalitäten.

Auch für Buchautoren und allgemein für Autoren technischer Dokumentation ist Markdown eine Alternative. Das macht z.B. die Dokumentation auf GitHub eindrucksvoll deutlich.

Auch wenn man Markdown mit jedem Editor schreiben kann, z.B. auch mit Visual Studio Code, die meisten Autoren schreiben nach wie vor mit Word (Winword). Da Word in der Version 2016 Markdown nicht als Format anbietet (ich bin mir sicher, dass dies mit einer kommenden Version nachgeholt wird), ist aktuell noch etwas Bastelarbeit erforderlich.

Am einfachsten ginge es mit dem Word-Add-In Writage, das als Msi-Datei heruntergeladen und als klassisches COM-Add-In registriert wird. Die Erweiterung befindet sich offenbar immer noch in der Entwicklung. Aktuell ist sie daher kostenlos, sollte es irgendwann eine Version 1.0 geben, könnte sich das eventuell ändern. Writage verwendet den universellen Dokumentkonverter Pandoc, von dem noch die Rede sein wird. Wurde Writage installiert, sollte beim Abspeichern eines Dokuments Markdown als weiteres Format angeboten werden.

Leider hat die Installation bei mir nicht funktioniert, auch wenn sie glatt durchlief. Ein Abspeichern im Markdown-Format war nicht möglich. Das COM-Add-In wurde zwar registriert, aber offenbar kein Programm eingetragen, so dass auch nichts gestartet werden konnte.

Anstatt mich auf die Fehlersuche zu begeben habe ich ein kleines VBA-Makro erstellt, was nichts anderes macht als das aktuelle Dokument mit dem vielseitigen Dokumentkonvertierer Pandoc.exe zu konvertieren. Damit das Makro funktioniert, muss die Windows-Version von Pandoc zunächst von der folgenden Webseite heruntergeladen werden:

https://pandoc.org

Auf der Webseite gibt es zahlreiche Beispiele für den Aufruf von Pandoc in der Befehlszeile.

Das folgende Makro geht weiterhin davon aus, dass sich Pandoc.exe im Verzeichnis C:\Program Files (x86)\Pandoc befindet.

Die Idee ist, dass aus dem Dateinamen des aktuellen Word-Dokuments der Name der Md-Datei gebildet wird, die im selben Verzeichnis abgespeichert wird. War die Konvertierung erfolgreich, wird eine Meldung ausgegeben.

Wer VBA kennt, weiß, dass diese „Programmiersprache“ ihre Eigenheiten besitzt. Aber man kommt zum Ziel und darauf kommt es an. Man darf sich lediglich noicht von diversen Eigenheiten davon abbringen lassen oder gar entnervt aufgeben (auch zu VBA enthält Stackoverflow jede Menge Fragen mit teilweise sehr ausführlichen Antworten – ehrlich gesagt, sehr viel einfacher kann bei SO nichts für seine Reputation tun;)

Das folgende kleine Makro konvertiert das aktuelle Dokument per Paradoc in das Md-Format. Es wird in ein Modul eingegeben, das zur Dokumentvorlagendatei hinzugefügt wurde.