Edit v5.000 from 2019-09-12 to 2021-05-20 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, PDFs 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.
Der Entwickler ist in unserem Team und
kann damit gewünschte Anpassungen optimal vornehmen.
Die offizielle Webseite ist momentan
https://noop.cisco211.de/.
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 Systemvoraussetzungen
-
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.
- 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 des Template-Systems, frei gestaltet werden und
über die PHP-Funktion
mail()
oder per selbst entwickelten SMTP-Client versendet werden. - Erzeugen von PDFs
-
Dank der Bibliothek
dompdf
istNOOP
in der Lage HTML-Dateien in PDF zu exportieren, um z.B. druckbare Bestellformulare oder Rechnungen zu erzeugen. Die Bibliothek muss dazu nur heruntergeladen und an einen bestimmten Ort entpackt werden. - 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.
- Kontaktformular
-
Mit
NOOP
ist es nicht notwendig, seine E-Mail für Spammer und Bösewichte öffentlich preiszugeben. Stattdessen gibt es ein Kontaktformular, welches sich auch auf mehrere Kontaktpersonen einrichten lässt. - Bestellformular
- Das Framework bietet auch die Möglichkeit eines Bestellformulars, wo jeweils ein Artikel beliebiger Menge bestellt werden kann. Die Bestellung wird per E-Mail kommuniziert und enthält auch die Bestellung als PDF im Anhang.
- 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
. - Suchmaschinen freundlicher 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 mitGoogle reCAPTCHA 2 und 3
, CSP, CORS und CSRF-Protection, damit potenzielle Kunden keine Gefahren wie Identitätsdiebstahl und Hacking-Angriffe befürchten müssen. MitNOOP
kann der Datenschutz eingehalten werden.
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 objektorientiertes,
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 wieder rum 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 einem Accountsystem zusammenzufassen. 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 Unterstü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.
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 Missbrauch von Webseitenformularen, z.B. Spam. In der Regel sind Captcha's kleine Bildchen, wo eine Zeichenfolge drin steht, die man abtippen 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 perAccess-Control-Allow-*
HTTP
-Header aus. Dieser Mechanismus hat besonders dann Relevanz, wenn man z.B. perJavaScript
externe Inhalte nachlädt. - CSP = Content Security Policy:
-
2019-09-16, Mo./TSc:
CSP
ist ein Sicherheitskonzept, um Angriffe wieCross Site Scripting
durch Einschleusen von Daten in Webseiten zu verhindern. Im Prinzip ist das eine ArtRechtesystem
für Webbrowser, wo man sehr genau bestimmen kann, welche Inhalte geladen werden dürfen und wo sie herkommen dürfen. Bei der Verwendung vonCSP
nimmt man auch einige Einschränkungen in Kauf. Zum Beispiel kann man keinJavaScript
mehr direkt in den<script>
schreiben, sondern man muss auf eine externeJavaScript
-Datei referenzieren und diese Referenz z.B. pernonce
-Attribut authentifizieren. WieCORS
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 sogenanntesSynchronizer 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
. MitCSS
beschreibt man wie eineHTML
-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 WebseiteHTTPS
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 Skriptsprache u.a. zur Manipulation von HTML-Strukturen im Webbrowsern. Auch, wenn der Name es vermuten lässt hatJavaScript
nichts mit der ProgrammierspracheJava
zu tun. Genau genommen hieß die Sprache anfangsLiveScript
, wurde aber dann aufgrund der Verbreitung vonJava-Applets
, um die Popularität zu steigern, inJavaScript
umbenannt. Später hat sich aus der Sprache ein Standard durchECMA International
entwickelt, deswegen wird, sofern dem Standard folgend,JavaScript
auchECMAScript
genannt. Die Skriptsprache ist auch der Ursprung vomWeb 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 vonMySQL
entstanden ist. Das System ist weitgehend mit demSQL
vonMySQL
kompatibel. - MVC = Model View Controller:
-
2019-09-16, Mo./TSc:
Zu deutsch
Modell Ansicht Steuerung
ist ein Strukturierungsmuster zur Unterteilung eines Programmes in die drei KomponentenDatenmodell
,Ansicht
undProgrammsteuerung
. 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 manMVC
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 SpracheSQL
Daten ausliefern, oder entgegennehmen kann. Die Daten werden dabei in Tabellenform gespeichert. Das Datenbanksystem hat besonders in Kombination mitPHP
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 zurSuchmaschinenoptimierung
. 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 Konkurrenz zu bekommen. Suchmaschinenoptimierung ist ein Unterbereich des Suchmaschinenmarketings. - Sitemap:
-
2019-09-16, Mo./TSc:
Die
Sitemap
(zu deutschSeitenü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.