Application Programming Interface (API)

Wenn man von Application Programming Interface (API) spricht, dann ist eine Programmierschnittstelle gemeint, die ein Programmteil ist, der von einem anderen Programm zur Anbindung an das eigentliche System gesteuert wird. Anders als bei einer Binärschnittstelle (ABI) fungiert eine API nur auf Quelltext-Ebene. Damit eine API funktionsfähig implementiert werden kann, wird eine detaillierte Dokumentation benötigt.

Es ist möglich, auf Hardware und Datenbanken zuzugreifen, eine API kann zusätzlich aber noch Komponente einer grafischen Nutzeroberfläche erstellen und diese vereinfachen. Beispielsweise erlaubt die Windows API (Windows Application Programming Interface) überhaupt erst, dass Entwickler eigene Software für Windows Betriebssysteme entwickeln können.

Mittlerweile werden aber auch Online viele APIs zur Verfügung gestellt, um Entwicklern unter anderem die Arbeit zu erleichtern. Bekanntere APIs sind z.B. die Google APIs, YouTube APIs, Blogger APIs, aber auch APIs eines CMS, wie WordPress oder Contao.

Online Marketing

Online Marketing umfasst Marketing-Maßnahmen, die online durchgeführt werden um Marketingziele zu erreichen. Oft wird Online Marketing als ausgereifte Marketing-Strategie und als verbindlich angesehen, obwohl sich das erst in den letzten Jahren richtig entwickelte.

Verschiedene Formen des Online Marketings

Webseite

Der thematische Aufbau und die Gestaltung einer Webseite sind die wichtigsten Bestandteile des Online Marketings.
Dabei dient die Webseite als Verbindung zum Kunden und unter anderem auch zur Werbung für neue Kunden.

Display Advertising

Bei Displaywerbung handelt es sich um die Form der Werbung, die sich dem Mittel von Bild- und Audiomaterial bedienen.
Anzeigen in Zeitungen, im Fernseher oder auf Webseiten als Bild/Video.

Suchmaschinenmarketing und Display-Advertising sind die am häufigsten verwendeten Formen des Online-Marketings.

Suchmaschinenmarketing (SEM)

Das Suchmaschinenmarketing (SEM) beruht auf Suchmaschinenwerbung (SEA) und auf Suchmaschinenoptimierung (SEO), um bei bestimmten Themengebieten potentielle Kunden werben zu können.

Content Marketing


Mit Content Marketing ist gemeint, die Verteilung von Medien mit dem Ziel, neue Kunden zu erhalten und bestehende zu binden. Dies kann in vielen verschiedenen Formaten vorkommen: News, Videos, Grafiken, Blogs oder Ratgeber. Die meisten Marketingstrategien beinhalten irgendeine Form von Medien und deshalb ist das Content-Marketing meistens ein fester Bestandteil einer Kampagne.

E-Mail-Marketing

Sogenanntes E-Mail-Marketing ist, wie das Wort schon sagt, Marketing per E-Mail – Es ist gleichzusetzen mit Direktmarketing im Offline-Bereich, also z.B. Werbung im Briefkasten.

Allerdings unterliegt diese Form von Marketing rechtlichen Beschränkungen. In Deutschland wird der Versand solcher E-Mails von verschiedenen Gesetzen und bestimmten Pflichtangaben in geschäftlichen E-Mails geregelt. So ist es seit dem 1. März 2006 auch als Spamming zu verstehen, wenn im Business-to-Business-Bereich mit ungewollten E-Mails geworben wird.

Affiliate-Marketing

Das Affiliate Marketing funktioniert nur, indem der Betreiber einen oder mehrere Partner hat, welche sein Produkt vermarkten. Vorteilhaft dabei ist die Aufteilung des Aufwandes, der betrieben werden muss, um das gewünschte Ziel zu erreichen, da die Arbeit durch die Partner geteilt werden kann. Diese werden auf verschiedene Arten vergütet:

  1. Pay per Lead: der Partner wird bezahlt, wenn ein Kundenkontakt aufgebaut wurde (z.B. durch das Eintragen in einen Newsletter).
  2. Pay per Click: der Partner wird bezahlt, wenn ein Kunde auf einen Banner oder Link klickt, der auf der Webseite oder in der E-Mail des Partners vorkommt.
  3. Pay per Sale: der Partner wird bezahlt, wenn der Kunde einen Kauf, der über die Werbemaßnahmen dieses Partners zustande kam. Hierbei wird entweder ein Festbetrag oder eine prozentuale Beteiligung am Verkaufspreis verrechnet.

