ASP.Net Core

Zum kommenden Oster-Urlaub hatte ich beschlossen mich mit den neuesten .Net Core Technologien zumindest teilweise zu beschäftigen. Hier bin ich leider schon seit 10 Jahren völlig aus dem Geschäft… im Geiste grob bei PHP 4…

Daher habe ich nun eine Demo-Website mit 4 verschiedenen Technologien aufgebaut um mich ein wenig selbst zu trainieren: http://zipcode.depon.net/

Screenshot: http://zipcode.depon.net/

Im Prinzip eine sehr einfache Website, welche eine Datenbank über alle Postleitzahlen beinhaltet und dem Nutzer zur Verfügung stellt:

  • WebAPI über ASP.Net Core Controller:
    • Hier wird eine statische Seite eingeladen, die ein JavaScript (kompiliert aus TypeScript) beinhaltet. Diese lädt die Daten über die Web-API vom Server. (ASP.Net Core Web Controller)
  • Statische Seite über Razor Pages:
    • Dies ist ein klassisches Formular, welches über einen POST-Request eine neue Seite aufbaut. Server-Seitig wird dann über Razor-Pages eine komplett neue Seite geschickt
  • Server-Side Blazor-Pages:
    • Schon etwas freakiger… Im Prinzip eine statische Seite, bei der die Java Script-Events über eine persistente SignalR (WebSockets)-Verbindung zum Server geschickt wird. Der Server aktualisiert daraufhin Teile der Website (Components) und das fertig gerenderte DOM wird dann wieder über die SignalR-Schnittstelle zum Browser geschickt.
  • Client-Side Blazor Pages:
    • Massiv freakig… Hier wird die Razor-Page auf dem Browser in einer WebAssembly gerendert. Der dahinterliegende Code ist in C# geschrieben und in diesem Falle exakt der gleiche Code wie auf der Server-Side. Das WebAssembly enthält auch große Teile des .Net Codes, so dass nahezu alle Funktionen zur Verfügung stehen.
    • Die Daten werden bei Änderung über die WebAPI, wie im ersten Beispiel eingeladen. Die Tabelle wird aber dann nicht per JavaScript (via TypeScript) aufgebaut, sondern in der WebAssembly.
    • Hierbei braucht man überhaupt kein JavaScript mehr schreiben…
    • Allerdings gibt es einen Offset von ~15 MB um die kompilierten .Net Assemblies einzuladen. Hier ist aber noch viel Verbesserung für die Zukunft versprochen.

Der Sourcecode findet sich unter:

datenmeister-new/src/Web at · mbrenn/datenmeister-new · GitHub

F#

Nach längerer Abstinenz neuer Technologien habe ich nun endlich mal wieder Zeit mich in eine neue Technologie einzuarbeiten.

Habe mich für F# entschieden und in den ersten Übungen bin ich doch nicht wenig begeistert. Eine etwas andere Denke ist erforderlich und leider ist die Tool-Unterstützung nicht so schön wie bei C#. Hier nutze ich Rider und dies ist gut.

Das F#-Plugin ist nicht schlecht, aber reicht noch nicht an die Funktionen der C#-Unterstützung heran.

Weiter, weiter immer weiter!

Als Übung versuche ich die Aufgaben des wunderbaren Königsberger Analysis Buch umzusetzen

Unicode und Flaggen

Wollte eben eine EU-Flagge loswerden und habe gemerkt, dass unter Windows keine Flaggen über Unicode abrufbar sind. Weder die europäische, noch die deutsche noch eine andere.

Eine kurze Recherche hat ergeben warum:

https://answers.microsoft.com/en-us/windows/forum/all/flag-emoji/85b163bc-786a-4918-9042-763ccf4b6c05

Country flags aren’t actually a single unicode character, but a combination of unicode characters that are interpreted as a flag. When you receive the country flag equivalent of „US“, it is interpreted as the United States flag. It means that it’s up to each emoji implementation to interpret flag codes, which means that there is a potential PR nightmare to deal with in case a country isn’t recognized internationaly.

