Sie sind hier : sebastian1012.bplaced.net/ homepage-neu / neuigkeiten / Entwickler-Blog.php

https://entwickler.de/feed/rss2

Auf dem Weg zu Angular 9: rc.9 mit Features und Bugfixes veröffentlicht (16.01.2020 10:01:16)

Das wichtigste zuerst: Angular 9 ist immer noch nicht da Stattdessen ist mit v900-rc9 ein weiterer Release Candidate veröffentlicht worden, der erneut Bugfixes und neue Features mitbringt

Angular 8 hat mit höflicher Verspätung im Juni das Licht der Welt erblickt Doch nach dem Release ist vor dem Release und bereits im Herbst dieses Jahres sollte eigentlich Angular 9 auf dem Plan stehen, genauer: im Oktober oder November sollte es soweit sein Schon zu Beginn des Jahres sah dies ambitioniert aus, das der neue Ivy Compiler dringend Teil des Releases werden sollte Nun steht fest: Angular 9 verspätet sich drastischer, als zunächst angenommen

Angular 9 … verspätet sich

Letzte Woche erschien mit Angular 900-rc6 der siebte Release Candidate Noch dazu ist es die Jahreszeit, in der wir auf Geschenke gefasst sind, kein Wunder also, dass man mit der Auslieferung eines Angular-förmigen Päckchens bereits fest gerechnet hat Doch das Team von Angular besteht ebenfalls aus Menschen, die gerne bei ihren Familien und ihren Liebsten sein möchten Verständlich, hat dieses Release doch bereits sehr viel an Kreativität, Kraft und Energie gekostet

Deswegen hat Jules Kremer, Google Engineering Manager, gestern via Twitter angekündigt, das finale Release von Angular 9 auf das kommende Jahr zu verschieben So wird nicht nur sichergestellt, dass das Release makellos ist, sondern auch, dass die Verantwortlichen im nächsten Jahr Kraft für das Jubiläums-Release Angular 10 haben werden

Alle, die brennend auf die neue Angular-Version mit Ivy gewartet haben, werden jetzt wohl enttäuscht sein Aber wenigstens können wir dann einem ereignisreichen und actiongeladenen Januar entgegenblicken ? und so ein Kickstart ins nächste Jahrzehnt ist ja auch nicht das Verkehrteste In der Zwischenzeit kann man sich über die Feiertage mit Manfred Steyers fantastischer Session von der International JavaScript Conference zum Thema „The Future of Angular and your Architectures with Ivy“ befassen:


Angular 9: Die Release Candidates

Angular 900-rc9

Update vom 16 Januar 2020

Es geht weiter mit Release Candidates: Mit v900-rc9 hat das Angular-Team erneut Bugfixes und Neuerungen an Features für das anstehende Major Release veröffentlicht Die Zahl der behobenen Fehler ist erneut hoch, die Bugs befanden sich in unterschiedlichen Teilen des Frameworks Ivy gehört natürlich dazu und hat neben Bugfixes un einer Feature-Änderung auch einige Performance-Verbesserungen erhalten Zu den weiteren neuen Features am Release gehört, dass Währungscodes nun in den Locale-Daten gespeichert werden Auch für den Language-Service gab es drei Neuerungen auf Feature-Ebene für diesen Release Candidate: Template-Referenz-Variablen können jetzt automatisch vervollständigt werden, gleiches gilt für die $event-Variable Für Structural Directives steht jetzt außerdem eine Hoover-Definition zur Verfügung

Weitere Informationen können wie immer dem Changelog auf GitHub entnommen werden


Angular 900-rc8

Update vom 9 Januar 2020

Angular 9 ist noch immer nicht da Stattdessen wurde nun erneut ein Release Candidate für das anstehende Major Release veröffentlicht: Mit Angular 900-rc8 wurden Bugs behoben, Features implementiert und eine Verbesserung an der Performance vorgenommen Letzteres fand natürlich wieder im Bereich von Ivy statt Der Template Type Checker des neuen Compilers kann nun mit einfachen Generic Type Constraints in lokalen Type Constructors umgehen Auch Bugfixes gab es für Ivy, beispielsweise für TestBed und i18nExp Zu den neuen Features im Release Candidate gehört, dass der Language Service nun in VS Code Definitionen über den Hoover-Effekt anzeigt, wenn dieser auf einem Property oder Selector liegt

Weitere Informationen zum neuen Release Candidate können wie immer dem Changelog auf GitHub entnommen werden


Angular 900-rc7

Update vom 19 Dezember 2019

Auch wenn Angular 9 auf nächstes Jahr verschoben wurde, beginnt die Urlaubssaison für das Team noch nicht ganz: Auch in der Woche vor Weihnachten wird noch fleißig an der Performance des Frameworks und am Bugfixing gearbeitet Doch auch ein paar kleinere neue Features wurden implementiert Unter anderem wird nun ein Fehler in Ivy ausgegeben, wenn ein ctor von einer undekorierten Basis geerbt wird Und Ivy wirft auch einen Compilation Error, wenn undekorierte Klassen bereitgestellt werden

In Sachen Performance ging es natürlich ebenfalls um Ivy und den Standard-Compiler Der Compiler verarbeitet nun schneller i18n-Berechnungen, Ivy auf der anderen Seite kann nun unter anderem Analysen, die während inkrementellen Builds erstellt wurden, wiederverwenden


Angular 900-rc6

Update vom 12 Dezember 2019

Die Zahl der Release Candidates für Angular 9 steigt Nach RC5 ist nun auch RC6 erschienen Behoben wurden erneut einige Bugs, außerdem hat der neuste Release Candidate zwei Performance-Verbesserungen an Ivy im Gepäck Gearbeitet wurde für die Performance am Umgang mit Listener- und Styling-Instructions Diese werden nun jeweils verknüpft, wenn mehrere davon vorhanden sind, damit weniger Code generiert werden muss Bugfixes gab es außerdem nicht nur für Ivy, sondern auch für weitere Bereiche des Frameworks, wie den Kompatibilitäts-Compiler ngcc Dort wurde unter anderem ein Fehler an der Bestimmung des Package Path behoben, sodass nun immer das Bundle rootDir verwendet wird

Auch im vorherigen Release, Angular 900-rc5, zeigte sich schon ein ähnliches Bild Bugfixes und Performance standen im Fokus, nicht die Feature-Entwicklung Angular 9 war für Ende 2019 angekündigt worden, ein finaler Release-Termin ist jedoch nicht bekannt


Angular 900-rc4

Update vom 21 November 2019

Ein weiterer Release Candidate von Angular 9 ist verfügbar Mit Angular 900-rc4 wurden erneut zahlreiche Fehler behoben, darunter viele an Ivy Beispielsweise findet in AOT-kompilierten Komponenten nun kein Check auf unbekannte Komponenten zur Runtime mehr statt, da dies in manchen Fällen fehlschlug, obwohl die Überprüfung während des Kompilierens erfolgreich durchgeführt wurde Aber auch andere Teile von Angular wurden verbessert, so beispielsweise der Kompatibilitäts-Compiler ngcc, an dem ebenfalls einige Fehler behoben wurden ngcc stürzt nun beispielsweise nicht mehr ab, wenn Types als Array spezifiziert werden

Der neuste Release Candidate von Angular 9 bringt außerdem zwei Feature-Neuerungen am Language-Service mit Dort stehen nun Vervollständigungen für indexierte Types und Tuple Arrays zur Verfügung Für die Performance gibt es ebenfalls News: drei Neuerungen an Ivy sollen Angular 9 schneller machen

Weitere Informationen zum neuen Release Candidate können dem Changelog auf GitHub entnommen werden


Angular 900-rc3

Update vom 21 November 2019

Angular 9 hat einen weiteren Release Candidate erhalten Die neuste Version, Angular 900-rc3, bringt vornehmlich eine lange Reihe von Bugfixes mit Aber auch zwei Feature-Updates und vier Performance-Verbesserungen für Ivy sind mit dabei Zu letzteren gehört beispielsweise, dass Public Input Names nun nicht mehr an zwei Orten gespeichert werden und ein Micro-Benchmark für Directive Input Updates hinzugefügt wurde

Ivy sticht auch unter den Bugfixes hervor: Insgesamt 17 Fehler am neuen Compiler wurden zu diesem Release Candidate behoben Darunter sind zwei Neuerungen für den i18n-Bereich, wo nun das Zeichen : in $localize-Messages korrekt escaped wird Dadurch wird es richtig als Marker für Metadaten interpretiert Außerdem werden die Sequenzen "", "`" und "${" nun in $localize-Messages unterstützt

Die neuen Features betreffen dieses Mal jedoch nicht den Compiler, sondern Bazel und den Core Für Bazel wurde ein Upgrade auf v110 vorgenommen Am Core wurde an der Missing-Injectable Migration gearbeitet, die nun auch leere Object Literal Providers migriert

Weitere Informationen zum neusten Release Candidate von Angular 9 können wie immer dem Changelog auf GitHub entnommen werden


Angular 900-rc2

Update vom 14 November 2019

Der neuste Release Candidate zu Angular 9 arbeitet weiter an der Performance Dieses Mal findet sich die entsprechende Änderung jedoch im Core wieder und betrifft nicht Ivy Factories in providerToRecord werden nur noch erzeugt, wenn es wirklich notwendig ist Im Bereich von Ivy wurden hingegen einige Neuerungen ausprobiert und gleich wieder zurückgezogen Drei Reverts finden sich im Release, die zu Problemen geführt hatten Darüber hinaus bringt Angular 900-rc2, also der dritte Release Candidat, nur eine Reihe von Bugfixes mit, die wie immer im Changelog auf GitHub nachgelesen werden können


Angular 900-rc1

Update vom 7 November 2019

Der zweite Release Candidate für Angular 9 bringt einige Neuerungen mit Anders als das erste RC-Release zeigt sich hier wieder, dass doch noch einiges an der neuen Major-Version des Frameworks in Arbeit ist Natürlich wurden zahlreiche Bugs behoben, darunter beispielsweise einer im Bereich des i18n-Supports in Ivy Hier wurde an den Fehlermeldungen an sich gearbeitet, die nun aussagekräftiger sein sollen Für Ivy gab es aber auch wieder neue Features Der Compiler erkennt nun unbekannte Elemente während des Renderings auch dann, wenn der Just-in-Time-Modus genutzt wird Bisher war diese Funktion in Ivy nur im Ahead-of-Time-Rendering verfügbar Auch für den statischen Interpreter gab es eine Neuerung zum Umgang mit unbekannten oder ungültigen Ausdrücken Was sich daran geändert hat, kann im entsprechenden Pull Request nachgelesen werden

Auch die Performance spielt noch immer eine Rolle in der Entwicklung der neuen Version von Angular Hierfür wurden sechs Änderungen an Ivy im zweiten Release Candidate ausgeliefert Einen Überblick über alle Änderungen an der Version gibt das Changelog auf GitHub


Angular 900-rc0

Update vom 4 November 2019

Der erste Release Candidate für Angular 9 ist da Damit macht das Angular-Team einen großen Schritt in Richtung des nächsten Major Release Die RC-Phasen der vorherigen Releases waren vergleichsweise kurz: Für Angular 8 gab es sechs RC-Versionen, Angular 7 kam sogar mit nur einer aus, sodass das finale Release im vergangenen Jahr direkt auf RC0 folgte

Wie viele Release Candidates Angular 9 bekommen wird, ist unbekannt Die Arbeit an größeren Neuerungen und Breaking Changes scheint jedoch schon weitgehend abgeschlossen zu sein Der erste Release Candidate bringt laut Changelog keine Änderungen mit, verweist dafür aber bereits auf den offiziellen Update-Guide zur neuen Version Dort werden alle wichtigen Neuerungen an v9 zusammengefasst So bringt die Version drei Breaking Changes mit, die nun in der Überblicksdarstellung abgelesen werden können Dazu gehört, dass Ivy bekanntlich zum Standard-Compiler gemacht wird und Angular 9 TypeScript 36 voraussetzt Außerdem zählt die Veränderung bei tslib weiterhin als Breaking Change, da es ja als Peer Dependency eingebunden wurde


Angular 9: Die Next-Versionen

Angular 900-next15

Update vom 31 Oktober 2019

Angular 900-next15 legt den Schwerpunkt auf der Behebung von Fehlern Nachdem zuletzt Ivy im Zentrum der Feature-Entwicklung stand, zeigen die Release Notes zur neusten Next-Version, dass natürlich weiterhin auch an anderen Teilen des Frameworks gearbeitet wird So gehören zwar erneut die meisten der behobenen Fehler im Release in den Bereich des neuen Compilers, unter den Features finden sich aber neben einer Neuerung für Ivy auch zwei für Bazel und eine für den Language-Service Bei Bazel wurde eine Aktualisierung des Schematics auf die kürzlich veröffentlichte Version 100 vorgenommen Außerdem arbeitet das Bazel Schematics jetzt mit Ivy und dem neuen Rollup_Bundle, das die Legacy-Version ersetzt Im Feature-Bereich wurde bei Ivy selbst weiter am i18n-Support gearbeitet Für den Language-Service ist ein Feature implementiert worden, das die Ersetzung getippter Texte durch Vorschläge erlaubt Auch eine Änderung zur Performance-Verbesserung durch Ivy ist wieder dabei, dieses Mal für Directives ohne Selector

Weiter Informationen zur neuen Version und allen Änderungen darin sind wie immer auf GitHub nachlesbar


Angular 900-next14

