JS Bibliotheken – Ein Beispiel dafür, dass man das Rad nicht immer neu erfinden muss.

Auf dev.to gibt es einen interessanten Artikel für eine JavaScript-Bibliothek, die den Umgang mit Listen vereinfachen sollte:

https://dev.to/lars124/dealing-with-lists-in-javascript—listingjs-664

Die Kommentarsektion hat mittlerweile eh einige Kritikpunkte vorgebracht und auch wir haben dazu eine kritische Stimme beizusteuern.

Der Artikel ist ein gutes Beispiel dafür, dass man nicht alles neu machen muss. Dass man gerne andere Bibliotheken oder Lösungen verwenden kann und nicht alles von Grund auf selbst neu bauen muss.

Ich stelle mir listing.js für die meisten Usecases deutlich langsamer als
Lodash oder Underscore vor.

Natürlich hat listing.js auch ein bisserl seine Daseinsberechtigung, wenn ich keine der Anderen Bibliotheken verwenden:

Wenn man als Input sowieso schon einen String bekommt  (zb aus einem CSV oder von einer API oder vom Browser), und man will nur ein oder zwei Funktionen drauf anwenden und wieder einen String als Ergebnis bekommen,  dann könnte man das mit listing.js lösen.

Wenn man dagegen große Datenmengen sehr komplex auswerten will, dann wär lazy.js am Besten!

Wenn man nicht genau weiß, welche Funktionen man noch so brauchen könnte, ist Lodash sicher eine gute Wahl!

Erfahrungsbericht ovh als Hoster – ovh kann ich nicht weiterempfehlen

OVH gilt ja als recht günstiger Hoster, war aber schon früher in Verruf geraten.

Als aufgeschlossener Webentwickler sollte man trotzdem seine eigenen Erfahrungen gemacht haben. Das ist passiert.

Ich hab mir einen günstigen VPS der SSD-Serie geholt:

https://www.ovh.de/virtual_server/vps-ssd.xml

 

Der Preis klingt gut und PLESK als Managementtool ist auch gratis dabei.

Grundsätzliche Erfahrungen

Von Anfang an fühlte sich Plesk träge an. Auch das OVH-Verwaltungstool war nicht superwieselflink.

Auffällig war auch, dass die testweise installierten Webapps wie WordPress auf dem VPS überraschend viel Last produzierten.

Und auch viel Traffic angezogen haben, obwohl das unbekannte Testinstanzen sind.

OVH wird also anscheinend von irgendwelchen Bots o.ä. durchgescannt denke ich.

OVH Kundencenter

Das OVH Kundencenter ist manchmal einfach nicht erreichbar. Teile davon sind in französischer Sprache.

Und besonders ärgerlich sind die falschen Daten.

Hier wird zb angezeigt, dass der Host nicht erreichbar ist, ja sogar die eigenen Monitoring-Informationen können nicht geladen werden:

Fehlerhafte Anzeigen bei der Server-Übersicht. Da hat’s was…

Der Host/VPS ist sehr wohl erreichbar, FTP und SSH funktionieren….oO

 

Probleme mit Produkt-Upgrades

OVH bietet an, dass man Produkte einfach über das Kundencenter upgraden kann.

Ok! Das probieren wir aus, weil das kann im Produktivbetrieb ja auch notwendig sein.

Ursprünglich wurde der VPS SSD 1 bestellt, ich hab auf das Paket SSD 2 (siehe Screenshot oben) upgegradet.

Nun müsste ich 20GB an Festplatte zur Verfügung haben.

Naja, müsste.

Was zeigt mir Plesk an:

10GB Festplatte statt 20GB

Plesk zeigt mir 10GB Festplattenkapazität an.

Huch…sollten das nicht 20GB sein?

Zusatzoptionen

Ok, das Upgraden zu einem anderen Paket hat nicht funktioniert.

Mehr Speicherplatz wär aber schön!

Daher hab ich eine zusätzliche Festplatte dazugebucht und bezahlt.

Der  Screenshot oben ist aber gleich geblieben, es hat sich nix an der Festplattengröße geändert.

Dafür macht das Kundencenter jetzt Probleme mit diesem Menüpunkt:

Gebuchte Fesplatte? Fehlanzeige!

Ergebnis

Ich kann OVH nicht empfehlen. Der VPS war gefühlt viel langsamer als ein stinknormaler Uberspace-Shared-Webspace, es gibt Probleme beim Paketupgrade und hinzugebuchte Optionen scheinen nicht auf und können nicht verwerndet werden.

OVH ist für mich daher ein Nogo!

 

email in eigenen Projekten verwenden – Klassen und Bibliotheken für das Auslesen und Verschicken von E-Mails

