Perl vergessen und unterschätzt



Ähnliche Dokumente
Tanz! Stefan Hornburg (Racke) 13. Deutscher Perl-Workshop, Frankfurt, 21. Oktober 2011

Mojolicious. Ich zeige dir jetzt, wie du mit Mojolicious eine Vorlage. Das Mojolicious-Gerüst

How To: Wie entwickle ich mit SharpDevelop Anwendungen für die PocketPC-Platform

doubleslash Net-Business GmbH

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

Installation des CMS-Systems Contao auf einem Windows-Rechner mit XAMPP

DIE ALCHEMISTEN WAREN GETRIEBEN VON DEM GEDANKEN, AUS STOFFLICHEM GOLD ZU GEWINNEN UND SIND DAMIT GESCHEITERT. TROI IST DER ALCHEMIST DER ZUKUNFT,

Algorithmen und Programmieren II Einführung in Python

Oracle APEX Installer

Installationsanleitung für. SugarCRM Open Source. Windows Einzelplatz

Bildverarbeitung und Algorithmen. Einführung in ImageJ

Redmine, das Projekt Management Werkzeug

Das Open Source CMS. Gregor Walter.

GUI-Applikationen schnell und einfach mit Wx::XRC

AJAX Implementierung mit Joomla!

5. Programmierschnittstellen für XML

1.3 Erster Start des Aufmaß-Moduls und Anlegen der Datenbank

Django - ein Python Web-Framework

Softwareupdate-Anleitung // AC Porty L Netzteileinschub

Konfiguration Zentyal 3.3 Inhaltsverzeichnis

5. Programmierschnittstellen für XML

FL1 Hosting FAQ. FL1 Hosting FAQ. V1.0 (ersetzt alle früheren Versionen) Gültig ab: 18. Oktober Telecom Liechtenstein AG

Herzlich Willkommen! eine praxisnahe Übersicht. Mit Java ins Web - mb@bebox.franken.de (c) Michael Behrendt -

Joomla 1.5. Einführung in die Installation und Benützung

Lokale Installation von DotNetNuke 4 ohne IIS

KEIL software. Inhaltsverzeichnis UPDATE. 1. Wichtige Informationen 1.1. Welche Änderungen gibt es?

Installation mit Lizenz-Server verbinden

PHP Aufbaukurs. Tag 3. PHP5 & Klassen

KONFIGURATIONSMANAGEMENT MIT PUPPET TIM SCHMELING. 4b:65:72:73:74:69:6e:2c:20:69:63:68:20:6c:69:65:62:65:20:64:69:63:68:21

CarMedia. Bedienungsanleitung Instruction manual. AC-Services Albert-Schweitzer-Str Hockenheim

Legen Sie nun dieses Verzeichnis mit dem Namen "joomla" hier an: C:xampphtdocs.

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

EIDAMO Webshop-Lösung - White Paper

Whitepaper. Produkt: List & Label 16. List & Label 16 unter Linux/Wine. combit GmbH Untere Laube Konstanz

C++ im Web mit Tntnet

Renée Bäcker. Perl $foo Magazin

Modern Perl. Florian Ragwitz Maik Hentsche

Migration Howto. Inhaltsverzeichnis

Planung für Organisation und Technik

Webseiten werden mobil Planung geht vor

This manual cannot be redistributed without permission from joomla-monster.com or vorlagenstudio.de

22. Juni 2009 Angelo Gargiulo, Fabian Gander. NConf - Enterprise Nagios configurator

Installation von NetBeans inkl. Glassfish Anwendungs-Server

Online-Publishing mit HTML und CSS für Einsteigerinnen

Installation des GeoShop Redirector für Apache (Stand ) ================================================================

Modellgestütztes Consulting für die Windenergie Ein neuer Ansatz für die Entwicklung

Powershell DSC Oliver Ryf

WordPress lokal mit Xaamp installieren

Benutzerhandbuch. Bürgel ConsumerCheck für OXID eshop

4D Server v12 64-bit Version BETA VERSION


LuGA Linux Wochenende im Metalab

ZENTRALER INFORMATIKDIENST DER JOHANNES KEPLER UNIVERSITÄT LINZ Abteilung Kundendienste und Dezentrale Systeme. PPP für Windows 3.

Wir benötigen: PHP >=5.x mit den Erweiterungen curl, dom, gd, hash, iconv, mycrypt, pcre, pdo, pdo_mysql und simplexml 1/2h Zeit

Softwareinstallation unter Linux

Einführung in wxwidgets & wxdev-c++

EPO Consulting GmbH. Ihr Partner für HTML5 und SAP UI5 Apps. Stand 2015/04. EPO Consulting GmbH - 1 -

CONTROL-M. CONTROL-M Tipps&Tricks. Martin Dienstl Principal Software Consultant

Installation und Start der Software AQ2sp Installation and Start of the software AQ2sp

Anleitung zum Prüfen von WebDAV