Es gibt noch ein paar weitere, aber seltenere Vergütungsmodelle, wie z.B. Pay per View (Sobald ein Werbemittel eingeblendet wurde), Pay per Link (Sobald ein Link auf einer Webseite implementiert wurde),  Pay per Signup oder Pay per Install.

Social Media Marketing

Social Media Marketing (SMM) befasst sich mit Marketingkommunikations-Zielen, die durch die Nutzung von Social-Media-Plattformen (Twitter, Facebook, Facebook Orte, Google+, Google Places, Instagram, Foursquare, Path, Waze,  Pinterest, Snapchat, Vine) erreicht werden können.

Verbreitet man seine Internetpräsenz auf möglichst vielen Social-Media-Netzwerken, dann bezeichnet man dies als Social Media Optimization.

Couponing

Couponing besteht aus Rabatt-Gutscheinen oder ähnliches, die dann logischerweise (neue) Kunden anlocken und unter anderem für Aufsehen erregen.

Content Management System (CMS)


Ein Content Management System (CMS) dient zur Bearbeitung, Erstellung und Verwaltung von Content (Inhalt) auf (unter anderem) Webseiten.
Der Administrator ist, selbst mit wenig Programmierkenntnissen, dazu in der Lage, ein solches CMS zu bedienen, da die meisten sogar eine grafische Nutzeroberfläche mit sich bringen. 
Eine medienneutrale Datenhaltung wird bei volldynamischen Systemen nach bestimmten Abfragen generiert, wozu meistens eine Datenbank benutzt wird.

Hier ein paar weit verbreitete CMS:


Ein CMS sollte folgende Funktionen haben:

  • Inhalte semantisch anordnen
  • Nach Bedarf Nachrichten an bestimmte Nutzer senden
  • Mögliche Nutzer und ihre Rollen identifizieren
  • Einen bestimmten Workflow für Verarbeitungsprozesse nutzen
  • Den Inhalt in/aus andere Arbeitsumgebungen Exportieren/Importieren
  • Unterschiedliche Rollen an Nutzer vergeben
  • Den Content ablagern, z.B in einer Datenbank


Was macht ein CMS?


Ein CMS verwaltet unter anderem barrierefreie Darstellung von Inhalten für Browser auf unterschiedlichen Geräten, damit diese sowohl als Desktop als auch als Mobile Version dargestellt werden können.
Es werden weitere Inhalte mit eingebunden, z.B:

  • Multilinguale Darstellung (Mehrsprachigkeit, Währungen, etc.)
  • Sich wiederholende Inhalte öfter verwenden
  • Kommunikation mit einer API um Maps, Kalender oder ähnliches darzustellen.
  • Neu erstellte Inhalte und zeitliche Veränderung
  • Inhalte ausgeben, die maschinenlesbar sind, z.B für Web-Feeds (Atom, RSS), oder Programmierschnittstellen wie JSON
  • Metadata wie z.B. Autor, Datum, etc.
  • Kategorien gruppieren


Multilinguale Websites

Per Definition ist eine mehrsprachige (multilinguale) Website eine Website, die Inhalte in mehr als einer Sprache bereitstellt, z. B. Englisch, Französisch und Deutsch. In einigen Fällen müssen nur einige Abschnitte der Website in mehr als einer Sprache verfügbar sein. 

Warum eine mehrsprachige Website? Wer braucht sowas?

Ein Unternehmen kann viele Gründe haben, eine mehrsprachige Website zu entwickeln, zum Beispiel:

  • Informationen sollen sprachübergreifend verfügbar sein (z.B. Medienagenturen)
  • Das Erschließen von neuen, internationalen Märkten 
  • Die Notwendigkeit Kunden mit lokal angepasstem Materialien und Produkten zu versorgen
  • Bei mehreren Amtssprachen in einem Land