E-Mails sind tot!

Definitiv.

Alle steigen um auf Slack, Mattermost, den Facebook-Messenger oder auf WhatsApp.

Seit es E-Mails gibt, sagt man ihnen ein baldiges Versterben nach.

Dennoch halten sie wacker die Fahne hoch. Mails dürften nach wie vor das meistverbreitete Kommunikationsmittel im Web sein.

Wie bekomm ich nun Mails in meine App? Easy! Denn dafür gibts mehrere Möglichkeiten/Klassen/Bibliotheken:

php-imap-client

Diese php-Bibliothek ist vor geraumer Zeit umgebaut worden und setzt jetzt auf moderneren PHP-Code.

Die Bibliothek ist eine nette Abstrahierung der PHP eigenen IMAP Funktionen.

php-imap-client erfüllt alle Wünsche wenn’s darum geht, mit IMAP Mailkonten umzugehen.

Ich kann dafür also eine Empfehlung aussprechen!

php-imap-client – https://github.com/SSilence/php-imap-client/

Die Doku ist auch aufgemotzt worden und recht umfangreich und verständlich:

Afterlogic Webmail Light API

Dieser PHP-Code ist nicht direkt dafür gedacht, als Code im eigenen Projekt integriert zu werden, kann aber so verwendet werden.

Eigentlich ist das ein Webmail-Skript.

Der Code lässt es aber zu, dass man Webmail Light auch einfach so als Klasse/Bibliothek im eigenen Code verwendet – vor allem, weil die Doku dazu sehr gut ist:

Super Doku für Afterlogic Webmail Lite

Als Beispiel, hier der Code für das Auslesen der Anzahl aller ungelesenen Mails:

https://afterlogic.com/docs/webmail-lite/integration-and-development/getting-number-of-all-or-unread-mails

Weitere Interessante

 

Welches Webhosting / shared Hosting nehmen? – Übersicht über Webhoster und vergleichende Meinung dazu!

Hier eine kleine Übersicht von Webhostern, die unserer Meinung nach verwendendswert sind!

Uberspace

Der Klassiker aus Deutschland!

Performant, günstig, kompetent und mit allen Freiheiten.

Die Leutz rund um Uberspace sind Auskenner und machen oder machten eigentlich managed Server im Brotberuf.

Uberspace lässt einem alle Freiheiten, man kann also so ziemlich alles installieren, was man will.

Der Support von Uberspace ist absolute Spitzenklasse!

 

Webhosting mit eigener IP-Adresse

Für SEO-Zwecke oder „interessante Kunden“ will man Webseiten nicht auf dem eigenen Server laufen lassen. Es ist oft unerwünscht, von einer Seite auf andere Seiten und Kunden über die IP kommen zu können.

Eine eigene IP-Adresse für eine Webseite ist daher äußerst hilfreich.

Dafür gibts:

Manitu

Hetzner

Infos zur eigenen IP-Adresse vom Hetzner-Support:

Sie können auf den Webhosting-Paketen eine eigene IP-Adresse im Rahmen der SSL-Verschlüsselung erhalten.

Siehe dazu:
https://www.hetzner.de/webhosting
–> „Account Addons“ -> „SSL-Verschlüsselung (https) mit dedizierter IP“

Diese ist primär für Clients gedacht, die noch kein SNI unterstützen. Die IP-Adresse kann auch nicht für andere Zwecke als für die Bereitstellung einer Website über HTTPS verwendet werden.

Die Sinnhaftigkeit hält sich allgemein in Grenzen, da nur sehr wenige Clients heutzutage SNI nicht unterstützen. In der Regel handelt es sich dabei um Exoten oder veraltete Software wie Android 2.3, Internet Explorer 6, …

In der Übersicht von Hetzner ist der Punkt „eigene IP“ also nicht offensichtlich erkennbar. Aber Hetzner bietet das an!

Eigene IP kostet dann monatlich € 2,9 mit einer Einrichtungsgebühr von € 9,90.

 

 

Andere

 

Andere Vergleichsseiten

Es gibt genügend andere Webseiten, die shared Hosting vergleichen.

Leider gibt es keine Seite, die komplette Infos liefert. Oft fehlt zb die Möglichkeit, nach hinzuschaltbarer IP zu durchsuchen:

Vergleich von shared Hostern bei webhostlist.de – ohne IP suche

Fileupload über den Browser – ein Überblick über diverse Lösungen

Beim Upload von Dateien über den Browser hat sich in den letzten Jahren viel getan.

