Thread Serialize Algorithmus (18 answers)
Opened by rosti at 2014-02-07 13:04

rosti
 2014-02-08 15:44
#173466 #173466
User since
2011-03-19
3472 Artikel
BenutzerIn
[Homepage]
user image
2014-02-08T13:05:46 pq
2014-02-07T12:31:02 rosti
Edit: Also mal ehrlich, ein Struct nach dem EAV-Pattern ist zum Serialisieren besser geeignet, selbst dann, wenn Datentypen mitgeschleift werden sollen UND eine Unterscheidung zwischen Leerstring und undef; dafür würde ein Byte vollauf genügen.

ich bin sicher, die leute von booking freuen sich, wenn sie mit hilfe eines experten die ohnehin schon guten werte von Sereal noch weiter verbessern können.
nimm kontakt auf, schreib einen patch!


Du und Gwen, Ihr beide versteht überhaupt nicht, worum es eigentlich geht. Vielleicht auch mein Versäumnis, also nochmal:

Es geht NICHT darum, ein Sereal oder Storable verbessern zu wollen.
Mir gehts lediglich darum, einen Algorithmus zu finden, der serverseitig mit Perl implementiert und clientseitig im DOM die Daten random-access verfügbar macht.

Und so wie es aussieht, ist Storable oder Sereal für so eine, an sich einfache Sache, sehr wahrscheinlich überqualifiziert. So werde ich vorerst weder den Sereal noch den Storable-Algorithmus dafür einsetzen, für eine programmiertechnische Lösung, welche das EAV-Pattern vollkommen beschreibt.


PS, Buchtipp: Niklaus Wirth, Algorithmen und Datenstrukturen (mit Modula-2)
Insbesondere das Kapitel über Sequenzen. Das Buch ist von 1986

EDIT: Demo fast fertig http://rolfrost.de/video.html
Clientseitig/JavaScript wird noch verbessert ;)
Und auf die Seite kommt noch bischen Text...


Serialize nach EAV Pattern (Entity Attribute Value)
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
sub control{
    my $self = shift;
    my %data = (
        stahl => {
            title => 'Wetzstahl',
            descr => 'Messer Wetzen mit dem Stahl',
            type => qq(video/webm),
        },
        ikea => {
            title => 'Keramikstab',
            descr => 'Messer auf dem Keramikstab schleifen',
            type => qq(video/webm),
        },
    );
    

    my $fh = IO::File->new;
    $fh->open("$self->{FILEDIR}/stahl.webm", O_BINARY|O_RDONLY) or die $!;
    read($fh, $data{stahl}{body}, -s $fh);
    $fh->close;
    
    $fh->open("$self->{FILEDIR}/ikea.webm", O_BINARY|O_RDONLY) or die $!;
    read($fh, $data{ikea}{body}, -s $fh);
    $fh->close;

    # Serialize
    $self->{CONTENT} = '';
    
    foreach my $ent( keys %data){
        foreach my $att( keys %{$data{$ent}}){
            my $val = $data{$ent}{$att};
            $self->{CONTENT} .= pack("NNN", length($ent), length($att), length($val)).$ent.$att.$val;
        }
    }
    
    
    $self->header("Content-Type" => 'application/octet-stream');
}

Last edited: 2014-02-08 20:01:42 +0100 (CET)

View full thread Serialize Algorithmus