Seite 3 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 31 bis 45 von 47
  1. #31
    Avatar von mikdoe
    mikdoe ist offline Administrator
    registriert
    01-05-2010
    Beiträge
    7.801

    AW: [Ajax] einfache Uhr mit serverseitiger Zeit

    Bitte, gern.

  2. #32
    Avatar von mikdoe
    mikdoe ist offline Administrator
    registriert
    01-05-2010
    Beiträge
    7.801

    AW: [Ajax] einfache Uhr mit serverseitiger Zeit

    Ganz wichtg, falls jemand diesen Code hier nutzt:
    In der function refreshServerTimePartial muss in der vorletzten Zeile bei dem Vergleich aus !== ein != gemacht werden!!!
    Sonst führen einziffrige Uhrzeiten (0 bis 9 Uhr) nämlich dazu, dass der Vergleich scheitert und die Uhr lädt ununterbrochen vom Server. Beispiel 7 Uhr: 07 !== 7 ist natürlich false!
    Ursache: Das zwei Zeilen drüber gemachte h='0'+h

    Ich habs in Beitrag #28 schon korrigiert.

    Boah hat mich das jetzt wochenlang gewurmt. Das Blöde ist, immer wenn ich die Debug Ausgaben gerade so halb drin hatte war es bereits 10 Uhr und der Fehler trat nicht mehr auf
    *KLATSCH BUMM BÄNG*

    Und wenn man dann nur in einem Fenster das Projekt offen hat merkt man das ja auch nicht unbedingt sofort.
    Heute hatte ich Glück, denn ich hab es gemerkt (da in 4 Tabs offen) und es war früh genug, also weit vor 10 Uhr
    Das deutsche Javascript Forum http://forum.jswelt.de http://forum.jswelt.de/images/logoJsWeltForumV4_32x22.png

  3. #33
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.751

    AW: [Ajax] einfache Uhr mit serverseitiger Zeit

    Oh nein. Das ist die falsche Stelle. Damit beseitigst du nur das Symptom. Das grundelegende Problem ist, dass Darstellung und Datenverwaltung vermischt sind bzw. in der falschen Reihenfolge aufgerufen werden.

    Code:
    	function refreshServerTimePartial(){
    		var now = new Date();
    		now.setTime(now.getTime() + offset);
    		var h = now.getHours();
    		var m = now.getMinutes();
    		if (h !== hours) { uhr(); }
    		else {window.setTimeout(refreshServerTimePartial,(60-now.getSeconds())*1000);}
    		if (h < 10) {h='0'+h}
    		if (m < 10) {m='0'+m}
    		jQuery('#maindatumzeit_zeit').html(h+':'+m);
    	}
    PS: hab' gerade auch erst gesehen, dass du den Array-Konstruktor verwendest... tztztz...

  4. #34
    SteelWheel ist offline Haudegen
    registriert
    18-07-2012
    Beiträge
    600

    AW: [Ajax] einfache Uhr mit serverseitiger Zeit

    Hallo zusammen,

    auch ich greife jetzt mal an, da ich zwei Dinge gesehen habe, die ich für "unrund" halte. Gut und wichtig wie richtig: Request pro Sekunde ist ein Todbringer ... die Lösung ist jetzt eigentlich ganz smart und schont Ressourcen des Servers. Und trotzdem mische ich mich ein - verflixxt!

    Ich habe in der mikdoe'schen Lösung zwei Dinge gesehen, die ich als "unperformant" einstufe - sorry, ist also nicht böse gemeint, aber wir haben auch die Ressource "Client", mit der man "direkt schonend" umgehen soll und muss. Grund meines Vetos ist nur die Art, wie der Quellcode geschrieben ist:

    Code:
    var requestTime = Date.now(),
    		offset = 0,
    		hours = 0,
    		tag = ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],
    		losgehts = function(data){ ... usw.
    Dass nicht jede Variable ein "var" braucht, wenn diese direkt aufeinander folgen, ist jetzt mal nur sekundär (verkleinert nur die auszuliefernde JS-Datei), ist aber Teil meines "Gemeckers". Aber das Array sollte nicht (!) mit "new Array" gebaut werden, sondern lediglich durch den Einsatz von "[]". Man sollte auch - aus Performance-Gründen - nicht "new Object" nehmen, sondern "{}" (nur mal als Vergleich). Sinn und Zweck sind schlichtweg Performance-Gründe im Client, da die Browser für "new Array" länger benötigen als für "[]" - obwohl das Ergebnis identisch ist. Vergleichbar wäre dies mit "array_push" statt "array[] = Wert", wenn einfach nur ein Wert angehängt werden soll (in PHP).

    Lasst mich noch ein Stück weiter ausholen:
    Statt "new RegExp()" sollte man bekanntlich (fiktiv) "/[a-z]/g" nehmen ...
    ... statt "new String" eben nur "string = ''" (gilt auch für new Number, new Boolean; also direkt zuweisen - nicht so bilden lassen!) ...
    und natürlich - findet man häufiger - nicht "throw new Error('gnarf')" sondern "throw { name: "Error", message: "gnarf"};" (oder: "throw Error('gnarf');")

    Fazit: Finger weg von den Build-In-Konstruktoren, da diese eine Web-App bremsen (= Flaschenhals)!

    Beste Grüße


    EDIT: Verlifxxt ... hatte noch was vergessen! Und zwar: setTimeout() in einem Browser wird nicht nach exakt "1000" ausgeführt! Es ist egal, welcher Browser - es ist ein Nährwert, mehr nicht!

  5. #35
    Avatar von mikdoe
    mikdoe ist offline Administrator
    registriert
    01-05-2010
    Beiträge
    7.801

    AW: [Ajax] einfache Uhr mit serverseitiger Zeit

    Danke euch beiden.
    Das deutsche Javascript Forum http://forum.jswelt.de http://forum.jswelt.de/images/logoJsWeltForumV4_32x22.png

  6. #36
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.751

    AW: [Ajax] einfache Uhr mit serverseitiger Zeit

    Zitat Zitat von SteelWheel Beitrag anzeigen
    und natürlich - findet man häufiger - nicht "throw new Error('gnarf')" sondern "throw { name: "Error", message: "gnarf"};" (oder: "throw Error('gnarf');")
    Wenn du ein generisches Objekt wirfst ist das aber was anderes als wenn du ein Error wirfst. Das kann man nicht einfach so austauschen.

    Zitat Zitat von SteelWheel Beitrag anzeigen
    Fazit: Finger weg von den Build-In-Konstruktoren, da diese eine Web-App bremsen (= Flaschenhals)!
    Auch das ist so nicht korrekt. So muss man manchmal den RegExp-Konstruktor verwende,n wenn man eine RegExp dynamisch aufbauen will und ein Date-Objekt kann man nur mit dem Konstruktor erzeugen.

    Aber bie Array, Object, Number, String und Boolean gebe ich dir recht, dass man davon die Hände lassen sollte. Aber nicht aus dem Grund, dass es langsamer ist (was es laut meinen Tests auch nicht ist), sondern weil es unerwartetes Verhalten zeigt.

    Zitat Zitat von SteelWheel Beitrag anzeigen
    EDIT: Verlifxxt ... hatte noch was vergessen! Und zwar: setTimeout() in einem Browser wird nicht nach exakt "1000" ausgeführt!
    Das ist uns klar. Was willst du uns damit sagen? Deswegen wir die Zeit ja auch über ein Date-Objekt berechnet... und hier ist es ja auch egal, wenn das Timeout mal etwas später kommt (früher kommt es ja nie).

  7. #37
    SteelWheel ist offline Haudegen
    registriert
    18-07-2012
    Beiträge
    600

    AW: [Ajax] einfache Uhr mit serverseitiger Zeit

    Hallo erneut,

    das ist keine These von mir, sondern von dem Herrn Stefanov, der seine Bücher bei O'Reilly (= "JavaScript Patterns") rausbringt. Da ich das kürzlich aufgesaugt habe, war es noch lebhaft im Gedächtnis. Ich schlage gern nach und lege die Seitenangabe vor. Wenn ich also dem Material von O'Reilly weniger Glauben solle, aber dafür bspw. Foren ... hmmm ... da komme ich in ein Dilemma.

    "den" kann auch anders gelesen werden - in Form von "den genannten" bzw. "diesen". Ich habe also nicht global von Build-In-Konstruktoren geschrieben, sondern in einem Fazit von denEN, die genannt sind.

    Ein dynamischer RegExp? Hatte ich noch nicht - würde mir nicht einmal ein (Praxis-)Beispiel für einfallen ... und "new Date" war in meiner Auflistung übrigens gar nicht bei.

    Was die "1000" anbelangt, hatte ich in diesem Thread - ich meine es war eine Frage vom mikdoe - gelesen, inwiefern diese Angabe "exakt" wäre. Eine Antwort scheine ich dann offenbar überlesen zu haben - dadurch hatte ich aber den Eindruck, dass die Frage nicht beantwortet wurde und erwähnte dies im Gesamtzusammenhang.

    Du spielst auf Error(), SyntaxError() und TypeError() an? Ich spreche aber von eigenen Fehlermeldungen als Beispiel und kann - mittels "throw" - meine Fehlermeldungen derart aufbohren, dass ich in der Tat das alles zeigen kann, was wirklich benötigt wird (bei "catch"). Habe mir jetzt mal das Buch geschnappt - das mit dem "throw" steht als Empfehlung auf Seite 53/54. Das Beispiel im Buch sieht so hierfür aus:

    Code:
    try {
      throw {
    	name: "MyErrorType", // custom error type
    	message: "oops", 
    	extra: "This was rather embarrassing",
    	remedy: genericErrorHanler // who should handle it
      };
    } catch(e){
    	// inform user ...
    	alert(e.message);
    	
    	e.remedy(); // calls genericErrorHandler()
    }
    Und auch das hier hatte ich vor längerer Zeit gelesen - das ist bei Stackoverflow bzgl. "Flaschenhals" (und nicht "unerwartetes Verhalten"). Sei bitte nicht böse, aber "Flaschenhals" trifft es wirklich.

    Gute Nacht.

  8. #38
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.667

    AW: [Ajax] einfache Uhr mit serverseitiger Zeit

    Zitat Zitat von kkapsner Beitrag anzeigen
    Aber bie Array, Object, Number, String und Boolean gebe ich dir recht, dass man davon die Hände lassen sollte. Aber nicht aus dem Grund, dass es langsamer ist (was es laut meinen Tests auch nicht ist), sondern weil es unerwartetes Verhalten zeigt.
    welches unerwartete verhalten?
    ja, langsammer ist es, aber das ist nicht erwähnenswert
    ob man deswegen ständig darauf hinweisen muss die literalschreibweise zu nutzen, ich weiss ja nicht...

    Zitat Zitat von SteelWheel Beitrag anzeigen
    Sei bitte nicht böse, aber "Flaschenhals" trifft es wirklich.
    Ähm... Flaschenhals? Das bezeichnest du als Flaschenhals?

  9. #39
    SteelWheel ist offline Haudegen
    registriert
    18-07-2012
    Beiträge
    600

    AW: [Ajax] einfache Uhr mit serverseitiger Zeit

    Hi hesst,

    ja, tue ich (und in Anführungszeichen), da ich das nicht als Ganzes betrachte, sondern immer nur als Teil des eigentlichen Gesamtprojektes. Dort gibt es auch noch (wieder) viele andere Teile, auf die man sehenden Auges direkt bei Produktion optimieren kann.

    Und ganz rudimentär wird eine Datei sogar "kleiner" (auch in Anführungszeichen, damit wir hier nicht von rauhen Mengen sprechen), wenn man die Literalschreibweise verwendet. Und kleine(re) Dateien? Da war ja auch noch was ...

    Ich meine es wirklich gar nicht böse, aber Optimierungen gehen so ziemlich überall! Und gerade im Client (noch eher beim Mobilgeräthype) sind performante Handlings einfach ein Muss.

    Viele Grüße

  10. #40
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.667

    AW: [Ajax] einfache Uhr mit serverseitiger Zeit

    Zitat Zitat von SteelWheel Beitrag anzeigen
    ja, tue ich (und in Anführungszeichen), da ich das nicht als Ganzes betrachte, sondern immer nur als Teil des eigentlichen Gesamtprojektes. Dort gibt es auch noch (wieder) viele andere Teile, auf die man sehenden Auges direkt bei Produktion optimieren kann.
    kein mensch optimiert an stellen, die niemals relevant werden können.
    wenn man 50 Millionen arrays pro sekunde mit new Array anlegen kann, spielt es keine rolle, wenn man mit literalschreibweise 90 Millionen anlegen könnte. das spielt erst dann eine rolle, wenn man in die nähe dieser größenordnung kommt bzw. sie überschreitet. dann ist es ein spezialfall der optimiert werden muss. und nur in spezialfällen macht optimierung sinn. optimierung auf gut glück bei nicht relevantem code ist sinnlos. optimiert wird, an stellen die problematisch SIND.

    Zitat Zitat von SteelWheel Beitrag anzeigen
    Und ganz rudimentär wird eine Datei sogar "kleiner" (auch in Anführungszeichen, damit wir hier nicht von rauhen Mengen sprechen), wenn man die Literalschreibweise verwendet. Und kleine(re) Dateien? Da war ja auch noch was ...
    wenn man meint, übertragungszeit einsparen zu müssen, jagd man das durch einen minimizer, da spielen die paar byte keine rolle. sinnvoller wäre es die anzahl der requests zu minimieren, als die größe des codes.

    Zitat Zitat von SteelWheel Beitrag anzeigen
    Ich meine es wirklich gar nicht böse,
    habe ich nicht behauptet, und ich meine es auch nicht böse, aber so

    Zitat Zitat von SteelWheel Beitrag anzeigen
    aber Optimierungen gehen so ziemlich überall!
    optimiert man nicht

  11. #41
    SteelWheel ist offline Haudegen
    registriert
    18-07-2012
    Beiträge
    600

    AW: [Ajax] einfache Uhr mit serverseitiger Zeit

    Mein Standpunkt ist ein ganz anderer - damit habe ich aber auch gar kein Problem (und soll hier auch keines darstellen). Denn ich gehe gar nicht konform mit "Optimierung nur in Spezialfällen" oder "bei nicht relevantem Code sinnlos". Auch ist der Minimizer eher was zum Einsparen von Leerzeichen, unnötigen Zeilenumbrüchen etc. - davon sprach ich aber nicht (der hat keinen Kontakt mit besagter Schreibweise; oder mein Minifier kann es nicht bzw. Du meinst was anderes). Ich für meinen Teil baue meinen Quellcode nicht "mal so" ("dreckig", da vermeintlich unrelevant) und einmal "high performant", da es vermeintlich Sinn ergibt. Allein hier wären es bereits zwei Handschriften - von einer Person. Stellt man sich dies nun in einer Agentur vor, ist man schnell bei Sätzen wie "wer hat denn den Mist zuletzt gebaut?!". (ohne Versionierung)

    Die "Anzahl Requests" ist was, da begegnen wir uns zumindest (erneut) auf einem Nenner. Und da gibt es noch mehr, worauf man - für gewöhnlich - zu achten hätte. Ob man's macht, ist jedem Dienstleister bzw. Freelancer oder Hobby-Coder selbst überlassen.

    Lass uns, hesst, also im gewohnt Guten auseinander gehen aus diesem Thread! Ich wollte niemanden Bekehren, sondern erwähnte nur die - zumindest für mich - empfohlene Schreibweise. Wir werden uns demnach einig mit dem Satz, dass viele Weg nach Rom führ(t)en ...

    Beste Grüße.

  12. #42
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.667

    AW: [Ajax] einfache Uhr mit serverseitiger Zeit

    Zitat Zitat von SteelWheel Beitrag anzeigen
    Auch ist der Minimizer eher was zum Einsparen von Leerzeichen, unnötigen Zeilenumbrüchen etc. - davon sprach ich aber nicht (der hat keinen Kontakt mit besagter Schreibweise; oder mein Minifier kann es nicht bzw. Du meinst was anderes).
    ein minimizer ersetzt funktionsnamen und variablennamen durch andere im idealfall 1 zeichen, entfern alle unnötigen leerzeichen. damit fallen deine paar zeichen überhaupt nicht mehr ins gewicht.
    und so entwickelt man ja auch nicht um zeichen zu sparen.

    Zitat Zitat von SteelWheel Beitrag anzeigen
    Ich für meinen Teil baue meinen Quellcode nicht "mal so" ("dreckig", da vermeintlich unrelevant)
    was ist daran dreckig?

    Zitat Zitat von SteelWheel Beitrag anzeigen
    und einmal "high performant", da es vermeintlich Sinn ergibt. Allein hier wären es bereits zwei Handschriften - von einer Person.
    nochmal, wenn es grund zur optimierung gibt, wird an der stelle optimiert, die optimierungspotential hat, nicht auf verdacht an stellen, die das nicht haben.

    Zitat Zitat von SteelWheel Beitrag anzeigen
    Lass uns, hesst, also im gewohnt Guten auseinander gehen aus diesem Thread!
    das ist ein forum, da diskutiert man, da hat man auch mal unterschiedliche meinungen, jede seite versucht seine meinung darzulegen.
    warum sollte ich da nicht im guten mit dir auseinander gehen, selbst wenn ich deine meinung nicht teile?

    Zitat Zitat von SteelWheel Beitrag anzeigen
    Ich wollte niemanden Bekehren, sondern erwähnte nur die - zumindest für mich - empfohlene Schreibweise.
    ich verwende die auch, aber nicht wegen der zeiten, sondern weil diese üblicher ist.

    Zitat Zitat von SteelWheel Beitrag anzeigen
    Wir werden uns demnach einig mit dem Satz, dass viele Weg nach Rom führ(t)en ...
    ja sicher, aber mir ging es hier um das optimieren als solches, nicht um schreibweisen. wann und wo wird optimiert und wann und wo nicht.

  13. #43
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.751

    AW: [Ajax] einfache Uhr mit serverseitiger Zeit

    Ich hab' jetzt meinen Test mal auf Number, String und RegExp erweitert (hatte vorher nur Array getestet). Und die sind wirklich signifikant langsamer. Bei Object ist der Unterschied nicht so stark, aber der Konstruktor ist langsamer. Bei Array sehe ich so gut wie keinen Unterschied - mal ist das Eine, mal ist das Andere schneller.

    @SteelWheel: Das mit "den": da hab' ich dich einfach falsch verstanden.

    Was mir jetzt als Beispiel für dynamische RegExp einfällt ist ein Polyfil für das pattern-Attribut in <input>s.

    Eigene Fehlermeldungen kannst du auch mit den nativen Error-Konstruktoren erstellen. Dann hast du im catch auch noch Informationen, die du sonst nur mit viel Arbeit in dein Fehlerobjekt reinbekommst (z.B. Zeilennummer):
    Code:
    try {
    	var e = new Error();
    	e.name = "MyErrorType";
    	e.message = "oops"; 
    	e.extra = "This was rather embarrassing";
    	e.remedy = function(){alert(1);}
    	throw e;
    }
    catch (e){
    	console.log(e);
    	e.remedy();
    }
    Und JS ist im Browser extrem selten der Flaschenhals (das Erzeugen einer Zahl bewegt sich im ns Bereich). Die Zugriffe auf das DOM sind meistens viel langsamer.

    @hesst: Ich meine sowas wie:
    Code:
    var a = Array(1, 2);
    // vs.
    var a = Array(1);
    und
    Code:
    (typeof 3) !== (typeof new Number(3))
    Ich finde ja generell Schreibweisen, die kürzer, schneller und üblicher sind prinzipell eine gute Sache.

  14. #44
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.667

    AW: [Ajax] einfache Uhr mit serverseitiger Zeit

    Zitat Zitat von kkapsner Beitrag anzeigen
    Ich meine sowas wie:
    Code:
    var a = Array(1, 2);
    // vs.
    var a = Array(1);
    2 verschiedene konstruktoren. und da ein array mit einem entry wenig sinn macht, sieht man, dass sie sich durchaus was dabei gedacht haben. du verbietest ja auch keine funktionen, weil man diesen argumenten mit unterschiedlichen bedeutungen übergeben kann. man muss schon wissen, was man wie verwendet.
    und schreib das mal als literal
    var a = Array(1000);
    das sieht auch nicht schön aus
    a = [];
    a[999] = undefined;
    wobei ich auch nicht wüsste wo man das mal benötigt.

    Zitat Zitat von kkapsner Beitrag anzeigen
    Code:
    (typeof 3) !== (typeof new Number(3))
    du meintest
    Code:
    (typeof 3) != (typeof new Number(3))
    wo ist der grüne?

    du vergleichst einen primitiven datentyp mit einem komplexen. ist doch richtig.
    das beispiel kann ich sonst auch für die verwendung von konstruktoren bringen.
    Code:
    (typeof new Number(3) != (typeof 3))
    so, ätsch

    Zitat Zitat von kkapsner Beitrag anzeigen
    Ich finde ja generell Schreibweisen, die kürzer, schneller und üblicher sind prinzipell eine gute Sache.
    ich auch, habe aber auch nichts gegen andere. sonst sind for schleifen besser als do-while, if {} else if {} else{} besser als switch, === besser als == und und und. alles hat seine berechtigung, das eine benötigt man häufiger, das andere nicht so häufig.

  15. #45
    j-l-n Guest

    AW: [Ajax] einfache Uhr mit serverseitiger Zeit

    Könnte jemand dann vielleicht noch die endgültige, optimierte Version posten?

Seite 3 von 4 ErsteErste 1234 LetzteLetzte

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 17-08-2012, 14:19
  2. serverseitiger Aufruf einer JS-Funtion
    Von Daktari im Forum JavaScript
    Antworten: 8
    Letzter Beitrag: 29-02-2012, 00:58
  3. AJAX Request Zeit
    Von aazmitia im Forum Serverseitige Programmierung
    Antworten: 4
    Letzter Beitrag: 14-07-2008, 12:03
  4. ! Einfache Blätterunktion!!
    Von Iceman8712 im Forum Serverseitige Programmierung
    Antworten: 17
    Letzter Beitrag: 24-08-2005, 18:46
  5. aus Unix zeit normale zeit
    Von MasterD im Forum Serverseitige Programmierung
    Antworten: 1
    Letzter Beitrag: 24-04-2001, 10:07

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •