Mittwoch: 2. Konferenztag – Der Nachmittag

Mittwoch: 2. Konferenztag – Der Nachmittag

Am Nachmittag merkte ich, das es der zweite Konferenztag ist. Die Aufnahmefähigkeit nimmt suzessive ab… Von meinen Rechtschreibungsqualitäten möchte ich gar nicht reden. Wahrscheinlich werde ich in ein paar Wochen nochmal über die Beiträge drüber arbeiten 😉

14:15 – PHP to Hack, an incrementally typed Adventure at Slack

Tja das war mir jetzt etwas zu hoch, zu früh und zu Komplex um auf Englisch noch mitzukommen.

15:00 – Open-Source-Software und Quellcode aus dem Internet rechtssicher einbinden und nutzen

Hier wird Deutsches Recht diskutiert. Sollte aber ähnlich dem unseren sein….

nach Berner Übereinkunft: Copyrightsymbol entstanden
Erreichen der Schöpungshöhe: Die Untergrenze des Urheberrechtsschutzes ist klassischerweise niedrig angesetzt.
Wenn das Copyrightzeichen nicht dabei ist, ist es aber dennoch geschützt. Das eine hat nichts mit dem anderen zu tun.

HTML-Code und SQL-Statements sind eher nicht schutzfähig, was umstritten ist. Datenbanken und Benutzeroberlächen können grundsätzlich geschützt werden.

Lizenzen und Lizenzrecht
Rechte welcher Arten werden über Lizenzen erteilt.
Open Source / Freeware ist eine sogenannte Schenkung. Solange keine arglistige Täuschung vorliegt (z.B.: grober Fehler im Code den ich verschweige) bin ich Haftungsfrei.
Lizenzen kann ich nicht gutgläubig erwerben. Hier greift der “gutgläubige Käufer” Ansatz nicht.

Open Source-Lizenzen

BSD, MIT: “Mach mit meiner Softare was du willst – aber verklag mich nicht”
GPL und dgl: “Ich habe meine Software Open Source gemacht – und du solltest das auch tun.”

Strenges Copyleft: GPL
Eingeschränkts Copyleft: LGPL, CDDL, EPL
Kein Copyleft: MIT, BSD, Apache License

Copyleft
Copyleft-Lizenz fordert, dass auch die abgeleiteten Werke unter einer solchen Lizenz zur Verfügung gestellt werden
Sorgt somit dafür, dass Fortentwicklungen des freien Ur-Programms frei bleiben
Veränderungen sind nur erlaubt, wenn sie unter den gleichen Lizenzbedingungen weitergegeben werden.
Der Gedanke ist letzlich der Schutz der freien Software (vor Wandlung in proprietäre Software) – wenn man das verstanden hat, lösen sich alle weiteren Fragen von selbst.

Fallstricke für Unternehmen als Einsetzende von Open Source

  • Infizierung: Problem des sog. “Viralen Effekts” (werden Lizenzbedingungen nicht eingehalten, kann durch Copyleft-Effekte die Gesamte proprietäre Software infiziert werden. Schlimmstenfalls steht dann die gesamte Software unter Open Source Lizenz)
  • Kompatibilität von Lizenzen mit strengem Copyleft
  • Kompatibilität von Lizenzen mit eingeschränkten Copyleft

Zu dem Thema gibt es vom Vortragenden einen auführlichen Foliensatz der allerdings erst am 14. Juni für mich zur Verfügung steht…

Minifyer sollten so eingestellt sein, das Verweis auf Urheber drin bleibt sowie Link zum Originalquelltext. Zur Erklärung: Minifyer komprimieren den Entwicklern das Stylesheet und die JavaScript Files

Wo gebe ich Lizenzen an

  • im Quelltext
  • wenn User Interface, dann in der Lizenzübersicht
    Getrennt für jede Lizenz die Pakete einzeln auflisten
  • wenn auf einem Gerät ohne User Interface: Bspw: mit einem Label auf dem Gerät à la “Lizenzübersicht unter http://……/licenses.html” verweisen

GPL und LGPL: wo stelle ich meinen Sourcecode zur Verfügung, wenn laut Lizenz erforderlich?
Auf meiner Webseite eine eigene Seite erstellen, wo ich den Code zur Verfügung stelle nach jedem Release oder einen Written Offer online stellen. Wenn dann eine Anfrage kommt, Sourcecode schicken