Update vom 28 Oktober 2019
Noch ist Angular 9 nicht fertig Auf dem Weg zum in Kürze erwarteten Major Release steht nun erneut ein Next-Build zur Verfügung, der eine ganze Reihe von Neuerungen mitbringt Wieder dreht sich das Release vor allem um Ivy So gibt es in dieser Version gleich drei Performance-Verbesserungen für den neuen Compiler, sowie zahlreiche Features Dazu zählt beispielsweise, dass die Landesangabe für die Internationalisierung nun über ein globales Property erfolgen kann, das zur Runtime ausgelesen wird Daneben wurden dem Angular Compatibility Compiler ngcc einige Migrations hinzugefügt Weitere Informationen zur neuen Version können wie immer dem Changelog auf GitHub entnommen werden


Angular 900-next13

Update vom 25 Oktober 2019

Angular 900-next13 bringt neue Features und Bugfixes mit Auch ein Breaking Change ist mit an Bord, der Bazel betrifft: Der Workspace @angular/bazel ng_setup_workspace wird nicht länger benötigt und wurde daher entfernt Stattdessen wird davon ausgegangen, dass rules_nodejs in der Workspace-Datei bezogen wird und keine weiteren Abhängigkeiten verbleiben Daher soll es genügen, alle Aufrufe für diese Funktion sowie das entsprechende Load Statement zu entfernen

Als neues Feature für den Core wurde ein generischer Typ für ModuleWithProviders hinzugefügt, der den Modultyp definiert Er soll für alle Nutzer in Angular 10 benötigt werden, in Angular 9 dagegen nur für Ivy-Nutzer Ivy erhält für Shim Generation eigene Compiler-Optionen und auch bei NgModules gibt es Neuerungen Auf ein Request hin sind in Angular 900-next13 zudem private NgModules-Re-Exporte in ngcc möglich Alle Neuerungen in der aktuellen Next-Version sind im Changelog auf GitHub nachzulesen


Angular 900-next12

Update vom 21 Oktober 2019

Mit dem Release von Angular 900-next12 unterstützt das Framework nur noch TypeScript 36, nicht mehr die Vorgänger-Versionen 34 und 35 Damit bringt auch dieses Next-Release wieder einen Breaking Change mit Das ist allerdings der einzige Weitere Neuerungen betreffen erneut die Performance mit Ivy Hier wurde unter anderem an der Initialisierung von statischen Attributen in Templates gearbeitet, die jetzt nur noch im ersten Durchgang stattfindet

Zu den Feature-Neuerungen an Angular 900-next12 gehört, dass nun Typechecking für Event Bindings mit Ivy zur Verfügung steht Ebenfalls in den Bereich von Ivy fällt das vereinfachten Debugging für Styles und Classes Einige Neuerungen, darunter ein Flag, das BootstrapOptions hinzugefügt wurde, mussten allerdings bereits zurückgezogen werden Genauere Informationen dazu können wie immer über das Changelog auf GitHub gefunden werden


Angular 900-next11

Update vom 16 Oktober 2019

Die TypeScript-Runtime-Bibliothek tslib ist keine direkte Dependency von Angular mehr Mit der Veröffentlichung von Angular 900-next11 ist tslib in den Status einer Peer-Dependency übergegangen Für Nutzer, die das Angular-CLI nicht verwenden, stellt das einen Breaking Change dar, da sie tslib nun manuell installieren müssen Auch für Angular Forms bringt v900-next11 einen Breaking Change mit: <ngForm></ngForm> ist entfernt worden und kann nicht mehr als Selector verwendet werden Stattdessen muss nun mit <ng-form></ng-form> gearbeitet werden Zu den Breaking Changes in diesem Kontext gehört auch, dass die entsprechende Warnung entfernt wurde Der dritte Breaking Change an den Forms besteht in der Entfernung von FormsModulewithConfig Stattdessen kann FormsModule direkt verwendet werden

Neben diesen Breaking Changes bringt die neue Next-Version von Angular 9 natürlich auch einige Feature-Änderungen sowie Performance-Verbesserungen und Bugfixes mit Wie schon zuvor in den Next-Releases für Angular 9 zu sehen war, zeigt sich auch hier wieder, dass das Angular-Team an der Fertigstellung des neuen Compilers, Ivy, arbeitet Hier bringt Version Next11 verschiedene Neuerungen mit: Für den i18n-Support in Angular 9 wird mit Ivy ein neues Format eingeführt; wird noch das alte verwendet, musste dies bislang manuell markiert werden Um das Upgrade zu erleichtern, ist enableI18nLegacyMessageFormat nun aber standardmäßig auf true gesetzt worden Zu den weiteren Neuerungen für Ivy gehört, dass nun genauere Fehlermeldungen für unbekannte Komponenten ausgegeben werden, die Informationen dazu enthalten, wie das Problem gelöst werden kann

Das sind natürlich noch nicht alle Neuerungen, die in den Bereich des neuen Compilers fallen Auch die Verbesserungen an der Performance in diesem Release gehören zu Ivy Darunter fällt beispielsweise, dass in setInputsFromAttrs nun striktere Null-Checks ausgeführt werden

Weitere Informationen zu diesen und allen weiteren Neuerungen können wie immer dem Changelog auf GitHub entnommen werden


Angular 900-next10

Update vom 10 Oktober 2019

Angular 900-next10 steht zum Test bereit: Die Arbeit an Angular 9 geht weiter, noch ist die neue Major-Version des Frameworks nicht da Erst einmal wurde nun in der Code-Basis aufgeräumt Renderer, bekannt aus Version 4, ist schon lange deprecated und wurde nun ganz entfernt, inklusive der zugehörigen Symbole Stattdessen muss nun Renderer2 verwendet werden Auch neue Features haben es aber in das Release geschafft Für Ivy sind zwei Neuerungen mit Bezug auf die Internationalisierungs-Funktionen i18n dabei, wie im Changelog nachgelesen werden kann:

  • ivy: i18n – implement compile-time inlining #32881 2cdb3a0
  • ivy: i18n – render legacy message ids in $localize if requested #32937 bcbf3e4

Außerdem gibt es Feature-News für den Core, wo Queries nun standardmäßig dynamisch verarbeitet werden Das static-Flag für ViewChild und ContentChild steht darum nun standardmäßig auf false Dazu wurde das Flag außerdem als optional markiert Weitere neue Features betreffen die Forms, den Language-Service und ngcc

Für die Performance bringt das Update erneut Änderungen an Ivy mit Informationen zu diesen und allen weiteren Änderungen können dem Changelog entnommen werden


Angular 900-next9

Update vom 4 Oktober 2019

Mit Angular 900-next9 haben es vier neue Features in die kommende Major-Version geschafft, einer davon gilt als Breaking Change Dieses Mal handelt es sich dabei jedoch nicht um eine Neuerung an Ivy oder Bazel, sondern um eine Deprecation im Service Worker, die nun entfernt wurde So steht versionedFiles in der Service Worker Asset Group Configuration in ngsw-configjson nicht mehr zur Verfügung

Unter den drei weiteren Feature-Änderungen, die dieses Release mitbringt, findet sich dann aber doch auch der neue Compiler wieder: Mit Ivy kann das Package @angular/localize nun per ng add hinzugefügt werden Ebenfalls zu Ivy gehört die Performance-Verbesserung im Release: Der globale State wird nicht mehr wiederholt aus den i18n Instructions aufgerufen, wenn die Informationen bereits verfügbar sind

Darüber hinaus aktualisiert Angular 900-next9 die notwendige Version der RxJS Dependency auf v653 Auch für den Language Service gibt es eine Neuerung, die das Laden von NgModules betrifft Wenn NgModules aus dem Language Service geladen werden, wird nun geprüft, ob eine aktualisierte Version im Cache vorliegt Ist das der Fall, kann diese genutzt werden

Darüber hinaus wurde eine Reihe von Bugfixes in Angular 900-next9 implementiert Einen Überblick über alle Neuerungen gibt das Changelog auf GitHub


Angular 900-next8

Update vom 26 September 2019

Das neunte Next-Release von Angular 9, v900-next8, bringt nur vier Neuerungen mit, zwei davon sind Bugfixes für Ivy Behoben wurde ein Fehler der im Kontext des Debuggings von Component Elements auftrat Hier werden mit windownggetDebugNode nun die nötigen Debug-Infos ausgegeben Der zweite behobene Bug in Ivy bezieht sich auf Map-basierte Bindings, die unter bestimmten Umständen zwischenliegende Werte übersprangen

Im Release ist auch ein neues Feature enthalten, das im Language Service eingefügt wurde Dieser kann jetzt feststellen, zu welchem NgModule ein Directive gehört Die Performance-Verbesserung findet sich hingegen wieder in Ivy: Der extra SafeStyle Detection Code wurde entfernt

Weitere Informationen zum Release können wie immer dem Changelog auf GitHub entnommen werden


Angular 900-next7

Update vom 19 September 2019

Angular 900-next7 ist da! Erneut bringt die Version eine ganze Reihe neue Features mit, darunter einige Neuerungen für Ivy Auch an der Performance des neuen Compilers wurde gearbeitet Das Release bringt aber auch Breaking Changes mit

Für Ivy wurden mit Version Next7 von Angular 9 unterschiedliche Neuerungen ausgeliefert Darunter sind sowohl Bugfixes als auch neue Features und Performance-Verbesserungen Auch die beiden Breaking Changes im Release hängen mit Ivy zusammen Eine davon betrifft Übersetzungen, die mit der Funktion loadTranslations geladen werden Hier muss nun MessageId für den Key verwendet werden, nicht mehr der String SourceMessage Für die $localize-Funktion haben sich die Imports verändert Der globale Scope wird nun aus @angular/localize/init importiert, während loadTranslations und clearTranslations aus @angular/localize geladen wird Auch dabei handelt es sich um Breaking Changes Zu den Performance Improvements für Ivy gehört, dass Lview in Pipe Instructions und Property Instructions nicht mehr wiederholt gelesen wird Für das DOM wurden unnötige Lesezugriffe in Styling Instructions vermieden Außerdem sind einige weitere Performance-Verbesserungen, Features für den Internationalisierungs-Support in Ivy und Bugfixes für Ivy im Release enthalten

Neben den Neuerungen an Ivy gab es im Release natürlich auch Updates für andere Bereiche von Angular So sind erneut drei Features für den Language-Service enthalten Dazu gehört, dass einige Logging-Methoden für den TypeScript-Host hinzugefügt wurden, mit denen Logfiles erzeugt werden können

Mehr Informationen zu diesen und allen weiteren Neuerungen an Angular 900-next7 können dem Changelog auf GitHub entnommen werden


Angular 900-next6

Update vom 12 September 2019

Mit Angular 900-next6 wurden wieder zahlreiche Neuerungen am Framework veröffentlicht Darunter ist eine ganze Reihe von Bugfixes, aber auch einige Performance-Verbesserungen, Features sowie ein Code-Refactoring, das einen Breaking Change verursacht, haben es in das Release geschafft Deutlich zu sehen ist am Changelog, dass weiterhin an Ivy gearbeitet wird So stehen vier von fünf Performance-Verbesserungen im Zusammenhang mit Ivy; auch unter den Bugfixes finden sich vor allem behobene Fehler am neuen Compiler Darunter ist beispielsweise ein Bug, der durch die in der vorherigen Next-Version vorgenommene Integration von $localize in Ivy entstand Hier wurde zum neusten Release festgelegt, dass keine jsdoc-Kommentare für $localize erzeugt werden sollen Diese glichen denen für googgetMsg, sodass eine Fehlermeldung ausgegeben worden war

Die neuen Features im Release fallen dieses Mal jedoch nicht in den Bereich von Ivy Neuerung gab es aber am Language Service Hier wurde Support für styleUrl-Definitionen hinzugefügt, der analog zu den Definitionen von templateUrl funktioniert und das Vorgehen vereinheitlichen soll Für die Language Service Integration Tests wurde ein Script hinzugefügt, das die Angular-Distribution bei jedem Build neu installiert Mit dem neuen Script kann die Installation außerhalb des Root-Verzeichnisses erfolgen Außerdem wurden einige Änderungen am Service Worker vorgenommen, die sich auf den EXISTING_CLIENTS_ONLY-Modus beziehen Darunter ist ein neues Feature, das die Rückkehr aus diesem Modus ermöglicht, wenn ein entsprechendes Update verfügbar ist

Ein Refactoring wurde in Angular 900-next6 an der Protractor-Integration für Bazel vorgenommen Bislang war die Regel protractor_web_test_suite rule im npm-Package @angular/bazel zu finden, wurde nun aber daraus entfernt Stattdessen findet sie sich nun im Package @bazel/protractor Wer mit dieser Regel arbeitet, muss sein Projekt entsprechend anpassen, da es sich dabei um einen Breaking Change handelt

Weitere Informationen zur neusten Next-Version von Angular 9 können wie immer dem Changelog entnommen werden


Angular 900-next5

Update vom 5 September 2019

Achtung! Nachdem die next3-Version von Angular 9 den letzten Breaking Change beinhaltete und Ivy zum Standard-Compiler kürte, gibt es im aktuellen Release auch wieder zwei Breaking Changes Der erste betrifft den öffentlichen Export von hasBeenProcessed, der nicht mehr stattfinden wird Der Grund für das Entfernen ist einfach: Die Funktion wurde nie genutzt Da eine Änderung an der Funktion ein Breaking Change ist, wurde sie komplett entfernt Der zweite Breaking Change betrifft die Methode Injectorget, die nun abstrakten Klassen erlaubt, typsichere Werte auszugeben

