Bio: Ich präsentiere...

Sup!

... nicht ganz ohne Stolz:

BIOSORT(TM)(R) 2004 - das Tool, worauf die Board-Kiddies gewartet haben.

BIOSORT(TM)(R) 2004

  • sortiert die aktuellen Threads nach oben
  • ist lauffähig in allen hinreichend coolen Browsern (also Mozilla, Mozilla und Mozilla ab Version 1.7 - und vielleicht noch andere, die alles implementieren, was ich benutze).
  • ist natürlich (C) 2004 by BIO. Ich verklage alle, die irgendwelche Codeteile (z.B. "i++", "= 0" etc.) benutzen!
  • funktioniert als Bookmarklet in der normalen und der my-Ansicht

Installation: Neuen Bookmark erstellen, den Code als URL eintragen, im Forum benutzen.

<code>
javascript: function threadinfo(node,time) {this.node = node;this.time = time;} function sortthreads(a,b) {return (b.time - a.time);} function check(){dt = document.title; rn=document.getElementById("root"); non = rn.childNodes.length; real_thread_list = new Array(); realthreads = new Array(); threads = 0; for (i=0;i<non;i++) {document.title=dt +" - BioSorting - Phase 1/2 - ("+ Math.floor((i/non) * 100) + "%)";if (rn.childNodes.item(i).nodeType == 1) {a = analyse_thread_get_latest_date(rn.childNodes.item(i)); if (a) {real_thread_list[threads] = i; realthreads[threads++] = new threadinfo(rn.childNodes.item(i).cloneNode(1),a);}}} realthreads.sort(sortthreads); for (i=0; i < threads; i++) {document.title=dt +" - BioSorting - Phase 2/2 - ("+ Math.floor((i/threads) * 100) + "%)"; rn.replaceChild(realthreads[i].node,rn.childNodes.item(real_thread_list[i]));} document.title=dt + " - BioSorted - most active threads first"} function analyse_thread_get_latest_date(node) { if (node.childNodes.item(0).nodeType == 3) return false; var content = node.innerHTML; var timearray = new Array(); var myregexp = /</b>, (\d{2}). (\d{2}). (\d{4}), (\d{2}):(\d{2}) /; results = content.match(/</b>, \d{2}. \d{2}. \d{4}, \d{2}:\d{2} /g); if (results) {for (a = 0; a<results.length; a++) {myregexp.exec(results[a]);timearray[a] = new Date(RegExp.$3,RegExp.$2,RegExp.$1,RegExp.$4,RegExp.$5,0);}} else {return false;} timearray.sort();return timearray[timearray.length-1];} check();
</code>

Gruesse,

