Deutscher Perl Workshop 2014 PORF Practice

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

Imperative Programmierung
Strukturen in C Spelz, Sievers, Bethke.
MySQL.
Seminar Internetdienste Web 2.0 und Rich Internet Applications (RIA) JavaFX Rainer Scholz.
der Universität Oldenburg
Objektorientierung mit VBA
FH-Hof Einbindung von JavaScript Anweisungen
Java: Dynamische Datentypen
FH-Hof Servlets Richard Göbel. FH-Hof Konzept Servlets werden auf der Server-Seite durch ein Formular aufgerufen werten die Eingaben aus einem Formular.
Java: Grundlagen der Sprache
Oracle PL/SQL Server Pages (PSP). © Prof. T. Kudraß, HTWK Leipzig Grundidee: PSP – Internet-Seiten mit dynamischer Präsentation von Inhalten durch Einsatz.
Oracle WebServer - Einführung. © Prof. T. Kudraß, HTWK Leipzig Oracle Web Application Server HTML WebServer ® File system Static HTML PL/SQL Packages.
Die Skriptsprache Perl (2) Wolfgang Friebel DESY Zeuthen.
EDV1 - Komplexe Datentypen
Einführung in Visual C++
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Datenbanken 2: Einfache Aufgaben mit TabCalc
Einführung MySQL mit PHP
RelationentheorieObjektorientierte Datenbanken AIFB SS Das ODMG-Objektmodell vs. relationales Modell (1/9) ODMG-Objektmodell Literal_type Atomic_literal.
Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt.
Web-Anwendungsentwicklung à la MVC. Übersicht Über Georg Heeg Ein industrielles Beispiel Web-Anwendungen aus Smalltalker-Sicht MVC für das Web Programmierdemo.
Seite Common Gateway Interface. Konzepte. Übersicht 1Einleitung 2Was ist CGI? 3Wozu wird CGI verwendet? 4Geschichtlicher Überblick 5Grundvoraussetzungen.
FH-Hof HTML - Einführung Richard Göbel. FH-Hof Komponenten des World Wide Webs WWW Browser HyperText Transfer Protocol (HTTP) via Internet WWW Server.
Internet-Datenbanken und ASP Eine Einführung von J.Sommer & A.Vortisch.
Etikettendruck mit Word
Wir bauen uns eine Webapplikation!
O.Univ.-Prof. Dr. Dimitris Karagiannis Datenbanken administrieren mit phpMyAdmin Martin Marinschek
Einführung / Geschichte Einführung / Geschichte Motivation Motivation Beispiel Beispiel Architektur / Komponenten Architektur / Komponenten Konfiguration.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
PHP und MYSQL am Organisatorisches Der komplette Kurs im Schnelldurchgang Bewertung von wichtig und unwichtig Historisch Kulturwissenschaftliche.
Einführung in die Programmiersprache C 4
Datenbanken Dantenbanksystem Data Base System Datenbasis (Daten)
Datenbanken Datenstrukturen.
WINlearn Technische Spezifikation der Benutzerstruktur Gruppe 4.
Freiwillige Feuerwehr der Stadt Perg
JavaServer Faces Urs Frei. Inhalt JSF Funktionsweise Rückblick JSP Bestandteile von JSF So einfach ist die Anwendung (Beispiel) Eclipse im Einsatz (Entwicklungsumgebung)
Was mich ursprünglich von Perl überzeugt hat. Gegeben ist eine Textdatei, deren Größe unbekannt ist. Sie ist jedoch so klein, daß sie komplett in den Speicher.
Objekte Objekte sind Elemente, die man mit dem Programm bearbeiten kann. Datei, aufgebaut als Tabelle (Relation) Datensatz, entspricht einer Zeile der.
SQLite und XML in PHP 5.
Einführung in PHP 5.
Namen in Vor- und Nachname aufteilen Herbers Excel-Server - der Workshop Angebote des Excel-Servers: Die Excel/VBA-Beispiele Die Excel/VBA-BeispieleDie.
1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.
Formulare in HTML.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Programmierpraktikum Java SS 2005 Mag.Thomas Hilpold.
ExKurs EinfG 1/13 Dr. Barbara Hoffmann LiteraturKompetenz Objekte einfügen: Tabellen Mit dem elektronischen Schreiben ist es Ihnen leicht gemacht,
Lösung Hausaufgabe 4-1 #!perl -w $infile = "daten4-1.txt"; $count1 = $count2 = 0; open (IN,$infile) || die "Oeffnen: $infile $!"; while ( ){ $count2 +=
1 Tagesüberblick 5 Lösung Hausaufgabe/Fragen Assoziative Felder Funktionen zu Variablenbehandlung.
1 Lösung Hausaufgabe 5-1 Seite 1 #!perl -w # Datei Oeffnen und Variablen initialisieren $infile = "daten5-3.txt"; $im=$iw=$sm=$sw=0; open (IN,$infile)
TypoScript.
(Syntax, Strings/Zahlen, Variablen, Arrays)
PHPmyadmin Maya Kindler 6c.
Datenbanken erstellen mit PostgreSQL
Was ist ein Datenbankprogramm?
C++ FÜR cOMPUTERSPIELENTWICKLER
Förderverein Bürgernetz München Land e.V. Seite 1 von 16 Textverarbeitung-2016_06 © 2016–Günther Scheckeler Tel.: Inhalt 1 Bestandteile eines.
Anforderungen an die neue Datenstruktur
Netzwerk - Programmierung
Konstruktoren.
Serienbrief erstellen mit LibreOffice Writer
Netzwerk - Programmierung
SQL Join.
Raphael Fischer Informatik II - Übung 05 Raphael Fischer
Tutorstunde 10.
Implementieren von Klassen
Objektorientierte Programmierung
Titel Ihrer Veranstaltung
Schleifen Datenfelder (Arrays) Verzweigungen
(Structured Query Language)
 Präsentation transkript:

