Autor Thema: 73_AutoShuttersControl  (Gelesen 710 mal)

Offline CoolTux

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 24242
73_AutoShuttersControl
« am: 25 März 2020, 10:40:56 »
Mit dem morgigen FHEM Update und jetzt schon im SVN ist eine Version von ASC wo ich alle Prototypen raus gemacht habe und eine verbesserte RegEx Variante genommen habe.



Grüße
Marko
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 Wzut

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3337
Antw:73_AutoShuttersControl
« Antwort #1 am: 25 März 2020, 17:13:38 »
Über das Wort Prototypen stolpere ich die letzten Tage nun öfters, meine Versuche via Tante Google für mich verständliche Erklärungen zu finden sind bisher gescheitert.
Aber da ich eh einer der ganz großen Abschreiber bin : Hast du mal aus deinem Modul ein Stückchen vorher/nachher zur Hand ?
 
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Offline CoolTux

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 24242
Antw:73_AutoShuttersControl
« Antwort #2 am: 25 März 2020, 17:39:03 »
IsDay($@) {

}

Würde zu
IsDay {

}

Somit kommt es zu keinen Prototypmismatch.
Das ist jetzt nur so ein Beispiel aus dem Kopf.

Es gibt also keine feste Regel für die Funktion was ihr wie übergeben wird.
Du kannst Skalare oder Hashs oder Array übergeben. Wichtig ist aber das Du darauf achtest was die Funktion dann verarbeitet. Bei eigenem Code ist es leicht, wenn andere Deine Funktion verwenden sollen musst Du Fehler in der Übergabe abfangen.
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 Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 4661
  • Are we just self-replicating DNA?
Antw:73_AutoShuttersControl
« Antwort #3 am: 26 März 2020, 17:22:42 »
perl critic meckert über meine Prototypen auch.

Was ist denn in Kurzform der Grund, diese nicht zu verwenden? Schließlich muss ich ja in der Funktion schon wissen, was ich das reinbekomme.

Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Offline CoolTux

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 24242
Antw:73_AutoShuttersControl
« Antwort #4 am: 26 März 2020, 17:29:07 »
Es gibt keinen handfesten Grund.
Im Grunde halte ich mich persönlich an PBPund das was ich so in anderen Perlprojekten sehe.
https://www.perl-community.de/bat/poard/start

Es ist also eher eine persönliche Entscheidung auf Basis der Erfahrung anderer und dem PBP.
So lange Du selbst der Autor der Funktion bist und Du selbst diese nur aufrufst weißt Du es ja. Für andere Belange gibt es die Codekommentare. Und wenn Du Dir große Perlprojekten an schaust das ist die Hälfte des Textes in einer Datei Kommentar.  ;D


Grüße
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

Online RichardCZ

  • Tester
  • Full Member
  • ****
  • Beiträge: 268
    • Experimenteller FHEM Fork (GitLab Geknödel)
Antw:73_AutoShuttersControl
« Antwort #5 am: 26 März 2020, 17:40:17 »
Es gibt keinen handfesten Grund.

https://forum.fhem.de/index.php/topic,109526.0.html
und insbesondere
https://forum.fhem.de/index.php/topic,109526.msg1035260.html#msg1035260

Ich sehe das so:

Stell' Dir vor Du hast ein Auto bei dem in 99% der Fälle der Sicherheitsgurt versagt. Es scheint nun zwei Herangehensweisen zu geben wie man mit diesem Problem umgehen soll:

Herangehensweise 1) "Besser 1% als nix, wir lassen das so."

Herangehensweise 2) "Wir verwenden die Sicherheitsgurte nicht und machen stattdessen unsere eigenen oder nerven den Hersteller. Ggf. fangen wir an nachzubohren und finden heraus, dass das gar keine Sicherheitsgurte sind, sondern nur die vergessenen Hosenträger eines Automechanikers. Auf jeden Fall machen wir was mit der Situation um uns nicht in falscher Sicherheit zu wiegen."


Herangehensweise 2) ist anstrengender, aber für mich handfest genug, so dass ich sie propagiere.


perl critic meckert über meine Prototypen auch.

Perl::Critic - guter Einwurf:

Subroutine prototypes used at line 53, column 1.  See page 194 of PBP.  (Severity: 5)

perlcritic verweist auf die Seite 194 im PBP als Erklärung warum Prototypen nicht so doll sind. Das ist auch die Kurzform.
Informativ Informativ x 1 Liste anzeigen

Offline CoolTux

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 24242
Antw:73_AutoShuttersControl
« Antwort #6 am: 26 März 2020, 17:44:40 »
@Richard,

Das mit perlcritic wäre doch auch eine gute Begründung für Deinen Einführungsthread.
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

Online RichardCZ

  • Tester
  • Full Member
  • ****
  • Beiträge: 268
    • Experimenteller FHEM Fork (GitLab Geknödel)
Antw:73_AutoShuttersControl
« Antwort #7 am: 26 März 2020, 17:50:53 »
@Richard,

Das mit perlcritic wäre doch auch eine gute Begründung für Deinen Einführungsthread.

Dafür bin ich ethisch und moralisch viel zu unbefleckt.  ;)

perlcritic IST die prozeduralisierte Form von PBP. Perlcritic ist als Lösung entworfen worden, damit nicht Leute wie ich mit dem PBP Buch in der Hand rumlaufen müssen und anderen Leuten Seitenzahlen daraus aufsagen.

Ergo, mit perlcritic für PBP zu argumentieren wäre ein hinterlistiger Zirkelschluss.

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 9765
  • eigentlich eher "user" wie "developer"
Antw:73_AutoShuttersControl
« Antwort #8 am: 26 März 2020, 18:03:46 »
perlcritic IST die prozeduralisierte Form von PBP. Perlcritic ist als Lösung entworfen worden, damit nicht Leute wie ich mit dem PBP Buch in der Hand rumlaufen müssen und anderen Leuten Seitenzahlen daraus aufsagen.
Nett.

Nur damit DAM's wie ich nicht in die changelogs zu Modulen sehen müssen, von deren Existenz sie bisher nicht mal was geahnt hatten: Irgendwo hatte ich aufgeschnappt, das 20 (oder 20%?) der PBP zwischenzeitlich überholt seien. Jetzt kann ich mir entweder die Fleißaufgabe stellen rauszufinden, welche das denn genau sind (oder clever danach suchen), oder mal mit der Annahme starten, dass Perl::Critic nicht nur die prozeduralisierte Form ist, sondern auch noch den aktuellen Stand der Dinge wiedergibt.

Daher die Frage nach der Abkürzung: Sagt mir dieses Modul, was der aktuelle Stand der PBP ist?
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | BT@OpenMQTTGateway
svn:MySensors, WeekdayTimer, RandomTimer, AttrTemplate => {mqtt2, mysensors, httpmod}

Online RichardCZ

  • Tester
  • Full Member
  • ****
  • Beiträge: 268
    • Experimenteller FHEM Fork (GitLab Geknödel)
Antw:73_AutoShuttersControl
« Antwort #9 am: 26 März 2020, 18:18:14 »
Nur damit DAM's wie ich nicht in die changelogs zu Modulen sehen müssen, von deren Existenz sie bisher nicht mal was geahnt hatten: Irgendwo hatte ich aufgeschnappt, das 20 (oder 20%?) der PBP zwischenzeitlich überholt seien. Jetzt kann ich mir entweder die Fleißaufgabe stellen rauszufinden, welche das denn genau sind (oder clever danach suchen), oder mal mit der Annahme starten, dass Perl::Critic nicht nur die prozeduralisierte Form ist, sondern auch noch den aktuellen Stand der Dinge wiedergibt.

Daher die Frage nach der Abkürzung: Sagt mir dieses Modul, was der aktuelle Stand der PBP ist?

Dieses Modul (Perl::Critic), bzw. das Skript, das mitkommt "perlcritic" gibt ein wenig mehr Infos unter anderem eine "severity", also in etwa wie schlimm das ist was da gefunden wurde. Absteigend von 5 bis 1

