Ankündigung

Einklappen
Keine Ankündigung bisher.

RSS(log) oder Eventanzeige in der CometVisu uvm.

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #46
    Zitat von makki Beitrag anzeigen
    Naja, so schlimm ist das PHP doch nicht, ich hab mich zurechtgefunden; kann man bestimmt irgendwie OO-mässig "besser" (lies: für mich unübersichtlicher) machen aber..
    Das hier verwendete PHP ist sehr simpel und ohne OO.
    Aber bischen Aufräumen könnte es noch brauchen, ist halt aus einem Proof.-of-Concept entstanden...
    Zitat von makki Beitrag anzeigen
    (nicht aus der DB löschen! also zusätzliches Feld, wir haben Platz bis zum St. Nimmerleinstag)
    Ich lass Euch da gerne mal machen, das scheint mir gerade genau in die richtige Richtung zu gehen

    Neben dem vielen Platz: ich hab auch vorgesehen, dass man (ggf. per Cron zyklisch) altes aus der DB löschen kann...
    TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und als KNX Visu die CometVisu auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

    Kommentar


      #47
      Ich habe das quasi fertig, einschließlich eines kleinen Perl-Skripts, dass die Datenbank konvertiert. Bitte bis morgen Abend warten.

      Gruß,

      Der Jan
      KNX, DMX over E1.31, DALI, 1W, OpenHAB, MQTT

      Kommentar


        #48
        Zitat von Chris M. Beitrag anzeigen
        Neben dem vielen Platz: ich hab auch vorgesehen, dass man (ggf. per Cron zyklisch) altes aus der DB löschen kann...
        Nunja, das braucht man doch nicht über den Cron zu machen. Man kann doch einfach nach dem Aufruf des scripts zum Abfragen der Daten einfach alle Daten wo t < time() - dt ist löschen. Das Löschen sollte nicht viel Zeit benötigen, so dass es hier kein Problem geben wird.

        Habe das an anderer Stelle mit großen Datenmengen am Laufen (ich träume faktisch in PHP) :-)

        Gruß...netsrac

        Kommentar


          #49
          Löschen von Daten in einer Datenbank ist annähernd kostenlos - die werden nur als gelöscht markiert.

          Das teure ist das Optimieren, dass dann real die Daten rausschmeißt. Hier sollte man sehr vorsichtig sein, wann man das anstößt.

          (Mir ist schon klar, dass die Datenmenge am WG für eine DB lächerlich ist. Aber dennoch muss man die Ressourcen nicht mit beiden Händen aus dem Fenster schmeißen. Und da ich schon 1.2 sec Latenz bei den Plugins habe, bin ich vorsichtig mit Dingen, die "interaktive" Laufzeit kosten. Ein Cron ist dagegen zur Rechten Zeit - Montag, 4 Uhr, oder so - unkritisch)
          TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und als KNX Visu die CometVisu auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

          Kommentar


            #50
            Ob cron oder Plugin ist sicher eher sekundär, also warten wir auf JNK's commit und netsrac es dann locker richtig zu träumen
            Ich hab mit dem (rsslog)|(sqlite) noch viel vor..

            Makki

            P.S.: hab ich schonmal erwähnt das ich SQL richtig gern mag?..

            Edit: Beim (nicht) löschen geht es übrigens um was anderes als den Speicherplatz:
            Nachvollziehbarkeit!
            Ich denke hier an professionelle Anwendungsfälle, wo Meldungen/Störungen der GLT bestätigt werden.. dem würde ich eine eigene ack_actions-Tabelle spendieren aber mit dem normalisieren von Datenbanken verschreckt man halt auch schnell normale Menschen
            EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
            -> Bitte KEINE PNs!

            Kommentar


              #51
              Habe gesehen, das die aktuelle Version im SVN jetzt auch popups hat. Super!

              Einziges Problem ist es, dass Popup wieder verschwinden zu lassen. Ein Click in den Frame (bestimmt ein iframe) macht nix, man muss den Platz zwischen Scrollbar und popup Rand finden und dort klicken. Nicht so schön und auch nicht intuitiv.

              Ich denke, vielleicht könnte man bei allen Popup's mit dem Bekannten "X" am rechten oberen Rand arbeiten. Ich denke das versteht dann jeder...

              Just my 2 cents...

              Netsrac

              Kommentar


                #52
                Gerade mal meine rsslog Einträge auf Tags umgebaut. So weit so gut. Allerdings will nun die Anzeige in der CV nicht mehr:

                Code:
                itemClasses.match(/id=[0-9]*/) is null
                [Break On This Error]     
                
                var id = itemClasses.match(/id=[0-9]*/)[0].split('=')[1];
                
                structure_plugin.js: Line 209
                das zugehörige RSS sieht so aus:
                Code:
                <?xml version="1.0"?><rss version="2.0">   <channel>     <title>RSS supplied logs</title>     <link>http://myhome.eismond.net/rsslog/rsslog.php</link>     <description>RSS supplied logs</description>   <item><title> [mytag2,Mytag1]</title><description>Content</description><pubDate>2012-02-13T11:04:02+01:00</pubDate></item>   </channel> </rss>
                Classes sind für die Tags noch nicht im CSS definiert. Vielleicht liegt hier das Problem?!

                Danke..Netsrac

                Kommentar


                  #53
                  Nein, das Problem ist, dass dein rsslog.php noch nicht upgedatet ist (commit folgt) und Du die Datenbank noch "konvertieren" musst. Script folgt im SVN ebenfalls heute.

                  Gruss,

                  der Jan
                  KNX, DMX over E1.31, DALI, 1W, OpenHAB, MQTT

                  Kommentar


                    #54
                    Hallo Jan,

                    vielleicht könntest Du in der SVN - Version 703 in der rsslog_correct.pl folgendes ändern
                    Code:
                    -my $logdb = '/var/www/rsslog.db';
                    +my $logdb = '/etc/wiregate/rss/rsslog.db';
                    Dann paßt es auch zur rsslog.php und zur rsslog.pl

                    vG
                    Wolfgang

                    Kommentar


                      #55
                      Zitat von makki Beitrag anzeigen
                      Edit: Beim (nicht) löschen geht es übrigens um was anderes als den Speicherplatz:
                      Nachvollziehbarkeit!
                      Je nach dem.
                      Löschen+Optimieren ist eine reine Laufzeit-Frage.
                      Nachvollziehbarkeit die des Audit-Trails.
                      => Beides kann wichtig sein, ist aber sicher jeweils ein anderer Kontext.

                      Wem diese Nachvollziehbarkeit so wichtig ist (und ich verstehe, dass es diese Fälle gibt!), der möge bitte auch mit User-Berechtigungen beim DB Zugriff arbeiten. Und da würde dann einfach nur ein INSERT erlaubt werden, denn ändern ist dann auch nicht. Bzw. man arbeitet per Trigger, etc. pp. für's Log.
                      => Alles schön und gut, hier müssen wir einen simplen und billigen Weg für die meisten finden, der aber auch für's Geschäftsumfeld geeignet / kompatibel ist.
                      (Vermutlich würde dann auch kein SQLite eingesetzt werden, sondern ein remote eh vorhandener DB Server mit geeigneter Backup-Strategie)
                      Zitat von makki Beitrag anzeigen
                      aber mit dem normalisieren von Datenbanken verschreckt man halt auch schnell normale Menschen
                      Wen's da verschreckt, der darf keine DBs programmieren.
                      Wir heben ja genug außenrum, wo man sich austoben kann und darf.
                      TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und als KNX Visu die CometVisu auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

                      Kommentar


                        #56
                        Ich überlege gerade, ob es nicht sinnvoll wäre, z.B. eine Leerzeile oder ein <hr> bei Tagessprung zu machen.

                        So könnte man sich eventuell das Datum sparen und würde dennoch leicht erkennen, was von heute und was von gesern war.

                        Prinzipiell muss man ja nur "%d" von aktuellen und vorherigen Eintrag vergleichen und beim Unterschied eine Leerzeile einfügen.

                        Ich denke mal, dass man das geschickterweise einfach mit einem CSS-Eintrag macht, wo man das Verhalten definieren kann....

                        ...oder andere Ideen?

                        Kommentar


                          #57
                          Okay...statt Wünsche zu äußern, habe ich mich mal selber rangesetzt...vielleicht hat ja jemand Lust, die folgenden Änderungen zu committen:

                          Code:
                          *** structure_plugin.js.org    2012-02-15 21:20:46.000000000 +0100
                          --- structure_plugin.js    2012-02-15 22:08:37.000000000 +0100
                          ***************
                          *** 182,188 ****
                                        var row = 'rsslogodd';
                                        var last = itemoffset+displayrows;
                                        last = (last>itemnum) ? itemnum : last;
                          !             
                                        for (var i=itemoffset; i<last; i++) {  
                                          var idx = i;
                                          idx = (i>=itemnum) ? (idx = idx - itemnum) : idx;
                          --- 182,192 ----
                                        var row = 'rsslogodd';
                                        var last = itemoffset+displayrows;
                                        last = (last>itemnum) ? itemnum : last;
                          !            
                          !             var separatordate     = 0;
                          !             var separatoradd      = false;
                          !             var separatorprevday  = false;
                          ! 
                                        for (var i=itemoffset; i<last; i++) {  
                                          var idx = i;
                                          idx = (i>=itemnum) ? (idx = idx - itemnum) : idx;
                          ***************
                          *** 196,207 ****
                                            itemHtml = (o.timeformat) ? 
                                              (itemHtml.replace(/{date}/, entryDate.strftime(o.timeformat) + '&nbsp;')) : 
                                              (itemHtml.replace(/{date}/, entryDate.toLocaleDateString() + ' ' + entryDate.toLocaleTimeString() + '&nbsp;'));
                                          } else {
                                            itemHtml = itemHtml.replace(/{date}/, '');
                                          }
                          !                             
                          !               var $row = $('<' + o.wrapper + ' class="rsslogRow ' + row + '">').append(itemHtml);
                          !                             
                                          var title = item.find('title').text();
                                          var itemClasses = title.substring(title.search(/\[/)+1,title.search(/\]/)).replace(/\,/g, ' ');
                                          if (itemClasses) {
                          --- 200,219 ----
                                            itemHtml = (o.timeformat) ? 
                                              (itemHtml.replace(/{date}/, entryDate.strftime(o.timeformat) + '&nbsp;')) : 
                                              (itemHtml.replace(/{date}/, entryDate.toLocaleDateString() + ' ' + entryDate.toLocaleTimeString() + '&nbsp;'));
                          + 
                          +                 thisday = entryDate.strftime('%d');
                          +                 separatoradd = ((separatordate > 0) && (separatordate != thisday));
                          +                 separatordate = thisday;
                                          } else {
                                            itemHtml = itemHtml.replace(/{date}/, '');
                                          }
                          !    
                          !               tmprow = row;
                          !               if (separatoradd) { tmprow += ' rssseparator'; separatorprevday = true; }
                          !               if (separatorprevday == true) { tmprow += ' rssprevday'; }
                          !                        
                          !               var $row = $('<' + o.wrapper + ' class="rsslogRow ' + tmprow + '">').append(itemHtml);
                          !                            
                                          var title = item.find('title').text();
                                          var itemClasses = title.substring(title.search(/\[/)+1,title.search(/\]/)).replace(/\,/g, ' ');
                                          if (itemClasses) {
                          Es passiert folgendes:

                          Beim Datumssprung wird ein "rssseparator" gesetzte und alle nachfolgenden Einträge bekommen dann ein "rssprevday".

                          Mittels folgenden zwei Elementen im rsslog.css:

                          Code:
                          .rssseparator {
                            border-top-style: dotted;
                          }
                          
                          .rssprevday {
                            opacity: .5;
                            filter: alpha(opacity=50);
                          }
                          Kann man z.B. eine Linie als separator ziehen, zusätzlich werden alle Einträge vom Vortag schwächer angezeigt.

                          Hoffe es gefällt...

                          Gruß, Netsrac

                          Kommentar


                            #58
                            Zitat von Chris M. Beitrag anzeigen
                            Wem diese Nachvollziehbarkeit so wichtig ist (und ich verstehe, dass es diese Fälle gibt!), der möge bitte auch mit User-Berechtigungen beim DB Zugriff arbeiten.
                            In meinem "normalen" Arbeitsumfeld gebe ich dir 100% Recht!
                            Aber wenn ich jetzt die geistige Anpassung an die Gebäudetechnik vornehme (Security wird - wenn überhaupt - durch "geheime" URLs gemacht) dann denke ich mir: so schlecht sind wir hier ja garnicht.
                            Der Unterschied ist: wir könnten jederzeit, wenn wir wollten
                            Aber hier ist über die Jahre auch eine gewisse Ernüchterung eingekehrt: der Kunde will es nicht (verstehen/wollen) also: for what!?
                            Der zweite Punkt ist: zuwas soll ich ein System (z.B. Logeinträge die von KNX-Gruppenadressen kommen) mit mehrstufiger AAA absichern, wo vorher das auslösende Telegramm mit --A übers LAN huscht? (das letzte A, Accounting, also Loggen, macht auch nur das WG)

                            Wirkliche Sicherheit wird eine individuelle Lösung bleiben, wo man jemanden Fragen muss, der sich damit auskennt; Die Security ist immer nur so stark wie das schwächste Glied.. Was hilft es perfekte Rechte am Webserver zu haben, wenn hanni&nanni mit einem statischen, 5stelligen PW aus Brasilien druff können..
                            Ergo, das ist in dem Kontext IMHO vergebene Liebesmüh, wieso sollte ich mir
                            Mühe geben die DB zu schützen, wenn der komplette Rest offen wie ein Scheunentor ist? In dem Kontext: wer an VdS-Alarmanlagen glaubt: selber mumpitz, nur anders verpackt..

                            Vorgestern erst gemacht, Zertifikatsbasierte Authentisierung für 14 User die intern &extern nur eben die Visu-Seite aufrufen können die sie sollen.. Das sind halt mal 248 Zeilen Apache-config (90% gescripted aber trotzdem nicht "einfach")

                            Zitat von netsrac Beitrag anzeigen
                            Okay...statt Wünsche zu äußern, habe ich mich mal selber rangesetzt...
                            Klingt gut!
                            Wiegesagt, wenn Du ein bisschen weisst, was du da machst (sieht so aus) und die Sachen sauber testest ist es auch kein Thema, Schreibzugriff aufs SVN zu bekommen, eMail an Chris oder mich.
                            Wir freuen uns über jeden, der mitarbeiten will! ob mit oder ohne WG..

                            Makki
                            EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                            -> Bitte KEINE PNs!

                            Kommentar


                              #59
                              Zitat von makki Beitrag anzeigen
                              Klingt gut!
                              Wiegesagt, wenn Du ein bisschen weisst, was du da machst (sieht so aus) und die Sachen sauber testest ist es auch kein Thema, Schreibzugriff aufs SVN zu bekommen, eMail an Chris oder mich.
                              Wir freuen uns über jeden, der mitarbeiten will! ob mit oder ohne WG..
                              Naja, es ist immer besser keine Ahnung von was zu machen, aber ich kann davon leben :-)

                              Das Problem mit dem "Mitmachen" ist vorallem ein zeitliches Problem. Im Moment macht es mir Spaß und ich kann da mal ein oder zwei Stündchen freischaufeln, aber ich kann nie garantieren, wie lange das so bleibt.

                              Was das Committen angeht - danke für die Blumen - ich habe schon größere Software-Projekte geleitet und da war es eigentlich immer ein no-go, in dem Code eines Anderen neue Features einzubauen, ohne das mit dem ursprünglichen Author abzusprechen. Lediglich Fehler durften / mussten gefixed werden.

                              Zwar funktionieren meine Patches, dennoch sollen man doch schauen, das es nicht gegen die Ideen, Wünschen und geplanten Features des ursprünglichen Erstellers arbeitet. So gesehen würde ich eigentlich immer lieber einen Patch posten, statt still und heimlich eine Änderung zu submitten.

                              Müsste jetzt an den Anfang vom Thead scrollen um zu schauen, wer das war :-)

                              Gruß, Netsrac

                              Kommentar


                                #60
                                zum Separator: Ich habe das noch etwas umgebaut, wird prinzipiell aber im nächsten commit enthalten sein.

                                Zum "im Code anderer rumpfuschen": Das ist so eine Sache, ich trau mich da auch an manchen Stellen nicht so richtig ran. Insbesondere, wenn es um "Design-Fragen" geht. Was weiss ich, ob das ästhetische Empfinden des Design-Erstellers left-aligned Button-Labels toll findet oder ob das schlicht vergessen wurde auf center-aligned zu setzen.

                                Ich fände gut, wenn wir für einzelne Teile "Maintainer" festlegen, mit denen zumindest alles was über einen reinen Bugfix hinausgeht besprochen wird. Das betrifft insbesondere die CSS-Files der Designs und die Plugins.

                                Gruss,

                                der Jan
                                KNX, DMX over E1.31, DALI, 1W, OpenHAB, MQTT

                                Kommentar

                                Lädt...
                                X