entwickler.de https://entwickler.de PHP, JavaScript, Windows Development Wed, 21 Aug 2019 08:59:57 +0000 de-DE hourly 1 https://wordpress.org/?v=4.8.3 Developers for Future: Auch Coden zerstört den Planeten https://entwickler.de/online/development/developer-for-future-579905044.html https://entwickler.de/online/development/developer-for-future-579905044.html#respond Wed, 21 Aug 2019 08:54:31 +0000 https://entwickler.de/?p=579905044 Es begann als Streik für den Klimaschutz und hat sich inzwischen zu einer der prägnantesten, weltweiten Bewegungen entwickelt - die Fridays For Future. Inzwischen sind es jedoch nicht nur Schüler, die klimapolitisch aktiv werden, auch andere Berufsgruppen sind in den Mitstreik getreten - wie z. B. der Entwickler Maximilian Berghoff mit der Gruppe "Developers for future".

Der Beitrag Developers for Future: Auch Coden zerstört den Planeten ist auf entwickler.de erschienen.

]]>
Es begann als Streik für den Klimaschutz und hat sich inzwischen zu einer der prägnantesten, weltweiten Bewegungen entwickelt - die Fridays For Future. Inzwischen sind es jedoch nicht nur Schüler, die klimapolitisch aktiv werden, auch andere Berufsgruppen sind in den Mitstreik getreten - wie z. B. der Entwickler Maximilian Berghoff mit der Gruppe "Developers for future".

Entwickler.de: Max, kannst Du uns bitte die Gruppe „Developers for future“ vorstellen?

Maximilian Berghoff: Im Gegensatz vieler anderer *ForFuture-Gruppen haben wir unsere Gruppe ganz ohne eine Einschreibung begonnen. Mit Einschreibung meine ich beispielsweise die Unterschriften-Kampagne der „Scientists for Future“-Gruppe, die zwischenzeitlich mit etwa 27.000 Unterstützern aufwarten konnte. Vieles entstand Ad hoc mit Aufgaben. Doch so richtig angefangen hatte es, als ich im Februar/März Kontakt zu der Webseiten-Gruppe der „Fridays for Future“ bekam. Dazu hatte ich im letzten Oktober auf der code.talks in Hamburg zusammen mit Jan-Timo Henne eine spannender Podiumsdiskussion mit dem Namen „Everything you code ist killing planet earth“ gehabt.

So keimte der Gedanke nun auch etwas im Bereich des Klimaschutzes oder eben im Aktivismus zu unternehmen. Persönlich steckte ich da tief in den letzen Zügen des Baus meines eigenen Hauses. Was zu allererst ein Faktor ist, nicht persönlich in aktiv auf der Straße dabei zu können. Doch warum nicht einfach das tun, was ich kann? Coden! Darum habe ich mal eben zwischen Malerpinsel und Farbeimer den Twitter-Account (@DevsForFuture) und die Webseite ins Netz gestellt. Doch was dann passierte übertraf jegliche Erwartungen. Wir sind inzwischen bei knapp 1.800 Followern und ca. 180 aktiven Nutzern im Chat. Das bedeutet aber nicht, dass ich durchgehend auf 180 Entwickler zurückgreifen kann. Es ist immer noch alles freiwillige Arbeit ähnlich wie in einem Open-Source-Projekt.

Der Knackpunkt ist und bleibt der Strom.

Neben den ersten Gesprächen über den Anteil, den wir als Software-Entwickler und IT-Branche, am Klimawandel haben, entstanden die ersten Anfragen. Ich erinnere mich noch wie heute daran, als mich Gregor Hagedorn (Gründer Scientists for Future, Leiter Naturkundemuseum Berlin) anrief, weil er Hilfe bei der globalen Einschreibungskampagne brauchte. Es zog sich zwar noch ein wenig, doch inzwischen läuft diese Liste über unsere Systeme.

Wenn ich über Systeme rede muss ich erwähnen, dass ich hier grandiosen Support von SysEleven habe. Da brauche ich im Grunde keinen weiteren finanziellen Support mehr. Uns steht dort ein k8s-Setup zur Verfügung da träume ich im Tagesgeschäft von. Hierüber bilden wir auch unsere Struktur ab. Obwohl ich sagen muss, dass wir hier noch sehr sehr lose agieren. Wir haben ein öffentliches Board auf Github einen Mattermost-Chat und eben den Twitter-Kanal. Ich versuche Projekte, die rein kommen direkt im Chat zu verteilen, lege Repos und Issues dazu an und helfe beim Kommunizieren. Dazu vertrete ich dann die Organisation in einigen globalen und regionalen Calls. Aber in der Tat fehlt hier noch ein wenig Strukturierung, doch es wäre kein Projekt von mir, wenn es nicht mit dem gelebten Chaos auskommt. 🙂

Entwickler.de: Developers for future steht ja auf drei Säulen „Support“, „Education“ und „Own Goal“. Welche Aktivitäten macht Ihr in diesen Themenfeldern?

Maximilian Berghoff: Mit Support meine ich natürlich die direkte Unterstützung alle Gruppen, die sich der Bewegung Fridays for Future angeschlossen haben. Diese entstehen ja nun beinahe täglich, und alle benötigen sie Hilfe beim Vernetzen oder nur bei dem Erstellen der eigenen Webpräsenz. Es kommen aber auch langsam immer mehr Ideen für kleine und große Apps und Portale ins Postfach, die entweder beim Mobilisieren helfen sollen oder eine Awareness für klimaneutrales Verhalten schaffen sollen.

Education hat ja im Grunde zwei Zweige. Zum einem schaffen wir natürlich untereinander durch gemeinsames Coden (wenn auch remote) einen gewissen Transfer von Wissen. Dazu kommt dann eben, dass mit der Gründung vieler neuer Supporter-Gruppen auch viele Laien nun vor ihrem Hosting samt Webseite stehen. Hier können wir natürlich auch Hilfe leisten und tun das auch. Ein Teil der Education speist sich jedoch auch aus dem dritten Punkt “Exploration/Own Goal”. Denn hier wollen wir zusammen mit den Wissenschaftlern und Kollegen ergründen, was es heißt nachhaltige Software zu bauen oder nachhaltige IT zu betreiben. Die Ergebnisse daraus sollten dann natürlich wiederum zu anderem Handeln führen.

Entwickler.de: Was kann ich als IT-Entwickler konkret machen, um meinen ökologischen Fußabdruck zu verringern?

Maximilian Berghoff: Wirklich in die Tiefe sind wir hier noch nicht gelangt. Doch der Knackpunkt ist und bleibt der Strom. Da Strom in Deutschland noch als eine Art Mix produziert wird, haben wir immer noch einen Prozentteil von ca. 40 % der durch die Verbrennung fossiler Rohstoffe erzeugt wird. Diesen Strom konsumieren wir im Office, an unseren PCs, an unseren Servern und auch auf dem Endgerät der Endnutzer. D.h. bei der Wahl der Stromtarife im Office und beim Hoster können wir schon jede Menge bewirken. Dazu kommt natürlich der Aspekt Anwendungen so stromsparend als nur möglich für den Endgeräte auszuliefern.

Als IT-Entwickler ist man aber nicht nur der Software-Entwickler, man ist auch normaler Bürger. Somit stehen hier jedem einzelnen von uns auch alle Türen für die nachhaltige Lebensweise offen. Ich denke als Entwickler sind wir in einer Lohnkategorie, wo es nun nicht mehr zwingend nötig ist täglich „billig-Schnitzel“ vom Discounter zu essen.

Entwickler.de: Wie ist die bisherige Resonanz auf Developers for future?

Maximilian Berghoff: Grandios bis durchwachsen. Zu erst bekommt man super viel Zuspruch. (Fast) alle finden es toll, dass man sich hier so dermaßen engagiert. Viele haben auch Ideen wie man dieses und jenes besser machen kann. Doch trotz des hohen Zuspruchs fehlt mir leider immer noch eine Art Kernteam, welches sowohl die Organisation als solches als auch die Unmengen an Tasks verlässlich anpacken würde. Ich kann zwar auf einige wenige Personen im Chat zurückgreifen, diese waren bisher auch überdurchschnittlich produktiv – doch mir läge viel daran hier die Aufgaben und die Betreuung auf mehrere Schultern verteilen zu können.

Entwickler.de: Gibt es bisher nur positive Resonanz oder gibt es auch Entwickler, die das ganze kritisch sehen oder sogar „bekämpfen“?

Maximilian Berghoff: Bekämpfen konnte ich bisher noch nicht feststellen. Doch als ich beispielsweise die Gruppe in Facebook aufgemacht habe und es dort dann in der PHP-Gruppe announced habe, musste ich schon feststellen, dass nicht jeder zu 100 % dafür ist. Einige fanden es in dem Moment sogar schlecht, dass hier produktiv Hilfe geleistet wird, wo doch einem auch ein lukratives Projekt hätte entstehen können. Doch das ist die eine sehr kleine Menge an Menschen.

