Eine einzelne Datenbank pro User? Ist multi tenancy ein guter Weg?

Eine eigene Datenbank pro User zu anzulegen klingt nach einer guten Idee.

Dadurch ergeben sich keine unnötigen Wartezeiten bei Abfragen, Indices wachsen nicht in das Unendliche an und natürlich sind die Daten von anderen Benutzern abgegrenzt.

Es klingt wirklich verlockend, in einer Datenbank nur die Daten eines Benutzers zu haben.

Eine Umsetzung ist ja auch nicht so schwer.

Die Basis-Software läuft mit einer Datenbank und wenn man auf User-Daten zugreifen will, dann ändert man einfach die Einstellungen für die Datenbank-Verbindung.

Solche Umsetzungen gibt es genug in der freien Wildbahn.

WordPress Multisite-Umgebungen funktionieren so ähnlich.
In einer Datenbank gibt es eigene Tabellen pro Multisite.

 

Aber ist das ganze eine gute Idee?

Manche Experten sagen: NEIN!

Weil der Aufwand für das Migrieren viel zu groß ist:

 

 

Bekannte Services selbst hosten

Wow! Jemand hat sich die Mühe angetan, um diese Liste zu erstellen:

https://github.com/awesome-selfhosted/awesome-selfhosted

 

Was genau ist an der Liste so toll?

Das ist eine Auflistung an Diensten, die du selbst hosten kannst.

Deine eigenen Google Maps Alternative, deine eigenen Online-Buchhaltung oder Rechnungssoftware, dein eigenens Youtube.

Das sind Beispiele aber sollen zeigen, was gemeint ist und wo die Reise hingeht.

Es gibt für so ziemlich jeden erdenklichen Anwendungsfall eine open source Software, die man sich gratis herunterladen kann.

Herunterladen und auf eigenem Server installieren und betreiben.

Ich finde diese Auflistung umwerfend und inspirieren. Da ist viel Interessantes dabei!

Mit alten Internet Explorer Versionen testen? Virtuelle Maschinen von Microsoft helfen!

Der Internet Explorer ist tot!

Schon seit längerer Zeit schwindet der Marktanteil vom Internet Explorer.

Der richtige Schrecken begann 2007, als die Version 7 veröffentlicht wurde.

Der IE 7 hielt sich verdammt lange, zu lange. Aber im Corporate-Umfeld war der dennoch noch ein Jahrzehnt später anzutreffen, weil die Uhren halt langsam ticken.

Richtig weh tu auch der Internet Explorer 11 aus dem Jahr 2013. Wir Webentwickler mussten den bis vor nicht allzu langer Zeit immer noch unterstützen.

Für nicht eingeweihte: Der Internet Explorer war nie standardkonform. Man musste immer Hacks bauen, damit die eigenen (modernen) Lösungen auch am IE funktionierten. Bad!

Noch schlimmer: Entwickler arbeiten auf Linux und Mac-Geräten.

Wie komm ich da an einen Internet Explorer?

Hoch lebe der Internet-Explorer

Microsoft selbst schafft hier Abhilfe!

MS bietet virtuelle Maschinen (VM) zum Testen an.

Das sind Betriebssystem-Abbilder, die man, wie ein stinknormales Programm, starten kann.

Das bekannteste Programm um eine VM zu starten ist VirtualBox.

Ein super Programm, dass auf Linux, Mac und Windows läuft.

Auch andere Virtualisierungslösungen werden unterstützt:

Passwort = Passw0rd

Weil das oft übersehen wird, es ist einfach und es steht auf der Website selbst:
„The password to your VM is „Passw0rd!““

Das Passwort lautet also:
Passw0rd

Links

https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/

Interessantes aus der Webentwickler-Welt im Jänner

Schöne Checkbox-Toggle Lösung

https://codepen.io/t_afif/pen/wvrmBNg

 

Object-Fit Fallback in Javascript