Doch nicht nur Unternehmen, sondern auch Regierungen, öffentliche Dienste, Vereine, Schulen oder Einzelpersonen können durch die Bereitstellung von Multilingualen Inhalten enorm ihre Reichweite und damit ihren Website-Traffic erhöhen.

Elasticsearch

Hot-Warm-Cluster, Machine Learning und vieles mehr.
Elasticsearch ist eine Suchmaschine basierend auf Lucene. Umgesetzt wurde das Projekt mit Java und es speichert Dokumente in einem NoSQL-Format (JSON). Die Kommunikation zwischen Elasticsearch und dem Klienten erfolgt über ein RESTful-Webinterface. Neben Solr ist Elasticsearch der am weitesten verbreitete Suchserver. Dadurch wird der Betrieb im Rechnerverbund zur Umsetzung von Hochverfügbarkeit und Lastverteilung ermöglicht.

Aufbau

Elasticsearch teilt Indizes in mehrere Teile, die „Shards“ genannt werden.
Diese können vom Anwender auf mehrere Server aufgeteilt werden, um Rechenlast zu verteilen oder Prävention für Ausfälle der Server zu betreiben. Sobald Elasticsearch auf mehreren Servern läuft, wird einer der Server als „master“ der Gruppe bezeichnet.
Ein Shard in ein Lucene-Index und Elasticsearch nutzt Apache Lucene als core library. Dementsprechend besteht ein Elasticsearch-Index aus mehreren Lucene-Indizes, welcher wiederum aus einem Ordner mit invertierten Indizes besteht.

Funktion

Wenn ein Dokument durchsucht werden soll, dann muss es zuerst indiziert werden. Alle nötigen Informationen müssen in ein jeweiliges Dokument geschrieben werden, welches anschließend indexiert wird. Dabei ähnelt einer diese Indizes einer SQL-Tabelle.
Die Suchanfragen werden in einem JSON Format gesendet.  
Die wichtigsten Bestandteile einer Suchfrage sind folgende Parameter :

  • ‚query‘ bestimmt welche Dokumente, in welcher Reihenfolge, gesucht werden sollen.
  • ’sort‘ ermöglicht eine definierbare Sortierung der Ergebnisse.
  • ‚from‘ bestimmt die Aufteilung langer Trefferlisten auf mehreren Seiten. 
  • ’size‘ gibt die maximale Anzahl an Ergebnissen an.
  • ‚_source‘ macht es möglich, bestimmte Elemente aus einem Dokument auszugeben. 

Laravel

Laravel ist ein Open-Source PHP-Webframework, welches im Jahr 2011 von Taylor Otwell initiiert wurde.
Folgende Features bringt Laravel mit sich mit:
– Authentifizierung
– Lokalisierung
– Nutzer-Sessions
– Es ist Vollständig MVC-konform
– Dependency Injection
– Templatesystem „Blade“
– Kommandozeilentool „Artisan“
– Unterstützung verschiedener Datenbanken
– Eventverarbeitung
– Einbindung von Softwarepaketen als Bundles

2013 Wurde Laravel 4 veröffentlicht. Es war eine komplette Neuentwicklung auf Basis von Paketen, die per Composer verteilt wurden. Dadurch war Laravel 4 deutlich erweiterbarer.

2015 wurde ein Scheduler für periodische Ausführung von Aufgaben, eine Abstraktionsschicht für den Zugriff auf Dateisysteme (lokal und in der Cloud), die verbesserte Handhabung von Paketressourcen und die Integration externer Authentifizierungsverfahren.

Die Veröffentlichung von Laravel 5 erfolgte im Februar 2015. Hinzugekommen ist ein Scheduler für die periodische Ausführung von Aufgaben, eine Abstraktionsschicht für den Zugriff auf Dateisysteme (lokal und in der Cloud), die verbesserte Handhabung von Paketressourcen und die Integration externer Authentifizierungsverfahren.

Redis

Redis ist eine Open-Source Datenstruktur, die als Datenbank, Cache und Message Broker verwendet werden kann. Es supportet Datenstrukturen wie Strings, Hashes, Listen, Datensätze und sortierte Datensätze mit größeren Abfragen, Bitmaps, Hyperloglogs und Geo Indizes.
Redis hat bereits implementiertes Lua Scripting, LRU Vertreibung, Transaktionen und verschiedene Arten von On-Disk Persistence, wodurch es per Redis Sentinel und automatisierte Partitionierung mit Redis Cluster ständige Verfügbarkeit aufweist.

