小编gr0*_*r0k的帖子

是否有针对属性的确切长度的rspec测试?

我正在尝试测试邮政编码属性的长度,以确保其长度为5个字符.现在我正在测试,以确保它不是空白,然后太短,4个字符,太长,6个字符.

有没有办法测试它正好是5个字符?到目前为止,我没有在网上或在rspec书中找到任何内容.

tdd bdd rspec

12
推荐指数
4
解决办法
1万
查看次数

向rails选择标签添加空白选项

我使用jquery链接,我试图让第二个下拉列表灰显,如果第一个选择了空白选项.我假设我在第二个列表中需要一个空白选项才能锁定,但我不确定如何添加空白选项.这是选择选项

<%= select_tag :equipment, options_for_select(Equipment.all.collect
                                            { |e| ["#{e.model} - #{e.serialNum}",e.id, 
                                            :class =>"#{e.handReceipt}"]},
                                            html_options = {:id=>'equipment'}) %>
Run Code Online (Sandbox Code Playgroud)

第一个下拉列表允许您选择手工收据类型,并且使用jquery链接,第二个列表仅显示具有相应手工收据属性的记录.

如何在上面的选择中添加空白选项?

编辑 - 这是我到目前为止所尝试的 -

<%= select_tag :equipment, 
     options_for_select(  [["--",""],
                          Equipment.all.collect{ |e|
                          ["#{e.model} - #{e.serialNum}",
                          e.id, :class =>"#{e.handReceipt}"]}],
                          html_options = {:id=>'equipment'}) %>
Run Code Online (Sandbox Code Playgroud)

这导致列表显示不当 -

<select id="equipment" name="equipment">
   <option value="">--</option>
   <option value="[&quot;M4 - W432156&quot;, 10, {:class=&gt;&quot;Arms Room&quot;}]">[&quot;PSN-13 - 176985&quot;, 1, {:class=&gt;&quot;Commo&quot;}]</option>
</select>
Run Code Online (Sandbox Code Playgroud)

它不是显示表中的所有记录,而是显示空白选项和第二个选项.

<%= select_tag :equipment, 
     options_for_select(  :include_blank => true,
                          Equipment.all.collect{ |e|
                          ["#{e.model} - #{e.serialNum}",
                          e.id, :class =>"#{e.handReceipt}"]},
                          html_options = {:id=>'equipment'}) %>
Run Code Online (Sandbox Code Playgroud)

结果出现以下错误 - …

ruby-on-rails

6
推荐指数
1
解决办法
9496
查看次数

如何修复缓冲区溢出返回地址失败?

我几天来一直在研究Jon Erickson的剥削艺术的缓冲区溢出,我不明白为什么我会出现分段错误.至于我可以告诉大家,返回地址被正确地在NOP雪橇地址覆盖,但该程序引发每次到达堆栈帧结束返回指令的时间段故障.

代码的易受攻击部分length = recv_line(sockfd, request);是从不检查缓冲区大小.从tinyweb程序中获取的整个功能如下 -

void (handle_connection(int sockfd, struct sockaddr_in *client_addr_ptr)){
unsigned char *ptr, request[500], resource[500];
int fd, length;

printf("[DEBUG] hc:1 sockfd is at %08x and contains 0x%08x\n", &sockfd, sockfd);
length = recv_line(sockfd, request);
printf("[DEBUG] hc:2 sockfd is at %08x and contains 0x%08x\n", &sockfd, sockfd);

printf("Request %s:%d \"%s\"\n", inet_ntoa(client_addr_ptr->sin_addr), ntohs(client_addr_ptr->sin_port), request);
printf("[DEBUG] hc:3 sockfd is at %08x and contains 0x%08x\n", &sockfd, sockfd);

ptr = strstr(request, " HTTP/");
if(ptr == NULL){
    printf(" NOT HTTP!\n");
} …
Run Code Online (Sandbox Code Playgroud)

c security debugging buffer segmentation-fault

5
推荐指数
1
解决办法
3579
查看次数

为什么 Python 3 中的索引字节返回 int 而不是 bytes?

尝试理解为什么获取 bytes 对象的索引会返回一个无法解码的 int,但切片会返回一个可以解码的 bytes 对象。这似乎不直观。当您对字符串执行相同的操作时,在字符串位置获取索引仍然会返回一个字符串。

在解决 Cryptopals 挑战时,我尝试迭代字节数组,对异或字符串进行频率分析,以计算纯文本字母的出现次数。我以为我可以执行以下操作,但我收到“int”对象没有属性“解码”错误。通过阅读 Python 文档,这是有道理的,字节数组是整数的可变序列,但在解释器中测试时,我期望不同的行为。

str_a = bytearray(b'\x1b77316?x\x15\x1b\x7f+x413=x9x(7-6<x7>x:9;76')

for x in str_a:
    _ = x.decode('ascii').upper() 
    if _ in counts:
        counts[_] += 1
Run Code Online (Sandbox Code Playgroud)

如果我将变量设置为单个字节,我可以对其调用decode()。我想我可以迭代字节字符串中的所有字节并以相同的方式解码(因此是上面的循环)。但是,由于 r[0] 是一个 int,所以这是行不通的。但如果我取 r[0:1],它会吗?我意识到我可以只调用 chr(r[0]),但我想如果 r.decode() 有效,那么 r[0].decode() 也应该有效。

>>> r = b'A'
>>> type(r)
<class 'bytes'>
>>> r.decode('ascii')
'A'
>>> r[0:1]
b'A'
>>> r[0:1].decode('ascii')
'A'
>>> type(r[0])
<class 'int'>
>>> r[0]
65
>>> r[0].decode('ascii')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'int' object has no …
Run Code Online (Sandbox Code Playgroud)

python-3.x

5
推荐指数
1
解决办法
1787
查看次数