Bio: Schier unglaublicher Fehler in der Archiv-Suche ;-)

Sup!

Das ist ein Skandal! In meinem Mozilla sieht diese Ausgabe des Such-Skriptes total durchstrichen und blau aus:

http://selfsuche.teamone.de/cgi-bin/such.pl?suchausdruck=Artur+P&lang=on&feld=titel&index_4=on&index_5=on&index_6=on&index_7=on&hits=100

Der IE repariert den Quatsch natürlich und gibt fälschlicherweise alles richtig aus.

Auf jeden Fall ist da ein <s zuviel im QuellCode, das ist ganz klar ein Bug und möglicherweise ein Hinweis für schrecklichste Fehlfunktionen im Such- oder Archivskript.... (O Gott!!!)

Gruesse,

Bio

  1. Hi,

    http://selfsuche.teamone.de/cgi-bin/such.pl?suchausdruck=Artur+P&lang=on&feld=titel&index_4=on&index_5=on&index_6=on&index_7=on&hits=100

    Der IE repariert den Quatsch natürlich und gibt fälschlicherweise alles richtig aus.

    It's not a bug! It's a feauture, fool!

    Ciao,
      Wolfgang

  2. n'abend Bio,

    (O Gott!!!)

    hättest du nicht korrekt (Oh Gott !!!) schreiben müssen ?

    Gruesse,

    von mir auch ;-)

    Christoph S.

    1. n'abend Bio,

      Moin!

      (O Gott!!!)

      hättest du nicht korrekt (Oh Gott !!!) schreiben müssen ?

      Es heißt in dem bekannten Lied zur vergangenen Feierlichkeit auch "O du fröhliche!", und das angeblich (ich weiß leider nicht, warum) mit voller Absicht.

      - Sven Rautenberg

      1. huhu Sven ;-)

        Es heißt in dem bekannten Lied zur vergangenen Feierlichkeit auch "O du fröhliche!", und das angeblich (ich weiß leider nicht, warum) mit voller Absicht.

        Also, ich habe eben in meinem EKG  (Evangelisches Kirchengesangbuch) nachgeschlagen. Da steht in einer wundervollen Gothic-Schrift "Oh, du fröhliche" drin.

        Aber ich bin gegen gelegentliche Mißverständnisse auch nicht gewappnet. Es gibt ein weiteres (Advents-)Lied im EKG, in dem der Refrain lautet: "...derhalben jauchzt, mit Freuden singt ..."  -  mein Vater, der Pfarrer war, legte großen Wert darauf, daß ich diese Lieder bereits singen konnte, als ich noch gar nicht richtig sprechen gelernt hatte. Und so sang ich denn längere Zeit "der halbe Schnauß mit Freuden singt ..."  -  das erschien mir irgendwie verständlicher.

        Wie einfach hätten wirs doch, wenn man sich HTML- und sonstigen Code ins jeweils passende Verständnis übersetzen könnte!

        Grüße aus Berlin

        Christoph S.

  3. Holladiwaldfee

    [...]suchausdruck=Artur+P[...]

    ^^^^^^^^^^^^^^^^^^^^
    Hehe :-) Auch auf der Suche nach einem meiner Lieblingsthreads gewesen ?! Ach ja, der gute alte Arthur P. ... wie's dem wohl geht ? (Ich wette er liest grade im Stillen mit und ärgert sich über mich, hehe ;-)

    Ciao,

    Harry

    1. Hallodri,

      Ach ja, der gute alte Arthur P. ... wie's dem wohl geht ? (Ich wette er liest grade im Stillen mit und ärgert sich über mich, hehe ;-)

      Neeee, der hat wichtigere Dinge zu tun: Der analysiert gerade die Aktien von Kimvestor und ärgert sich dass er da nicht schon früher ausgestiegen ist...

      Auf Wiederposten,
      Der freundliche Poster vom Heise-Forum

  4. Hallo Bio

    Auf jeden Fall ist da ein <s zuviel im QuellCode, das ist ganz klar ein Bug und möglicherweise ein Hinweis für schrecklichste Fehlfunktionen im Such- oder Archivskript.... (O Gott!!!)

    Das Problem entsteht durch die Highlight-Funktion. Da im Suchausdruck ein einzelnes "P" vorkommt, versucht das Script, alle p's zu highlighten. Dabei scheint es sich zu verschlucken, da das Wort "span" im span-Tag, das fuer das Highlighting sorgt, selber ein p enthaelt. Jedenfalls ist das eine denkbare Erklaerung dafuer, wie folgender fehlerhafter Quelltext generiert wird (der vom Mozilla als s-Tag interpretiert wird und fuer die fehlerhafte Anzeige sorgt):

    <s<span style="font-weight:bold; font-size:9pt; color:#0000CC">P</span>

    Ich trau mich aber nicht, an dem Script rumzuschrauben - aber ich bin sicher, Michael Schroepl wird das hier lesen ... ;-)

    viele Gruesse
      Stefan Muenz

    1. Hi Stefan,

      Auf jeden Fall ist da ein <s zuviel im QuellCode, das ist ganz klar
      ein Bug und möglicherweise ein Hinweis für schrecklichste
      Fehlfunktionen im Such- oder Archivskript.... (O Gott!!!)

      seit wann führt Bio hier im Forum Selbstgespräche? ;-)

      Das Problem entsteht durch die Highlight-Funktion.
      Da im Suchausdruck ein einzelnes "P" vorkommt, versucht das Script,
      alle p's zu highlighten. Dabei scheint es sich zu verschlucken,
      da das Wort "span" im span-Tag, das fuer das Highlighting sorgt,
      selber ein p enthaelt. Jedenfalls ist das eine denkbare Erklaerung
      dafuer, wie folgender fehlerhafter Quelltext generiert wird (der
      vom Mozilla als s-Tag interpretiert wird und fuer die fehlerhafte
      Anzeige sorgt):

      Hervorragende Analyse.

      Ich trau mich aber nicht, an dem Script rumzuschrauben

      Ich fürchte, das zu reparieren ist auch keine Sache von zwei Minuten.

      Die Funktion "one_hit", welche einen Treffer für die Anzeige vorbereitet,
      macht an dieser Stelle etwas relativ Schlichtes (und nicht mal übertrieben
      Performantes):

      # Lange Form der Trefferanzeige?
          my $lang = '';
          if ($FORM {'lang'} eq 'on')
             {
               # -------------------------------------------------
               # Anfang des Treffer-Inhalts holen
                 my $inhalt = $Texte [$i];
               # -------------------------------------------------
               # Jeden MUST-Term in diesem Text hervorheben
                 for (my $i = 0; $i <= $#Must_Original; $i++)
                         {
                           # -------------------------------------
                           # Term in die Highlight-Struktur einsetzen
                             my %strings = ('_COLOR' => farbe ($i),
                                            '_TERM'  => $Must_Original [$i]);
                             my $highlight = style::value ('HIT_HIGHLIGHT', %strings);
                           # -------------------------------------
                           # Term durch Highlight-Struktur ersetzen
                             $inhalt =~ s/$Must[$i]/$highlight/g;
                           # -------------------------------------
                         }
               # -------------------------------------------------
               # Anfang des Treffer-Inhalts in Schablone einsetzen
                 my %strings = ('_HIT_LONG' => $inhalt);
                 $lang = style::value ('HIT_PATTERN_LONG', %strings);
               # -------------------------------------------------
             }

      Und in dem Fall, den Bio durch den Suchbegriff "P" provoziert hat,
      ist die iterative "Aufbereitung" von $inhalt durch die for-Schleife
      um eine Größenordnung zu schlicht.

      Um zu verhindern, daß eine eingesetzte Hervorhebung selbst wiederum
      hervorgehoben wird, müßte die Analyse des zu highlightenden Texte sehr
      viel gründlicher erfolgen. Beispielsweise so:

      • in einer Schleife wird jeweils von links der erste Suchbegriff
          lokalisiert
      • die Gesamt-Ausgabe wird dabei in drei Teile zerschnitten (vor dem
          Suchbegriff, dieser selbst, danach
      • der Suchbegriff wird hervorgehoben
      • $vorne und $markierter_suchbegriff werden an einen Puffer hinten
          angehängt
      • die Verarbeitung wird mit $hinten fortgesetzt, bis kein weiterer
          zu markierender Begriff gefunden wird.
        Die Ausgabe müßte also sequentiell "verbraucht" werden, wobei nach
        allen Suchbegriffen parallel gesucht werden müßte. Bisher wird ein
        Suchbegriff nach dem anderen markiert - genau das verursacht das
        Problem, weil spätere Markierungsdurchgänge die bereits eingefügten
        Markierungen als Inhalt ansehen und versehentlich nochmal markieren.
        (Das können jetzt sicherlich irgendwelche Perl-Hacker wesentlich
        schneller in gültigen Code umsetzen als ich ...)

      Überhaupt ist es ja noch ein ungelöstes algorithmisches Problem, was
      passieren soll, wenn mehrere Suchbegriffe einander überlappend auftreten

      • welcher davon soll hervorgehoben werden?
        Bisher hätte der jeweils in der Eingabe zuerst stehende Vorrang gehabt,
        weil seine Markierung nachfolgende Suchbegriffe "zerrissen" hätte.

      aber ich bin sicher, Michael Schroepl wird das hier lesen ... ;-)

      Bitte schön.

      Das Markierungs-Feature galt von meiner Seite her immer als "experimental";
      man könnte man es einfach abschalten, wenn das Bio den Seelenfrieden wieder
      geben sollte.

      Andererseits kommt das Erkennen dieses Fehlers zu einem günstigen Zeitpunkt

      • das ist dann schon mal etwas, das bei der Neu-Implementierung der Suche
        nicht wieder verkehrt gemacht werden wird ...

      Viele Grüße
            Michael

      1. Hi Michael :-)

        Das Problem entsteht durch die Highlight-Funktion.
        Da im Suchausdruck ein einzelnes "P" vorkommt, versucht das Script, [...]

        Ja dann beschränk doch einfach die Markierungsfunktion so, daß sie nur wörter mit 3 oder mehr Buchstaben markiert :-)

        (Nur so ne Idee)

        Ciao,

        Harry
        PS: Initiativstrafe zwecklos, habe keine Ahnung von Perl ;-)

        1. Hi Harry,

          Das Problem entsteht durch die Highlight-Funktion.
          Ja dann beschränk doch einfach die Markierungsfunktion so,
          daß sie nur wörter mit 3 oder mehr Buchstaben markiert :-)

          Das könnte man natürlich machen. Dann hat man halt eine Highlight-Funktion,
          die in allen Fällen mit kurzen Suchbegriffen nicht funktioniert.

          Bisher funktioniert die Highlight-Funktion nur in denjenigen Fällen nicht,
          in denen ein Suchbegriff ein substring des Markierungs-Codes ist (also
          konkret von "<span ...>" bzw. "</span>").

          PS: Initiativstrafe zwecklos, habe keine Ahnung von Perl ;-)

          In diesem Falle wäre eine einfache "if"-Abfrage der Länge als 1. Zeile
          innerhalb des Schleifenkörpers ausreichend.

          Ich weiß halt nicht, was von beidem besser wäre - mangels Aufgabenstellung.

          Viele Grüße
                Michael

      2. Hallo Michael,

        wenn ich das Problem richtig verstehe, dann tritt es nur bei der Hervorhebung innerhalb von Tags des archivierten Eintrags auf, oder? Was würde denn dagegensprechen, daß "<" und ">" in html-konforme Schreibweise &lt, bzw. > gewandelt werden, also von keinem Browser als Tags erkannt werden können?

        Hab mir noch keine großen Gedanken über eventuelle Nebeneffekte gemacht, sollte aber an sich doch klappen.

        Grüße aus Würzburg
        Julian

        1. Hoi,

          wenn ich das Problem richtig verstehe, dann tritt es nur bei der
          Hervorhebung innerhalb von Tags des archivierten Eintrags auf, oder?

          Nein. Es tritt auf, wenn in den Hervorhebungen der Suchbegriffe wieder
          Suchbegriffe enthalten sind. In diesem Fall war das das P in den
          <span>-Tags.

          Gruesse,
           CK

      3. Hallo Michael

        Also ich würde das so lösen:

        @begriffe seien die hervorzuhebenden Begriffe.
        $text sei der Text, in dem selbige hervorgehoben werden sollen.

        my $regexp = join('|',@begriffe);
        $text =~ s/($regexp)/<span>$1</span>/g;

        Grüße

        Daniel

        1. Hoi,

          Also ich würde das so lösen:

          @begriffe seien die hervorzuhebenden Begriffe.
          $text sei der Text, in dem selbige hervorgehoben werden sollen.

          my $regexp = join('|',@begriffe);
          $text =~ s/($regexp)/<span>$1</span>/g;

          Die Loesung ist eine gute Idee, aber hat einen Fehler. Such mal nach
          z. B. '.*' oder '||'. Besser waere vielleicht:

          my $regex = quotemeta $begriffe[0];
          $regex .= '|'.quotemeta($_) foreach @begriffe[1..$#begriffe];

          Gruesse,
           CK

          1. my $regex = quotemeta $begriffe[0];
            $regex .= '|'.quotemeta($_) foreach @begriffe[1..$#begriffe];

            my $regex = join '|' => map { quotemeta } @begriffe;

          2. Hi CK,

            » Die Loesung ist eine gute Idee, aber hat einen Fehler.
            Das war natürlich Absicht. Ich wollte ja das Porb nicht lösen, sondern lediglich die Perlcracks aus der Reserve locken ;-)

            Grüße

            Daniel

      4. Sup!

        ein Bug und möglicherweise ein Hinweis für schrecklichste
        Fehlfunktionen im Such- oder Archivskript.... (O Gott!!!)

        seit wann führt Bio hier im Forum Selbstgespräche? ;-)

        Oehm... ich habe nie behauptet, daß es einen Gott gibt, und in der Tat halte ich mir nicht für Gott, sonst könnte ich ja M$-User mit Blitzen erschlagen (oder nicht?), ich beherrzige nur manchmal die Ratschläge der Fantastischen 4:

        Demnach spiele ich darin die Hauptrolle und bin ein Star, der Regisseur und der Kameramann - und natürlich zu geil für diese Welt:

        http://www.diefantastischen4.de/DISKOGRAPHIE/FANTA4/ZUGEIL.HTM

        Nebenbei spiele ich die Hauptrolle:
        http://www.diefantastischen4.de/DISKOGRAPHIE/FANTA4/SONNE.HTM

        Schliesslich und endlich bin ich noch in meinem eigenen Film und bin mein eigener Held:

        http://www.diefantastischen4.de/DISKOGRAPHIE/FANTA4/WEG.HTM

        Manchmal, aber nur manchmal, haben... ehm... also da rede ich mir dann sogar ein, ich sei populär...

        [http://www.diefantastischen4.de/DISKOGRAPHIE/FANTA4/POPULAER.HTM]

        ... oder am Ende Der Picknicker!

        http://www.diefantastischen4.de/DISKOGRAPHIE/FANTA4/PICKNICK.HTM

        Das beweist: Mein verpfuschter Charakter ist Ergebnis des Kapitalismus und der deutschen Sprechgesangsszene! Ich prangere das an!

        Dermassen indoktriniert kann's dann natürlich vorkommen, das man ungelogen ein bisschen hochfliegt, aber solange man nicht irgendwen mit sich selbst betrügt und sie noch da ist, ist ja alles gut - oder?

        Gruesse,

        Bio
        p.s.: Die vielen Links sollen beweise, daß ich wohl Zitate mit Quellenangabe bringen kann
        p.p.s.: Am besten ist dieser hier: http://www.diefantastischen4.de/bogus ... die fantastischen viernullvier... *g*