Should microsoft decide to recognize the Israelian flag ? The Palestinian flag ? Taiwan flag ? How is Microsoft supposed to decide what flag to display or not if part of a country decides to declare independance ? Some companies have decided to represent all flags, some have decided to display different flags depending on where the user is located, an Microsoft decided to display none.

Kurz gesagt:

  • Es ist hochpolitisch zu definieren, ob nun Taiwan eine Flagge haben soll, die zwischen nationalen Flaggen auftauchen soll. (Erinnert mich auch an folgende Anekdote: https://devblogs.microsoft.com/oldnewthing/20030822-00/?p=42823)
  • Das Unicode-Konsortium zieht den Schwanz ein und hat abstrakte Regional_Indicator_Symbol definiert. Aus der Regional Indicator Symbol-Kombination ‚EU‘ kann das Betriebssystem/Font Renderer nun eine EU-Flagge definieren. Damit ist die Verantwortung an den Implementierer übergeben. (Es können damit auch insgesamt nur 26×26 Flaggen geben)
  • Microsoft hat wohl für sich definiert, dass sie kein Bock drauf haben und keine Meinung vertreten. Daher werden keine Flaggen angezeigt, bzw. es erscheint nur ein kleingeschriebenes EU. Nach dem Motto: Wenn der Spezifizierende keine konkreten Flaggen spezifiziert, dann tun sie es auch nicht.
  • Andere Anbieter, wie WhatsApp, Google oder Apple sind mutiger und zeigen Flaggen an

In meinen Augen könnte Microsoft etwas mutiger sein und alle UN-Nationen bzw. ehemaligen UN-Nationen anzeigen oder ISO 3166-1. Auch drückt das für mich wieder die Unsäglichkeit national-orientierter Politik aus.

Eine Flagge funktioniert aber: 🏳️‍🌈 (neben anderen ’neutralen‘: https://emojipedia.org/flags/).

Hooray!

Bares für Rares

Immer wieder in diversen Podcasts empfohlen, so habe ich es mir tatsächlich mal angetan. Mein Kommentar:

Eine sehr leichtgewichtige Sendung in der eine Person etwas ‚Rares‘ schätzen lässt, eine Geschichte darum erklärt und dann später Raritätenhändlern vorstellt um dieses dann tatsächlich zu verkaufen. Die Geschichten sind nett erzählt und handeln um den Gegenstand selbst, sowie die Geschichte darum… Wie sie zum Beispiel zum Besitzer kam.

Eine sehr ruhige, unlaute und feine Sache.

https://www.zdf.de/show/bares-fuer-rares

2020 … erste Hälfte

Wir haben es geschafft. So hoffe ich es zumindest, dass ihr es auch geschafft habt…
Die erste Hälfte des Jahres 2020 ist seit heute Nacht um und ich muss sagen, es ist ein besonderes Jahr.

Mindestens 15 Wochen Home Office und es wird noch viele Wochen so weiter gehen, keine großen Parties, viel Laufen, wenig Saufen.

Aber man soll auch mal an das Gute denken:
– Ich habe sowenig Geld wie je zuvor ausgegeben
– Ich bin soviel gelaufen, wie nie zuvor

Aber ansonsten ist recht wenig passiert. Ein paar Nostalgie-Spiele wie Zelda (NES) oder Tomb Raider I habe ich durchgespielt… Aber bald erstmal 3 Wochen Urlaub.

Fotos aus Chile

Letztes Jahr im Dezember war ich ja in Chile und im Nachhinein muss ich sagen, dass der Zeitpunkt nicht hätte besser sein können. Zuerst wollte ich wegen der doch scharfen Proteste verschieben, aber besser als zu Virus- und Protest-Zeiten.

Im Großen und Ganzen habe ich die Zeit dort sehr genossen und vor allem hatten wir Sommer im Dezember. Könnte man dauerhaft einführen, wenn der Flug und Aufwand doch nicht so weit wäre… Abgesehen vom umwelttechnischen Desaster.

Anbei nun einfach ein paar Bilder:

Das Ende der Welt in Patagonien…
Pinguine in Patagonien
Santiago de Chile
Tempel der Bahai
Santiago de Chile… eine Großstadt
Brunnen…. sieht man
Polizei und Randalierer im nicht-konstruktiven Dialog unter Tränengas

Die alte Abi-Website 2001

In den tiefen Ordnerstrukturen des Backups habe ich wieder die Website www.schloss2001.de gefunden. Da wir ein 20-jähriges Jahrgangstreffen planen, ist es der richtige Zeitpunkt diese Website wiederzubeleben.

Warum der Post hier? Damit Google die Website wiederfindet.

Bei der Wiederbelebung war ich übrigens ‚technisch‘ sehr amüsiert:

  • Generator MS-Frontpage
  • Umlaute funktionierten nicht. Windows-Codepage statt UTF-8
  • Frames und Framesets… ich bin stark verwundert, dass die Website auch einigermaßen mobile-tauglich ist.
  • Sehr obskures Javascript für die Bilderanimation
  • Die Edge-Developer Tools jammern massiv über Fehler auf der Website, aber es funktioniert.
  • font-Tags, border-Attribute… alles Feinde des modernen Web-Designs

Und ich war glücklich, dass ich dem Apache noch einen neuen Virtual Host beibringen konnte…

Corona – Tag 8

Nun am achten Tag in selbstgewählter sozialer Reduzierung… und mittlerweile muss ich ernsthaft sagen, dass es mich schon ein wenig annervt. Egal, was ich von den ganzen Verordnungen/Verfügungen und Maßnahmen halte, ich werde sie befolgen, in der Hoffnung, dass die Zahl der Infizierten nicht mehr so steil ansteigt, wie sie es zuvor getan hat…

Ich rede noch nicht mit meinen Katzen… Ok, vielleicht ein wenig und es ist bisher die sportlichste Woche gewesen, die ich bisher hatte. Warum? Weil Mittagspause und ich nach 4 Stunden HomeOffice auf dem Bürostuhl und verschiedenen Telkos das Bedürfnis habe mich deutlich zu bewegen.

Wie geht es nun weiter? Große Frage…

Aber eine These zu den „Hamsterkäufen“. Klar, es gibt einige Hamsterkäufe, aber ich habe festgestellt, dass es ja keine Kantine gibt und man jeden Tag zu Hause essen muss. Daher wird sich das Einkaufsverhalten doch massiv verändert haben, man frühstückt zu Hause, man geht nicht mehr in Restaurants, man hat keine Kantine…. Man muss sich vollständig aus dem Supermarkt oder Wochenmarkt ernähren. In meinen Augen auch einer der Gründe für die vielen leeren Regale…

Ok… Klopapier ist ein Hype, allerdings habe ich zuvor auch mehr die Arbeitszeit im Büro hierfür genutzt als zu Hause…. Mensch bleibt Mensch

Bleibt gesund.

DatenMeister 0.0.2.0

Die neue Version des DatenMeister ist verfügbar. Zum Großteil ist dies ein Stabilitäts-Update in dem wesentliche Elemente der Navigationsfindung neu konzipiert worden sind. Sichtbar für den Nutzer sind folgende Punkte:

  • Es werden automatisiert Formulare auf Basis der Objekteigenschaften erzeugt
  • Der gesamte Algorithmus zur Findung der Formulare wurde verbessert
  • Packages sind nun Standard-Elemente für Datenbanken
  • Neue Packages können schnell erstellt werden
  • Bei der Auswahl von Objekt-Typen wird die Eigenschaft der beinhaltenden Collection genutzt um Typen vorzuschlagen
  • HTML-Export im Standard-Format von Listen- und Detailansichten
  • Viele Weitere… (immerhin 119 Commits, was aber natürlich kein Qualitätsmerkmal ist)
  • 350 files changed, 9306 insertions(+), 5380 deletions(-)

Intern wird nun zum Teil auf .Net Core gesetzt, die Anwendung selbst läuft noch auf .Net Framework 4.6.2. Der Wechsel wird in der nächsten Version angeplant.

Wo? http://depon.net/downloads/datenmeister.zip oder https://github.com/mbrenn/datenmeister-new/releases/tag/datenmeister-wpf-v0.0.2.0

Quellcode: https://github.com/mbrenn/datenmeister-new/tree/datenmeister-wpf-v0.0.2.0