Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]9490[/thread]

Neues Forum: Warum nicht mit Catalyst? :) (Seite 7)

Leser: 4


<< |< 1 ... 4 5 6 7 >| >> 70 Einträge, 7 Seiten
Strat
 2006-05-17 01:49
#90238 #90238
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
als naechstes die Datenbank: Ich habs einfach mal mit der vom pboard versucht, die ich zum entwickeln verwendet habe.
Code: (dl )
1
2
3
perl script\mypboard_create.pl model PBoard DBIC::SchemaLoader dbi:mysql:dbname=pboard pboard pboard

# Verstehe nicht, wie ich an die Daten komme; ich komme lediglich an die Tabellennamen => Abbruch

esskar schrieb mir, er verwende Catalyst::Model::DBIC; ok, zurueck und mal damit versucht

Version 3, wieder komplett neu:
Code: (dl )
1
2
3
4
5
catalyst MyPBoard
cd MyPBoard

perl script\MyPBoard_create.pl view HTC HTML::Template::Compiled
perl script\mypboard_create.pl controller User


./root/static/myImages + styles + js kopiert
templates nach ./templates/ kopiert

lib\MyPBoard\view\HTC.pm angepasst wie oben, ebenso mypboard.yml
ebenso in User.pm die beiden subs von oben reinkopiert.
Code: (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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
sub register : Path('/user/register') {
my ($self, $c) = @_;

my (%params) = &_parseParametersIntoHash($c);

# --- if no params, assume it's executed for the first time
unless (scalar keys %params) {
my %data = ( template => 'user/register.tmpl',
title => 'Registrierung',
message => '',
username => '',
emailaddress => '',
);
while (my ($k, $v) = each %data) { $c->stash->{$k} = $v }

return;
} # unless

# --- else if mandatory parameters are submitted
my $message = "";
if( $params{username} =~ /^\s*$/ ) {
$message .= "<br />Bitte das Feld Benutzername ausf&uuml;llen";
} # if
if( $params{emailaddress} =~ /^\s*$/ ) {
$message .= "<br />Bitte das Feld E-Mai-Adresse ausf&uuml;llen";
} # if
if( $params{password} =~ /^\s*$/ or $params{passwordcheck} =~ /^\s*$/) {
$message .= "<br />Bitte beide Passwort-Felder ausf&uuml;llen";
} # if
unless( $params{agreeagb} ) {
$message .= "<br />Bitte die Bestimmungen akzeptieren";
} # if

if ($message) { # if a parameter is missing, prompt for it
my %data = ( template => 'user/register.tmpl',
title => 'Registrierung',
message => $message,
%params,
);
while (my ($k, $v) = each %data) { $c->stash->{$k} = $v }
return;
} # if

# shortcut
my $registerConf = $c->config->{register};

# --- check if params are valid
if( length $params{username} < $registerConf->{minUserNameLength} ) {
$message .= "<br />Der Benutzername mu&szlig; mindestens "
. $registerConf->{minUserNameLength} . " Zeichen lang sein";
} # if
elsif( length $params{username} > $registerConf->{maxUserNameLength} ) {
$message .= "<br />Der Benutzername darf h&ouml;chstens "
. $registerConf->{maxUserNameLength} . " Zeichen lang sein";
} # if

if( $params{password} ne $params{passwordcheck} ) {
$message .= "<br />die Passw&ouml;rter sind nicht identisch";
} # if
elsif( length $params{password} < $registerConf->{minPasswordLength} ) {
$message .= "<br />Das Passwort mu&szlig; mindestens "
. $registerConf->{minPasswordLength} . " Zeichen lang sein";
} # if
elsif( length $params{password} > $registerConf->{maxPasswordLength} ) {
$message .= "<br />Das Passwort darf h&ouml;chstens "
. $registerConf->{maxPasswordLength} . " Zeichen lang sein";
} # if

unless( Mail::RFC822::Address::valid( $params{emailaddress} ) ) {
$message .= "<br />E-Mail '$params{emailaddress}' ung&uuml;ltig";
} # unless

# check db if username is free
# send mail

if ($message) { # if a parameter is invalid, prompt for it
my %data = ( template => 'user/register.tmpl',
title => 'Registrierung',
message => $message,
%params,
);
while (my ($k, $v) = each %data) { $c->stash->{$k} = $v }

return;
} # if

# else redirect to register_finished
my %data = ( template => 'user/register_finished.tmpl',
title => 'Registrierung',
message => '',
%params,
);
while (my ($k, $v) = each %data) { $c->stash->{$k} = $v }
} # register
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Strat
 2006-05-17 01:55
#90239 #90239
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
ok, funzt, also weiter zur datenbankanbindung
Code: (dl )
script\mypboard_create.pl model PBDB DBIC dbi:mysql:dbname=pboard user secret

so wie in der doku funzts nicht
Code: (dl )
1
2
3
= $c->model('PBDB')->table('PbUser')->search( 'order_by' => 'id ASC');

Caught exception in MyPBoard::Controller::User->list "Can't call method "search" on an undefined value at E:/web/PBoard_Catalyst/MyPBoard/script/../lib/MyPBoard/Controller/User.pm line 14."

dann ein wenig rumgespielt
Code: (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
sub list : Path('/user/list') {
my ($self, $c) = @_;

my %data = ( template => 'user/list.tmpl',
title => 'Benutzerliste',

navigationfile => 'sub_naviagtion_user.tmpl',
username => 'XXXXXX',
show_images => 1,
);
while (my ($k, $v) = each %data) { $c->stash->{$k} = $v }


# $c->stash->{user_list} =
# MyPBoard::SchemaLoader::PBoard::PbUser
# # $c->model('PBoard')->table('PbUser')
# ->search( 'order_by' => 'id ASC');

die Dumper (\%MyPBoard::Model::PBoard::);

die Dumper $c->model('PBoard');

# my @x = MyPBoard::SchemaLoader::PBoard->loader->tables;
# die "Tables: @x";
# die Dumper($c->model('PBoard')->schema);

# my $pbUser = $c->model('PBoard')->class('PbUser');
# die Dumper($pbUser);

# my $pbUser = $c->model('PBoard')->resultset('PbUser');

# die Dumper ($pbUser->search( { nick => 'Strat' } ));


# die Dumper( $c->model('PBoard')->resultset('PbUser')->search('id' => 1) );

} # list

danach mal hier meine Frage gestellt: Catalyst + Model::DBIC - Verzweiflung\n\n

<!--EDIT|Strat|1147816780-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
esskar
 2006-05-17 01:55
#90240 #90240
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=Strat,16.05.2006, 23:43]in lib\MyPBoard\View\HTC.pm die Sub new gecoded:
Code: (dl )
1
2
3
4
sub new {
   my ($self) = shift;
   return $self->SUPER::new(@_);
} # new
[/quote]
warum?
esskar
 2006-05-17 01:59
#90241 #90241
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=Strat,16.05.2006, 23:55]ok, funzt, also weiter zur datenbankanbindung
Code: (dl )
script\mypboard_create.pl model PBDB DBIC dbi:mysql:dbname=pboard user secret

