NodeBB – Das moderne Node.js-Forum

NodeBB – Das moderne Node.js-Forum

NodeBB ist eine neuartige Open-Source-Software für Webforen, welche im Gegensatz zu der breiten Masse an Forensoftware nicht die Scriptsprache PHP verwendet. Stattdessen ist NodeBB komplett in JavaScript geschrieben, und läuft unter der Node.js-Plattform. Sowohl der Client (Webbrowser) als auch der Server benutzen JavaScript, beide kommunizieren wenn verfügbar mithilfe der Bibliothek Socket.io über eine WebSocket-Verbindung in Echtzeit miteinander. Falls der Webbrowser das WebSocket-Protokoll hingegen nicht unterstützt, wird stattdessen z.B. die AJAX-Technologie verwendet. So ist die Funktionalität auch für ältere Browser gesichert. NoSQL-Datenbank # Als Datenbanksystem kommt die NoSQL-Datenbank Redis zum Einsatz. Redis hält alle Daten im Arbeitsspeicher und ist somit um einiges schneller als herkömmliche Datenbanken wie MySQL, die ihre Datensätze von der Festplatte lesen. Lediglich eine Sicherheitskopie der Daten fertigt Redis auf der Festplatte an (sofern konfiguriert), um den Datenverlust durch einen Neustart oder Serverausfall zu verhindern. Alternativ zu Redis lässt sich aber auch MongoDB als Datenbanksystem verwenden, welches die Daten von Grund aus auf der Festplatte speichert, und lediglich die meist verwendeten Datensätze aus Performancegründen im Arbeitsspeicher zwischenspeichert. Design # Die […]

EtherPad

Mit dem Web-Editor EtherPad lassen sich Texte kollaborativ und in Echtzeit bearbeiten. Das heißt, Texte können von mehreren Autoren gleichzeitig bearbeitet werden und Änderungen von anderen Autoren werden sofort sichtbar. Außerdem lasen sich Änderungen farblich kennzeichnen, sodass sichtbar ist, welcher teilnehmende Autor welchen Text geschrieben hat. EtherPad ist Open-Source, in JavaScript geschrieben und benutzt für den Server die Node.js-Plattform. Funktionsweise Ein Autor erstellt zunächst ein neues Pad. Jeder, der den dabei automatisch generierten Link kennt, kann das Pad nun bearbeiten. Möchte man also einen weiteren Teilnehmer in ein Pad einladen, so muss man diesem einfach den Link mitteilen. Außerdem lässt sich ein Eingeschränkter Nur-Lese-Zugriff aktivieren, mit dem man das Pad zwar ansehen aber nicht bearbeiten kann. Sonstiges # Desweiterem hat EtherPad einen integrierten Chat, mit Hilfe dessen sich Teilnehmer untereinander austauschen können. Der angezeigte Name ist dabei frei wählbar. Den Text eines Pads kann man sowohl exportieren als auch importieren, ältere Versionen werden gespeichert und lassen sich über eine Versionsgesichte aufrufen. Ein EtherPad lässt sich z.B. auf yourpart.eu testen. Wer einen […]

Module in Node.js

Die Node.js-Umbebung verfügt über ein einfaches Modul-System. Ein Modul ist dabei ein Programm dessen Bestimmung darin liegt, von einem anderem Programm aus aufgerufen und verwendet zu werden. Zum einem besitzt Node.js bereits Basis-Module die fest in die Umgebung integriert sind. Und zum anderem können auch weitere Module nachinstalliert, oder gar selbst geschrieben werden. Im folgenden gehe ich auf alle 3 Arten von Modulen genauer ein. Basis-Module # Alle Basis-Module sind Funktions-Biblioteken, die grundlegende Aufgaben wie z.B. den Umgang mit dem Betriebsystem, Netzwerk-Technologien oder Verschlüsselungen abdecken. Um ein Modul in ein Node.js-Programm zu laden, verwendet man die Funktion require(). Sie erwartet als Parameter einen String, der den Pfad des Modules enthält, im Falle von Basis-Modulen reicht dazu der Name. Beispiel # Das folgende Beispiel schreibt den Namen der Plattform, unter der es ausgeführt wird, in die Konsole. Dabei wird das Basis-Modul os verwendet: var os = require(‚os‘); var platform = os.platform(); console.log(platform); In der ersten Zeile wird in die Variable os das gleichnamige Modul os geladen. In der zweiten Zeile wird der Name der Plattform mit […]

