Autor Thema: Falsche Nutzung von min/max in 88_HMCCUDEV.pm (u.a.)  (Gelesen 955 mal)

Online RichardCZ

  • Tester
  • Full Member
  • ****
  • Beiträge: 268
    • Experimenteller FHEM Fork (GitLab Geknödel)
Antw:Falsche Nutzung von min/max in 88_HMCCUDEV.pm (u.a.)
« Antwort #15 am: 21 März 2020, 14:32:04 »
Spielst Du auf die Abfrage der JSON Wrapper an?

Ja klar. Prinzipiell bin ich ein Freund fehlertoleranter Modulnutzung (gucken was da ist und dabei nicht auf die Schnauze fliegen),
aber a) kann man das schon ein wenig prozeduraler gestalten als so eine if-Kaskade, b) wäre DAS eine wünschenswerte zentrale "Utils" Komponente fürs FHEM mit einer API a la:


use_module_prio({
    wanted   => qw(encode_json decode_json),
    priority => qw(JSON::MaybeXS JSON::XS Cpanel::JSON::XS),
});


zum Bleistift.

Rückgabewert Modulname, der geklappt hat, ansonsten undef. Dann kann das (=jedes!) aufrufende Modul entscheiden, ob es weitermacht oder nicht.
Überdies könnte die sub gleich testen, ob das betreffende Modul tatsächlich "wanted" bereitstellt.

Man könnte es auch etwas generischer/komplizierter machen, aber mit Overengineering wollte ich mich eigentlich zurückhalten.
Gefällt mir Gefällt mir x 1 Liste anzeigen

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 24242
Antw:Falsche Nutzung von min/max in 88_HMCCUDEV.pm (u.a.)
« Antwort #16 am: 21 März 2020, 14:44:07 »
Mach mal bitte einen Patch fertig für die 99_Utils.pm und reiche diesen mit etwas Erklärung bei Rudi ein.
Mich interessiert dann besonders wie meine Implementierung dann ausschauen muss. Aber erstmal schauen wir das der Patch an kommt.
Das sind die angesprochenen kleinen Schritte.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://paypal.me/pools/c/8gULisr9BT
FHEM GitHub: https://github.com/fhem/
Mein Dokuwiki:
https://tuxnetwiki-tuxnet.ddns.net

Offline KernSani

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3201
Antw:Falsche Nutzung von min/max in 88_HMCCUDEV.pm (u.a.)
« Antwort #17 am: 21 März 2020, 15:07:45 »
Bei der Gelegenheit könnte man vielleicht auch gleich noch ein „sicheres“ decode_json mitliefern, das Fehler abfängt und loggt.


Gesendet von iPhone mit Tapatalk
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...
Gefällt mir Gefällt mir x 1 Liste anzeigen

Online RichardCZ

  • Tester
  • Full Member
  • ****
  • Beiträge: 268
    • Experimenteller FHEM Fork (GitLab Geknödel)
Antw:Falsche Nutzung von min/max in 88_HMCCUDEV.pm (u.a.)
« Antwort #18 am: 21 März 2020, 15:51:06 »
Mach mal bitte einen Patch fertig für die 99_Utils.pm und reiche diesen mit etwas Erklärung bei Rudi ein.
Mich interessiert dann besonders wie meine Implementierung dann ausschauen muss. Aber erstmal schauen wir das der Patch an kommt.
Das sind die angesprochenen kleinen Schritte.

Für einen Patch ist es noch zu früh, aber so sollte der Code in Grundzügen aussehen:

https://gl.petatech.eu/root/HomeBot/snippets/2

Bei mir tut er zumindest. In der Beschreibung zum Snippet gehe ich noch auf UNIVERSAL (für Methoden) oder exists (einfach für Subroutinen) ein, auf der anderen Seite reden wir hier von einer programmier-API, da sollte der Modulmaintainer schon wissen was er anfordert.

Offline zap

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3255
    • HMCCU
Antw:Falsche Nutzung von min/max in 88_HMCCUDEV.pm (u.a.)
« Antwort #19 am: 26 März 2020, 09:07:40 »
Für einen Patch ist es noch zu früh, aber so sollte der Code in Grundzügen aussehen:

https://gl.petatech.eu/root/HomeBot/snippets/2

Bei mir tut er zumindest. In der Beschreibung zum Snippet gehe ich noch auf UNIVERSAL (für Methoden) oder exists (einfach für Subroutinen) ein, auf der anderen Seite reden wir hier von einer programmier-API, da sollte der Modulmaintainer schon wissen was er anfordert.

Nice! Übernehme ich gerne.

Zum Thema Perl und modern. Ich möchte jetzt hier keinen Glaubenskrieg der Programmiersprachen-Jünger vom Zaun brechen. In Perl kann man fast alle Features neuerer Sprachen zumindest teilweise simulieren. Das passiert ja auch z.B. beim Thema Objektorientierung, auch wenn es weit vom Komfort von C++ oder Swift entfernt ist. Wünschen würde ich mir z.B. eine eingebaute, durchgängige Typensicherheit (auch bei skalaren Typen)  (ja, auch das kann man simulieren), Templates usw. Gerade die Typensicherheit würde eine Menge Fehler vermeiden.
in vielen Sprachen ist z.B. Min/Max als template Function definiert. Zusammen mit Typensicherheit gibts keine Probleme mehr bei der Verwendung mit Strings, Integer oder whatever.
2xCCU3, diverse Komponenten (Fenster, Rolladen, Themostate, Stromzähler, Steckdosen ...)
FHEM mit Raspi für CCU Integration.
IOBroker für UI (VIS), Hue, Sonos usw.
Maintainer der Module FULLY, Meteohub und HMCCU (Schnittstelle CCU-FHEM = best of both worlds approach

Offline zap

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3255
    • HMCCU
Antw:Falsche Nutzung von min/max in 88_HMCCUDEV.pm (u.a.)
« Antwort #20 am: 26 März 2020, 09:11:17 »
Bei der Gelegenheit könnte man vielleicht auch gleich noch ein „sicheres“ decode_json mitliefern, das Fehler abfängt und loggt.


Gesendet von iPhone mit Tapatalk

Besser wäre es, das ganze JSON Modul zu entsorgen und neu zu schreiben. Decode_json ist ja nur die Spitze des Eisbergs
Just my 2 ct.
2xCCU3, diverse Komponenten (Fenster, Rolladen, Themostate, Stromzähler, Steckdosen ...)
FHEM mit Raspi für CCU Integration.
IOBroker für UI (VIS), Hue, Sonos usw.
Maintainer der Module FULLY, Meteohub und HMCCU (Schnittstelle CCU-FHEM = best of both worlds approach

Offline herrmannj

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 5497
Antw:Falsche Nutzung von min/max in 88_HMCCUDEV.pm (u.a.)
« Antwort #21 am: 26 März 2020, 09:19:28 »
Das hätte ich fertig (siehe JsonMod). Könnte man ne Lib draus machen
smartVisu mit fronthem, einiges an HM, RFXTRX, Oregon, CUL, Homeeasy, ganz viele LED + Diverse
Zustimmung Zustimmung x 1 Liste anzeigen

Online RichardCZ

  • Tester
  • Full Member
  • ****
  • Beiträge: 268
    • Experimenteller FHEM Fork (GitLab Geknödel)
Antw:Falsche Nutzung von min/max in 88_HMCCUDEV.pm (u.a.)
« Antwort #22 am: 27 März 2020, 18:44:42 »
Um zum eigentlichen Thema (min/max) zurückzukehren:

Hätte man jemanden gefragt der sich mit sowas auskennt.  ;) Bzw. wäre dieser jemand da gewesen, dann

https://forum.fhem.de/index.php/topic,109570.0.html
-> siehe Module::CoreList -> siehe https://metacpan.org/pod/List::Util -> siehe min/max/minstr/maxstr

Ganz ohne CPAN, ganz ohne eigenes neues Rad. Mit der richtigen Nomenklatur, mit Testcases, gewartet von 3. Seite ohne dass man einen Finger krumm machen muss.

« Letzte Änderung: 27 März 2020, 18:48:04 von RichardCZ »