English Questions are OK
Wird mir der Vortrag helfen?
Modul finden
Modul installieren
Modul benutzen
Beispiele
Max Maischein
DZ BANK Frankfurt
Deutsche Zentralgenossenschaftsbank
Data Scientist
Erfahrung ist etwas, das man dann braucht, wenn man es am wenigsten hat
Keine feste Liste von Modulen (Task::Kensho, CPAN100, ...)
Keine Entscheidung / Einwertung die soll selber getroffen werden
Eigene Meinung markiert mit "🚨"
Lesehilfe/Entscheidungshilfe für MetaCPAN / CPAN
Domänenkenntnis ist das wichtigste
... bzw. wissen wo man nachschauen kann
CPAN ist gar nicht so zentral
*
Wir brauchen X
1: X = Single sign on 2: X = XML 3: X = whatever
Wir nutzen Perl
Da gibt's doch was auf CPAN
Gibt's da was auf CPAN?
Das mache ich schnell selber!
Ihr
bzw. eine Teilmenge von Euch
hoffentlich eine große Teilmenge
Könnt programmieren
Noch kein Modul (selber) installiert
Noch kein Modul installieren lassen
Sollt Module vorschlagen / finden / einwerten
Oder selber schreiben
Verbesserung der Themenorientierung
Verbesserung der Findbarkeit (-> Suche)
Verbesserung der Anwendbarkeit (-> Installation)
Verbesserung der Dokumentation (->Anwendung)
Wissen sammeln
Module einwerten
Installieren
Themengebiet kennenlernen
Diskussionsforum finden (Mailingliste, Webseiten, FB Gruppe, ???)
Existierende Ansätze sichten
Existierende Programm+Programmiererdokumentation sichten
Existierende Bibliotheken etc. finden
Glück: Mehr als eine
Pech: Mehr als zwei
Themengebiet
Gibt es Standardtestcases / Standardanwendungen
Wann war die letzte Änderung im Umfeld? An der API?
SAX vs. DOM bei XML Parsern
Dokumentenorientiert vs. Relational bei Datenbanken
Automatik vs. Getriebe beim Auto
Google (ohne "Perl")
Google (mit "Perl")
CPAN mit gefundenen Schlüsselwörtern
StackOverflow
Schwieriger Teil
"Sollte ich X oder Y nehmen?"
Stackoverflow: Closed as Opinion
Perlmonks.org: Longer-form, but still, what problem do you want to solve?
Datum der Nachrichten
Also selber einwerten:
Gibt es Standardtestcases in der Domäne? (OpenSSL, OWASP Testsuite, ....)
Beispiel: Javascript Framework: "To-Do app"
When was the last change (module, API, topic)
???
CPAN
Reading module documentation
+documentation, +bugs, +examples, +age, +author, +repositories
INSTALL
README
POD Sections and what they mean
NAME - the name of the module
What's in a name?
The name puts you in a long tradition of similar names and expectations
The name describes you accurately
"Acme"
"Simple" in everything but the name (XML::Simple, Filter::Simple, ...) (But also: LWP::Simple, Keyword::Simple, ...)
"Tiny" als Alternative, welche den Umfang auch beschreibt
"complexity" vs "complication"
single line description
Simplest use possible
Where to go next
Lizenzen
Lizenzen der benötigten Module
API Keys und deren Verwaltung
Benötigte Systemprogramme und -APIs (Win32::, C-Compiler zur Laufzeit)
Online-Zugang bei der Installation?
Source Filter?
Framework calls you You call a library
Niemals ein Framework nehmen, da ein Framework monotheistisch ist.
Beispiel: Event-loops (AnyEvent, Mojo, ... )
1: perldoc -l Das::Modul 2: 3: perl -MDas::Modul=99999999 -e1
Für Profis mit einem netten Sysadmin:
1: perl -MV=Das::Modul
Sollte ich es kennen?
Perl core Module Module::Corelist
The best setup steps are no setup steps.
Maybe the module is installed already?
Authors:
every step roughly halves the number of people who will complete the process.
Keine zusätzlichen Schritte, fertige Pakete
Wird später interessant
Works on my machine
Strawberryperl ist nicht Perl
Red Hat Perl ist nicht Perl
ActiveState Perl ist nicht Perl
"Jedes" Modul sollte in Makefile.PL / META.* / Build.PL / cpanfile stehen
Level 0
ask your sysadmin
zeroth decision:
Testrun in a VM or on throwaway Google cloud instance
1: https://console.cloud.google.com/cloudshell/editor?pli=1&shellonly=true
Level 1
use OS package manager + sysadmin
Never use CPAN with the system perl
apt-get install libwww-mechanize-chrome-perl
ppm libwww-mechanize-chrome-perl
Level 2 (if not available on package repo):
Use local::lib with system Perl
Demo of CPAN setup w/local::lib
Level 3:
install another Perl under /usr/local/lib if available
Level 4:
Compile your own Perl
1: sh Configure -de 2: make 3: make test 4: make install
Install modules using cpan
the documentation
the links in the documentation (bare minimum the author thinks is needed)
the examples in the documentation
the examples in the distribution
the tests
Use the source, Luke
Ask the author
Fragen?
Examples (blacklist, not-black-list):
[ ] IP handling NetAddr::IP / alte Version
Examples (blacklist, not-black-list):
[ ] JSON (JSON, JSON::Tiny, JSON::XS, Cpanel::JSON::XS, Mojo::JSON, keines gut)
Examples (blacklist, not-black-list):
[ ] YAML (YAML::Tiny, YAML::Syck, ...) 🚨 Tina fragen
Examples (blacklist, not-black-list):
[ ] XML: XML::Simple, XML::LibXML, XML::Twig, XML::Parser, XML::Compile, XML::DOM 🚨 XML::Twig (DOM-like) 🚨 XML::LibXML (DOM) 🚨 XML::Compile (Schreiben, wenn XSD vorhanden)
Examples (blacklist, not-black-list):
[ ] Web frameworks: Mojolicious, Dancer (2), CGI::Application, ... 🚨 Keines gut
Examples (blacklist, not-black-list):
[ ] Template: Use whatever your framework suggests
Examples (blacklist, not-black-list):
[ ] Config modules
Examples (blacklist, not-black-list):
[ ] Mail modules 🚨 MIME::Lite
Examples (blacklist, not-black-list):
[ ] Event loop: AnyEvent, Mojolicious, Net::Async, POE, ... 🚨 Future
Examples (blacklist, not-black-list):
[ ] Internationalization
Examples (blacklist, not-black-list):
[ ] Authentication
Examples (blacklist, not-black-list):
[ ] Web Scraping/HTTP 🚨 WWW::Mechanize + HTML::TreeBuilder 🚨 WWW::Mechanize::Chrome 🚨 Mojo::UserAgent
Examples (blacklist, not-black-list):
[ ] ORMs / SQL helpers 🚨 (keine)
Examples (blacklist, not-black-list):
[ ] Class builders 🚨 Moo 2, aber keines macht gute OO-APIs
Examples (blacklist, not-black-list):
[ ] Task::Kensho, Modern::Perl / modernperlbooks.com