Doch Angular 900-next5 hat mehr im Gepäck als Breaking Changes: Auch neue Features gibt es wieder, fünf an der Zahl Da gerade vom Ivy Compiler die Rede war beginnen wir dort Für den Compiler wurde die globale Funktion $localize implementiert Im Bereich Bazel wurde auf die neueste Version von [@microsoft]https://githubcom/microsoft/api-extractor aktualisiert Die Methode TestBedinject wurde unterdessen in den Kern von Angular eingebaut, um TestBedget zu ersetzen Zudem wurde der Decorator providedIn erweitert, sodass nun 'platform' und 'any' genutzt werden können

Auch die Performance des Ivy Compilers stand wieder im Fokus, ganze neun Verbesserungen wurden hierfür durchgeführt Unter anderem wurden Mikro-Benchmarks für normale und Map-basierte Style- und Klassen-Bindings eingeführt Ein Benchmark für das Erstellen von Elementen und Text wurde ebenfalls hinzugefügt Entfernt wurden hingegen Calls zu renderStringify beim Erstellen von Text-Nodes und der sich wiederholende read/write-Prozess in addComponentLogic Außerdem ist die Klasse PlatformLocation nun ?tree-shakable?

Alle Änderungen, Bugfixes, Performance-Verbesserungen und natürlich die Breaking Changes, sind in vollem Umfang auf GitHub zu finden


Angular 900-next4

Update vom 28 August 2019

Seit der vorigen Vorabversion von Angular 9, ist Ivy als Standard-Compiler und -Renderer festgelegt Kein Wunder also, dass sich die meisten Änderungen des aktuellsten Releases auf Ivy bezieht Unter anderem wurden einige Bugs gefixt, darunter auch der ärgerliche Fehler, der verhinderte, dass der Index für Bindings vor der Ausführung eines Templates während des Aufrufens von refreshView zurückgesetzt wird

Ein neues Feature für Ivy stellt die Nutzung der DomElementSchemaRegistry für die Prüfung von Bindings zum DOM durch ngtsc dar So sollen zukünftig Fehler in Apps vermieden werden, die durch das TypeScript-Schema libdomdts bzw dessen nicht reibungslose Nutzung in Verbindung mit der DomElementSchemaRegistry entstehen

Für eine etwa 6 Prozent niedrige Verarbeitungszeit im Produktionsmodus soll das ausschließliche Speichern von Binding-Metadaten im ngDevMode sorgen Auf eine etwa 12 Prozent gesteigerte Performance können sich Nutzer ebenfalls freuen: Durch ein Refactoring des Umgangs mit lView[BINDING_INDEX] keine doppelten Einträge an dieser Stelle mehr, soll Angular schneller werden

Weitere Informationen zur aktuellen Next-Version können wie immer dem Changelog auf GitHub entnommen werden


Angular 900-next3

Update vom 22 August 2019

Ivy ist als Standard-Compiler und -Renderer in Angular 900-next3 angekommen In Angular 8x und den bisherigen Releases für die Angular-9-Entwicklung ist Ivy noch als Opt-In-Feature verfügbar Der Wechsel zum Standard war für Angular 9 bereits angekündigt worden; dies soll eine der zentralen Neuerungen für das kommende Major Release sein Nun ist es so weit: Wer die Next-Versionen von Angular 9 testet, bekommt ab sofort als Standard-Pipeline für Rendering und Compiling ausgeliefert

Im Zuge dieser Umstellung wurden natürlich einige Neuerungen an Ivy in das Release integriert So wurden alle ngtsc-Diagnostics für Ivy zu tsDiagnostics konvertiert Außerdem können mit Ivy nun selektor-lose Directives als Base-Klassen genutzt werden Auch ein Breaking Change für Ivy ist im Release enthalten So ist Hammerjs in Zukunft Tree-Shakeble, sodass Hammer-Providers nicht mehr mit ausgeliefert werden, wenn HammerModule nicht in das Root-Module importiert wird Für die Performance führt das Changelog zur neuen Next-Version gleich zehn Neuerungen auf, die im Zusammenhang mit Ivy stehen; einige Bugfixes für Ivy sind im Next-Release ebenfalls enthalten Außerdem bringt Angular 900-next3 eine Reihe weiterer Änderungen mit, die andere Bereiche des Frameworks betreffen, wie den Core und den Language-Service Weitere Informationen dazu können wie immer dem Changelog auf GitHub entnommen werden


Angular 900-next2

Update vom 13 August 2019

Mit Angular 900-next2 steht nun schon das dritte Next-Release für die kommende Major-Version bereit Dieses Mal sind gleich zwei Neuerungen für Ivy mit dabei, den neuen Renderer, der zu Angular 9 fertig gestellt werden soll Der Bugfix für Ivy betrifft das Verhalten bei inkrementellen Änderungen an Komponenten Wenn diese Teil eines NgModules sind, trat bisher ein Fehler auf, weil die Information über den Compilation Scope aus dem NgModule verloren gingen und nicht neu erzeugt wurden Nun wird diese Information über das Interface ComponentScopeRegistry registriert, sodass sie für inkrementelle Kompilierungen verfügbar ist Für die Performance von Ivy wurde ein Refactoring vorgenommen, durch das der Global State im Kontext interpolierter Werte nicht mehr ausgelesen wird, solange es nicht nötig ist

Die weiteren zwei Bugfixes im Release betreffen Bazel und den Compiler Für Bazel wurde das Treeshaking bei der Erzeugung von FESM- und UMD-Bundles deaktiviert Der Bugfix am Compiler betrifft das Entfernen von Whitespace im Wrapping von i18n-Expansions Weitere Informationen zu Angular 900-next2 können dem Changelog auf GitHub entnommen werden


Angular 900-next1

Update vom 9 August 2019

Drei Bugfixes haben es in Angular 900-next1 geschafft Davon betreffen zwei den Language-Service, einer den Upgrade-Bereich Für den Language-Service wurde getSourceFile so konfiguriert, dass es nur für TypeScript-Dateien aufgerufen wird Dem entsprechenden Pull Request ist zu entnehmen, dass es sich dabei um eine Vorbereitung auf die Integration externer Template-Dateien handelt, die künftig vom Angular Language Service Plug-in verarbeitet werden sollen HTML-Dateien müssen davon jedoch ausgeschlossen werden Die zweite Neuerung am Language Service steht in Zusammenhang damit, dass Angulars eigenes LanguageService Interface durch das von TypeScript ersetzt werden soll Diese Änderung an sich ist noch nicht vollzogen worden; auf dem Weg dahin hat man mit dem Release von Angular 900-next1 aber die Definition und QuickInfo kompatibel damit gemacht Details können auch hier im Pull Request gefunden werden

Im Upgrade-Bereich wurde ein Fehler behoben, der bei der Kompilierung von downgegradeden Komponenten auftrat Da AngularJS synchron kompiliert, sollen Komponenten nach dem Downgrade ebenfalls so behandelt werden Das war nicht mehr der Fall und wurde nun über die statische Methode SyncPromiseall wieder implementiert

Weitere Informationen zu den Neuerungen an Angular 900-next1 können wie immer im Changelog auf GitHub gefunden werden


Angular 900-next0

Update vom 1 August 2019

Beta-Versionen heißen jetzt „next“: Angular hat nach dem Release von v80 das Schema bei der Benennung ihrer Versionen verändert Wo zuvor von Beta-Relaeses gesprochen wurde, steht jetzt „next“ im Versionsnamen So auch beim ersten Release mit der Nummer 9 im Titel: v900-next0 wurde veröffentlicht und zeigt, dass Ivy ein großes Thema für die kommende Major-Version ist Viel mehr verraten die Release Notes auf GitHub aber nicht Das erste 9er-Test-Release bringe Verbesserungen und Fixes mit Bezug zu Ivy mit, so ist dort zu lesen Weitere Informationen folgen wohl erst mit der nachfolgenden Version


Angular 8x: Die Minor-Releases

Angular 820

Update vom 1 August 2019

Angular 820 ist fertig Nach einem Release Candidate steht nun das finale Release der Minor Version von Angular zum Download bereit, das alle Neuerungen der Testphase zusammenbringt und einige kleinere Änderungen selbst hinzufügt So bringt v820 beispielsweise Support für TypeScript 35 mit und umfasst insgesamt 14 Bugfixes, die jedoch weitgehend aus den Betas bekannt sind Genau so verhält es sich mit den insgesamt sechs neuen Features im Release, zu denen unter anderem die automatische Migration von Renderer zu Renderer2 gehört Dieses Feature konnte seit Angular 820-next1 getestet werden

Einen Überblick über Angular 820 gibt das Changelog auf GitHub


Angular 820-rc0

Update vom 30 Juli 2019

Angular 820-rc0 bringt eine Neuerung mit, die sich positiv auf die Performance auswirken soll Dazu wurde am Verhalten des Compilers gearbeitet, der nun nicht mehr vom Prototype zu den eigenen Properties kopiert, wenn ein Objekt geklont wird Bis zur Verwendung von Node 12 sei das kein Problem gewesen, da Node in vorherigen Versionen selbst eine Optimierung dafür mitbrachte Das wurde jedoch zugunsten anderer Optimierungen in Node 12 verworfen, sodass nun eine Lösung in Angular implementiert wurde

Effective Microservices Architecture In Nodejs

by Tamar Stern Palto Alto Networks

React Components And How To Style Them

by Jemima Abu Telesoftas

Wie ich eine React-Web-App baue

mit Elmar Burke Blendle und Hans-Christian Otto Suora

Architektur mit JavaScript

mit Golo Roden the native web

Zu den neuen Features im Release gehört, dass $element nun für Upgrades verfügbar ist und in Template Functions von Komponenten eingefügt wird, die geupgraded wurden Das zweite Feature ist eine Neuerung, die Bazel und Ivy zusammen bringt Dazu wurde das Compile Target für Angular in Bazel so verändert, dass nun Ivy verwendet wird Damit soll ein Problem gelöst werden, das mit transitiven Dependencies auftrat, die bisher nicht erzeugt werden konnten, da sie über einen alten Compiler geladen wurde Weitere Informationen dazu können dem entsprechenden Pull Request auf GitHub entnommen werden Eine weitere Änderung für Bazel wird als Bugfix geführt: Die maximale Heap-Größe für node/ngc in Bazel ist von 2GB auf 4GB erhöht worden Damit habe man diesen Wert an den des TypeScript-Compilers angepasst

Weitere Informationen zu diesen Änderungen sowie den drei weiteren Bugfixes am ersten Release Candidate zu Angular 820 sind im Changelog auf GitHub zu finden


Angular 820-next2

Update vom 18 Juli 2019

Mit Angular 820-next2 hat die kommende Minor-Version von Angular 8 vier weitere Bugfixes erhalten Kontinuierlich gearbeitet wird noch immer an Bazel Mit diesem Release wurde eine erst kürzlich vorgenommene Änderung zurück genommen, die den Umgang mit Custom Bazel Compiler Hosts betrifft Die Neuerung „featbazel: allow passing and rewriting an old bazel host“ sei nicht mehr nötig, da der Angular Indexer stabil sei, wie im entsprechenden Pull Request erklärt wird

Die drei weiteren Bugfixes im Release betreffen den Language-Service, das Compiler-CLI und erneut das WTF-Array Details dazu können dem Changelog auf GitHub entnommen werden


Angular 820-next1 veröffentlicht

Update vom 11 Juli 2019

Das zweite Beta-Release für Angular 82 ist da: 820-next1 Auch dieses Update fällt eher klein aus und bringt nur drei Neuerungen mit Darunter ist ein neues Feature für den Core, das die Migration von Renderer auf Renderer2 automatisiert Zu den Änderungen, die dadurch automatisch vorgenommen werden, gehört die automatische Umbenennung der Methoden aus dem alten Renderer Wo dies nicht möglich ist, weil sich die Methoden nicht direkt entsprechen, werden nun automatisch Helper-Funktionen eingefügt, die sicherstellen, dass dennoch valider Code erzeugt wird Weitere Informationen zu den automatisierten Migrationsschritten für Renderer2 können dem entsprechenden Pull Request entnommen werden

Die anderen beiden Neuerungen am Release sind Bugfixes Eins davon betrifft Bazel Hier wurde eine Änderung am Übersetzungssystem rückgängig gemacht, da das System an sich nicht mehr den vollen Dateipfad des Outputs benötigt Der zweite Bugfix betrifft den Compiler, wo nun alle Informationen aus ASTWithSource separat von AST an sich aufgerufen werden können

Weitere Informationen zum Release können wie immer über das Changelog aufgerufen werden


Angular 810 & 820-next0 veröffentlicht

Update vom 8 Juli 2019

Angular 810 ist in der vergangenen Woche final veröffentlicht worden Das erste Minor-Release für Angular 8 hat noch einmal drei Fehler behoben, zwei davon im Bereich des Service-Worker, einen am Core Das Changelog listet diesbezüglich folgende Änderungen auf:

  • core: handle undefined meta in injectArgs #31333 80ccd6c, closes CLI #14888
  • service-worker: cache opaque responses in data groups with freshness strategy #30977 b0c3453, closes #30968
  • service-worker: cache opaque responses when requests exceeds timeout threshold #30977 a9038ef

Angular 820-next0 folgte umgehend auf dieses Release Hier finden sich die gleichen Bugfixes wie in der Minor-Version, darüber hinaus gab es aber auch Neues für Bazel Zwei neue Features sind dabei So kann mit Bazel nun ein individuell festgelegter CompilerHost genutzt und an ngc Compile weitergegeben werden Nötig sei das beispielsweise für Nutzer, die den Compiler Host von TypeScript überschreiben müssen Das zweite Feature hängt mit dieser Änderung unmittelbar zusammen Um sicherzustellen, dass der Angular Indexer bei Google korrekt mit neu gesetzten Bazel Hosts umgehen kann, wurde eine Option eingefügt, mit der alte Bazel Hosts weitergegeben und überschrieben werden können

