Du bist nicht angemeldet. [Anmelden]
Seite 3 von 3 < 1 2 3 alle
Optionen
Thema bewerten
Re: Developer-Server Test: Tiefgreifende Änderungen der App-API (Client) [Re: TobyB] - #2909134 - 12.07.2018, 17:35:41
Sephiroth ME
​gods own prototype

Registriert: 24.11.2003
Beiträge: 179
Ort: RLP, DE
Antwort auf: TobyB
...
Antwort auf: TobyB
- Wir haben einige uralte und seit langer Zeit als "veraltet"/"deprecated" definierte Code-Schnippsel und APIs entfernt

Diese API die du ansprichst ist am 17.03.2015 eingeführt und am 17.06.2015, also nur drei Monate später (vor ziemlich genau 3 Jahren), als "Deprecated" markiert worden.

"Seid Transparenter"
Darunter fallen:
  • Punkt A
  • Punkt B...
_________________________
one step closer to world domination

[zum Seitenanfang]  
Re: Developer-Server Test: Tiefgreifende Änderungen der App-API (Client) [Re: Sephiroth ME] - #2909138 - 12.07.2018, 18:05:27
TobyB
​Knuddelsteam

Registriert: 21.11.2003
Beiträge: 6.505
Soeben haben wir auf dem Dev-Server einerseits den Loader aktualisiert, andererseits das auch AppServerModules.
- Dadurch funktionieren die UserApps-Toplisten jetzt wieder (bitte testen!)
- Intern haben wir ein paar Bugs behoben bei dem neue Apps-APIs und alte/andere APIs sich durch gleiche Namen gegenseitig überschrieben haben (konkret behebt das, dass /usersatisfation jetzt wieder funktioniert - das ist das Channel-Rating)


Bearbeitet von TobyB (12.07.2018, 18:11:01)
Bearbeitungsgrund: ausführlicher erklärt
_________________________
There is no good without evil, but evil must not be allowed to flourish.
There is passion, yet peace; serenity, yet emotion; chaos, yet order.

[zum Seitenanfang]  
Re: Developer-Server Test: Tiefgreifende Änderungen der App-API (Client) [Re: Sephiroth ME] - #2909139 - 12.07.2018, 18:14:50
TobyB
​Knuddelsteam

Registriert: 21.11.2003
Beiträge: 6.505
Antwort auf: Sephiroth ME
Antwort auf: TobyB
...
Antwort auf: TobyB
- Wir haben einige uralte und seit langer Zeit als "veraltet"/"deprecated" definierte Code-Schnippsel und APIs entfernt

Diese API die du ansprichst ist am 17.03.2015 eingeführt und am 17.06.2015, also nur drei Monate später (vor ziemlich genau 3 Jahren), als "Deprecated" markiert worden.

"Seid Transparenter"
Darunter fallen:
  • Punkt A
  • Punkt B...

Ja, das muss ich mir ankreiden lassen. Da hätte ich vorab transparenter sein sollen. Sorry dafür!

Konkret waren es zwei APIs:
- das [von dir genannte] global "eventReceived" Event gibt es nicht mehr, es gibt jetzt nur noch "Client.addEventListener('MyAwesomeEvent', function(){...})" als möglichkeit auf Events vom Server zu hören
- wir haben eine ausschließlich für internal-use entwickelte Methode entfernt die JavaScript asynchron nachladen konnte und die jetzt nicht mehr gebraucht wird
_________________________
There is no good without evil, but evil must not be allowed to flourish.
There is passion, yet peace; serenity, yet emotion; chaos, yet order.

[zum Seitenanfang]  
Re: Developer-Server Test: Tiefgreifende Änderungen der App-API (Client) [Re: TobyB] - #2909261 - 13.07.2018, 17:58:51
TobyB
​Knuddelsteam

Registriert: 21.11.2003
Beiträge: 6.505
Wir haben uns noch mal angeschaut wie es mit der Nutzung von zwei veralteten bzw. eigentlich internen APIs aussieht. Dabei haben wir entdeckt, dass es leider mehrere hundert Apps gibt die wir damit potentiell kaputt machen würden. Daher haben wir eben auf dem DEV-Server noch mal eine neue Version der Client-API ausgerollt die folgende Änderungen enthält:

  • document.addEventListener('eventReceived', ...) ist übergangsweise wieder möglich, produziert nun aber ein Warning (siehe "Deprecation Notice 1")
  • Client.onSendEventReceived() ist schon immer eine rein interne API gewesen. Sie produziert jetzt auch ein entsprechendes Warning (siehe "Deprecation Notice 2")
  • Der Event-Name/Typ bei Client.addEventListener(type, callback) muss jetzt ein String sein der leer ist oder mit einem Alpha-Numerischen Zeichen beginnt (Das ist ein Bugfix der verhindert, dass man das interne Array von EventListenern "kaputt" machen kann)


