在Notepad ++中,有一个非常方便的按钮我可以按下来查看空格,制表符和换行符所在的符号,这样我就可以看到哪些空格是由空格引起的,哪些是由制表符引起的.我可以在emacs中执行此操作吗?如果没有,人们通常如何在emacs中测试您正在阅读的文件是否用空格或制表符分隔字符串?
我正在尝试在以下应用上使用BeautifulSoup:
<h4>Hello<br /></h4>
<p><img src="http://url.goes.here" alt="hiya" class="img" />May 28, 1996</p>
Run Code Online (Sandbox Code Playgroud)
对于此示例,假设我将<h4>
标签保存在变量中tag
。当我输入时print tag.text
,输出是Hello
,如预期的那样。
但是,当我使用print tag.nextSibling
输出时什么也没有。当我键入内容时print tag.nextSibling.nextSibling
,输出为<p><img src="http://url.goes.here" alt="hiya" class="img" />May 28, 1996</p>
。到底是怎么回事?为什么在示例中我必须加倍使用.nextSibling
才能获得<p>
标签?这始终是一个错误。
如果我有一个文件,并且我想在字面上写'42'(值,而不是字符串),例如是十六进制的2a,我该怎么做?我希望能够使用outfile.write(42)或outfile.write(2a)之类的东西,而不是将字符串写入文件.
(我意识到这是一个简单的问题,但我找不到谷歌的答案,可能是因为我不知道正确的搜索条件)
首先,我看到要使用CRYPT_BLOWFISH,我需要使用以$ 2a $开头的16个char盐.但是,crypt()的php.net文档说某些系统不支持CRYPT_BLOWFISH.这种情况多久一次?
接下来,从他们在docs上的例子中,我看到我使用crypt()如下:
<?php
$password = crypt('mypassword'); // let the salt be automatically generated
/* You should pass the entire results of crypt() as the salt for comparing a
password, to avoid problems when different hashing algorithms are used. (As
it says above, standard DES-based password hashing uses a 2-character salt,
but MD5-based hashing uses 12.) */
if (crypt($user_input, $password) == $password) {
echo "Password verified!";
}
?>
Run Code Online (Sandbox Code Playgroud)
为了使用CRYPT_BLOWFISH,我唯一需要修改的是第一行来使它像这样;
crypt('mypassword', '$2a$07$usesomesillystringforsalt$')
Run Code Online (Sandbox Code Playgroud)
然后剩下的线路都很好吗?
我有一个PHP表单,我想知道我应该如何处理提交.我记得在学习Rails时,行为是为表单创建一个特殊的处理程序页面,然后将用户重定向到登录页面,这样可以防止用户通过点击后退按钮意外重新提交数据并返回到表单提交页面.
对于我的PHP表单,为避免此类错误(以及安全性,但它可能会发挥作用)是否最好通过post将表单数据发送到处理页面,然后重定向用户?或者只是处理与表单相同的页面上的表单数据是否可以?如果我做了后者,用户是否可能通过回击/刷新/等意外重新提交数据?
char *a = "apple";
printf("%s\n", a); // fine
printf("%s\n", a[1]); // compiler complains an int is being passed
Run Code Online (Sandbox Code Playgroud)
为什么索引字符串指针给我一个int?我期待它只是打印从第一位开始的字符串(实际上当我使用时会发生这种情况&a[1]
).为什么我需要获得地址?
unsigned short s;
s = 0xffff;
int i = s;
Run Code Online (Sandbox Code Playgroud)
扩展如何在这里工作?添加了2个更大的顺序字节,但我很困惑1或0是否在那里扩展.这可能与平台有关,所以让我们关注Unix的作用.int的两个更大的顺序字节是用1还是0填充,为什么?
基本上,计算机是否知道s
无符号,并正确地将0分配给int的高阶位?那么i
现在0x0000ffff
呢?或者因为ints
在unix中默认签名,它是否从s
(a 1)获取有符号位并将其复制到更高阶的字节?
我正在用GDB调试程序.
unsigned int example = ~0;
Run Code Online (Sandbox Code Playgroud)
给我:
(gdb) x/4bt example
0xffd99788: 10101000 10010111 11011001 11111111
Run Code Online (Sandbox Code Playgroud)
为什么这不是全部1?我把它定义为~0 ...然后下一行代码是:
example>>=(31);
Run Code Online (Sandbox Code Playgroud)
当我尝试检查位内存时,GDB给了我这个:
(gdb) x/4bt example
0xffffffff: Cannot access memory at address 0xffffffff
Run Code Online (Sandbox Code Playgroud)
到底是怎么回事???
我试图验证用户给我的程序输入的输入gets
是一个整数.is_a?(Integer)
据我所知,因为gets
从用户那里获取一个字符串,所以它总是返回false,即使用户输入一个有效的整数(以字符串形式)也是如此.人们会认为我可以简单地使用to_i
输入并完成它,但这引发了另一个问题 - "75akjfas".to_i
结果75
.因此,如果我依靠to_i
解决我的问题,任何以数字开头的东西都会起作用.
如何干净地验证该值是否仅为整数,而不是数字和字母的组合?或者我需要诉诸正则表达式吗?