Node.js: Konsolen Grundlagen

Nachdem die Node.js-Umgebung installiert ist, kann sie über die Konsole des Betriebsystems (auch Terminal oder Eingabeaufforderung genannt) verwendet werden. Dieser Artikel beschreibt die grundlegenden Funktionen und Möglichkeiten der Konsolen-Anwendung node. Node.js-Version testen # Je nach verwendetem Betriebsystem muss man zunächst die entsprechende Konsole öffnen. Unter Windows wird sie Eingabeaufforderung, unter Mac OS X hingegen Terminal genannt. Um nun zu testen ob Node.js richtig installiert wurde, tippt man einfach den Befehl node -v in die Konsole ein. Falls alles richtig funktioniert, wird die Versionsnummer der installierten Node.js-Version ausgegeben. (z.B v0.10.20) Code direkt ausführen # Will man JavaScript-Code testweise ausführen, so reicht es den Befehl node in die Konsole einzutippen. Danach befindet man sich innerhalb der Node.js-Umgebung, und kann mit serverseitigem JavaScript rumexperimentieren. (siehe Bild) Um diese Umgebung zu verlassen, muss die Tastenkombination [Strg] + [c]aus Sicherheitsgründen zweimal gedrückt werden. Anschließend befindet man sich wieder in der Umgebung Betriebsystems. JavaScript-Dateien ausführen # Wenn man jedoch eine JavaScript-Datei ausführen möchte, so übergibt man einfach deren Pfad als ersten Parameter. Beispielsweise node script.js für die Datei script.js im angewähltem Verzeichnis. Weitere Optionen # Wie für Unix-Anwendungen typisch, bekommen wir mit node -h Hilfe zu dem Programm angezeigt. Dies zeigt […]

Bcrypt – Passwörter sicher hashen in Node.js

Will man Passwörter in einer Datenbank speichern, so empfiehlt es sich aus Sicherheits- und Datenschutzgründen, diese nicht direkt in der Datenbank zu speichern, sondern sie vorher durch eine Hashfunktion zu ziehen. Bei einer Hashfunktion handelt es sich um eine Art Verschlüsselung, bei der ein Passwort am Ende nicht mehr als Klartext, sondern als verschlüsselter Code erhalten ist. Eine Hashfunktion ist immer eine mathematische Einwegfunktion, was bedeutet, dass man aus dem eingegebenen Passwort zwar einen Hash errechnen kann, aber aus dem Hash nicht (oder nur erschwert) das verwendete Passwort. Somit kann weder der Datenbankadministrator die Passwörter der Benutzer sehen, noch ein Angreifer dem es gelingt, sich Zugriff auf die Datenbank zu verschaffen und deren Inhalte auszulesen. MD5 und SHA für Passwörter? # Es gibt verschiedene Hashfunktionen, die wahrscheinlich bekanntesten heißen MD5, SHA, SHA-2 und SHA-3. Diese haben jedoch im Bezug zu Passwörtern den Nachteil, dass ein gleicher Eingabewert bei jedem Hashvorgang auch den gleichen verschlüsselten Hash-Code erzeugt. Somit kann man anhand des Hash-Codes z.B. erkennen, ob zwei Benutzer das gleiche Passwort haben, oder sogar […]

Die 10 beliebtesten Node.js-Module im Überblick

