Matomo ist eines der besten Webanalyse-Tools und die beliebteste Alternative zu Google Analytics.Aufgrund der immer höhreren Datenschutzbestimmungen (EU: DSGVO, Schweiz: revDSG per 1.9.2023, Art. 19 nDSG bzw. Art. 60 nDSG) in den verschiedenen Ländern ist es eine gute Möglichkeit Gesetzteskonform seine Besucher zu analsyieren.
Bis Januar 2018 hiess Matomo Piwik. Eines der grössten Vorteile von Matomo ist, dass man es selbst hosten kann. Damit behält man die vollständige Kontrolle über die Tracking-Daten und kann somit eine Webpräsenz vollkommen datenschutzkonform ausstatten.
Ich nutze Matomo schon seit 2008 und will kurz beschreiben wie man die Software nutzen kann
Matomo ist eines der besten Webanalyse-Tools und die beliebteste Alternative zu Google Analytics.Aufgrund der immer höheren Datenschutzbestimmungen (EU: DSGVO, Schweiz: revDSG per 1.9.2023, Art. 19 nDSG bzw. Art. 60 nDSG) in den verschiedenen Ländern ist es eine gute Möglichkeit Gesetzeskonform seine Besucher zu analysieren.
Bis Januar 2018 hiess Matomo Piwik. Eines der grössten Vorteile von Matomo ist, dass man es selbst hosten kann. Damit behält man die vollständige Kontrolle über die Tracking-Daten und kann somit eine Webpräsenz vollkommen datenschutzkonform ausstatten.
Ich nutze Matomo schon seit 2008 und will kurz beschreiben wie man die Software nutzen kann.
Wenn man sich entscheidet das man Matomo nutzen will, d.h. Selfhosting oder als Cloudlösung, sollte man Vor- und Nachteile Bescheid wissen. Ich beziehe mich hierfür auf das Selfhosting:
Matomo bietet ein Vielfalt an Tracking-Funktionen. Mithilfe des Tools kann man Statistiken erstellen, welche eine genaue Analyse des Nutzerverhaltens der Websitenbesucher und deren Gesamtperformance ermöglicht.
Mit Matomo kann man Besucherprofile erstellen wie z.b. wie lange ein Besucher auf einer Seite verweilt und an welcher Stelle diese wiederum diese verlassen hat. Spannend finde ich die Rangliste der meist besuchten Seiten nach Datum filterbar. Out of the Box kann man schnell einen Überblick verschaffen wer die Besucher einer Webseite sind.
Tipp: Das A und O für eine gute Analyse ist, wenn man auf seiner Webseite Ordnung hat und eine gute Struktur hat. Dies ist nicht nur für SEO nötigt, sondern auch für die Analsyse. Was immer vermieden soll ist Doppelter Content, d.h. Texte/Blogeinträge mehrmalig verwendet wird.
Sehr nützlich sind die Analsyse-Funktionen im Zusammenhang von Kapagnen. So können Schlüsselwörter für das Tracking genutzt werden wenn man z.b. Newsletter versendet. So kann man Nachweisen welche Links in einem E-Mail auch schlussendlich ein kauf erzeugte.
Spannend ist es wenn man die Anaylse betreibt woher die User kommen und wie sie auf einer Webseite traversieren. Hier ein Beispiel eines Excel-Tipp:
Eine interne Suche ist eine spezielle Art von Aktion, und wenn eine Aktion als Site Search verfolgt wird, zählt sie nicht als Pageview. Es gibt drei Möglichkeiten, wie Sie eine Site Search-Aktion verfolgen können:
Der einfachste Weg, interne Suchbegriffe zu verfolgen, ist die Angabe des URL-Parameternamens, der den Suchbegriff enthält. Standardmässig liest Matomo die URL und sucht nach einem Parameter mit einem der folgenden Namen: q, query, s, search, searchword, k, keyword
Wenn die Verfolgung der Suchergebnisse über die URL nicht möglich ist (z.B. wenn Sie eine umgeschriebene URL ohne Abfrageparameter verwenden, z.B. /search/keyword), oder wenn auch die Anzahl der Suchergebnisse verfolgen möchten, können man die folgende Javascript-Funktion verwenden:
piwikTracker.trackSiteSearch(keyword, category, searchCount)
Der Aufruf der Funktion zeichnet den Suchbegriff, die Suchkategorie und die Anzahl der Ergebnisse auf der Suchergebnisseite auf. Dies kann auf Suchergebnisseiten verwendet werden, anstatt piwikTracker.trackPageView() aufzurufen.
Mann kann sich mittels API von Matomo das Tracking selber Programmieren. Dies empfehle ich aber nur versierten Benutzer die über Programmierkenntnisse verfügen.
Als KMU oder privater Webseitenbetreiber hat man mit Matomo eine kostenlose Alternative zu Google Analytics. Man erhält ein Strauss voll Funktionen und eine einfache Installation hat man schon eine gute Möglichkeit seine Besucher zu analysieren. Für mich seit 2008 eine gute Wahl und jedes Update hat ohne grössere Probleme geklappt.
Als ich 2021 meine Synology NAS auf die Version 7.0 aktualisert habe wurde die Android App "Synology DS Cloud" inkompatible. Ich testete die NextCloud und OwnCloud als Ersatz und es zeigte sich das zwar der Synch funktionierte, aber hatte seine Nachteile, insbesondere wenn man bei den synchronisierte Daten via Filepiker zugreifen wollte musste man sich jeweils durch die Pfade durchhangeln.
Spezielle Apps die nur den Ordner Synchronisieren musste man gesondert installieren, waren aber seit Monaten nicht mehr aktualisert.
Mit der Beta-Version der Synology Drive App 3.0.0-602 ist nun endlich der Synch zurückgekehrt. Musste man in der letzten Beta ein pkg Packet installieren kann man jetzt das Beta-Programm Beitreten.
Damit die App funktioniert muss folgendes erfüllt sein:
Ich habe mich dagegen entschieden die Synology DSM (Port 5001) direkt ins Internet zu stellen. Ich begnüge mich damit das ich mich über VPN in mein Netzwerk einwähle und so die Daten aktuell halte.
Wo findet man den Synch?
Was geht was geht nicht:
Synology hat vieles "richtig" gemacht. Ein Ersatz zur Synology Cloud ist es allemal und bietete Ordner zu Order Synchronisation und funktioniert stabil. Es wäre schön wenn man zukünftig nur die Synchronisations-Port freigeben muss anstatt die ganze DSM, den das ist aus meiner Sicht ein security no-go.
Matomo 4.0.0, das nächste Major Release ist da.
Nach 10 Monaten arbeit des Matomo Teams wurde die Finale Fassung der neuen Version veröffentlicht.
Matomo 4.0.0, das nächste Major Release ist da. Nach 10 Monaten arbeit des Matomo Teams wurde die Finale Fassung der neuen Version veröffentlicht.
Matomo 4.0.0 ist seit Januar 2020 in Arbeit.
Es gibt viele Änderungen, darunter Verbesserungen der Sicherheit und des Datenschutzes und andere wichtige Änderungen, vor allem:
Diese Version ist als kritisch eingestuft.
Es wurden zwei mögliche Schwachstellen (Stored XSS und Reflected XSS) behoben, die von den Sicherheitsforschern dhbd (Hung Dao) und lboy mitgeteilt wurden.
Die Aruba 2920 Switch-Serie ist eine sichere, skalierbare und benutzerfreundliche Lösung für Netzwerke in Unternehmensperipherien, Zweigstellen und kleinen und mittelständischen Unternehmen. Diese Layer 3-Switches können mit erweiterten Tools für Sicherheit und Netzmanagement wie Aruba ClearPass Policy Manager, Aruba AirWave und cloudbasiertem Aruba Central unproblematisch bereitgestellt und verwaltet werden. Der 2920 unterstützt modulares Stacking, 10 GbE, RIP- und Access-OSPF-Routing, getunnelte Knoten, PoE+, ACLs, sFlow, solide Servicequalität und IPv6. Mit REST APIs und OpenFlow-Unterstützung ist er bereit für das softwaredefinierte Netzwerk.
Die Aruba 2920 Switch-Serie ist eine sichere, skalierbare und benutzerfreundliche Lösung für Netzwerke in Unternehmensperipherien, Zweigstellen und kleinen und mittelständischen Unternehmen. Diese Layer 3-Switches können mit erweiterten Tools für Sicherheit und Netzmanagement wie Aruba ClearPass Policy Manager, Aruba AirWave und cloudbasiertem Aruba Central unproblematisch bereitgestellt und verwaltet werden. Der 2920 unterstützt modulares Stacking, 10 GbE, RIP- und Access-OSPF-Routing, getunnelte Knoten, PoE+, ACLs, sFlow, solide Servicequalität und IPv6. Mit REST APIs und OpenFlow-Unterstützung ist er bereit für das softwaredefinierte Netzwerk.Tipp
Bevor man anfängt einen HP Switch produktiv einzusetzen empfielt es sich die Firmware anzuheben. Insbesondere die HP Aruba Switches sind mit der Firmware 16.x sehr schick geworden.
Wie so oft sind funktionen erst auf der Konsole einrichtbar. Daher muss man den Umweg über die USB-Konsole oder einer "Serielen Schnittstelle" gehen. Die neuste Generation hat hierführ ein USB-Port. Sobald man den USB-Treiber von HP installiert hat kann man mit einem Notebook sich auf die Konsole verbinden. Das beste Programm hierfür ist KiTTY. Tipp:
Man will ja nicht immer via USB-Kabel auf den Switch zugreifen. Die sicherste Methode ist der SSH Server. Zuerst müssen wir die Schlüssel generieren. Ohne das kann der SSH Server auf dem Switch nicht betrieben werden. Wir wechseln nach dem Login in den Konfigurationsmodus:
hp# config
Erstellen des Schlüssels
hp(config)# crypto key generate ssh rsa bits 1024
Nach einem Moment ist der Schlüssel erstellt. Nun können wir den Server einschalten
hp(config)# ip ssh
Jetzt ist der SHH Server aktiv und kann mit einem SSH Client wie z.b. putty verbunden werden
Um den Schlüssel anzuschauen kann man folgende Befehlszeile ausführen:
hp(config)# show crypto host-public-key
Zum Schluss kann man sich die Konfiguration anzeigen lassen
hp(config)#show ip ssh
Um ein neues VLAN mit der ID 100 zu erstellen reicht folgender Befehl:
vlan 100
Um ein VLAN zu löschen tippt man z. b. für die ID 100 folgendes ein:
no vlan 100
Um die Ports den jeweiligen VLAN zuzuweisen ist es am einfachsten ins interaktive Menü und dann ins VLAN Menü zu gehen. Dort kann man bequem die VLAN zuweisen.
Port DEFAULT_VLAN VLAN5 VLAN6 ---- + ------------ ------------ ------------ 1 | Untagged Forbid Forbid 2 | Untagged Forbid Forbid 3 | Forbid Forbid Untagged 4 | Forbid Forbid Untagged 5 | Forbid Untagged Forbid 6 | Forbid Untagged Forbid 7 | Forbid Untagged Forbid
Einen NTP Server auf dem Switch muss man über die Konsole gehen. Die Zeitzone ist hier in Minuten anzugeben. So ist die Schweiz in der Zeitzone 60 (MEZ).
time timezone 60 time daylight-time-rule western-europe timesync sntp sntp unicast sntp server priority 1 192.168.0.100
show sntp show sntp statistics
write memory
Am HP2920 hat es jeweils 2 Löcher mit der man mit einer Klammer reindrücken kann:
Nach 5 Jahren habe ich meinen PGP Schlüssel neu erzeugt und die älteren Schlüssel wiederrufen. Neu habe ich meine Key mit RSA 4096 Bit erstellt der bis 31.12.2023 gültig ist.
Mit openpgp.js ist es jetzt möglich mit einfach mitteln PGP-Nachrichten zu erstellen oder zu lesen. Mit dem neusten Update meiner Seite habe ich openpgp integriert und die Möglichkeit erschaffen das man mir PGP-Nachrichten mittels Kontaktformular zusenden kann. Dabei wird die Nachricht im Browser direkt verschlüsselt und erst danach an den Mailserver versendet.
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
MoQxZlPFn9ZqJuzkBwPDhbmTaxb+QRucnOs1EQ==
=gQJ7
-----END PGP PUBLIC KEY BLOCK-----
Der MySQL .NET Connector ist der einfachste Weg um in C# einen MySQL Server abzufragen. So habe ich mein gesamtes CMS darauf aufgebaut und eine Klasse dafür geschrieben. Ich hatte bis jetzt die Version 6.6.4 im Einsatz. Beim aktualisieren hatte ich aber unerklärliche Timeouts bei der ersten Verbindung.
Ich konnte das Problem schlussendlich identifizieren das lediglich schon die Datenbankzugriffe ohne Polling immer ~5'000ms auf dem LIVE Server dauerte. Ohne Polling war die erste Verbindung auch über ~8'000ms danach aber sehr schnell bei ~25ms. Ich konnte das Problem mit meinem Hoster relativ schnell verifizieren.
Seit der Version 6.6.5 bez. MySQL Server Version 5.6.6 wurden die so genannten Connection Attributes eingeführt. Dabei wird eine langsame WMI Abfrage erzeugt welche den ganzen Delay erzeugt.
Im MySQL Forum bin ich auf einen Eintrag gestossen der genau meine Problematik behebt. So habe ich den Patch erfolgreich bei der Version 6.9.10 angewendet. Danach waren die Verbindungen alle bei ~15ms.
From e057f0de5b8507ba758f5811c75fe737c658bf6e Mon Sep 17 00:00:00 2001 From: szalicil <szalicil@gmail.com> Date: Wed, 7 Sep 2016 11:56:52 +0200 Subject: [PATCH] client properties performance --- Source/MySql.Data/MysqlDefs.cs | 209 ++++++++++++++++++++++++----------------- 1 file changed, 125 insertions(+), 84 deletions(-) diff --git a/Source/MySql.Data/MysqlDefs.cs b/Source/MySql.Data/MysqlDefs.cs index d8ed0da..92db977 100644 --- a/Source/MySql.Data/MysqlDefs.cs +++ b/Source/MySql.Data/MysqlDefs.cs @@ -423,132 +423,173 @@ namespace MySql.Data.MySqlClient internal class MySqlConnectAttrs { - [DisplayName("_client_name")] - public string ClientName +#if !RT + static string pid; + static string version; + static string platform; + static string name; + static string os; + static string osDetails; + static string thread; + + static MySqlConnectAttrs() { - get { return "MySql Connector/NET"; } + InitPid(); + InitVersion(); + InitPlatform(); + InitName(); + InitOs(); + InitOsDetails(); + InitThread(); } -#if !RT - [DisplayName("_pid")] - public string PID + private static void InitPid() + { + pid = string.Empty; + try + { + pid = System.Diagnostics.Process.GetCurrentProcess().Id.ToString(); + } + catch (Exception ex) + { + System.Diagnostics.Debug.WriteLine(ex.ToString()); + } + } + + private static void InitVersion() + { + version = string.Empty; + try + { + version = Assembly.GetAssembly(typeof(MySqlConnectAttrs)).GetName().Version.ToString(); + } + catch (Exception ex) + { + System.Diagnostics.Debug.WriteLine(ex.ToString()); + } + } + + private static void InitPlatform() + { + platform = Is64BitOS() ? "x86_64" : "x86_32"; + } + + private static void InitName() + { + name = Environment.CommandLine; + try + { + string path = Environment.CommandLine.Substring(0, Environment.CommandLine.IndexOf("\" ")).Trim('"'); + name = System.IO.Path.GetFileName(path); + if (Assembly.GetEntryAssembly() != null) + name = Assembly.GetEntryAssembly().ManifestModule.Name; + } + catch (Exception ex) + { + name = string.Empty; + System.Diagnostics.Debug.WriteLine(ex.ToString()); + } + } + + private static void InitOs() { - get + os = string.Empty; + try { - string pid = string.Empty; - try + os = Environment.OSVersion.Platform.ToString(); + if (os == "Win32NT") { - pid = System.Diagnostics.Process.GetCurrentProcess().Id.ToString(); + os = "Win"; + os += Is64BitOS() ? "64" : "32"; } - catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString()); } - - return pid; + } + catch (Exception ex) + { + System.Diagnostics.Debug.WriteLine(ex.ToString()); } } - [DisplayName("_client_version")] - public string ClientVersion + private static void InitOsDetails() { - get + osDetails = string.Empty; + try { - string version = string.Empty; - try + var searcher = new System.Management.ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem"); + var collection = searcher.Get(); + foreach (var mgtObj in collection) { - version = Assembly.GetAssembly(typeof(MySqlConnectAttrs)).GetName().Version.ToString(); + osDetails = mgtObj.GetPropertyValue("Caption").ToString(); + break; } - catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString()); } - return version; + } + catch (Exception ex) + { + System.Diagnostics.Debug.WriteLine(ex.ToString()); } } + private static void InitThread() + { + thread = string.Empty; + try + { + thread = System.Diagnostics.Process.GetCurrentProcess().Threads[0].Id.ToString(); + } + catch (Exception ex) + { + System.Diagnostics.Debug.WriteLine(ex.ToString()); + } + } + + [DisplayName("_client_name")] + public string ClientName + { + get { return "MySql Connector/NET"; } + } + + [DisplayName("_pid")] + public string PID + { + get { return pid; } + } + + [DisplayName("_client_version")] + public string ClientVersion + { + get { return version; } + } + [DisplayName("_platform")] public string Platform { - get { return Is64BitOS() ? "x86_64" : "x86_32"; } + get { return platform; } } [DisplayName("program_name")] public string ProgramName { - get - { - string name = Environment.CommandLine; - try - { - string path = Environment.CommandLine.Substring(0, Environment.CommandLine.IndexOf("\" ")).Trim('"'); - name = System.IO.Path.GetFileName(path); - if (Assembly.GetEntryAssembly() != null) - name = Assembly.GetEntryAssembly().ManifestModule.Name; - } - catch (Exception ex) - { - name = string.Empty; - System.Diagnostics.Debug.WriteLine(ex.ToString()); - } - return name; - } + get { return name; } } [DisplayName("_os")] public string OS { - get - { - string os = string.Empty; - try - { - os = Environment.OSVersion.Platform.ToString(); - if (os == "Win32NT") - { - os = "Win"; - os += Is64BitOS() ? "64" : "32"; - } - } - catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString()); } - - return os; - } + get { return os; } } [DisplayName("_os_details")] public string OSDetails { - get - { - string os = string.Empty; - try - { - var searcher = new System.Management.ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem"); - var collection = searcher.Get(); - foreach (var mgtObj in collection) - { - os = mgtObj.GetPropertyValue("Caption").ToString(); - break; - } - } - catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString()); } - - return os; - } + get { return osDetails; } } [DisplayName("_thread")] public string Thread { - get - { - string thread = string.Empty; - try - { - thread = System.Diagnostics.Process.GetCurrentProcess().Threads[0].Id.ToString(); - } - catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString()); } - - return thread; - } + get { return thread; } } - private bool Is64BitOS() + private static bool Is64BitOS() { #if CLR4 return Environment.Is64BitOperatingSystem; -- 2.9.0.windows.1
[#f]syntax|null[/#f]
Seit 24. Oktober 2008 ([#f]datediff|24/10/2008[/#f]) setzte ich Piwik ein. Sie ist die echte alternative zu Google Analytics. Gestartet mit der Beta-Version 0.2 mit einer überschaubaren Funktionsvielfalt wurde daraus ein grossartiges Tool, welches kaum Wünsche übrig lässt. Im Dezember 2017 wurde die letzte Version 3.2.1 veröffentlich.
Am 12. Januar 2018 ist offizell Matomo (Jap. für Ehrlichkeit) als neuer Major Release in der Version 3.3.0 erschiehen.
Seit 24. Oktober 2008 ([#f]datediff|24/10/2008[/#f]) setzte ich Piwik ein. Sie ist die echte alternative zu Google Analytics. Gestartet mit der Beta-Version 0.2 mit einer überschaubaren Funktionsvielfalt wurde daraus ein grossartiges Tool, welches kaum Wünsche übrig lässt. Im Dezember 2017 wurde die letzte Version 3.2.1 veröffentlich.
Am 12. Januar 2018 ist offizell Matomo (Jap. für Ehrlichkeit) als neuer Major Release in der Version 3.3.0 erschiehen.
Vieles hat sich zur Version 3.2.1 nicht geändert. Es wurden 53 Tickets geschlossen.
This release brings a big new improvement to Piwik: now you can easily purchase premium paid plugins from the Marketplace directly within your Piwik. Simply purchase one or more plugins, enter your license key, and you’re done! All your Premium plugins can now be downloaded and installed in just one click just like any other free plugins.
7 tickets have been closed by 3 contributors!
This release brings a big new improvement to Piwik: now you can easily purchase premium paid plugins from the Marketplace directly within your Piwik. Simply purchase one or more plugins, enter your license key, and you’re done! All your Premium plugins can now be downloaded and installed in just one click just like any other free plugins.
List of 7 tickets closed in Piwik 2.17.0: