最近在一次代码审查中,一位同事声称该[[ ]]
构造比[ ]
在类似的构造中更受欢迎
if [ "`id -nu`" = "$someuser" ] ; then
echo "I love you madly, $someuser"
fi
Run Code Online (Sandbox Code Playgroud)
他无法提供理由.有吗?
在我的环境中,我在各种.vimrc文件中与其他开发人员共享vim配置(并且还有我自己的配置添加).在环境中的某些地方,我在vim中编辑文件,并自动显示带有尾随波浪号后缀的该文件的副本.什么vim选项控制这个?我想关掉这个功能,因为它只会弄乱我的目录并破坏命令行上的自动完成功能.
谢谢.
在我工作的C/Unix环境中,我看到一些开发人员使用__progname
而不是argv[0]
使用消息.这有什么好处吗?__progname
和之间的区别是什么argv[0]
.它是便携式的吗?
以下混淆的C代码将单词打印到"12天的圣诞节".
我试图弄清楚它是如何工作的.我基本上完全迷失了.在初始调用中main的三个无类型参数的重要性是什么,第一次返回后的一系列字符,对main的调用的负数字参数?伊克!
我大部分时间都在考虑这个问题,也许我会学习C语言的一些有趣的角落,所以回答这一点是最受欢迎的.
#include <stdio.h>
main(t,_,a)char *a;{return!0<t?t<3?main(-79,-13,a+main(-87,1-_,
main(-86,0,a+1)+a)):1,t<_?main(t+1,_,a):3,main(-94,-27+t,a)&&t==2?_<13?
main(2,_+1,"%s %d %d\n"):9:16:t<0?t<-72?main(_,t,
"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l,+,/n{n+,/+#n+,/#\
;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l \
q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# \
){nl]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#n'wk nw' \
iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c \
;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/ ') }+}{rl#'{n' ')# \
}'+}##(!!/")
:t<-50?_==*a?putchar(31[a]):main(-65,_,a+1):main((*a=='/')+t,_,a+1)
:0<t?main(2,2,"%s"):*a=='/'||main(0,main(-61,*a,
"!ek;dc i@bK'(q)-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry"),a+1);}
Run Code Online (Sandbox Code Playgroud) 我有一个哈希数组,我想写一个通用的检查器,所以我想传入要检查的键的名称.散列是使用带冒号前缀(符号)的键定义的.我无法弄清楚如何正确使用变量作为键.即使密钥存在于散列中,使用变量访问它也会导致nil.如何通过变量访问哈希键?也许另一种要问的方法是,如何将变量强制转换为符号?
在IRB中,我这样做:
>> family = { 'husband' => "Homer", 'wife' => "Marge" }
=> {"husband"=>"Homer", "wife"=>"Marge"}
>> somevar = "husband"
=> "husband"
>> family[somevar]
=> "Homer"
>> another_family = { :husband => "Fred", :wife => "Wilma" }
=> {:husband=>"Fred", :wife=>"Wilma"}
>> another_family[somevar]
=> nil
>>
Run Code Online (Sandbox Code Playgroud) 在用C编程好几年之后,我意识到我一直忽略了从函数返回零以表示成功的C约定.这个惯例对我来说在语义上是错误的,因为零当然是错误的.问题是我喜欢命名函数is_valid_foobar()
,为了适应"虚假意味着成功"的惯例,我必须更加模糊......而不是:
if ( ! is_valid_foobar() ) {
return (error);
}
Run Code Online (Sandbox Code Playgroud)
其他程序员写道:
if ( validate_foobar() ) {
return (error);
}
Run Code Online (Sandbox Code Playgroud)
我的实现看起来像:
int is_valid_foobar (int foobar ) {
if ( foobar < MAX_ALLOWED ) {
return TRUE;
}
return FALSE;
}
Run Code Online (Sandbox Code Playgroud)
在代码审查中,我实际上并未发现任何问题.所以我认为这不是一个可怕的习惯,但它是"非常规的".我很好奇人们的想法.
我对功能和变量名称的选择非常谨慎,典型的评论评论是"代码非常清晰",而且根本不需要!
在前面输入额外的内容.函数调用.但你怎么说,哦,强大的SO?
我们有一个服务器场,我们正在慢慢迁移到新版本的Perl(5.12.1).我们目前正在运行5.8.5.操作系统也将从RedHat 4升级到RedHat 5,但RedHat 5仍然在Perl 5.8.8上.因此,在我们的源代码树中,我们将支持两个版本的Perl.
我被告知要将新版本的Perl安装到我们的源代码树中,以及我们当前使用的所有CPAN模块.我被告知用正确版本的Perl"编译"模块.我很困惑.对于不同版本的Perl,某些模块是否实际配置不同?鉴于此,我假设我应该为树中的每个Perl版本配置一个CPAN目录?
关于这种情况的任何信息或"陷阱"?
编辑:作为一个额外的问题,相同的cpan目录(由〜/ .cpan指向)是否适用于两个树,或者当我在不同的树(安装模块)工作时,我应该链接到不同的目录?
当我从Word文档剪切并粘贴到VIM中时,引号会被转换为a-circumflex,后跟<99>,其中<99>是单字节表示.(我知道,因为当我移动它时,键入一个'l'会让我直接移动到所有四个字符).
我想做搜索和替换,我知道足够使用control-K a>找到a-cirumflex有向图,但我无法弄清楚如何搜索<99>,并搜索文字/ <99 >不起作用.
所以我真的有两个问题:
我应该在vim中咨询哪些帮助主题,以了解<99>是什么类型的野兽(因为它似乎不是一个有向图)(或者它可能是有向图并且我缺少某些东西)?
如何搜索由<99>表示的单个字符?
我正在学习Scheme.我最近花了(太多!)时间试图找到程序中的错误,然后才意识到我错过了cond子句中的'else'字样.但在这种情况下的行为似乎有点奇怪.只用一个简单的程序(下面)试验条件,'else'在else子句中按预期显示,但也会显示,但没有'else',会显示周围的双引号和未解释的新引号字面打印.任何人都可以向我解释发生了什么事吗?TIA.
(define (foo x)
(cond ((eq? x 0) (display "zero\n"))
(display "whatever\n")))
(define (bar x)
(cond ((eq? x 0 ) (display "zero\n"))
(else (display "whatever\n"))))
In the repl window:
Welcome to DrScheme, version 4.1.5 [3m].
Language: Pretty Big; memory limit: 128 megabytes.
> (foo 0)
zero
> (bar 0)
zero
> (foo 2)
"whatever\n"
> (bar 2)
whatever
>
Run Code Online (Sandbox Code Playgroud) 我正在尝试将Perl调试器附加到Apache和mod_perl.我们的环境非常复杂(许多其他的东西(例如Catalyst)配置了Apache),配置它的工程师不再与公司合作.我按照Apache网站上的说明,设置了'PerlFixupHandler Apache :: DB'等等,但到目前为止,我得到的只是 在页面交付后进入调试器.我猜我在调度过程中得到了休息,而不是工作进程.我正在运行Apache的prefork MPM版本.调试说明说启动httpd时传递-X参数.但是我正在运行的httpd不接受-X参数.我假设-X param实际上会导致某些版本的httpd不能分叉?
任何和所有指导赞赏.
$ ./httpd -v
Server version: Apache/2.2.17 (Unix)
Server built: Nov 16 2010 20:13:24
-X isn't listed when I do httpd -?
Usage: ./httpd [-D name] [-d directory] [-f file]
[-C "directive"] [-c "directive"]
[-k start|restart|graceful|graceful-stop|stop]
[-v] [-V] [-h] [-l] [-L] [-t] [-T] [-S]
Run Code Online (Sandbox Code Playgroud)