Man kann beispielsweise folgende Abfragen ausführen: Einen String verlängern, eine Zahl in einem Hash erhöhen, ein Element einer Liste hinzufügen oder z.B. das Mitglied mit dem besten Ranking in einer sortierten Liste ausgeben. 

Damit diese herausragende Performance erreicht werden kann, arbeitet Redis mit einer In-Memory-Datenbank. Abhängig von der Verwendung, können die Datensätze in einem regelmäßigen Zeitabstand auf einer Festplatte gespeichert oder ausgeführte Befehle mitgeschrieben werden. Diese Funktion kann optional deaktiviert werden. 

Weitere Leistungen:
– Transaktionen
– Pub/Sub
– Lua Scripting
– Schlüssel mit einer begrenzten Lebensdauer
– LRU Vertreibung von Schlüsseln
– Automatisches Failover

Redis Kompatibel mit den meisten Programmiersprachen.

Geschrieben wurde Redis in ANSI C und es läuft auf POSIX Systemen wie Linux, BSD, OS X ohne externe Abhängigkeiten. Es wird empfohlen Linux zur Entwicklung zu nutzen, da Redis dort am meisten getestet und unter anderem auch entwickelt wurde. Es gibt keinen offiziellen Windows Support.

React.js

React ist eine JavaScript-Bibliothek zur Ausgabe von Benutzer-Interface Komponenten.

Genauso wie bei Vue.js oder Angular.js werden diese Komponenten hierarchisch aufgebaut. Das bedeutet, dass es eine Root-Komponente gibt, die alle anderen Komponenten enthält. Diese Komponenten können ihrerseits weitere Komponenten enthalten.

Unidirektionaler Datenfluss

Anders als seine Konkurrenten, die einen Bidirektionalen Datenfluss zulassen, setzt React jedoch auf einen rein Unidirektionalen Datenfluss. Das heisst: Man kann Daten auf direktem Weg nur von der Parent Komponente in die Child Komponenten weitergeben. Um Daten von den Child Komponenten in der Hierarchie in übergeordnete Komponenten zu schicken muss man auf Callbacks oder State-Management Systeme wie z.B. Redux zurückgreifen.

Dadurch kann man schwer aufzufindende Fehlerquellen durch unsachgemäßem Zugriff auf Bidirektionale Datenschnittstellen der Komponenten vermeiden. Dies erkauft man allerdings mit erhöhtem Entwicklungsaufwand.

Dynamischer Seitenaufbau

Wie Vue.js oder Angular.js erzeugt der React Code die Komponente nicht aus statischen HTML und CSS Dateien, die unverändert vom Server übernommen werden. Der erzeugte Code baut sie dynamisch im Webbrowser selbst auf.

Dass es sich bei React um ein reines JavaScript Framework handelt, sieht man dem Code bereits auf den ersten Blick an. Im Gegensatz zu Vue oder Angular stehen bei React HTML, CSS und JavaScript Syntax nicht getrennt nebeneinander. Stattdessen ist in der erweiterten JavaScript Syntax von React (in Dateien mit dem Mime-Type ‚.jsx‘) die HTML ähnliche Syntax in den Code von JavaScript Funktionen eingebettet.

Hier ein Codebeispiel, das einen einfachen Counter realisiert:

var ButtonCounter = React.createClass({
  getInitialState: function() { // (1)
    return({count: 0});
  },

  add: function() {
    this.setState(
      {count: this.state.count + 1}); // (2)
  },

  render: function() {
    return(
      <div>
        <button onClick={this.add}>
          +
        </button>
        <p>Count: {this.state.count}</p>
      </div>
    );
  }
});

Anstelle von getrennten CSS Dateien übergibt man in der React Welt die Informationen zur Formatierung der Elemente gerne an deren Style-Attribut als sogenannte Inline-Styles.

Daraus ergibt sich auch ein häufig gegen React vorgebrachter Kritikpunkt: Markup und Logik sind anders als bei einer Unterteilung in HTML (oder eigenständigen Templates) und JavaScript eng miteinander verzahnt. Das erschwert es Designern ohne Programmiererfahrung ungemein, Änderungen am Markup vorzunehmen, ohne dabei unbeabsichtigt die Logik der Komponenten durcheinander zu bringen.