Das abgeleitete Werk
Unbedingt versuchen darauf zu verzichten, dass es ein “derivative work” wird. Nur dann, wenn ich daraus eine eigene Komponente mache und meine Software über eine API damit kommunizieren lass. Denn dann muss ich nur die Komponente Open Source stellen aber nicht die gesamte Software.

Wenn Code aus dem Internet z.B. Stackoverflow: Urheber unbeding nennen!

Lizenzscanner

  • Blackduck (unheimlich teuer)
  • WhiteSource (eher wenig intuitiv in der Bedienung)
  • Sonarqube (noch nicht evaluiert)
  • Flexera

Können in übliche CI/CD Tools eingebunden werden wie GitLab
Können aber nicht sagen ob es ein “derivative work” ist. Ob das irgendwann noch möglich ist, wird sich zeigen.

Buchtip: Jäger – Open Source Lizenzen

16:15 – Undoing Things and saving your Neck with Git

Persönliche Einführung: Was kann man mit Git alles machen. Prinzipiell. Git wird in der Softwareentwicklung oft benutzt. Einerseits erleichtert es Teams miteinander an einem Projekt zu arbeiten, ohne den Code über USB Stick austauschen zu müssen, andererseits versioniert es die einzelnen Arbeitsschritte. Git bietet hierzu umfangreiche Möglichkeiten. Wenn Benutzer mit dem Terminal oder der Eingabeaufforderung nicht so vertraut sind, gibt es dementsprechend Programme die man sich installieren kann wie zum Beispiel Sourcetree oder SmartGit (kostenpflichtig)
Was ist ein Commit laut Wikipedia:

Als Commit oder Check-In bezeichnet man bei der Verwendung von Versionsverwaltungssystemen den Vorgang des Einspielens von neuem oder geändertem Quelltext und anderen Dateien in das Versionsverwaltungssystem. Dabei wird eine neue Version der Software den anderen an der Softwareentwicklung beteiligten Entwicklern zur Verfügung gestellt.

Leider hab ich die ersten paar Anweisungen verpasst, deshalb der Einstieg mitten drin.

  • Reverting a Commit in the Middle
    git revert – erstellt einen neuen Commit
    reset –mixed not hard, bedeutet er mischt die Veränderungen und zeigt diese als Lokale Änderungen an
  • Resetting a file to an old revision
    checkout a single file
    $ git checkout 6bcf266b – index.html

Reflog: Git Tool
Im Reflog ist alles dokumentiert. Das Reflog ist somit das Protokoll, das Tagebuch

  • Recovering Deleted Commits
    $ reflog
    $ git branch happy-ending ..commit-id..
  • Recovering a Deleting Branch
    $ git branch featuer/login ..commit-id..
  • Moving a Commit to a New Branch
    create new Branch and than reset head –hard
  • Moving a Commit to a Different Branch
    move to feature
    than cherry pick
    than go pack to master and clean up reset –hard

Was ist mit Interactive Rebase alles möglich:

Change Commit Text
$ git rebase -i Head~3 (for 3 steps)
reword instead pick. do not change the text from commit yet – save here
in the next step you could change the text

  • Deleting Old Commits
  • Squashing Multiple Commits Into One
  • Adding a Change to an Old Commit
  • Splitting / Editing an Old Commit

Link: https://www.git-tower.com/learn/git/first-aid-kit

17:15 – Diversity – a different Perspective

Sorry, today to much for me. Brain is overload.
Aber sie hat eine sehr energiereiche Art auf der Bühne zu interagieren.

Mittwoch: 2. Konferenztag – Der Nachmittag

Donnerstag – 3. Konferenztag

09:30 – Build your own Neural Network – with PHP!

von Vitor Brandao
Empfehlung des Vortragenden: Desin Mockups into Code with Deep Learning
https://blog.floydhub.com/turning-design-mockups-into-code-with-deep-learning/
1943: First Artificial Neuron
Machine Learning
given a set of inputs x, learn a function mappint to some known output
Rules and Data to Traditional Programming to become Ansers
Answers and Data To Machine Learning to get the rules?
We have Input Layer, hidden Layer and Output Layer
Training Approach

  • Start with random weights
  • predict based on input data
  • compare with target output
  • adjust network parameters
  • Repeat until we ar close enough

XOR – Erklärung laut Wikipedia:

Ein Exklusiv-Oder-Gatter, auch XOR-Gatter (von englisch eXclusive OR ‚exklusives Oder‘, „entweder oder“) ist ein Gatter mit mehreren Eingängen und einem Ausgang, bei dem der Ausgang genau dann logisch „1“ ist, wenn an einer ungeraden Anzahl von Eingängen „1“ anliegt und an den restlichen „0“. Die Exklusiv-Oder-Verknüpfung wird auch als Anti- oder Kontravalenz bezeichnet.
Für den einfachen Fall eines Exklusiv-Oder-Gatters mit zwei Eingängen bedeutet das, dass die Eingänge verschieden beschaltet sein müssen, um am Ausgang eine „1“ zu erhalten. Entweder an dem einen oder am anderen Eingang muss „1“ anliegen. Im Unterschied zu einer einfachen OR-Verknüpfung gilt die Bedingung als nicht erfüllt, wenn an beiden Eingängen eine „1“ anliegt. Bei Exklusiv-Oder ist das Ergebnis in diesem Fall eine „0“.

Alle Codebeispiele auf: github.com/noiselabs/byonn
Efficient PHP library for data scientists github.com/phpsci/phpsci
Artificial Neural Netoworks recap

  • inspired by the human brain
  • today we saw a feed-forward network (there are other architectures)
  • uses supervised Machine Learning (learn from examples)
  • error is minimised using Backpropagation and Descent
  • can approximate any function

Buchempfehlung: Hands-On Machine Learning with Scikit-Learn & TensorFlow

10:45 – Do PHP Frameworks still make Sense? Let’s go Frameworkless to focus on the Domain!

Damiano Petrugaro
Mein letzter englischer Vortrag. 😉
What is a framework?
An essential supporting structure of a building, vehicle, or object.
Symfony and Laravel sind im PHP Bereich die meist verwendesten Frameworks
Slim
Zend -> Expression
CakePHP, Yii, CodeIgniter
Importance of the framework

  • push for innovation
  • don’t reinvent the wheel
  • define new standards
  • easier for new joiners

PSR laut Wikipedia:

Eine PHP Standard Recommendation (PSR) ist eine PHP-Spezifikation, welche durch die PHP Framework Interop Group veröffentlicht wird. Ähnlich einem Java Specification Request in Java dient sie der Standardisierung von Programmierkonzepten. Ziel ist es die Interoperabilität von Komponenten zu ermöglichen und eine gemeinsame technische Basis zu schaffen oder bewährte Konzepte für einen guten Programmierstil sowie eine gute Testbarkeit von Komponenten umzusetzen. Verschiedene Frameworks wie z. B. die der TYPO3-Community, Symfony oder Zend implementieren hierbei PSR-Spezifikationen in einem selbst gewählten Umfang.

It’s all about dependency
The state of relying on or being controlled by someone or something else.
Framework = Dependency
Dependencies are bade
How to avoid them:
Applying a methodology as Domain Driven Design
The domain is not a dependency
DDD to the rescue
It enfores us to model the domain first. Then adapts the framework to it.
Strategic Design and Tactical Design
Slides: bit.ly/php-fw-ddd
bit.ly/ipc-dam

11:45 – Dark Patterns: Psychotricks, um Entscheidungen zu manipulieren