so wie in der doku funzts nicht
Code: (dl )
1
2
3
= $c->model('PBDB')->table('PbUser')->search( 'order_by' => 'id ASC');

Caught exception in MyPBoard::Controller::User->list "Can't call method "search" on an undefined value at E:/web/PBoard_Catalyst/MyPBoard/script/../lib/MyPBoard/Controller/User.pm line 14."
[/quote]
hatte dir doch geschrieben, dass du ein Schema brauchst. :)
besser mit
Code: (dl )
script/myboard_create.pl model PBDB DBIC::Schema PBDB::SchemaClass dbi:mysql:dbname=pboard user secret
Strat
 2006-05-17 02:06
#90242 #90242
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
hab's irgendwo in der doku gesehen; ich find's nicht mehr. Aber stimmt, muesste eigentlich keinen Unterschied machen
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Strat
 2006-05-17 02:07
#90243 #90243
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
@esskar: ja, hast du; ich konnte nur seitdem leider nicht mehr weitermachen, weil ich mal mit DBIx weiterkommen wollte; wenn die basics fehlen, wird#s halt schwierig.\n\n

<!--EDIT|Strat|1147817358-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Strat
 2006-05-17 02:24
#90244 #90244
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
mit DBIx bekam ich uebrigens einen connect und selects hin... hmmm, ich finde die codes gerade nicht; kann auch sein, dass ich die auf dem notebook habe.

