Hello,
Now I'll move the database server to a new host. GTAT.org may not be available until 23:00.
- Draco
Hello,
Now I'll move the database server to a new host. GTAT.org may not be available until 23:00.
While working with Node.JS and dbslayer today, I was facing a weird issue with escaping strings.
Best thing would have been, if I could have forced my server to use NO_BACKSLASH_ESCAPES as sql-mode and then just escape the ' to ''.
But since this server is also used by other programs and NO_BACKSLASH_ESCAPES option cannot be set by option for dbslayer I had to turn it off again.
I ended up with this tiny escape string method:
var db_escape_string = function(string) {
return string.replace(/([\\\n\r])/g, "\\$&").replace("'", "''", 'g');
};
It replaces ** (backslash), newline and carriage return with \, \n and \r. Since also single quote needs to be escaped, I finally replace all ' with ''.
You may wonder why I do not escape ". The issue is, that a " appearing within a string in between ' does not need to be escaped.
'this is a test"2' => 'this is a test\"2'
That's why I sticked to the rule to put strings within single quote and do not escape those question marks at all.
A while back I explained how to mount sftp/ssh folders in eclipse.
When working with eclipse or zend studio on remote systems, there are times when I get the message "Operation failed. File system input or output error" very often.
Even though several posts in zend forums suggest, that you should restart your IDE in this case, I tried to track down what causes the issue.
I ended up with the following: The ssh-host has already closed the connection, but eclipse thinks it's still available. So it tries to use the connection, but fails.
Whenever I get this issue now, I go into "Remote Systems"-View, right-click the Connection and choose "Disconnect" from the context menu. Right after that, I open that context menu again and press "Connect". Problem resolved.
This is an PHP-Tokenizer error, which just wants to tell you that there are two colons. ;)
If one develops with Node.JS and wants to use the full event-loop power, you got to use callbacks for everything.
That said, it looks ugly to do that:
posix.rename("/tmp/hello", "/tmp/world").addCallback(function () {
posix.stat("/etc/passwd").addCallback(function (stats) {
sys.puts("stats: " + JSON.stringify(stats));
});
});
The
api advices to use:
posix.rename("/tmp/hello", "/tmp/world").wait();
var stats = posix.stat("/etc/passwd").wait();
sys.puts("stats: " + JSON.stringify(stats));
but this is a problem, too. Why? Because you can't do that too often (just ~10 times) at the same time.
That's why I created two little helper methods:
chain and group.