N2O: Buchstaben normieren

0 62

Buchstaben normieren

N2O
  • php
  1. 0
    Christian Kruse
  2. 0
    Tom
    1. 0
      Christian Kruse
      1. 0
        Tom
        1. 0
          Christian Kruse
          1. 0
            MudGuard
            1. 0
              Christian Kruse
              1. 0
                MudGuard
                1. 0
                  Christian Kruse
                  1. 0
                    Tom
                    1. 0
                      Christian Kruse
                      1. 0

                        Warum diese massiven Angriffe?

                        Tom
                        • menschelei
                        1. 0
                          Christian Kruse
                          1. 0
                            Indigo
                  2. 0
                    MudGuard
                    1. 0
                      Christian Kruse
                      1. 0
                        MudGuard
          2. 0
            Tom
            1. 0
              Christian Kruse
              1. 0
                Tom
                1. 0
                  Christian Kruse
                  1. 0

                    Komplexitätstherorie für Rando Access Maschinen

                    Tom
                    1. 0
                      Christian Kruse
                      1. 0
                        Tom
                        1. 0
                          Christian Kruse
                          1. 0
                            Tom
                            1. 0
                              Christian Kruse
                              1. 0
                                Tom
                                1. 0
                                  Christian Kruse
                                  1. 0
                                    Tom
                                    1. 0
                                      Christian Kruse
                                      1. 0
                                        Tom
                                        1. 0
                                          Christian Kruse
                                          1. 0
                                            Tom
                                            1. 0
                                              Christian Kruse
                                              1. 0
                                                Tom
                                                1. 0
                                                  Christian Kruse
                                                  1. 0
                                                    Tom
                                                2. 0
                                                  Vinzenz
                                                  1. 0
                                                    Tom
                                              2. 0
                                                Daniel Thoma
                                                1. 0
                                                  Christian Kruse
                                2. 0

                                  Es tut mir leid

                                  Enttarner
                                  • menschelei
                                  1. 0
                                    Tom
                                    1. 0
                                      (ex)Enttarner
                                      1. 0
                                        Tom
                                        1. 0
                                          Indigo
                                          1. 0
                                            Cw
                                          2. 0
                                            Orlando
                                          3. 0
                                            Wilhelm Turtschan
                                            1. 0
                                              Icke
                2. 0
                  Indigo
          3. 0
            Christian Kruse
            1. 0
              seth
              1. 0
                Christian Kruse
                1. 0
                  Vinzenz
              2. 0
                Tom
    2. 0
      Patrick Canterino
      1. 0
        Tom
        1. 0
          Patrick Canterino
          1. 0
            Tom

Hallo allerseits,

ich habe eine Array, das mittels sort() alphabetisch-absteigend sortiert und dann als Liste ausgegeben wird. Wenn jetzt aber ein Wort beispielsweise mit "é" beginnt, wird das nicht als "e" behandelt sondern wahrscheinlich als Sonderzeichen; es wird ans Ende der Liste gestellt. Wie kann ich also diese ganzen Buchstaben "normieren", d.h. dass also das é als e behandelt wird.

Gibt es dafür etwaig einen eigenen PHP-Befehl?

