我是node.js的新手,虽然我对JavaScript非常熟悉.我的问题是关于如何处理node.js中的错误的"最佳实践".
通常在编写Web服务器,FastCGI服务器或各种语言的网页时,我在多线程环境中使用阻塞处理程序的异常.当请求进来时,我通常做这样的事情:
function handleRequest(request, response) {
try {
if (request.url=="whatever")
handleWhateverRequest(request, response);
else
throw new Error("404 not found");
} catch (e) {
response.writeHead(500, {'Content-Type': 'text/plain'});
response.end("Server error: "+e.message);
}
}
function handleWhateverRequest(request, response) {
if (something)
throw new Error("something bad happened");
Response.end("OK");
}
Run Code Online (Sandbox Code Playgroud)
这样我就可以随时处理内部错误并向用户发送有效响应.
我理解,对于node.js,应该进行非阻塞调用,这显然会导致不同数量的回调,如下例所示:
var sys = require('sys'),
fs = require('fs');
require("http").createServer(handleRequest).listen(8124);
function handleRequest(request, response) {
fs.open("/proc/cpuinfo", "r",
function(error, fd) {
if (error)
throw new Error("fs.open error: "+error.message);
console.log("File open.");
var buffer = new require('buffer').Buffer(10);
fs.read(fd, buffer, 0, 10, …Run Code Online (Sandbox Code Playgroud) 什么是std::pair,为什么我会使用它,以及boost::compressed_pair带来什么好处?
假设您有一些像这样的HTML:
<form>
<input placeholder="Some text!" required>
<input type="email" placeholder="An Email!" required>
<input type="submit" value="A Button!">
</form>
Run Code Online (Sandbox Code Playgroud)
由于required属性,如果将空白留空,较新的Webkits和Firefox会在该字段旁边显示验证消息.
他们回应了以下规则的风格:
div {
font: Helvetica;
}
Run Code Online (Sandbox Code Playgroud)
但我找不到更具体的选择器.有谁知道使用或将要使用的选择器,甚至是与此相关的webkit/gecko的错误报告?
(JSFiddle显示它们可以用div选择器设置样式:http://jsfiddle.net/p7kK5/)
这是一件让我困扰一段时间的事情.为什么我不能这样做:
>>> a = ""
>>> a.foo = 2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute 'foo'
Run Code Online (Sandbox Code Playgroud)
......虽然我可以做以下事情?
>>> class Bar():
... pass
...
>>> a = Bar()
>>> a.foo = 10 #ok!
Run Code Online (Sandbox Code Playgroud)
这里的规则是什么?你能指点我一些描述吗?
如果在条件下缩进很长时间,你通常会做这样的事情(实际上,PyDev会这样缩进):
if (collResv.repeatability is None or
collResv.somethingElse):
collResv.rejected = True
collResv.rejectCompletely()
Run Code Online (Sandbox Code Playgroud)
但是,这会将if语句启动的块放在与if条件的最后一部分相同的缩进级别上,这使得它在我看来非常难看/难以阅读,因为您没有立即看到块的开始位置.
我想到的其他一些风格:
if (collResv.repeatability is None or
collResv.somethingElse):
collResv.rejected = True
collResv.rejectCompletely()
Run Code Online (Sandbox Code Playgroud)
这看起来非常不一致,因为第二行缩进比第一行缩进得多,但它是可读的.
if (collResv.repeatability is None or
collResv.somethingElse):
collResv.rejected = True
collResv.rejectCompletely()
Run Code Online (Sandbox Code Playgroud)
这也比第一个例子更具可读性,但缩进不再是4的倍数,而且它看起来不对,因为第二行的缩进比第一行中条件的开头少.
所以,我的主要问题是:对于那些不需要过长行(即单行条件)的情况,是否有建议的缩进样式?如果没有,你更喜欢这样的情况?
我需要date在今年的第一天和最后一天获得对象.
目前我正在使用这个工作正常的代码,但我很好奇是否有更好的方法来做到这一点; 例如,无需手动指定月/日.
from datetime import date
a = date(date.today().year, 1, 1)
b = date(date.today().year, 12, 31)
Run Code Online (Sandbox Code Playgroud) 双击html页面时,大多数浏览器选择双击的单词(或三键单击的段落).有没有办法摆脱这种行为?
请注意,我不想通过单击+拖动禁用常规选择; 即jQuery UI $('body').disableSelection()和document.onselectstartDOM事件不是我想要的.
在工作中,我们使用的主题分支在某些时候被集成到少数(3)主分支中.现在我想从我的远程存储库中删除已完全集成到主分支中的所有主题分支.如果那是不可能的,那么检索已经集成的本地分支列表也会没问题.
javascript ×3
python ×3
jquery ×2
attributes ×1
boost ×1
c++ ×1
callback ×1
coding-style ×1
date ×1
fatal-error ×1
forms ×1
git ×1
git-branch ×1
html ×1
html5 ×1
indentation ×1
node.js ×1
object ×1
php ×1
selection ×1
std-pair ×1
stl ×1