Deprecation Notice 1 (document event listener "eventReceived")
Warning: 'You are using a deprecated API (document event listener for "eventReceived"). Please use "Client.addEventListener()" instead. See: http://developer.knuddels.de/docs/classes/Client.html#method_addEventListener'
Es gab in den Anfangszeiten wie hier erwähnt kurzzeitig diese Variante um Events vom Server zu empfangen. In dieser Zeit ist auch die Ziegenphobie-Demo-App entstanden. Wir haben nach wenigen Monaten die alte API als "Deprecated" markiert, und sie war auch niemals offiziell dokumentiert (jedenfalls hab ich auch in unserer Versions-History keine einzige Doku gefunden). Da wir aber versäumt haben die HTML-UI-Demo-App (Ziegenphobie) an die neuen APIs anzupassen hat sich die Verwendung dieser API stark verbreitet. Wir werden sehr zeitnah die Demo-Apps mit HTML-UI auf die aktuellsten APIs aktualisieren.
Für euch heißt das: Bitte passt eure Apps an und tauscht diese veraltete API mit der entsprechenden API aus! (siehe Warning)
Wir werden diese API zu einem noch nicht definierten Zeitpunkt in der Zukunft entfernen (wir kündigen das dann an).

Deprecation Notice 2 (API "Client.onSendEventReceived()")
Warning: 'You are using "Client.onSendEventReceived()" which is an internal API. Please use "Client.dispatchEvent()" instead. See: http://developer.knuddels.de/docs/classes/Client.html#method_dispatchEvent'
Ich kann mir gerade nicht erklären wie es dazu kommen konnte, dass diese API, zu der ich ebenfalls in keiner Version-History eine Doku gefunden habe, eine derart große Verbreitung in mehreren hundert Apps erreichen konnte. Allerdings habe ich die Vermutung, dass ein sehr großer Teil davon daher rührt, dass diese API in einem (scheinbar beliebten) Framework von Bizarrus verwendet wird/wurde.
Für euch heißt das: Bitte passt eure Apps an und tauscht diese veraltete API mit der entsprechenden API aus! (siehe Warning)
Wir werden diese API zu einem noch nicht definierten Zeitpunkt in der Zukunft entfernen (wir kündigen das dann an).


Feedback zu diesen Änderungen und dem Plan für die Zukunft ist erwünscht! Immerhin war es jemand von euch der den Anstoß zu diesen Änderungen (also das Rückgängigmachen der Entfernung der API) gegeben hat.

Wobei ich bei dieser Gelegenheit noch mal darauf hinweisen möchte: Wenn ihr Feedback, Bugs gefunden oder Wünsche habt die ihr zu diesem Thema loswerden wollt, dann wendet euch bitte direkt hier im Thread und macht das nicht in irgendwelchen Messengern. Denn so bekommen wir das nicht mit und können auch nicht darauf reagieren.


Happy Testing. :)
_________________________
There is no good without evil, but evil must not be allowed to flourish.
There is passion, yet peace; serenity, yet emotion; chaos, yet order.

[zum Seitenanfang]  
Re: Developer-Server Test: Tiefgreifende Änderungen der App-API (Client) [Re: TobyB] - #2909282 - 13.07.2018, 20:04:21
Sephiroth ME
​gods own prototype

Registriert: 24.11.2003
Beiträge: 179
Ort: RLP, DE
Anstatt einfach nur __proto__ zu schützen, wird einfach mal wieder alles verboten was genutzt werden könnte.
Zitat:
_meinListener löst jetzt einen Fehler aus. X-)


Gut, dann füttere ich den Bugfix jetzt mit:
Code:
Client.addEventListener('push', function() { console.log('Broken again'); });

Dafür gibt es for-in-Schleifen und Basisobjekte die genau auf solche Dinge nicht herein fallen.

Das wäre im übrigen ein besserer Weg:
Code:
if ((!meinTollesArray.hasOwnProperty(listenerName) && meinTollesArray[listenerName] !== undefined) || name === '__proto__') {
  throw new Error('Hör auf prototypen zu verfüttern!');
}

Ein Array zu benutzen und es als Objekt für andere Funktionen zu deklarieren aus welchen Gründen auch immer ist falsch.

Ein Objekt eignet sich viel besser (wie man an sämtlichen HTML Collections sieht).

Nächster Bug diesbezüglich:
Code:
Client.removeEventListener('__proto__');

Ein Objekt fällt darauf nicht herein, einem Objekt ist das egal. Denn das Array wird nach entfernen des __proto__ zu einem simplen Objekt. Definiert es einfach als Objekt und nutzt for-in-Schleifen.

Was die API und die Verbreitung der Frameworks angeht, ja das ist bescheiden, aber es gab lange Zeit auch kein/kaum Feedback in dem Bereich. weshalb viele Dinge dann untergehen, wie auch veraltete Dokumentation und man nutzt halt das, was seit Jahren dann bereits funktioniert.

Client.addEventListener('*', function() {}); funktioniert durch den benannten Fix nun auch nicht mehr. Soll aber laut Dokumentation.

MfG
_________________________
one step closer to world domination

[zum Seitenanfang]  
Re: Developer-Server Test: Tiefgreifende Änderungen der App-API (Client) [Re: TobyB] - #2909298 - 13.07.2018, 22:11:35
IgelchenM
​Laubhaufenbewohner

Registriert: 10.02.2005
Beiträge: 1.450
Ort: Bochum
Hey zusammen,
Im selben Atemzug wurden auch die Beispiele im Entwickler-Wiki überarbeitet und die genannten veralteten Methoden entfernt.
_________________________
Wo zum Teufel ist dieser Wayne wenn man ihn braucht?!

[zum Seitenanfang]  
Re: Developer-Server Test: Tiefgreifende Änderungen der App-API (Client) [Re: IgelchenM] - #2909299 - 13.07.2018, 22:19:32
TobyB
​Knuddelsteam

Registriert: 21.11.2003
Beiträge: 6.505
Danke Glitch, das war sehr berechtigtes und wichtiges Feedback. Ich habe eben noch mal eine neue Version der API auf dem DEV-Server ausgerollt.
Antwort auf: TobyB
Der Event-Name/Typ bei Client.addEventListener(type, callback) muss jetzt ein String sein der leer ist oder mit einem Alpha-Numerischen Zeichen beginnt (Das ist ein Bugfix der verhindert, dass man das interne Array von EventListenern "kaputt" machen kann)

Das war nicht bis zum Ende durchdacht von mir. Ich hab nun eine Lösung ausgerollt die diese Einschränkung wieder (nahezu) komplett entfernt und gleichzeitig das von Glitch zuvor gemeldete Problem mit z.B. "__proto__" komplett löst. Die Einschränkung die bestehen bleibt ist, dass der Event-Type ein String sein muss.

Danke dafür. :)


Bearbeitet von TobyB (13.07.2018, 22:22:29)
Bearbeitungsgrund: String-Anforderung ergänzt.
_________________________
There is no good without evil, but evil must not be allowed to flourish.
There is passion, yet peace; serenity, yet emotion; chaos, yet order.

[zum Seitenanfang]  
Re: Developer-Server Test: Tiefgreifende Änderungen der App-API (Client) [Re: TobyB] - #2909651 - 17.07.2018, 10:36:25
TobyB
​Knuddelsteam

Registriert: 21.11.2003
Beiträge: 6.505
Antwort auf: TobyB
Wir haben das ganze vor wenigen Minuten released! #party

Problemmeldungen bitte zu mir. dankeschön. :)
_________________________
There is no good without evil, but evil must not be allowed to flourish.
There is passion, yet peace; serenity, yet emotion; chaos, yet order.

[zum Seitenanfang]  
Re: Developer-Server Test: Tiefgreifende Änderungen der App-API (Client) [Re: TobyB] - #2909803 - 18.07.2018, 12:24:52
Sephiroth ME
​gods own prototype

Registriert: 24.11.2003
Beiträge: 179
Ort: RLP, DE
Ich habe nur recht häufig die Herausforderung, dass der allererste Aufruf eines HTML UIs (egal ob SystemApp oder UserApp) fehlschlägt und der Loader hängen bleibt, warum auch immer.

Alle folgenden werden geladen.
_________________________
one step closer to world domination

[zum Seitenanfang]  
Re: Developer-Server Test: Tiefgreifende Änderungen der App-API (Client) [Re: TobyB] - #2909813 - 18.07.2018, 13:35:10
TobyB
​Knuddelsteam

Registriert: 21.11.2003
Beiträge: 6.505
Wenn du den Dev-Server meinst, dann ist es bestimmt das hier:
Antwort auf: TobyB
Antwort auf: Sephiroth ME
Ob es damit im Zusammenhang steht, kann ich nicht beurteilen, allerdings melden alle Systemapps Bad Gateway aktuell aufm Dev-Server.

Das ist ein Issue den wir bereits entdeckt haben. Das tritt lediglich beim ersten Aufruf jeder App nach einem Loader- oder AppServer-Update auf. Einfach die App erneut aufrufen, dann gehts. Diesen Issue gibt es nur auf dem Dev-Server.

Falls es live ist, dann meld dich bitte direkt bei mir.
_________________________
There is no good without evil, but evil must not be allowed to flourish.
There is passion, yet peace; serenity, yet emotion; chaos, yet order.