Ohne die JSX Erweiterung kann man React auch als reinen JavaScript Code schreiben.

Vue.js

Vue.js ist ein JavaScript Frontend-Framework. Anders als CSS-Frameworks, bei denen man JavaScript zumeist nur verwendet, um den HTML und CSS Code zu ergänzen, ist Vue.js ein reinrassiges JavaScript Framework.

Vue.js ist dabei flexibel genug, sowohl bestehende Webseiten um einige wenige Komponenten zu ergänzen, als auch Vollständige Single-Page Webanwendungen zu programmieren. In diesem Fall werden die Seiten der  Anwendung nicht mehr als statische HTML und CSS Dateien vom Server geladen. Stattdessen wird die Struktur der Seiten und die Formatierung vollständig vom JavaScript Code aufgebaut.

Eine Besonderheit von Vue.js sind die Single File Components. Hier fasst man in einer Datei (mit Mime-Type ‚.vue‘) das HTML-Template, JavaScript Code und CSS für eine Komponente  zusammen. Aus dieser Datei wird dann der JavaScript Code erzeugt, der im Webbrowser die Seite aufbaut.

Hier ein Beispiel für einen Single File Component in einer .vue Datei:

<template>
<p>{{ greeting }} World!</p>
</template>

<script>
module.exports = {
data: function () {
return {
greeting: 'Hello'
}
}
}
</script>

<style scoped>
p {
font-size: 2em;
text-align: center;
}
</style>

Der Webentwickler kann daher wie gewohnt mit HTML Syntax und CSS arbeiten, um Struktur und Layout der einzelnen Komponenten zu beschreiben.

Der Vue Loader, der die Single File Components in JavaScript übersetzt, erlaubt es, Preprocessoren für die einzelnen Bestandteile zu verwenden. So kann man JavaScript durch TypeScript oder CoffeeScript ersetzen. Anstelle von HTML steht auch PUG zur Verfügung. Als Ersatz für CSS ist SASS sehr beliebt.

Ähnlich wie React.js oder Angular.js liefert Vue.js die Infrastruktur auf der dann wiederum Frontend-Frameworks aufsetzen. So gibt es z.B. Frameworks, welche CSS von Bootstrap oder Bulma mit Vue.js Komponenten kombinieren.

JavaScript (JS)

JavaScript (kurz JS) wurde 1995 urprünglich als Skriptsprache für den Webbrowser Netscape entwickelt, um die Möglichkeiten von HTML und CSS zu erweitern. Die Programmiersprache lief ursprünglich nur auf Webbrowsern, wird aber seit einigen Jahren auch für die Programmierung von Servern oder Microcontrollern verwendet.

Das heutige JavaScript hieß urprünglich LiveScript, wurde dann aber 1996 in JavaScript umbenannt. Ein weiterer Name für die Programmiersprache ist ECMAScript. Der Name leitet sich von der in Genf ansässigen European Computer Manufacturers Association ab. Diese  Organisation hat u.A. die Standardisierung von JavaScript vorangetrieben und so dafür gesorgt, dass die Wichtigsten Funktionen auf den meisten gängigen Webbrowsern laufen.

Mithilfe von JavaScript kann man Webseiten Programmieren, die dynamisch auf Benutzereingaben reagieren, ohne dass dabei jedesmal der Server eingreifen muss. So können z.B. Daten in Eingabeformularen auf Vollständigkeit überprüft werden, ehe sie überhaupt an den Server übertragen werden.

Mit Node.js steht inzwischen eine erweiterte Fassung von JavaScript zur Verfügung, die speziell auf die Programmierung von Webservern ausgerichtet ist. Das hat u.A. den Vorteil, dass Frontend und Backend der Webseite nicht mehr in unterschiedlichen Programmiersprachen geschrieben werden müssen.  Streckenweise kann man sogar die gleichen Programmieranweisung sowohl für den Webbrowser als auch für den Server verwenden (Isomorpher Code). Das spart Arbeit, erleichtert das Warten des Codes und verringert so die Entwicklungskosten.