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.