noop.svg
Edit v1.002 from 2019-09-12 to 2019-10-23 by TSc

Das NOOP! Framework

Das NOOP! Framework ist ein Homepage-Framework, mit dem man Webseiten erstellen kann. Damit können die HTML-Dateien neben den dazu gehörigen Dateien wie Bilder, PDF's und Sounds stehen. So können diese zum Beispiel einfacher über dem Windows Explorer geordnet und zur Bearbeitung aufgerufen werden. Auf dieser Seite erfahren sie die Funktionen, den Nutzen, die Namensgebung und die Geschichte von NOOP. Da es hier sehr viele Fachbegriffe vorkommen, gibt es unten dran noch ein Glossar. Die offizielle Webseite ist momentan https://noop.cisco211.de/.

Edit v1.000 from 2019-09-16 to 2019-09-16 by TSc

Funktionen und Nutzen

Bei NOOP handelt es sich nicht um ein CMS wie Joomla oder Wordpress, sondern um ein Framework, d.h. NOOP ist eher sowas wie CakePHP, Symfony und Zend. Man muss sich das so vorstellen, als hätte man nicht den Feuerwehrwagen, sondern eher einen Feuerwehrwagen-Baukasten, mit dem man sich den individuellen Feuerwehrwagen zusammenbauen kann.

Nun eine Auflistung, was es kann und wofür man das braucht:

Minimale Systemvorraussetzungen
Das Framework läuft auf PHP 5 und 7. Ein Datenbanksystem ist nicht zwingend erforderlich. Vom 15 Jahre alten Rechner aus dem Keller bis zum Rootserver im Rechenzentrum, NOOP ist auf höchste Kompatibilität ausgelegt.
Statische Seiten
Erstellen von statischen Seiten, wo nur der Seiteninhalt beschrieben werden muss. Möglichkeit, Seitentitel, Meta-Angaben, Caching-Verhalten und Sitemap-Einstellung in HTML-Kommentaren zu beschreiben. Beispielsweise kann man ein Word-Dokument nach HTML exportieren und diese mit kleinen Änderungen direkt in NOOP übernehmen.
Dynamische Seiten
Erstellung von dynamischen generierten Seiten mittels PHP, HTML, CSS und JavaScript nach dem MVC-Pattern. Das bedeutet man kann NOOP mit beliebigen Funktionen erweitern. Vom einfachen Blog bis zum speziell für den Zweck entworfenen Shop.
Unterstützung beliebiger Datenbanksysteme
Das Framework eignet sich auch für komplexere Projekte, welche eine Datenbank benötigen. Funktionierender Code für MariaDB und MySQL ist bereits enthalten.
Suchfunktion
Wenn man 300 Unterseiten hat und nichts mehr findet, dann kann die Suchfunktion helfen. Diese kommt momentan komplett ohne Datenbank aus und dank der Volltextsuche findet man alles, was je auf der Seite beschrieben wurde.
Template-Unterstützung
Weil sich niemand wie ein Papagei gerne wiederholt, beschreibt man das Design der Webseite einmalig als Template. Das Template wird dann automatisch benutzt um alle Unterseiten genauso darzustellen wie gewollt.
Versenden von E-Mails
Das Framework hat, sofern benötigt, alles notwendige an Bord, um eine funktionierende E-Mail versenden zu können. Die E-Mail kann dabei, dank dem Template-System, frei gestaltet werden.
Wartungsmodus
Wenn Änderungen an der Webseite vorgenommen werden, kann man den Wartungsmodus benutzen, damit die Besucher bescheid wissen, das hier gerade gearbeitet wird.
Eigene Fehlerseiten
Wenn ein Fehler auftritt, wird dieser nicht im Design des Webservers, sondern im Design ihrer Webseite dargestellt. Das heißt auch im Fehlerfall gilt Corporate Identity.
Suchmaschinenfreundlicher Aufbau
Das Framework unterstützt von Haus aus sogenannte SEO URLs, d.h. keine kryptischen Adressen zu den Seiten. Zudem kann NOOP automatisch eine Sitemap anhand der existierenden Seiten generieren.
Integrierte Sicherheitsmechanismen
NOOP unterstützt moderne Sicherheitsmechanismen, wie HTTPS, Captcha-Unterstützung mit Google reCAPTCHA 2, CSP, CORS und CSRF-Protection, damit potentielle Kunden keine Gefahren wie Identitätsdiebstahl und Hacking-Angriffe beführchten müssen. Mit NOOP kann der Datenschutz eingehalten werden.
Edit v1.000 from 2019-09-12 to 2019-09-16 by TSc