Gruß
Lachgas

  1. Hallo N2O,

    ich habe eine Array, das mittels sort() alphabetisch-absteigend sortiert und dann als
    Liste ausgegeben wird. Wenn jetzt aber ein Wort beispielsweise mit "é" beginnt, wird das
    nicht als "e" behandelt sondern wahrscheinlich als Sonderzeichen; es wird ans Ende der
    Liste gestellt. Wie kann ich also diese ganzen Buchstaben "normieren", d.h. dass also
    das é als e behandelt wird.

    Vermutlich suchst du setlocale. Die Reihenfolge
    der Zeichen ist Locale-Abhaengig. Wenn das nichts hilft, wird dir nichts anderes uebrig
    bleiben, als eine eigene Vergleichsfunktion zu schreiben und dann mit usort
    zu sortieren.

    Grüße,
     CK

    --
    Echte Hacker benutzen Aexte. (Thomas Walter in de.org.ccc)
    http://wwwtech.de/
  2. Hello,

    ich habe eine Array, das mittels sort() alphabetisch-absteigend sortiert und dann als Liste ausgegeben wird. Wenn jetzt aber ein Wort beispielsweise mit "é" beginnt, wird das nicht als "e" behandelt sondern wahrscheinlich als Sonderzeichen; es wird ans Ende der Liste gestellt. Wie kann ich also diese ganzen Buchstaben "normieren", d.h. dass also das é als e behandelt wird.

    Gibt es dafür etwaig einen eigenen PHP-Befehl?

    1.) Array duplizieren. Geht mit $_b = $_a;
    2.) Alle störenden Zeichen mit array_map() und str_replace() gegen die "normierten" austauschen
    3.) das so getauschte Array mit asort() oder natsort() sortieren
        Achtung: die Keys müssen erhalten bleiben!
    4.) bei der Ausgabe mit foreach() einfach den Key von $_b benutzen,
        um den Wert von $_a auszugenen

    foreach($_b as $key => $val)   ## $val brauch ich nicht, aber anders bekommt man $key nicht
      {
        echo $_a[$key);
      }

    Das Ganze funktioniert natürlich nur, wenn Du weißt, welche Darstellung in welchem Zeichensatz zu welchem Code gehört.

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. Hallo Tom,

      erstmal ist deine Loesung ein wenig sehr aufwendig. Sowohl programmiertechnisch als auch
      ressourcentechnisch. Dann:

      foreach($_b as $key => $val)   ## $val brauch ich nicht, aber anders bekommt man $key
      nicht

      while(list($key,) = each($_b)) {
        # ...
      }

      Grüße,
       CK

      --
      Echte Hacker benutzen Aexte. (Thomas Walter in de.org.ccc)
      http://wwwtech.de/
      1. Hello,

        Hallo Tom,

        erstmal ist deine Loesung ein wenig sehr aufwendig. Sowohl programmiertechnisch als auch
        ressourcentechnisch.

        Aber usort mit Callback-Funktion ist ressourcenschonend?

        Dann:

        foreach($_b as $key => $val)   ## $val brauch ich nicht, aber anders bekommt man $key
        nicht

        while(list($key,) = each($_b)) {
          # ...
        }

        Dass es mit der normelen Schleife und dem Einsatz von zwei Zusatzkunstukten / Funktionen geht, habe ich auch nicht bezweifelt. Aber mit foreach() geht es nicht anders, den key zu beschaffen, und das habe ich gemeint. Meine Foreach-Kontruktion benötigt nut ca. 20-30% der Zeit der while-Konstruktion.

        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        1. Hallo Tom,

          erstmal ist deine Loesung ein wenig sehr aufwendig. Sowohl programmiertechnisch als auch
          ressourcentechnisch.

          Aber usort mit Callback-Funktion ist ressourcenschonend?

          Ein _ganzes_ Stueck mehr, ja. Mach doch mal eine Aufwandsanalyse: usort benutzt den
          Sortieralgorithmus Quicksort, der Aufwand ist also O(ld 2). Bei deiner Aktion muss
          folgendes gemacht werden:

          • Array kopieren: O(n)
          • array_map() mit str_replace(). O(n), zusaetzlich ist der Aufwand pro Element nochmal
              sehr abhaengig von der Laenge der Werte und deshalb absolut nicht einschaetzbar, wie
              hoch er tatsaechlich ist.
          • Sortierung, Quicksort-Algorithmus. O(ld n).

          Der Aufwand deiner Aktion kostet also 2xO(n) + O(ld n).

          Dann:

          foreach($_b as $key => $val)   ## $val brauch ich nicht, aber anders bekommt man $key
          nicht

          while(list($key,) = each($_b)) {
            # ...
          }

          Dass es mit der normelen Schleife und dem Einsatz von zwei Zusatzkunstukten / Funktionen
          geht, habe ich auch nicht bezweifelt. Aber mit foreach() geht es nicht anders, den key
          zu beschaffen, und das habe ich gemeint.

          Dann schreib das auch so.

          Meine Foreach-Kontruktion benötigt nut ca. 20-30% der Zeit der while-Konstruktion.

          Darum ging es ja nicht.

          Grüße,
           CK

          --
          Nur die Weisesten und die Dümmsten können sich nicht ändern.
          http://wwwtech.de/
          1. Hi,

            zu berücksichtigen ist aber auch, daß bei Verwendung der Callback-Funktion die einzelnen Strings für das Vergleichen durchaus öfter als einmal angeguckt werden, d.h. eine Konvertierung ggf. vielfach durchgeführt wird.

            cu,
            Andreas

            --
            Warum nennt sich Andreas hier MudGuard?
            Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
            1. Hallo MudGuard,

              zu berücksichtigen ist aber auch, daß bei Verwendung der Callback-Funktion die einzelnen
              Strings für das Vergleichen durchaus öfter als einmal angeguckt werden, d.h. eine
              Konvertierung ggf. vielfach durchgeführt wird.

              Warum Konvertierung?

              Grüße,
               CK

              --
              Der Geist ist alles. Du wirst, was du denkst.
              http://wwwtech.de/
              1. Hi,

                zu berücksichtigen ist aber auch, daß bei Verwendung der Callback-Funktion die einzelnen
                Strings für das Vergleichen durchaus öfter als einmal angeguckt werden, d.h. eine
                Konvertierung ggf. vielfach durchgeführt wird.

                Warum Konvertierung?

                Geht natürlich auch ohne Konvertierung, dann muß man halt jedesmal zig Vergleiche machen, um e mit e accent grave, e accent d'aigue, e accent circonflex, e trema, ... zu vergleichen.

                cu,
                Andreas

                --
                Warum nennt sich Andreas hier MudGuard?
                Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
                1. Hallo MudGuard,

                  Geht natürlich auch ohne Konvertierung, dann muß man halt jedesmal zig Vergleiche machen,
                  um e mit e accent grave, e accent d'aigue, e accent circonflex, e trema, ... zu
                  vergleichen.

                  Noe. Man kennt doch den Zeichensatz. Sowohl in Unicode als auch in Latin1 und Latin9 stehen
                  die Umlaut-Zeichen direkt hintereinander. Daraus laesst sich recht einfach ein Algorithmus
                  basteln, der wesentlich weniger aufwendig ist als Array kopieren Elemente durchlaufen, alle
                  Umlaute ersetzen, ...

                  Grüße,
                   CK

                  --
                  Wer sich zu überschwänglich freut, wir später Grund zum Weinen haben.
                  http://wwwtech.de/
                  1. Hello,

                    Noe. Man kennt doch den Zeichensatz. Sowohl in Unicode als auch in Latin1 und Latin9 stehen
                    die Umlaut-Zeichen direkt hintereinander. Daraus laesst sich recht einfach ein Algorithmus
                    basteln, der wesentlich weniger aufwendig ist als Array kopieren Elemente durchlaufen, alle
                    Umlaute ersetzen, ...

                    Zum ersetzen müssen sie nur einmal verglichen werden.
                    Danach arbeitet man mit einem 'Reduced Character Set', was Du in Deiner Analyse auch unterschlagen hast

                    Jedes Zeichen, dass weniger in der 'alternate collatig sequence' vorhanden ist, verringert den Aufwand. Wo wurde das von Dir berücksichtigt? Wenn die Wertemenge nun groß genug ist, werde ich gewinnen mit meiner Methode.

                    BTW: ich habe mit "Menschenverstand + Maschinenverstand" schon oft die Wetten gewonnen, jedenfalls wesentlich öfter, als dass ich sie verloren habe!

                    Harzliche Grüße aus http://www.annerschbarrich.de

                    Tom

                    --
                    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                    Nur selber lernen macht schlau
                    1. Hallo Tom,

                      Noe. Man kennt doch den Zeichensatz. Sowohl in Unicode als auch in Latin1 und Latin9
                      stehen die Umlaut-Zeichen direkt hintereinander. Daraus laesst sich recht einfach ein
                      Algorithmus basteln, der wesentlich weniger aufwendig ist als Array kopieren Elemente
                      durchlaufen, alle Umlaute ersetzen, ...

                      Zum ersetzen müssen sie nur einmal verglichen werden.
                      Danach arbeitet man mit einem 'Reduced Character Set', was Du in Deiner Analyse auch
                      unterschlagen hast

                      Ich habe nichts unterschlagen, Hasi. Aber wenn du so ueberzeugt bist von deiner Methode,
                      dann bitte, mach ein Benchmark. Von dir kam bisher auf jedenfall nichts anderes als heisse
                      Luft.

                      Grüße,
                       CK

                      --
                      Es ist uns nicht möglich, in einem Bereich unseres Lebens richtig zu verhalten, wenn wir in allen anderen falsch handeln. Das Leben ist ein unteilbares Ganzes.
                      http://wwwtech.de/
                      1. Hello,

                        Ich habe nichts unterschlagen, Hasi. Aber wenn du so ueberzeugt bist von deiner Methode,
                        dann bitte, mach ein Benchmark. Von dir kam bisher auf jedenfall nichts anderes als heisse
                        Luft.

                        Seit wann sind substantiierte Konzepte 'heiße Luft'?

                        Ich habe doch eine klare Bauanleitung für die Lösung angegeben.
                        Mit Kenntnis der Funktionen aus PHP kann man die in 10 Minuten in ein Script verwandeln.
                        Wen Du 'Deins' baust, bin ich gerne bereit, 'meins' zu bauen und dann können wir wirklich vergelichen. Ich betone nochmals, dass ich Dich [bisher] [fachlich] sehr schätze. Warum musst Du immer 'gewinnen'? Du wirst doch ohne diese Wettkampmentalität hier viel eher akzeptiert.

                        Harzliche Grüße aus http://www.annerschbarrich.de

                        Tom

                        --
                        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                        Nur selber lernen macht schlau
                        1. Hallo Tom,

                          Ich habe nichts unterschlagen, Hasi. Aber wenn du so ueberzeugt bist von deiner Methode,
                          dann bitte, mach ein Benchmark. Von dir kam bisher auf jedenfall nichts anderes als
                          heisse Luft.

                          Seit wann sind substantiierte Konzepte 'heiße Luft'?

                          Wenn es denn so waere. Was von dir bisher hier angekommen ist: Ein Loesungsansatz. Ich habe
                          dir bewiesen, dass er sehr aufwendig ist. Von dir kam zurueck: du hast Unrecht. Keine
                          Argumente, kein gar nichts. Auf meine Aufforderung hin, doch bitte Argumente zu bringen,
                          kommt von dir »Warum diese massiven Angriffe?«.

                          Warum musst Du immer 'gewinnen'? Du wirst doch ohne diese Wettkampmentalität hier viel
                          eher akzeptiert.

                          Ich muss nicht gewinnen. Ich _hasse_ es nur, wenn Leute daher kommen und ohne irgendwelche
                          Argumente meinen, unbedingt recht behalten zu muessen. Du hast hier bisher keinerlei
                          Argumente gebracht, du hast nur ein bisschen herumgeredet. Wenn deine Methode so gut ist,
                          beweise es mir doch einfach. Warum kommt von dir nie etwas substantielles? Warum kommt
                          von dir nur immer »ich hab recht«? Ich habe dir doch nun wirklich eine goldene Bruecke
                          gebaut, aber anstatt mit irgendwas substantiellem zu kommen kommt nur »Warum diese massiven
                          Angriffe?«.

                          Du stellst jede Menge Behauptungen auf, haeufig offensichtlich aufgrund von Halbwissen
                          (»der Interpreter muss die Funktion jedesmal neu parsen«) und kannst nicht im geringsten
                          einen Beweis liefern, bist aber auch nicht bereit, das mal einzugestehen. Das geht mir auf
                          die Nerven.

                          Grüße,
                           CK

                          --
                          Sein oder nicht sein, das ist hier die Frage!
                          http://wwwtech.de/
                          1. Abend,

                            Du stellst jede Menge Behauptungen auf, haeufig offensichtlich aufgrund von Halbwissen
                            (»der Interpreter muss die Funktion jedesmal neu parsen«) und kannst nicht im geringsten
                            einen Beweis liefern, bist aber auch nicht bereit, das mal einzugestehen. Das geht mir auf
                            die Nerven.

                            Opfer nicht zu viel Zeit um Laien von der Richtigkeit zu überzeugen.
                            Die wirst Du sicherlich besser zu nutzen verstehen ;=)

                            MfG
                            Indigo

                  2. Hi,

                    Noe. Man kennt doch den Zeichensatz. Sowohl in Unicode als auch in Latin1 und Latin9 stehen
                    die Umlaut-Zeichen direkt hintereinander. Daraus laesst sich recht einfach ein Algorithmus
                    basteln, der wesentlich weniger aufwendig ist als Array kopieren Elemente durchlaufen, alle
                    Umlaute ersetzen, ...

                    Das hängt sehr stark davon ab, welche Zeichen berücksichtigt werden.

                    Klar, von E0 bis E6 stehen beispielsweise nur Zeichen, die auf dem kleinen a basieren.
                    Aber Zeichen, die auf dem kleinen a basieren, gibt es auch an den Codepoints 101, 103, 105, 1E1, 1E3 usw.
                    Also nicht direkt hintereinander ...

                    cu,
                    Andreas

                    --
                    Warum nennt sich Andreas hier MudGuard?
                    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
                    1. Hallo MudGuard,

                      Klar, von E0 bis E6 stehen beispielsweise nur Zeichen, die auf dem kleinen a basieren.
                      Aber Zeichen, die auf dem kleinen a basieren, gibt es auch an den Codepoints 101, 103,
                      105, 1E1, 1E3 usw.
                      Also nicht direkt hintereinander ...

                      Zugegeben, es kann auch kompliziert werden. Trotzdem kann man einen solchen Algorithmus
                      sehr performant implementieren (ein Tabellen-Lookup kostet fast nichts).

                      Grüße,
                       CK

                      --
                      Fatal! Ich kann kein Reserve-Offizier mehr sein!
                      http://wwwtech.de/
                      1. Hi,

                        Zugegeben, es kann auch kompliziert werden. Trotzdem kann man einen solchen Algorithmus
                        sehr performant implementieren (ein Tabellen-Lookup kostet fast nichts).

                        Die Frage ist nur, ob die dazu notwendige Tabelle nicht zu groß wird

                        cu,
                        Andreas

                        --
                        Warum nennt sich Andreas hier MudGuard?
                        Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
          2. Hello,

            Darum ging es ja nicht.

            Nein, es ging auch nicht um die Ermittlung der Keys (sieh Posting von Patrick).
            Es ging einzig und alleine darum, eine Wertemenge nach einem alternate collating key zu sortieren (das war bestimmt der beste Vorschalg) oder aber ein einfches Verfahren zu nutzen, das keine Internpretation pro Element erforderlich machr (so wie usort das tut).

            Ich verstehe dieses neumodische Zeugs zwar nicht (*g*), aber die klassische Betrachtungsweise mit der Entwicklungsmethode (Rückführung aller Operationen auf die tatsächlichen Prozessor-Opeationen und die von ihnen benötigten Taktzyklen) ist mMn immer noch die genaueste.

            Du hast In deiner Aufwandsanalyse jedenfalls den größten Teil unterschlagen oder aber das Analyseverfahren als solches taugt nichts ;-)

            Wäre aber trotzdem nett, wenn Du nochmal einen guten Link auf "Aufwandsanalyse" zur Verfügung hättest. Man soll ja nicht borniert bleiben...

            Harzliche Grüße aus http://www.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
            1. Hallo Tom,

              [...] das keine Internpretation pro Element erforderlich machr (so wie usort das tut).

              *rotfl* Du glaubst doch wohl nicht, dass die anderen Sortierungs-Verfahren anders arbeiten?

              Du hast In deiner Aufwandsanalyse jedenfalls den größten Teil unterschlagen oder aber das
              Analyseverfahren als solches taugt nichts ;-)

              Weder, noch. Die Aufwandsanalyse war nicht beliebig genau, aber sie war genau genug
              herauszustellen, dass deine Methode ein Vielfaches an Aufwand kostet. Wenn du anderer
              Meinung bist, kannst du mir ja gerne mal das Gegenteil darlegen -- bisher kam von dir genau
              gar nichts in der Richtung.

              Wäre aber trotzdem nett, wenn Du nochmal einen guten Link auf "Aufwandsanalyse" zur
              Verfügung hättest. Man soll ja nicht borniert bleiben...

              Hasi, die Aufwandsanalyse ist eines der Grundlegenden Verfahren zur Beurteilung der
              Qualitaet eines Algorithmus. Und erzaehl mir nichts von »neumodischem Zeug«, das Verfahren
              wird seit den Anfaengen der Informatik eingesetzt. Die Komplexitätstheorie
              ist eine Wissenschaft älter als die Informatik.

              Grüße,
               CK

              --
              Wenn auf Erden alle das Schoene als schoen erkennen, so ist dadurch schon das Haessliche bestimmt.
              http://wwwtech.de/
              1. Hello,

                Hallo Tom,

                [...] das keine Internpretation pro Element erforderlich machr (so wie usort das tut).

                *rotfl* Du glaubst doch wohl nicht, dass die anderen Sortierungs-Verfahren anders arbeiten?

                Aber bitte nicht wegreiten jetzt. ;-)

                Ja. Die müssen die Funktion, die man usort an die Schleife übergibt, nicht bei jedem Durchlauf neu parsen, da sie mit einer compilierten Funktionen arbeiten, die nur eine statische Wertemenge oder statische Parameter übernimmt. Die Parameter in usort() sind aber dynamisch und müssen daher bei jedem Schleifendurchlauf neu geparst werden.

                Hasi,

                Du bist immer so lieb zu mir. Kann ich dafür mal einen ausgeben?

                Komplexitätstheorie

                Und danke für den Link. Ich habe ja leider schon Probleme, wenn ich so Fremdworte wie 'deterministisch' und 'komplex' auf deutsch übersetzen soll und nicht die Floskel 'das kommt auf den Kontext an' benutzen darf.

                Harzliche Grüße aus http://www.annerschbarrich.de

                Tom

                --
                Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                Nur selber lernen macht schlau
                1. Hallo Tom,

                  Ja. Die müssen die Funktion, die man usort an die Schleife übergibt, nicht bei jedem
                  Durchlauf neu parsen, da sie mit einer compilierten Funktionen arbeiten, die nur eine
                  statische Wertemenge oder statische Parameter übernimmt. Die Parameter in usort() sind
                  aber dynamisch und müssen daher bei jedem Schleifendurchlauf neu geparst werden.

                  Bitte, Tom, lese dir die Grundlagen zu Compiler- und Interpreterbau an, bevor du hier
                  irgendwelche wilden Behauptungen aufstellst. Das ist ja wirklich grauslig, was du hier
                  von dir gibst.

                  Komplexitätstheorie

                  Und danke für den Link. Ich habe ja leider schon Probleme, wenn ich so Fremdworte wie
                  'deterministisch' und 'komplex' auf deutsch übersetzen soll und nicht die Floskel 'das
                  kommt auf den Kontext an' benutzen darf.

                  Wie willst du die Komplexitaet von Algorithmen beurteilen, wenn du keine Ahnung von
                  Komplexitaetstheorie hast?

                  Grüße,
                   CK

                  --
                  Beware Evildoers for my deed is done and every little damsel in distress will be shelted!
                  http://wwwtech.de/
                  1. Hello,

                    Bitte, Tom, lese dir die Grundlagen zu Compiler- und Interpreterbau an, bevor du hier
                    irgendwelche wilden Behauptungen aufstellst. Das ist ja wirklich grauslig, was du hier
                    von dir gibst.

                    Was ist denn gruselig?
                    Kannst Du mal die Gemeinplätze verlassen, und konkret werden?
                    Dann haben wir alle was davon. Dein Denkmal gönne ich Dir dann erst recht!

                    Ich denke, dass es sich gerade für einen (bisher) hochgeschätzten wesentlichen Mitbetreiber eines Fachforums nicht geziemt, bei durchaus fortgeschrittenen Fragen von ober auf die Leute zu spucken, die eine solche stellen!

                    Selbstverständlich greife ich Deine Hinweise auf. Darum bin ich ja hier. Aber Du musst sie bitteschön auch geben.

                    Komplexitätstheorie

                    Und danke für den Link. Ich habe ja leider schon Probleme, wenn ich so Fremdworte wie
                    'deterministisch' und 'komplex' auf deutsch übersetzen soll und nicht die Floskel 'das
                    kommt auf den Kontext an' benutzen darf.

                    Wie willst du die Komplexitaet von Algorithmen beurteilen, wenn du keine Ahnung von
                    Komplexitaetstheorie hast?

                    Ich mag die empirische Methode lieber. Das stumpfe Übernehmen irgendwelcher (wenn auch anerkannter) Theorien, die aber ihre Grenzen für die Gültigkeit haben (die Du nicht beachtet hast -> Random Access liegt in Wirlichkeit bei verketteten Listen nicht vor) finde ich 'unsportlich'.

                    Harzliche Grüße aus http://www.annerschbarrich.de

                    Tom

                    --
                    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                    Nur selber lernen macht schlau
                    1. Hallo Tom,

                      Bitte, Tom, lese dir die Grundlagen zu Compiler- und Interpreterbau an, bevor du hier
                      irgendwelche wilden Behauptungen aufstellst. Das ist ja wirklich grauslig, was du hier
                      von dir gibst.

                      Was ist denn gruselig?

                      Deine Aussage. Wie gesagt, bitte befasse dich mit den Grundlagen bevor du Behauptungen
                      aufstellst -- oder lass dieselben.

                      Kannst Du mal die Gemeinplätze verlassen, und konkret werden?

                      _Natuerlich_ muss der Interpreter _nicht_ die Funktion jedesmal neu parsen. Das geschieht
                      einmal, dann nicht wieder.

                      Komplexitätstheorie

                      Und danke für den Link. Ich habe ja leider schon Probleme, wenn ich so Fremdworte wie
                      'deterministisch' und 'komplex' auf deutsch übersetzen soll und nicht die Floskel 'das
                      kommt auf den Kontext an' benutzen darf.

                      Wie willst du die Komplexitaet von Algorithmen beurteilen, wenn du keine Ahnung von
                      Komplexitaetstheorie hast?

                      Ich mag die empirische Methode lieber.

                      Du meinst, du probierst lieber aus.

                      Das stumpfe Übernehmen irgendwelcher (wenn auch anerkannter) Theorien, die aber ihre
                      Grenzen für die Gültigkeit haben

                      Wie willst du beurteilen, ob eine Theorie ihre Grenzen hat, wenn du sie nicht kennst?

                      (die Du nicht beachtet hast -> Random Access liegt in Wirlichkeit bei verketteten Listen
                      nicht vor) finde ich 'unsportlich'.

                      PHP benutzt bei Arrays keine verketteten Listen, sondern Hashtables. Und um die Reihenfolge
                      zu speichern, wird in der Tat eine Liste benutzt, die vor der Sortierung in einen Array
                      umgewandet wird:

                      arTmp = (Bucket **) pemalloc(ht->nNumOfElements * sizeof(Bucket *), ht->persistent);
                        if (!arTmp) {
                          return FAILURE;
                        }
                        p = ht->pListHead;
                        i = 0;
                        while (p) {
                          arTmp[i] = p;
                          p = p->pListNext;
                          i++;
                        }

                      Du siehst, ich weiss durchaus, wie PHP intern arbeitet. Und unterschlagen habe ich da gar
                      nichts.

                      Grüße,
                       CK

                      --
                      Der Verstand ist der Hausherr, der Koerper sein Gast.
                      http://wwwtech.de/
                      1. Hello,

                        arTmp = (Bucket **) pemalloc(ht->nNumOfElements * sizeof(Bucket *), ht->persistent);

                        was macht denn wohl pemalloc()?

                        if (!arTmp) {
                            return FAILURE;
                          }
                          p = ht->pListHead;
                          i = 0;
                          while (p) {
                            arTmp[i] = p;

                        p = p->pListNext;

                        Was ist denn das?

                        i++;
                          }

                        Du siehst, ich weiss durchaus, wie PHP intern arbeitet. Und unterschlagen habe ich da gar
                        nichts.

                        Du weißt aber scheinbar nicht, wer hier heute alles sitzt und sich Deine Antworten anschaut.

                        *gg*

                        Harzliche Grüße aus http://www.annerschbarrich.de

                        Tom

                        --
                        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                        Nur selber lernen macht schlau
                        1. Hallo Tom,

                          Du weißt aber scheinbar nicht, wer hier heute alles sitzt und sich Deine Antworten
                          anschaut.

                          Ich glaube eher, du hast meine Antwort nicht verstanden. Ich sagte doch bereits: um die
                          Reihenfolge zu speichern benutzt PHP eine Liste, die vor dem sortieren in einen temporaeren
                          Array umgewandelt wird.

                          Grüße,
                           CK

                          --
                          "Ich muss auflegen, mein Essen ist gleich fertig."
                          "Oh, was gibt 's denn?"
                          "Hmm. Die Packung liegt schon im Muell, keine Ahnung.
                          http://wwwtech.de/
                          1. Hello,

                            Ich glaube eher, du hast meine Antwort nicht verstanden. Ich sagte doch bereits: um die
                            Reihenfolge zu speichern benutzt PHP eine Liste, die vor dem sortieren in einen temporaeren
                            Array umgewandelt wird.

                            Schon wieder ein Regelverstoß, Du schlägst unter die Gürtellinie.
                            Wenn Du nicht die Gesellschaftsregeln einhältst, dann wirst Du disqualifiziert.

                            Das beantortet aber nicht die Frage, was

                            pemalloc()

                            und

                            p = p->pListNext;

                            denn wohl bedeuten könnten.
                            Ich tippe mal auf eine verkettet Liste.
                            Und Du hast ja in einem der Postimngs behauptet, dass PHP sowasn nicht bemnutzt.
                            Und wenn Du auch noch das Stück Quellcode für ein PHP-Array bereitstellen würdest, fände ich das fair. Wenn ich darin keine verkettete Liste oder Baumstruktur erkennen kann, entschuldige ich mich auch bei Dir, dass ich Dir nicht vertraut habe. Versprochen!

                            Und nun nochmal: Wie funktioniert ein echter Quicksort mit einer verketteten Liste? Müsste der nicht direct random access haben?

                            Ist ein ein Bubble  bei serial access nicht der schnellere Algorithmus?

                            Harzliche Grüße aus http://www.annerschbarrich.de

                            Tom

                            --
                            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                            Nur selber lernen macht schlau
                            1. Hallo Tom,

                              Das beantortet aber nicht die Frage, was

                              pemalloc()

                              Speicher alloziieren.

                              und

                              p = p->pListNext;

                              denn wohl bedeuten könnten.
                              Ich tippe mal auf eine verkettet Liste.

                              *seufz* Tom, ich erklaere es dir jetzt noch einmal:

                              PHP arbeitet intern nur mit Hashes anstelle von Arrays. Jeder Array ist ein Hash, es gibt
                              keinen Array. Da allerdings Hashes dummerweise das Problem haben, dass die Reihenfolge der
                              Keys nicht gewahrt bleibt, wird diese Reihenfolge, ja, genau, in einer Liste gespeichert.
                              Diese Liste wird allerdings, um sie zu sortieren, in einen Array (auf C-Ebene) umgewandelt
                              (das macht das kleine Code-Stueck, dass ich dir gezeigt habe). Der wird dann sortiert.
                              Danach wird daraus wieder eine Liste.

                              Und Du hast ja in einem der Postimngs behauptet, dass PHP sowasn nicht bemnutzt.

                              Nein, ich sagte, PHP benutzt fuer Arrays keine Listen. Der Zugriff auf die Elemente
                              geschieht ueber eine Hash-Tabelle.

                              Und wenn Du auch noch das Stück Quellcode für ein PHP-Array bereitstellen würdest, fände
                              ich das fair. Wenn ich darin keine verkettete Liste oder Baumstruktur erkennen kann,
                              entschuldige ich mich auch bei Dir, dass ich Dir nicht vertraut habe. Versprochen!

                              Warum guckst du dir nicht selber den Sourcecode an? Ich sage nur soviel: der interne
                              Datentyp fuer einen PHP-Array ist HashTable. Die Informationen dazu findest du in
                              ext/standard/array.c und in Zend/zend_hash.c

                              Und nun nochmal: Wie funktioniert ein echter Quicksort mit einer verketteten Liste?
                              Müsste der nicht direct random access haben?

                              Quicksort braucht direkten Zugriff auf jedes Element um performant zu bleiben, ja. Deshalb
                              wird auch nicht mit einer Liste gearbeitet, wie ich dir ja in diesem Posting zum dritten
                              mal dargelegt habe.

                              Grüße,
                               CK

                              --
                              Wenn der Schüler bereit ist, erscheint der Meister.
                              http://wwwtech.de/
                              1. Hello,

                                Das beantortet aber nicht die Frage, was

                                pemalloc()

                                Speicher alloziieren.

                                Ja. Und ist das eine statische Speicherbelegung oder eine, die während der Laufzeit stattfindet?
                                Kann man dem Betriebssystem vorschreiben, die angeforderten Speicherblöcke direkt hintereinander anzuorden und über EINEN einheitlichen Descriptor zugänglich zu machen?

                                p = p->pListNext;

                                denn wohl bedeuten könnten.
                                Ich tippe mal auf eine verkettet Liste.

                                *seufz* Tom, ich erklaere es dir jetzt noch einmal:

                                Ja, das schätze ich so an Dir. Deine Geduld und Güte...

                                PHP arbeitet intern nur mit Hashes

                                Wie ist denn so ein Hash aufgebaut?

                                anstelle von Arrays. Jeder Array ist ein Hash, es gibt

                                Was verstehst Du unter einem "Array"?
                                Ich verstehe darunter eine geschlossene statische Speicherstruktuer gleicher Datentypen oder oder wiederkehrender Datenmuster.

                                keinen Array. Da allerdings Hashes dummerweise das Problem haben,

                                Ach, Hashes haben ein Problem?

                                dass die Reihenfolge der
                                Keys nicht gewahrt bleibt,

                                Woran liegt das?
                                Wie liegen denn die 'Hashes' im Speicher und wie wird auf jedes einzelne ihrer Elemente gezielt zugegriffen?

                                wird diese Reihenfolge, ja, genau, in einer Liste gespeichert.

                                Also doch eine Liste? Du sagtest doch noch, PHP benutz für 'Arrays' keine Listen, sondern 'Hashes'
                                Das kommt mir nun langsam vor, wie Verarschung. Muss ich mal so deutsch und allgemeinverständlich, ganz ohne Frendworte, ausdrücken. ;-)

                                Diese Liste wird allerdings, um sie zu sortieren, in einen Array

                                der ja keine verkettete Struktur ist, sondern eine geschlossene Speicherstruktur?

                                (auf C-Ebene) umgewandelt
                                (das macht das kleine Code-Stueck, dass ich dir gezeigt habe). Der wird dann sortiert.

                                Aber das kann nicht mit einem echten Quicksort sortiert werden!

                                Danach wird daraus wieder eine Liste.

                                Ich dachte, es ist eine Liste. Qozu sonst

                                malloc()

                                und

                                p =  p->pListNext;

                                ?

                                (Dieses Fragezeichen ist mir eine eigene Zeile wert!)

                                Und Du hast ja in einem der Postimngs behauptet, dass PHP sowasn nicht bemnutzt.

                                Nein, ich sagte, PHP benutzt fuer Arrays keine Listen. Der Zugriff auf die Elemente
                                geschieht ueber eine Hash-Tabelle.

                                Und George Busch hat den Irak nicht bombadiert. Das ist auch nicht gelogen!

                                (verzeih bitte den Vergleich, aber so versteht das der Enttarner vielleicht auch.

                                BTW: Die Genehmigung von der Staatsanwaltschaft ist inzwischen erteilt und muss nur noch mir und dem Arbeitgeber vom Enttarner rechtshändig zugestellt werden. Dann dürfen wir unsere Daten abgleichen, ohne uns strafbar zu machen. Die Ergebnsisse sind dann auch gerichtsverwertbar. Ich habe eine Menge dabei gelernt und war erstaunt, wie kooperativ die andere Firma ist.)

                                Und wenn Du auch noch das Stück Quellcode für ein PHP-Array bereitstellen würdest, fände
                                ich das fair. Wenn ich darin keine verkettete Liste oder Baumstruktur erkennen kann,
                                entschuldige ich mich auch bei Dir, dass ich Dir nicht vertraut habe. Versprochen!

                                Warum guckst du dir nicht selber den Sourcecode an? Ich sage nur soviel: der interne
                                Datentyp fuer einen PHP-Array ist HashTable. Die Informationen dazu findest du in
                                ext/standard/array.c und in Zend/zend_hash.c

                                Danke Christian. Das ist der Stil, den ich an Dir schätez. Into the Depth und Ruhe ist. Ich habe den Quellcode im Moment nicht in direktem Zugriff. Hatte ich aber, und ärgere mich in den letzten Tagen schon öfter darüber, dass es im Moment nicht so ist. Ich werde das aber gleich mal ändern.

                                Und nun nochmal: Wie funktioniert ein echter Quicksort mit einer verketteten Liste?
                                Müsste der nicht direct random access haben?

                                Quicksort braucht direkten Zugriff auf jedes Element um performant zu bleiben, ja. Deshalb
                                wird auch nicht mit einer Liste gearbeitet, wie ich dir ja in diesem Posting zum dritten
                                mal dargelegt habe.

                                Das werde ich nun versuchen nachzuvollziehen (da gebe ich mir gute bis sehr gute Chanchen, zur Not auch in Assembler) und dann auf mein Beispiel zu übertragen.

                                @Indigo: Ich empfinde es übrigens nicht als ehtenrührig, als 'Laie' bezeichnet zu werden. Die sogenannte 'Professionalität' trübt dieser Tage allzu oft den Blick für Innovation und Tatsächlichkeit, indem sie immer wieder auf 'alte Zöpfe' zurückgreift. Deren Gültigkeit wird aber immer kurzlebiger, je besser das medium 'Kommunikation für alle' wird. Das bedeutet nicht, dass ich gegen Traditionen wäre. Ich bin nur gegen die klassischen Kolonisierungsmethoden von Sklaventreibern!

                                Somit schließt sich der Kreis mal wider *g*

                                Harzliche Grüße aus http://www.annerschbarrich.de

                                Tom

                                --
                                Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                                Nur selber lernen macht schlau
                                1. Hallo Tom,

                                  Das beantortet aber nicht die Frage, was

                                  pemalloc()

                                  Speicher alloziieren.

                                  Ja. Und ist das eine statische Speicherbelegung oder eine, die während der Laufzeit
                                  stattfindet?

                                  man malloc():
                                  MALLOC(3)                  Linux Programmer's Manual                 MALLOC(3)

                                  NAME
                                         calloc, malloc, free, realloc - Allocate and free dynamic memory

                                  Kann man dem Betriebssystem vorschreiben, die angeforderten Speicherblöcke direkt
                                  hintereinander anzuorden und über EINEN einheitlichen Descriptor zugänglich zu machen?

                                  So ist es definiert, Tom. Wenn du Speicher mit *alloc() anforderst, bekommst du den
                                  entweder in einem zusammenhaengenden Block oder gar nicht. Im Falle von gar nicht wird
                                  nicht genug Speicher vorhanden gewesen sein.

                                  PHP arbeitet intern nur mit Hashes
                                  Wie ist denn so ein Hash aufgebaut?

                                  http://de.wikipedia.org/wiki/Hashtabelle

                                  anstelle von Arrays. Jeder Array ist ein Hash, es gibt

                                  Was verstehst Du unter einem "Array"?

                                  In diesem Kontext: http://www.php.net/manual/en/language.types.array.php

                                  dass die Reihenfolge der Keys nicht gewahrt bleibt,

                                  Woran liegt das?
                                  Wie liegen denn die 'Hashes' im Speicher und wie wird auf jedes einzelne ihrer Elemente
                                  gezielt zugegriffen?

                                  Hashes bzw. Hashtables stellen Tabellen dar. Die Position des Wertes in dieser Tabelle wird
                                  anhand einer Hash-Funktion aus dem Schluessel erstellt. Aber das steht ja auch in dem
                                  Link, den ich dir gegeben habe...

                                  Diese Liste wird allerdings, um sie zu sortieren, in einen Array

                                  der ja keine verkettete Struktur ist, sondern eine geschlossene Speicherstruktur?

                                  “geschlossene Speicherstruktur”? Ein Array auf C-Ebene ist ein zusammenhaengender Block im
                                  Speicher. Ein Array auf PHP-Ebene ist eine Hash-Tabelle.

                                  (auf C-Ebene) umgewandelt
                                  (das macht das kleine Code-Stueck, dass ich dir gezeigt habe). Der wird dann sortiert.

                                  Aber das kann nicht mit einem echten Quicksort sortiert werden!

                                  Selbstverstaendlich kann er. Das ist doch der “Trick” bei der PHP-Variante. Ein Array auf
                                  C-Ebene ist ein zusammenhaengender Speicherblock, ein Array auf PHP-Ebene ist eine
                                  Hash-Tabelle.

                                  Danach wird daraus wieder eine Liste.

                                  Ich dachte, es ist eine Liste.

                                  Ein Array auf C-Ebene ist ein zusammenhaengender Speicherblock, ein Array auf PHP-Ebene ist
                                  eine Hash-Tabelle.

                                  Grüße,
                                   CK

                                  --
                                  Der Verstand ist der Hausherr, der Koerper sein Gast.
                                  http://wwwtech.de/
                                  1. Hello,

                                    man malloc():
                                    MALLOC(3)                  Linux Programmer's Manual                 MALLOC(3)

                                    NAME
                                           calloc, malloc, free, realloc - Allocate and free dynamic memory

                                    Kann man dem Betriebssystem vorschreiben, die angeforderten Speicherblöcke direkt
                                    hintereinander anzuorden und über EINEN einheitlichen Descriptor zugänglich zu machen?

                                    So ist es definiert, Tom. Wenn du Speicher mit *alloc() anforderst, bekommst du den
                                    entweder in einem zusammenhaengenden Block oder gar nicht. Im Falle von gar nicht wird
                                    nicht genug Speicher vorhanden gewesen sein.

                                    Auch, wenn ich das in einer Schleife n Mal hinterneindander tue? Das war nämlich meine Frage!
                                    Wenn man Speicher anfeordert, ob es möglich sit, das Betriebssystem dazu zu besegen, die einzelnen Anforderungen auf EINEM einheitlichen Descriptor zu sammeln.

                                    Lies bitte meine Antworten demnächst so, als dass man auch mitdenken muss. Ich dachte immer, dass es hier ein Fachforum und kein Flachforum wäre.

                                    Harzliche Grüße aus http://www.annerschbarrich.de

                                    Tom

                                    --
                                    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                                    Nur selber lernen macht schlau
                                    1. Hallo Tom,

                                      So ist es definiert, Tom. Wenn du Speicher mit *alloc() anforderst, bekommst du den
                                      entweder in einem zusammenhaengenden Block oder gar nicht. Im Falle von gar nicht wird
                                      nicht genug Speicher vorhanden gewesen sein.

                                      Auch, wenn ich das in einer Schleife n Mal hinterneindander tue?

                                      Wo passiert das? In dem Code-Stueck, dass ich gepostet habe naemlich nicht.

                                      Das war nämlich meine Frage!

                                      Dann frage das auch.

                                      Wenn man Speicher anfeordert, ob es möglich sit, das Betriebssystem dazu zu besegen, die
                                      einzelnen Anforderungen auf EINEM einheitlichen Descriptor zu sammeln.

                                      Ja, ist es. Dazu gibt es realloc().

                                      Lies bitte meine Antworten demnächst so, als dass man auch mitdenken muss.

                                      *rotfl* Also, Tom, jetzt hast du den Vogel abgeschossen.

                                      Grüße,
                                       CK

                                      --
                                      Das Sein entsteht aus dem Nicht-Sein.
                                      http://wwwtech.de/
                                      1. Hello,

                                        Wenn man Speicher anfordert, ob es möglich sit, das Betriebssystem dazu zu besegen, die
                                        einzelnen Anforderungen auf EINEM einheitlichen Descriptor zu sammeln.

                                        Ja, ist es. Dazu gibt es realloc().

                                        Und benutzt PHP diese Möglichkeit?
                                        Wieviel Kraft kostet es für das System, dieser Aufforderung nachzukommen.
                                        Könnte se sein, dass "moderne" Programme alle mindestens zehnmal so schnell auf derselben Hardware wären, wenn ´mehr Leute den Mut hätten, immer wieder nachzufragen, und 'Vögel abzuschießen'?

                                        Lies bitte meine Antworten demnächst so, als dass man auch mitdenken muss.

                                        *rotfl* Also, Tom, jetzt hast du den Vogel abgeschossen.

                                        Wenn es Dich belsutigt, ist das doch eine nette Auflockerung bei dem schwierigen Thema. ;-)

                                        Aber wir sind noch nicht am Ende angekommen!

                                        Harzliche Grüße aus http://www.annerschbarrich.de

                                        Tom

                                        --
                                        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                                        Nur selber lernen macht schlau
                                        1. Hallo Tom,

                                          Wenn man Speicher anfordert, ob es möglich sit, das Betriebssystem dazu zu besegen, die
                                          einzelnen Anforderungen auf EINEM einheitlichen Descriptor zu sammeln.

                                          Ja, ist es. Dazu gibt es realloc().

                                          Und benutzt PHP diese Möglichkeit?

                                          Sicher benutzt PHP auch realloc(). Aber in diesem Fall nicht. Wozu auch? Es wird nur ein
                                          Speicherblock angefordert, nicht mehrere. Aber das uebersiehst du ja mal wieder
                                          geflissentlich.

                                          Wieviel Kraft kostet es für das System, dieser Aufforderung nachzukommen.

                                          realloc() hat einen Aufwand von O(1) im guenstigsten Fall und einen Aufwand von O(n) im
                                          schlechtesten Fall.

                                          Lies bitte meine Antworten demnächst so, als dass man auch mitdenken muss.

                                          *rotfl* Also, Tom, jetzt hast du den Vogel abgeschossen.

                                          Wenn es Dich belsutigt, ist das doch eine nette Auflockerung bei dem schwierigen Thema. ;-)

                                          Ich finde es eher traurig.

                                          Grüße,
                                           CK

                                          --
                                          <zentrum> wie war noch mal die option in make.conf fuer das benutzen von pipes um das compile zu beschluenigen?
                                          <CK1> CFLAGS="-pipe"
                                          <torsten> Oder man frage einen Gentooer seiner Wahl, wie man 2 km Compilerswitches fuer seine CPU hinbekommt ;)
                                          http://wwwtech.de/
                                          1. Hello,

                                            Sicher benutzt PHP auch realloc(). Aber in diesem Fall nicht. Wozu auch? Es wird nur ein
                                            Speicherblock angefordert, nicht mehrere. Aber das uebersiehst du ja mal wieder
                                            geflissentlich.

                                            Wie kan denn PHP wissen, ob ein Speicherblock für ein Array ausreichend ist?
                                            Der Parser lässt also für jedes Array, das er aufbauen soll einen immer genügend großen Speicherblock an?

                                            DEN Rechner möchte ich sehen, der das aushalten würde.

                                            Man könnte natürlich bei einer intelligenten Programmierung für JEDES Array, dass aufgebaut werden soll, erstmal sämlichen verfügbaren Speicher anfordern, das Array als Nicht-Liste statisch aufbauen, den restlichen Speicher wieder an das Betriebssystem zurü+ckgeben und dann dann das nächste Array bearbeiten.

                                            Nur Scheiße, wenn dann in einer Funktion oder einer sonst späterern Stelle in das Array noch ein Wert eingefügt werden muss. das ist ja ein Standardfall!

                                            Ich finde es eher traurig.

                                            Was ist daran traurig, wenn ich Dich bitte, deine Antworten auf die Ebene der Allgemeinverständlichkeit unter Berücksichtigung der Zugrangsbedingugen zu diesem Forum zurückzuführen? Das ist doch extrem legitim!

                                            Wir betreiben hier ja schließlich keinen Privatchat, sondern unterhalten uns öffentlich über den Sinn und Unsinn von Theorie und Praxis der modernen InformationsTECHNIK, sloe der real existenten und nicht der aus irgendwelchen Theorien! Von deren Erreichung sind wir nämlich noch meilenweit entfernt.

                                            Ich bitte Dich daher nochmals, fair zu bleiben.

                                            Harzliche Grüße aus http://www.annerschbarrich.de

                                            Tom

                                            --
                                            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                                            Nur selber lernen macht schlau
                                            1. Hallo Tom,

                                              Sicher benutzt PHP auch realloc(). Aber in diesem Fall nicht. Wozu auch? Es wird nur ein
                                              Speicherblock angefordert, nicht mehrere. Aber das uebersiehst du ja mal wieder
                                              geflissentlich.

                                              Wie kan denn PHP wissen, ob ein Speicherblock für ein Array ausreichend ist?

                                              PHP weiss, wieviele Elemente der Array erhaelt. Der Rest ist rechnen:
                                              Anzahl_Elemente * sizeof(element_pointer). Aber das steht auch wieder in dem Stueck Code,
                                              was ich dir gepostet hab.

                                              Der Parser lässt also für jedes Array, das er aufbauen soll einen immer genügend großen
                                              Speicherblock an?

                                              Tom, was genau hast du an meinen Ausfuehrungen nicht verstanden?

                                              Also. Nochmal, extra fuer dich:

                                              Auf Script-Ebene arbeitet PHP statt mit ein Arrays mit Hashtables. Eine Hash-Tabelle ist
                                              mit Hilfe einer Hash-Funktion und einer Tabellen-Struktur realisiert: aus dem Schluessel
                                              wird eine Hash-Summe berechnet. Diese Hash-Summe bestimmt dann die Position des Elementes
                                              in der Tabelle. Durch diese Hash-Summe kann also direkt auf das Element zugegriffen werden.

                                              Da jedoch durch diese Speicherart den Nachteil hat, dass die Orginal-Reihenfolge der
                                              Schluessel verloren geht, speichert PHP diese Reihenfolge in einer Liste. Soll jetzt ein
                                              Array sortiert werden, so muss diese Liste sortiert werden. Da aber ein sortieren von
                                              Listen performant nicht moeglich ist (der Aufwand muesste immer O(n²) betragen), wird diese
                                              Liste erst umgewandelt in einen Array (auf C-Ebene, das heisst, es wird ein Speicherblock
                                              angefordert). Die Groesse des Arrays auf C-Ebene ergibt sich aus der Anzahl der Elemente
                                              multipliziert mit der Groesse eines Pointers auf ein Element der Liste. Dann wird (idR
                                              mithilfe eines Quicksort-Algorithmus) dieser Array sortiert. Ist der Sortier-Vorgang
                                              abgeschlossen, so wird der Array wieder umgewandelt in eine Liste und der fuer den Array
                                              benoetigte Speicher wieder freigegeben. So erhaelt man ein sortieres Array auf PHP-Ebene.

                                              Ich hoffe, du hast das jetzt verstanden. Ansonsten lies doch bitte mal ein Buch zur
                                              Algorithmenlehre, z. B. “Algorithmen in C” von Robert Sedgewick.

                                              Ich finde es eher traurig.

                                              Was ist daran traurig, wenn ich Dich bitte, deine Antworten auf die Ebene der
                                              Allgemeinverständlichkeit unter Berücksichtigung der Zugrangsbedingugen zu diesem Forum
                                              zurückzuführen? Das ist doch extrem legitim!

                                              _Diese_ Forderung ist legitim und voellig ok -- wenn du meinst, ich erklaere die
                                              Sachverhalte nicht ausfuehrlich genug, dann kann das durchaus sein, fuer mich ist vieles
                                              einfach offensichtlich. Aber du hast mir vorgeworfen, ich denke ueber deine Postings nicht
                                              nach und solle das doch bitte tun. Dazu kann man dann nur den Spruch mit dem Glashaus
                                              anbringen.

                                              Wir betreiben hier ja schließlich keinen Privatchat, sondern unterhalten uns
                                              öffentlich [...]

                                              Es waere schoen, wenn sich das auch in deiner Rechtschreibung niederschlagen wuerde, manche
                                              deiner Postings sind sehr schwer zu verstehen, weil sie vor Rechtschreibfehlern nur so
                                              strotzen.

                                              Ich bitte Dich daher nochmals, fair zu bleiben.

                                              Warum siehst du es als persoenlichen Angriff, wenn ich deine Aussagen widerlege und dir
                                              sage, dass du da Quatsch erzaehlst?

                                              Grüße,
                                               CK

                                              --
                                              Der Mund ist das Portal zum Unglück.
                                              http://wwwtech.de/
                                              1. Hello,

                                                PHP weiss, wieviele Elemente der Array erhaelt. Der Rest ist rechnen:
                                                Anzahl_Elemente * sizeof(element_pointer). Aber das steht auch wieder in dem Stueck Code,
                                                was ich dir gepostet hab.

                                                Das ist gelinde gesagt gelogen.
                                                PHP-Arrays haben keine Typvorschrift.
                                                Ob ich da nun einen Integer oder einen BLOB drauf lege, ist in der PHP-Schicht egal

                                                STOP!

                                                Bevor Du schreibst, dass der Wert ja refenziert werden könnte und es sich bei der Keylist trotzdem noch um eine statische Speicherstruktur handeln würde....

                                                Für die Keys eines "Hashes" oder assoziativen PHP-Arrays gilt natürlich dasselbe!

                                                Der Parser lässt also für jedes Array, das er aufbauen soll einen immer genügend großen
                                                Speicherblock an?

                                                Tom, was genau hast du an meinen Ausfuehrungen nicht verstanden?

                                                [ohne Antwort, die wäre bestimmt ungerecht]

                                                Also. Nochmal, extra fuer dich:

                                                Auf Script-Ebene arbeitet PHP statt mit ein Arrays mit Hashtables. Eine Hash-Tabelle ist
                                                mit Hilfe einer Hash-Funktion und einer Tabellen-Struktur realisiert: aus dem Schluessel
                                                wird eine Hash-Summe berechnet. Diese Hash-Summe bestimmt dann die Position des Elementes
                                                in der Tabelle.

                                                Diese Tabelle ist also statisch und ein echtes Array im Speicher? Alle Elemente sind gleich groß? Der Zugriff auf jedes Element ist im direct random acces möglich?

                                                Durch diese Hash-Summe kann also direkt auf das Element zugegriffen werden.

                                                Diese "Summe" lässt sich also für jedes Element von Prozessor berechnen und muss nicht nachgeschaut werden? Also beginnt Element 23 (bei 1 angefangen zu zählen)  bei [Arraystart].[22*Elementgröße]

                                                Da jedoch durch diese Speicherart den Nachteil hat, dass die Orginal-Reihenfolge der
                                                Schluessel verloren geht,

                                                Wieso geht die verloren, wenn in statischen Speicherstrukturen abgelegt wird?

                                                speichert PHP diese Reihenfolge in einer Liste.

                                                Das sage ich doch die ganze Zeit. PHP kann keine Arrays ohne (verkettete) Listen!

                                                Soll jetzt ein
                                                Array sortiert werden, so muss diese Liste sortiert werden. Da aber ein sortieren von
                                                Listen performant nicht moeglich ist (der Aufwand muesste immer O(n²) betragen), wird diese
                                                Liste erst umgewandelt in einen Array (auf C-Ebene, das heisst, es wird ein Speicherblock
                                                angefordert).

                                                Nun kommen wir der Sache schon näher.

                                                Die Groesse des Arrays auf C-Ebene ergibt sich aus der Anzahl der Elemente
                                                multipliziert mit der Groesse eines Pointers auf ein Element der Liste.

                                                Das ist aber Unsinn. Denn es sollen nicht die Pointer der Liste sortiert werden, sondern die Keys des "Arrays", die aber Datenelemente der Speicherblöcke sind, auf die die Pointer verweisen, und ganz und gar nicht keine einheitliche Größe nicht haben.

                                                Dann wird (idR
                                                mithilfe eines Quicksort-Algorithmus) dieser Array sortiert.

                                                Also das Array of Pointer wird sortiert? Wem nützt das? Doch bestenfalls dem Betriebsssytem aber nicht der Anwendungsschicht.

                                                Ist der Sortier-Vorgang
                                                abgeschlossen, so wird der Array wieder umgewandelt in eine Liste und der fuer den Array
                                                benoetigte Speicher wieder freigegeben. So erhaelt man ein sortieres Array auf PHP-Ebene.

                                                Ich hoffe, du hast das jetzt verstanden. Ansonsten lies doch bitte mal ein Buch zur

                                                Nee, das habe ich beim besten Willen nicht verstanden.

                                                Ich hatte ja meine Begriffsdefinition für "Array" mitgeteilt und Du hast nicht widersprochen bisher.
                                                Sollten Deine und meine nun doch nicht übereinstimmen, fehlt in deiner Nomenklatur eben noch eine Schicht unten drunter, damit wir von derselben Sache sprechen.

                                                Algorithmenlehre, z. B. Algorithmen in C von Robert Sedgewick.

                                                Das werde ich mir leisten und lesen, wenn es denn gut ist. Das erinnert mich an die Frage "Was darf ein Programmierer kosten pro Stunde", da das schon das zweite anzuschaffende Buch auf meiner Liste ist und eine neue USV brauche ich auch noch diese Woche und zwei neue Festplatten.

                                                Ich finde es eher traurig.

                                                Was ist daran traurig, wenn ich Dich bitte, deine Antworten auf die Ebene der
                                                Allgemeinverständlichkeit unter Berücksichtigung der Zugrangsbedingugen zu diesem Forum
                                                zurückzuführen? Das ist doch extrem legitim!

                                                _Diese_ Forderung ist legitim und voellig ok -- wenn du meinst, ich erklaere die
                                                Sachverhalte nicht ausfuehrlich genug, dann kann das durchaus sein, fuer mich ist vieles
                                                einfach offensichtlich. Aber du hast mir vorgeworfen, ich denke ueber deine Postings nicht
                                                nach und solle das doch bitte tun. Dazu kann man dann nur den Spruch mit dem Glashaus
                                                anbringen.

                                                Ich schreibe ja nicht

                                                echo veryloud(shiftleft('Kfipwb'));

                                                bezüglich der Rechtschreibfehler werde ich mal in mich gehen, zumal es ja "nur" Vertipper sind

                                                Leider hat aber auch die Rechtschreibkorrektur noch iregendeine Macke. Ich habe sie nun eben wieder mal benutzt, und bei der Positionierung der Einfügungen und/oder Ersetzungen stimmt was nicht. Die Erzeugt Doppelungen oder Überschneidugen.  Das soll aber nun keine Ausrede sein. Ich werde das nochmal verfolgen und dann eine Nachticht im Bugtracker hinterlassen.

                                                Harzliche GrüHarzlichelink:http://www.annerschbarrich.de]

                                                Tom

                                                --
                                                FoTomchritt entsteht nur durch die Auseinandersetzung der Kreativen
                                                Nur selber lernen macht schlau
                                                1. Hallo Tom,

                                                  PHP weiss, wieviele Elemente der Array erhaelt. Der Rest ist rechnen:
                                                  Anzahl_Elemente * sizeof(element_pointer). Aber das steht auch wieder in dem Stueck Code,
                                                  was ich dir gepostet hab.

                                                  Das ist gelinde gesagt gelogen.

                                                  Ach? Dann zeige mir doch bitte das Gegenteil. Siehst du, wieder dasselbe, was ich dir
                                                  vorhin schon vorwarf: anstatt Argumente zu bringen sagst du nur “du hast Unrecht, ich habe
                                                  Recht”. Ich habe dir mit Hilfe des Code-Stuecks _gezeigt_, dass es so ist:

                                                  arTmp = (Bucket **) pemalloc(ht->nNumOfElements * sizeof(Bucket *), ht->persistent);

                                                  nNumOfElements ist sogar ein selbstbeschreibender Name. Was daran jetzt gelogen sein soll,
                                                  ist mir schleierhaft. Es ist so und basta.

                                                  PHP-Arrays haben keine Typvorschrift.

                                                  Ja, eh, und? Was hat das eine mit dem anderen zu tun?

                                                  Ob ich da nun einen Integer oder einen BLOB drauf lege, ist in der PHP-Schicht egal

                                                  Du redest wirr. Ich habe langsam wirklich keine Lust mehr, mich mit dir zu unterhalten.

                                                  Auf Script-Ebene arbeitet PHP statt mit ein Arrays mit Hashtables. Eine Hash-Tabelle ist
                                                  mit Hilfe einer Hash-Funktion und einer Tabellen-Struktur realisiert: aus dem Schluessel
                                                  wird eine Hash-Summe berechnet. Diese Hash-Summe bestimmt dann die Position des Elementes
                                                  in der Tabelle.

                                                  Diese Tabelle ist also statisch und ein echtes Array im Speicher?

                                                  Nein, es ist dynamisch. Statisch hiesse, es liegt auf dem Stack und die Groesse kann sich
                                                  nicht aendern. Haettest du die Quellen gelesen, die ich dir genannt habe, haettest du
                                                  erfahren, dass sich die Groesse einer Hash-Tabelle durchaus aendern kann, je nach
                                                  Fuellungsgrad.

                                                  Alle Elemente sind gleich groß?

                                                  Da sie lediglich Pointer sind: ja.

                                                  Der Zugriff auf jedes Element ist im direct random acces möglich?

                                                  Das schrieb ich dir doch.

                                                  Durch diese Hash-Summe kann also direkt auf das Element zugegriffen werden.

                                                  Diese "Summe" lässt sich also für jedes Element von Prozessor berechnen und muss nicht
                                                  nachgeschaut werden?

                                                  Wie, nachgeschaut? Tom, hast du eigentlich gelesen, was ich dir gepostet habe?

                                                  Also beginnt Element 23 (bei 1 angefangen zu zählen)  bei [Arraystart].[22*Elementgröße]

                                                  Eine Hash-Tabelle ist _kein_ Array. Eine Hash-Tabelle ist eine Tabelle. Beispiel:

                                                  ------------------
                                                  | Index | value  |
                                                  |   1   |        |
                                                  |   2   |        |
                                                  |   3   |        |
                                                  |   4   |        |
                                                  |   5   |        |
                                                  |   6   |        |
                                                  |   .   |        |
                                                  |   .   |        |
                                                  |   .   |        |
                                                  |  20   |        |
                                                  |  21   |        |
                                                  |  22   |        |
                                                  |  23   |        |
                                                  |  24   |        |
                                                  ------------------

                                                  In dieser Tabelle soll nun ein Wert mit dem Schluessen 203 gespeichert werden. Angenommen,
                                                  die Hash-Funktion arbeitet ganz einfach indem sie Halb-Byte-Weise eine Summe bildet (rein
                                                  hypothetisch, in Wirklichkeit sind die Funktionen viel komplexer). 203 wird bei 16 Bit
                                                  intern so dargestellt:

                                                  00000000 11001011

                                                  Die Halb-Byteweise Summe Waere also 0000 + 0000 + 1100 + 1011 = 10111

                                                  10111 ist dezimal 23. Daraus laesst sich also schliessen: der Wert mit dem Key 203 wird an
                                                  Index 23 gespeichert. Also saehe die Tabelle danach so aus:

                                                  ------------------
                                                  | Index | value  |
                                                  |   1   |        |
                                                  |   2   |        |
                                                  |   3   |        |
                                                  |   4   |        |
                                                  |   5   |        |
                                                  |   6   |        |
                                                  |   .   |        |
                                                  |   .   |        |
                                                  |   .   |        |
                                                  |  20   |        |
                                                  |  21   |        |
                                                  |  22   |        |
                                                  |  23   |  Wert  |
                                                  |  24   |        |
                                                  ------------------

                                                  Da die Funktion immer gleich arbeitet, laesst sich jederzeit rekonstruieren, welcher Wert
                                                  dem Schluessel 203 zugeordnet ist, naemlich indem die Summe einfach nochmal gebildet wird.
                                                  Durch die Natur dieser Speicherart ist es allerdings nicht moeglich, nachzuvollziehen in
                                                  Welcher Reihenfolge die Werte eingefuegt wurden. Denn fuegt man nun einen Wert mit dem Key
                                                  200 hinzu (binaer dargestellt als 0000000011001000, daraus resultierende Hash-Summe 10100,
                                                  dezimal also 20), so ist dessen Position in der Tabelle _vor_ der Position des Wertes mit
                                                  dem Schluessel 203:

                                                  ------------------
                                                  | Index | value  |
                                                  |   1   |        |
                                                  |   2   |        |
                                                  |   3   |        |
                                                  |   4   |        |
                                                  |   5   |        |
                                                  |   6   |        |
                                                  |   .   |        |
                                                  |   .   |        |
                                                  |   .   |        |
                                                  |  20   |  Wert1 |
                                                  |  21   |        |
                                                  |  22   |        |
                                                  |  23   |  Wert  |
                                                  |  24   |        |
                                                  ------------------

                                                  Du siehst: es liegt in der Natur dieses Speicherverfahrens, dass die Reihenfolge der
                                                  Schluessel nicht erhalten bleibt.

                                                  speichert PHP diese Reihenfolge in einer Liste.

                                                  Das sage ich doch die ganze Zeit. PHP kann keine Arrays ohne (verkettete) Listen!

                                                  Nein, was du gesagt hast war folgendes: PHP speichert einen Array als verkettete Liste und
                                                  deshalb ist ein beliebiger Zugriff nicht moeglich. Das ist falsch.

                                                  Die Groesse des Arrays auf C-Ebene ergibt sich aus der Anzahl der Elemente
                                                  multipliziert mit der Groesse eines Pointers auf ein Element der Liste.

                                                  Das ist aber Unsinn.

                                                  Nein.

                                                  Denn es sollen nicht die Pointer der Liste sortiert werden, sondern die Keys des
                                                  "Arrays", die aber Datenelemente der Speicherblöcke sind, auf die die Pointer verweisen,
                                                  und ganz und gar nicht keine einheitliche Größe nicht haben.

                                                  Falsch. Ein String-Array in C sieht so aus:

                                                  | Index |     0      |    1       |     2      |
                                                  | Wert  | Pointer    | Pointer    | Pointer    |
                                                  |       | auf String | auf String | auf String |
                                                  |       | an Addr x  | an Addr y  | an Addr z  |

                                                  Addr x
                                                  Index | x+0 | x+1 | x+2 | x+3 | x+4 | x+5
                                                  Wert  | a   | b   | c   | d   | e   | \0

                                                  Synonym fuer die Addressen y und z. Die Pointer sind alle gleich gross, auf 32-Bit-Maschinen
                                                  sind sie 32 Bit (== 4 Byte) gross.

                                                  Dann wird (idR
                                                  mithilfe eines Quicksort-Algorithmus) dieser Array sortiert.

                                                  Also das Array of Pointer wird sortiert? Wem nützt das? Doch bestenfalls dem
                                                  Betriebsssytem aber nicht der Anwendungsschicht.

                                                  Falsch. Ein sortierter Array von Key-Pointern bedeutet, wir haben den Array auf PHP-Ebene
                                                  sortiert. Denn dieser sortierte Array auf C-Ebene wird wieder in seine
                                                  Listen-Repraesentation umgeformt.

                                                  Ich hatte ja meine Begriffsdefinition für "Array" mitgeteilt und Du hast nicht
                                                  widersprochen bisher.

                                                  Ich habe dir erklaert, was ein Array in den verschiedenen Schichten ist.

                                                  Grüße,
                                                   CK

                                                  --
                                                  Auf der ganzen Welt gibt es nichts Weicheres und Schwaecheres als Wasser. Doch in der Art, wie es dem Harten zusetzt, kommt nichts ihm gleich.
                                                  http://wwwtech.de/
                                                  1. Hello,

                                                    kurze Zwischennachricht...

                                                    Danke für die Info. Jetzt wird es wirklich inteessant.
                                                    Für heute muss ich mich da aber ausklinken. Also lass uns das bitte morgen fortsetzen.
                                                    Dafür bracueh ich Ruhe und im Moment habe ich Bereitsschaftsdienst. da klingelst alle paar Minuten das Telefon. Da bleibt nur Zeit für Minutenpostings.
                                                    Deins ist aber wesentlich mehr wert ;-)

                                                    Bis denne.

                                                    Harzliche Grüße aus http://www.annerschbarrich.de

                                                    Tom

                                                    --
                                                    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                                                    Nur selber lernen macht schlau
                                                2. Hallo Tom,

                                                  Algorithmenlehre, z. B. Algorithmen in C von Robert Sedgewick.

                                                  Das werde ich mir leisten und lesen, wenn es denn gut ist. Das erinnert mich an die Frage "Was darf ein Programmierer kosten pro Stunde", da das schon das zweite anzuschaffende Buch auf meiner Liste ist und eine neue USV brauche ich auch noch diese Woche und zwei neue Festplatten.

                                                  Der Sedgewick ist ausgezeichnet, nicht einfach nur gut. Meine Ausgabe hat 49,90 DM gekostet (1995).

                                                  Apropos USV, falls nur der Akku defekt ist, ist ein Austauschakku weit billiger.

                                                  Freundliche Grüsse,

                                                  Vinzenz

                                                  1. Hello,

                                                    Apropos USV, falls nur der Akku defekt ist, ist ein Austauschakku weit billiger.

                                                    Das habe ich schon angefragt. Kostet ca. 70 Euro der Spaß für eine APC 700 irgendwas.
                                                    Die hat aber mit den Akkus auch fünf Jahre durchgehalten.

                                                    Das Buch muss dann wohl sein.
                                                    Wäre gut, wenn ich etwas mehr Zeit hätte, es auch zu lesen und zu verstehen.

                                                    Im Moment stehe ich hier noch im Stress, eine Entwicklung zum Zwischenabschluss zu bringen und komme noch nicht mal dazu diesen Thread hier weiterzuverfolgen. Aber aufgeschoben ist nicht aufgehoben. Bis Mittwoch wird der ja hoffentlich noch da sein.

                                                    Harzliche Grüße aus http://www.annerschbarrich.de

                                                    Tom

                                                    --
                                                    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                                                    Nur selber lernen macht schlau
                                              2. Hallo Christian,

                                                Da aber ein sortieren von Listen performant nicht moeglich ist
                                                (der Aufwand muesste immer O(n²) betragen), ...

                                                Mit MergeSort kann man Listen ganz toll in O(n lg(n)) sortieren.
                                                Mit Arrays geht es natürlich deutlich schneller, aber in der O-Notation schlägt sich das nicht nieder.
                                                Das weißt Du bestimmt, aber ich merke es trozdem mal an, auch wenn ich nicht glaube, dass jemand diese Diskussion bis zu diesem Punkt lesen wird, wenn er sie später im Archiv findet ;-)

                                                Grüße

                                                Daniel

                                                1. Hallo Daniel,

                                                  Da aber ein sortieren von Listen performant nicht moeglich ist
                                                  (der Aufwand muesste immer O(n²) betragen), ...
                                                  Mit MergeSort kann man Listen ganz toll in O(n lg(n)) sortieren.

                                                  Stimmt. Aber da man keinen direkten Zugriff auf die Elemente hat duerfte das ganze trotzdem
                                                  einiges langsamer sein als die Methode, die die PHP-Jungs sich ausgesucht haben.

                                                  Mit Arrays geht es natürlich deutlich schneller, aber in der O-Notation schlägt sich das
                                                  nicht nieder.

                                                  Jepp.

                                                  Grüße,
                                                   CK

                                                  --
                                                  Sein oder nicht sein, das ist hier die Frage!
                                                  http://wwwtech.de/
                                2. BTW: Die Genehmigung von der Staatsanwaltschaft ist inzwischen
                                  erteilt und muss nur noch mir und dem Arbeitgeber vom Enttarner
                                  rechtshändig zugestellt werden. Dann dürfen wir unsere Daten
                                  abgleichen, ohne uns strafbar zu machen. Die Ergebnsisse sind dann
                                  auch gerichtsverwertbar. Ich habe eine Menge dabei gelernt und war
                                  erstaunt, wie kooperativ die andere Firma ist.)

                                  Hallo Tom.

                                  Ich habe mich bezüglich meines Verhaltens bei Dir und deiner Firma
                                  entschuldigt - zu sehen ist dieses in Eurem Gästebuch. Aber dennoch
                                  möchte ich es noch einmal hier tun, damit selfHTML auch davon
                                  Kenntnis bekommt:

                                  Tom, es tut mir leid!

                                  Angesichts der Tatsache, dass derzeit Arbeit zu haben einem riesen
                                  Glück gleichkommt - liegt es mir sehr am Herzen, wenn Du von deinem
                                  Vorhaben abkämest. Ich habe einen Fehler gemacht und mich zudem falsch
                                  verhalten.

                                  Hiermit verspreche ich Dir meine Einsicht und die
                                  Tatsache, dass das kein einzig weiteres Mal vorkommen wird.

                                  Daher meine Bitte an Dich: Steh bitte über meinem Verhalten und
                                  gefährde mir bitte nicht meinen Arbeitsplatz - er bedeutet zu viel
                                  für mich.

                                  Kannst Du Dich mit meiner Entschuldigung und meiner Bitte
                                  zufrieden stellen und die Sache damit 'vergessen' ?

                                  Danke

                                  In Einsicht
                                  (ex)Enttarner

                                  1. Hello,

                                    bei ikr ist bisher kein Entschuldigungsschreiben eigetroffen. Dazu gehört dann wohl eine rechtrsgültige Absenderadresse. Und auch Dein Chef wartet noch auf eine "Beichte". Wir haben usn darüber geeinigt, dass wir beide keine weiteren Schritte unternehmen werden, wenn Du echte Einsicht zeigst. Dazu gehört natürlich auch die Unterlassung von Wiederholungen.

                                    Ich schaue ale Montag nochmal in die Briefpost. Wenn der gelbe Brief eher da ist, als Deiner, dann ist es zu spät.

                                    Harzliche Grüße aus http://www.annerschbarrich.de

                                    Tom

                                    --
                                    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                                    Nur selber lernen macht schlau
                                    1. Hallo Tom,

                                      bei ikr ist bisher kein Entschuldigungsschreiben eigetroffen. Dazu
                                      gehört dann wohl eine rechtrsgültige Absenderadresse. Und auch Dein
                                      Chef wartet noch auf eine "Beichte". Wir haben usn darüber geeinigt,
                                      dass wir beide keine weiteren Schritte unternehmen werden, wenn Du
                                      echte Einsicht zeigst. Dazu gehört natürlich auch die Unterlassung
                                      von Wiederholungen.
                                      Ich schaue ale Montag nochmal in die Briefpost. Wenn der gelbe Brief
                                      eher da ist, als Deiner, dann ist es zu spät.

                                      Ich habe wenig Erfahrungen mit dem Thema. Gelbe Beriefe kenne ich noch
                                      aus der Schulzeit und da standen sie auch schon nie für etwas Gutes.

                                      Wir haben jetzt Samstag. Wie sollte ich das schaffen?
                                      Ist es nicht möglich, dass ich Die am Montag eine schriftliche
                                      Entschuldigung schicke und Du bis dahin keine weiteren Schritte -
                                      wie zB das Bescheid sagen meiner Firma - einleitest?

                                      Es läge mir sehr, sehr am Herzen.

                                      Danke
                                      (ex)Enttrarner

                                      1. Hello,

                                        Wir haben jetzt Samstag. Wie sollte ich das schaffen?
                                        Ist es nicht möglich, dass ich Die am Montag eine schriftliche
                                        Entschuldigung schicke und Du bis dahin keine weiteren Schritte -
                                        wie zB das Bescheid sagen meiner Firma - einleitest?

                                        Ich wohne zwar auf dem Berg, aber nicht auf dem Mond.
                                        Selbst wenn Du momentan auf einer Hallig wohnen würdest, wäre, wenn nicht gerade der blanke Hans regiert, der Brief am Montag bei mir in der Post, den Du heute noch in den Kasten steckst. Und Wenn er erst am Dienstag da ist, kann es j auch noch ausreichen.
                                        Außerdem bin ich ja auch bereit dazu, zu warten, wenn ich den Anruf von R.H oder seiner Sekretärin (oder einem Admin aus der Firma) bekomme, dass Du Dich persönlich bemüht hast.

                                        Mich hart der "Spaß" bisher fast 1000 Euro Vorschuss bei der Gerichtskasse gekostet!

                                        Harzliche Grüße aus http://www.annerschbarrich.de

                                        Tom

                                        --
                                        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                                        Nur selber lernen macht schlau
                                        1. Hallo Tom,

                                          Du wirst vermutlich wissen, dass du mir über den Weg meiner Arbeit am meißten Schaden zufügen
                                          kannst. Doch handelte ich als Privatperson, nicht im Namen meiner Firma. Ich war dummerweise
                                          mit der IP meiner Firma im Netz, allerdings geschah dieses außerhalb meiner Arbeitszeiten.

                                          Da wir uns aus meiner Sicht beide(!) zeitweise auf sehr niedrigem Niveau äußerten, war ich mir
                                          des möglichen Außmaßes nicht bewusst. Wäre ich mir das gewesen, so hättest Du nicht solche Antworten
                                          von mir erhalten.

                                          Es war nicht meine Absicht dir persönlich Schaden zuzufügen. Auch wenn dieses den Anschein gehabt
                                          haben sollte. Ich hatte einen schlechten Tag und habe dich zugegeben unnötig provoziert. Dass die
                                          Diskussion derart ausartete, hatte ich mir nicht vorgestellt.

                                          Um einer Zivilklage zu entgehen, werde ich mich morgen mit meinem Arbeitgeber zusammensetzen, um
                                          zumindest seintens meiner Firma Schadensbegrenzung zu gewährleisten. Und dieses mit der Bewusstheit,
                                          dass das für mich weitläufige Folgen haben kann. Folgen, die mir bereits sehr viel Kopfzerbrechen
                                          bereitet haben.

                                          Du kannst mir glauben, dass ich bereits - obwohl es bis dato noch keine berufliche oder anderweitige
                                          Konsequentzen für mich hatte - aus der Sache gelernt habe.

                                          Ich verspreche Dir - wie Du vielleicht bereits meinen Worten entnehmen kannst - dass es keine
                                          Wiederholungen geben wird und dass ich mich zukünftig vom SELFhtml-Forum fern halten werde.
                                          Zudem werde ich Dir, sollte es weiterhin dein Anliegen sein (wovon ich mal ausgehe), morgen
                                          eine schriftliche Entschuldigung zukommen lassen, und das mit meiner _gültigen_ Absenderadresse.

                                          Du bist Dir sicherlich der derzeitigen Arbeitslage unserer Branche bewusst - und, dass nicht jeder
                                          das Glück hat sein eigener Herr zu sein. Auf Grund dessen, was mein Arbeitsplatz und das Bild, welches
                                          die Firma von mir hat, mir persönlich bedeutet, würde ich dir ein kulantes Verhalten deinerseits
                                          sehr hoch anrechnen.

                                          Daher meine Bitte an Dich: können wir uns auf die schriftl. Entschuldigung und einer Unterlassungs-
                                          erklärung einigen? Zudem biete ich an, meine im Forum und Gästebuch geäußerten Aussagen öffentlich
                                          (im Forum und Bitworks-GB) und namentlich zu revidieren und mein Verhalten zu entschuldigen.

                                          Es läge mir sehr am Herzen, wenn du Dich damit vielleicht abfinden könntest,

                                          Hochachtungsvoll

                                          Christopher W.

                                          1. Des Name der oberen Message sollte Christopher W. lauten, und
                                            nicht Indigo. Bin durcheinandergekommen. Dabei gibt es doch die
                                            Option der Namensreservierung, damit sowas nicht gehen sollte ;-)
                                            Christopher W.

                                          2. Hi Indigo,

                                            Ich verspreche Dir - wie Du vielleicht bereits meinen Worten entnehmen kannst - dass es keine
                                            Wiederholungen geben wird

                                            das ist schön, womit ich die Sache als erledigt betrachten würde, nur als kleiner Hinweis an Tom. ;-)

                                            und dass ich mich zukünftig vom SELFhtml-Forum fern halten werde.

                                            Das ist allerdings schade.

                                            Grüße,
                                             Roland

                                          3. habe d'ehre

                                            dass ich mich zukünftig vom SELFhtml-Forum fern halten werde.

                                            bitworks != SELFHTML

                                            auch wenn durch die Subdomain "selfhtml.bitworks.de" der Eindruck entstehen koennte. ;-)

                                            man liest sich
                                            Wilhelm

                                            1. dass ich mich zukünftig vom SELFhtml-Forum fern halten werde.
                                              bitworks != SELFHTML

                                              ja, ist auch schwachsinn. er hatte mich nur so eingeschüchtert ;-)

                                              bin schließlich schon einige jahre länger dabei als dieser tom
                                              und werde deshalb wohl kaum dieses schöne forum verlassen ;-)
                                              mich ein wenig zivilisierter zu verhalten dürfte vollkommen ausreichen.

                                              danke euch für die "zur abwechslung" mal netten worte

                                              mfg
                                              icke

                2. Abend,

                  Ja. Die müssen die Funktion, die man usort an die Schleife übergibt, nicht bei jedem Durchlauf neu
                  parsen, da sie mit einer compilierten Funktionen arbeiten, die nur eine statische Wertemenge oder..

                  ja ne, is klar.. *rotfl*

                  MfG
                  Indigo

          3. Tag,

            hier hat sich ein Verpeiler eingeschlichen: der Aufwand zum Sortieren bei Quicksort ist
            natuerlich O(n * ld n), nicht O(ld n) -- das waere ja traumhaft.

            Grüße,
             CK

            --
            Wenn du gehst, gehe. Wenn du sitzt, sitze. Und vor allem: schwanke nicht!
            http://wwwtech.de/
            1. gudn tach!

              hier hat sich ein Verpeiler eingeschlichen: der Aufwand zum Sortieren bei Quicksort ist
              natuerlich O(n * ld n), nicht O(ld n) -- das waere ja traumhaft.

              quicksort liegt iirc im worst case in O(n^2) und bloss "im mittel" in O(n*log(n)).

              mergesort liegt bspw. in O(n*log(n)).

              prost
              seth

              1. Hallo seth,

                hier hat sich ein Verpeiler eingeschlichen: der Aufwand zum Sortieren bei Quicksort ist
                natuerlich O(n * ld n), nicht O(ld n) -- das waere ja traumhaft.

                quicksort liegt iirc im worst case in O(n^2) und bloss "im mittel" in O(n*log(n)).

                Quicksort liegt dann bei O(n²), wenn das Pivotelement stets so gewählt wird, dass es das
                groesste oder das kleinste Element des (Teil-)Arrays ist, also wenn als Pivot-Element
                immer das Element am Ende des (Teil-)Arrays gewaehlt wird und der zu sortierende Array
                schon sortiert ist. Und genau deshalb wird idR (auch in der von PHP verwendeten libc) kein
                reiner Quicksort, sondern ein Quicksort mit “Meridian aus drei“ oder ein “randomisierter
                Quicksort” eingesetzt. Das macht dann halt die Wahrscheinlichkeit von O(n²) so klein, dass
                man effektiv von O(n ld n) ausgehen kann.

                mergesort liegt bspw. in O(n*log(n)).

                Ja, aber Mergesort kann nicht “in place” arbeiten, die Speicherkomplexitaet ist daher
                hoeher (es werden temporaere Arrays benoetigt).

                Grüße,
                 CK

                --
                Mit einem Windhauch kannst du das Feuer loeschen. Mit einem Windhauch kannst du das Feuer entfachen.
                http://wwwtech.de/
                1. Hallo Christian,

                  Quicksort” eingesetzt. Das macht dann halt die Wahrscheinlichkeit von O(n²) so klein, dass
                  man effektiv von O(n ld n) ausgehen kann.

                  mergesort liegt bspw. in O(n*log(n)).

                  Ja, aber Mergesort kann nicht “in place” arbeiten, die Speicherkomplexitaet ist daher
                  hoeher (es werden temporaere Arrays benoetigt).

                  Heapsort benötigt ebenfalls nur O(n*log(n)), arbeitet "in place". Leider ist die innere Schleife aufwendiger als bei Quicksort :-(

                  Freundliche Grüsse,

                  Vinzenz

              2. Hello,

                hier hat sich ein Verpeiler eingeschlichen: der Aufwand zum Sortieren bei Quicksort ist
                natuerlich O(n * ld n), nicht O(ld n) -- das waere ja traumhaft.

                quicksort liegt iirc im worst case in O(n^2) und bloss "im mittel" in O(n*log(n)).

                mergesort liegt bspw. in O(n*log(n)).

                Danke.
                Und wann ist der Extremfall gegeben?
                Wenn die Collection bereits sortiert vorliegt!

                Da ist Bubble dann der Brüller.

                Harzliche Grüße aus http://www.annerschbarrich.de

                Tom

                --
                Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                Nur selber lernen macht schlau
    2. Hallo Tom,

      foreach($_b as $key => $val)   ## $val brauch ich nicht, aber anders bekommt man $key nicht

      Kennst du array_keys()?

      Viele Grüße
        Patrick Canterino

      --
      "Revolution in Deutschland? Das wird nie etwas, wenn diese Deutschen einen Bahnhof stürmen wollen, kaufen die sich noch eine Bahnsteigkarte!" (Lenin)
      1. Hello,

        foreach($_b as $key => $val)   ## $val brauch ich nicht, aber anders bekommt man $key nicht

        Kennst du array_keys()?

        Ja, aber was habe ich davon in foreach()?

        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        1. Hallo Tom,

          Kennst du array_keys()?

          Ja, aber was habe ich davon in foreach()?

          Du willst doch die Keys des Array haben, und genau die gibt array_keys() in Form eines Arrays zurück. Und dieses Array kannst du wunderbar in foreach() verwenden.

          Viele Grüße
            Patrick Canterino

          --
          "Revolution in Deutschland? Das wird nie etwas, wenn diese Deutschen einen Bahnhof stürmen wollen, kaufen die sich noch eine Bahnsteigkarte!" (Lenin)
          1. Hello,

            Kennst du array_keys()?

            Ja, aber was habe ich davon in foreach()?

            Du willst doch die Keys des Array haben, und genau die gibt array_keys() in Form eines Arrays zurück. Und dieses Array kannst du wunderbar in foreach() verwenden.

            Ach jetzt versteh ich Dich. Du willst also noch ein drittes Array erzeugen, in dem die Keys des zweiten drinstehen, um dann damit das erst auszugeben. Das ist aber unnötig, da die Ausgabe ohnehin mit foreach() als der im Moment schnellsten Spezialfunktion für PHP-Arrays (von den Schleifen) stattfindet. Warum sollte ich alse eine Extra-Referenz-Kette erzeugen?

            Harzliche Grüße aus http://www.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau