Tag: entwicklung

201516Apr

Osmosis: Website-Quelltexte verarbeiten mit Node.js

Wer mit Node.js den Quelltext von Webseiten auslesen und verarbeiten möchte, kann dazu beispielsweise das Modul Scraper.js nutzen, das bereits mit ausreichend Funktionalitäten bestückt ist. Neu in diesem Bereich ist das Modul Osmosis, das auf Promises basiert und dadurch Piping ermöglicht. Zudem werden verschachtelte Callbacks überflüssig.

Mit Osmosis lassen sich GET- und POST-Abfragen auf eine URL schicken und anschließend mit verschiedenen Funktionen verarbeiten. Per .find() sind CSS- und XPath-Queries möglich und weiterführende Links können mit .follow() ausgelesen werden. Per .set() lassen sich Informationen in das finale data-Objekt schreiben, das die gewünschten Daten repräsentiert. Das Projekt sollte im Auge behalten werden, denn laut Entwickler wird das Modul um eine Funktionalität erweitert werden, mit der auch dynamisch erzeugter Inhalt von Websites verarbeitet werden kann.

201516Apr

Node.js: Skripte per Windows-Kontextmenü ausführen

Node.js-Entwickler, die in Windows unterwegs sind, können von der Anpassbarkeit des Systems Gebrauch machen und beispielsweise das Kontextmenü dazu nutzen, Node.js-Skripte direkt per Klick auszuführen. Dazu braucht es nur ein paar Einträge in der Windows-Registrierung sowie den dazugehörigen Befehl. Voraussetzung ist, das Node.js auf dem Rechner installiert ist. Dann lassen sich Skripte einfach über den Befehl cmd in Verbindung mit der Node-Anwendung ausführen.

Node.js - Skripte per Windows-Kontextmenü ausführen

Mit dem Parameter /k wird cmd dazu angewiesen, den Prozess nicht zu beenden. Das entsprechende Fenster, also die Eingabeaufforderung, bleibt in diesem Fall nach der Ausführung des Skripts bestehen. Wer hingegen nur das Skript ausführen und das dazugehörige Konsolenfenster direkt wieder schließen möchte, verwendet stattdessen einfach den Parameter /c.

Weiterlesen...
201528Mär

Nuclide: Facebook-IDE für React, Hack und Flow

Die Entwickler von Facebook bereiten derzeit die Veröffentlichung einer quelloffenen Entwicklungsumgebung (IDE) vor, die den Namen Nuclide trägt und auf GitHubs Atom-Editor basiert. Nuclide wird die volle Unterstützung (Auto-Vervollständigung, Syntaxhervorhebung, etc.) für die Eigenentwicklungen von Facebook enthalten: Dazu zählt zum einen das Projekt Hack, einem Just-In-Timer-Compiler für PHP, der unter Anderem statische Typisierung bietet. Weiterhin wird Flow unterstützt, mit dem statische Typisierung auch in JavaScript möglich wird. Und schließlich unterstützt Nuclide das React-Framework, dem Frontend-Kern von Facebook.

Nuclide - a unified IDE

Man darf gespannt sein, wie Nuclide bei den Entwicklern ankommen wird. Bisher sieht das Projekt vielversprechend aus, auch wenn derzeit nur ein Screenshot verfügbar ist. Es wird sich zeigen, ob es sich wirklich um eine voll ausgestattete IDE handelt, die mit WebStorm mithalten kann — dieser hat sich mittlerweile zum Platzhirsch gemausert und immerhin bietet dieser ebenfalls Support für React und JSX-Templates. Zudem werden Meteor- und PhoneGap/Cordova/Ionic-Anwendungen unterstützt und auch die Entwicklung mit Polymer, TypeScript, Dart, Node.js, ES6, Gulp, Grunt und CSS3 werden wesentlich erleichtert.
Die Open-Source-Projekte von Facebook sind übrigens hier einsehbar.

201528Mär

Node.js: Einfacher Webserver mit connect und serve-static

Ich habe das Skript schon seit einiger Zeit im Einsatz und mittlerweile dürfte es auch allgemein bekannt sein, wie sich mit Node.js und den Modulen connect und serve-static einfache Webserver einrichten lassen. Wenn es wirklich nur darum geht, schnell und unkompliziert HTML-, JavaScript- und CSS-Dateien auszuliefern, muss nicht gleich das umfangreiche Express.js-Framework verwendet werden. Mit dem folgendem Setup kann das Vorhaben schneller umgesetzt werden, da die genutzten Module kompakter ausfallen als Express.js.

Zuerst müssen dazu die beiden Module lokal installiert werden:

  • npm install connect serve-static

Anschließend kann der Webserver mit diesem Skript erzeugt werden:

  • var connect = require('connect');
  • var serveStatic = require('serve-static');
  • var http = require('http');
  •  
  • var app = connect().use(serveStatic(__dirname));
  •  
  • http.createServer(app).listen(3000);

Nach dem Start über die Kommandozeile ist der Server dann per http://localhost:3000 erreichbar. Das Skript steht auch als Gist bereit. Wer alternativ nach einer universellen Lösung für statische Webserver unter Windows und Mac OS X sucht, sollte einen Blick auf den Fenix Web Server werfen. Hier wird auch gleich noch eine Benutzeroberfläche geboten, welche per Klick die Verwaltung von mehreren lokalen Webservern und deren Neustart ermöglicht.

201511Mär

ANNE: Stack aus AngularJS, Node, Neo4J und Express