Entwickler.de: Was sind Eure weiteren Ziele, die Ihr unbedingt erreichen möchtet. Welche Aktivitäten kann man von Euch noch in der Zukunft erwarten?

Maximilian Berghoff: Aktuell geht es fast nur um den 20.09.2019. Hier wird weltweit zum Streik aufgerufen, selbst die ersten deutschen Gewerkschaften treten diesem Aufruf bei. Hier gilt es einige kleine Landingpages an den Start zu bekommen. Dazu baue ich selbst gerade einer kleinen Web-App, die es Freunden ermöglicht einen Klimapakt einzugehen. Diese Seite wird auch direkt am 20.09. veröffentlicht. Außerdem lassen wir mit dem Schuttdown for Climate an dem Tag in den Streik treten.

Ansonsten geht es darum nun auch bei uns eine Art Commitment über eine Einschreibung zu bekommen. Außerdem experimentieren wir mit alternativen sozialen Netzwerken, um nicht weiterhin von den großen Playern am Markt abhängig zu sein. Dazu kommt es auf der Ebene aller Supporter-Organisationen langsam zu einem Bestreben sich über IT und Webseiten weiter auszutauschen, d.h. hier werden wir unsere beratende Rolle einbringen und diesen Austausch auch organisieren. In weiter Ferne steht auch eine Art Camp zum Coden und Forschen an dem sowohl Kids als auch Erwachsene oder Entwickler teilnehmen können.

Entwickler: Vielen Dank für dieses Interview!

Maximilian Berghoff arbeitet als Entwickler bei der Mayflower GmbH in Würzburg. Dort entwickelt er hochwertige PHP- und JavaScript-Applikationen. In seiner Freizeit arbeitet er am Symfony CMF (Content Management Framework) und wirkt in der Symfony-Community mit. Wenn er sich in das Frontend bewegt, dann mit Angular. Schon seit Anbeginn der (Angular-)Zeit setzt er stetig Applikationen damit um.

Der Beitrag Developers for Future: Auch Coden zerstört den Planeten ist auf entwickler.de erschienen.

]]>
https://entwickler.de/online/development/developer-for-future-579905044.html/feed 0
Node.js-Module: decko im Fokus https://entwickler.de/online/javascript/node-js-module-decko-579896825.html https://entwickler.de/online/javascript/node-js-module-decko-579896825.html#respond Wed, 21 Aug 2019 06:33:57 +0000 https://entwickler.de/?p=579896825 Zu den Eigenheiten von JavaScript gehört das Entstehen von Duplikaten, die Entwickler vor Herausforderungen stellen. Eine Lösung des Problems kann die Bibliothek decko mit ihrer implementierten Sammlung an Dekoratoren sein, die beispielsweise Klassen und Methoden um wichtige Eigenschaften zur problemlosen Programmierung ergänzt.

Der Beitrag Node.js-Module: decko im Fokus ist auf entwickler.de erschienen.

]]>
Zu den Eigenheiten von JavaScript gehört das Entstehen von Duplikaten, die Entwickler vor Herausforderungen stellen. Eine Lösung des Problems kann die Bibliothek decko mit ihrer implementierten Sammlung an Dekoratoren sein, die beispielsweise Klassen und Methoden um wichtige Eigenschaften zur problemlosen Programmierung ergänzt.

Fragt man einen Entwickler, was guten Code ausmacht, so antworten viele, dass guter Code möglichst wenige Duplikate aufweisen sollte. Viele dieser Duplikate entstehen durch Eigenheiten von JavaScript selbst. Der Vorteil ist, dass Sie mit Ihren Problemen glücklicherweise nicht alleine sind. Stoßen Sie auf Schwierigkeiten, sollte Ihre erste Anlaufstelle die npm-Plattform sein. In den meisten Fällen werden Sie hier schnell fündig, wenn es um kreative Lösungen geht. Ein Beispiel für eine solche Lösung von typischen Programmierproblemen ist die Bibliothek decko. Hierbei handelt es sich um eine Sammlung von drei Dekoratoren:

  • @bind: Mit diesem Dekorator wird der Wert von this einer Methode fest gebunden.
  • @debounce: Dieser Dekorator sorgt dafür, dass eine Methode nicht zu oft aufgerufen wird.
  • @memoize: Dieser Dekorator bietet Ihnen die Möglichkeit, Rückgabewerte von Funktionen zu cachen.

Was sind Dekoratoren?

Dekoratoren sind ein Feature, das zukünftig in den JavaScript-Standard aufgenommen werden soll. Aktuell werden Dekoratoren noch von keinem Browser unterstützt. Mit einem Transpiler wie beispielsweise TypeScript können Sie dieses Feature bereits jetzt in Ihrer Applikation nutzen. Populäre Beispiele für die Verwendung von Dekoratoren sind clientseitig Angular und serverseitig Nest.js. Beide Lösungen setzen dieses Feature häufig ein, um Klassen, Methoden oder Eigenschaften durch zusätzliche Informationen zu ergänzen. Ein Dekorator steht dabei immer bei der Struktur, auf die er zugreifen soll, und wird mit dem @-Zeichen eingeleitet. Im Kern ist ein Dekorator nichts weiter als eine Funktion, die mit der jeweiligen Struktur, also beispielsweise der Methode, aufgerufen wird. Listing 1 zeigt ein einfaches Beispiel für einen Dekorator.

function myDecorator(target: User) {
  console.log(target);
}

@myDecorator
class User {}

const klaus = new User();

Der Dekorator in Listing 1 gibt lediglich eine Repräsentation der Klasse auf der Konsole aus. Im Zuge der Funktion haben Sie jedoch auch die Möglichkeit, schreibend auf die Struktur der Klasse zuzugreifen. Ein weiteres Feature, das Sie mit Dekoratoren umsetzen können, ist ein konfigurierbarer Dekorator. In diesem Fall ist die Dekoratorfunktion eine Art Factory, die die eigentliche Dekoratorfunktion zurückgibt und ihrerseits zusätzliche Argumente entgegennimmt, um den Dekorator zu konfigurieren. Hier geben Sie den Dekorator nicht einfach an, sondern nutzen ihn wie eine Funktion.

International PHP Conference

Entwickler – das verlorene Handbuch

by Stefan Priebsch (thePHP.cc)

My browser does what?

by Joel Lord (Red Hat OpenShift

Damit Sie Dekoratoren in TypeScript ohne Warnung nutzen können, müssen Sie sie über ein Flag aktivieren. Dies geschieht entweder über die Kommandozeile beim Aufruf des TypeScript-Compilers mit der Option —experimentalDecorators oder in der tsconfig.json-Datei über den Schlüssel experimentalDecorators.

Auf dieser technischen Basis bauen die Dekoratoren von decko auf.

Der „@bind“-Dekorator

Mit dem @bind-Dekorator lässt sich ein recht häufig anzutreffendes Problem lösen. Nutzen Sie eine Methode einer Klasse als Callback-Funktion beispielsweise in einem setTimeout, verlieren Sie den Bezug zum Objekt, an das die Methode gebunden ist. Listing 2 zeigt ein einfaches Beispiel hierfür.

class DeckoTest {
  private name = 'Klaus';

  cb() {
    console.log(this.name);
  }
}

const d = new DeckoTest();

setTimeout(d.cb, 1000);

Anders als in diesem Beispiel zu erwarten wäre, ist die Ausgabe auf der Konsole, wenn Sie den Quellcode beispielsweise mit ts-node auf der Kommandozeile ausführen, nicht die Zeichenkette „Klaus“, sondern „undefined“. Zur Lösung dieses Problems gibt es mehrere Ansätze. So können Sie die cb-Methode beispielsweise mit der bind-Methode in den gewünschten Kontext binden oder Sie definieren die cb-Methode als Eigenschaft der Klasse und weisen ihr als Wert eine Arrow-Funktion zu. Alle diese Varianten sind wenig elegant und an genau diesem Punkt setzt der @bind-Dekorator von decko an. In Listing 3 sehen Sie die Lösung mit diesem.

import { bind } from 'decko';

class DeckoTest {
  private name = 'Klaus';

  @bind
  cb() {
    console.log(this.name);
  }
}

const d = new DeckoTest();

setTimeout(d.cb, 1000);

Führen Sie diesen Quellcode erneut aus, ist die Ausgabe dann „Klaus“. Auf solche Problemstellungen stoßen Sie in clientseitigem JavaScript beispielsweise recht häufig, wenn Sie mit React entwickeln und Event Handler implementieren.

Der „@debounce“-Dekorator

Der @debounce-Dekorator sorgt dafür, dass eine Methode maximal einmal in einem bestimmten Zeitraum ausgeführt wird. Dieser Dekorator eignet sich besonders für den Einsatz in Event Handlern, bei denen eine zu häufige Ausführung wenig Sinn macht. Die Funktion wird stets mit dem aktuellsten Aufruf ausgeführt. In Listing 4 sehen Sie ein Beispiel für den @debounce-Operator.

import { debounce } from 'decko';

class DeckoTest {
  @debounce(1000)
  cb() {
    console.log('Hello');
  }
}

const d = new DeckoTest();

let count = 0;

const i = setInterval(() => {
  if (count++ >= 11) {
    clearInterval(i);
  }
  d.cb();
}, 100);

Wie Sie im Codebeispiel sehen können, wird dem @debounce-Dekorator eine Zahl übergeben. Diese gibt die Anzahl an Millisekunden an, die der Dekorator aktiv sein soll. Der Code im Beispiel führt dazu, dass Sie bei seiner Ausführung insgesamt zwei Ausgaben auf der Konsole erhalten und nicht zwölf, wie ohne den Dekorator.

Der „@memoize“-Dekorator

Mit dem @memoize-Dekorator können Sie einen einfachen Cache für Methoden implementieren. Dieser spielt seine Stärke vor allem bei ressourcenintensiven Routinen aus. Der Cache ordnet die Einträge den Argumenten zu, die der Methode übergeben wurden. Das bedeutet, dass eine Voraussetzung für die Verwendung dieses Dekorators ist, dass eine Kombination aus Argumenten immer dasselbe Ergebnis liefert. Die Argumente werden zur Überprüfung in Zeichenketten konvertiert.

Der @memoize-Dekorator ist als Dekorator-Factory umgesetzt. Das bedeutet, dass Sie ihm ein Objekt zur Konfiguration übergeben können. Dieses Objekt kann über zwei Eigenschaften verfügen: caseSensitive und cache. Der caseSensitive-Eigenschaft können Sie den Wert false übergeben. Dann wird die Groß- und Kleinschreibung bei den Cacheschlüsseln ignoriert. Die cache-Eigenschaft erwartet ein Objekt, das zur Vorbefüllung des Cache verwendet werden kann. In Listing 5 finden Sie ein Beispiel für den Einsatz dieses Dekorators.

import { memoize } from 'decko';

class DeckoTest {
  @memoize()
  cb(name: string) {
    console.log(name);
    return name;
  }
}

const d = new DeckoTest();

d.cb('Klaus');
d.cb('Klaus');

Führen Sie den Quellcode aus, erhalten Sie eine Ausgabe auf der Konsole. Beim zweiten Aufruf der cb-Methode wird der Quellcode nicht mehr ausgeführt, sondern der Rückgabewert direkt aus dem Cache ermittelt.

Fazit

Bei decko handelt es sich um eine überschaubare Bibliothek, die im Kern lediglich aus knapp über hundert Zeilen Quellcode besteht. In der täglichen Arbeit lösen die drei Dekoratoren jedoch recht häufig auftretende Probleme, die sich ansonsten nur mit Eigenimplementierungen lösen lassen, die den Quellcode einer Applikation nicht lesbarer werden lassen.

PHP Magazin

Entwickler MagazinDieser Artikel ist im PHP Magazin erschienen. Das PHP Magazin deckt ein breites Spektrum an Themen ab, die für die erfolgreiche Webentwicklung unerlässlich sind.

Natürlich können Sie das PHP Magazin über den entwickler.kiosk auch digital im Browser oder auf Ihren Android- und iOS-Devices lesen. In unserem Shop ist das Entwickler Magazin ferner im Abonnement oder als Einzelheft erhältlich.

Der Beitrag Node.js-Module: decko im Fokus ist auf entwickler.de erschienen.

]]>
https://entwickler.de/online/javascript/node-js-module-decko-579896825.html/feed 0
Microsofts FaaS-Dienst Azure Functions: Jetzt mit Python-Support https://entwickler.de/online/windowsdeveloper/microsoft-azure-functions-python-579905050.html https://entwickler.de/online/windowsdeveloper/microsoft-azure-functions-python-579905050.html#respond Tue, 20 Aug 2019 10:06:18 +0000 https://entwickler.de/?p=579905050 Azure Functions hat Support für Python erhalten: In Microsofts FaaS-Dienst können Python-Workloads für Data Science, Machine Learning und mehr gehostet werden. Bisher wurde die Programmiersprache nur experimentell unterstützt.

Der Beitrag Microsofts FaaS-Dienst Azure Functions: Jetzt mit Python-Support ist auf entwickler.de erschienen.

]]>
Azure Functions hat Support für Python erhalten: In Microsofts FaaS-Dienst können Python-Workloads für Data Science, Machine Learning und mehr gehostet werden. Bisher wurde die Programmiersprache nur experimentell unterstützt.

Microsofts kostenpflichter Function-as-a-Service-Dienst Azure Functions wurde mit Support für Python 3.6 ausgestattet: Darin geschriebene Anwendungen können somit in Azure Functions gehostet und auf der Functions 2.0 Runtime ausgeführt werden. Mögliche Anwendungsbereiche sind Data Science, Machine Learning oder automatisiertes Ressourcenmanagement.

Auch das Publishing der Anwendungen als Code oder Docker Container auf einer Linux-basierten Serverless-Hosting-Plattform in Azure ist möglich. Azure Functions wird auf der Cloud-Computing-Plattform Microsoft Azure gehostet. Zu den weiteren unterstützten Sprachen in der Runtime 2.0 zählen C#, F#, Java und JavaScript.

Azure Functions und Visual Studio Code

Als Code-Editor kann zum Beispiel Visual Studio Code verwendet werden. Im Blogeintrag zur Ankündigung des Python-Supports wurden die Entwicklungsmöglichkeiten mithilfe der Preview-Version der VS Code Extension für Azure Functions vorgestellt. Damit können der Code lokal getestet, Breakpoints hinzugefügt oder der Call Stack evaluiert werden:

Azure Functions in Visual Studio Code; Quelle: Microsoft

In Verbindung mit der Python Extension für Visual Studio Code, die im Marketplace verfügbar ist, können zudem weitere Optionen genutzt werden. Dazu zählen Autovervollständigung, IntelliSense, Linting und Debugging.

Alle weiteren Informationen zum neuen Python-Support in Azure Functions gibt es im Blogeintrag auf dem Azure-Blog.

Der Beitrag Microsofts FaaS-Dienst Azure Functions: Jetzt mit Python-Support ist auf entwickler.de erschienen.

]]>
https://entwickler.de/online/windowsdeveloper/microsoft-azure-functions-python-579905050.html/feed 0
ESLint 6.2.0 bringt Syntax-Support für ECMAScript 2020 mit https://entwickler.de/online/javascript/eslint-6-2-ecmascript-2020-579905053.html https://entwickler.de/online/javascript/eslint-6-2-ecmascript-2020-579905053.html#respond Tue, 20 Aug 2019 09:44:24 +0000 https://entwickler.de/?p=579905053 ECMAScript 2020 wird nun von ESLint unterstützt. Das Team hinter dem Linter hat damit begonnen, den im nächsten Jahr kommenden Standard zu integrieren. Die ersten Features können mit ESLint 6.2.0 genutzt werden.

Der Beitrag ESLint 6.2.0 bringt Syntax-Support für ECMAScript 2020 mit ist auf entwickler.de erschienen.

]]>
ECMAScript 2020 wird nun von ESLint unterstützt. Das Team hinter dem Linter hat damit begonnen, den im nächsten Jahr kommenden Standard zu integrieren. Die ersten Features können mit ESLint 6.2.0 genutzt werden.

ESLint unterstützt mit der nun veröffentlichten Version 6.2.0 die ersten Features aus ECMAScript 2020. Zwar ist die Arbeit am erst im nächsten Jahr erscheinenden JavaScript-Standard noch nicht abgeschlossen; einige Features sind aber bereits fertiggestellt. Davon hat ESLint nun zwei integriert: Für dynamische Imports und BigInt ist nun Linting verfügbar, wenn ecmaVersion: 2020 in die Konfiguration eingefügt wird.

ESLint 6.2.0: Neues neben ECMAScript 2020

Das ist aber nicht die einzige Neuerung an ESLint 6.2.0. So wurde die Regel function-call-argument-newline neu eingeführt, mit der konfiguriert werden kann, ob Zeilenumbrüche zwischen den Argumenten von Funktionsaufrufen gesetzt werden müssen oder nicht. Mit verschiedenen Optionen kann diese Einstellung so gesetzt werden, dass der Zeilenumbruch grundsätzlich immer, nie oder einfach nur konsistent innerhalb des Codes gesetzt werden muss.

Auch die neue Einstellung noInlineConfig und zahlreiche Bugfixes sind im Release enthalten. Weitere Informationen dazu können den Release Notes im ESLint-Blog entnommen werden.

Der Beitrag ESLint 6.2.0 bringt Syntax-Support für ECMAScript 2020 mit ist auf entwickler.de erschienen.

]]>
https://entwickler.de/online/javascript/eslint-6-2-ecmascript-2020-579905053.html/feed 0
Agile? Ein Thema für die gesamte IT-Landschaft https://entwickler.de/online/agile/agile-gesamte-it-landschaft-579904191.html https://entwickler.de/online/agile/agile-gesamte-it-landschaft-579904191.html#respond Tue, 20 Aug 2019 07:40:26 +0000 https://entwickler.de/?p=579904191 Die agile Entwicklung wird im Rahmen der digitalen Transformation immer mehr zum Standard. Da aber für das ganze Unternehmen Technologie eine immer wichtigere Rolle spielt, sind Agile und Digital Engineering heute für Prozesse in der gesamten IT-Landschaft relevant.

Der Beitrag Agile? Ein Thema für die gesamte IT-Landschaft ist auf entwickler.de erschienen.

]]>
Die agile Entwicklung wird im Rahmen der digitalen Transformation immer mehr zum Standard. Da aber für das ganze Unternehmen Technologie eine immer wichtigere Rolle spielt, sind Agile und Digital Engineering heute für Prozesse in der gesamten IT-Landschaft relevant.

Erfolgreiche Unternehmen haben eine eigene Struktur entwickelt, mit der sie ihre Kundenangebote skalierbar und schnell digitalisieren können. Dabei veränderte sich die Technologie vom Enabler zum entscheidenden Differenzierungsmerkmal. Im Zuge dessen erkannten Unternehmen aller Branchen die Notwendigkeit zur Neuausrichtung ihrer Prozesse, um wie ein High-Tech-Unternehmen zu agieren.

Die meisten Unternehmen sehen sich dabei jedoch mit einer Reihe von wichtigen Fragen konfrontiert: Welches ist das richtige Betriebsmodell für die optimale Digitalisierung? Wie kann man Agile- und DevOps-Initiativen skalieren? Wie kann man sich vom Wettbewerb differenzieren?

Das richtige Ausführungsmodell

Für Unternehmen ist es entscheidend, ihre Differenzierungsmerkmale zu ermitteln und das richtige Ausführungsmodell in Abstimmung mit den Zielen zu wählen. Bislang hat die Kundenorientierung agile Programme vorangetrieben. Aber Unternehmen sollten auch prüfen, ob sich die vorhandenen Prozesse und Programme für eine agile Ausführung eignen.

Dabei sollten sie einen ganzheitlichen Ansatz verfolgen, um ihre Stärken auszubauen und ihre Schwächen bei der Umstellung auf das digitale Ausführungsmodell zu reduzieren. Da nämlich Technologie eine immer wichtigere Rolle für Unternehmen spielt, haben sich Agile und Digital Engineering über die Kundenorientierung hinaus entwickelt und sind heute für Prozesse in der gesamten IT-Landschaft relevant.

Skalieren und beschleunigen

Entsprechend ist das agile Modell inzwischen zum Standard geworden und wird heute im ganzen Unternehmen eingesetzt. Zum Beispiel werden nicht nur im Front-Office, sondern auch im Back-Office zunehmend agile Prozesse eingesetzt, um die Geschwindigkeit zu erhöhen, die Effizienz im Betrieb zu steigern sowie Probleme früher und schneller zu lösen.

Doch zum unternehmensweiten Einsatz muss auch die Anzahl der Fachkräfte skaliert und optimiert werden. Während sich Unternehmen in erster Linie auf den Prozess konzentrieren, damit sich das agile Modell lohnt, sollte den Menschen die gleiche Bedeutung beigemessen werden. Unternehmen müssen dazu Mitarbeiter einstellen und in sie investieren, ihr Wissen ausbauen und eine umfassende „Kultur der Entwicklung“ schaffen, um das Beste aus Agile herauszuholen. Dazu dient das Agile Execution Model. Es umfasst folgende Punkte.

Organisation: Das Produktentwicklungsteam ist für Aufbau, Betrieb und Wartung der Plattformen verantwortlich, die bestehende Prozesse mit modernen Tools und Anwendungen integrieren. Der Ansatz „Discover-Design-Deliver“ erfordert dabei ein gründliches Verständnis des Produkts und des Prozesses, den das Team laut Plan entwickeln und erfolgreich installieren möchte. Unternehmen müssen dabei anstelle von projektbasierten nun produktorientierte Teams einsetzen. Diese erhalten die volle Verantwortung für die von ihnen entwickelten Produkte.

Training: Durch das Agile-Prinzip verkleinern sich zwar die Teams, doch der Wert jedes einzelnen Mitglieds steigt und damit auch die Bedeutung des gesamten Teams. Dies liegt außerdem an der zunehmenden Einbindung von Spezialisten. Daraus resultiert eine Verschiebung des Fokus von Erfahrung zu Fachwissen. Daher sind die Mitarbeiter mit dem Ziel zu schulen, den Wert pro Person sowie ihre Verantwortung zu erhöhen. Dieser Wandel mag schwierig sein, bietet aber eine verbesserte Zusammenarbeit und mehr Flexibilität zur Optimierung der Abläufe.

Betrieb: Agile- und DevOps-Modelle werden zwar mit modernen Tools ausgeführt, aber der Prozess wird von Menschen gesteuert. Angesichts der zunehmend reduzierten Teamgrößen ist die Effizienz zu erhöhen. Die Teams können dabei nach spezifischem Training die Abläufe erheblich modernisieren. Noch wichtiger ist, dass sie durch frühzeitige Tests und Erkennung von Fehlern eine deutlich bessere Qualität des Produkts sicherstellen. Entsprechend kann Agile nur optimiert werden, wenn die Mitarbeiter den Wandel annehmen und ihre verbesserten Fähigkeiten nutzen, um das optimale Ergebnis zu erzielen.

Automatisierung: Die Fähigkeiten eines neu formierten Teams lassen sich nur mit einem angemessenen Automatisierungsgrad voll nutzen. Dies wird nicht nur die Ergebnisse standardisieren, sondern auch die Kosten senken und die Time-to-Market verkürzen. Der Lebenszyklus des Produkts von Codierung über Test und Freigabe bis Wartung ist entscheidend für die Nachhaltigkeit des gesamten Betriebs. Dabei sorgt Automatisierung für die nötige Konsistenz. Zudem vereinfacht Automatisierung die Produktskalierung im gesamten Unternehmen, indem sie die Variabilität reduziert.

Messung: Im agilen Umfeld müssen Unternehmen ihre Messprozesse überdenken. Sie sollten den geschaffenen Geschäftswert und nicht nur den Arbeitsaufwand erfassen. Diese Kennzahlen sind zu nutzen, um das organisatorische Verhalten zu verändern. Story Points zum Messen des Entwicklungsaufwands für Funktionen helfen, ein genaues Bild von den Prozessen eines Unternehmens zu erhalten. Sie zeigen Verbesserungsmöglichkeiten und Chancen für einen höheren Geschäftswert. Die Metriken sind daher entscheidend für die Optimierung der Abläufe und die Skalierung von Initiativen. Denn sie zeigen, wo Engpässe und Probleme bestehen.

Fazit

Agile wird nicht nur im IT-Bereich, sondern für das gesamte Unternehmen immer mehr zur neuen Norm. Denn auch die Fachabteilungen müssen heute bei der Entwicklung von Anwendungen mithelfen. Nur so lassen sich ihre spezifischen Anforderungen an die technische Basis erfüllen. Daher sind agile Methoden unternehmensweit einzuführen. Dann lassen sich die Chancen von morgen nutzen und zukunftsorientierte Services anbieten. Denn nur agile, innovative Unternehmen können im Wettbewerb nachhaltig bestehen.

Der Beitrag Agile? Ein Thema für die gesamte IT-Landschaft ist auf entwickler.de erschienen.

]]>
https://entwickler.de/online/agile/agile-gesamte-it-landschaft-579904191.html/feed 0
Git 2.23: Experimentelle Ergänzungen zu „git checkout“ https://entwickler.de/online/javascript/git-2-23-release-579904893.html https://entwickler.de/online/javascript/git-2-23-release-579904893.html#respond Tue, 20 Aug 2019 06:45:58 +0000 https://entwickler.de/?p=579904893 Git hat ein Update erhalten. Die zahlreichen Optionen, die von git checkout abgedeckt werden, könnten in Zukunft auf verschiedene Befehle aufgeteilt werden. Dazu wurden nun zwei experimentelle Kommandos für Git eingeführt: git switch sowie git restore. Auch darüber hinaus gab es wieder einige Neuerungen an Git.