Object-Fit wird oft eingesetzt, um ein Bild in ein Element einzupassen.

Man macht das auch gerne mit background-image.

Das Ergebnis sind eingepasste Bilder, die ein passendes Seitenverhältnis haben und dadurch oben oder unten etwas abgeschnitten sind.

Leider wird object-fit nicht im Internet-Explorer unterstützt:

Jaja, der IE ist tot und wer interessiert sich noch dafür?

In manchen Branchen wie Versicherungen und Banken, wo IT-Umwälzungen aber dauern, trifft man noch öfter auf den IE.

Daher braucht es für object-fit einen Fallback, und hier gibt es eine schöne JS-Lösung und hier in jQuery.

Natürlich lässt sich das aber auch unfancy mit gutem, alten CSS lösen!

Umsortierung der Elemente bei display:table

Flexbox ist der neue Meister im Anordnen von Elementen.

Ich persönlich greife aber gerne zu display.table in manchen Fällen, auch wegen der Kompatibilität zu älteren Browsern:

Möchte ich, wie zb in dem Design hier:

Den blauen Block auf mobilen Geräten über dem weißen haben, kann ich das auch bei display:table lösen!

Wie? display: table-footer-group ist dein Freund und wird hier beschrieben: https://www.mediaevent.de/css/display-table.html

 

Element quadratisch machen

Das hört sich auf den ersten Blick ja gar nicht so schwer an, oder?

Einfach Höhe und Breite mit den gleichen Werten setzen.

Aber wie macht man das responsive?

Hier kommt der alte padding-bottom Trick zur Anwendung!

Wenn padding-bottom den gleichen prozentuellen Wert wie die Breite hat, dann wird die Höhe exakt an die Breite angepasst!

Also

height: 0;
padding-bottom: 50%;
width: 50%;

Apple TV UI 3D Bildeffekt nachmachen – Sag hallo zu atropos.js

Schöner 3D Bildeffekte mit atropos.js

Es ist gar nicht so einfach, diesen Effekt zu beschreiben, daher gibt es gleich ein GIF. Nur so viel: Auf Facebook sieht man oft diese Bewegtbilder, wo man mit der Maus hin und herfahren kann und das Bild bewegt sich mit.

Beim AppleTV gibt es für die Vorschaubilder auch so einen Effekt. Diesen hier:

 

Der Autor beschreibt atropos.js als „a stunning touch-friendly 3D parallax hover effect.“

Also einen atemberaubenden 3D-Parallax-Hover Effekt, der auch auf Touchscreens funktioniert.

Also das GIF oben erklärt es eindeutiger.

Anyway, ein sehr interessanter Effekt, den ich über
Timo Ernst gefunden habe. Er hat auch ein schönes Video dazu gemacht. Die Demodaten finden sich hier https://github.com/valnub/atropos-demo

Colorbox – eine jQuery Lightbox

Colorbox ist eine oft empfohlene und umfangreiche Lightbox.

Screenshot der Seite zu Colorbox
Screenshot der Seite zu Colorbox

Die Library ist nur 10KB groß, wenn man die Daten komprimiert sogar nur 5KB.

Beispiele findet man hier: https://www.jacklmoore.com/colorbox/example1/

Hooks und Callbacks

Einer der wichtigsten Dinge in der Webentwicklung bei solchen Librarys sind Hooks und Callbacks.

Weil Lightboxen oft nicht nur zum stupiden Anzeigen von Bildern und Inhalten benötigt wird, sondern oft in umfangreiche Funktionalitäten eingebaut wird.

Daher werden Funktionen benötigt, um Usereingaben auch in der Lightbox zu triggern, und das ist bei Colorbox möglich:

Mehrsprachigkeit

Will man die Texte/Beschriftung ändern, so ist das easy möglich:

Zeigt die Einstellungen zur Mehsprachigkeit

 

Mehr vom Autor von Colorbox kann man hier einsehen:

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