Das offizielle Modul-Verzeichnis von Node.js namens NPM hat neulich die 100.000 Module erreicht, und damit das konkurrierende Paketsystem RubyGems übertroffen, das bisher nur knapp über 90.000 Ruby-Pakete bereit stellt. Höchste Zeit also, sich die beliebtesten Node.js-Module anhand der erhaltenen Sterne einmal genauer anzusehen. Express # Express ist sicherlich das bekannteste und meist verwendetste Node.js-Modul aus dem NPM-Verzeichnis, führt momentan mit 560 von der Community erhaltenen Sternen, und hält dabei einen weiten Abstand zu allen anderen Modulen. Bei Express handelt es sich um ein performantes und von Grund aus minimalistisches Webframework, dessen Funktionsumfang sich mittels vieler ergänzender Module je nach Bedarf erweitern lässt. Das Webframework dient als Basis vieler bedeutender Anwendungen wie Ghost CMS, NodeBB, oder EtherPad, und auch mein Webchat-Tutorial greift auf das Express-Modul zurück. Offizielle Website besuchen Modul auf NPM Quellcode auf GitHub Async.js # Async.js (kurz auch nur Async genannt) ist ein hilfreiches Modul, wenn es um das Arbeiten mit asynchronen JavaScript-Code geht. Denn diese Bibliothek stellt knapp 20 verschiedene Funktionen bereit, welche den Umgang mit Callback-Funktionen erleichtern. Ein konkreter Anwendungsfall für Async.js wäre beispielsweise die Verarbeitung von mehreren Datenbankabfragen nacheinander oder parallel zueinander. Im Anschluss könnte dann […]

Ankündigung: Deutschsprachiges Node.js-Forum

Das Logo von NodeForum.de Endlich ist es soweit: Das bereits angekündigte deutschsprachige Forum rund um Node.js ist ab sofort online, und unter der Domain NodeForum.de aufrufbar. Es soll die Kommentarfunktion sowie mein Kontaktformular zukünftig entlasten und für mehr Ordnung sorgen, was Fragen angeht die sich nicht auf einen speziellen Artikel beziehen bzw. an mich persönlich richten. Das Online-Forum ist in verschiedene Themenbereiche gegliedert, und kann unter anderem zur Diskussion, zum Stellen und Beantworten von Fragen, zur Hilfesuche, sowie zur Vorstellung von News- und Tutorial-Beiträgen, Node.js-Projekten und Stellenanzeigen verwendet werden. Screenshot von NodeForum.de Falls du Interesse an der Teilnahme hast würde ich mich über eine Registrierung und den ein oder anderen Beitrag im Forum freuen. Die nächsten Artikel hier auf NodeCode.de werden in den kommenden Tagen übrigens wieder erscheinen. Bis dahin: Grüße, NodeCode

PM2 – Der Prozess-Manager für Node.js-Anwendungen

Das offizielle Logo von PM2 Wer Node.js auf einem eigenen Server einsetzt, hat zum Verwalten der damit betriebenen Anwendungen bisher wahrscheinlich den Prozess-Manager namens Forever verwendet. Jetzt gibt es allerdings eine deutlich funktionsreichere Alternative namens PM2. Worum es sich dabei handelt und worin genau die Vorteile liegen erkläre ich in diesem Artikel. Wie Forever auch, ist PM2 ein Prozess-Manager für Node.js-Anwendungen mit dem sich die Anwendungen starten, stoppen und neustartenlassen. Falls eine Anwendung aufgrund eines Fehlers unerwartet beendet wird, so wird sie automatisch wieder erneut gestartet. PM2 kann unter Windows, Mac OS X und natürlich auch unter Linux-basierten Betriebsystemen eingesetzt werden. Neben Node.js selbst ist der Prozess-Manager auch mit dem Node.js-Fork io.js kompatibel, und kann auch mit zu JavaScript kompilieren Sprachen wie LiveScript oder CoffeeScript verwendet werden. Features von PM2 # Die Aktivitäts-Überwachung von PM2 Neben dem einfachen Starten und Beenden von Node.js-Anwendungen im produktiven Einsatz, bietet PM2 noch viele weitere hilfreiche Features. So lassen sich die CPU- und Arbeitsspeicher-Nutzung der einzelnen Anwendungen übersichtlich überwachen, und Log-Ausgaben der Konsole werden pro Anwendung […]

BACK TO TOP