Severity 5 ist eine thermonukleare Explosion
...
Severity 1 ist ein fast unsichtbarer Knick im Papier, der nur einen obsessiv-kompulsiven Autisten stört

So. Den Dynamikumfang habe ich aufgespannt, die Stufen dazwischen kann sich jeder selbst interpolieren.  :)
DIe heute wenig bis nicht mehr relevanten Punkte sind alesamt in den Stufen 1,2 ... vielleicht etwas in 3 zu finden

Aus Erfahrung weiß ich, dass selbst die pedantischsten Perl Projekte selten alles in 2 hinbiegen wollen. Will sagen: Gemach! Man muss keine Angst haben, dass wenn man perlcritic auf Stufe 4 mundtot macht (ohne ## no critic Morphium), dass man irgendwo sinnlose Arbeit vollbracht hat.

Genau genommen, wer das in seinem Modul schafft, wird von mir erstmal lange nix hören.  Motivation?  ;D

edit:

Ich schiebe aber gleich hinterher, dass wenn diese Arbeit in einem Code erfolgt, den man hinterher eh als Altlast/überflüssig wegschmeisst, dann gilt das mit der sinnlosen Arbeit nicht mehr. Momentan gehe ich hier langsam Severity 5 Punkte durch, die einfach nur erstmal "Grundhygiene" sind. Damit man erstmal den groben Schmutz wegbekommt,
« Letzte Änderung: 26 März 2020, 18:22:34 von RichardCZ »

Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 4661
  • Are we just self-replicating DNA?
Antw:73_AutoShuttersControl
« Antwort #10 am: 26 März 2020, 18:30:54 »
Hallo Richard,

Genau genommen, wer das in seinem Modul schafft, wird von mir erstmal lange nix hören.  Motivation?  ;D

Nichts gegen pointiertes Aufzeigen von wesentlichen Problemen in meinem Code. Aber das hört sich für mich wie der Missionar an, der mit der Perl-Bibel ungefragt ins Dorf kommt, und die Heiden wenigstens zu Stufe 5 bekehren möchte. Ich kann damit umgehen und das wenn es so weit kommen sollte auch sehr gut ignorieren. Aber die Gefahr besteht, dass die anderen Dorfbewohner den Missionar rösten. Wenn Du wirklich etwas erreichen willst, solltest Du die Situation und Bedürfnisse der Zielgruppe berücksichtigen. Die Abwehrreaktionen sind Dir ja nicht verborgen geblieben.

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!
Gefällt mir Gefällt mir x 2 Liste anzeigen

Online RichardCZ

  • Tester
  • Full Member
  • ****
  • Beiträge: 268
    • Experimenteller FHEM Fork (GitLab Geknödel)
Antw:73_AutoShuttersControl
« Antwort #11 am: 26 März 2020, 19:22:54 »
Ist es notwendig des CoolTuxes thread zu hijacken? Nota bene mit einem Nicht-Thema (siehe unsere Mini-Netiquette hier: https://forum.fhem.de/index.php/topic,109515.0.html) Als Moderator sollte man da mit gutem Beispiel vorangehen - habe ich neulich heute Morgen gehört. Für globale gilt das bestimmt 10-fach.

Nichts gegen pointiertes Aufzeigen von wesentlichen Problemen in meinem Code. Aber das hört sich für mich wie der Missionar an, der mit der Perl-Bibel ungefragt ins Dorf kommt, und die Heiden wenigstens zu Stufe 5 bekehren möchte.

In dieser Aussage sind die folgenden Fehler:

  • Ich weiß noch nicht einmal welchen Code Du maintainst. Sollte ich irgendwo bei meinen Wanderungen durch den FHEM code auf Dein Modul gestossen sein und mich irgendwie darüber geäußert haben, dann war das nicht zielgesteuert, bzw. ist mir nicht bewusst.
  • Es gibt keine Heide/Missionar Kategorien. Das ist ein - vermutlich unbewusster - unredlicher Versuch künstlich eine Kluft zu konstruieren. Das macht man nicht. Viel mehr bin ich - ja: ungefragt - in ein Dorf namens "FHEM" gekommen, wo ich gerne bleiben möchte. Als Nutzer. Ergo Heide. Ich sage nun nicht: "Hey, reisst das Dorf ein und zieht ins OpenHAB Dorf", als Mitglied der Dorfgemeinschaft mit bestimmten Skills - ich bin ein guter Dachdecker - blutet mir das Herz, wenn es in viele Hütten reintropft.

Ich sage ja nur, unser Dorf soll schöner werden.

Zitat
Ich kann damit umgehen und das wenn es so weit kommen sollte auch sehr gut ignorieren.

Ah - verstehe. Du meinst das vorsorglich.

Solltest Du die Befürchtung hegen, ich würde Dich oder irgendwen irgendwann via PM belästigen mit dem PBP in der Hand und aktiv auffordern doch was an Deinem Code zu machen, dann kann ich Dich beruhigen, das mache ich nicht. Ich helfe gerne Leuten die zu mir kommen und JA, ich nehme mir die Freiheit raus neutral über irgendwelche Probleme in irgendeinem Code zu referieren. Wenn der Code gut ist, sage ich das. Wenn der Code doof ist, sage ich das. Wer der Maintainer ist, interessiert dabei nicht und ist auch nicht wichtig.

Du weisst schon, dass diese Freiheit die GPL auch abdeckt?  ;)

Zitat
Wenn Du wirklich etwas erreichen willst, solltest Du die Situation und Bedürfnisse der Zielgruppe berücksichtigen. Die Abwehrreaktionen sind Dir ja nicht verborgen geblieben.

Nichts anderes als die Zielgruppe berücksichtigen mache ich. Deswegen gibt es hier eine Perl Ecke und wer hier reinkommt, dem wird geholfen, wer "nix mit diesem neumodischen Programmierkram am Hut haben will", der muss ja nicht hierher und muss auch keine Angst haben, dass ich irgendwo da draussen wie ein Zeuge Jehovas vor seiner Tür stehen werde.

Aber ich würde schon darum bitten, dann auch dieser Ecke fernzubleiben und nicht unnötig reinzukotzen (wie KölnSolar), wenn man fachlich nix beitragen kann. Verschiedene Ansichten auf der technischen Ebene, wie z.B. mit justme sind vielleicht anstrengend, aber in letzter Konsequenz doch fruchtbar. Das würde ich jetzt nicht als Abwehrreaktion klassifizieren.

Im Gegenteil - um mal Deine Nomenklatur zu adoptieren - bevor ich irgendeinen Finger krumm mache, stelle ich auch gerne sicher, dass ich keinem falschen Propheten aufgesessen bin.

Ich habe für mich z.B. beschlossen es mit FHEM zu probieren, also dass noch nicht Hopfen und Malz verloren ist. Natürlich sind in meinem Dunstkreis noch ein paar "so Spinner wie ich", die sind noch nicht überzeugt, aber sollten wir FHEM ein wenig qualitativer  hinbekommen, dann kommen die auch noch. Das wird ein Tanz. Bitte keine schlaflosen Nächte jetzt.  ;)

Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 4661
  • Are we just self-replicating DNA?
Antw:73_AutoShuttersControl
« Antwort #12 am: 26 März 2020, 19:26:24 »
Fein, dass wir das geklärt haben.

*plonk*
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Offline CoolTux

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 24242
Antw:73_AutoShuttersControl
« Antwort #13 am: 27 März 2020, 19:09:26 »
@Richard

Zitat
Variable declared in conditional statement at line 3463, column 5.  Declare variables outside of the condition.  (Severity: 5)

my ( $value3, $value4 ) = split( ':', $values[1] )
      if ( defined( $values[1] ) );

wie kann ich das sauberer schreiben?
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 rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 21953
Antw:73_AutoShuttersControl
« Antwort #14 am: 27 März 2020, 19:25:33 »
In zwei Statements. Mit sowas bin ich schon auf die Nase gefallen: die Zeile wird nur dann ausgefuehrt, wenn if zuschlaegt, sonst gelten die Werte aus dem vorherigen Lauf.
Informativ Informativ x 1 Liste anzeigen