Die Installation des GeoShop Redirector für IIS (Internet Information Server, Version 4.0, 5.0 und 6.0) umfasst folgende Teilschritte:

Mit dem Podcasten starten: So konfigurierst Du das Wordpress-Plugin Podlove Publisher

TYPO3 Installation und Konfiguration

Thomas Wagner 2009 (im Rahmen der TA) Installation von MySQL 5.0 und Tomcat 5.5

Kapitel 6,»Objektorientierte Programmierung«, widmet sich der objektorientierten Programmierung mit Python.

Extending tl_member. Andreas Fieger

OSGi. The Next Generation Java Service Platform. SOA - The Java Way or My classpath is killing me. Michael Greifeneder

Adminer: Installationsanleitung

Grundlagen von Python

das neue Webserverkonzept

Software Engineering II

Virtuelle Fachbibliothek Ethnologie:

Liesmich zum Kurs: Programmieren in der Bioinformatik mit Perl Konfigurierung der Programmierumgebung

Linux Info Tag Perl - Eine Free-Software-Kultur. -- Intro -- Steffen Schwigon <schwigon@webit.de> Dresden Perl Mongers

Python SVN-Revision 12

Systemvoraussetzungen CustomX. Customer Relationship Management

miditech 4merge 4-fach MIDI Merger mit :

Web-basierte Benutzerschnittstellen für Embedded Systeme: Eine Benutzerschnittstelle drei Sichtweisen

WinCVS Version 1.3. Voraussetzung. Frank Grimm Mario Rasser

Java Einführung Abstrakte Klassen und Interfaces

Generating Fingerprints of Network Servers and their Use in Honeypots. Thomas Apel

C ++ in der Computerlinguistik

Installation und Inbetriebnahme von Microsoft Visual C Express

Multimedia im Netz Wintersemester 2011/12

Tutorial. In diesem Tutorial möchte ich die Möglichkeiten einer mehrspracheigen Web-Site erläutern.

System Monitoring in Windows-Netzwerken mit Open Source Tools

Wordpress: Blogbeiträge richtig löschen, archivieren und weiterleiten

Geofind Handbuch für Daylite 4

DevOps bei den ID Build-Automatisierung statt Silo-Betrieb

TIMERATE AG Tel Falkenstrasse Zürich Joomla Templates Kursunterlagen

Debugging in Magento

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

C++ mit Eclipse & GCC unter Windows

Open Source. Hendrik Ebbers 2015

Sage 200 BI Häufige Fehler & Lösungen. Version

AbaWeb Treuhand. Hüsser Gmür + Partner AG 30. Oktober 2008

Nagios Erweiterungen Der Rest. Nagios / Icinga. OpenSource Network-Monitoring im großen Stil. Manuel Landesfeind

Entwicklung in Open-Source- Projekten am Beispiel MediaWiki

Anleitung zur Updateinstallation von ElsaWin 4.00

Docker. Lass mal containern Julian mino GPN

Transkript:

Perl vergessen und unterschätzt

Sebastian Willing CPAN: sewi Blog: www.pal-blog.de print Dumper(\%speaker); Jahrgang 1979 Erste Programmierversuche ~1988 Perl seit 1997 Padre, the Perl IDE Seit 2011 bei (und Vorgängern) Perl, MovableType, ecommerce, Webdesign, u.v.m. www.spark5.de sebastian.willing@spark5.de Privat: 2 Kinder, Buchautor, Hobbypilot

Perl?

(außer Niemand nutzt heute noch Perl! Aber wen interessiert das? )

Viel interessanter ist... Die meisten Unternehmen nutzen Perl! Schnittstellen Serveradministration Datenkonvertierung Kleine Tools u.v.m. (Aber kaum jemand weiß davon)

Geschichte Perl history in brief, by Larry Wall:

Modernes Perl! stable since 1994 PSGI/Plack

Perl 2014 Stabil = quasi bugfrei Plattformunabhängig Einfach erlernbar OOP (freiwillig) RegEx: Mehr als PCRE TIMTOWTDI There is more than one way to do it Abwärtskompatibel

Perl 2014 CPAN Dancer Moose Data::ObjectDriver Template::Toolkit PSGI/Plack Test::More

http://search.cpan.org 30.417 Module 138.497 Dateien 11.743 Contributors/Uploaders Standartisierte Installation Systemweit oder im Userverzeichnis Automatische Abhängigkeiten CPAN-Testers

Dancer Web-Framework Einfach zu lernen flexibel & mächtig Plugins (z.b. Sessioning, Datenbanken, Auth, Ajax, REST, Logging, Gearman, etc.) Standalone, Apache/NGINX, FastCGI, PSGI/Plack, usw. Konzentration auf das Wesentliche