Bio
---
Do ut des!

  1. Sup!

    Ehm... das ganze vielleicht noch mal in lesbar:

    function threadinfo(node,time) {
      this.node = node;
      this.time = time;
    }

    function sortthreads(a,b) {
    // alert(a.time - b.time);
    return (b.time - a.time);
    }

    function check(){
     dt = document.title;

    rn=document.getElementById("root");
     non = rn.childNodes.length;

    real_thread_list = new Array();
     realthreads = new Array();

    threads = 0;
     for (i=0;i<non;i++) {
     document.title=dt +"BioSorting - Phase 1 - ("+ Math.floor((i/non) * 100) + "%)";
       if (rn.childNodes.item(i).nodeType == 1) {
         a = analyse_thread_get_latest_date(rn.childNodes.item(i));
         if (a) {
           real_thread_list[threads] = i;
           realthreads[threads++] = new threadinfo(rn.childNodes.item(i).cloneNode(1),a);
         }
       }
     }

    realthreads.sort(sortthreads);

    for (i=0; i < threads; i++) {
       document.title=dt +"BioSorting - Phase 2 - ("+ Math.floor((i/threads) * 100) + "%)";
       rn.replaceChild(realthreads[i].node,rn.childNodes.item(real_thread_list[i]));
     }
     document.title=dt + " - BioSorted - most active threads first"
    }

    function analyse_thread_get_latest_date(node) {
      if (node.childNodes.item(0).nodeType == 3) return false;
      var content = node.innerHTML;
      var timearray = new Array();
      var myregexp = /</b>, (\d{2}). (\d{2}). (\d{4}), (\d{2}):(\d{2}) /;
      results = content.match(/</b>, \d{2}. \d{2}. \d{4}, \d{2}:\d{2} /g);
      if (results) {
        for (a = 0; a<results.length; a++) {
          myregexp.exec(results[a]);
          timearray[a] = new Date(RegExp.$3,RegExp.$2,RegExp.$1,RegExp.$4,RegExp.$5,0);
        }
      } else {
        return false;
      }
      timearray.sort();
      // alert(timearray[timearray.length-1]);
      return timearray[timearray.length-1];
    }

    check();

    Ich habe auch mittlerweile das ungute Gefühl entwickelt, dass es nicht immer funktioniert - aber was erwartet man von einer ersten Version ;-)

    Gruesse,

    Bio

    --
    Tötet DJ Ötzi! (Nicht wirklich!)
    1. gruss Bio,

      Ich habe auch mittlerweile das ungute Gefühl entwickelt, dass es
      nicht immer funktioniert - aber was erwartet man von einer ersten
      Version ;-)

      es tut doch ganz ordentlich, aber

      was mir gleich auffiel: die status-informationen im title werden
         bei mehrmaligem durchlauf immer wieder neu angehaengt - bug oder
         feature?

      so long - peterS. - pseliger@gmx.net

      --
      sh:| fo:) ch:? rl:| br:& n3:} n4:# ie:| mo:{ va:| de:[ zu:] fl:) ss:) ls:& js:)
      1. Sup!

        Okay... Version 1.1:

        • Problem mit Sortieren von Daten (geht wohl built-in doch nicht so gut) beseitigt
        • Skript läuft nur einmal (macht auch sonst keinen Sinn) pro Seite-Laden

        Lesbar:

        function threadinfo(node,time) {
          this.node = node;
          this.time = time;
        }

        function sortthreads(a,b) {
        return (b.time - a.time);
        }

        function timesort(a,b) {
        return (a-b);
        }

        function check(){
         dt = document.title;
         if (dt.match(/BioSort/)) {return true;}

        rn=document.getElementById("root");
         non = rn.childNodes.length;

        real_thread_list = new Array();
         realthreads = new Array();

        threads = 0;
         for (i=0;i<non;i++) {
         document.title=dt +" - BioSorting - Phase 1/2 - ("+ Math.floor((i/non) * 100) + "%)";
           if (rn.childNodes.item(i).nodeType == 1) {
             a = analyse_thread_get_latest_date(rn.childNodes.item(i));
             if (a) {
               real_thread_list[threads] = i;
               realthreads[threads++] = new threadinfo(rn.childNodes.item(i).cloneNode(1),a);
             }
           }
         }

        realthreads.sort(sortthreads);

        for (i=0; i < threads; i++) {
           document.title=dt +" - BioSorting - Phase 2/2 - ("+ Math.floor((i/threads) * 100) + "%)";
           rn.replaceChild(realthreads[i].node,rn.childNodes.item(real_thread_list[i]));
         }
         document.title=dt + " - BioSorted - most active threads first"
        }

        function analyse_thread_get_latest_date(node) {
          if (node.childNodes.item(0).nodeType == 3) return false;
          var content = node.innerHTML;
          var timearray = new Array();
          var myregexp = /</b>, (\d{2}). (\d{2}). (\d{4}), (\d{2}):(\d{2}) /;
          results = content.match(/</b>, \d{2}. \d{2}. \d{4}, \d{2}:\d{2} /g);
          if (results) {
         text = "";
            for (a = 0; a<results.length; a++) {
              myregexp.exec(results[a]);
              timearray[a] = new Date(RegExp.$3,RegExp.$2,RegExp.$1,RegExp.$4,RegExp.$5,0);
        text += timearray[a]+" # ";
            }
          } else {
            return false;
          }

        timearray.sort(timesort);

        return timearray[timearray.length-1];
        }

        Bookmarkbar:
        javascript:function timesort(a,b) {return (a-b);}function threadinfo(node,time) {this.node = node;this.time = time;} function sortthreads(a,b) {return (b.time - a.time);} function check(){dt = document.title; if (dt.match(/BioSort/)) {return;} rn=document.getElementById("root"); non = rn.childNodes.length; real_thread_list = new Array(); realthreads = new Array(); threads = 0; for (i=0;i<non;i++) {document.title=dt +"BioSorting - Phase 1 - ("+ Math.floor((i/non) * 100) + "%)";if (rn.childNodes.item(i).nodeType == 1) {a = analyse_thread_get_latest_date(rn.childNodes.item(i)); if (a) {real_thread_list[threads] = i; realthreads[threads++] = new threadinfo(rn.childNodes.item(i).cloneNode(1),a);}}} realthreads.sort(sortthreads); for (i=0; i < threads; i++) {document.title=dt +"BioSorting - Phase 2 - ("+ Math.floor((i/threads) * 100) + "%)"; rn.replaceChild(realthreads[i].node,rn.childNodes.item(real_thread_list[i]));} document.title=dt + " - BioSorted - most active threads first"} function analyse_thread_get_latest_date(node) { if (node.childNodes.item(0).nodeType == 3) return false; var content = node.innerHTML; var timearray = new Array(); var myregexp = /</b>, (\d{2}). (\d{2}). (\d{4}), (\d{2}):(\d{2}) /; results = content.match(/</b>, \d{2}. \d{2}. \d{4}, \d{2}:\d{2} /g); if (results) {for (a = 0; a<results.length; a++) {myregexp.exec(results[a]);timearray[a] = new Date(RegExp.$3,RegExp.$2,RegExp.$1,RegExp.$4,RegExp.$5,0);}} else {return false;} timearray.sort(timesort);return timearray[timearray.length-1];} check();

        Gruesse,

        Bio

        --
        Tötet DJ Ötzi! (Nicht wirklich!)
        1. hallo again,

          Okay... Version 1.1:
          ...

          • Skript läuft nur einmal (macht auch sonst keinen Sinn) pro Seite-Laden

          sehr schoen, damit ist es jetzt auch DAU-sicher;

          vielen dank - tschoe - peterS. - pseliger@gmx.net

          --
          sh:| fo:) ch:? rl:| br:& n3:} n4:# ie:| mo:{ va:| de:[ zu:] fl:) ss:) ls:& js:)
    2. Moin Bio,

      Ich habe auch mittlerweile das ungute Gefühl entwickelt, dass es nicht immer funktioniert - aber was erwartet man von einer ersten Version ;-)

      habe ich jetzt mal in meinem Opera7.5 ausprobiert.

      Zwar zeigt die Titelleiste schöne dinge an, und sieht auch alles ganz nett aus, kommt kein JavaScript-Fehler odersowas - aber die aktiven Threads bleiben da, wo sie auch vorher waren.

      !??!

      Gruß,

      Sven

      --
        TERMine: * 28.07.2004 - max. 30.08.2004 ** potentielle Abwesenheitsgefahr
                 * 04.08.2004                   ** Namenstage für die "Sven"'s im Forum (scnr)
        MAIL@me: Die Abwesenheitsmail:  mailto:sommerferien04.20.wauwau@spamgourmet.org
       SELFcode: ie:% fl:| br:^ va:{ ls:& fo:) rl:( n4:( ss:) de:> js:| ch:° mo:} zu:}
      1. Sup!

        Also, wenn die Threads nicht nachher so angeordnet sind, dass die Threads mit den aktuellsten Postings oben sind, dann kann Opera wohl nicht genug DOM oder JS für das Skript.

        Gruesse,

        Bio

        --
        Tötet DJ Ötzi! (Nicht wirklich!)
        1. ^Moin Bio,

          Also, wenn die Threads nicht nachher so angeordnet sind, dass die Threads mit den aktuellsten Postings oben sind, dann kann Opera wohl nicht genug DOM oder JS für das Skript.

          tja - mein Mozilla 1.6 schafft das locker (er hat zwar etwa eine halbe minute gebraucht, aber was soll's ;-).

          Gruß,

          Sven

          --
            TERMine: * 28.07.2004 - max. 30.08.2004 ** potentielle Abwesenheitsgefahr
                     * 04.08.2004                   ** Namenstage für die "Sven"'s im Forum (scnr)
            MAIL@me: Die Abwesenheitsmail:  mailto:sommerferien04.20.wauwau@spamgourmet.org
           SELFcode: ie:% fl:| br:^ va:{ ls:& fo:) rl:( n4:( ss:) de:> js:| ch:° mo:} zu:}
          1. Sup!

            tja - mein Mozilla 1.6 schafft das locker (er hat zwar etwa eine halbe minute gebraucht, aber was soll's ;-).

            Mein Mozilla 1.7 final auf 'nem Athlon TB 1333 braucht ca. 5 Sekunden.

            Gruesse,

            Bio

            --
            Tötet DJ Ötzi! (Nicht wirklich!)
            1. Hi,

              Firefox 0.8 auf einem Dual Xeon 2GH und 2 Gig Ram ~ 5 Sek

              Grüßle

              --
              mal wieder auf http://www.buchlinks.de/ vorbeigeschaut? Mittlerweile mehr als 1100! Bücher. Gerne veröffentlichen wir auch deine Tutorials/Texte/...
              1. gruss Testjunkies,

                Sven:

                tja - mein Mozilla 1.6 schafft das locker (er hat zwar
                etwa eine halbe minute gebraucht, aber was soll's ;-).

                Bio:

                Mein Mozilla 1.7 final auf 'nem Athlon TB 1333 braucht
                ca. 5 Sekunden.

                lachesis:

                Firefox 0.8 auf einem Dual Xeon 2GH und 2 Gig Ram ~ 5 Sek

                meine kiste:

                Dual Xeon 2,66 GHz / 1 Gig Ram auf Mozilla 1.7 en-US Gecko/2004061,
                   gemittelt ueber mehrere testlaeufe: 3.1 sek bei 27% annaehernd
                   gleichverteilter cpu-mehrlast;

                tschoe - peterS. - pseliger@gmx.net

                --
                sh:| fo:) ch:? rl:| br:& n3:} n4:# ie:| mo:{ va:| de:[ zu:] fl:) ss:) ls:& js:)
                1. Moin ihr,

                  Mein Mozilla 1.7 final auf 'nem Athlon TB 1333 braucht
                  ca. 5 Sekunden.
                  Firefox 0.8 auf einem Dual Xeon 2GH und 2 Gig Ram ~ 5 Sek
                     Dual Xeon 2,66 GHz / 1 Gig Ram auf Mozilla 1.7 en-US Gecko/2004061,
                     gemittelt ueber mehrere testlaeufe: 3.1 sek bei 27% annaehernd
                     gleichverteilter cpu-mehrlast;

                  ihr seid ja scheinbar auch mit toller Hardware ausgestattet. Ich muss mich mit einem Pentium III mit 256MB RAM (wovon vergleichsweise wenig zur Verfügung steht) begnügen :/

                  Gruß,

                  Sven

                  PS: Da fällt mir gleich wieder mien Accessibility-Thread ein. S.o.

                  --
                    TERMine: * 28.07.2004 - max. 30.08.2004 ** potentielle Abwesenheitsgefahr
                             * 04.08.2004                   ** Namenstage für die "Sven"'s im Forum (scnr)
                    MAIL@me: Die Abwesenheitsmail:  mailto:sommerferien04.20.wauwau@spamgourmet.org
                   SELFcode: ie:% fl:| br:^ va:{ ls:& fo:) rl:( n4:( ss:) de:> js:| ch:° mo:} zu:}
                  1. Sup!

                    ihr seid ja scheinbar auch mit toller Hardware ausgestattet. Ich muss mich mit einem Pentium III mit 256MB RAM (wovon vergleichsweise wenig zur Verfügung steht) begnügen :/

                    Jetzt hast Du meine "Ueber-den-Unterschied-zwischen-scheinbar-und-anscheinend-Belehr-Funktion"
                    ausgeloest - nimm dies'!

                    http://www.spiegel.de/kultur/gesellschaft/0,1518,276326,00.html

                    Gruesse,

                    Bio

                    --
                    Tötet DJ Ötzi! (Nicht wirklich!)
                    1. Hallo, Bio!

                      nimm dies'!
                      http://www.spiegel.de/kultur/gesellschaft/0,1518,276326,00.html

                      den hier finde ich noch besser:
                      http://www.geocities.com/Athens/8307/hirsch/hirsch25.htm

                      btw.: ich hoffe, du hast das hier [pref:t=85387&m=508735] nicht übersehen?
                      ich würde mich sehr freuen, dazu noch etwas von dir zu lesen. ;-)

                      freundl. Grüsse aus Berlin, Raik

              2. Hallo,

                Firefox 0.9.1 auf einem
                Athon XP 2500+ @9x200MHz,
                512MB RAM
                Win2k

                braucht 12 Sekunden.
                unter Linux probier ich es später aus.

                Aber ich habe nicht verstanden,
                was das Teil eigentlich macht.

                Gruß
                Alexander Brock

                --

                SelfCode: sh:( fo:) ch:? rl:( br:> n4:? ie:{ mo:} va:) de:> zu:| fl:{ ss:( ls:[ js:(
                http://emmanuel.dammerer.at/selfcode.html
                Deshalb können Pinguine nicht fliegen:
                Was nicht fliegt kann auch nicht abstürzen
                <img src="http://www.againsttcpa.com/images/AgainstTCPA-Log01Small.gif" border="0" alt="">
                http://againsttcpa.com
                1. Sup!

                  Aber ich habe nicht verstanden,
                  was das Teil eigentlich macht.

                  • In jedem Thread das neueste Posting finden
                  • Die Threads nach der Reihenfolge der neuesten Postings sortieren, so dass der Thread, in dem die allerneueste Antwort steht, ganz oben ist, der Thread, in dem am längsten nichts passiert ist, ganz unten.

                  Gruesse,

                  Bio

                  --
                  Man kann aus Ackergaeulen keine Rennpferde machen
                  1. Hallo,

                    Aber ich habe nicht verstanden,
                    was das Teil eigentlich macht.

                    • In jedem Thread das neueste Posting finden
                    • Die Threads nach der Reihenfolge der neuesten Postings sortieren, so dass der Thread, in dem die allerneueste Antwort steht, ganz oben ist, der Thread, in dem am längsten nichts passiert ist, ganz unten.

                    Ach so. Danke für die Antwort :-)

                    Gruß
                    Alexander Brock

                    --

                    SelfCode: sh:( fo:) ch:? rl:( br:> n4:? ie:{ mo:} va:) de:> zu:| fl:{ ss:( ls:[ js:(
                    http://emmanuel.dammerer.at/selfcode.html
                    Deshalb können Pinguine nicht fliegen:
                    Was nicht fliegt kann auch nicht abstürzen
                    <img src="http://www.againsttcpa.com/images/AgainstTCPA-Log01Small.gif" border="0" alt="">
                    http://againsttcpa.com
  2. Hallo, Bio!

    Ich verklage alle, die irgendwelche Codeteile (z.B. "i++", "= 0" etc.) benutzen!
    <code>
    javascript: ...

    ^^^^^^^^^^^

    du bekommst post von meinem anwalt.
    den codeteil hast du hier: http://forum.de.selfhtml.org/archiv/2004/3/75543/#m435100 geklaut! ;-)
    mit meinem unglaublichen know how hier punkte sammeln wollen, so gehts aber nicht! :-P

    freundl. Grüsse aus Berlin, Raik

    1. Sup!

      du bekommst post von meinem anwalt.
      den codeteil hast du hier: http://forum.de.selfhtml.org/archiv/2004/3/75543/#m435100 geklaut! ;-)
      mit meinem unglaublichen know how hier punkte sammeln wollen, so gehts aber nicht! :-P

      Verdammt... dann muss ich wohl ein Runner-Team*) zu Dir schicken, bevor Du Deinen Anwalt anrufen kannst...

      Gruesse,

      Bio

      --
      *) Pen&Paper-Rollenspielen bildet
  3. Hi Bio,

    sei so nett und mach nen kurzen TuT daraus, mit ner Kurzanleitung wie man es einsetzt.

    Viele Grüße
    Mathias Bigge

    1. Sup!

      sei so nett und mach nen kurzen TuT daraus, mit ner Kurzanleitung wie man es einsetzt.

      Man bookmarkt es und klickt drauf?
      Oder hattest Du Dir was anderers vorgestellt als Anleitung?

      Gruesse,

      Bio

      --
      Man kann aus Ackergaeulen keine Rennpferde machen
      1. Hi Bio,

        sei so nett und mach nen kurzen TuT daraus, mit ner Kurzanleitung wie man es einsetzt.
        Man bookmarkt es und klickt drauf?
        Oder hattest Du Dir was anderers vorgestellt als Anleitung?

        Nein, drei Sätze mehr, aber im Stil OK...

        Viele Grüße
        Mathias Bigge

    2. Hallo heute so wie ich gegen die STVo parkender Nachbar,

      sei so nett und mach nen kurzen TuT daraus, mit ner Kurzanleitung wie man es einsetzt.

      Alternativ einen FA, der die Entwicklung des Skriptes beschreibt, damit der
      Javascript-Unkundige daraus lernen kann. ;)

      Tim

      1. Hallo, Tim!

        sei so nett und mach nen kurzen TuT daraus, mit ner Kurzanleitung wie man es einsetzt.
        Alternativ einen FA, der die Entwicklung des Skriptes beschreibt, damit der
        Javascript-Unkundige daraus lernen kann. ;)

        genau! :-)
        das wär doch mal ne wirkliche hilfe für die anfänger, wenn man schritt für schritt die entstehung mit erklärungen begleitet.
        das schult das logische verständnis für programabläufe.
        Bio, wenn du hilfe brauchst, sags! :-) ich mach gern mit.

        freundl. Grüsse aus Berlin, Raik

        1. Sup!

          Wunder dauern bekanntlich länger und eigentlich wollte ich mich mit dem Skript nicht über die Maßen produzieren, aber wenn's denn sein soll, dann schreibe ich einen FA - "Forum umsortieren mit Bio" oder so ;-)

          Gruesse,

          Bio

          --
          Man kann aus Ackergaeulen keine Rennpferde machen
          1. Hi Bio,

            zick nicht rum!

            Wunder dauern bekanntlich länger und eigentlich wollte ich mich mit dem Skript nicht über die Maßen produzieren, aber wenn's denn sein soll, dann schreibe ich einen FA - "Forum umsortieren mit Bio" oder so ;-)

            Machn TuT mit ner dausicheren Erklärung, dauert drei Stunden und Du bist berühmt!

            Viele Grüße
            Mathias Bigge

            1. Sup!

              Machn TuT mit ner dausicheren Erklärung, dauert drei Stunden und Du bist berühmt!

              Dausichere Erklärung? Dauert Minimum einen Tag, bei meinen Ansprüchen an mich selbst... :-))))))
              Aber die Berühmtheit erscheint natürlich schon sehr verlockend ;-)

              Gruesse,

              Bio

              --
              Man kann aus Ackergaeulen keine Rennpferde machen
          2. Port!

            "Forum umsortieren mit Bio" oder so ;-)

            Ob lauter Bilder von Bio vor dem Computer nicht mit der Dauer langweilig
            werden? ;o)

            Tim

            1. Sup!

              Ob lauter Bilder von Bio vor dem Computer nicht mit der Dauer langweilig
              werden? ;o)

              Vielleicht mache ich mikrosokopische Aufnahmen von irgendwelchen interessanten Stellen an meinem Koerper bzw. Rechner, damit es spannend bleibt?

              Gruesse,

              Bio

              --
              Man kann aus Ackergaeulen keine Rennpferde machen
              1. Port!

                Vielleicht mache ich mikrosokopische Aufnahmen von irgendwelchen
                interessanten Stellen an meinem Koerper

                Oh. Da der Algorithmus der Personalausweisnummer keine Sicherheit darstellt -
                braucht der SELFHTML e.V. dann demnächst einen Jugendschutzbeauftragten, der
                manuell die gefaxten Personalausweise durchgeht und einzeln Zugang zu der
                Domain http://ab18.de.selfhtml.org/ gewährt?

                Tim