Deutscher Perl Workshop 2014 PORF Practice Einfache Erzeugung von verschiedenen Report-Formaten + Designs a la Perl Ralf Peine Ralf Peine Deutscher Perl Workshop 2014 PORF (Perl Open Report Framework)

Übersicht Die Aufgabe Warum ein neues Report Framework ? Einen Report in 4+n Statements erstellen Was bereits fertig ist Beispiele zeigen / laufen lassen Was noch angedacht ist Bevor ich Factories in der SW-Entwicklung vorstelle, möchte ich zunächst in eine reale Fabrik schauen. Denn hier sind die für die SW neuen Komponenten schon länger im Einsatz. Ralf Peine Deutscher Perl Workshop 2014 PORF (Perl Open Report Framework)

Die Aufgabe DB Application Tabellen (Perl) Report %hash @array $object Wird durch PORF erstellt und vorkonfiguriert Verarbeitung von Datensatz Übergabe als ... WriteAll() %hash DB Application (Perl) @array Tabellen Report Nur Ausgabe $object Datei o. $string $other Liest, verarbeitet und erzeugt Daten irgendwie HTML weitere beliebige Formate Text Zur Laufzeit dynamisch erweiterbar CSV Ralf Peine Deutscher Perl Workshop 2014 PORF (Perl Open Report Framework)

Gibt es das noch nicht? Ralf Peine Deutscher Perl Workshop 2014 PORF (Perl Open Report Framework)

Report Framework? Es gibt mehr als 5000 Treffer für Report in Packages auf CPAN Text::Report Data::Report Nicht mehr gepflegt Keine Informationen über die Performance Verwendet Plugins mit Klassen → langsam ? Nur Text als Ausgabe Einziges Framework Ralf Peine Deutscher Perl Workshop 2014 PORF (Perl Open Report Framework)

Wichtige, aber fehlende Features Leicht zu benutzen, fertig „von der Stange“ Möglichkeit, alles anzupassen (Wert / sub {…}) Verschiedene Reports für dasselbe Format in einer Applikation verwenden Erzeugung und Konfiguration von beliebigen zusätzlichen Formaten zu Laufzeit „Massen-Daten“ kompatibel (Performance/Speicherplatz) 10.000 bis zu 1 Million Zeilen pro Sekunde in eine Datei schreiben Ralf Peine Deutscher Perl Workshop 2014 PORF (Perl Open Report Framework)