Dancer: Neue App $ dancer a MyApp The latest stable Dancer release is 1.3130, you are currently using 1.312. Templates Please check http://search.cpan.org/dist/dancer/ for updates. + MyApp/views/index.tt + MyApp/views/layouts Standalone-Webserver + MyApp/views/layouts/main.tt + MyApp/Makefile.PL + MyApp/bin/app.pl Environments + MyApp/environments/production.yml + MyApp/environments/development.yml Projekt-Config + MyApp/config.yml + MyApp/public + MyApp/public/images Verzeichnis für statische Dateien + MyApp/public/css + MyApp/public/css/style.css Unit-Tests + MyApp/public/javascripts + MyApp/t/001_base.t + MyApp/lib/MyApp.pm App-Modul

package MyApp; use strict; use warnings; Dancer: Beispiel use Dancer; use MyApp::User; Alle /admin URIs nur für Admins hook 'before' => sub { forward '/' if request >path_info =~ /^\/admin\// /user_info/12345 and!session('is_admin'); }; get '/user_info/:userid' => sub { my $user = MyApp::User >lookup(param('userid')) or forward '/user_not_found'; User via ORM laden }; template 'user_info.tt', { user => $user }; Template & Parameter

package MyApp; use strict; use warnings; use Dancer; use MyApp::User; Dancer: Beispiel hook 'before' => sub { forward '/' if request >path_info =~ /^\/admin\// and!session('is_admin'); }; get '/user_info/:userid' => sub { template 'user_info.tt', { user => MyApp::User >lookup(param('userid')) or forward '/user_not_found' }; }; Kompakter

Moose Post-modern object system for Perl Erweiterungen für Perl's natives OOP Perl Moose use MooseX::Declare; use Method::Signatures::Modifiers; class MyClass { has 'version' => { is => 'ro', isa => 'Str', Default => '1.0', }; method twice (Int $bar) { } } return 2 * $bar; package MyClass; our $VERSION = '1.0'; oder: sub version { return '1.0'; } sub twice { my $self = shift; my $bar = shift; return 2 * $bar; }

Data::ObjectDriver ORM für relationale Datenbanken Caching-Support (z.b. Memcache) Partitionierung Unterstützung für mehrere Datenbanken Tabellen-Spalten werden zu Methoden Optional zusätzliche Methoden Alternativen: z.b. DBIx::Class, Class::DBI, RoseDB

Template::Toolkit Beliebte Perl Template-Engine Vielfältig konfigurierbar Einfach Erweiterbar OOP-Support Nicht auf HTML beschränkt Templates werden zu Perl-Code kompiliert Template-Caching Standalone-Tool ttree

Template::Toolkit - Alternativen PHP ( Perl Hypertext Preprocessor ) MovableType, Mojolicious, Catalyst u.a. unterstützen PHP als Template-Engine CPAN-Module PHP und PHP::eval führen PHP- Source in Perl aus Text::Clevery Smarty-Implementation in Perl (CPAN) 4907 Template-Module auf CPAN

PSGI/Plack Abstraktionslayer für Web-Apps Einheitliche Schnittstelle zwischen Webserver und App Inspiriert von Python's WSGI und Ruby's Rack Module/Plugins für Apache & Nginx Standalone-Webserver (z.b. Starman, Twiggy) Unterstützt von (nahezu) allen Perl-Frameworks >380 Middleware-Plugins (Logging, Auth, Profiling, Stats, Debugging, Filter, Compress, etc.)

Test::More Wer braucht schon Tests, wir sind doch alle perfekt! Test::More Einfache Unittests in Perl Test::WWW::Mechanize Web-Tests Überraschung: ~5000 Test-Module auf CPAN

use Test::More tests => 25; Test::More use_ok('myapp::somemodule'); # Compile test Modul compilieren und laden als Test ok(my $obj = MyApp::SomeModule >new, 'Create object'); isa_ok($obj, 'MyApp::SomeModule'); Objekt instanzieren note( Object is $obj ); Debug Meldung 1 == 1? is($obj >one, 1, 'Check one'); 1!= 0? isnt($obj >one, 0, 'Check not one'); cmp_ok($obj >two, '>', 1, 'Check two'); 2 < 1? like($obj >answer, qr/^\d\d$/, 'Check answer to all questions'); TODO: { RegEx-Check local $TODO = will be fixed sometimes or never ; is($obj >pi, 3.1415, 'Pi'); # Currently returns 42 }; Test schlägt fehl = TODO

Ausprobieren! Windows StrawberryPerl oder ActivePerl http://strawberryperl.com/ Kostenlos Inkl. IDE & CPAN-Client Linux (inkl. Mac OS) Vorinstalliert (meist im Distributions-Core) IDEs: Padre http://padre.perlide.org (kostenlos) EPIC (Eclipse-Plugin) u.v.a. http://learn.perl.org/

Fragen?

Vielen Dank fürs zuhören http://www.pal-blog.de sebastian.willing@spark5.de http://www.spark5.de https://twitter.com/pal_blog https://www.facebook.com/sebastian.willing https://plus.google.com/u/0/+sebastianwilling