Programmierung

Alles rund um Programmierung

Vue.js - JavaScript Framework für clientseitige Webanwendungen

Veröffentlicht am

Anfangs bla bla Als erster Post des Tag Vorstellungsrunde möchte ich mit Vue.js beginnen. Ein stabiles und leicht zu erlernenedes Framework. Schnell zum einarbeiten, debuggen und benutzen. Und trotzdem flexibel genug um erweitert oder angepasst zu werden. Ich nutze es beruflich und privat und muss sagen das der Workflow mit Vue.js wirklich ungeschlagen ist. Das ganze nun mittlerweile seit gut einem Jahr und so möchte ich auch mal meine Erfahrungen mit dem Framework teilen. Einstieg Der Einstieg in Vue ist extrem simpel. Es gibt eine exzellente Onlinedokumentation in der man sich schnell und unkompliziert zu recht findet. Parallel zu der bloßen Theorie kann ich nur empfehlen die vue-cli gleich zu installieren und live mit zu testen und parallel zu lesen. Mit den Grundzügen ist man dann eigentlich nach ein paar Stunden gut vertraut. Bei tiefer gehenden Fragen und Problemen auf die man zu Beginn stößt lassen sich ebenfalls gut nachlesen. Für was kann ichs nutzen? Simpel gesagt für Browseranwendungen. Am besten eignet sich Vue.js für Single Page Applications oder auch um seine Website mit kleinen dynamischen Elementen aufzuhübschen oder die Serveranwendung ein kleines Stück feedbackreicher zu gestalten und dem Nutzer einen Mehrwert zu bieten. Grundsätzlich kann sie aber auch als Bibliothek verwendet werden. So ist es ein richtiger Allrounder und eignet sich für eigentlich alle Größen von Anwendungen. Hilfreich sind hierbei der extrem kleine Memory-Footprint und die kurzen Ladezeiten dank kleiner Artifakte. Lernkurve im Vergleich zu Angular & Co. Vue.js hat einige grundlegende Prinzipien die aber…

Weiterlesen …

Ist die Programmiersprache irrelevant?

Veröffentlicht am

Intro Das ist eine der wohl häufigsten Fragen die zwischen Anfängern aber auch erfahrernen Programmierern heiß diskutiert wird. Gerade im akademischen Umfeld und der Ausbildung hört man oft "die Sprache ist grundsätzlich egal". Würde eine Sprache reichen? Doch warum gibt es dann so viele von Ihnen? Warum programmieren wir dann nicht alle mit C oder C++? Gibt es vielleicht doch Unterschiede? - Natürlich gibt es Unterschiede. Ob es nun die besonderen Funktionen sind, die bei Nebenläufigkeit unterstützen oder eine bestimmte darunter liegende Architektur, wie das z. B. nur ein Kern genutzt wird oder breitere APIs mitgeliefert werden. Jede Sprache entstand aus einer Problemstellung heraus. Prominentestes Beispiel hierfür ist wohl Java. Eine Sprache die geschaffen wurde, um verschiedene Plattformen abzudecken. "Write once - Run anywhere". Ziel war die Schaffung einer einheitlichen Plattform für alle gängigen Betriebssysteme, aber am Besten für jedes. Dieses Ziel wurde sehr gut erreicht, aber es hat den Nachteil, dass man eben nicht spezifisch auf jedes Betriebssystem eingehen kann. Also eher ungeeignet für sehr auf das OS oder die Hardware ausgerichtete Einsatzzwecke. Grundsätzlich ist sie ja eine "general purpose language", zu gut Deutsch eine "Universelle Sprache". Egal ob man ne GUI braucht oder einen hochverfügbaren Server oder sogar für die Entwicklung von Embedded Systems. Wobei hier ein ganz klarer Trend erkennbar ist das Oracle, die Firma hinter Java, die GUI-Entwicklung auf Dauer eher vernachlässigen will. Details hierzu würden hier den Rahmen sprengen und kommen vielleicht mal in einem anderen Post.…

Weiterlesen …

Cross Plattform UI - Ein Trauerspiel

Veröffentlicht am

Einführung Zuerst einmal zum Begriff "Cross Plattform UI". Ich verstehe darunter grundsätzlich "Eine UI für alle gängigen Plattformen". Im nativen Bereich meint man hier so gut wie immer ein Betriebssystem (Windows, Linux, Mac, Android ...) oder eine Laufzeitumgebung (Java Runtime Environment, .NET Runtime, Python, ....). Oder im Web von einem Browser (Chrom[ium]/Firefox, Safari, ...). Soweit so gut, also viele Plattformen, selbe Benutzeroberfläche. Wo liegen jetzt Probleme? Nativ und doch plattformunabhängig Klingt doch toll oder? - Ich designe eine Oberfläche genau einmal und verwende sie auf allen meinen Zielplattformen. Doch nicht immer will der Nutzer auf jeder Platftorm die gleiche UI sehen, vielleicht will er nicht mal merken das er gerade eine Systemanwendung verlässt. Es soll sich heimisch anfühlen aber trotzdem ohne große Einarbeitungszeit funktionieren. Das lässt sich natürlich nicht auf jede Software anwenden und ist nicht immer eine explizite Anforderung aber doch ein indirektes Bedürfnis vieler Nutzer. Size matters Und dann wär da noch das Problem mit der Plattform. Die Anwendung soll ja relativ klein sein, wenn wir von der Dateigröße reden und natürlich möglichst wenig Abhängigkeiten haben und am besten auch auf einer neuen aufstrebendenen Plattform funktionieren. Doch natürlich hat jede Anwendung Anforderungen die sehr speziell sind oder eine Laufzeitumgebung benötigen oder zumindest für eine bestimmte Umgebung kompiliert werden müssen. Genau hier liegt das Problem. Wir sind plattformübergreifend, aber nicht unabhängig. HTML5 - die Endlösung? Natürlich bin ich ja nicht der Erste, der sich Gedanken über das ganze macht, dafür haben wir ja HTML5, CSS3 und…

Weiterlesen …

SSO mit nginx im Eigenbau

Veröffentlicht am

Dieses Tutorial soll dabei helfen ein simples und rudimentäres SSO-System zu implementieren, bei dem nginx selbst die Authentifizierung übernimmt, hierbei ist der Login nur einmal für verschiedene Anwendungen möglich. Vorraussetzungen Für das Tutorial benötigst du PHP 7+ sowie nginx mit aktivierem Auth Modul Login-System mit PHP vorbereiten Zuerst benötigen wir eine öffentlich erreichbare Domain zum Login. Ich habe mich hierbei für folgende Struktur entschieden: public_html Document root |--- www Website root |--- index.php Einstiegspunkt |--- access_denied.php Fehler bei unzureichender Berechtigungen |--- change_password.php Self-Service zur Passwortänderung |--- headless_check.php Check für Nginx Loginstatus |--- login.php Login-Formular und Logik |--- logout.php Logout und deren Logik |--- util.php Hilfsfunktionen util.php Zuerst einmal die Hilfsfunktionsdummies: access_denied.php Diese Datei kann nach komplett eigen gestaltet werden, hier reicht eine statische Seite im Normalfall aus. headless_check.php Diese Datei wird aufgerufen, wenn nginx den Loginstatus abrpüft, hierbei muss entsprechend ein 403 - Access Denied, 200 - für Login ok und 401 für nicht angemeldet zurückgegeben werden. Ein optionaler Gruppencheck wird über den X-Groups-Header veranlasst der mit Komma getrennt die unterschiedlichen Gruppennamen enthält. login.php und logout.php Diese beiden Seiten können grundsätzlich auch komplett eigen gestalet werden, sie werden entsprechend über die index.php aufgerufen. Login Hier muss entsprechend die Hilfsfunkion für die Authentifizierung aufgerufen werden und somit der Loginstatus gesetzt. Hier kann auch entsprechend eine Zurückleitung auf die vorherige Seite erfolgen. Für den Loginstatus werden entsprechend folgende Werte aus $_SESSION berücksichtigt: Key…

Weiterlesen …

Als Entwickler vertrauenswürdige Antworten und Lösungen finden

Veröffentlicht am

Vorwort Gerade für Beginner ist oft nicht leicht erkennbar ob es sich bei dem durch die Suchmaschine seines geringsten Misstrauens gefundenen Ergebnisse um seriöse handelt oder nicht. Das kann so pauschal auch nicht einfach beantwortet werden. Grundsätzlich sollte darauf geachtet werden ob die Antwort Quellen auf offizielle Dokumentation etc. der Sprache oder des Frameworks handelt. Entspricht der Inhalt der Quelle dem der Antwort ist diese meist als seriös einzustufen. Stackoverflow.com Eine der wohl wichtigsten Plattformen für Fragen und Probleme von Entwicklern ist stackOverflow.com. Hierbei ist es möglich als registrierter Benutzer mit gewisser Aktivität Antworten hoch- und runter zu voten. Hiermit sind die Antworten, die Nutzer für am sinnvollsten halten weit oben und unglaubwürdigere Antworten weiter unten. Sollte einen Antwort sogar im Minus sein, wird diese entsprechend ausgegraut. Das ist schon einmal eine grobe Vorsortierung. Die richtige Frage ist zudem mit einem grünen Haken als solche erkennbar. Das heißt aber nicht automatisch das diese auch "richtig" ist, denn sie wurde vom Fragesteller als solche markiert. Gerade für Anfänger stellt das aber eine gute Orientierung dar. Oft lohnt sich auch ein Blick in die Kommentare, dort werden oft Ungereimtheiten angesprochen. Ansonsten lohnt sich auch immer ein Blick in die offizielle Dokumentation oder entsprechende offizielle Foren. Ich habe mir hier mal die Mühe gemacht das ganze rauszusuchen. Ist jetzt allerdings nicht alphabetisch sortiert o. ä. Quellen/Links Java JavaDoc Java 8 JavaDoc Java 9 JavaSE Dokumentation Konventionen PHP PHP Manual PHP Dokumentation Download C# Leitfaden Programmierhandbuch Sprachreferenz JavaScript Referenz…

