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

Board-rewrite: allgemeine Ideen (Seite 2)



<< |< 1 2 3 4 5 >| >> 45 Einträge, 5 Seiten
kabel
 2003-10-02 17:30
#39370 #39370
User since
2003-08-04
704 Artikel
BenutzerIn
[default_avatar]
CPAN:Class::DBI

btw ich arbeite mich gerade in die Everything Engine ein. von der flexibilität her sehe ich kein problem, ein board wie dieses nachzubauen. die engine implementiert wirklich abgefahrene konzepte ... 8^) als ausgangspunkt ist es aber mehr als geeignet, da die komplette infrastruktur frei haus geliefert wird (user-verwaltung, rechte und linke, cookies, formen, etc. pp. ...). es ist einen versuch wert.

*das hohe lied auf die engine sing*
-- stefan
Heromaster
 2003-08-24 23:34
#39371 #39371
User since
2003-08-05
220 Artikel
BenutzerIn
[default_avatar]
[quote=Strat,24.08.2003, 18:30]Nebenbei: die Datenstruktur des jetzigen Forums habe ich mal auf http://www.perl-community.de/temp/Datenbankmodell.htm gestellt. Wenn wir die verwenden wuerden, braeuchten wir die Daten nicht konvertieren, sondern koennten einen fliessenden Uebergang machen...[/quote]
Das Datenbanklayout sieht nicht wirklich durchdacht aus. Einerseits hast Du recht mit der Konvertierung der Daten, aber auf der anderen Seite: wozu den Zwang ein Board nach einem bestehenden DB-Layout zu coden? Ich würde an dieser Stelle erstmal ein neues, besseres Layout erstellen, das auch die Tatsache der Erweiterbarkeit berücksichtigt. ein Konverter von der jetzigen DB zu einer neuen ist dafür schnell geschrieben, meiner Meinung nach.
Derjenige, der zwei Hasen jagt, lässt einen zurück und verliert den anderen.
esskar
 2003-08-25 01:02
#39372 #39372
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
ich finde das statische nicht so gut...
klar, es ist schneller, aber man hat u.u. tausende html seiten rum liegen! deswegen hat man ja ne datenbank und eine anwendung, um dies nicht zu haben!
Strat
 2003-08-25 20:24
#39373 #39373
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
@esskar: ja, da kann man auch wunderbar mit C Zugriffe auf die Apache-API schreiben; aber ich befuerchte, da gibt es schon genuegend fuer uns. C koennte jedoch am Ende der Hauptentwicklung beim Tuning (auslagern des Codes einiger Funktionen/Module in C) mit ins Spiel kommen... aber ich denke, der Start sollte mal Pure Perl sein.

@jan: so ein caching ueber's Dateisystem koennte spaeter wirklich mal Sinn machen (muss mir mal den tux naeher anschauen); aber das wuerde ich zunaechst mal gerne zurueckstellen

Ich bin schon sehr stark fuer mod_perl, weil das einfach sehr schnell ist (so 5-50x), und man fast alle Moeglichkeiten des Apache verwenden kann. Die Umstellung von CGI ist eigentlich nicht so wild.

Hier habe ich mal skizziert, wie man das mit der Config und den Plugins machen koennte:
BoardConf.pm
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
package BoardConf;
use strict;
use warnings;

use vars qw(%Actions);

# Program logic is defined here
%Actions = (
    start => {
        subs => [ 
            &BasicFunctions::WriteStandardHtmlHeader, 
            &BasicFunctions::WriteLogonPage,
            &BasicFunctions::WriteStandardHtmlFooter,
        ],
    }, # start

    logonUser => {
        subs => [
            &BasicFunctions::WriteStandardHtmlHeader, 
            &BasicFunctions::ValidateUser,
            &BasicFunctions::WriteStandardHtmlFooter,
        ],
    }, # logonUser
    # ...

); # %Actions

# ------------------------------------------------------------
1; # modules have to return a true value

BasicFunctions.pm
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
package BasicFunctions;
use warnings;
use strict;

# ------------------------------------------------------------
sub WriteStandardHtmlHeader {
    my &#36r = shift;

} # WriteStandardHtmlHeader
# ------------------------------------------------------------
sub WriteStandardHtmlFooter {
    my &#36r = shift;

} # WriteStandardHtmlFooter
# ------------------------------------------------------------
sub WriteLogonPage {
    my &#36r = shift;

} # WriteLogonPage
# ------------------------------------------------------------
# ...

# ------------------------------------------------------------
1; # modules have to return a true value

Und das Hauptprogramm (den Haupthandler):
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
#! /usr/bin/perl
use warnings;
use strict;

sub handler {    
    my &#36r = Apache::Request->new(shift);
    &#36r->send_http_header('text/html');
    
    my &#36action = &#36r->param('action') || 'start';
    
    unless ( exists &#36BoardConf::Actions{&#36action)->{subs} ) {
        &#36action = 'start'; # error
    } # unless
    
    foreach my &#36sub (@{ &#36BoardConf::Actions{&#36action}->{subs} }) {

        unless (&#36sub->(&#36r)) {
            # error in sub
            last; # errorhandling

        } # unless
        else {
            # ok
        } # else
    } # foreach

} # handler

waere sowas flexibel genug?\n\n

<!--EDIT|Strat|1061829032-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
pq
 2003-08-26 01:46
#39374 #39374
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=Strat,24.08.2003, 16:23]Diese Liste wird staendig ergaenzt, damit man sich nicht alles aus zig postings zusammensuchen muss. Deshalb loesche ich auch Beitraege, die hier eingearbeitet sind.[/quote]
vielleicht könnte man dafür eine wiki-seite basteln,
ein forum ist doch eher für diskussionen ausgelegt als einen ständig
ändernden text.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Strat
 2003-08-24 18:23
#39375 #39375
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Diese Liste wird staendig ergaenzt, damit man sich nicht alles aus zig postings zusammensuchen muss. Deshalb loesche ich auch Beitraege, die hier eingearbeitet sind.

Habe mal folgende Ideen fuer das neue Board:

1. Authensisierung ueber einen PerlAccessHandler, idealerweise direkt an die Datenbank

2. der output der Ausgabeseiten (Threads, usw.) sollte nach aussen hin moeglichst statisch aussehen, damit auch Suchmaschinen damit klar kommen. also schlage ich vor, dafür mod_rewrite zu verwenden, das in die Stelle einhakt, wo URIs Verzeichnisse und eine Datei zuordnet (siehe auch CPAN:PerlTransHandler), und damit den Aufruf in einen Aufruf an das/die mod_perl-scripte mit den richtigen Parametern umwandeln.
3. Als naechstes schlage ich einen mod_perl-Handler (CPAN:Apache::Request) vor.

So von der Logikaufteilung her stelle ich mir folgendes Schema vor:

board.pl: Hauptprogramm, das eigentlich nur den Rest aufruft (abhaengig von FlowControl.pm und BoardConfig.pm)

BoardConfig.pm: Konfiguration des Boards (oder spaeter Interface dazu, z.b. zu einer oder mehreren ini-Datei(en) oder so)

FlowControl.pm: Steuerung fuer die Ablaufkontrolle

Unterverzeichnis: plugins/: Plugins fuer einen Aufgabenbereich, z.B. MessageParser.pm, MessagePreview.pm, ...

Unterverzeichis: lib/:  Gemeinsam genuetzte Funktionalitaet nach Thema geordnet, z.B. HighlightPerlCode.pm

Unterverzeichnis: db/: Interface zu der(den) Datenbank(en)

Unterverzeichnis: html/: HTML-Templates, nach Kategorien geordnet (esskar). Als Templatingsystem schlagen esskar und ich HTML::Template vor

Soweit mal meine schnell zusammengewuerfelten 0.02¤...\n\n

<!--EDIT|Strat|1061857206-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
esskar
 2003-08-26 07:45
#39376 #39376
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
und dann könnte man es auch noch so machen, dass man in ein plugin ordner einfach *.pm dateien reinwirft...
die main.pl läuft über dieses Verzeichnis und erweitert %Action beispielsweise so:

Plugin/messenger.pm

$Action{messenger} = { subs => [ \&Plugin::messenger::handler() ] };

oder so!
Strat
 2003-08-26 18:55
#39377 #39377
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
habe mal mit [quote] usw weitergecoded, und bin draufgekommen, dass dieser einfache scanner nur begrenzt was taugt... ich fuerchte, es wird doch ein rekursiver abstieg...
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
esskar
 2003-08-26 23:20
#39378 #39378
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
besten dank!
renee
 2003-08-27 09:41
#39379 #39379
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Bei beiden kommt ein Internal Server Error...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< |< 1 2 3 4 5 >| >> 45 Einträge, 5 Seiten



View all threads created 2003-08-25 00:08.