Weitere Informationen zu beiden Versionen können dem Changelog auf GitHub entnommen werden

Angular 810-rc0

Update vom 27 Juni 2019

Mit Version 810-rc0 steht der erste Release Candidate für Angular 81 bereit Ein neues Feature ist in der Version enthalten: Für AngularJS und Angular sind nun zwei neue Test Helper in der Upgrade/Static-Library verfügbar Diese helfen bei der Verbindung der Injectors der Versionen, ohne dazu vollständig hybride Apps erstellen zu müssen Weitere Details zum neuen Feature können im entsprechenden Pull Request nachgelesen werden

Für Bazel bringt das Release drei Bugfixes mit Darunter ist eine Aktualisierung von ng new schema, mit der es dem gegenwärtigen Status des Angular Schematics angepasst wurde Außerdem sind nun keine nicht unterstützten CSS-Pre-Processors mehr darin enthalten Das dritte Bugfix für Bazel bezieht sich auf Metadata-Builds, die nun keine Schematics-Ordner mehr umfassen

Außerdem bringt das Release auch Bugfixes für den Compiler und Service-Worker mit Weitere Informationen können wie immer dem Changelog auf GitHub entnommen werden


Angular 810-next3

Update vom 21 Juni 2019

Mit Angular 810-next3 steht ein weiteres Preview-Release für Angular 81 zum Download bereit Die Anzahl der Neuerungen in der Version fällt klein aus, nur drei Bugfixes sind enthalten Einer davon betrifft Bazel, dessen Builder Workspace jetzt mit Node 1016 arbeitet Der zweite Bugfix des Release findet sich in getQuickInfoAtPosition, wo any entfernt wurde Außerdem wurde das @deprecated JSDoc-Tag vorläufig aus TestBedStaticget entfernt, da eine Änderung an der Signatur von TestBedget zu einer deutlich höheren Zahl an Deprecation-Warnungen in einigen TypeScript-Projekten geführt hatte Bis dafür eine andere Lösung implementiert wurde, hat man die durch @deprecated erstellten Annotations darum durch reine Textwarnungen ersetzt, wie dem entsprechenden Pull Request zu entnehmen ist

Weitere Informationen zu Angular 810-next3 können wie immer dem Changelog auf GitHub entnommen werden


Angular 810-next2

Update vom 14 Juni 2019

Angular verfolgt offenbar eine neue Strategie bei der Benennung der Versionen Auf das erste Beta-Release von Angular 81 folgten Version 810-next1, sowie inzwischen 810-next2 Während in Next1 nur ein Bugfix am Core vorgenommen wurde, bringt Next2 nun gleich fünf Änderungen mit Drei der Bugfixes betreffen Bazel Das globale Stylesheet wird bei Verwendung von Bazel nun sowohl im Entwicklungsmodus als auch in der Produktion per <link>-Tag in indexhtml referenziert Außerdem verwendet Bazel nun die Components Schematics nicht mehr im Build und es wird keine Änderung an tsconfigjson mehr durch Bazel vorgenommen

Die anderen beiden Bugfixes in Angular 810-next2 betreffen das HttpUploadProgressEvent-Interface, das nun als öffentliches API freigegeben wurde, sowie den Service-Worker Wenn hier navigatorserviceWorkerregister'/ngsw-workerjs' scheitert, wird keine nicht gefangene Fehlermeldung mehr ausgegeben

Weitere Informationen zu Angular 810-next2 können dem Changelog auf GitHub entnommen werden


Angular 810-beta0: Bugfixes und Features geplant

Update vom 4 Juni 2019

Am 30 Mai, zwei Tage nach Veröffentlichung von Angular 8, wurde der erste Schritt in Richtung Angular 9 vollzogen Gemeint ist, dass die erste Beta-Version von Angular 81 veröffentlicht wurde, die bereits jetzt ein relativ großes Release vermuten lässt: Passend zum Datum wurden 30 Bugs gefixt Damit aber nicht genug, denn auch neue Features wird das erste Minor Release des aktuellen Veröffentlichungszyklus‘ enthalten ? immerhin 6 an der Zahl

Features

Eine der neuen Funktionen spricht vor allem jene Entwickler an, die sich um die Verwaltung kümmern und dafür sorgen müssen, dass alles aktuell ist und bleibt: Es wird wohl zukünftig nicht mehr nötig sein, Flags zu aktualisieren, die mit der Datei bazelrc oder der Toolchain zusammenhängen Auch Plattform-Flags für RBE-Builds und -Tests müssen ab Angular 81 wohl nicht mehr extra aktualisiert werden Eine Ausnahme gilt allerdings, wenn es Braking Changes in Bazel gibt, der diese Flags beeinflusst Stattdessen muss lediglich der Pin des @bazel-toolchains Repositorys in der Datei packages/bazel/packagebzl regelmäßig auf Stand gebracht werden Sicherheit geht übrigens vor: Sollte die Rule rbe_autoconfig im Repository @bazel_toolchains keine passende Toolchain-Konfiguration für die Bazel-Version finden, die gerade vom jeweiligen Projekt genutzt wird, zieht sie automatisch den entsprechenden Container und generiert die Konfigs beim Beginn des Builds bzw Tests

Wer transform-Methoden der SlicePipe nutzt, kann sich über die neuen Overloads freuen, die Angular 81 im Gepäck haben wird Dies soll vor allem zur Verwendung von klareren Typen als immer nur any führen Allerdings geht dies mit einem Breaking Change einher, SlicePipe kann ab dem Update lediglich mit einer Anzahl an Werten, einem String, null oder undefined genutzt werden

Bugfixes

In Sachen Bugfixes gab es nach dem Update offenbar einiges nachzubessern Genau 30 Fixes wurden in der ersten Beta-Version von Angular 81 vorgenommen Im Fokus stand unter anderem Bazel, in dessen Zusammenhang nun korrekte Paramter an den http_server unter Windows weitergegeben werden Aber auch am Kern hat man geschraubt Der CSS-Sanitizer erlaubt ab sofort die Nutzung von Klammern in Dateinamen, das war bislang offenbar nicht möglich Außerdem wurde ein unangenehmer Bug gefixt, der dafür sorgte, dass bei einer Migration nicht alle Dateien mitgenommen wurden Gleich sieben Bugs wurden bei der Migration statischer Querys behoben, unter anderem schlug sie mit voreingestellten Standardwerten von Parametern fehl und gab Fehler nicht korrekt aus

  • bazel: allow ts_library interop with list-typed inputs #30600 3125376
  • bazel: Bump ibazel to 0101 for windows fixes #30196 1353bf0
  • bazel: Directly spawn native Bazel binary #30306 2a0f497
  • bazel: Disable sandbox on Mac OS #30460 b6b1aec
  • bazel: Exclude common/upgrade in metadatatsconfigjson #30133 1f4c380
  • bazel: ng test should run specific ts_web_test_suite #30526 e688e02
  • bazel: pass correct arguments to http_server in Windows #30346 3aff79c, closes #29785
  • bazel: update peerDep ranges #30155 4ae0ee8
  • bazel: Use existing npm/yarn lock files #30438 ff29ccc
  • compiler-cli: log ngcc skipping messages as debug instead of info #30232 60a8888
  • core: consistently use ng:/// for sourcemap URLs #29826 392473e
  • core: CSS sanitizer now allows parens in file names #30322 728db88
  • core: fix interpolate identifier in AOT #30243 30d1f29
  • core: migrations not always migrating all files #30269 349935a
  • core: remove deprecated TestBeddeprecatedOverrideProvider API #30576 a96976e
  • core: require ’static‘ flag on queries in typings #30639 84dd267
  • core: static-query migration errors not printed properly #30458 6ceb903
  • core: static-query migration fails with default parameter values #30269 6357d4a
  • core: static-query migration should gracefully exit if AOT compiler throws #30269 509352f
  • core: static-query migration should handle queries on accessors #30327 0ffdb48
  • core: static-query migration should not fallback to test strategy #30458 0cdf598
  • core: static-query migration should not prompt if no queries are used #30254 4c12d74
  • core: static-query usage migration strategy should detect ambiguous query usage #30215 8d3365e
  • core: temporarily remove @deprecated jsdoc tag for a TextBedget overload #30514 f6bf892, closes #29290 #29905
  • language-service: Remove tsserverlibrary from rollup globals #30123 124e497
  • router: ensure historystate is set in eager update mode #30154 b40f6f3
  • router: ensure navigations start with the current URL value incase redirect is skipped #30344 0fd9d08, closes #30340 #30160
  • router: fix a problem with router not responding to back button #30160 3327bd8
  • router: IE 11 bug can break URL unification when comparing objects #30393 197584d
  • router: type cast correctly for IE 11 bug breaking URL Unification when comparing objects #30464 53f3564

Alle weiteren Informationen zur aktuellen Beta-Version von Angular 81 können dem Changelog auf GitHub entnommen werden Dort gibt es auch Details zu den neuen Features und sämtlichen Bugfixes

Der Beitrag Auf dem Weg zu Angular 9: rc9 mit Features und Bugfixes veröffentlicht ist auf entwicklerde erschienen


JavaScript für Umsteiger: Die Besonderheiten von JavaScript im Überblick (15.01.2020 12:00:52)

An JavaScript als Programmiersprache gibt es mittlerweile kaum einen Weg vorbei Es ergibt für viele Programmierer also durchaus Sinn, wenn sie sich zumindest mit den Grundlagen beschäftigen Umsteiger sollten sich ebenfalls zuerst mit den Grundlagen und Besonderheiten befassen

Der Beitrag JavaScript für Umsteiger: Die Besonderheiten von JavaScript im Überblick ist auf entwicklerde erschienen


Release der finalen Version des neuen Edge-Browsers mit Chromium-Engine (15.01.2020 10:11:56)

Am 15 Januar 2020 wird die erste Version des neuen Edge-Browsers auf Chromium-Basis für den Alltagseinsatz veröffentlicht

Am 15 Januar ist es soweit: Microsoft veröffentlicht seinen neuen Edge-Browser auf Chromium-Basis in der allgemein verfügbaren Version für den Alltagseinsatz Ausgeliefert wird der neue Edge automatisch per Update für alle Windows-Nutzer ab Version 1803 bei der nächsten Aktualisierung des Betriebssystems Der neue Browser wird für die Betriebssysteme Windows 10, 7, 8 und macOS sowie iOS und Android verfügbar sein Eine für Linux-Betriebssysteme adaptierte Version soll zu einem späteren Zeitpunkt ausgeliefert werden

Automatische Installation ? oder Parallelbetrieb des alten und neuen Browsers

Ab dem 15 Januar 2020 soll der neue Edge-Browser Bestandteil des Betriebssystems Windows 10 sein, er ersetzt in allen Windows-10-Versionen seinen Vorgänger Wer den Browser lieber von Hand installieren möchte, kann die automatische Installation durch ein Blocker-Toolkit verhindern Diese Option ist seitens Microsoft für Unternehmenskunden gedacht Beim automatischen Installieren wird der alte Edge standardmäßig ersetzt Es ist aber auch möglich, beide Browser parallel zu verwenden

Es könnte durchaus interessant sein, den alten Edge-Browser vorerst parallel beizubehalten, da der neue Edge auf Chromium-Basis zum Release-Termin einige Schlüsselfunktionen des alten Edge möglicherweise noch nicht besitzt: Bis zuletzt war offen, ob der neue Browser die Synchronisierung des Verlaufs und installierte Erweiterungen übernimmt Die angekündigte Unterstützung für ARM64-Geräte wie das Surface Pro X, die Augmented-Reality-Brille HoloLens, die Xbox One und Linux steht noch aus und wird erst zu einem späteren Termin verfügbar sein

Besonders für Unternehmenskunden dürfte der neue Edge-Browser mit Chromium-Unterbau interessant sein: sie sollen nun einfacher das Firmen-Intranet durchsuchen können

Ein offenkundiger Vorteil ist, dass Nutzern des neuen Edge auf Chromium für Erweiterungen nun auch der Chrome Web Store offen steht Um dieses Angebot zu nutzen, genügt es, die Funktion „Erweiterungen aus anderen Stores zulassen“ zu aktivieren Edge Chromium unterstützt über 100 Anzeigesprachen, darunter auch Deutsch

Intelligenter Trackingschutz

Beim Tracking bietet der neue Edge drei Modi: streng, ausgeglichen und einfach Wer keine Daten mit anderen teilen und Tracking weitestgehend verhindern möchte, kann die Option „streng“ auswählen Cookies und automatisches Einloggen durch gespeicherte Passwörter entfallen dann auch Im Modus „ausgeglichen“ können Nutzer das Tracken auf bereits besuchte Webseiten beschränken Im Modus „einfach“ ist das Tracking nicht weiter eingeschränkt

Unternehmenskunden können mit dem Blocker-Toolkit die automatische Auslieferung des neuen Edge unterbinden Für Erweiterungen stehen der Chrome Web App Store sowie der Edge Add-on Store noch Beta zur Verfügung Alle weiteren Details zur Sicherheit, Konfiguration und dem Deployment des neuen Edge auf Chromium-Basis stehen in der Microsoft-Edge-Dokumentation

Der Beitrag Release der finalen Version des neuen Edge-Browsers mit Chromium-Engine ist auf entwicklerde erschienen


Git 2.25 ist da: Sparse Checkouts und teilweises Klonen (15.01.2020 09:51:40)

Das Versionskontrollsystem Git hat sein erstes Update im neuen Jahr erhalten und ordentlich an der Version 225 geschraubt Das neue Release hat insgesamt 500 Commits von 84 Leuten vorzuweisen, wobei das Hauptaugenmerk auf der Vereinfachung des Sparse Checkouts liegt