von Kay Radanitsch
Er hat das wirklich sehr gut vorgetragen und aufbereitet.
Priming Effekt
Mit Priming kann man die Wahrnehmung der Webseite durch Bilder manipulieren.
Nulloptionen sollten prinzipiell vermieden werden, da diese sowieso nicht gewählt werden. Beispiel hier ist zum Beispiel eine Softwarefirma die auf der Seite lediglich eine 30-Tage Testverion anbietet und sonst keine andere Wahl zur Verfügung stellt. Das nennt man Nulloption. Deshalb: Immer 2 Optionen zur Verfügung stellen. Eine mit hoher Hürde, eine mit niedriger Hürde.
Psychotricks die angewand werden:

  • Preisvergleich erschweren
  • Kosten verstecken
  • Misdirection – Kunden in eine andere Richtung führen (z.B. Skipping Link verstecken. Usability Muster so anlegen, das User es nicht sehen. Ist rechtlich erlaubt.)
  • Priming
  • Künstliche Verknappung, können mit anderen Methoden kombiniert werden zB Usability Pattern, Einschränkungen. Angebote knapp erscheinen lassen um den User zum Kaufen zu drängen. Bei Booking zum Beispiel ausgebuchte Hotels anzeigen um mehr Stress zu erzeugen.
    AdWords Budget von Booking im Quartal: 1,7 Mrd Dollar
  • Überladung: Besucher überfordern
  • Komplizierte Formulierungen damit sich der Besucher nicht auskennt.
  • Semiotik: Lehre von den Zeichen. Zum Beispiel Ampelsystem aber anstatt rot grau darstellen, dann wirkt es nicht ganz so schlimm für den User
    Beispiel: Bei einer Buchungsplattform werden Dinge die das Hotel nicht anbietet statt rot als ausgegraute Symbole dargestellt
  • Statisktik. Darstellung der Prozentangaben obliegt dem Anbieter. Zum Beispiel ein Hotel kann schlecht sein, jedoch in guter Lage somit ist die allgemeine Hotelbewertung recht gut.

Dark Pattern

  • Nagging – Wiederholtes Stören der normalen User Journey (PopUps, Ungewollte Werbung, Einschränkung der Funktionalität, zeitlicher Verzug, Audiovisuelle Störung)
  • Obstruction – Absichtliches Erschweren eines Prozesses, um dadurch den User zu einer nicht gewollten Handlung zu verleiten (schwer auffindbare Buttons, Lange Pfade, Zwischenwährungen)
  • Sneaking
  • Interface Interference – Absichtliches Anwenden von Usabilityfehlern, um den User auf falsche Pfade zu lenken (Asymmetriche Benutzeroberfläche, …)
  • forced Action – Aufbau einer zwangsähnlichen Situation. Benutzer muss eine bestimmte Aktion ausführen, um auf bestimmte Funktionen zuzugreifen (oder um weiterhin darauf zugreifen zu können)
  • In Aussicht stellen: sogenannte Karotte vor der Nase. Motivieren bzw. aktivieren der Benutzer. Zum Beispiel Versandkosten: ab 29 € Versandkostenfrei.
    Das Spiel mit der Motivation funktioniert vor allem bei introvertieren Menschen.
  • Sneaking
  • Foreced Action: Fake Captcha
  • Friend Help
  • Friend Spam: Die Hoheit und Selbstbestimmung mit wem wie kommuniziert wird geht verloren. Könnte auch growth hacking genannt werden
  • User Shaming
  • Adblock Switch: Negatives Empfinden im Unterbewussten
  • Difficult Unsubscribe auch oft mit User Shaming kombiniert

darkpatterns.uxp2.com
darkpatterns.org

14:15 – Deine Gamification stinkt!

Dominik Ehrenberg
Podcast meinscrumistkaputt.de
Blog zockworkorange.com
Was ist ein Spiel ?
Freiwillige Handlung, Beschäftigung mit festgesetzten Grenzen
Johan Huizinga: Homo Ludens – Standardwerk zu Gametheorie
Beschreibte 1938 schon Gamification
Bernard Suits – The Grasshopper: Playing a game is the voluntary attempt to overcome unnecessary obstacles. (1978)
Jane McGonigal – Reality is Broken: all games share four defining traits: a goal, rules, a feedback system, and voluntary participation.
A game is a problem-solving activity, approached with a playful attitude
Jesse Schell – The Art of Game Design
It is an invariable principle of all play… that whoever plays, plays freely. Whoever must play cannot play.
Was beinhalten die Definitionen

  • Freiwilligkeit: alles was ich im Spielbereich mache ist freiwillig. Von PS4 Spielen bis Brett spielen bis zu Sandkastenspielen von Kindern
  • Problemlösung: realweltliches Problem das ich spielerisch löse oder das Spiel gibt mir ein Problem das ich lösen soll. Probleme und Hinderniss vom Spiel die ich freiwillig löse. Innere Antriebskraft das Lösen zu wollen
  • Regeln und Hindernisse: Regeln die Hindernisse darstellen die ich akzeptieren muss und schauen muss wie ich damit umgehe. Diese Hindernisse wollen wir wieder freiwillig lösen. Künstliche Hindernisse und Regeln die uns vorgesetzt werden.
  • Alle definitionen gehen davon aus das es Freiwillig ist aber nirgends steckt in den Definitionen drin das es Spaß macht. Obwohl spielen wir weil es spaß macht.