Für moderne Webanwendungen muss nicht immer ein LAMP-Stack (Linux, Apache, MySQL, PHP) her: Dank der Beliebtheit von Node.js und NoSQL-Datenbanken eröffnen sich Webentwicklern in diesem Bereich neue Möglichkeiten. Mit Node.js steht ein plattformunabhängiges Server-System bereit, das mit bestehenden NoSQL-Lösungen harmoniert. Zusammen mit dem Express-Framework, das sich mittlerweile als Quasi-Standard etabliert hat, werden neue Konstellationen möglich, um eine Webanwendung zu betreiben. MEAN (MongoDB, Express, AngularJS, Node.js) stellt einen dieser Technologie-Stacks dar.
Wer hier noch eine weitere Alternative sucht, könnte mit dem ANNE Stack (AngularJS, Node, Neo4J, Express) gut beraten sein: Hier kommt die Graph DB Neo4j zum Einsatz, die eine RESTful API bietet und über die Cypher-Syntax angesprochen werden kann.

ANNE Stack - AngularJS, Node, Neo4J and Express

In dem Blog-Eintrag von 42id wird der ANNE Stack anhand eines Problems beschrieben. Die dazugehörige Beispiel-Anwendung, ein System zur Verwaltung von Medikamenten, steht bei GitHub zum Download bereit. Der Stack dient in jedem Fall als Inspiration und gibt Einblick in eine mögliche Server-Anwendung auf Basis von Node.js.

201510Mär

Konva: Framework für HTML5-Canvas-Anwendungen

Die Arbeit mit HTML5 und dem canvas-Element gestaltet sich je nach Anforderung unterschiedlich komplex. Für Browsergames oder grafische Webanwendungen empfiehlt sich der Einsatz einer JavaScript-Bibliothek, die bereits mit grundlegenden Canvas-Funktionalitäten ausgestattet ist. KineticJS dürfte hier der bekannteste Vertreter sein.
Mit Konva steht eine weitere Bibliothek zur Verfügung, die als Fork von KineticJS gestartet wurde. Dabei handelt es sich ebenfalls um eine JavaScript-/HTML5-/Canvas-Bibliothek, die auf die Entwicklung von grafischen Desktop- und Mobile-Anwendungen ausgelegt ist.

Konva - 2D HTML5 canvas framework for desktop and mobile applications

Konva bietet eine objektorientierte API, Verschachtelung von Knoten, Ebenen, Caching, Animationen, Tweens, Drag 'n' Drop, Filter, Selektoren und sogar Kollisionserkennung. Gelungen sind bei dem Projekt auch die Dokumentation sowie die API-Dokumentation. Das Framework kann schließlich auch als Node.js-Modul oder per Bower installiert werden.

201509Mär

TreeQL: Bibliothek für JSON-Abfragen und -Mutationen

Die Arbeit mit JSON-Datenstrukturen gehört fast schon zum Alltag eines Webentwicklers. Der Komplexität sind hier keine Grenzen gesetzt und gerade das Filtern von JSON-Daten kann immer wieder eine Herausforderung darstellen. Bei dieser Aufgabe könnte beispielsweise die Bibliothek TreeQL Abhilfe schaffen, mit der sich JSON-Strukturen durch gezielte Abfragen (Queries) auslesen und verändern lassen.

Wenn beispielsweise folgende Struktur gegeben ist:

  • var data = {
  • people: [{
  • name: "Andrei",
  • age: 28
  • }, {
  • name: "Homer Simpson",
  • age: 60
  • }, {
  • name: "Corina",
  • age: 28
  • }]
  • };

Dann können mithilfe von TreeQL beispielsweise alle Personen mit einem Alter von 28 ausgegeben werden:

  • treeql.query(data, {
  • age: 28
  • }, function(node) {%
  • // 1: node = { name: "Andrei", age: 28 }
  • // 2: node = { name: "Corina", age: 28 }
  • });

Zudem können neben statischen Filtern auch Funktionen verwendet werden, um beispielsweise Berechnungen in die Filterung mit einfließen zu lassen. Schließlich ist es mit der Bibliothek noch möglich, die entsprechenden Datensätze zu verändern: So könnten mit einem Query etwa alle Altersangabe im obigen Beispiel um 2 Jahre erhöht werden.
TreeQL dürfte damit ein interessantes Werkzeug sein, wenn es um die Arbeit mit größeren JSON-Datensätzen geht. Ein ähnliches Projekt stellt JSONSelect dar.

201529Jan

is.js: Micro-Framework für Überprüfungen und Vergleiche

Dass nahezu alles in JavaScript wie ein Objekt behandelt wird, dürfte mittlerweile bekannt sein. Um den genauen Typ einer Variable herauszufinden, ist die Verwendung von "Object.prototype.toString()" nötig. Wer in seinem Projekt nicht unbedingt ein fertiges Framework einsetzt, das bereits mit Methoden zur Überprüfung und Validierung verschiedener Arten ausgestattet ist, kann einen Blick auf das Micro-Framework is.js werfen.

is.js - micro check library

Die Bibliothek ist denkbar einfach zu benutzen und bietet eine große Anzahl an fertigen Routinen zur Überprüfung von Variablen an. Dazu zählen Typ-Überprüfungen, reguläre Ausdrücke, Zeitangaben, Strings, mathematische Vergleiche und User-Agent-Variablen (Gerät, Betriebssystem, Browser, etc.).

Ein paar Beispiele:

  • is.email('test@test.com');
  • is.alphaNumeric('y3s');
  • is.weekend(new Date('07/03/1985'));
  • is.all.even([4, 2, 7]);
  • is.ios()

Mit der Bibliothek lässt sich also unter Umständen viel Zeit sparen. Die Größe der JavaScript-Datei in minifizierter Form beläuft sich auf rund 11 KB.