Die wohl größte Neuerung sind die sogenannten Sparse Checkouts Bei diesem „dünnen Auschecken“ handelt es sich um den Prozess, eine Liste von Dateipfadmustern in die eigene Arbeitskopie einzufügen, sollte man den Inhalt des Repositorys auschecken Im Grunde genommen funktioniert es wie gitignore, außer dass es sich auf den Inhalt der Arbeitskopie und nicht auf den Index bezieht Ein Nachteil war hier bislang, dass es sich meist um große Dateien handelte, weshalb das Auschecken ziemlich schwer zu spezifizieren war

Sparse Checkouts vereinfacht

In Git 225 wurde nun der Befehl git sparse-checkout eingeführt, der durch das Definieren von Mustern das Sparse-Checkout-Management insgesamt vereinfachen soll

Mit dem neuen Befehl stehen zudem vier Unterbefehle zur Verfügung set, list,init und disable Durch sie lässt sich die Liste der Pfade zum Checkout festlegen, die aktuelle Liste drucken und das Sparse Checkouts aktivieren bzw deaktivieren

Teilweises Klonen und der Cone-Modus

Eine weitere Neuerung, die zur Vereinfachung beitragen soll, sind die sogenannten Partial Clones Bislang hat der Klon eines Git-Repositorys all seine Daten kopiert, selbst wenn nur ein Teil der Daten für den Entwickler relevant war Vor allem bei sehr großen Repositorys stellte sich das, bezogen auf die Kosten für die Netzwerkübertragung und den lokalen Speicher, als hinderlich dar Mit Git 225 besteht nun die Möglichkeit, einen „teilweisen“ Klon auszuführen bzw nur einen Teil der Repositorys zu klonen und mit ihnen zu arbeiten, ohne deren gesamten Inhalt zu besitzen

Natürlich muss Git mitgeteilt werden, welche Objekte beim Auschecken des Repositorys übersprungen werden können, um tatsächlich auschecken zu können Um dies zu ermöglichen, kommen wiederum die Sparse Checkouts ins Spiel

Ein weiteres Feature, das sich auf die Sparse Checkout bezieht, ist der Cone-Modus Zwar lassen sich mithilfe des neuen Befehls Sparse Checkouts beliebig komplexe Muster erstellen, allerdings kann sich die Auswertung negativ auf die Performance auswirken Deshalb ist in Git 225 ebenfalls der neu eingeführt Cone-Modus aktiviert – git config coresparseCheckoutCone Dieser schränkt die möglichen Regeln zugunsten der Performance ein Anstelle von beliebigen gitignore-Mustern kann so festgelegt werden, ob alle Pfade oder alle Dateien innerhalb eines gegebenen Unterverzeichnisses ausgecheckt werden sollen Standardmäßig bezieht die Versionsverwaltung alle Dateien im Stammverzeichnis des Repository ein

Git 225: Sämtliche Änderungen im Überblick

Ebenfalls mit an Bord ist ein verbesserter Debugging-Support beim Lazy Cloning und die git-Multipack-Index-Funktionalität verfügt über Fortschrittsanzeigen

Weitere Informationen zu sämtlichen neuen Features und den Bugfixes gibt es auf dem Blog von GitHub und natürlich in den offiziellen Release Notes

Der Beitrag Git 225 ist da: Sparse Checkouts und teilweises Klonen ist auf entwicklerde erschienen


Python-Bibliothek pandas auf dem Weg zu v1.0.0: Erster Release Candidate erschienen (15.01.2020 09:50:02)

Die beliebte Data-Science-Bibliothek pandas hat gerade erst ihren zwölften Geburtstag gefeiert, und nun steht Version 100 in den Startlöchern Der erste Release Candidate gibt Einblicke in einen neuen Skalar für fehlende Werte, einen neuen Umgang mit veralteten Funktionen gemäß semantischer Versionierung, eine Überarbeitung der Webseite und mehr

Der erste Release Candidate für pandas 100 ist erschienen Die anstehende Major-Version mit geplantem Release-Datum in zwei Wochen wird neue Features und eine Änderung im Umgang mit Updates enthalten

Beginnend mit v100 wird die Python-Bibliothek einer Variante der semantischen Versionierung folgen MajorMinorPatch Das bedeutet, dass Deprecations und Breaking Changes für APIs nur in Major-Versionen umgesetzt werden, mit Ausnahme experimenteller API-Änderungen Der Support für spezifische Python-Versionen wird ebenfalls nur in Major-Versionen auslaufen

pandas, abgeleitet von ?panel data?, ist eine Open-Source-Bibliothek für Python Sie dient der Datenanalyse und -Manipulation und wird vorrangig für Machine Learning eingesetzt Die initiale Veröffentlichung fand am 11 Januar 2008 statt Aktuell befindet sich pandas in der stabilen Version 0253

Die Features in pandas 100 rc0

Der erste RC für Version 100 bringt einen experimentellen Skalar für fehlende Werte mit: Der neue pdNA-Wert soll über die verschiedenen Datentypen hinweg verwendet werden können

Bisher repräsentierte zum Beispiel npnan fehlende Float-Werte, während npnan oder None fehlende object-dtype-Werte bezeichneten Weitere fehlende Werte erhielten unter anderem die Zuweisung pdNaT Das neue Feature ist noch als experimentell gekennzeichnet, weshalb pdNA unvorhergesehenes Verhalten an den Tag legen kann

Doing More with Less: Building Machine Learning Solutions without large labeled Datasets

mit Jesus Rodriguez Invector Labs

Case Studies: Machine Learning in Web Applications

mit Athan Reines Quansight

Deep Learning mit TensorFlow 2

mit Jakob Karalus Deloitte

Alles selber lesen war gestern ? wie man mit Machine Learning große Textmengen in Erkenntnisse verwandelt

mit Stephanie Fischer und Dr Christian Winkler datanizing

Ein weiteres experimentelles Feature ist StringDtype Dieser Extension-Typ für String-Daten soll einige Schwierigkeiten mit object-dtype-NumPy-Arrays beheben Unter anderem soll dadurch das versehentliche Speichern einer Mischung aus Strings und Nicht-Strings verhindert werden

Zu den weiteren angekündigten Neuerungen zählen eine Überarbeitung der Webseite und des Documentation Themes

Installation des Release Candidate

Da viele ältere Deprecations entfernt wurden, empfehlen die pandas-Entwickler, zunächst auf pandas 025 zu aktualisieren, um Kompatibilitätsschwierigkeiten auszuschließen Zudem wurde für pandas 100 die Mindestanforderung der Sprachversion auf Python 361 erhöht

pandas 100rc0 kann via PyPI python -m pip install --upgrade --pre pandas==100rc0 oder conda-forge conda install -c conda-forge/label/rc pandas==100rc0 installiert werden

Weitere Informationen bieten die offizielle Webseite sowie das GitHub Repository

Der Beitrag Python-Bibliothek pandas auf dem Weg zu v100: Erster Release Candidate erschienen ist auf entwicklerde erschienen


25 Jahre PHP, Cloud & vom Zend Framework zu Laminas ? Neu im Kiosk: PHP Magazin 2.20 (15.01.2020 07:37:58)

Das neue PHP Magazin ist ab sofort im Kiosk erhältlich! Anlässlich des 25 Geburtstags der Programmiersprache haben wir unsere Experten gefragt, wie sie über die Zukunft von PHP denken und was sie sich für PHP 8 wünschen Außerdem gibt das Magazin einen spannenden Überblick über die Geschichte vom Zend Framework zu Laminas und überführt bestehende Applikationen und die Cloud

25 Jahre PHP – das Ende naht … nicht!

Liebe Leserinnen, liebe Leser,

man mag es kaum glauben: Die Programmiersprache PHP gibt es nun schon seit einem Vierteljahrhundert Fast genauso lange wird für PHP schon das Ende vorausgesagt Aktuell spuckt Google ungefähr 240 000 000 Ergebnisse aus, wenn man ?PHP ist tot? in die Suchmaschine eingibt PHP wird schon zu Lebzeiten für tot erklärt ? mehr Berühmtheit kann man zumindest zu Lebzeiten kaum erlangen

Wir alle wissen jedoch, dass PHP noch quicklebendig ist und nach wie vor als eine unverzichtbare Zutat das Web zusammenhält Ehrlich gesagt, ich kann die skurrilen Todesnachrichten zu PHP nur noch als Running Gag auffassen PHP ist aus der Entwicklerwelt nicht mehr wegzudenken, und das ist auch gut so So ist es kein Zufall, dass wir dieses erfolgreiche Jubiläum feiern Offensichtlich ist hier etwas Sinnvolles geschaffen worden, das den Leuten bei der Webentwicklung besonders hilft Nicht zuletzt ist es aber die breite Entwicklerbasis, die den großen Erfolg der Programmiersprache ausmacht

Was sind eure Erlebnisse mit PHP, was eure Wünsche für die Zukunft? Genau diese Fragen haben wir ausgewiesenen PHP-Experten gestellt, die schon seit vielen Jahren durch unzählige Projekte, Vorträge und Workshops untrennbar mit der Sprache verbunden sind Auch wir als Verlag und Konferenzveranstalter sind ein stolzer Teil dieser wahnsinnig großen und lebendigen PHP-Community An dieser Stelle möchten wir allen Leserinnen und Lesern des PHP Magazins und den Besucherinnen und Besuchern unserer International PHP Conference für ihr langjähriges Vertrauen danken Wir werden unser Bestes tun, um auch in Zukunft ein informatives Sprachrohr für alle PHP-Entwickler zu sein, das stets ein offenes Ohr für die Community und ein Auge auf die neuesten Entwicklungen rund um PHP hat

In dieser Ausgabe des PHP Magazins machen wir wie immer auch einen Ausflug in die sich ständig wandelnde Technologiewelt und schauen, was die Entwicklercommunity neben PHP noch so bewegt So zeigen wir z B die Überführung von bestehenden Applikationen in die Cloud Die Verschmelzung der lokalen Entwicklung in der Cloud ist seit einiger Zeit ein wichtiger Bestandteil in der täglichen Entwicklerarbeit Ein weiteres in der Praxis erprobtes Thema ist die komponentenbasierte Architektur mit Web Components Was man mit diesen Bausteinen fürs Web alles machen, ist mehr als bemerkenswert Darüber hinaus findet ihr im neuen PHP Magazin spannende Artikel über die Vielfalt bei der Datenspeicherung, zum langen Weg vom Zend Framework zu Laminas und noch vieles, vieles mehr

Viel Spaß beim Lesen wünscht euch

Thomas Petzinna
Redakteur

Die Highlights im PHP Magazin 220

25 Jahre PHP
Das Jubiläum im Expertencheck

Schicht für Schicht zurück zum Erfolg
Die Entwicklung vom Zend Framework zu Laminas

Bausteine für das Web 
Komponentenbasierte Architektur mit Web Components

Bereit für die Cloud?
Überführung von bestehenden Applikationen in die Cloud

Jetzt im Kiosk: PHP Magazin 220 – 25 Jahre PHP

Der Beitrag 25 Jahre PHP, Cloud & vom Zend Framework zu Laminas – Neu im Kiosk: PHP Magazin 220 ist auf entwicklerde erschienen


Women in Tech: ?Wir Frauen sind weder besser noch schlechter, und müssen erst recht nicht genauso sein wie Männer? (15.01.2020 07:34:52)

In unserer Artikelserie ?Women in Tech? stellen wir inspirierende Frauen vor, die erfolgreich in der IT-Branche Fuß gefasst haben Heute im Fokus: Henny Selig, Solution Owner bei Signavio

Die Tech-Industrie wird von Männern dominiert ? so weit, so schlecht Doch langsam, aber sicher bekommt der sogenannte Boys Club Gesellschaft von begabten Frauen: Immer mehr Frauen fassen in der Branche Fuß

Aus diesem Grund wollen wir hier spannenden und inspirierenden Frauen die Möglichkeit geben, sich vorzustellen und zu erzählen, wie und weshalb sie den Weg in die Tech-Branche gewählt haben Aber auch Themen wie Geschlechtervorurteile, Herausforderungen oder Förderungsmöglichkeiten kommen zur Sprache

Unsere Woman in Tech: Henny Selig

Henny Selig

Henny Selig ist Solution Owner bei Signavio Sie sorgt dafür, dass Kunden die Softwareprodukte von Signavio möglichst nahtlos bei sich im Unternehmen einführen können Dafür erstellt sie zusammen mit ihrem Team vorgefertigte Software-Inhalte und Partnerintegrationen Es handelt sich dabei um einen neuen und stark wachsenden Bereich bei Signavio, den Henny derzeit aufbaut Zuvor war sie als Technische Beraterin bei Signavio und SAP tätig Sie hat einen Abschluss als MSc Data Science von den Universitäten KTH in Stockholm, Schweden und UNS in Nizza, Frankreich

Was hat dein Interesse für die Tech-Branche geweckt?

Bereits in der Schule habe ich gemerkt, dass mir MINT-Fächer gut liegen Ich hatte das Glück, dass ich in ein Programm der Femtec aufgenommen wurde, das junge Frauen für Technik begeistern möchte Das half mir, meine eigenen Vorurteile gegenüber MINT-Studiengängen zu überwinden Dass ich mich für die Informatik entschieden habe, kam erst im letzten Schuljahr Mit der Erkenntnis, dass unsere Welt zunehmend aus Software besteht, stieg das Interesse immens Ich habe entdeckt, wie vielfältig und spannend der Bereich ist