Der Beitrag Git 2.23: Experimentelle Ergänzungen zu „git checkout“ ist auf entwickler.de erschienen.

]]>
Git hat ein Update erhalten. Die zahlreichen Optionen, die von git checkout abgedeckt werden, könnten in Zukunft auf verschiedene Befehle aufgeteilt werden. Dazu wurden nun zwei experimentelle Kommandos für Git eingeführt: git switch sowie git restore. Auch darüber hinaus gab es wieder einige Neuerungen an Git.

Giut 2.23 bringt wieder zahlreiche Neuerung und Änderungen für Entwickler, die direkt mit Git arbeiten. Im offiziellen Changelog werden zwei Änderungen mit Einfluss auf die Abwärtskompatibilität genannt. Einerseits werden Patch-IDs von format-patch mit --base nun anders verarbeitet, andererseits verhält sich der Befehl git log nun standardmäßig so, als wäre die Option --mailmap gegeben.

Git 2.23 veröffentlicht

Die größte Neuerung in Git 2.23 betrifft aber git checkout, das bislang viele Funktionen in einem vereint hat. Um die Handhabung zu vereinfachen, sollen hier Alternativen geschaffen werden. Darum bringt Git 2.23 die Befehle git switch und git restore mit. Dabei kann künftig mit git switch zwischen Branches gewechselt werden. git restore hingegen ist dazu da, geänderte Dateien auszutauschen. Dazu steht die Optionen --worktree zur Verfügung, mit der die Änderung in der Arbeitsversion ausgetauscht wird, sowie die Option --staged, die eine Datei im Index verändert.

Zu den weiteren Neuerungen in Git 2.23 gehört, dass git for-each-ref nun schneller darin ist, multiple Patterns zu sortieren. Weitere Informationen zu Git 2.23 können dem Blogpost zum Release im GitHub-Blog sowie den offiziellen Release Notes entnommen werden.

Der Beitrag Git 2.23: Experimentelle Ergänzungen zu „git checkout“ ist auf entwickler.de erschienen.

]]>
https://entwickler.de/online/javascript/git-2-23-release-579904893.html/feed 0
Tipps für ein gelungenes Softwaredesign: Der Wert von Erwartungen https://entwickler.de/online/windowsdeveloper/webassembly-blazor-softwaredesign-erwartungen-579902437.html https://entwickler.de/online/windowsdeveloper/webassembly-blazor-softwaredesign-erwartungen-579902437.html#respond Tue, 20 Aug 2019 05:51:30 +0000 https://entwickler.de/?p=579902437 Entwickler und Anwender können verschiedene Vorstellungen von gutem Softwaredesign haben, dementsprechend flexibel sollte das Design gehalten werden. Was das praktisch bedeutet, erläutert er in dieser Ausgabe seiner Kolumne "Olis bunte Welt der IT".

Der Beitrag Tipps für ein gelungenes Softwaredesign: Der Wert von Erwartungen ist auf entwickler.de erschienen.

]]>
Entwickler und Anwender können verschiedene Vorstellungen von gutem Softwaredesign haben, dementsprechend flexibel sollte das Design gehalten werden. Was das praktisch bedeutet, erläutert er in dieser Ausgabe seiner Kolumne "Olis bunte Welt der IT".

In den letzten Monaten habe ich mich mit Blazor beschäftigt, dem neuen Framework von Microsoft. Vielleicht heißt es heute auch Razor Components, wer weiß das schon so genau. Oder vielleicht heißt die eine Hälfte Razor Components und die andere Blazor? Es ist auch möglich, dass ein Teil davon oder auch beide beim Release von .NET Core 3 dabei sein darf oder dürfen. Mal sehen.

Microsoft ist nicht besonders gut darin, Erwartungen zu managen, wie man auf Neudeutsch sagt. Vor Kurzem sind endlich ein paar Blogposts publiziert worden, aus denen anscheinend die Strategie in Hinsicht auf Blazor hervorgeht. Ich sage „anscheinend“, weil es leider auch in der Vergangenheit schon ähnliche Blogposts gab, deren Inhalt sich später eben doch wieder als falsch herausstellte. Abwarten ist angesagt! Leider ist das nichts Neues. Vor vielen Jahren gab es vielversprechende Ansagen zu Silverlight und der DLR, bevor man sich für Version 1 eben doch allein auf die Konkurrenzsituation mit Flash einstellte und die DLR plötzlich irrelevant war. Ruby für die DLR? Ja, auch mal gehört …

Hoffentlich geht Blazor nicht den Weg von Silverlight. Ich denke nicht, dass es das tun wird, denn die Technologie ist erstens hinlänglich schwammig definiert und zweitens zum Teil auf der Basis von WebAssembly gebaut, also einer unabhängigen Plattform. Der Teil, der nicht auf WebAssembly basiert, läuft als höchst merkwürdiges architekturelles Konzept auf dem Server – man wird sehen, ob sich das in Anwendungskonzepten irgendwo gewinnbringend einbauen lässt. Den Teil mit WebAssembly finde ich durchaus interessant; ich habe dazu einige Trainingsvideos erzeugt, die Sie bei YouTube finden können.

An die Erwartungen denken

Nun soll es in diesem Artikel gar nicht weiter um Blazor gehen, und auch nicht spezifisch um Microsoft. Die Sache mit den Erwartungen liegt mir am Herzen! Wann immer wir etwas hören oder lesen, entwickeln unsere Köpfe automatisch Erwartungen. Zum Teil basieren diese direkt auf dem, was wir gehört oder gelesen haben. Zum anderen Teil jedoch werden Erwartungen impliziert, wir nehmen einfach an, dass die eigentliche Information oder Ankündigung nur Sinn macht, wenn gewisse andere Annahmen ebenfalls zutreffen. Wenn Sie wollen, lesen Sie noch einmal die Absätze oben und denken dabei über Erwartungen nach.

Kostenlos: Azure-DevOps-Spickzettel

Jetzt herunterladen und mit wenigen Befehlen das Kommando über Azure DevOps übernehmen!

Download for free

Ich finde es bemerkenswert, wie das instinktive Verhalten, das wir Menschen an den Tag legen, wenn es um Erwartungen geht, gelernt oder beigebracht werden kann. Denken Sie einmal an das Stoppschild. Jeder Erwachsene weiß, dass man mit dem Auto, Motorrad oder gar Fahrrad an einem Stoppschild auf jeden Fall vollständig anhalten muss. Ich könnte qualifizieren „jeder Erwachsene mit einem Führerschein“, aber ich glaube tatsächlich, dass auch die meisten Menschen ohne Führerschein an dieser Grundweisheit teilhaben. Jeder kennt aus der Kneipe Anekdoten wie diese: „Stockduster war’s, drei Uhr morgens mitten in der Pampa, ich brems‘ am Stoppschild und bleib halt fast komplett stehen, und dieser Polizist springt plötzlich aus dem Gebüsch fünf Meter daneben und das war’s dann, Knöllchen und zwei Punkte!“

Was kann man daraus herleiten? Stoppschilder haben eine klare Bedeutung, stehen aber leider im wirklichen Leben fast immer ohne offensichtliche Erklärung da. Der Autofahrer erwartet, dass solche Schilder nur dort aufgestellt werden, wo es einen triftigen Grund dafür gibt. Man erwartet, Scharen von kleinen Kindern, alten Leuten oder wandernden Kröten zu sehen, wenn man korrekt am Stoppschild anhält und „eintausend, zweitausend“ zählt. Vielleicht sollte ich sagen „man erwartete als Führerscheinneuling“, denn leider ist es oft so, dass Stoppschilder missbraucht werden und an Stellen aufgestellt, wo es vielleicht für zwei Stunden am Tag gefährlich zugeht, aber bei Weitem nicht immer – oder gar einfach da, wo sich die Stadt großes Einkommen durch Strafgelder verspricht. Jeder junge Autofahrer macht diese Erfahrung und ist letztlich desillusioniert; das Vertrauen in die korrekte Verwendung des Brachialmechanismus Stoppschild ist gebrochen. Fortan macht man’s wie alle: Man simuliert das Anhalten je nach Verkehrslage und An- oder Abwesenheit sichtbarer Überwachung, und die Erwartung besteht im Weiteren hauptsächlich darin, irgendwann einmal wegen unzureichender Bremsmotivation straffällig zu werden.

Erwartungen an die Software

