我有一个网站,以不同的方式处理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中可以清楚地看出,原始与编码相当于未保留的字符,但保留字符的故事是什么?
如何在Android中测试应用程序的性能?Android提供的支持是什么?如何使用它?
Javascript中的window.setTimeout(和相关的setInterval)函数允许您安排将来某个时间执行的函数:
id = setTimeout(function, delay);
Run Code Online (Sandbox Code Playgroud)
其中"延迟"是您希望调用该函数的未来毫秒数.在此时间过去之前,您可以使用以下命令取消计时器:
clearTimeout(id);
Run Code Online (Sandbox Code Playgroud)
我想要的是更新计时器.我希望能够提前或推迟一个定时器,使得该函数被调用x毫秒早或晚比原计划.
如果有一个getTimeout方法,你可以这样做:
originally_scheduled_time = getTimeout(id);
updateTimeout(id, originally_schedule_time + new_delay); // change the time
Run Code Online (Sandbox Code Playgroud)
但据我所知,没有像getTimeout或任何更新现有计时器的方法.
有没有办法访问计划的警报列表并进行修改?
有更好的方法吗?
谢谢!
从这篇文章开始,决不会破坏ActiveRecord.我很满意它,但是为了知识和尝试一些选项,ActiveRecord还有其他选择吗?有没有人使用过其他ORM而不是ActiveRecord,如果是,那么ORM是什么?请分享您的经验.
我想在工具栏中添加一个调用JavaScript函数的按钮Tada()?
关于如何添加这个的任何想法?
我做的事情sudo gem install json.然后我做irb.然后我做require 'json'.然后它说no such file to load -- json
我有一种情况需要为嵌入式硬件的某些设备驱动程序编写一些单元测试.代码很老很大,很遗憾没有很多测试.现在,唯一可能的测试是完全编译操作系统,将其加载到设备上,在现实场景中使用它并说"它有效".没有办法测试单个组件.
我在这里遇到了一个很好的线程,它讨论了嵌入式设备的单元测试,我从中获得了大量信息.我想更具体一点,并询问是否有人在这种情况下测试设备驱动程序是否有任何"最佳实践".我不希望能够模拟有问题的电路板正在与之交谈的任何设备,因此可能必须在实际硬件本身上测试它们.
通过这样做,我希望能够获得驱动程序的单元测试覆盖率数据,并诱使开发人员编写测试以增加其驱动程序的覆盖范围.
我遇到的一件事是编写在操作系统上运行的嵌入式应用程序并运行驱动程序代码,然后将结果传回测试工具.该设备有几个接口,我可以使用它来从我的测试PC驱动应用程序,以便我可以运用代码.
任何其他建议或见解将非常感谢.
更新:虽然它可能不是确切的术语,但当我说单元测试时,我的意思是能够测试/练习代码而无需编译整个OS +驱动程序并将其加载到设备上.如果我必须这样做,我会称之为集成/系统测试.
问题是我们所拥有的硬件是有限的,开发人员经常使用它们来修复错误等.要保持一个专用的并连接到CI服务器和自动化测试的机器可能是不可能的这个阶段.这就是为什么我正在寻找测试驱动程序的方法,而无需实际构建整个程序并将其上传到设备上.
基于下面的优秀答案,我认为解决问题的合理方法是使用IOCTL公开驱动程序功能,然后在嵌入式设备的应用程序空间中编写测试以实际运行驱动程序代码.
让一个小程序驻留在设备的应用程序空间中也是有意义的,它暴露了一个可以通过串行或USB运行驱动程序的API,这样单元测试的内容就可以写在PC上了,它将与PC通信.硬件并运行测试.
如果项目刚刚启动,我认为我们可以更好地控制组件的隔离方式,以便主要在PC级别进行测试.鉴于编码已经完成并且我们正在尝试将测试工具和案例改装到系统上,我认为上述方法更实用.
谢谢大家的回答.
我只是想知道表字段命名,例如first_name.
在数据模型中.我也可以将其命名为first_name吗?
或者我必须更改为firstName吗?
谢谢
void outputString(const char *str) {
cout << "outputString(const char *str) : " << str << endl;
}
Run Code Online (Sandbox Code Playgroud)
原来是
Dump of assembler code for function _Z12outputStringPKc:
0x004013ee <_Z12outputStringPKc+0>: push ebp
0x004013ef <_Z12outputStringPKc+1>: mov ebp,esp
0x004013f1 <_Z12outputStringPKc+3>: sub esp,0x8
0x004013f4 <_Z12outputStringPKc+6>: mov DWORD PTR [esp+4],0x443000
0x004013fc <_Z12outputStringPKc+14>: mov DWORD PTR [esp],0x4463c0
0x00401403 <_Z12outputStringPKc+21>: call 0x43f6e8 <_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc>
0x00401408 <_Z12outputStringPKc+26>: mov edx,DWORD PTR [ebp+8]
0x0040140b <_Z12outputStringPKc+29>: mov DWORD PTR [esp+4],edx
0x0040140f <_Z12outputStringPKc+33>: mov DWORD PTR [esp],eax
0x00401412 <_Z12outputStringPKc+36>: call 0x43f6e8 <_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc>
0x00401417 <_Z12outputStringPKc+41>: mov …Run Code Online (Sandbox Code Playgroud) 我正在使用名为Daisy 2.02 Validator的软件,它使用GUI但我想以编程方式访问它,以便我可以通过我的C#项目控制所有验证过程.我无法找到任何有关它的库,任何.net Api或用于控制它的DOS命令的帮助.请帮我.
谢谢,问候,穆罕默德瓦卡斯
javascript ×2
.net ×1
android ×1
c# ×1
cakephp ×1
ckeditor ×1
disassembly ×1
drivers ×1
embedded ×1
encoding ×1
exe ×1
gdb ×1
gem ×1
http ×1
orm ×1
performance ×1
require ×1
ruby ×1
settimeout ×1
testing ×1
unit-testing ×1
url ×1