Vor allem mit Canvas und JavaScript gibt es jetzt viele geniale Möglichkeiten wie

  • Bildvorschau vor dem Upload
  • Datei umbenennen
  • Bilder mit Watermarks versehen
  • Bildgröße anpassen
  • Bilder drehen, beschneiden und verändern
  • Text aus Dokumenten vor dem Upload auslesen

 

Hier also ein Überblick über diverse Möglichkeiten

filepond.js

https://pqina.nl/filepond/

Die Goodies:

  • Vanilla JavaScript – keine Abhängigkeiten zu jQuery o.ä.
  • Kann mit Base64-Dateien, Ordnerpfaden, Einzeldateien, mehreren Dateien und Links umgehen!
  • Funktioniert mit React, Vue and Angular und ist als jQuery-Plugin erhältlich.

 

jQuery-File-Upload

https://github.com/blueimp/jQuery-File-Upload

Goodies:

  • Drag’n’Drop
  • Fortschrittsanzeige
  • Kann angefangene und unterbrochene Uploads fortsetzen

Für micht interessante Links zu dem Tool, was Bildvorschau betrifft:

 

Übersicht anderer:

Webseiten und SSL – Webseiten auf SSL umstellen und betreiben

Mit let’s encrypt haben wir ja eine günstige und einfache Möglichkeit bekommen, um Seiten mit SSL-Zertifikaten abzusichern.

Es gibt aber einige Fallstricke und Dinge zu berücksichtigen, wenn man Seiten richtig mit SSL absichern will. Der Artikel soll weiterhelfen und auch Links zu interessanten anderen Artikeln liefern.

Grundsätzlich wichtige Schritte

  • 301 Redirects einrichten
  • HTTP Strict Transport Security (HSTS) einrichten – das ist wichtig, weil bei einer 301er Weiterleitung immernoch über eine unsichere Verbindung kommuniziert wird. Cookies können so zb unverschlüsselt ausgelesen werden!
  • Mixed Content aufspüren und ausbessern – oft werden Bilder per HTTP ausgeliefert. Das gibt im Browser eine Mixed-Content-Warnung!

Interessante Artikel

 

https://www.troyhunt.com/the-6-step-happy-path-to-https/ – Super Zusammenfassung zu allen wichtigen Schritten und weiterführende Infos. Absolute Leseempfehlung!

 

 

Post Thumbnail by Sean MacEntee

Lazy Loading + Bild Platzhalter + Bilder ersetzen, bis das Original geladen wurde

Lazy Loading ist eine super Sache, weil eine Webseite dadurch flotter aufgebaut wird.

Ohne Bilder schauen Seiten aber nicht gerade schön aus, daher braucht es einen Platzhalter, bis das Originalbild geladen wurde.

Dafür gibt es einige Bibliotheken, Plugins und Funktionen.

Ein interessanter Ansatz wäre es, das Bild durch ein SVG zu ersetzen. Also einfach durch ein paar Textnodes, Vektorgrafiken.

Ein Gedankenexperiment findet sich hier:

https://twitter.com/jmperezperez/status/920179771748900865

SVG-Platzhalterbilder

SVG als Platzhalter – again

https://medium.freecodecamp.org/using-svg-as-placeholders-more-image-loading-techniques-bed1b810ab2c

SVG-Tools zum Vektorisieren von Bildern und Umwandeln in SVGs – eine Sammlung von Tools

Das SVG-Format bietet einige Vorteile gegenüber anderen Grafikformaten.

SVGs sind Vektorgrafiken, können also verlustfrei vergrößert werden.

Da es sich bei Grafiken im SVG Format um Textknoten handelt, kann man auch die einzelnen Knoten direkt ansprechen und manipulieren.

Nachfolgend eine kleine Sammlung an Tools, Helferleins und Seiten im Web die beim Umgang mit SVGs helfen

SVG OMG

Code/Repo hinter SVG OMG

halftone.svg

 

Bild in SVG umwandeln mit JPNG.svg

Inkscapes Bild in SVG Umwandelfunktion „Bitmap nachzeichnen“

  • Macht aus Bild eine Vektorgrafik. Wahlweise Schwarz/Weiß, Graustufen oder farbig. Umwandlungsschritte kann man sich aussuchen, so dass man eine Vektorgrafik mit 2, 20, 100 oder x Layern bekommt!

Bild in ein Lineprint umwandeln

Pixels to SVG

Diverse Funde

 

Links

API bitte! Öffentlich ansprechbare APIs für jeden Zweck – darf’s APIssl mehr sein?

Viele Webseiten sind heutzutage kleine Webapps. Sie transportieren Daten oder Mehrwert für ihre Besucher.

Wie schön wär es da, wenn man diesen Mehwert auch weiterverwenden könnte?

