Wie viele Leute sind da, die nicht Deutsch verstehen?
Ich versuche es nochmal.
Ich kann es noch ein bisschen höher schieben.
Geht das schon mal in die Zeit ab?
Könnt ihr mich jetzt übers Mikro hören?
Ich habe die Ehre, den ersten Vortrag nach der Mittagspause zu machen.
Ich muss also noch lauter reden, als ich das normalerweise schon tue.
Falls ich zu leise rede, sagt mir einfach Bescheid.
Ganz kurz zu mir. Ich mache Perl seit 1998 und YAML seit 2017.
Seit letztem Jahr bin ich bei SUSE Software Solutions als Ingenieur, vielleicht aber auch als YAML Consultant.
Ich maintaine die YAML Test Suite, die Testmatrix, YAML PM, YAML XS, Pi YAML, LIB YAML und YAML PP.
Es geht heute darum, was eigentlich YAML ist und warum es so kompliziert ist.
Dann ein paar Verbesserungen, die die Module erfahren haben.
Dann noch Features und Plugins für YAML PP.
Was ist YAML? Wofür steht das? Weiß das jemand?
Genau. Die allererste Version war tatsächlich Yet Another Marker Language, aber dann hat man sich anders entschieden.
2001 wurde das tatsächlich schon gestartet von Oren Van Kikkie, Clark Evans und Brian Ingersen,
der heute als ingi.net bekannt ist, den meisten vielleicht.
Als mein Talk auf Twitter angekündigt wurde, hat da jemand die Frage gestellt oder gesagt,
viele stehen zwischen JSON und YAML. So sollte man also JSON oder YAML benutzen?
Die Antwort ist ja. Vielleicht war aber auch gemeint, sollte ich JSON entweder JSON oder YAML benutzen.
Das hängt davon ab, was man machen möchte. Wer von euch kennt Ansible?
Salt Stack schon mal gehört, Travis CI, Circle CI, Abwehr, Kubernetes, Docker Compose und viele, viele andere Sachen.
Die benutzen alle YAML. Ich glaube, wenn man das alles in JSON machen würde, dann wäre das sehr unleserlich.
Erst mal eine Frage. Wer von euch mag YAML? Ja, super, die Hälfte mindestens. Wer von euch ärgert sich über YAML? Ehrlich, ehrlich.
Warum ärgern sich denn die Leute eigentlich über YAML? Vielleicht ganz kurz jemand eine Idee, warum ärgert ihr euch?
Also ich habe zumindest so zwei Hauptthemen. Die Syntax kann tatsächlich ein bisschen schwierig werden, um sie zu verstehen.
Und hat natürlich auch viel mehr Features als JSON. Und dann gibt es die ganzen Differenzen in den verschiedenen YAML-Implementierungen in anderen Sprachen, aber auch in Perl selber.
Deswegen einfach mal eine ganz kurze Einführung. Ein Mapping in YAML, das kennt ihr bestimmt alle. Key, Doppelpunkt und Value.
Und ganz oben sieht man immer diese typischen drei Striche. Die sind nicht unbedingt Pflicht, aber das macht es so ein bisschen erkennbar als YAML.
Und hier haben wir jetzt eine Liste. Also der Key ist Talks und der Value ist eine Liste mit drei Werten. Und jetzt kommt schon ein Unterschied.
Man kann das Ganze auch ohne Spaces vorne schreiben. Das wird auch noch als Indentation erkannt.
YAML-PM konnte das eine Weile lang nicht. Mittlerweile kann es das. Und ganz wichtig die Einrückung nicht mit Tabs, immer nur mit Spaces.
YAML kennt keine Tabs. Das ist auch gut so.
Und so sieht das dann aus, wenn es noch ein bisschen Nested-Mappings und Sequenz zusammen sind.
Und hier haben wir eine Liste von Listen. Das kann dann schon mal ein bisschen unübersichtlich werden. Man kann es aber auch so schreiben.
Es gibt eben diesen Flow-Style in YAML. Es geht mit Mappings genauso, irgendwie mit Listen.
Und das sieht halt so ein bisschen aus wie JSON, aber man muss halt keine Quotes benutzen und generell dann einfacher zu lesen.
Und dann gibt es noch Anchors und Aliases. Wer kennt das? Wer hat das schon mal benutzt?
Okay, Pa. Also die Aliases, das hängt auch ein bisschen von der Implementierung ab. In YAML-PM und YAML-SYC und YAML-PP sind das Referenzen.
In Poi haben wir die Referenzen. Das bedeutet aber auch, dass einzelne Strings oder Zahlen nicht wirklich abgebildet werden damit.
Das heißt, ich kann ein Alias auf einen String machen, aber wenn ich das wieder dampfe nach dem Laden, dann ist es im Prinzip kein Alias mehr.
Dann fällt das halt weg. Oder wenn ich in der Datenstruktur einen String ändere, der einen Alias hat, dann funktioniert das auch nicht.
Das funktioniert nur mit Referenzen. YAML-XS macht das über echte Aliases. Das heißt, da gibt es kleine Unterschiede in der Implementierung.
Aber das ist für die meisten Fälle unerheblich. Das wird euch im Alltag wahrscheinlich nicht stören.
Da kann man also wirklich an einer Stelle ein großes Mapping definieren und an anderen Stellen immer wieder verwenden.
Und dann gibt es noch verschiedene Dokumente. Also es ist auch noch ein Unterschied zu JSON.
Ich kann in einem YAML Stream mehrere Dokumente haben.
Dann kann ich das im Listen-Kontext laden und bekomme dann eine Liste von diesen Dokumenten.
Und jetzt zur Implementierung. Es gibt drei Versionen von YAML. Die meisten haben eigentlich 1.1 implementiert.
Presenters
Tina Müller
Zugänglich über
Offener Zugang
Dauer
00:39:30 Min
Aufnahmedatum
2020-03-05
Hochgeladen am
2020-03-05 21:49:32
Sprache
de-DE
Over the last years, a lot of improvements have been made to the Perl YAML Ecosystem, also thanks to The Perl Foundation and the Perl Toolchain Summit.
Bugs in existing YAML modules have been fixed (syntax parsing errors, memory leaks, etc.), secure loading of untrusted input has been made possible.
With YAML::PP a module has entered CPAN which is one of the first three projects that was written by using the cross-language yaml-test-suite.
It aims to be as powerful as PyYAML. Successful tools like Ansible are using PyYAML. Although Ansible just uses a small part of what's possible in PyYAML, it couldn't have been written in Perl. I want to make that possible.
I'll show you what has been improved for existing modules, and what kind of cool stuff you can do with YAML::PP already!
You should already be familiar with the basic YAML syntax.