Node.JS: Run as a service (forever)

Wird ein Node.JS Skript auf der Shell mittels node myServer.js gestartet, so läuft es nur im Vordergrund der Shell. Es lassen sich also keine weiteren Befehle ausführen ohne die Node.JS Ausführung zu beenden. Legt man den Prozess mittels des Kaufmanns-und & in den Hintergrund scheint das Ziel zwar erreicht, beim Read more…

Node.JS: Cluster & Load Balancing

Die meisten Node.JS Skripte beginnen mit der Initialisierung und dem Starten eines HTTP-Servers. Doch so einfach dies in Node.JS auch implementiert ist, fehlen einem HTTP-/Webserver damit noch immer wichtige Eigenschaften:

– Lastverteilung
– Ausfallsicherheit
– Neustarten bei Anwendungsfehlern

Das Erstellen eines Node.JS Cluster, das alle drei aufgelisteten Eigenschaften umsetzt ist ebenso einfach wie das Starten eine HTTP-Servers!

(more…)

Node.JS: Initiate Filedownload (Tiny)

Mit Node.JS ist es nicht wirklich schwer, einen File-Downloader bzw. URL-Redirector zu implementieren. Dank der nähe zum HTTP-Protokoll des HTTP-Servers in Node.JS wird einem fast alles in die Hand gegeben was man benötigt.

Man stelle sich einen eigenen kleinen Web Dienst wie tinyurl bzw. tinyfile vor. Über die URL (bspw: mydomain.tld/abc123) soll anhand des nach der TLD folgenden Strings entschieden werden, ob ein Datei-Download initiiert oder ein Redirect durchgeführt werden soll.

In unserem Beispiel arbeitet im Hintergrund die No-SQL Datenbank MongoDB welche von Node.JS mittels dem MongoSkin Module angesprochen wird.

(more…)

JavaScript: Lazy Instantiation

In JavaScript hat das wohl meist bekannte (und unterbewusst am häufigsten verwendete) Entwurfsmuster, das Singleton, einen großen Nachteil. Beim Laden der Seite werden alle Skripte initialisiert und die Singleton Klassen somit sofort ausgeführt. Wenn ein Singleton eine aufwendige Initialisierungs-Methode bzw. sehr ressourcenintensiv ist, kann es Sinn machen die Instanziierung auf einen späteren Zeitpunkt zu verschieben, beispielsweise erst dann wenn es das erste Mal verwendet wird.

Wie das mittels Lazy Instantiation in JavaScript funktioniert zeigt dieser Artikel.

(more…)

C#: Dispatcher schnell gewrapped (vereinfacht)

Welcher C#-/.NET-Entwickler kennt es nicht? Die Anwendung bzw. das UI hängt während einer länger dauernden Prozedur und wurde daher in einen eigenen Thread ausgelagert.
Status Updates an das UI müssen dann entsprechend ge-dispatched werden. Je nach Code Komplexität weiß man jedoch manchmal nicht, in welchem Thread man sich befindet und ob die Aktualisierung im UI nun mittels Dispatcher erfolgen muss.

(more…)

AR Drone 2.0 via C# Programmieren & Steuern

Wenn ihr Besitzer einer AR Drone (2.0) von Parrot seid und nebenbei auch noch der C# Programmiersprache Herr seid, dann wäre es doch eine Schande diese beiden nicht miteinander zu koppeln.
Im Netz gibt es einige Open Source und Community Projekte die sich mit der AR Drone Programmierung beschäftigen, jedoch sind diese alle veraltet, gelten nicht für die Drone Version 2.0 und sind leider mit der Zeit in Inaktivität versunken.

Daher habe ich hier eine simples Grundgerüst für eine AR Drone Steuerung in C# für euch, welches ich selbst für die Ansteuerung der Drone mit Bewegungsdaten von der Kinect verwende.

(more…)

SignalR: Self-Hosting außerhalb ASP.NET Webanwendung

SignalR ist eine prima Entwicklung des Jahres 2012. Aber nicht immer steht eine Webanwendung (ASP.NET) im Mittelpunkt des Projektes. SignalR lässt sich auch wunderbar als IPC Alternative zu NamedPipes auf der gleichen Maschine oder Sockets im Netzwerk verwenden. Das tolle daran ist, dass der SignalR Core einem bereits jede Menge arbeit abnimmt und man sich auf die Programmierung der Geschäftslogik konzentrieren kann ohne sich mit den unteren Schichten der Kommunikation herumschlagen zu müssen. Das Konzept der Hubs in SignalR ist grandios einfach.

Hier zeige ich euch, wie ihr SignalR außerhalb einer ASP.NET Webanwendung zum Laufen bekommt (Self Hosted).

(more…)