Ich habe zunächst einen dualen Bachelor in Wirtschaftsinformatik bei SAP gemacht Das gab mir die Gelegenheit, in verschiedenen Bereichen eines Softwarekonzerns zu arbeiten Dort habe ich gelernt, dass zu einer erfolgreichen Software deutlich mehr als nur Programmieren gehört Nach einigen Jahren als SAP-Beraterin beschloss ich mit Mitte 20, mich mit einem Master in Data Science im Europäischen Ausland weiterzubilden Dieser Weg hat mich zu meinem jetzigen Arbeitgeber Signavio geführt Nach zwei Jahren im Technical Consulting, mit sehr viel Kundenkontakt und Reisezeit, kann ich nun meine Erfahrungen im Engineering bei Signavio einbringen Wir bauen gerade einen neuen Bereich auf, der die Engineering- und die Kundensicht näher zusammenbringt Damit bewege ich mich genau in meiner Welt: Kundenperspektive und technisches Fachwissen

Vorbilder und Unterstützer

In Berlin gibt es eine Initiative, die erfolgreiche Frauen aus Tech, Start-ups und anderen Bereichen regelmäßig zu Gesprächen einlädt, um für andere Frauen Vorbilder zu schaffen

Feedback ist für mich eine der wertvollsten Formen der Unterstützung

Besonders inspiriert hat mich in diesem Rahmen das Gespräch mit Obi Felten, der Chefstrategin von Google X Aber auch aus alltäglichen Begegnungen lerne ich gerne Es gibt Kollegen, von denen ich mir Kommunikationsmethoden, Workshop-Skills oder ihre Art der Problemanalyse abschaue Zudem hatte ich das Glück, immer hervorragende Kollegen und Vorgesetzte zu haben Feedback ist für mich eine der wertvollsten Formen der Unterstützung

Ein Tag in Hennys Leben

Ich bin Solution Owner bei Signavio, das heißt, ich sorge dafür, dass unsere Kunden möglichst große Erfolge mit der Software von Signavio erzielen Den Bereich Solution Engineering haben wir Anfang des Jahres 2019 auf meinen Vorschlag hin eingeführt Signavio bietet Unternehmenssoftware an, die Kunden individuell zur Optimierung ihrer eigenen Abläufe nutzen können Als Beraterin habe ich mit unseren Produkten bei verschiedenen Kunden oft ähnliche Probleme gelöst Diese Überschneidungen nutzen wir, um Lösungen zu entwickeln, die den Kunden eine deutlich schnellere Einführung unserer Software ermöglichen

Mein Arbeitsalltag ist sehr vielfältig

Mein Arbeitsalltag ist sehr vielfältig Ich programmiere selbst kaum noch, sondern organisiere mittlerweile ein Team und ihre Projekte Dazu gehört die Priorisierung von Themen, die Definition von internen Abläufen, das Management von Erwartungen und Verantwortlichkeiten, darüber hinaus auch der Aufbau des Teams und die Kommunikation mit Kunden und Partnern

In den genannten Unternehmen war ich stets eine der ersten, die mit neuer Technologie im Kundenumfeld gearbeitet hat Parallel zu meinem Masterstudium gründete ich ein kleines Start-up Der Grundgedanke war, dass sichere und nicht-nachvollziehbare Kommunikation im Internet einiges an Fachwissen benötigt, das nicht alle besitzen Gerade Journalisten, Aktivisten oder Anwälte müssen eine vertrauensvolle Kommunikation mit ihren Klienten führen und Informanten sicherstellen, obwohl sie selten IT-Experten sind Gemeinsam mit einem Kommilitonen haben wir ein Gerät entwickelt, das die Verschlüsselung von Daten und Kommunikation übernimmt, ohne dass weitere Kenntnisse nötig sind Damit waren wir die Gewinner einer Start-up-Förderung an der TU Berlin Nach einigen Monaten und einem funktionierendem Prototyp haben wir uns aus persönlichen Gründen zwar entschieden, das Projekt vorerst aufzugeben Diese Erfahrung möchte ich aber nicht missen, denn daraus habe ich sehr viel gelernt

Wieso gibt es nicht mehr Frauen in der Tech-Branche?

Den Grund dafür habe ich leider auch noch nicht gefunden ? mehr Vorbilder und Mentorinnen würden aber sicherlich helfen Ich bin überzeugt, dass jeder etwas tun kann, Männer genauso wie Frauen, um es Frauen in der Tech-Branche einfacher zu machen Dabei denke ich beispielsweise an offensichtliche Respektlosigkeit gegenüber weiblichen Führungskräften, Ingenieurinnen oder sonstigen ?Women in Tech? Aus Gesprächen mit Kollegen weiß ich, dass sich auch viele Männer unwohl fühlen, wenn sie Zeuge von sexistischen Kommentaren werden, aber oft meinen, sie dürften sich nicht einmischen Möglichst konkrete Handlungsempfehlungen helfen den unbeholfenen Zeugen in diesen Situationen, wie beispielsweise eine einfache Rückfrage Jeder sollte sich hier in der Pflicht sehen zu reagieren, unabhängig vom Geschlecht

Frauen in MINT-Fächern

Technische Innovationen wie das Internet und Künstliche Intelligenz betreffen schon heute jeden von uns, mehr als wir bemerken Diese Technologien können zu einer nie dagewesenen Gerechtigkeit in der Welt führen, wenn wir sie richtig einsetzen Sie bergen aber auch große Risiken, wenn etwa Datenschutz untergraben wird oder KI verzerrte Ergebnisse liefert

Diversifizierte Teams kommen zu besseren Ergebnissen

Es gibt viele Negativ-Beispiele, die zeigen, dass homogene Tech-Teams in ihren entwickelten Produkten nicht die Gesamtheit der Menschen repräsentieren Ich denke beispielsweise an die Entwicklung von Sicherheitsfunktionen in Autos, die auf den Europäischen Durchschnittsmann ausgelegt waren, oder Google Photos, das ursprünglich Probleme hatte, Menschen mit dunkler Hautfarbe richtig zu erkennen Diversifizierte Teams kommen zu besseren Ergebnissen, zudem ist der Erfolg oft nachhaltiger wirtschaftlich und ökologisch

Selbst wenn wir mehr Frauen dazu bewegen können, in Tech zu arbeiten, bleibt die Herausforderung bestehen, diese Frauen dort auch zu halten Die meisten Frauen in meinem Umfeld, die zu Beginn ihrer Karriere sehr technische Berufe hatten, sind in weniger als zehn Jahren wie ich auch in Schnittstellenbereiche gewechselt, etwa Produktmanagement oder Projektleitung Diese Bereiche sind wichtig und die Positionen anspruchsvoll, es bedeutet aber, dass gut ausgebildete Experten an anderer Stelle fehlen

Ich wünsche mir, dass die Diversity-Debatte bald Geschichte sein wird! Während wir bei der Zahl von MINT-Studentinnen und auch in vielen anderen Bereichen Fortschritte machen, gibt es immer wieder Nachrichten, die mich traurig stimmen Diese reichen von der geringen Frauenquote in Start-ups bis hin zu den Berichten der letzten Jahre über frauen-unfreundliche Unternehmenskulturen im Silicon-Valley
Aber ich bleibe optimistisch Beispiele wie Sheryl Sandberg oder Marissa Mayer inspirieren viele junge Frauen und Männer Kulturelle Vielfalt sehe ich inzwischen überall: In den meisten Softwarefirmen arbeiten Menschen aus aller Welt zusammen Hoffen wir, dass sich diese Entwicklung vermehrt auf andere Diversity-Bereiche, wie Geschlecht und Hautfarbe, ausweitet

Hindernisse

Es gibt keinen Weg ohne Steine ? und das wäre ja auch langweilig Da ich einen sehr hohen Qualitätsanspruch an meine Arbeit habe, stehe ich mir oft selbst im Weg Der Tag hat allerdings nur 24 Stunden, deswegen muss man lernen zu entscheiden, welchen Steinen man aus dem Weg geht und aus welchen man etwas Neues baut

Die Vorurteile gegenüber Frauen im IT-Umfeld sind nach wie vor präsent

Die Vorurteile gegenüber Frauen im IT-Umfeld sind nach wie vor präsent Das fängt bei der Reaktion auf die Studienwahl an ?Warum Informatik? Da sind doch nur Nerds?, betrifft Professoren an den Universitäten ?Bitte keine Frauenteams, damit habe ich schlechte Erfahrungen gemacht?, und setzt sich im Berufsalltag fort ?Ach, Sie sind nicht die Assistentin??

Mich hat das angespornt, stets zu beweisen, dass ich fachlich gut bin Durch diesen Antrieb war ich oft besser als andere Ich kann mir vorstellen, dass es vielen Frauen in der Tech-Branche ähnlich geht Es hat ein paar Jahre gedauert, bis ich verstanden habe, dass wir Frauen weder besser, noch schlechter, und erst recht nicht genauso sein müssen wie Männer Wir sollten lernen, stolz darauf sein, wer wir sind und was wir leisten

Tipps & Tricks

Ich kenne viele tolle Menschen in Tech, zudem viele Organisationen und Freiwillige, die Frauen den Einstieg erleichtern möchten Ich kann nur allen Frauen raten, diese Untersützung anzunehmen und sie nach dem erfolgreichen Einstieg an die nächste Generation weiterzugeben

Der Beitrag Women in Tech: „Wir Frauen sind weder besser noch schlechter, und müssen erst recht nicht genauso sein wie Männer“ ist auf entwicklerde erschienen


styled-components: Version 5.0 der JavaScript Library erschienen (14.01.2020 15:40:36)

styled-components v50 wurde veröffentlicht Die React-Library kann dank des Updates bei einer kleineren Bundle-Größe schnelleres Server-side Rendering und Client-Side-Mounting aufweisen Breaking Changes wurden hingegen nicht vorgenommen

styled-components v50 ist da Die Library für CSS-Stile in JavaScript für React wird mit dem neuen Major Releases laut den Entwicklern schneller und soll dank Hooks ein weniger umfangreicheren Code in den React DevTools erzeugen Gegeben ist außerdem eine Abwährtskompatibilität, da auf Breaking Changes verzichtet wurde

styled-components v50: Das ist neu

Im Kern der v50 steht die Performance-Verbesserung Laut Entwickler Evan Jacobs konnte die Bundle-Größe um 19% reduziert werden, während das Client-Side-Mounting um 18% schneller arbeiten soll Eine Geschwindigkeitsverbesserung von sogar 45% wird für das Server-Side-Rendering angegeben, das Aktualisieren der Dynamic Styles soll um rund 17% effektiver geworden sein Möglich wurden diese Leistungssteigerungen durch die vollständig neu aufgebaute Core Stylesheet Engine

Auf Seiten der React DevTools ist aufgrund von verwendeten Hooks weniger Component Nesting nötig, was den Code in den DevTools übersichtlicher zeigt, wenn styled-components verwendet wird Im Blog-Artikel zum neuen Major Release findet sich dafür folgendes Beispiel von Entwickler Jacobs:

Beispiel einer bisherigen TagLine -Komponente in den React DevTools:

 
<TagLine>
  <StyledComponent forwardedRef={null}>
    <ContextConsumer>
      <ContextConsumer>
        <h2 className=?H2-sc-1izft7s-7?>Hello world</h2>
      </ContextConsumer>
    </ContextConsumer>
  </StyledComponent>
</TagLine>

Die gleiche Komponente, unter der Verwendung von styled-components v50, sieht mit dem Einsatz von Hooks wie folgt aus:

 
<TagLine>
<h2 className=?H2-sc-1izft7s-7?>Hello world</h2>
</TagLine>

Eine weitere Neuerung hat der <StyleSheetManager /> erhalten, sodass der CSS Parser nun durch Plug-ins erweiterbar ist Dieses neues Feature ermöglichte es den Entwicklern auch, einen Register Transfer Level Support zu implementieren, der wie folgt angewendet werden kann:

 
import { StyleSheetManager } from 'styled-components';
import stylisRTLPlugin from 'stylis-plugin-rtl';

<StyleSheetManager stylisPlugins={[stylisRTLPlugin]}>
  <App />
</StyleSheetManager>

Die Version 50 enthält keine Breaking Changes, lediglich die aktuellste Version von React wird benötigt, um die Library zu verwenden Installiert werden kann styled-components mittels:

 
npm install styled-components@^500

Alle Informationen zur neuen Version von styled-components finden sich auf GitHub und im offiziellen Blog-Artikel

Der Beitrag styled-components: Version 50 der JavaScript Library erschienen ist auf entwicklerde erschienen


Test mit Jest: Das JavaScript-Test-Framework auf dem Prüfstand (14.01.2020 12:00:04)

Wer JavaScript nicht automatisiert testet, handelt sich schon wegen des vergleichsweise offenen Sprachstandards über kurz oder lang gravierende Probleme ein Mit Jest gibt es nun ein neues JavaScript-Test-Framework, das aus den Fehlern der alten zu lernen sucht

Der Beitrag Test mit Jest: Das JavaScript-Test-Framework auf dem Prüfstand ist auf entwicklerde erschienen


Angular: Performanceoptimierung mit ?OnPush? (14.01.2020 10:30:34)

Die Geschwindigkeit von Datenbindungen ist in Angular hoch Angular verfügt mit OnPush über einen höchst performanten Modus, um Datenbindungen zielgerichtet zu aktualisieren Der Einsatz von Immutables und Observables macht dies möglich

Mit der Strategie <em>OnPush</em> kann Angular zielgerichtet herausfinden, welche Datenbindungen zu aktualisieren sind Damit dieser äußerst performante Modus funktioniert, muss die Anwendung Immutables und Observables einsetzen Die Datenbindung in Angular ist sehr schnell Der Angular-Compiler erzeugt beispielsweise für Datenbindungen Code, der sich von der für JavaScript verantwortlichen VM im Browser besonders gut optimieren lässt Solche sogenannten monomorphen Codestrecken erreichen ungefähr die Geschwindigkeit von nativem C-Code

