Aug
07

Contao Konferenz 2017 - Recap Part 2 - Entwicklersicht

Aus Sicht des Entwicklers - Tag 1

Aug
07

Contao Konferenz 2017 - Recap Part 2 - Entwicklersicht

Aus Sicht des Entwicklers - Tag 1

Zum Frontend-Recap von unserem Designer Tom Muir siehe hier

Anfahrt

Die Konferenz begann für uns, Tom Muir - unserem Designer - und ich, mit einer etwas ermüdenden Anfahrt. Abfahrt war um ~13:45 in Köln, Ankunft um ~23:00 Uhr in Potsdam. Es ging leider - verkehrsmäßig - alles schief was schiefgehen konnte. Aufgrund der anstrengenden Anfahrt war es uns leider nicht mehr möglich am Get-Together teilzunehmen.

Nach kurzer Absprache, wo wir uns am nächsten Morgen treffen würden, gingen wir auf unsere Zimmer, welche angenehm viel Platz boten. Leider kein Blick auf den See, aber man kann ja nicht alles haben.

Allgemeines

Der nächste Tag startete mit einem entspannten Frühstück – hier war sowohl für mich als auch für den sich vegan ernährenden Kollegen etwas dabei.

Ein paar Sachen, die ich positiv hervorheben will, bevor ich zum eigentlichen Recap komme:

  • Die zeitliche Aufteilung der beiden Tage fand ich wesentlich angenehmer als beispielsweise auf der Symfony Con in Berlin im vergangenen Jahr (was aber bei der Symfony Con auch daran liegen kann, dass wir ca. 15 Minuten Fußweg zum Tagungsort hatten - ggf. versagt mein Gedächtnis auch einfach 😉 ). Einerseits konnte man dadurch die Vorträge etwas Revue passieren lassen und Andererseits hatte man dadurch die Chance auch noch mit anderen Personen zu sprechen und Kontakt aufzunehmen.
  • Jeder Platz in den Vortragsräumen hatte einen Tisch, sehr angenehm um Notizen zu machen oder Getränke abzustellen (welche man aus den Pausenbereichen mit in die Vortragsräume nehmen konnte – hoffentlich erlaubt 🙂 ) - das ist mir bei der letzten Contao Konferenz, auf der ich vor zwei Jahren war, schon sehr positiv aufgefallen.
  • Die Location selbst rundete das ganze Bild definitiv positiv ab. Zusammen mit den üppig ausgelegten Pausen konnte man so zwischen den Vorträgen auch immer mal etwas Luft schnappen oder sich an den Snacks bedienen.

Vorträge

Leo Feyers Keynote

Um wieder auf die Konferenz zurückzukommen – Leo Feyer hat in der Keynote den Contao Manager (schon seit einiger Zeit herunterladbar) als auch Contao 4.4 vorgestellt, welches im Anschluss Keynote released wurde.

Der Contao Manager selbst ist dabei für Personen die weniger Kenntnis im Umgang mit der Konsole (und damit auch composer) haben gedacht. So soll es auch Einsteigern ermöglicht werden eine funktionierende Contao-Version auf verschiedenen Hostern aufzusetzen.

Leo zeigte Features wie z.B. das Installieren von Erweiterungen und den Einstellmöglichkeiten. Zudem gab es auch einen Ausblick auf die weitere Entwicklung des Contao Managers. Aktuell muss nach der Installation einer Erweiterung noch in das Installtool gewechselt werden, wenn die Datenbank aktualisiert werden muss.

In (ferner) Zukunft soll das alles durch den Contao Manager gemacht werden. Dafür sind aber noch einige Eckdaten zu klären, wie ich später von Andreas Schempp, einem der Contao Core Entwickler, erfahren habe.

Sehr interessant waren Leos “22 Gründe für Contao 4.4”. Mir sind zusammenfassend folgende Punkte besonders erwähnenswert aufgefallen:

  • ESI (Edge Side Includes) von Symfony für z.B. dynamische Inhalte in gecachten Seiten: https://leofeyer.de/files/slides/2017/konferenz/#79

    Das bisherige Hauptproblem des Contaos Caches war, dass dieser sehr schnell, sehr groß wurde. Dies resultierte daraus, dass für dynamische Inhalte immer eigene Cache-Dateien pro User-Agent Version angelegt werden mussten. Man möchte einem Safariuser natürlich keinen Cachefile mit “Firefox” als User-Agent String ausliefern.

  • Es handelt sich um den ersten LTS Release welcher bis 2021 mit Sicherheitsupdates versorgt wird: https://leofeyer.de/files/slides/2017/konferenz/#16

    Das ist definitiv ein Wort und zeigt, dass das Contao-Team von dieser Version überzeugt ist. Auch für Kunden sollte dies sehr interessant sein, da bis 2021 auf jeden Fall mit einem System gerechnet werden kann, welches gegen auftretende Lücken abgesichert sein wird.

  • Warnung bei Versionskonflikten (z.B. wenn zwei Personen gleichzeitig an dem selben Element arbeiten): https://leofeyer.de/files/slides/2017/konferenz/#38

    Das ist mir in Vergangenheit, als ich als Entwickler auch ab und an in der Contentpflege aushalf, passiert – für größere Unternehmen / Teams wird dies definitiv eine willkommene Änderung sein. Laut Leo lassen sich die Änderungen auch zusammenführen (mergen), probiert habe ich dies aber noch nicht.

  • Dateinamen mit Sonderzeichen: https://leofeyer.de/files/slides/2017/konferenz/#55 & Unicode URLS: https://leofeyer.de/files/slides/2017/konferenz/#57

    Das könnten zwei relativ interessante Änderungen für internationale Unternehmen sein, insbesondere im Hinblick auf etwaige Besonderheiten von Suchmaschinen in anderssprachigen Ländern.

  • Dateien suchen (Backend!): https://leofeyer.de/files/slides/2017/konferenz/#63

  • Seiten und Artikel Filtern (Backend!): https://leofeyer.de/files/slides/2017/konferenz/#61

    Sehr interessant für uns, da vor kurzem ein Kunde danach gefragt hatte als er eine bestimmte Datei / Seite finden wollte. Definitiv positiv für Endkunden die jetzt auch selbst nach bestimmten Dateien / Seiten / Artikeln suchen können.

  • Automatische Schema.org Tags: https://leofeyer.de/files/slides/2017/konferenz/#77

    Definitiv interessant für Services die diese Tags nutzen (z.B. Suchmaschinen) – besonders da Contao diese Tags automatisch setzt.

  • DCA Picker: https://contao.org/files/news/contao-4.4.0/be-dca-picker.png

    Es ist nun mit einfachen Mitteln möglich einen auf Inserttags basierenden “dynamischen” Link zu Inhalten, wie beispielsweise News oder Events, zu setzen. Definitiv ein Highlight!

    Besonders da ich in Vergangenheit öfter “harte” Links auf bspw. News sehen musste. Zudem konnten sich Kunden nie wirklich mit den Inserttags anfreunden, da die Verwendung umständlich war.

AuthProvider von Stefan Lindecke

Nach einer kleinen Pause inkl. Snacks ging es dann mit dem Talk “authProvider” von Stefan Lindecke weiter.

Stefan hatte leider keinen Zugriff mehr auf den Sourcecode der für die Beispiele herhalten sollte. Daher musste er kurz vor der Konferenz seinen Vortrag ändern. So gab es leider keine praktischen Beispiele zu sehen.

Stattdessen wurden Authentifizierung und Autorisierung abstrakt beschrieben.