Namensgebung und Geschichte

Hier ein wenig Text, wie es dazu kam, dieses Framework zu entwickeln und warum es NOOP! Framework heißt.

Namensgebung

Der Name wirkt auf den ersten Blick in etwa so als würde es No Operation bedeuten, das stimmt aber nicht. NOOP! ist ein Akronym und steht für No Object Oriented Programming!, was auf deutsch soviel heißt wie Keine objektorientierte Programmierung. Der Begriff Framework wurde dann einfach hinten dran gehangen, damit es etwas deutlicher wird. Der offizielle Name ist somit NOOP! Framework und es lässt sich auch direkt ableiten, wo der Schwerpunkt in diesem Framework liegt.

Geschichte

Das Framework ist das Resultat aus meiner (TSc) Erfahrung von vergangenen Projekten, wie das Consequence Framework meiner eigenen Homepage (cisco211.de) und vielen kleineren Unterprojekten, wie die API-Schnittstelle von Hostile Space Revived.

Ein großes Problem bei der Entwicklung von Webseiten ist folgendes: Man möchte eine Webseite bauen, aber sich nicht jedes mal mit sämtlichen Dingen drumherum beschäftigen, sondern sich um das wesentliche (Die Sache an sich) kümmern. Sicherlich könnte man nun einfach eines dieser Frameworks wie Symfony oder Zend benutzen, allerdings sind diese sehr komplex aufgebaut und man muss erstmal lernen, wie man diese bedient. Dann kommt noch dazu, das die meisten davon mittels objektorientierter Programmierung das Model-View-Controller-Pattern abbilden. D.h. trotz Kenntnisse in HTML, CSS, Javascript und PHP müsste man erstmal Symfony lernen, um zu verstehen wie man Symfony benutzt. Genau dieses Problem hat auch der Vorgänger von NOOP. Das Consequence Framework ist ein objektorientierendes, auf dem Model-View-Controller-Pattern aufbauendes Homepage-Framework. Auch da müsste man sich als Neuling erst einmal einarbeiten, um zu verstehen wie man dort neue Seiten einfügt. Das alles braucht man aber sehr oft nicht, wenn man einem Besucher einfach nur Inhalt ausliefern will. Klar, man könnte auch einfach statische HTML-Seiten schreiben. Da wiederrum hat man das Problem, dass jede Seite ein vollständiges HTML-Dokument beschreiben muss, d.h. jede Seite muss das Design, das Menü und alles um den Inhalt drumherum enthalten. Möchte man dann eine Änderung am Design vornehmen, wo die HTML-Struktur verändert werden muss, dann muss man dies in allen Seiten tun. Genau das kostet einfach zu viel Zeit, die keiner hat. Jetzt könnte man sagen, "OK, dann machen wir das halt mit Frames!". Aber auch das ist keine Lösung, Frames gibt es nicht mehr und IFrames machen die Sache nicht besser. Javascript ist übrigens auch keine Lösung, weil Javascript nach wie vor optional ist. Das heißt es gibt Geräte (Clients), die die Webseite nicht darstellen können, weil sie, aus welchen Gründen auch immer, kein Javascript beherrschen oder erlauben. Und aus genau diesen Standpunkten hat sich immer mehr NOOP herauskristallisiert.

NOOP v0.1 - v0.4

Die Urversion von NOOP war ursprünglich als Proof of Concept für ein Hostingprojekt gedacht und bestand aus einer einzigen PHP-Datei. Dort wurde die grundlegende Arbeitsweise von NOOP festgelegt. Das Hostingprojekt wurde später leider doch nicht umgesetzt und NOOP lag dann einige Zeit brach.

NOOP v0.4 - v0.97

Im Projekt Hostile Space Revived besteht schon seit vielen Jahren das Bedürfnis die einzelnen, unabhängigen Spieler-Charaktere in einen Accountsystem zusammen zu fassen. Das Framework wurde dementsprechend weiterentwickelt und unterstützt seitdem sicherheitsrelevante Features (CSP, CSRF−Protection, reCAPTCHA 2), dynamische Unterseiten, das Senden von E-Mails und eine unabhängige Datenbankanbindung (MySQL/MariaDB).

NOOP v0.97 - heute