Warum spielen wir
Unterschiedliche Untersuchungen.
Minding Animals, Awareness, Emotions and Heart […] von Marc Bekoff
Beobachtung von Tieren da ist das Spiel dazuda realweltliche Dinge zu lernen. Zum Beispiel: wie gehe ich mit Konflikten um, wie fest kann ich zubeißen bevor es dem Tier gegenüber weh tut….
self-determination theory
ein paar Kernpunkte: wie funktioniert Selbstbestimmung

  • Kompetenz: zB Videospiele geben Machtfantasie. Kompetenz erleben ist mit drin
  • Autonomie: User möchte Autonomie erleben und entscheiden wie ich es spiele, wann ich aufhöre, ob ich die Regeln verändere (bei zum Beispiel Brettspielen)
  • Verbundenheit: Durch das Spiel verschaffe ich Verbundenheit mit anderen Personen. Meisten Spiele sind so designt das man mit anderen spielt. Dadurch schaffe ich verbundenheit mit der spielenden Person. Vertiefe die Verbindung zu dieser Person. Die großen Spiele halten sich genau deshalb so lange (World of Warcraft, Overwatch, Counter Strike, usw.)

Motivation: Intrinsisch und Extrinsisch
Christoph Kolb – Gamification my ass

  • Intrinsische Motivation: von mir heraus, was treibt mich an, innerer Antrieb
  • Extrinsische Motivation: von außen motiviert,
  • Gesellschaft ist gut darin die Intrinsische Motivation durch extrinsische Motivation zu überschreiben (zum Beispiel durch Belohnungszahlungen, …)

Science – wissenschaftliche Studien
Tetris: (oder Candy Crash Saga)
hilft dabei PDBS (Posttraumatische Störungen) vorzubeugen
Logische Kombinationen belegen entsprechende Areale im Hirn, dadurch ist das Hirn nicht mehr in der Lage das schreckliche Ereigniss nicht auf den auszulösenden Trigger zu setzen

  • Superbetter:
    Gehirnschädeltraumata: wie kann ich mein Leben spielerisch gestalten um es zu bewältigen. Bei deprisiven Leuten schaffen es besser mit dem leben auszukommen. Kommen besser klar.
  • SnowWorld
    VR Erfahrung die Patienten mit starken Verbrennungen hilft. Die kalte Landschaft in einer virtuellen Umgebung sehen ertragen die schmerzhafte Behandlung besser
  • Bejeweled 2
    von der Entwicklerfirma gesponserte Wissenschaftliche Forschung: die Gehirnwellen tendieren angeblich eher in die positive Richtung.
  • SPARX
    Hilft Kindern mit Depressionen besser damit umzugehen. Ist ein Fantasy-Rollenspiel
  • Bravemind, Forschungsprojekt
    Versuchen mit VR und Spielen besser mit Posttraumatischen Störungen umzugehen (u.a. Kriegsveteran)
  • Re-Mission
    Ist für Kinderkrebspatienten. Haben fest gestellt das Kinder die dieses Spiel spielen eher die Behandlungengemacht  und die Tabletten genommen haben

Ludonarrative Dissonanz
Ludon – lat. spielen / narrative – lat. erzählen
Spielen und erzählen passen nicht zusammen. Entkopplung von Spiel und Handlung.
Gamification funktioniert deshalb oft nicht, da es einen Spielteil und einen Anwendungsteil gibt und die beiden passen oft nicht zusammen.
Medalification vs Gamification
Es ist oft keine Gamifiaction sondern eine Medalification, da der Benutzer jede Menge Medallien bekommt. sozusagen die Karotte um weiter zu machen.
Endogener Wert
Im Gamedesign besagt: welchen Wert hat etwas im Spiel oder ist es einfach unnötiger Fluff. Kann ich zum Beispiel wenn ich was sammle danach etwas damit anfangen oder wird einfach nur ein Balken voll.
Neugier
Neugier animiert mich ebenfalls zum Spielen oder weiterspielen. Kann ich meinen Rekord brechen. Kann ich besser werden und mich selbst schlagen?
Gameful Design
Jane McGonigal: We don’t need no stinkin’ badges

  • Positive Emotion
  • Relationships
  • Meaning
  • Accomplishment

