Doppelter Code



  • Kann jemand mal erklären, warum die Quellcode Abschnitte immer doppelt (im Quelltext der Seite) stehen?



  • wegen umzug dauert die antwort so lange:

    das hier ist aus einen thread im mod forum

    Gerard schrieb:

    Das besondere an unsern Code-Anzeigeboxen ist das sie den Thread in dem sie gepostet würden nicht verzehren, das dürfte allen bekannt sein.
    Problem ist nur der Preis den wird dafür zahlen, jede Code-Anzeigebox taucht gleich 3 mal im html Quelltext auf.
    z.b.

    int main()
    {
    }
    

    sehen tuten wir nur eine Code-Anzeigebox, aber im html Code stehen 3

    1. die eine die ihr sehen könnt
    2. eine um vertikal den Rest des Posting/Threads nach untern zu verschieben
    3. eine damit beim mozilla der horizontalen Scrollbalken auftaucht (erst heute zugekommen)

    Ihr Fragt euch wozu das ganze nötig ist? Daran sind die Browser schuld, wenn ein Workaround bei einen Browser geht, erzeugt dieses Workaround bei einen andern Browser wieder Probleme und benötigt wiederum ein Workaround usw.
    Oder meine Unwissenheit ist dran schuld.

    Naja egal, es geht um den Treffic und das dadurch bedingt verzögerte Anzeigen von Threads mit Code-Anzeigebereichen.

    1. wir schalten gzip ein
    2. ich lasse eine Code-Anzeigebox im html Code und die andern Zwei lasse ich per Javascript generieren
    3. wir lassen es so wie es ist

    für a Spricht das mein Html Quellcode nicht grade Redundanz frei ist, d.h. gzip kann gut ansetzen, außerdem bedarf es keine Code Veränderung und in dem phpbb Support Foren wird Grundsätzlich dazu geraten gzip zu aktivieren wenn möglich.

    Gegen Zwei spricht natürlich Javascript und die notwendige Implementierung.

    Lange Rede kurzer Sinn, ich will gzip an machen und wenn Jemand von euch ein Weg kennt um dann ein Speed vergleich anzustellen wäre das noch schöner.

    Shade Of Mine schrieb:

    mal ne ganz blöde Frage:

    Wozu brauchen wir den Code dreimal?
    wenn man ohne CSS surft schauts doch n bisschen komisch aus...

    aber der Code ansich steht doch nur 1x drinnen, oder? zumindest hier, in diesem Thread

    Wie macht das PHPBB denn das? ich kann mir nicht vorstellen, dass andere Foren den selben workaround brauchen... denn Code Highlight ist ja nun wirklich kein unique Feature...

    gegen gzip spricht die höhere Serverlast - wobei das bei uns kein Problem sein sollte.

    Mit JS generieren: wie sieht es dann aus, wenn der User kein JS aktiviert hat?

    Gerard schrieb:

    Shade Of Mine schrieb:

    mal ne ganz blöde Frage:

    Wozu brauchen wir den Code dreimal?
    wenn man ohne CSS surft schauts doch n bisschen komisch aus...

    Blöd ist sie nicht aber umständlich zu erklären,
    die erste Code-Box wird mit den CSS Attribut position:absolute; gezeichnet, das sorgt dafür das sie völlig losgelöst von ihren Nachbarn- und Eltern-Elementen gezeichnet wird, dadurch wird der Thread nicht in die Breite gezogen.
    Das ist aber auch ein Nachteil, denn in diesen Modus überlappt er seine Nachbar-Elemente, das Merken wir z.b. bei dem rechten Rand vom Thread.
    Auch nach unten hin Überdeckt die Code-Box den nachfolgenden Text.

    wenn ich dann so was poste
    [co]
    
    [/co]
    Dieser Text sollte eigentlich unter der Box sein.  
                
    Wird da raus:
    |------------------------|
    |                        |
    | Code:                  |
    | |------------------------------|
    | |                      |       |
    | | Dieser Text sollte   |       |
    | | eigentlich unter der |       |
    | | Box sein.            |       |
    | |------------------------------|
    |                        |
    |------------------------|
    

    Um das zu verhindern gibt es eine Zweite Code Box.
    Diese Zweite Code Box wird in einen normalen Modus gezeichnet, sie schiebt dadurch den nachfolgenden Text nach unten.
    Sie ist für uns nicht sichtbar, den sie befindet sich genau unter der ersten Code Box.
    Damit diese zweite Code-Box aber nicht den Thread in breite streckt hat sie zusätzlich die Attribute width: 140px; overflow:hidden (die 140 haben keine spezielle Bedeutung es hätte auch 130 sein könne).

    |------------------------|
    |                        |
    | Code:                  |
    | |------------------------------|
    | | Code  | Code Box 1   |       |
    | | Box 2 |              |       |
    | | *1    |              |       |
    | |       |              |       |
    | |------------------------------|
    |   Dieser Text sollte   |       
    |   eigentlich unter der |       
    |   Box sein.            |
    |                        |
    |------------------------|
    *1 nicht sichtbar da sie von Code-Box 1 Überdeckt wird.
    

    In der ersten Version der Code-Tags habe ich die zweite Code-Box einfach nur mit <br /> füllen lassen, genau so viele wie sie in der Ersten Code Box Zeilen gab.
    Solange der Code keine besondere Formatierung enthielt ging das gut, aber z.b. Fett-Formatierte Wörter machten die Zeilen höher und dann entsprach die Zeile nicht mehr einen <br />.
    Dieser Bug machte sich aber erst bei großen Code-Boxen bemerkbar.
    Darauf hin habe ich die Zweite Code-Box mit den Gleichen Code gefüllt, da dieser die gleichen Zeilen-Höhe-Veränderten-Formatierungen enthielt.

    Das war jetzt die Begründung für die zweite Code-Box.

    War das verständlich? Wenn ja kann ich die Dritte erklären.

    Shade Of Mine schrieb:

    aber der Code ansich steht doch nur 1x drinnen, oder? zumindest hier, in diesem Thread

    Sehen tuen wie eine Code-Box, Eingegeben ist auch nur eine, aber im Html-Quelltext sind 3 (natürlich mit Eltern Elementen die sie stark beeinflussen)

    Shade Of Mine schrieb:

    Wie macht das PHPBB denn das? ich kann mir nicht vorstellen, dass andere Foren den selben workaround brauchen... denn Code Highlight ist ja nun wirklich kein unique Feature...

    Aber die Nicht-Verzehrenden-Code-Anzeigeboxen sind einzigartig, andre geben sich mit Javascript zufrieden, andre wiederum mit overflow:scroll (IE und Alter-Browser User sehen in die Röhre), aber die meisten haben Einfach Zeilenumbruch in Code Boxen an.

    Shade Of Mine schrieb:

    gegen gzip spricht die höhere Serverlast - wobei das bei uns kein Problem sein sollte.

    Jo von einen Nadelöhr in das Andre, aber welches ist größer?

    Shade Of Mine schrieb:

    Mit JS generieren: wie sieht es dann aus, wenn der User kein JS aktiviert hat?

    `
    Entweder Zeilenumbrüche im Code oder der Thread wird genauso breit wie der Code Bereich.

    Shade Of Mine schrieb:

    Um ehrlich zu sein, finde ich deine Lösung n bisschen Brute-Force mäßig.

    Sicher, die nicht verzerrenden Boxen sind cool, aber der Preis ist doch ziemlich hoch - vorallem da es ohne CSS wohl nicht benutzbar ist, oder?

    Jo, habs gerade angesehen -> schaut schlimm aus

    Noch ne Frage:
    warum kannst du nicht einfach eine maximale Breite von 100% angeben, dann sollte es doch auf kein problem sein... denn der code wird vielleicht weiter nach rechts gehen, als erlaubt, aber der rest bricht trotzdem am zeilenende um.

    kingruedi schrieb:

    deswegen gibt es teilweise die Rendering Fehler beim Mozilla (die Schrift ist teilweise doppelt und verzogen, aber nach nem reload der Seite geht das und es tritt sehr selten auf (früher war das heufiger))

    Gerard schrieb:

    Shade Of Mine schrieb:

    Um ehrlich zu sein, finde ich deine Lösung n bisschen Brute-Force mäßig.

    Ich will ja auch keinen Blumentopf gewinnen, von der Implementierung ist sie wirklich schlimm aber von der usability denn andern Lösung weit voraus.

    Shade Of Mine schrieb:

    Sicher, die nicht verzerrenden Boxen sind cool, aber der Preis ist doch ziemlich hoch - vorallem da es ohne CSS wohl nicht benutzbar ist, oder?

    Jo, habs gerade angesehen -> schaut schlimm aus

    Die non-css Leute sind mir egal, erstens ist der Inhalt weiterhin nutzbar, wer ohne css surft weiß was er macht und weiß auch das es Nachteile gibt .
    Wie groß ist den die Gruppe der non-css Leute?
    Ja es tut mir Leid das Blinde den Code 3 mal vorgelesen bekommen.

    Shade Of Mine schrieb:

    Noch ne Frage:
    warum kannst du nicht einfach eine maximale Breite von 100% angeben, dann sollte es doch auf kein problem sein... denn der code wird vielleicht weiter nach rechts gehen, als erlaubt, aber der rest bricht trotzdem am zeilenende um.

    Von was soll ich die breite auch 100% stellen?

    kingruedi schrieb:

    deswegen gibt es teilweise die Rendering Fehler beim Mozilla (die Schrift ist teilweise doppelt und verzogen, aber nach nem reload der Seite geht das und es tritt sehr selten auf (früher war das heufiger))

    und die Smilies mussten auf 15x15 Pixel begrenz sein, aber beides ist in der dev Version Vergangenheit.

    Korbinian schrieb:

    mal ne andere ueberlegung: wie groß ist denn der overhead, der durch diese 2 zusaetzlichen boxen erzeugt wird? sind das 3 zeilen á 50 zeichen, oder sind das exakte kopien (sprich bei 1000 zeilen code -> 3000 zeilen insgesamt).
    man könnte in diesem fall den overhead einfach minimieren, indem man z.b. diese 2 zusaetzlichen boxen quelltextmaessig reduziert, sprich die nach-unten-schieb box nur mit soviel zeichen füllen, wies zeilen sind, dann hast im normalfall vielleicht 250 zeichen overhead, das ist ohne gzip o.ä. zu verkraften den ich.

    Gerard schrieb:

    @Marc++us habe etwas rum experiementiert, jetzt geht es doch wieder?

    @Korbinian aus 1000 zeilen code werden 3000. das problem wieso sich das nicht so einfach lösen löst:
    wenn in einer zeile etwas fett-formatiert ist dann wird die zeile höher, das wiederum liese sich lösen, dadurch das man alle formatierung einer zeile auf den einen char anwendet, aber wahscheinlich wirds so sein das ein etwas fettes in klein buchstaben die zeile nicht vergrößert usw. und jeder browser macht das natürlich anders

    --

    wenn ich bald keine lösung finde für die probleme die einige leute haben werde ich es per javascript aus/an machbar machen und dann kann ich das ganze gleich komplet aus javascript heraus machen (die zwei schieb-boxen werden dann auf der client seite erzeugt ohne treffic für uns)


Anmelden zum Antworten