Schwerpunkt waren die Unterscheidung und die verschiedenen Faktoren der Authentifizierung wie z.B.

  • Besitz (Bankkarte, Hardware-Schlüssel (Yubi-Key, …)
  • Wissen (Passwort / Pin / …)
  • Biometrie (Fingerabdruck, Stimme, ...)

Das sorgte bei mir auch für eine - für andere vermutlich mehr oder minder triviale - Erkenntnis, dass das Abheben via Bankkarte am Schalter schon seit langer Zeit Zwei-Faktor-Authentifizierung durchführt, da dort zwei verschiedene Faktoren vorliegen:

Der Besitz (die Bankkarte) und das Wissen (die PIN).

Am Ende seines Vortrags hat Stefan noch kurz ein sich noch in der Entwicklung befindliches Modul vorgestellt. Ich kann mich nicht mehr an alle Einzelheiten des Moduls “ibanu” erinnern. Im Grunde ging es aber darum, im Backend eine größere Kontrolle über das Blockieren von Anfragen zu haben (z.B. bestimmte IP-Adressen blockieren).

break;

Oder auch bekannt als die Mittagspause, in der Tom Muir (zum Recap siehe hier) und ich uns getroffen haben, um uns über die bisherigen Vorträge auszutauschen.

Da die Mittagspause zeitlich relativ großzügig ausgelegt wurde, haben wir uns an den Templiner See begeben und die Landschaft genossen (in NRW war immerhin Feiertag, dann darf man das 🙂 )

PHPUnit für Contao-Entwickler von Sebastian Bergmann

Im Anschluss an die Pause ging es nun weiter mit dem Vortrag von Sebastian Bergmann.

Für mich begann der Vortrag damit, dass Sebastian die allzu bekannte Feedback-Schleife “F5 + Ausgabe” ansprach und warum dies nicht die Feedback-Schleife darstellt, die man haben will. Da diese nicht automatisiert ist, besteht die Gefahr, dass Fehler durch subjektive Interpretationen der ausführenden Personen übersehen werden.

Der Vortrag schwenkte nun auf automatisierte Tests (Unit-Tests) um, die dabei helfen diese Probleme in den Griff zu bekommen, da (bis auf das Schreiben der Tests) der “menschliche” Faktor beim Ausführen der Tests entfernt wird. Heißt wir haben die Gewissheit, dass wenn wir etwas am Code ändern und der vorher erfolgreiche Test fehlschlägt wir entweder den Code entsprechend korrigieren, oder die Spezifikation anpassen müssen.

Zu beachten ist, dass SemVer angewendet werden sollte, wenn die Spezifikation angepasst werden muss und eine öffentliche API angeboten wird, die sich in der Folge entsprechend ändert.

Im darauffolgenden Teil gab es den logischen nächsten Schritt – Test Driven Development (TDD). Bedeutet, dass die Tests für eine Klasse geschrieben werden, bevor mit der Implementation der Klasse begonnen wird. Es wird eine Spezifikation in Form eines Tests verfasst und hat am Ende der Implementationsphase eine Verifikation, dass die Klasse sich an die geplante - in Testform ausführbare - Spezifikation hält.

Sie bieten außerdem via `--testdox` ein Tool an um eine Testdokumentation zu erstellen. Verwendet man dies ist es wichtig, dass man “sprechende” Bezeichnungen (entweder im “CamelCase” oder “snake_case”) für Testmethoden nimmt.

Das ganze lässt sich auch kombinieren mit `--coverage-text` (es gibt auch andere Formate wie `--coverage-html`) um sich die Code-Coverage ausgeben zu lassen.

Beendet wurde der Vortrag mit einer kurzen Vorstellung anderer Testarten (Komponenten-Tests, Integrationstests, …) die neben Unittests existieren und natürlich auch mit PHPUnit umsetzbar sind.

Vieles davon haben wir in den letzten 1-2 Jahren angefangen im täglichen Geschäft zu verwenden. Je nach Aufbau des Workflows passiert sowas jedoch nicht von heute auf morgen - wir nutzen z.B. Docker + Gulp (QA via PHP Linting, PHP Mess Detector, PHP Code Sniffer, PHP Copy Paste Detection) für lokale Entwicklung, jedoch müssen die QA und Tests auch auf unserer Gitlab Instanz in CI Prozessen lauffähig sein.

Wir sind also langsam über QA Stages welche in älteren Projekten noch “optional” waren (unsere “Testballons”) zu QA-Stages übergegangen, die keine Fehler erzeugen dürfen (in unseren aktuellen Projekten). Eine Teststage kam dann noch dazu.

Aktuell ist es so, dass wir die ersten Schritte in testgetriebener Entwicklung machen. Eine Umstellung, die auch nicht von “heute auf morgen” stattfindet, da man den jahrelang gewohnten Prozess (und “inneren Schweinehund”) überwinden muss.

Ich bin aber zuversichtlich, dass das der richtige Weg ist. Rückblickend kann ich definitiv sagen, dass das Einführen von QA & Test- Stages bei uns für besser Code Qualität sorgt und man sich so insbesondere starken, zukünftigen Schmerz erspart (wer alte & große Projekte mit hohen technischen Schulden betreuen muss (keine Tests, enge Kopplung von so ziemlich allem), weiß wie sich das anfühlt).

Es war definitiv ein guter Vortrag, da er uns bestätigte, dass wir in unserer Agentur mit dem eingesetzten Workflow uns auf dem richtigen Weg befinden, es allerdings auch ein kontinuierlicher Prozess ist.

Erweiterung Contao Indexierung - Suche auf Office- und PDF-Dateien von Michael Pfeiffer

Dieser Vortrag war von großem Interesse für uns, da wir aktuell ein Projekt haben bei dem auch Dateien durchsucht werden sollen. Der Vortrag selbst handelt von einem Contao 3 Modul (Contao 4.4 Version gibt es noch nicht, d.h. für unsere Zwecke leider nicht direkt nutzbar). Ich konnte jedoch ein paar interessante Details mitnehmen, die uns zumindest das “R & D” mit verschiedenen Libraries ersparen kann.

Unter anderem erzählte Michael von Libraries die er testete, welche jedoch nicht immer zufriedenstellende Ergebnisse für den angepeilten Verwendungszweck geliefert hätten.

Er landete schließlich beim “Apache Tika-Server” in Verbindung mit “PHP Apache Tika” von Vaites.

Anschließend gab er noch Ausblick für sein Modul welches später via Tesseract auch in der Lage sein soll via OCR eingescannte PDF Dokumente (sprich Bilder) zu indexieren.

Keine Angst vor Contao 4 von Contao Association – Board Members & Co.

Der Vortrag brachte mir persönlich wenig Neues. Was jedoch nicht schlecht ist, da sich der Vortrag an Personen in der Contao Community richten soll, die bisher noch Zögern auf Contao 4 umzusteigen. Wir setzen Contao 4 erfolgreich seit über einem Jahr in mehreren Projekten ein. Daher trifft das auf uns nicht zu. Zudem gab es auch eine kleine Einführung in die Erstellung eines Tickets in Github, da bisher User Fehler und Probleme an verschiedenen Stellen, aber nicht im Github Repository gemeldet haben.

Was ich vom Contao Manager bisher gesehen habe sah auf jeden Fall, für die normalen Contaobenutzer, gut aus. Diese haben bisher Contao für seine relativ einfache Installation und Verwendung geschätzt. Mit dem Contao Manager wird dieser Weg konsequent fortgesetzt.

Besonders interessant ist, dass man im Manager selbst in der Lage ist, die Versionsabhängigkeiten anzupassen. Ein Manko jedoch ist, dass man nach der Installation eines Modules bzw. Bundles noch in das Installtool muss um die Installation abzuschließen. Es wurde jedoch in Aussicht gestellt, dass das Installtool in ferner Zukunft mit dem Contao Manager verschmilzt. Folglich gibt es dann für in der Standard-Edition das Installtool nicht mehr.

Wir haben unseren eigenen lokalen Docker bzw. Remote CI Build Prozess der via Composer & Contao Standard-Edition arbeitet und ein lauffähiges Contao erstellt. Daher verwenden wir den Contao Manager nicht.

Bezüglich des Wegfalls des Installtools sprach ich am nächsten Tag noch mit Andreas Schempp, da das Relevant für unseren CI Prozess werden wird.

Er erwähnte im Gespräch nochmal, dass noch nicht klar ist wann das Installtool wegfällt, da noch einige Randbedingungen dafür geklärt werden müssen.

Für uns ist relevant was dann als “Ersatz” für das Installtool in der Standard-Edition, z.B. beim Update der Datenbank, herhalten wird. Andreas erklärte, dass man dafür jetzt schon Doctrine-Migrations (via Symfony-Console) verwenden kann. Das ist etwas, was wir uns in Zukunft anschauen und unseren CI Prozessen entsprechend anpassen werden.

sleep(58500);

Den Tag ließen Tom und ich in der Abendveranstaltung ausklingen, wo wir uns lange mit Daniel Gmoser von http://www.tn34.de/ ausgetauscht haben. Es war interessant sich zu unterschiedlichen Sicht- und Herangehensweisen in Projekten (und dem Management von selbigen) auszutauschen. Insbesondere, weil man so selbst kritisch hinterfragt ob man manche Prozesse vielleicht intern noch verbessern könnte und welche Vor- und Nachteile das Ändern der Prozesse mit sich bringt.

Links

Dieser Artikel teilen

Autor

Zurück

Kommentare

comments powered by Disqus