blog.superbetter.com/gameful-design von McGonigalBuchempfehlungen wen man sich mit Gamification beschäftigt oder beschäftigen will:

  • The Ethics of Computer Games von Miguel Sicart
  • The Art of Game Design von Jesse Schell
  • Super Better von Jane McGonigal
  • Game Maker’s Toolkit – YouTube Channel von einem Gamer

Wichtig: Spielt Spiele! und danach reflektieren wie funktioniert das Spiel im Grunde
Entwickelt Spiele!

15:30 – Security by UX-Design

Enno Park
Beim Lesen des Inhaltes dachte ich mir, das klingt interessant. Der Herr war nur leider etwas falsch am Platz des Vortragenden. Eine sehr einschläfernde Wirkung. Ich denke viele sind aus Höflichkeit sitzen geblieben. Leider hab ich mir etwas schwer getan ihn ernst zu nehmen, nachdem Hacking (ausgesprochen [hæking]), von ihm ausgesprochen wurde, wie es geschrieben wird ([haking]).
Ich wär wahrscheinlich in einem anderen Vortrag besser aufgehoben gewesen…. Bei dieser Zusammenfassung, wird es keine Anmerkungen, Auführungen oder Kommentare geben.
Bringe die NutzerInnen dazu, sich unbewusst und von alleine sicherer zu verhalten, indem du deine Anwendung so gestaltest, dass sie nicht anders können.
Denkanstoß: Was wäre wenn Microsoft bereits in den 1990er Jahren eine transparente Public-Key-Verschlüsselung in Outlook als Default eingeführt hätte?
Hier doch eine Erklärung von mir: Was ist Public-Key-Verschlüsselung lt. Wikipedia

Asymmetrisches Kryptosystem ist ein Oberbegriff für Public-Key-Verschlüsselungsverfahren, Public-Key-Authentifizierung und digitale Signaturen. Das „asymmetrische Kryptosystem“ oder „Public-Key-Kryptosystem“ ist ein kryptographisches Verfahren, bei dem im Gegensatz zu einem symmetrischen Kryptosystem die kommunizierenden Parteien keinen gemeinsamen geheimen Schlüssel zu kennen brauchen. Jeder Benutzer erzeugt sein eigenes Schlüsselpaar, das aus einem geheimen Teil (privater Schlüssel) und einem nicht geheimen Teil (öffentlicher Schlüssel) besteht. Der öffentliche Schlüssel ermöglicht es jedem, Daten für den Besitzer des privaten Schlüssels zu verschlüsseln, dessen digitale Signaturen zu prüfen oder ihn zu authentifizieren. Der private Schlüssel ermöglicht es seinem Besitzer, mit dem öffentlichen Schlüssel verschlüsselte Daten zu entschlüsseln, digitale Signaturen zu erzeugen oder sich zu authentisieren.
Ein Public-Key-Verschlüsselungsverfahren ist ein Verfahren, um mit einem öffentlichen Schlüssel einen Klartext in einen Geheimtext umzuwandeln, aus dem der Klartext mit einem privaten Schlüssel wieder gewonnen werden kann.

Auch 2019 ein Ding: Keine Passwörter im Klartext speichern. (was er nicht sagt….)
Login gestalten

  • Visualisierung der Passwort-Stärke – Balkenanzeige, oder gleich verhindern das sie sich mit schwachen Passwort anlegen können
  • Passwort-Generator gleich in Login-Form mitliefern
  • Passwörter automatisch mit einschlägigen Leaks abgleichen
  • Nutzername statt E-Mail-Adresse
  • Haustier und Lieblingslehrer als Sicherheitsabfrage sind unbrauchbar
  • Auf Single-Sign-On verzichten
  • 2-Faktor-Authentifizierung erzwingen
  • Auf HTML-Mails verzichten
  • Falls du E-Mail-Provider bist: biete catch-all-E-Mail-Adressen an

Zu User-Experience gehört auch die langfristige Erfahrung, nicht gehackt (gesprochen von ihm: [gehakt]) worden zu sein, seine Lieblingsapp nicht in den Schlagzeilen gelesen zu haben und sich bei der Benutzung sicher fühlen zu können.
— Ende —