Naja, ich gehe jetzt ins bettchne
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
MartinR
 2006-10-11 10:03
#90245 #90245
User since
2004-06-17
305 Artikel
BenutzerIn
[default_avatar]
[quote=Strat,23.04.2006, 15:29][quote=Ronnie,22.04.2006, 18:01]Was ist den der Unterschied? Also, was speziell ist messageCompiled?[/quote]
messageCompiled enthaelt den HTML-Quellcode, der jederzeit aus messageRaw generiert werden kann[/quote]
Hi,

ist es also günstiger den auszugebenden HTML-Code nur einmal zu erzeugen und in der DB abzulegen - was ja eine wesentlich größere DB zur Folge hat - als ihn bei jedem Aufruf zu parsen?

Gibt es eine Faustformel ab wann der eine bzw. der andere Weg sinnvoll ist (Zahl der Aufrufe, DB-Größe ...)?
Strat
 2006-10-11 11:34
#90246 #90246
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
@MartinR: manche Foren speichern nur das html - mit vielen html-kommentaren versehen - in der DB; d.h. beim editieren/quoten muss alles wieder zurueckgewandelt werden, bei der volltextsuche muss eine menge uebersprungen werden usw. das spricht fuer eine speicherung im eingabeformat (messageRaw). Und man kann das layout einfach aendern, indem man den converter nach html anpasst (wenn halt die css-mittel nicht ausreiche sollten)

Andererseits wird eine nachricht meist haeufiger angezeigt als sie editiert/gequoted/... usw. wird, und das spricht fuer eine speicherung im ausgabeformat.

Deshalb habe ich mich entschlossen, auch das html als caching in der DB zu speichern; falls es mal platzprobleme geben sollte, kann man ja die vorschau aller nachrichten, die aelter als z.B. 1 Monat sind, loeschen; sie wird bei bedarf wieder neu erzeugt.

Eine Faustformel kann ich dir da leider nicht liefern.
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
MartinR
 2006-10-11 12:59
#90247 #90247
User since
2004-06-17
305 Artikel
BenutzerIn
[default_avatar]
[quote=Strat,11.10.2006, 09:34]... falls es mal platzprobleme geben sollte, kann man ja die vorschau aller nachrichten, die aelter als z.B. 1 Monat sind, loeschen; sie wird bei bedarf wieder neu erzeugt. ...[/quote]
Hallo Strat,

danke für die Antwort.

Ich dachte dabei aber weniger an "Platzprobleme" als daran, dass bei jedem DB-Zugriff ja dann dieses doch sehr große DB-File geöffnet werden muss. Evtl. könnte man die aufbereiteten HTML-Daten in eine weitere Tabelle auslagern?

Du hast schon recht, dass wesentlich öffter gelesen als geschrieben wird. Aber das betrifft doch dann immer nur diesen einen Datensatz bzw. die Datensätze des jeweiligen Threads.

Ich muss aber gestehen, dass ich mich nicht so gut damit auskenne wie DBn intern mit Speicher und Ressourcen umgehen ...
<< |< 1 ... 4 5 6 7 >| >> 70 Einträge, 7 Seiten



View all threads created 2006-04-20 12:03.