Damit sich alle JavaScript-Objekte ohne weiteres binden lassen, nutzt Angular jedoch standardmäßig Dirty Checking Das bedeutet, dass jeweils nach dem Ausführen von Event Handlern alle Datenbindungen auf Änderungen geprüft werden Genau hier setzt die Datenbindungsstrategie OnPush an In diesem Modus findet Angular zielgerichtet heraus, welche Bindungen zu aktualisieren sind Damit diese Strategie funktioniert, muss die Anwendung besondere Datenstrukturen verwenden, nämlich Immutables und Observables In diesem Artikel gehe ich auf OnPush ein und zeige, wie sich Immutables und Observables einsetzen lassen

Immutables

Der Name lässt es schon vermuten: Immutables sind Datenstrukturen, die nicht veränderbar sind Ändern sich die damit beschriebenen Objekte, ersetzt die Anwendung das gesamte Immutable durch ein neues Das bedeutet im Umkehrschluss aber auch, dass Angular nur noch Objektreferenzen und nicht alle einzelnen Properties auf Änderungen prüfen muss

Die Methode delay in Listing 1 veranschaulicht den Umgang mit Immutables Ihre Aufgabe ist es, für den ersten Flug eines Arrays eine Verspätung von 15 Minuten zu vermerken Zuerst definiert das Beispiel Variablen, die auf das gesamte Array, auf den betroffenen Flug sowie auf dessen Datum verweisen Sie nennen sich oldFlights, oldFlight und oldFlightDate

Die danach eingerichteten Variablen repräsentieren den neuen Zustand Das Objekt newFlightDate verweist auf das geänderte Datum Dieses Datum übernimmt newFlight gemeinsam mit den restlichen Werten von oldFlight Zusätzlich verweist newFlights auf ein neues Array, das sich aus dem neuen Flug und den restlichen nicht geänderten Flügen zusammensetzt

Kostenlos: C# 80 – neue Sprachfeatures auf einen Blick

Der C#-80-Spickzettel fasst die neuen Features der Sprache zusammen mit Blick auf das aktuelle NET Core 30 bzw NET Standard 21 Jetzt herunterladen und schneller & effektiver programmieren!

Download for free

Um an diese Flüge zu kommen, nutzt delay die Arraymethode slice Da slice ein Array mit den ausgewählten Einträgen zurückliefert, nutzt das Beispiel an dieser Stelle den aus drei Punkten bestehende Spread-Operator von ECMAScript 2015 Er fügt an dieser Stelle die Einträge aus dem von slice gelieferten Array direkt in das übergeordnete Array ein und vermeidet somit ein Array im Array Diese Vorgehensweise veranschaulicht auch, dass Routinen nicht geänderte Teilbäume aus alten Immutables unverändert übernehmen können

Danach verstauen wir das neue Array in der Ausgangsvariable thisflights und ändern somit seine Objektreferenz Die Debug-Ausgaben am Ende veranschaulichen, dass eine Anwendung nun Änderungen am Array oder an den einzelnen Flügen sehr einfach entdecken kann, ein einziger Vergleich reicht hierzu

delay {

  const ONE_MINUTE = 1000  60;

  let oldFlights = thisflights;
  let oldFlight = oldFlights[0];
  let oldFlightDate = new DateoldFlightdate;

  let newFlightDate = new DateoldFlightDategetTime + ONE_MINUTE  15;

  let newFlight =  {
    id: oldFlightid,
    from: oldFlightfrom,
    to: oldFlightto,
    date: newFlightDatetoISOString
  };

  let newFlights = [
    newFlight,
    oldFlightsslice1, thisfluegelength-1
  ];

  thisflights = newFlights;

  consoledebug"Array: " + oldFlights == newFlights; // false
  consoledebug"#0: " + oldFlights[0] == newFlights[0]; // false
  consoledebug"#1: " + oldFlights[1] == newFlights[1]; // true

}

Immutables und TypeScript

Als Ergänzung zum Spread-Operator für Arrays, den wir im letzten Abschnitt betrachtet haben, hat TypeScript im Laufe der Zeit weitere Spracherweiterungen bekommen, die die Arbeit mit Immutables vereinfachen Bei der einen handelt es sich um den Access Modifier readonly:

export class Flight {
  readonly id: number;
  readonly from: string;
  readonly to: string;
  readonly date: string;
}

Die damit markierten Eigenschaften lassen sich nur im Konstruktor sowie beim Erzeugen eines Objekts über ein Objekt-Literal setzen:

let flight: Flight = { id: 7, from: 'Graz', to: 'Hamburg', date: '2018-12-24T17:00:00000+01:00' };
// flightid = 8; // Fehler, weil readonly

Bei einem späteren Aktualisieren solcher Eigenschaften meldet der Compiler einen Fehler

Ein weiteres Sprachmerkmal, das beim Einsatz von Immutables hilfreich ist, ist der Spread-Operator für Objekte Statt

  let newFlight =  {
    id: oldFlightid,
    from: oldFlightfrom,
    to: oldFlightto,
    date: newFlightDatetoISOString
  };

können Sie damit

let newFlight =  {
    oldFlight,
    date: newFlightDatetoISOString
  };

schreiben, um zum einen alle Eigenschaften aus oldFlight zu übernehmen und zum anderen ein neues Datum zu vergeben

Immutables und Datenbindung

Wie eingangs erwähnt, traversiert Angular standardmäßig nach dem Ausführen der Event Handler den gesamten Komponentenbaum Dabei aktualisiert das Framework alle geänderten Property Bindings Kommen Immutables zum Einsatz, kann Angular jedoch die vielen Teilbäume erkennen, die nicht von Änderungen betroffen sind, und sie zur Steigerung der Leistung außen vor lassen

Abbildung 1 veranschaulicht das Dabei wird davon ausgegangen, dass die Methode in Listing 1 das Array flights sowie einen Flug darin aktualisiert hat Dank Immutables kann Angular ohne Aufwand prüfen, ob die über Property Bindings weitergereichten Daten geändert wurden Wie oben beschrieben ist hierzu pro Objekt lediglich ein einziger Vergleich notwendig Im betrachteten Fall erkennt Angular, dass sich lediglich einer der weitergereichten Flüge geändert hat, und betrachtet nur den davon betroffenen Teilbaum Alle anderen Teilbäume ignoriert es Da das SPA-Framework bei diesem Vorgehen im besten Fall lediglich einem einzigen Pfad durch den Baum folgenden muss, birgt das bei größeren Komponentenbäumen ein enormes Potenzial in sich

Abb 1: Immutables in Angular

Damit eine Komponente in den Genuss dieses Verfahrens kommt, ist die changeDetection-Eigenschaft im Component-Dekorator auf OnPush zu setzen Listing 2

import { Flug } from '/entities/flug';
import { Input, Component, ChangeDetectionStrategy } from '@angular/core';

@Component{
  selector: 'flug-card',
  template: require'/flug-cardcomponenthtml',
  changeDetection: ChangeDetectionStrategyOnPush
}
export class FlugCard {
  @Input item: Flug;
}

Das führt dazu, dass Angular davon ausgeht, dass hinter allen eingehenden Property Bindings Immutables stehen Stellt Angular durch Vergleich der Objektreferenzen beim Property Binding fest, dass die zuletzt ausgeführten Event Handler diese Objekte nicht verändert haben, schließt es den gesamten Teilbaum von der weiteren Betrachtung aus

Observables

Neben Immutables unterstützt Angular auch Observables zur Optimierung der Performance Diese Objekte benachrichtigen Angular, wenn es eine neue Version eines gebundenen Objekts gibt Komponenten können somit von der Änderungsverfolgung ausgeschlossen werden, bis sie eine solche Nachricht erhalten

Abbildung 2 veranschaulicht dieses Vorgehen Hier sind die einzelnen Flüge durch Observables repräsentiert Um diesen Umstand hervorzuheben, hat sich die Nutzung eines Dollarzeichens als Suffix eingebürgert Die beiden Card-Komponenten nutzen nach wie vor die Strategie OnPush Da sich die Referenz auf die übergebenen Observables nicht ändert, schließt Angular sie von der Änderungsverfolgung aus Allerdings kann die Anwendung Angular anweisen, beim Empfang einer neuen Version des Fluges die Datenbindung zu aktualisieren Ähnlich wie beim Einsatz von Immutables prüft Angular in diesem Fall auch sämtliche übergeordnete Komponenten auf Änderungen, zumal die Daten ja per Definition von oben nach unten fließen und somit auch schon weiter oben zum Einsatz kommen können

Abb 2: Gebundene Observables in Angular

Ein ähnliches Gedankenexperiment hierzu veranschaulicht Abbildung 3 Dort wird jedoch das Array mit den Flügen durch ein Observable repräsentiert Nutzt nun zusätzlich die FlightSearch-Komponente die Strategie OnPush, schließt Angular auch sie zunächst von der Änderungsverfolgung aus Meldet das Observable eine neue Version des Arrays, gleicht Angular den Zustand von FlightSearch mit dem UI ab Dasselbe gilt auch hier für sämtliche übergeordnete Komponenten, die in der Abbildung nicht ersichtlich sind Wie mit den untergeordneten Card-Komponenten zu verfahren ist, hängt von ihrer Change-Detection-Strategie ab Kommen hier Immutables mit OnPush zum Einsatz, betrachtet Angular ? wie oben beschrieben ? nur den Teilbaum mit Änderungen Ansonsten iteriert es sämtliche untergeordnete Teilbäume

Abb 3: Zusammenspiel von Immutables und Observables

Datenbindung mit Observables

Um das zuletzt beschriebene Vorgehen zu veranschaulichen, verwaltet das hier beschriebene Beispiel die abgerufenen Flüge mit einem BehaviorSubject:

import { ReplaySubject } from 'rxjs/ReplaySubject'
[]
private flightsSubject = new BehaviorSubject<Flight[]>[];
public flights$ = flightsSubjectasObservable;

Dabei handelt es sich um ein Observable, das die zu versendenden Daten direkt über Methoden entgegennimmt und an einen oder mehrere Interessenten weiterleitet Darüber hinaus merkt sich das BehaviorSubject den zuletzt versendeten Wert, sodass ein neuer Interessent diesen sofort empfangen kann Den Initialwert nimmt es über den Konstruktor entgegen

Damit nicht jeder Konsument selbst Daten über das Subject versenden kann, ist es privat Lediglich ein davon abgeleitetes Observable flights$, das nur lesenden Zugriff gewährt, wird als öffentliche Eigenschaft bereitgestellt

Neue Versionen des Flugarrays versendet das Beispiel mit der Methode next:

thisflightsSubjectnextnewFlights;

Mit der async Pipe lässt sich das Observable in Datenbindungsausdrücken nutzen Dazu trägt sie sich als Interessent beim Observable ein und kümmert sich beim Eintreffen neuer Daten um die Aktualisierung der GUI:

<div ngFor="let flight of flights$ | async">
  <flight-card [item]="flight" [?]></flight-card>
</div>    

Fazit

Dank OnPush muss Angular nicht mehr sämtliche Komponenten auf Änderungen prüfen, sondern im besten Fall nur einen einzigen Pfad von der Wurzel bis zur betroffenen Stelle im Komponentenbaum näher betrachten Das erhöht die Datenbindungsperformance drastisch

Damit OnPush möglich ist, muss die Anwendung jedoch auf Immutables und Observables setzen Während schon eine dieser Datenstrukturen reicht, um OnPush prinzipiell aktivieren zu können, ergänzen sich diese beiden Konzepte prima: Observables weisen auf jene Komponente hin, in der die erste Änderung entdeckt wurde, und mit Immutables kann sich Angular am Komponentenbaum entlang weiter nach unten hangeln und dabei erkennen, welche Kindkomponenten ebenfalls zu aktualisieren sind

Etwas mühsam gestaltet sich anfangs die Arbeit mit Immutables: Anstatt Eigenschaften zu ändern muss man sich einen neuen Programmierstil antrainieren, der den Austausch aller geänderten Objekte zur Folge hat

Wer sich unsicher ist, ob dieser Mehraufwand gerechtfertigt ist, kann OnPush auch nur für ausgewählte Komponenten aktivieren, die es wert sind, optimiert zu werden In einem solchen Fall sind auch nur dort die genannten Datenstrukturen nötig Wer hingegen immer die bestmögliche Performance erreichen will, nutzt OnPush durchgängig Bibliotheken wie NgRx, die zum einen beim Einsatz von Observables unterstützen und zum anderen von vornherein die Nutzung von Immutables erzwingen, können dabei helfen

Windows Developer

Dieser Artikel ist im Windows Developer erschienen Windows Developer informiert umfassend und herstellerneutral über neue Trends und Möglichkeiten der Software- und Systementwicklung rund um Microsoft-Technologien

Natürlich können Sie den Windows Developer über den entwicklerkiosk auch digital im Browser oder auf Ihren Android- und iOS-Devices lesen Außerdem ist der Windows Developer weiterhin als Print-Magazin im Abonnement erhältlich

Der Beitrag Angular: Performanceoptimierung mit ?OnPush? ist auf entwicklerde erschienen


Cloud Computing und Geopolitik ? Bedenkliche Vorgänge rund um eine Gaspipeline (14.01.2020 10:30:21)

Es war eine der Top-Schlagzeilen Ende letzten Jahres: Die USA haben ein ?Gesetz zum Schutz von Europas Energiesicherheit? erlassen, das auf Betreiberfirmen spezialisierter Schiffe zum unterseeischen Verlegen von Rohren für die Nord-Stream-2-Gaspipeline abzielt Angedroht werden unter anderem Einreiseverbote und das Einfrieren von Vermögen von Personen, die mit solchen Betreiberfirmen in Verbindung gebracht werden

