假设你在bash中开始编写如下命令:
$ rm -rf /foo/bar/really/long/path/here
Run Code Online (Sandbox Code Playgroud)
然后意识到你毕竟不想执行这个.有没有办法通过一次或两次击键来清除输入?
我最近一直在做的是在回显之前将输入括在引号中(Ctrl + A echo "
,, Ctrl + E,"
然后按Enter键).有更快的方法吗?
我有一个网站,以不同的方式处理URL的路径部分(而不是查询字符串)中的"/"和"%2F".根据RFC或现实世界,这是一件坏事吗?
我问,因为我正在使用我正在使用的Web框架(Ruby on Rails)以及下面的图层(Passenger,Apache,例如,我必须为Apache启用"ALLOW_ENCODED_SLASHES").我现在倾向于完全摆脱编码的斜杠,但我想知道我是否应该提交错误报告,我看到涉及编码斜线的奇怪行为.
至于为什么我首先有编码的斜杠,基本上我有这样的路线:
:controller/:foo/:bar
Run Code Online (Sandbox Code Playgroud)
其中:foo就像一个可以包含斜杠的路径.我认为最简单的做法就是只进行URL转义,foo
以便路由机制忽略斜杠.现在我有疑虑,而且很明显框架并不真正支持这一点,但根据RFC,这样做是错误的吗?
以下是我收集的一些信息:
RFC 1738(URL):
当八位字节由一个字符表示并且在编码时,URL通常具有相同的解释.但是,保留字符不是这样:编码为特定方案保留的字符可能会更改URL的语义.
RFC 2396(URI):
这些字符称为"保留",因为它们在URI组件中的使用仅限于其保留的用途.如果URI组件的数据与保留的目的冲突,则必须在形成URI之前转义冲突的数据.
(这里的转义是否意味着除了编码保留字符之外的东西?)
RFC 2616(HTTP/1.1):
除"保留"和"不安全"集合之外的字符(参见RFC 2396 [42])等同于它们的"%"HEX HEX"编码.
还有针对Rails的错误报告,他们似乎希望编码的斜杠行为不同:
是的,我期望得到不同的结果,因为他们指的是不同的资源.
它正在根目录中查找文字文件'foo/bar'.非转义版本正在查找目录foo中的文件栏.
从RFC中可以清楚地看出,原始与编码相当于未保留的字符,但保留字符的故事是什么?
这是一个广泛的问题,但在Ruby编程时我会继续遇到这个问题.我来自一个很大的C和Java背景,当我使用库函数或方法时,我查看文档并查看错误返回的内容(通常在C中)或它可以抛出的异常(在Java中).
在Ruby中,情况似乎完全不同.刚才我需要解析从服务器收到的一些JSON:
data = JSON.parse(response)
Run Code Online (Sandbox Code Playgroud)
当然,在编写这段代码后我想到的第一件事就是如果输入不好怎么办?是否parse
会在出错时返回nil,或者引发一些异常,如果是,那是哪些?
我查看文档(http://flori.github.com/json/doc/JSON.html#M000022),看看,简单地说:
"将JSON字符串源解析为Ruby数据结构并将其返回."
这只是我在Ruby中反复遇到的模式的一个例子.最初,我认为这是我正在使用的任何库的文档的一些缺点,但现在我开始觉得这是标准的做法,我的思维方式与Ruby程序员有点不同.有一些我不知道的惯例吗?
开发人员如何处理这个问题?
(是的,我确实查看了库方法的代码,并且可以了解引发了什么异常,但我不能100%确定,如果没有记录,我会感到不舒服,依赖它.)
编辑:看完前两个答案后,让我继续上面的JSON解析示例.
我怀疑我不应该这样做:
begin
data = JSON.parse(response)
raise "parse error" if data.nil?
rescue Exception => e
# blahblah
end
Run Code Online (Sandbox Code Playgroud)
因为我可以查看代码/测试并看到它似乎引发了一个ParserError
错误(返回nil似乎不是Ruby中的标准做法).我是否正确地说建议的做法是:
begin
data = JSON.parse(response)
rescue JSON::ParserError => e
# blahblah
end
Run Code Online (Sandbox Code Playgroud)
...基于我ParserError
通过查看代码和测试了解到的内容?
(我还编辑了这个例子,以澄清它是我正在解析的服务器的响应.)
我经常想清除Rails中的会话存储,特别是默认的基于cookie的会话存储.有些网站似乎暗示了这一点
rake tmp:sessions:clear
Run Code Online (Sandbox Code Playgroud)
完成这项任务,但似乎没有.清除基于cookie的会话存储的正确方法是什么?
在vim中,当我点击:wq
它时几乎总是在尝试输入时发生的事故:w
.我想禁用:wq
.
我找到的最接近的是cmap
,但它有一些奇怪的行为.如果我做的事情
:cmap wq w
Run Code Online (Sandbox Code Playgroud)
我甚至不能输入:wq
; 它只是将击键序列重新映射wq
到w
命令模式.例如,我不能在包含的字符串上输入搜索/替换命令wq
.
我只是想别名的准确命令:wq
到:w
或无操作.有没有办法做到这一点?
编辑:澄清为什么:cmap
不是我的选择
要在vim中打开文件,我通常键入":e",然后按Tab键直到我想要的文件出现.
但是,我总是陷入一种节奏,无意中超越了所需的文件.在不知道如何向后移动的情况下,我最终会一直指向最后并重复整个过程.
有没有办法以相反的顺序执行文件名完成?
在Google Chrome调试器中,我经常希望获得对DOM树中节点的引用.我可以单击"放大镜"按钮,然后在浏览器窗口中单击所需的元素,以选择调试器中显示的DOM树中的相应节点.但是如何在控制台中获得对该节点的引用?
如果元素有id,则document.getElementById
可以工作,但是如果没有id,是否有更好的替代XPath或使用DOM树的手动遍历children
?
如果XPath是最好的方法,有没有比做这样的事情更好的方法:
var evaluator = new XPathEvaluator();
var result = evaluator.evaluate("//div", document.documentElement, null,
XPathResult.FIRST_ORDERED_NODE_TYPE, null);
Run Code Online (Sandbox Code Playgroud)
每次输入都很痛苦.