Thread erstes Skript für die Datenbank-Verbindung (61 answers)
Opened by Michael47 at 2016-02-03 19:48

Gast janus
 2016-02-04 19:52
#183734 #183734
Zum Verständnis: Beim Entwickeln wird Alles ausgegeben und zwar sofort. Ein Entwickler muss außerdem unterscheiden können zwischen Fehlern die ein Benutzer macht und Fehler aufgrund höherer Gewalt (z.B. Serverausfälle). Solche Unterschiede haben sich selbstverständlich auch im Code auszudrücken und selbstverständlich wird einem Normalbenutzer kein Backtrace gezeigt.

Wenn qualitätsgerecht entwickelt wurde, landen nur noch absolut unvorhersehbare Exceptions im error_log und Ja, ich habe Chronolog bereits vor 15 Jahren auch schon verwendet als ich meine Webserver noch selbst aufgesetzt habe (resp. Log-Customizing).

Vermutlich hast auch Du meinen diesbezüglich hier verlinkten Artikel nicht gelesen oder nicht verstanden. Vielleicht sollte ich noch mehr über Dies und Jenes schreiben, was mir an Unsitten in meinen letzten Berufsjahren begegnet ist. Zeit zum Schreiben hab ich jetzt wo ich Rentner bin, mehr als genug.

PS: Mit Perl ist sowieso Hopfen und Malz verloren, daran wird ein Perl6 schon gar nichts ändern. Schön war die Zeit mit Perl5,

hier ein Beispiel: http://handwerkzeugs.de/sheet.html ganze 60 Zeilen in der Frontend-Klasse. Das Modul Scaliger handelt Eingabefehler als Exceptions, wobei $@ direkt an den Benutzer im Browser ausgegeben wird.

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package ImgCalMonth;

use base main;
use warnings; 
use strict;
use Scaliger;

sub init{
    my $self = shift;
    $self->nocache;
    my $d = [localtime];
    $self->{STASH}{year}  = $d->[5] + 1900;
    $self->{STASH}{month} = $d->[4] + 1; 
}

sub control{
    my $self = shift;

    return if $ENV{REQUEST_METHOD} ne "POST";


    $self->{STASH}{year}  = $self->trim($self->param('year'));
    $self->{STASH}{month} = $self->trim($self->param('month'));
    my $sca = Scaliger->new( date => sprintf("1.%s.%s", $self->{STASH}{month}, $self->{STASH}{year}) ) or return $self->errmsg("$@");


    my $img = $self->param('image') || $self->imgmap_month( $self->{STASH}{month} );

    return $self->errmsg('Kein Bild ausgewählt!') if ! $img;

    # Prüfung jpeg, png
    return $self->errmsg('Grafikformat nicht unterstützt!') unless $img->{content_type} =~ /jpeg/i;
        #|| $img->{content_type} eq 'image/png'; 

    # liefert Pfad zur TTF-Datei
    my $ttf = $self->font( $self->param('ttf') );

    $self->{CONTENT} = $self->pdfmonth(
        month   => $self->{STASH}{month},
        year    => $self->{STASH}{year},
        imgtype => 'jpeg',
        imgfile => $img->{iohandle},
        string  => 1,
        ttf     => $ttf
    ) || die "$@\n";


    if($self->param('down')){
        $self->header(
            'Content-Length'      => length($self->{CONTENT}),
            'Content-Type'        => 'application/pdf',
            'Content-Disposition' => 'Attachment;filename=sheet.pdf' 
        );
    }
    else{
        $self->header(
            'Content-Length' => length($self->{CONTENT}),
            'Content-Type'   => 'application/pdf'
        );
    }
}
1;

Last edited: 2016-02-04 20:04:03 +0100 (CET)

View full thread erstes Skript für die Datenbank-Verbindung