Bei Hilfe & Service von EDV-Fachleuten wurde jahrelang Joomla! 1.5 verwendet. Das hat auch recht gut geklappt, allerdings gab es auch einige Nachteile. Zum einen ist Joomla! 1.5 schon sehr alt und wurde nie auf eine neuere Version aktualisiert. Der Hostinganbieter war schon dabei die Ünterstützung für PHP 5 nur noch mit extra Kosten weiterhin bereitzustellen. Dann kommt noch dazu, dass ein CMS für die Firmenwebseite eigentlich zu viel des guten ist und ein einfaches Homepage-Framework vollkommen ausgereicht hätte. Alle Unterseiten lassen sich vollständig in HTML beschreiben und brauchen somit kein CMS mit einer Datenbank. Und genau da wurde dann NOOP angesetzt und mit der Möglichkeit erweitert, einfache, statische Seiten darstellen zu können. Mittlerweile sind weitere nützliche Sachen dazugekommen, wie die Suchfunktion und der Sitemap-Generator.

Edit v1.000 from 2019-09-16 to 2019-09-16 by TSc

Glossar

Hier eine Beschreibung zu all den Abkürzungen und Begriffen.

Captcha = Completely automated public turing test to tell computers and humans apart:
2019-09-16, Mo./TSc: Bedeutet auf deutsch: "vollautomatischer öffentlicher Turing-Test zur Unterscheidung von Computern und Menschen". Captcha's dienen zur Bestimmung ob ein Webseitenformular von einem echten Mensch, oder einer Maschine (Computerprogramm) ausgefüllt wurde. Der einzige Zweck dient dem Schutz vor Mißbrauch von Webseitenformularen, z.B. Spam. In der Regel sind Captcha's kleine Bildchen, wo eine Zeichenfolge drin steht, die man aptippen muss. Für den Menschen ist das in der Regel eine einfach zu lösende Aufgabe. Ein Computer dagegen muss sehr viel Aufwand betreiben, um den Text in diesem Bildchen korrekt zu erkennen.
CORS = Cross-Origin Resource Sharing:
2019-09-16, Mo./TSc: Ist ein Mechanismus für HTTPS in Webbrowsern, der steuert, ob externe Inhalte auf der aktuellen Seite geladen werden dürfen. Standardmäßig dürfen keine externen Inhalte geladen werden. Dabei muss der Server, der die Daten ausliefert, festlegen, welche Webseiten (von außen) die Daten abrufen dürfen. Der Server liefert diese Information per Access-Control-Allow-* HTTP-Header aus. Dieser Mechanismus hat besonders dann Relevanz, wenn man z.B. per JavaScript externe Inhalte nachlädt.
CSP = Content Security Policy:
2019-09-16, Mo./TSc: CSP ist ein Sicherheitskonzept, um Angriffe wie Cross Site Scripting durch einschleusen von Daten in Webseiten zu verhindern. Im Prinzip ist das eine Art Rechtesystem für Webbrowser, wo man sehr genau bestimmen kann, welche Inhalte geladen werden dürfen und wo sie her kommen dürfen. Bei der Verwendung von CSP nimmt man auch einige Einschränkungen in Kauf. Zum Beispiel kann man kein JavaScript mehr direkt in den <script> schreiben, sondern man muss auf eine externe JavaScript-Datei referenzieren und diese Referenz z.B. per nonce-Attribut authentifizieren. Wie CORS dient dies zur Erhöhung der Sicherheit.
CSRF = Cross-Site-Request-Forgery:
2019-09-16, Mo./TSc: Heißt auf deutsch in etwa soviel wie Seitenübergreifende Anfragenfälschung. Dabei versucht der Angreifer dem Webbrowser des Opfers eine URL unterzuschieben, welche eine Aktion ausführt, auf die der Angreifer es abgesehen hat. Ein gutes Abwehrmittel dagegen ist ein sogenanntes Synchronizer Token Pattern. Dabei wird ein Token (kryptische Zeichenkette) unsichtbar am Webformular angehängt und beim Absenden des Formulars erkennt der Server dann anhand eines Vergleiches zwischen gemerkten Token und Absender-Token, ob der Absender derjenige ist, der es sein sollte, oder nicht.
CSS = Cascading Style Sheets:
2019-09-16, Mo./TSc: Auf deutsch übersetzt sich das in etwa zu: Gestufte Gestaltungsbögen. Mit CSS beschreibt man wie eine HTML-Seite optisch gestaltet werden soll, z.B. Farben, Abstände, Größe und Art der zu verwendeten Schrift, ...
HTML = HyperText Markup Language:
2019-09-16, Mo./TSc: Auf deutsch übersetzt: Hypertext-Auszeichnungssprache. In dieser Sprache werden heutzutage alle Webseiten beschrieben, so auch diese Seite hier.
HTTP = Hypertext Transfer Protocol:
2019-09-16, Mo./TSc: In deutsch: Hypertext-Überetragungsprotokoll. Wird hauptsächlich benutzt um Webseiten an Webbrowsern auszuliefern, Downloads zu ermöglichen und sogar um Musik über das Internet zu streamen.
HTTPS = Hypertext Transfer Protocol Secure:
2019-09-16, Mo./TSc: Wie HTTP jedoch mit Übertragungsverschlüsselung. Heutzutage sollte jede Webseite HTTPS verwenden, wenn mit den Daten der Anwender gearbeitet wird, bzw. der Anwender sich z.B. auf der Seite anmelden kann.
JavaScript:
2019-09-16, Mo./TSc: Auch in der Kurzform JS ist eine von Netscape entwickelte Scriptsprache u.a. zur Manipulation von HTML-Strukturen im Webbrowsern. Auch wenn der Name es vermuten lässt hat JavaScript nichts mit der Programmiersprache Java zu tun. Genau genommen hieß die Sprache anfangs LiveScript, wurde aber dann aufgrund der Verbreitung von Java-Applets, um die Popularität zu steigern, in JavaScript umbenannt. Später hat sich aus der Sprache ein Standard durch ECMA International entwickelt, deswegen wird, sofern dem Standard folgend, JavaScript auch ECMAScript genannt. Die Scriptsprache ist auch der Ursprung vom Web 2.0-Boom, da durch die Sprache erst die erweiterte Interaktivität der Webseite möglich wird.
MariaDB:
2019-09-16, Mo./TSc: Die MariaDB ist ein freies, kostenloses, relationales Datenbankmanagementsystem das durch die Abspaltung von MySQL entstanden ist. Das System ist weitestgehends mit dem SQL von MySQL kompatibel.
MVC = Model View Controller:
2019-09-16, Mo./TSc: Zu dt. Modell Ansicht Steuerung ist ein Strukturierungsmuster zur Unterteilung eines Programmes in die drei Komponenten Datenmodell, Ansicht und Programmsteuerung. Idee dabei ist, die Daten von der Ansicht und der Steuerung zu trennen, damit man unabhängig an einer Komponente arbeiten kann. Dadurch wird eine wesentlich bessere Flexibilität und Wiederverwendbarkeit des Programmcodes ermöglicht. Wie man MVC umsetzt ist nicht festgelegt, es ist eher ein Prinzip oder ein Konzept nach dem man sich richten kann.
MySQL:
2019-09-16, Mo./TSc: MySQL ist ein relationales Datenbankmanagementsystem, welches mittels der Sprache SQL Daten ausliefern, oder entgegennehmen kann. Die Daten werden dabei in Tabellenform gespeichert. Das Datenbanksystem hat besonders in Kombination mit PHP für Webseiten eine weite Verbreitung gefunden.
PHP = PHP Hypertext Preprocessor:
2019-09-16, Mo./TSc: PHP ist eine serverseitig interpretierte Skriptsprache und bedeutete ursprünglich: Personal Home Page Tools. Der Großteil der heutigen Webseiten sind mittels PHP realisiert. Aktuell ist momentan die Version 7.
SEO = Search Engine Optimization:
2019-09-16, Mo./TSc: SEO beschreibt eine Reihe von Maßnahmen zur Suchmaschinenoptimierung. Der grundsätzliche Zweck ist die Erhöhung der Reputation einer Webseite. Suchmaschinen haben ein Bewertungssystem, welches festlegt, in welcher Reihenfolge die Suchergebnisse angezeigt werden. Wie genau das Bewertungssystem funktioniert ist meistens nicht bekannt. Man versucht also in diesem System eine bessere Bewertung gegenüber der Konkurenz zu bekommen. Suchmaschinenoptimierung ist ein Unterbereich des Suchmaschinenmarketings.
Sitemap:
2019-09-16, Mo./TSc: Die Sitemap (zu dt. Seitenübersicht) ist eine Liste von vollständigen Links einer Seite, welche von Suchmaschinen abgefragt werden, um genau zu wissen welche Inhalte indexiert werden sollen. Im Prinzip so eine Art Inhaltsverzeichnis für Suchmaschinen.
URL = Uniform Resource Locator:
2019-09-16, Mo./TSc: Zu deutsch in etwa einheitlicher Ressourcenzeiger ist eine vollständige Referenzierung auf eine Ressource, z.B. ein Link zu einer Webseite.