我正在测试一个应用程序(希望在heroku上运行,但在本地也有问题).运行http.Server.listen()时它会给我一个EACCES错误 - 但它只发生在某些端口上.
所以,我在本地运行:
joe@joebuntu:~$ node
> var h = require('http').createServer();
> h.listen(900);
Error: EACCES, Permission denied
at Server._doListen (net.js:1062:5)
at net.js:1033:14
at Object.lookup (dns.js:132:45)
at Server.listen (net.js:1027:20)
at [object Context]:1:3
at Interface.<anonymous> (repl.js:150:22)
at Interface.emit (events.js:42:17)
at Interface._onLine (readline.js:132:10)
at Interface._line (readline.js:387:8)
at Interface._ttyWrite (readline.js:564:14)
Run Code Online (Sandbox Code Playgroud)
我没有在端口900上运行任何东西(或者我试过的其他20个端口),所以这应该有效.奇怪的是它确实可以在某些端口上运行.例如,端口3000完美运行.
什么会导致这个?
我发现在我的本地计算机上,EACCES错误即将发生,因为我必须以root身份运行节点才能绑定到那些特定端口.我不知道为什么会这样,但使用sudo修复它.但是,这并没有解释我如何在Heroku上修复它.没有办法在Heroku上以root身份运行,那么我怎样才能在端口80上侦听?
我目前正在开发一个网络应用程序,并且受到了几个不同的应用程序(主要是Cloud9IDE)的启发,他们在javascript对象中占据了大部分界面.这使得将来添加功能非常容易,并且还允许将来使用可扩展性选项.
问题是,在内存中存储数据(通过javascript)在什么时候变得粗鲁.我正在建立一个社交网络(想像Twitter),基本上我会为每个"推文"存储一个对象,以及一些更广泛的对象用于界面项目.
浏览器是否强制要求我使用多少内存?如果我过去,我的网站会崩溃吗?或者整个浏览器会崩溃吗?它会减慢用户的速度吗?如果是这样,是否有一般规则可以打扰普通用户多少内存?
所以,我正在学习Node.JS的方法,到目前为止,我很喜欢它.我已经有几个项目在工作,我认为我可以使用nodejs.
不过,我担心安全问题.如果我使用Node.JS的http模块编写自定义Web服务器,我是否可能极易受到攻击?Apache/IIS已经有多年(以及数年和数年)的专业团队在他们的网络服务器中建立安全性,而且人们仍然在寻找漏洞.我的自制网络服务器是否可能更容易受到攻击?
我可以集中精力为我的网络服务器构建一个良好的安全层?有没有关于这个主题的好文章?
我一直试图找到这个问题的答案,但在我的研究中没有找到任何明确的"是"或"否".
我正在运行这样一个简单的MySQL查询:
UPDATE item SET `score`=`score`+1 WHERE `id`=1
Run Code Online (Sandbox Code Playgroud)
有没有办法让该查询返回更新的值,而不是受影响的行数?作为参考,我在PHP中这样做,所以实际代码如下:
$sql = "UPDATE item SET `score`=`score`+1 WHERE `id`=1";
$new_value = mysql_query($sql);
//Unfortunately this does not return the new value
Run Code Online (Sandbox Code Playgroud)
我知道我可以做第二个查询而只是选择值,但我试图尽可能减少查询.有办法吗?
我的工作在运行apache的ubuntu服务器(10.10)上运行几个不同的内部Web应用程序.我目前正在开发另一个Web应用程序,我正在认真考虑在定制的node.js Web服务器上进行开发.我想要这样做的理由是:
我的问题是,在我有apache监听端口80的服务器上,如何将某个子域传递给node.js. 我已经看过几篇关于使用apache虚拟主机传递它的文章,但这似乎打败了使用node.js的目的.如果我必须通过apache,那么我避免apache/IIS的所有三个原因都已自我解决.
我知道我可以使用不同的端口(:8080?),但从最终用户的角度来看,放入自定义端口非常困惑.还有其他想法吗?
谢谢
我正在为一些客户构建基于PHP的上传服务.我正在使用SWFUpload,以便我可以在上传时查看文件的进度.我已经完成了它,但是在我们向公众发布它之前,我遇到了最后一个问题.
我们的许多(几乎所有)客户都是基于Mac的,并且正在上传包含InDesign文件,字体,Illustrator文件等的文件集.大多数时候图像文件都可以,但偶尔(并且始终使用Type 1字体)该文件将被损坏,因为它正在丢失资源分叉.
我理解为什么会这样(从多叉系统转移到单叉系统),但我找不到任何优雅的解决方案.在我的研究中,到目前为止我找到的最佳答案是"让用户压缩它".我知道这很有效,但我们客户认为,要求他们压缩他们要发送的每一组文件是不合理的.
有没有更好的解决方案来保持这些资源叉活着?当然,我更喜欢直接javascript/php的解决方案,但是会选择基于flash或(最不优选)基于java的东西.
我对新解决方案的唯一要求是:
这是关于我的系统的一些信息
我正在编写一个Node.js应用程序,它必须从我们的一个内部API请求一些数据.棘手的部分是我请求数据的服务器有一些限制:
为了做到这一点,我运行了一些看起来像这样的代码:
var headers = {
Host: externalHostname,
Hostname: externalHostname,
};
var options = {
host: InternalIP,
path: path,
method: 'GET',
headers: headers
};
var req = https.request(options, function(res) {
res.setEncoding('utf8');
var data = "";
res.on('data', function(chunk) {
data += chunk;
});
res.on('end', function() {
//Do something with that data
});
res.on('error', function(err) {
console.log("Error during HTTP request");
console.log(err);
});
});
req.end();
Run Code Online (Sandbox Code Playgroud)
不幸的是,我得到一个400(你的浏览器发送了一个请求,这个服务器无法理解)错误作为响应.我已经检查过主机名,IP地址和路径名都是正确的(我可以在我的浏览器中测试它们,并且一切都很好).
我做了我的响应变量(res)的输出,并且我收到的authorizationError值为UNABLE_TO_VERIFY_LEAF_SIGNATURE.我不确定那是什么,或者这是我的问题,但它是我能找到的唯一有用的信息.
我在这里输出了我的响应变量的完整输出.
关于可能导致这种情况的任何想法?
更新:我想通了!我试图通过传递?PHPSESSID=asdad GET变量来验证服务器,但是他们已经禁用了.我能够通过设置PHPSESSID …
这可能是一个愚蠢的问题,但是while循环的效率如何与for循环的效率相比较?我一直被教导如果你可以使用for循环,那么我应该.但实际上是什么区别:
$i = 0;
while($i < 100) {
echo $i;
$i++;
}
Run Code Online (Sandbox Code Playgroud)
相比于:
for($i = 0; $i < 100; $i++) {
echo $i;
}
Run Code Online (Sandbox Code Playgroud)
我知道在这些具体的例子中差异就像.000000001%,但是当我们谈论大型复杂循环时,有什么区别?
我正在构建一个Web应用程序,我想知道如何处理我的AJAX调用错误.例如,如果用户输入某种无效的数据(错误的电子邮件地址,用户已存在),我希望能够从PHP中抛出错误.
我在这里看到http://php4every1.com/tutorials/jquery-ajax-tutorial/您可以使用JSON对象并处理来自JQuery的Success函数的错误报告,但这似乎不是正确的方法做到这一点.对我来说,当出现错误时应该使用jQuery的错误函数.我想我是那种东西的坚持者.
这就是我现在正在做的事情.
//In my PHP file called from JQuery
function error($msg) {
header("HTTP/1.0 555 ".$msg);
die();
}
//Then that error is handled accordingly from JQuery
Run Code Online (Sandbox Code Playgroud)
所以我创建了一个555的错误代码 - 它没有被定义为任何东西 - 并且在我自己的自定义错误消息上添加了.这是正确的方法吗?我应该只使用JSON吗?必须有一种标准的方式来发送这样的错误信息,对吗?
如果您需要查看更多我的代码以获得更好的想法,整个项目都在github上:https://github.com/josephwegner/fileDrop.有问题的文件是config/phpFuncts.php.
我正在Node.js中构建一个系统,它应该找到文件夹数组中的所有文件,对它们进行统计,然后使用该信息做一些额外的工作.
我正在使用fs.readdir()从每个文件夹同步获取所有文件.我的代码看起来像这样:
for(i=0,max=paths.length; i<max; i++) {
var path = paths.pop();
console.log("READING PATH: " + path);
fs.readdir(path, function(err, files) { handleDir(err, files, path); });
}
Run Code Online (Sandbox Code Playgroud)
问题是,根据readdir()执行的速度,handleDir()获取错误的路径.发生这种情况是因为在回调运行时,下一个循环已经开始 - 意味着路径变量已经改变.
所以,我需要做的是以某种方式将路径变量锁定到它的特定回调函数.我想不出有什么好办法 - 任何人都有一些想法?