Weiterlesen …

PHP-Crashkurs

Veröffentlicht am

Vorwort Nachdem im Internet ziemlich viel komische Tutorials und schlechte YouTube-Videos kursieren und es viele PHP-Entwickler gibt, die schlecht entwickeln, hab ich mich entschieden einfach mal nen kleinen Crashkurs zu schreiben. Ziel ist es, nach diesem kleinen Crashkurs eine Ahnung zu haben wie PHP funktioniert und damit sauber arbeiten zu können. Zudem weißt du danach welchen Quellen du vertrauen solltest und welchen eher nicht. Hierzu werde ich aber nochmal irgendwann einen seperaten Post verfassen und dann hier verlinken. Bei dem Crashkurs hier gehe ich davon aus, das du einen PC bedienen kannst und der englischen Sprache mächtig bist. Ein halbwegs solides Verständnis für PCs ist auch von Vorteil. Geschichsstunde Zuerst einmal etwas Historisches. Nein, ich fange jetzt nicht wieder bei Lochkarten an. PHP wurde 1995 von Rasmus Lerdorf geschaffen. Ursprünglich war es ein Set von Perl-Scripts für die Erfassung von Zugriffen auf Webauftritte. Mit der Zeit war es ein riesiger Haufen von Skripts. Also hat er alles in C umgeschrieben um mit Datenbanken zu interagieren usw. Diesen Code stellte er dann frei zur Verfügung (heute würde man sagen Open Source). 1997 gabs dann nochmal ne kleine Überarbeitung allerdings immer noch ein One-Man-Project. Im Laufe der Zeit wurde das ganze dann vom One-Man-Project zum Community-Projekt. PHP war hierbei nicht wirklich der schnellste seiner Art. Mit den verschiedenen Versionen ergaben sich dann aber Performanceverbesserungen vom Vielfachen der Vorgängerversion. So das es heute durchaus mit anderen Sprachen wie Java und .NET konkurrieren kann. Wer sich das ganze nochmal im Detail reinpfeifen will, hier…

Weiterlesen …

Devs: Passwörter richtig speichern

Veröffentlicht am

Viele Entwickler wissen oft nicht wie sie Passwörter richtig speichern sollen. Dabei kommen dann leider oft Eigenimplementierungen heraus, die alles andere als sicher sind. Viele basieren auf dem Geheimhaltungsprinzip, welches schon längst als veraltet gilt. Oder im schlimmsten Fall gar eine Speicherung in Klartext! Dabei gibt es viele Möglichkeiten, Passwörter sicher zu speichern. Heutzutage gibt es dafür für nahezu jede Sprache passende Implementierungen. Hierbei gibt es zwei gängige Möglichkeiten Passwörter zu sichern. Die erste Möglichkeit besteht darin die Passwörter mit einem Einweg-Hashalgorithmus zu schützen. Dies kommt allerdings nur in Frage, wenn die Passwörter nicht mehr im Klartext benötigt werden. Dies ist in der Mehrzahl der Anwendungen der Fall. Ansonsten gibt es noch diverse Verschlüsselungsverfahren, bei denen das Passwort mit einem geheimen Schlüssel verschlüsselt wird. In diesem Artikel werde ich allerdings mehr auf die Hashverfahren eingehen. Diese sind oberflächlich gesehen ersteinmal Algorithmen, die eine relativ schnelle Unkenntlichmachung des Passwortes erlauben. Die Errechnung eines Hashes ohne den Wert zu kennen, sollte dabei sehr schwer möglich, am Besten nur durch Raten möglich sein. Hierbei ist zu beachten, das diese Hashverfahren mit zunehmender Rechenleistung entsprechend unsicher werden. So sollte man regelmäßig prüfen, ob das Hashverfahren noch den aktuellen Standard entspricht. Hier ist als Beispiel md5 zu nennen, eines der ersten Verfahren. Dieses ist bereits seit Jahren knackbar und sollte für Passwörter auf gar keinen Fall Verwendung finden. Um die Sicherheit eines Verfahrens noch zu erhöhen, hierbei ist es grundsätzlich egal, um welches es sich handelt, gibt es noch eine Ergänzung. Den sogenannten Salt. Dieser…

Weiterlesen …