InstaCode für schöne Codefotos

Endlich wieder ein Service, den die Welt braucht! Auf der Startseite des Service „Instacode“ gibt man den gewünschten Code ein und anschließend kann man wie bei einem berühmten Fotoservice den Screenshot des Fotos verschönern. Schlussendlich kann man dann ein schönes Foto des Code exportieren. Beispielhaft hier der code meiner node-adclient Bibliothek:
node-adclient

Genial oder?

error MSB4019: The imported project „C:\Microsoft.Cpp.Default.props“ was not found.

Heute hatte ich einen nervigen Fehler auf meinem Rechner. Ich wollte mit node-gyp das Paket bcrypt kompilieren, was bei mir zu folgendem Fehler führte:

C:\Project\node_modules\bcrypt\build\bcrypt_lib.vcxproj(1,646): error MSB4019: The imported project "C:\Microsoft.Cpp.Default.props" was not found. Confirm that the path in the declaration is correct, and that the file exists on disk.

Die Lösung war einfach: Ich habe den Windows SDK 7.1 installiert und dabei vor allem die „Visual C++ compilers“ mitinstalliert.

Plugin Mongoosastic für die Verbindung zwischen Mongoose ODM und Elasticsearch

Kurzhinweis: James Carr hat gestern ein Plugin namens Mongoosastic für Mongoose ODM veröffentlicht, welches eine Verbindung eines Mongoose Models zu Elasticsearch erlaubt. Es fügt eine neue Methode „search“ in ein Model ein, welche im Hintergrund auf Elasticsearch zugreift. Die Indexierung des Models erfolgt parallel im Hintergrund. Bei Bedarf kann man dann dann auch nur bestimmte Felder indexieren lassen und über ein Feature namens „Hydration“ die Daten mit Daten aus der MongoDB vervollständigen lassen. Einfach die Doku lesen für weitere Infos.

Mongoose ODM 2.7.0 ist erschienen

Vor ein paar Tagen wurde Mongoose 2.7.0 freigegeben. Es wird von den Machern als das letzte Release von 3.0 gesehen. In diesem Release soll ein Cleanup der API erfolgen, damit diese näher an der originalen MongoDB-API ist. Daher wird jetzt als Vorbereitung in 2.7.0 schon aufgeräumt. Hier die Übersicht der veralteten (Spalte „Deprecated“) Methoden und welche Alternativen es gibt (Spalte „Alternative“):

Deprecated                    Alternative
Query#$or                     Query#or
Query#$nor                    Query#nor
Query#$gt                     Query#gt
Query#$gte                    Query#gte
Query#$lt                     Query#lt
Query#$lte                    Query#lte
Query#$in                     Query#in
Query#$nin                    Query#nin
Query#$ne                     Query#ne
Query#$all                    Query#all
Query#$regex                  Query#regex
Query#$size                   Query#size
Query#$maxDistance            Query#maxDistance
Query#$within                 Query#within
Query#$box                    Query#box
Query#$center                 Query#center
Query#$centerSphere           Query#centerSphere
Query#$slice                  Query#slice 
Query#run                     Query#exec
Query#notEqualTo              Query#notEqualTo
Query#wherein                 Query#within
Query#fields                  Query#select
Query#asc                     Query#sort
Query#desc                    Query#sort
Query#only                    Query#select
Query#exclude                 Query#select
Query#each                    Query#stream
MongooseArray#$push           MongooseArray#push
MongooseArray#$pull           MongooseArray#pull
MongooseArray#$pushAll        MongooseArray#push
MongooseArray#pushAll         MongooseArray#push
MongooseArray#$pullAll        MongooseArray#pull
MongooseArray#pullAll         MongooseArray#pull
MongooseArray#$unshift        MongooseArray#unshift
MongooseArray#$addToSet       MongooseArray#addToSet
Document#commit               MongooseArray#markModified
Mongoose#connectSet           MongooseArray#connect
Mongoose#createSetConnection  MongooseArray#createConnection
MongooseNumber#$inc           removed
MongooseNumber#increment      removed
MongooseNumber#decrement      removed

Die gesamte Diskussion zum Release 2.7.0 findet sich hier.

Snippet: Anzeige aller Funktionen eines Javascript Objekts

Gerade eben habe ich auf Teufel komm raus nicht verstanden, warum eine Funktion meines Javascript-Objekts nicht korrekt funktionieren mag. Daraufhin habe ich eine möglichkeit gesucht, wie ich mir die Funktionen des Objektes „obj“ ausgeben kann. Hier wurde ich fündig und so sieht das Snippet aus:

var methods = [];
for (var m in obj) {        
    if (typeof obj[m] == "function" && obj.hasOwnProperty(m)) {
        methods.push(m);
    }
}
console.log(methods.join(","));

Und das Snippet erklärte mir es dann auch. Meine Funktion hatte im Namen am Ende noch ein „s“, welches ich nicht eingefügt hatte 😉 Dankbarerweise nur ein Tippfehler.

NodeJS: Twitter Bootstrap alerts in ExpressJS einbinden mit express-messages-bootstrap

Momentan experimentiere ich mit NodeJS herum und teste dabei wie man am schnellsten eine schöne Seite produziert. Ich bin dabei auf Twitter Bootstrap gestoßen, was eine Kombination von CSS-Eigenschaften und Javascripts darstellt, welche es erlauben schnell ein Layout zu erstellen. Zudem bietet dieses Framework auch vorgefertigte Alerts, die dem User Nachrichten deutlich anzeigen können:

Twitter Bootstrap alerts in ExpressJS

Gerne wollte ich dies nun in dem MVC-Framework ExpressJS verwenden, sodass ich daraus direkt die Alerts erstellen kann. Hierzu habe ich express-messages-bootstrap (NPM: express-messages-bootstrap) entdeckt. Seit gestern kann dieses auch mit Twitter bootstrap 2.0 umgehen, welches vor kurzem released wurde. Mit einem pull request von mir habe ich zudem angeregt, mehrere flash messages voneinander sauber zu trennen (siehe oben). Mal sehen ob dieser angenommen wird.

Wenn man das nun verwenden will, so muss man es zunächst per npm installieren:

npm install express-messages

Und anschließend in der Express-Configuration einbinden:

app.dynamicHelpers({ messages: require('express-messages-bootstrap') });

Nun muss man es noch im Template einbinden:

EJS:

<%- messages() %>

Jade:

!= messages()

Alerts erstellt man im Controller wie folgt:

req.flash('error', 'Dies ist ein Test mit Typ error');
req.flash('info', 'Dies ist ein Test mit Typ info');
req.flash('warning', 'Dies ist ein Test mit Typ warning');
req.flash('success', 'Dies ist ein Test mit Typ success');

Das wars 🙂

jQuery in 30 Tagen lernen

Der Link

Gerade eben habe ich auf net.tutsplus.com gelesen, dass diese einen Kurs, bei dem man in 30 Tagen jQuery lernt, anbieten. Jeden Tag ein kurzes Video. Vielleicht ja interessant für den ein oder anderen Leser.

jQuery in 30 Tagen