Zwischen diesen generellen Überlegungen zu Erwartungen und der Thematik der Softwareentwicklung gibt es zunächst einen ganz offensichtlichen Bezug. Dieser ist überall zu beobachten, wo Benutzerschnittstellen gebaut werden. Auch hierbei gilt es, Erwartungen von Benutzern zu verstehen und zu befriedigen. Dies sollte eigentlich offensichtlich sein, ist es aber angesichts alltäglicher Software anscheinend nicht. Dabei sind grundlegende Benutzererwartungen eigentlich sehr einfach: Wenn etwas auf dem Bildschirm mit der Maus angeklickt oder mit dem Finger angefasst wird, erwartet der Anwender umgehend eine Reaktion seitens der Software. Außerdem sollte ein Benutzer jederzeit den Eindruck haben, dass er weiß, was die Software gerade tut. Bereits diese beiden Grundanforderungen sind für manchen Entwickler ganz klar zu komplex. Aus persönlicher Erfahrung muss ich sagen: „Was macht der denn jetzt schon wieder?“ ist mein meistverwendeter Ausruf der Verzweiflung beim Umgang mit Allerweltssoftware – ob auf dem PC, im Web oder auf Mobilgeräten. Das Einfügen geeigneter Schimpfworte in Ihr gedankliches Bild überlasse ich Ihnen, denn Sie sind mit der Problematik bestimmt ebenso vertraut wie ich.

Hier ein praktischer Rat zu Softwarentwicklung und -tests: Bedienen Sie das eigene Werk einfach mal wie ein Endanwender. Schreiben Sie auf – oder zeichnen Sie auf Video auf –, was Ihnen dabei unangenehm erscheint, wo Sie eventuell länger als notwendig nachdenken mussten, um eine Funktion richtig zu nutzen. Noch besser: Beziehen Sie andere in diese Auswertungen mit ein, zwecks gnadenloser Objektivität. Dabei wird die resultierende Zusammenstellung von Kritikpunkten gewöhnlich sehr oberflächlich ausfallen. Das ist nicht schlimm, denn so arbeiten echte Anwender auch. Ich habe schon oft solche Listen geschrieben, für Kunden oder auch als Feedback für die Macher irgendeiner App auf meinem Telefon. Manchmal sieht das einfach so aus:

  1. Wenn ich einen Artikel anklicke, braucht die App meist ein paar Sekunden, um die Detailansicht zu öffnen. Leider kann ich erst dann den Zurückbutton klicken, wenn der Vorgang abgeschlossen ist. Die Ladezeit selbst dürfte gern beschleunigt werden, aber richtig unangenehm ist es, wenn ich versehentlich einen Artikel in der Liste selektiere und die Navigation nicht sofort abbrechen kann.
  2. Es kommt vor, dass das Scrollen in der Artikelliste stockt und die App für Sekunden gar nicht bedienbar ist.
  3. Mehrfach habe ich beobachtet, dass Artikel aus meiner Favoritenliste spurlos verschwunden sind.
  4. Es ist ebenfalls mehrfach vorgekommen, dass ein Artikel in meiner Favoritenliste gegen den automatisch gelieferten Ersatzartikel getauscht worden ist.

An den Ergebnissen solcher Analysen ist besonders interessant, wie unterschiedlich Anwender und Entwickler die einzelnen Punkte einschätzen könnten. Oberflächlich betrachtet handelt es sich bei allen Beispielpunkten um Beschreibungen von Fällen, wo eine Erwartung des Anwenders nicht erfüllt worden ist. Der Anwender erwartet, dass die App immer, und immer schnell, auf Interaktion reagiert. Er erwartet, dass irrtümliche Bedienung einfach und ohne Verzögerung korrigiert werden kann. Die Favoritenliste wird vom Anwender als persönlicher Datenspeicher gesehen und jegliche automatischen Änderungen sind unerwartet.

Ein funktionierender Undo-Button ist eine bessere Idee als eine Reihe von Sicherheitsabfragen!

Aus Entwicklersicht stellen sich die vier Punkte möglicherweise ganz anders dar. Punkt 1 ist sicherlich ein Mangel in der Benutzerführung; es könnte sein, dass dieses Szenario in der Planung nicht berücksichtigt wurde. Punkt 2 hingegen ist sicherlich ein Bug, der genauer analysiert werden muss, da ein technischer Grund nicht allein aus der Beschreibung abzulesen ist. Die Punkte 3 und 4 könnten womöglich darauf hinweisen, dass die App etwas durchaus Vorgesehenes tut, das aber für den Anwender unverständlich bleibt. Dieses Problem könnte zu beheben sein, indem in der Benutzerschnittstelle entsprechendes Feedback angezeigt und somit die Erwartungshaltung des Anwenders modifiziert wird.

Bessere Software für den Anwender

Ich glaube persönlich, dass wir alle wesentlich bessere Software bauen können, wenn wir mehr darauf achten, was der Anwender will. Wir könnten auf diese Weise auch bekannte Probleme lösen, die sich im Anwenderverhalten gebildet haben, ähnlich dem langsamen Durchfahren am Stoppschild. Zum Beispiel wissen wir alle, dass dem Klischee entsprechend die meisten Anwender Sicherheitsabfragen gewöhnlich ignorieren. Es gibt da anscheinend eine spezielle Synapse, die bei den Worten „Möchten Sie wirklich…“ sofort den Mausklick auf JA oder OK auslöst. Noch schneller geht lediglich die Bestätigung von Lizenzbedingungen oder EU-Cookie-Warnungen. Der Anwender nimmt sich nicht die Zeit, „Sind Sie sicher, dass ‚format c:‘ der Schritt der Wahl ist“ zu lesen, sondern vertraut der Abkürzung, die sein Hirn auf der Stelle anbietet: „Klicken Sie OK, um die Software weiter zu benutzen.“ Warum ist das so? Ganz einfach: Weil der Mechanismus des modalen Dialogs über derartig lange Zeit missbraucht worden ist, dass der Anwender keine Geduld mehr hat, ein echtes Verständnis für die gegebene Problematik zu entwickeln. Es gibt Software, die modale Dialoge wie diesen anzeigt: „Der Export ist fertig“; da brauchen wir uns über das wenig überlegte Anwenderverhalten nicht zu wundern.

Wenn wir nun einen Anwender fragen: „Sag mal, wie soll ich dir denn bitte eine Meldung anzeigen, die wirklich wichtig ist?“, dann wird der Anwender vermutlich vorschlagen, dass dies in einer Form geschehen sollte, die folgenden Regeln gehorcht:

  1. Die Meldung muss unübersehbar sein
  2. Die Meldung darf nicht gerade der noch wichtigeren Arbeit im Weg sein.
  3. Wenn die Meldung versehentlich weggeklickt oder falsch beantwortet wird, muss es möglich sein, etwaige unangenehme Konsequenzen wieder rückgängig zu machen.

Denken Sie da mal drüber nach … Ich habe das getan und bin zu der Ansicht gekommen, dass Punkt 3 eigentlich der wichtigste ist. Wenn ich davon ausgehe, dass dieser Punkt unumgänglich notwendig ist, komme ich zu einer neuen Frage: Wozu brauche ich eigentlich wichtige Meldungen in meiner Software? Was wollen wir denn den Anwender dauernd fragen? Kein Wunder, dass die meisten Meldungen im Anwenderhirn sofort in „Soll ich meine Arbeit tun?“ umgestellt werden! Ein funktionierender Undo-Button ist eine so viel bessere Idee als eine Reihe von Sicherheitsabfragen – wir wissen, wie man Undo-Buttons programmiert. Also los! Irgendwann dachte man vielleicht noch, dass das Löschen großer Datenmengen beim Undo eine Ausnahme rechtfertigen sollte – aber selbst das ist heute in den meisten Fällen eine haltlose Ausrede.

Nun gibt es zum Thema Erwartungen noch mehrere andere Perspektiven mit Bezug zur Softwareentwicklung. Ich schlage noch einmal die Brücke zu Blazor. Nachdem ich besagte Videos publiziert hatte, gab es dort Kommentare zur neuen Technologie. Diese waren sehr unterschiedlich, aber doch oft vorhersehbar: „Oh je, ein neues Silverlight“, „Super, alles in C# jetzt, ich hasse JavaScript“ oder auch „Kann ich das auch mit WebServices machen?“.

Da haben wir also den Skeptiker, der jeder neuen Microsoft-Idee pauschal abwehrend gegenübersteht. Dann den Verfechter der bekannten Theorie „Gestern war alles besser, Neuerungen sind Teufelswerk“ (auch bekannt als „nach Cobol die Sintflut“) und letztlich eine fehlerhafte Einordnung der neuen Technologie seitens des „Erst fragen, dann denken“-Pragmatikers. Wenn mein Tonfall in den letzten Sätzen abwertend klang, soll das als zusätzlicher Beweis dienen: Der Umgang mit Erwartungen ist schwierig! Manche Programmierer wollen gern dauernd was Neues, egal wie gut das Alte funktionierte; andere wollen dieselben Werkzeuge möglichst für immer verwenden. Ich selbst habe die Erwartung – oder zumindest die Hoffnung – dass der Wert der übergreifenden Perspektive jederzeit akzeptiert wird!

Fazit