Einen Report in 4+n Statements schreiben! „use“ zählt nicht use Report::Porf::Framework; my $report_framework = Report::Porf::Framework::Get(); my $report = $report_framework- >CreateReport($format); $report->ConfigureColumn (-header => 'Vorname', -value_named => 'Prename' ); $report->ConfCol (-h => 'Nachname', -val_nam => 'Surname'); $report->CC(-h => 'Alter', -vn => 'Age'); $report->ConfigureComplete(); $report->WriteAll(\@person_rows, $out_file_name); 1 2 n = 1 n = 2 n = 3 3 4 Ralf Peine Deutscher Perl Workshop 2014 PORF (Perl Open Report Framework)

Wem die Kurzform noch zu lang ist: Ultrakurzform für Perl Profis Danke, getty Header Value Accessor $report->cc(Vorname => 'Prename'); # $hash{Prename} $report->cc(Nachname => 1 ); # $array[1] $report->cc(Zeit => 'Time()' ); # $object.Time() $report->cc('Alter(Monate)' => '12 * $_[0]->{Age}' ); # sub { } $report->cc('Alter(Monate)' => sub { return 12 * $_[0]->{Age}; } ); $_[0] Keyword für freien Zugriff Wird umgewandelt in diese sub Ralf Peine Deutscher Perl Workshop 2014 PORF (Perl Open Report Framework)

@getty: Es geht noch viel kürzer!! Ralf Peine Deutscher Perl Workshop 2014 PORF (Perl Open Report Framework)

Array von Hashes => @data_list PORF als Einzeiler !! use Report::Porf::Framework; Report::Porf::Framework::auto_report( 'Table::Simple' => html => \@data_list => file_name); \@data_list => file_name); Report::Porf::Framework::auto_report(\@data_list); my $report_string = Report::Porf::Framework:: auto_report_string(\@data_list); Defaults Defaults, im Framework einstellbar Ausgabe auf Terminal In Datei in String Ralf Peine Deutscher Perl Workshop 2014 PORF (Perl Open Report Framework)

Ergebnisse im Format „Text“ *============+============+============* | Vorname | Nachname | Alter | *------------+------------+------------* | Vorname 1 | Name 1 | 7.69230769 | | Vorname 2 | Name 2 | 15.3846153 | | Vorname 3 | Name 3 | 23.0769230 | | Vorname 4 | Name 4 | 30.7692307 | | Vorname 5 | Name 5 | 38.4615384 | | Vorname 6 | Name 6 | 46.1538461 | | Vorname 7 | Name 7 | 53.8461538 | | Vorname 8 | Name 8 | 61.5384615 | | Vorname 9 | Name 9 | 69.2307692 | | Vorname 10 | Name 10 | 76.9230769 | | Vorname 11 | Name 11 | 84.6153846 | | Vorname 12 | Name 12 | 92.3076923 | | Vorname 13 | Name 13 | 100 |*============+============+============* Ralf Peine Deutscher Perl Workshop 2014 PORF (Perl Open Report Framework)

Ergebnisse im Format „HTML“ Ralf Peine Deutscher Perl Workshop 2014 PORF (Perl Open Report Framework)

Aktuell implementierte Optionen $report->ConfigureColumn() / ConfCol() / CC() Layout Mögliche Werte -header -h constant: Text -align -a constant: (left|center|right) (l | c | r) -width -w constant: integer -format -f constant: string for sprintf -color -c constant / sub {…} Die sub {…} macht bedingtes Einfärben einfach möglich. Ralf Peine Deutscher Perl Workshop 2014 PORF (Perl Open Report Framework)

Aktuell implementierte Optionen (2) $report->ConfigureColumn() / ConfCol() / CC() Daten Zugriff Mögliche Werte Typ -value_named -val_nam -vn constant / sub {…} %hash -value_indexed -val_idx -vi constant / sub {…} @array -value_object -val_obj -vo constant / sub {…} $object -value -v constant / sub {…} any Ralf Peine Deutscher Perl Workshop 2014 PORF (Perl Open Report Framework)