Das ultimative Mitmachweb. Das revolutionäre am Web waren die Links – also von einem Thema zum anderen springen, Querverweise setzen, die einen Mehrwert bringen und ein Netzwerk an Ideen knüpfen.

APIs bringen uns Codern das gleiche auf Codeebene. APIs sind daher nicht weniger revolutionär.

Aber welche APIs gibt es? Welche Daten kann ich von anderen anzapfen und für mich selbst verwenen?

Dazu gibt es folgende Sammlungen:

 

Mache das Web  zur API

Wie gesagt, es wär schön, wenn jede Seite eine API hätte.

Da sind wir schon auf einem guten Weg, denn WordPress bringt automatisch eine JSON-API mit!

WordPress ist das meistbenutze CMS und ein großer Teil aller Seiten im Web laufen damit.

Mit der JSON-API von WordPress lassen sich also alle Daten einer Seite auslesen, so man das nicht deaktiviert!

Mehr Infos dazu gibt es hier:

MySQL/mariaDB Performance verbessern – query_cache_size anpassen

Manche Webentwickler, vor alem WordPress-Menschen, kennen folgenden Screenshot wahrscheinlich:

Was sagt uns das?

MySql/mariaDB speichern die Abfragen nicht zwischen – es wird also nix gecachet!

Dabei wär das so schön! 😀

MySQL könnte nämlich die Abfragen in einem eigenen Zwischenspeicher lagern und so ähnliche/gleiche Abfragen aus dem Cache fischen, und nicht gegen die Datenbank fahren müssen.

Wie aktiviere ich den MySQL-Cache mit query_cache_size?

Easy!

Einfach folgende Zeilen in die MySQL-Konfig schreiben, den MySQL-Server neu starten und done:

query_cache_type=1

query_cache_size=268435456

query_cache_limit=1048576

Cache und MySQL/MariaDB-Konfig in Plesk aktivieren und anpassen

  1. Zuerst muss man sich mit dem Plesk-Server per SSH verbinden, zb
    $ ssh root@155.666.77.88
  2. In das etc-Verzeichnis gehen:
    $ cd /etc
  3. Status der Datenbank-Konfiguration ansehen – also die Datei my.cnf ansehen:
    $ cat my.cnf

    Das schaut dann ca so aus:

    [mysqld]
    bind-address = ::ffff:127.0.0.1
    local-infile=0
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0
    # Settings user and group are ignored when systemd is used.
    # If you need to run mysqld under a different user or group,
    # customize your systemd unit file for mariadb according to the
    # instructions in http://fedoraproject.org/wiki/Systemd[mysqld_safe]
    log-error=/var/log/mariadb/mariadb.log
    pid-file=/var/run/mariadb/mariadb.pid#
    # include all files from the config directory
    #
    !includedir /etc/my.cnf.d

    Wir sehen hier, dass wir MariaDB und nicht mit MySQL arbeiten. Das ist wichtig! Später mehr 🙂

  4. Ändern der my.cnf mit Vim:
    $ vi my.cnf
  5. Dann geht man in den [mysqld]-Bereich. Wichtig, dass man noch nicht in den nächsten „Bereich“ geht. Der nächste Bereich wäre in unserem Beispiel zb [mysqld_safe]. Schreibt man darunter, befindet man sich schon in einer anderen Datenbank-Konfiguration!
  6. Mit dem Befehl
    *i

    kommt man in den Editierbereich und kann neue Zeilen einfügen und Zeilen in die Datei reinkopieren!

  7. Mit Druck auf die Taste ESC beenden wir die Bearbeitung.
  8. Mit dem Befehl
    :x

    speichern wir die Änderungen und beenden Vim

  9. Jetzt muss MySQL neu gestartet werden, das geht zb mit
    # sudo service mysql restart
    1. Oft kommt folgende Fehlermeldung:
      Redirecting to /bin/systemctl restart mysql.service
      Failed to restart mysql.service: Unit not found.
    2. Dann checken wir mal den mysql-Dienst
      # mysl
    3. Gibt es MySQL nicht als Dienst, kommt folgende Meldung
    4. ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
    5. Ok, also was benutzen wir? Das finden wir so heraus
      # systemctl list-unit-files | grep enabled | grep -iE '(sql|db)'
    6. Wir bekommen zb folgende Ausgabe:
      dbus-org.fedoraproject.FirewallD1.service enabled
      mariadb.service enabled
    7. Wir wissen jetzt also, dass wir MariaDB verwenden! Daher müssen wir diesen Dienst neu starten!
  10. MariaDB neu starten geht über folgende Befehle:
    1. # sudo service mariadb.service restart
    2. Oder auch über folgenden Befehl
      # systemctl restart mariadb
  11. Fertig!

Infos