Firefox Extension Easy Xdebug - idekey anpassen
Die Firefox-Extension Easy Xdebug erleichtert das Debuggen von PHP Anwendungen. Man kann die IDE (z. B. Netbeans) lauschen lassen und bei Bedarf das Debugging vom Browser aus starten.
Die Konfigurationsmöglichkeiten von Easy Xdebug sind auf die Angabe des Wertes Xdebug.idekey beschränkt. Dieser Wert wird über die php.ini serverseitig konfiguriert. Bei mir war es nun der Fall, dass der geänderte Wert sich in der Firefox-Extension nicht speichern ließ. Ein Klick auf “OK” bewirkte nichts. Nur “Abbrechen” ging. Manchmal ging es dann doch (und zwar immer, wenn ich quatsch eingetragen hatte), dann wieder nicht.
Also habe ich den Browser beendet und die Konfiguration der Extension einfach in der Textdatei /home/USERNAME/.mozilla/firefox/PROFILE_ID.default/prefs.js vorgenommen (dort einfach nach xdebug suchen).
Wenn es den Eintrag nicht gibt, dann kann man ihn einfach hinzufügen:
user_pref("extensions.easyxdebug.idekey", "myide-xdebug");
WebSequenceDiagrams.com - Draw and Edit Sequence Diagrams in seconds
Super einfach Flussdiagramme erstellen - kostenlos und online.
Code folding für Gedit
Ich mag Gedit. Wenn ich grad keine IDE brauche, dann nehme ich meist Gedit (manchmal auch vi). Mit ein paar Plugins lässt er sich auch zum Coden wirklich gut gebrauchen.
Ein solches praktisches Plugin gibt es zum Beispiel für Code-Folding. Man kann mit [Alt]+[Z] Code Blöcke ein- und ausklappen. Eingeklappte Codeblöcke, bzw. die übrig gebliebene Zeile wird farblich hervorgehoben.
Einfach die beiden Dateien ins Verzeichnis ~/.gnome2/gedit/plugins/ kopieren, Gedit neu starten, Plugin aktivieren.
Embedded document löschen mit mongoose
Irgendwie scheint das derzeit nicht wie dokumentiert zu klappen.
Hier ein Workaround:
// Delete Tag
app.del('/tags/:id.json', function(req, res) {
Contact.findById(req.body.contact_id, function(err, doc) {
if(!err) {
var index = 0;
doc.tags.forEach(function(item) {
if(item._id == req.params.id) {
var newTagsObj = doc.tags.toObject();
newTagsObj.splice(index,1)
Contact.update(
{ _id: req.body.contact_id },
{ 'tags': newTagsObj },
function(err) {
if(!err) {
res.send({success: true});
}
}
);
return false;
}
index += 1;
});
}
})
});
public/client.js at master from guybrush/backbone-rpc-example - GitHub
Wow. Kranker Mist!
Erinnert sich wer noch an “DHTML”? :D
mashpie/i18n-node - GitHub
i18n mit node.js (auch mit dem express Framework). Sieht nützlich aus, werd ich demnächst mal ausprobieren.
mongoose: Document Update (RESTful)
Für die (Gedächtnis-)Ablage:
// Notes Update (PUT)
app.put('/notes/:id.json', function(req, res) {
Note.update(
{ _id: req.params.id }, // find updatable document by _id
{
text: req.body.text,
starts_at: req.body.starts_at,
due_to: req.body.due_to,
sticky: req.body.sticky
},
function(err) {
if(err) throw(err);
res.send({success: true});
}
);
});
mongoose: Query mit Sort
Wow, das ist eine eigenartige Syntax:
// Get notes by EntityIdentifier
app.get('/notes/all', function(req, res) {
docs = [];
Note.find({entity_id: req.query.entity_id}).sort('sticky','descending').each(function (err, doc) {
if (err) throw (err);
if(doc)
{
docs.push(doc);
}
else
{
res.send(docs.map(function(d) {
return d.toObject();
}));
}
});
});
Danke an ekryski.
UPDATE 17.05.2011:
Wusst ich doch, dass das irgendwie komisch ist… ;)
Hier eine optimierte Lösung:
app.get('/notes/all', function(req, res) {
Note.find({entity_id: req.query.entity_id}).sort(
'sticky',
'descending',
'created_at',
'descending').run(function (err, docs) {
if (err) throw (err);
res.send(docs.map(function(d) {
return d.toObject();
}));
});
});
Statt dem each() nun ein run().
rest/urls · Microformats Wiki
Wie sollten URLs für eine RESTful API aussehen? Antwort nach dem Klick…
Can't get sessions to work - TypeError: Cannot set property 'uid' of undefined - Express | Google Groups
Aaaahhh… Router muss _nach_ Session kommen. ok. #nodejs #session