Im Visier der amerikanischen Behörden befindet sich insbesondere die Schweizer Firma Allseas, die federführend für das Verlegen der Rohre im Nord-Stream-2-Projekt verantwortlich ist Nach dem Erlass des oben erwähnten Gesetzes hat Allseas die Arbeit an der Pipeline erst ausgesetzt, dann komplett eingestellt Da die notwendigen Spezialschiffe rar sind, verzögert diese Entwicklung die Fertigstellung der Gaspipeline signifikant Möglicherweise ist das Projekt als Ganzes gefährdet, da auf politischer Ebene manche Interessengruppen die Entwicklungen zum Anlass nehmen, Nord Stream 2 generell zu hinterfragen

Was hat das mit Cloud-Computing zu tun?

Ich möchte in dieser Kolumne nicht die Sinnhaftigkeit des Projekts Nord Stream 2 kommentieren Ich möchte diese Einmischung der USA in europäische Entscheidungen auch nicht als positiv oder negativ bewerten Manche empfinden es als Zumutung Es gibt aber durchaus Stimmen in Europa, die Nord Stream 2 kritisch gegenüberstehen und einige US-Politiker behaupten, dankbare Rückmeldungen aus Europa zum vorliegenden Gesetz erhalten zu haben

Auf jeden Fall kam ich ins Grübeln, als ich die Berichterstattung über das US-Gesetz verfolgt habe Der Grund dafür sind die vielen Gespräche, die ich in den letzten Jahren mit Kunden zum Thema Cloud-Computing geführt habe Die großen Cloudanbieter wie Microsoft, Amazon und Google konnten zwar mittlerweile fast alle Zweifler davon überzeugen, dass ihre Rechenzentren in Sachen IT-Sicherheit ein ausgesprochen hohes Niveau bieten Mögliche Einflussnahmen der US-Regierung sorgen aber bei vielen Kunden, mit denen ich zu tun habe, immer noch für ein gehöriges Maß an Cloudskepsis

Kostenlos: C# 80 – neue Sprachfeatures auf einen Blick

Der C#-80-Spickzettel fasst die neuen Features der Sprache zusammen mit Blick auf das aktuelle NET Core 30 bzw NET Standard 21 Jetzt herunterladen und schneller & effektiver programmieren!

Download for free

Es wird argumentiert, dass Microsoft und Co als US-Unternehmen US-amerikanischen Gesetzen unterliegen Das Bedenken ist, dass die USA Druck auf sie ausüben könnten, um an wertvolle Daten zu kommen, unliebsamen Ländern Clouddienste zu verweigern oder wirtschaftliche Interessen durchzusetzen Die erlassenen Gesetze rund um Nord Stream 2 haben gezeigt, dass diese Möglichkeit nicht rein theoretisch ist, sondern in der Praxis wirksam werden kann

Nicht nur US-Clouds betroffen

Der Fall Allseas zeigt, dass die Frage des Unternehmenssitzes kein bestimmender Faktor ist, wenn es darum geht, ob ein Staat in der Praxis Einfluss nehmen kann Auch wenn das Unternehmen den Hauptsitz außerhalb der USA hat, können die USA durch ihre wirtschaftliche Stärke genug Druck aufbauen, um ein Einlenken zu erzwingen

Diese Tatsache ist für Cloud-Computing ein Problem Es ist schwierig genug, eine in Europa in der Praxis nutzbare Cloudumgebung von Weltklasse von einem Hersteller außerhalb der USA zu finden Im Gartner Magic Quadrant für Cloud-IaaS sind im Leaders Quadrant beispielsweise nur Microsoft, Amazon und Google zu finden Ein führender Anbieter, der so weit von den USA entkoppelt ist, dass ihn kein massiver, wirtschaftlicher Druck zum Einlenken zwingen könnte, ist weit und breit nicht in Sicht

Nur nicht die Nerven verlieren

Was also tun? Investitionen in Cloud-Computing sofort stoppen und wieder Server in den Keller stellen? Das ist meiner Ansicht nach keine gute Lösung Politische Konflikte wie der Streit um russische Energielieferungen über eine neue Pipeline in der Ostsee sind zum Glück außergewöhnliche und seltene Ereignisse Der Alltag ist viel ?langweiliger? Im Normalzustand bieten Cloud-Computing-Umgebungen im Vergleich zu dem, was die meisten Organisationen selbst betreiben können, viel höhere Sicherheit Sich panisch aus der Cloud zu verabschieden wäre vielleicht gut gemeint, ganzheitlich betrachtet aber kontraproduktiv

Was können wir also tun?

Mein erster und wichtigster Rat an alle, die Cloud-Computing mit US-Bezug nutzen oder es planen, ist, ruhig Blut zu bewahren Die politischen Beziehungen zwischen den USA und Europa sind vielleicht nicht so harmonisch wie sie sein könnten, katastrophal sind sie jedoch auch nicht Wir sind aber auch nicht zur Untätigkeit verdammt Hier einige Beispiele von Maßnahmen, die fallspezifisch in Betracht gezogen werden könnten:

    • Die Verschlüsselung von Daten ist ein wirksamer Schutz vor Spionage Die Bandbreite der Möglichkeiten reicht von den in Azure von Haus aus vorgesehenen Sicherheitsmechanismen z B Verschlüsselung von Daten mit Azure Key Vault, Azure SQL Transparent Data Encryption, Azure SQL Always Encrypted bis hin zu End-to-end Encryption auf Anwendungsebene Welche Verschlüsselungsmaßnahmen die richtigen sind, muss individuell entschieden werden Auf jeden Fall sollten Organisationen in den Aufbau von Wissen investieren, damit Entscheidungen über Verschlüsselung fundiert getroffen und richtig umgesetzt werden können
    • Der Lock-in-Effekt, also die Abhängigkeit vom jeweiligen Cloudanbieter, sollte kritisch hinterfragt werden Eine umfangreiche SaaS-Lösung komplett cloudunabhängig zu entwickeln, ist eine teure Angelegenheit Durch das Setzen auf Standards z B standardisierte Kommunikationsprotokolle, standardisierte APIs wie Dapr, den Einsatz von Containertechnologie und das Nutzen von Produkten, die auch außerhalb der gewählten Cloudumgebung verfügbar sind, kann der Lock-in-Effekt zumindest reduziert werden Ein Ausziehen aus der Cloud oder Umziehen in eine andere Cloud sind dann zwar nicht auf Knopfdruck möglich, lassen sich aber im Extremfall machen
    • Mit der Anwendung eine Cloud verlassen zu können ist nichts wert, wenn man plötzlich keinen Zugang zu seinen Daten oder seinem Quellcode mehr hat Insofern kann es für manche Organisationen wichtig sein, zumindest Sicherungen der wichtigsten Datenbestände im physischen Zugriff zu haben Aber Achtung: Back-ups außerhalb der Cloud müssen entsprechend abgesichert sein z B Verschlüsselung, physischer Zugriffsschutz, sonst öffnet man Angreifern Tür und Tor Wer sich den professionellen Schutz seiner Back-ups on Premises nicht leisten kann oder will, ist vielleicht trotz aller Nachteile mit einer reinen Cloudlösung besser bedient
    • Betreibt man Softwarelösungen für kritische Infrastruktur, bei der ein Ausfall von Stunden oder Tagen hohe Schäden nach sich zieht, ist das Aufrechterhalten einer gewissen IT-Infrastruktur, die man auch physisch unter Kontrolle hat, unverzichtbar Da das eine teure Option ist, empfehle ich, eine Bewertung der Systeme durchzuführen Kostenvorteile durch die Nutzung von Cloud-Computing für weniger kritische Systeme können Budget und Zeit freimachen für professionelle, lokale Infrastruktur für jene Systemteile, die rasch übersiedelt oder generell lokal betrieben werden müssen

Vorsicht vor Scheinlösungen

Sicherheit kostet Geld Die großen Cloudanbieter können hohe Sicherheit umsetzbar machen, indem sie standardisierte Lösungen unter Nutzung von Skalierungseffekten für jede einzelne Kundenorganisation leistbar machen Es geht dabei nicht nur um Produkt- oder Abonnementpreise Einfachheit der Nutzung, Dokumentation, kostengünstiger Einstieg durch Selfservice und Freemium-Angebote, Zugang zu günstigen Trainings und Verfügbarkeit von Spezialistinnen und Spezialisten auf dem Arbeitsmarkt sind Faktoren, die oft schwerer wiegen Wer meint, dass Sicherheitslösungen auf Augenhöhe mit den großen Cloudanbietern im Eigenbau mit wenig Aufwand machbar sind, irrt Wenn man Abkürzungen nimmt, endet man meistens mit einem System, in dem man vielleicht einen Sicherheitsaspekt verbessert, gleichzeitig aber viele andere Sicherheitslücken ? bewusst oder unbewusst ? übersehen hat

Ein typisches, fast schon banales Beispiel, das ich in meiner täglichen Beratungspraxis immer wieder sehe, ist der lose Umgang mit Zertifikaten, Verschlüsselungsschlüsseln oder Secrets z B DB Connection Strings, API Keys In den wenigsten Fällen wird on Premises sorgsam damit umgegangen Jede Praktikantin und jeder Praktikant bekommt Zugang, obwohl Secrets praktisch nie geändert werden In der Azure-Cloud sorgen Secure Defaults, Managed Identities und Key Vault dafür, dass solche Anfängerfehler nicht gemacht werden können

Ähnliches gilt beim Vermeiden von Lock-in-Effekten Wer dieses Thema ernst nimmt und tatsächlich rasch von der Cloud ins eigene Rechenzentrum wechseln können will, muss dieses Szenario testen Wenn man sich auch noch so sehr bemüht, man übersieht in großen SaaS-Lösungen immer Details, die einen an die jeweilige Umgebung binden und die nur durch langwierige Arbeit zu entfernen sind Erst durch das Ausprobieren des Auszugs aus der Cloud wird man sich der kritischen Faktoren bewusst und kann sie beheben oder zumindest einschätzen

Gaspipeline & Co: Politische Lösungen sind gefragt

Als Technikerinnen und Techniker können wir politische Probleme nicht lösen Auch das Einschätzen von Risiken, die sich aus geopolitischen Konflikten wie der Nord-Stream-2-Pipeline ergeben, ist wenn überhaupt nur Personen möglich, die sich darauf spezialisieren Unsere Aufgabe ist es, bei der objektiven Beurteilung der technischen und organisatorischen Maßnahmen zur Erhöhung von Datenschutz und Datensicherheit zu helfen Microsoft stellt dafür beispielsweise im Service Trust Portal nützliche Informationen und Checklisten bereit

Wenn das Ergebnis einer Untersuchung ist, dass in gewissen Bereichen die Cloud nicht einsetzbar ist oder begleitende Maßnahmen wie die Einführung hybrider Systeme notwendig sind, ist es unsere Aufgabe, die Gesamtsicht nicht aus den Augen zu verlieren Nur weil die Server im eigenen Rechnerraum stehen, sind sie noch nicht sicher

Schließlich können wir uns auch gesellschaftspolitisch engagieren und versuchen, im Rahmen unserer Möglichkeiten Lösungen zu finden, die eine Zusammenarbeit über geografische oder gesellschaftliche Grenzen hinweg ermöglicht Das muss nicht zwangsläufig die Mitarbeit in einer politischen Partei bedeuten Wir können auch in unserem Fachbereich aktiv werden und beispielsweise etwas zur freien Verfügbarkeit von Verschlüsselungs- und Softwareplattformen durch Unterstützung von Open-Source-Projekten beitragen

Der Beitrag Cloud Computing und Geopolitik – Bedenkliche Vorgänge rund um eine Gaspipeline ist auf entwicklerde erschienen


Speed, Speed, Speed: JavaScript vs C++ vs WebAssembly (14.01.2020 09:45:21)

C++, JavaScript oder WebAssembly: Welche Sprache ist für Node-Anwendungen die richtige, wenn die Performance im Mittelpunkt steht? Franziska Hinkelmann gibt in dieser Keynote von der International JavaScript Conference München 2019 einen Überblick über die verschiedenen Optionen

In Nodejs können wir WebAssembly-Module und native C++-Addons verwenden Wenn die Performance der kritische Faktor für einen bestimmten Teil der Anwendung ist, kann man sich somit durchaus fragen, was eigentlich die bessere Wahl ist: Sollte man bei JavaScript bleiben? Oder ein natives C++-Addon schreiben? Oder WebAssembly verwenden? Franziska Hinkelmann vergleicht in dieser Keynote von der iJS München 2019, wie diese Optionen hinsichtlich der Performance abschneiden und was für welche Art von verschiedenen Workloads am besten geeignet ist

Effective Microservices Architecture In Nodejs

by Tamar Stern Palto Alto Networks

React Components And How To Style Them

by Jemima Abu Telesoftas

Wie ich eine React-Web-App baue

mit Elmar Burke Blendle und Hans-Christian Otto Suora

Architektur mit JavaScript

mit Golo Roden the native web

Die Speakerin: Franziska Hinkelmann
Franziska Hinkelmann is a member of the Nodejs Technical Steering Committee and an expert on ES6 performance She has a PhD in mathematics and is a software engineer at Google on the Cloud Platform team in New York City Previously, she was on the Chrome V8 team When she?s not working hard on making Nodejs better on the Cloud Platform, she?s probably out riding horses

Der Beitrag Speed, Speed, Speed: JavaScript vs C++ vs WebAssembly ist auf entwicklerde erschienen


Diese Seite wurde in 0.371925 Sekunden geladen