Mehr Beispiele, HTML Datenspalten von Report dynamisch erzeugt durch sub {...} Ralf Peine Deutscher Perl Workshop 2014 PORF (Perl Open Report Framework)

Mehr Beispiele, HTML (2) Ralf Peine Deutscher Perl Workshop 2014 PORF (Perl Open Report Framework)

Wie ist das implementiert ? Mehr Beispiele, HTML (3) Wie ist das implementiert ? $report->ConfigureColumn (-header => 'Dices', -a => 'C', -value => sub { return $dices_to_image->($_[0]->{'Dices'}); } ) if $report->IsFormat('HTML'); Spezielle „-value“ Option verwenden Nur für HTML Ralf Peine Deutscher Perl Workshop 2014 PORF (Perl Open Report Framework)

Mehr Beispiele, HTML (4) Anonyme „sub“ erzeugen my $dices_to_image = sub { my $throws = shift; # Dice throw values my $result = ''; my $number_html_code; foreach my $number (split (//, $throws)) { if ($number =~ /^\d$/) { $number_html_code = "<img src='dice_$number.jpg'/>" } else { $number_html_code = "?"; } $result .= $number_html_code; } return $result; }; Parameter der Sub In einzelne Zeichen zerlegen Ziffern durch Bild ersetzen Alles Andere als „?“ darstellen Rückgabe Speichern Ralf Peine Deutscher Perl Workshop 2014 PORF (Perl Open Report Framework)

Beispiele - zeigen - laufen lassen Praxis Beispiele - zeigen - laufen lassen Ralf Peine Deutscher Perl Workshop 2014 PORF (Perl Open Report Framework)

Was noch angedacht ist Mehr als eine Zeile für ein Daten Objekt: +-----------+------------+---------+-------+-------+ | <Vorname> | <Nachname> | <Alter> | <m/w> | <PLZ> | | <Stadt / Ort> +-------+-------+ | <Straße> | <Hausnummer> | +----------------------------------+---------------+ Ralf Peine Deutscher Perl Workshop 2014 PORF (Perl Open Report Framework)

Was noch angedacht ist (2) Verschiedene Daten Objekt Typen mit verschiedenen Spalten in derselben Tabelle +---------+-----------+------------+---------+-------+ | Person | <Vorname> | <Nachname> | <Alter> | <m/w> | +---------+-----------+------------+---------+-------+ | Firma | <Name> | <Typ> | +---------+----------------------------------+-------+ | Adresse | <Straße> | <Nr> | | <PLZ> | <Stadt / Ort> | +---------+------------------------------------------+ Ralf Peine Deutscher Perl Workshop 2014 PORF (Perl Open Report Framework)

Was noch angedacht ist (3) Zellen über mehrere Spalten / Zeilen Visitenkarten mit Foto +----------------------------------------------------+ | | <Vorname> | | Picture | <Nachname> | | | <Alter> | <m/w> | | /Foto | Phone | <Phone> | | | Email | <Email> | | | Web | <web> | | | Xing | <Xing> | | | Twitter | <Twitter> |+---- ------+---------+-----------------------+-------+ | Adresse | <Straße> | <Nr> | | <PLZ> | <Stadt / Ort> | +----------+-----------------------------------------+ Ralf Peine Deutscher Perl Workshop 2014 PORF (Perl Open Report Framework)

Was noch angedacht ist (4) Seitenbasierte Layouts mit Kopf- und Fuß-Zeilen Formulare Die komplette Seite wird durch Zellen, Kopfzeilen und Fußzeilen definiert. Ralf Peine Deutscher Perl Workshop 2014 PORF (Perl Open Report Framework)

Perl Open Report Framework Übersicht für Benutzer des Frameworks Danke ! Das war PORF Praxis Perl Open Report Framework Übersicht für Benutzer des Frameworks Ralf Peine Ralf.peine@jupiter-programs.de Twitter: @jpr65 Ralf Peine Deutscher Perl Workshop 2014 PORF (Perl Open Report Framework)