[zum Seitenanfang]  
Re: Developer-Server Test: Tiefgreifende Änderungen der App-API (Client) [Re: TobyB] - #2909895 - Gestern um 11:11
djchrisnet
Verif​ied P​rotot​ype H​ater​

Registriert: 27.05.2006
Beiträge: 823
Ort: Elmshorn
Client.includeCSS(file) & Client.includeJS(file) führen encodeURI doppelt auf file aus, sodass

ein z.B. leerzeichen nicht mit %20 ersetzt wird sondern am Ende durch %2520

css/design/ich%2520hab%2520noch%2520nie.css?ts=1531990243652
Richtig wäre
css/design/ich+hab%2520noch%2520nie.css?ts=1531990243652


Bearbeitet von djchrisnet (Gestern um 11:11)
_________________________
» AppEntwickler-Coach
» Prototype Hater



[zum Seitenanfang]  
Re: Developer-Server Test: Tiefgreifende Änderungen der App-API (Client) [Re: djchrisnet] - #2909896 - Gestern um 11:20
Sephiroth ME
​gods own prototype

Registriert: 24.11.2003
Beiträge: 179
Ort: RLP, DE
Client.includeJS() führt kein encodeURI() aus, es betrifft nur Client.includeCSS().

Ebenso verursacht ein Client.includeCSS() innerhalb vom body Fehler, da es nicht automatisch in den head geschrieben wird.

Für CSS wäre document.head.insertAdjacentHTML('beforeend', '<link... />'); angebracht. Denn link darf nur im head stehen.
_________________________
one step closer to world domination

[zum Seitenanfang]  
Re: Developer-Server Test: Tiefgreifende Änderungen der App-API (Client) [Re: djchrisnet] - #2909936 - Gestern um 16:39
TobyB
​Knuddelsteam

Registriert: 21.11.2003
Beiträge: 6.505
Antwort auf: djchrisnet
Client.includeCSS(file) & Client.includeJS(file) führen encodeURI doppelt auf file aus, sodass

ein z.B. leerzeichen nicht mit %20 ersetzt wird sondern am Ende durch %2520

css/design/ich%2520hab%2520noch%2520nie.css?ts=1531990243652
Richtig wäre
css/design/ich+hab%2520noch%2520nie.css?ts=1531990243652

Unter Bug-ID 17535 dokumentiert. Ist live mittlerweile bereits gefixt.
_________________________
There is no good without evil, but evil must not be allowed to flourish.
There is passion, yet peace; serenity, yet emotion; chaos, yet order.

[zum Seitenanfang]  
Re: Developer-Server Test: Tiefgreifende Änderungen der App-API (Client) [Re: Sephiroth ME] - #2909939 - Gestern um 17:19
TobyB
​Knuddelsteam

Registriert: 21.11.2003
Beiträge: 6.505
Antwort auf: Sephiroth ME
Client.includeJS() führt kein encodeURI() aus, es betrifft nur Client.includeCSS().

Ebenso verursacht ein Client.includeCSS() innerhalb vom body Fehler, da es nicht automatisch in den head geschrieben wird.

Für CSS wäre document.head.insertAdjacentHTML('beforeend', '<link... />'); angebracht. Denn link darf nur im head stehen.

Das ist zwar korrekt, aber hat keine Auswirkung auf die App. Die Browser sind deart nachsichtig bei der Einhaltung von HTML-Regeln, dass sie es trotzdem behandeln als wären die CSS-Dateien korrekt eingebunden.

Das ganze hat mich allerdings auf einen Gedanken gebracht, den ich dann schnell überprüft habe. Und daraus ist ein Bug-Ticket entstanden:
17536 "[AppLoader] Client.includeCSS() und Client.includeJS() können das gesamte Dokument überschreiben"
Wenn man ab dem "DOMContentLoaded"-Event eine der beiden APIs benutzt, dann überschreibt man sich dabei das gesamte Dokument. Der Grund kann hier nachgelesen werden: https://developer.mozilla.org/en-US/docs/Web/API/Document/write#Notes

Das ganze ist vermutlich für die meisten oder gar alle Apps aktuell kein Problem, da die meisten oder eben alle wohl diese APIs nur statisch im HTML außerhalb von Event-Listenern wie "DOMContentLoaded" oder "load" verwenden. Dann ist man safe.

Bei wem da jetzt allerdings etwas klingelt und uns mehr Kontext geben kann, der darf sich gerne melden!

PS: Das ganze ist nichts neues, das war auch in der alten API bzw mit dem alten AppLoader schon so.
_________________________
There is no good without evil, but evil must not be allowed to flourish.
There is passion, yet peace; serenity, yet emotion; chaos, yet order.

[zum Seitenanfang]  
Seite 3 von 3 < 1 2 3 alle