Unterschätzen Sie nicht den Stellenwert von Erwartungen aufseiten Ihrer Anwender. Wenn Sie können, schreiben Sie Software genau entlang dieser Erwartungen und lassen Sie Ostereier die einzigen Überraschungen bei der Bedienung Ihrer Programme sein! Andererseits versuchen Sie selbst, sich in Flexibilität zu üben, als Anwender, und erst recht als Entwickler. Nur so können wir in Zukunft Software schreiben, die objektiv besser ist als die von gestern.

Der Beitrag Tipps für ein gelungenes Softwaredesign: Der Wert von Erwartungen ist auf entwickler.de erschienen.

]]>
https://entwickler.de/online/windowsdeveloper/webassembly-blazor-softwaredesign-erwartungen-579902437.html/feed 0
Windows 10 Insider Preview Build 18963 erschienen: GPU-Temperatur im Taskmanager https://entwickler.de/online/windowsdeveloper/windows-10-insider-preview-build-18963-579904894.html https://entwickler.de/online/windowsdeveloper/windows-10-insider-preview-build-18963-579904894.html#respond Mon, 19 Aug 2019 09:43:01 +0000 https://entwickler.de/?p=579904894 Windows 10 Insider Preview Build 18963 bringt einige neue Features mit, darunter die Anzeige der GPU-Temperatur für dedizierte Grafikkarten im Taskmanager. Schrittweise ausgerollt werden die Möglichkeit zur Umbenennung virtueller Desktops und Usability-Änderungen für optionale Features.

Der Beitrag Windows 10 Insider Preview Build 18963 erschienen: GPU-Temperatur im Taskmanager ist auf entwickler.de erschienen.

]]>
Windows 10 Insider Preview Build 18963 bringt einige neue Features mit, darunter die Anzeige der GPU-Temperatur für dedizierte Grafikkarten im Taskmanager. Schrittweise ausgerollt werden die Möglichkeit zur Umbenennung virtueller Desktops und Usability-Änderungen für optionale Features.

Microsoft hat Windows 10 Insider Preview Build 18963 für Fast Ring Insider veröffentlicht. Der Build aus dem Entwicklungszyklus 20H1 bringt eine Reihe von neuen Features mit, die unter anderem den Taskmanager, virtuelle Desktops und optionale Features betreffen. Manche der Neuerungen sind jedoch noch nicht für alle verfügbar, sondern werden innerhalb der nächsten Wochen während einer Evaluierung weiter ausgerollt.

GPU-Temperaturanzeige und virtuelle Desktops

Im neuen Insider Preview Build wurde die Temperaturanzeige dedizierter Grafikkarten im Taskmanager hinzugefügt. Der Grafiktreiber muss dazu möglicherweise aktualisiert werden, um WDDM Version 2.4 oder höher zu unterstützen. Die aktuelle Version kann via Win + R und Eingabe von dxdiag eingesehen werden. Im Anzeige-Tab wird dann die WDDM-Version neben dem Treibermodell aufgeführt.

Sind die Voraussetzungen erfüllt, wird die Temperatur in Celsius im Taskmanager unter dem Tab „Leistung“ angezeigt:

GPU-Temperatur in Windows 10 Insider Preview Build 18963; Quelle: Microsoft

Insider Preview Build 18963 bringt zudem die Möglichkeit zur Umbenennung virtueller Desktops mit. Das soll für mehr Übersichtlichkeit sorgen, betrifft jedoch bislang nur 50 % der Fast Ring Insider. Im Laufe der nächsten Wochen sollen noch weitere Insider in den Genuss des neuen Features kommen. Microsoft zeigt schon einmal, wie das aussieht:

Virtuelle Desktops umbenennen in Windows 10 Insider Preview Build 18963; Quelle: Microsoft

Der Name eines Desktops kann als editierbares Feld angeklickt werden, wenn die Task-Ansicht durch das Taskleistensymbol „Aktive Anwendungen“ oder Win + Tab geöffnet wird. Ein Rechtsklick auf den jeweiligen Desktop führt ebenfalls zur Option Umbenennen. Sämtliche Zeichen, inklusive Emojis, können im Namen enthalten sein. Die Namensänderungen sollen auch nach einem Neustart erhalten bleiben.

Weitere Neuerungen

In Build 18963 wurde an der Usability für die Verwaltung optionaler Features unter Einstellungen > Apps > Optionale Features gearbeitet. Unter anderem können nun mehrere optionale Features gleichzeitig ausgewählt und installiert werden. Diese Änderungen sind ebenfalls erst für 50 % der Fast Ring Insider freigegeben und werden innerhalb der nächsten Wochen weiter ausgerollt.

Mit der Ankündigung des neuen Insider Preview Builds wurde auch eine weitere Änderung mitgeteilt, die Nutzer außerhalb des Insider-Programms betrifft: Das neue Suchfenster, das mit Windows 10 May 2019 Update eingeführt wurde, wird auf das Windows 10 October 2018 Update ausgeweitet. Die Suchseite zeigt unter anderem die Top-Apps und letzten Aktivitäten an:

Suchfenster ab Windows 10 October 2018 Update; Quelle: Microsoft

Alle Neuerungen in WIndows 10 Insider Preview Build 18963 und die Liste der 16 enthaltenen Bugfixes sind im Windows-Blogeintrag aufgeführt.

Der Beitrag Windows 10 Insider Preview Build 18963 erschienen: GPU-Temperatur im Taskmanager ist auf entwickler.de erschienen.

]]>
https://entwickler.de/online/windowsdeveloper/windows-10-insider-preview-build-18963-579904894.html/feed 0
Node.js Security-Updates August 2019: Node v8.16.1, v10.16.3 und v12.8.1 beheben acht Sicherheitslücken https://entwickler.de/online/javascript/node-js-security-updates-august-2-579904882.html https://entwickler.de/online/javascript/node-js-security-updates-august-2-579904882.html#respond Mon, 19 Aug 2019 08:13:41 +0000 https://entwickler.de/?p=579904882 Node.js erhält jeden Monat ein umfassendes Sicherheitsupdate für alle derzeit aktiven und in der LTS-Phase befindlichen Releasezweige. Derzeit sind das Node 8, 10 und 12. Gefixed wurden für alle drei Versionen nun gleich acht Sicherheitslücken.

Der Beitrag Node.js Security-Updates August 2019: Node v8.16.1, v10.16.3 und v12.8.1 beheben acht Sicherheitslücken ist auf entwickler.de erschienen.

]]>
Node.js erhält jeden Monat ein umfassendes Sicherheitsupdate für alle derzeit aktiven und in der LTS-Phase befindlichen Releasezweige. Derzeit sind das Node 8, 10 und 12. Gefixed wurden für alle drei Versionen nun gleich acht Sicherheitslücken.

Node.js hat drei Updates bekommen. Node v8.16.1, v10.16.3 und v12.8.1 sind da! Diese Häufung der Releases deutet bereits darauf hin, dass es sich um eine koordinierte Aktion handelt. So ist es auch: Die drei genannten Versionen wurden im Rahmen der August-Security-Updates für Node.js veröffentlicht. Behoben wurden acht Sicherheitslücken.

Node.js: Sicherheitsupdates im August

Data Dribble, Ping Flood, Resource Loop, Reset Flood, Settings Flood, 0-Length Headers Leak, Internal Data Buffering und Empty Frames Flood: So heißen die acht geschlossenen Sicherheitslücken, die in Node.js gefunden worden waren. Bei letzterem handelt es sich um genau das, was der Name bereits besagt. Bei der Empty Frames Flood wird eine große Zahl leerer Frames ohne End-of-Stream-Flag gesendet, wodurch so viel Bandbreite und CPU verbraucht werden können, dass sogar ein Denial of Service möglich wäre. Ähnlich funktioniert auch der Angriff „Resource Loop“, bei dem multiple Request-Streams erzeugt werden, deren Priorität sich kontinuierlich verändert. So soll der Priority Tree durcheinander gebracht und eine hohe CPU-Auslastung erzeugt werden.

Alle genannten Angriffe sind in den nun veröffentlichten Node-Versionen aber nicht mehr möglich. Genauere Informationen zu den gefixten Sicherheitslücken sowie den neuen Versionen von Node.js können dem offiziellen Node-Blog entnommen werden.

Der Beitrag Node.js Security-Updates August 2019: Node v8.16.1, v10.16.3 und v12.8.1 beheben acht Sicherheitslücken ist auf entwickler.de erschienen.

]]>
https://entwickler.de/online/javascript/node-js-security-updates-august-2-579904882.html/feed 0
Agile, Micro Frontends & UX-Design – Unsere Top-Themen der Woche https://entwickler.de/online/development/agile-micro-frontends-ux-wochenrueckblick-kw33-579904531.html https://entwickler.de/online/development/agile-micro-frontends-ux-wochenrueckblick-kw33-579904531.html#respond Mon, 19 Aug 2019 07:55:04 +0000 https://entwickler.de/?p=579904531 Gibt es bald einen Dialekt für PHP? Wie funktioniert das mit der User Experience? Was hat Agile in der Familie zu suchen? Antworten auf diese Fragen geben wir euch in den Beiträgen, die wir in diesem Wochenrückblick für euch zusammengestellt haben.

Der Beitrag Agile, Micro Frontends & UX-Design – Unsere Top-Themen der Woche ist auf entwickler.de erschienen.

]]>
Gibt es bald einen Dialekt für PHP? Wie funktioniert das mit der User Experience? Was hat Agile in der Familie zu suchen? Antworten auf diese Fragen geben wir euch in den Beiträgen, die wir in diesem Wochenrückblick für euch zusammengestellt haben.

Eine spannende Woche liegt hinter uns! Die Idee eines neuen PHP-Dialekts namens P++ sorgte für Unruhe in der Community. Eine neue Artikelserie zu UX-Design hat begonnen. In Kalenderwoche 33 haben wir uns auch angesehen, wie Microservices im Frontend funktionieren können. Und Agile wird jetzt auch in der Familie gelebt. Viele spannende Beiträge zu den unterschiedlichsten Themenbereichen füllen diesen Wochenrückblick.

P++: Ein neuer Dialekt für PHP?

P++: Ein PHP-Dialekt, der die Community vereint? Die Community sieht es anders und stimmt in einer internen Abstimmung gegen den von Zeev Suraski eingebrachten Vorschlag. Am Ende stimmt sogar Zeev Suraski selbst gegen seinen eigenen Vorschlag, wie Ihr im Beitrag dazu lesen könnt.

Auf die User Experience kommt es an!

Bei der Entwicklung eines neuen Projektes kommt es auch auf die User Experience an. Sie muss stimmen, denn wenn Kunden sich nicht wohlfühlen, werden sie ihr Geld auch nicht investieren. Wir haben in der vergangenen Woche eine neue Artikelserie gestartet. Darin erklärt Felix van de Sand, Managing Director und Co-Gründer von COBE, was User Experience eigentlich bedeutet. Außerdem zeigt er wie man sein Produkt praktisch bestmöglich auf den Nutzer und dessen Verwendung hin optimiert.

Hier gelangt ihr zum ersten Teil der Artikelserie: „Mehr als nur ein schöner Look: So funktioniert modernes UX-Design“

Den Monolith fachgerecht zerlegen

Microservice-Architektur im Frontend? Das geht! Sebastian Springer geht in seinem Beitrag näher auf den Trend der Micro Frontends oder auch Micros Apps ein. Fokus stehen die zahlreichen Bibliotheken und Hilfsmittel, die rund um den Architekturansatz entwickelt wurden.

State-Management mit Angular und NgRx

Angular ist auch für große Businessapplikationen gut geeignet. Das zeigt Fabian Gosebrink in seinem Beitrag. Denn Angular ermöglicht die Entwicklung gut strukturierter, wart- und testbarer Architekturen. Außerdem erklärt Fabian Gosebrink, was State ist und geht auf das Projekt NgRx ein und zeigt welches Problem damit gelöst werden kann.

Gelebte Agilität daheim

Agile auch in der Familie leben? Die heimische Anwendung agiler Ideen birgt ganz eigene Herausforderungen, wie Jürgen Knuplesch im 12. Teil seiner sehr realen und doch erfundenen Geschichte des Scrum Masters aufzeigt.

Weitere Must-Reads der Woche:

Der Beitrag Agile, Micro Frontends & UX-Design – Unsere Top-Themen der Woche ist auf entwickler.de erschienen.

]]>
https://entwickler.de/online/development/agile-micro-frontends-ux-wochenrueckblick-kw33-579904531.html/feed 0
WebView2Browser: Microsoft zeigt die WebView2 Control in Aktion https://entwickler.de/online/windowsdeveloper/microsoft-edge-webview2-control-webview2browser-579904761.html https://entwickler.de/online/windowsdeveloper/microsoft-edge-webview2-control-webview2browser-579904761.html#respond Mon, 19 Aug 2019 07:25:00 +0000 https://entwickler.de/?p=579904761 Microsoft Edge WebView2, aktuell noch im Preview-Status, soll Vorteile gegenüber WebView bringen und das Entwickeln hybrider UWP- und Win32-Apps erlauben. Um die Möglichkeiten der WebView2 Control zu demonstrieren, hat Microsoft die Beispielanwendung WebView2Browser entwickelt.

Der Beitrag WebView2Browser: Microsoft zeigt die WebView2 Control in Aktion ist auf entwickler.de erschienen.

]]>
Microsoft Edge WebView2, aktuell noch im Preview-Status, soll Vorteile gegenüber WebView bringen und das Entwickeln hybrider UWP- und Win32-Apps erlauben. Um die Möglichkeiten der WebView2 Control zu demonstrieren, hat Microsoft die Beispielanwendung WebView2Browser entwickelt.

Die WebView2 Control nutzt den neuen Microsoft-Edge-Browser auf Chromium-Basis als Rendering Machine und macht das Hosting von Webinhalten in nativen UWP- und Win32-Apps möglich. Damit wurde die Beispielanwendung WebView2Browser erstellt, wovon sowohl andere Entwickler als auch durch Feedback das WebView2-Team profitieren sollen. Die Developer Preview des WebView2 SDK liegt derzeit in Version 0.8.230 als NuGet Package vor.

WebView2Browser

WebView2Browser ist ein Webbrowser, der als eine Art tiefergehendes Code Sample für WebView2 dienen soll. Zu den Features zählen alle einfacheren Grundfunktionen eines Webbrowsers, z. B. Optionen für vorwärts und rückwärts navigieren, aktualisieren, multiple Tabs und Favoriten erstellen sowie Cache und Cookies löschen. Daneben sind auch komplexere Workflows wie die Verwendung des PostWebMessageAsJson API zur Kommunikation von WebViews in unterschiedlichen Umgebungen mit an Bord.

Und so sieht der WebView2Browser aus:

WebView2Browser; Quelle: Microsoft

Um die Beispielanwendung auszuprobieren, werden Visual Studio mit C++-Support und ein Insider Preview Build des Chromium-basierten Edge-Browsers benötigt. Empfohlen wird ein Build aus dem täglich aktualisierten Canary Channel, mindestens Version 78.0.240.0. Dann kann das Repository geklont und das Projekt in Visual Studio 2019 unter Windows 10 gestartet werden. Mit einigen Anpassungen ist auch die Verwendung in früheren Windows-Versionen sowie mit Visual Studio 2017 möglich.

Alle weiteren Informationen zum WebView2Browser hält das GitHub Repository bereit, und auch ein Blogeintrag wurde dazu verfasst.

Der Beitrag WebView2Browser: Microsoft zeigt die WebView2 Control in Aktion ist auf entwickler.de erschienen.

]]>
https://entwickler.de/online/windowsdeveloper/microsoft-edge-webview2-control-webview2browser-579904761.html/feed 0
SQL Azure: Stand der Dinge https://entwickler.de/online/datenbanken/sql-azure-579882258.html https://entwickler.de/online/datenbanken/sql-azure-579882258.html#respond Mon, 19 Aug 2019 07:19:17 +0000 https://entwickler.de/?p=579882258 Alles zum aktuellen Stand der SQL-Azure-Datenbank erfahren Sie in dieser BASTA!-Session von Thorsten Kansy.

Der Beitrag SQL Azure: Stand der Dinge ist auf entwickler.de erschienen.

]]>
Alles zum aktuellen Stand der SQL-Azure-Datenbank erfahren Sie in dieser BASTA!-Session von Thorsten Kansy.

Was kann die aktuelle SQL-Azure-Datenbank, und was hat sich in den letzten Jahren (Positives) getan? Diese BASTA!-Session schafft hier Klarheit und zeigt, welche Neuerungen in der Praxis bereits angekommen sind und welche wohl eine gute Chance haben. Spuren von Codebeispielen und Praxisanwendungen ausdrücklich nicht ausgeschlossen.

Der Speaker: Thorsten Kansy

Thorsten Kansy ist seit über 25 Jahren als unabhängiger Softwarearchitekt, Entwickler und Trainer international tätig. Zudem schreibt er Bücher und Artikel rund um seine Spezialthemen: die Entwicklung komplexer Anwendungen mit .NET im Microsoft-Serverumfeld, insbesondere SQL Server (Data Platform und Business Intelligence). Er ist MCITP, MCTS, MCDBA, MCSD, MCAD, MCPD, MCSE+I und MCT-zertifiziert und sowohl in den Sprachen C# als auch VB.NET zu Hause. Sie erreichen ihn unter tkansy@dotnetconsulting.eu oder auf Twitter: @tkansy.

Der Beitrag SQL Azure: Stand der Dinge ist auf entwickler.de erschienen.

]]>
https://entwickler.de/online/datenbanken/sql-azure-579882258.html/feed 0