小编Leo*_*ard的帖子

双方括号[[]]比Bash中的单方括号[]更好吗?

最近在一次代码审查中,一位同事声称该[[ ]]构造比[ ]在类似的构造中更受欢迎

if [ "`id -nu`" = "$someuser" ] ; then 
     echo "I love you madly, $someuser"
fi
Run Code Online (Sandbox Code Playgroud)

他无法提供理由.有吗?

syntax bash if-statement

514
推荐指数
8
解决办法
20万
查看次数

如何使用〜后缀关闭自动保存vim文件

在我的环境中,我在各种.vimrc文件中与其他开发人员共享vim配置(并且还有我自己的配置添加).在环境中的某些地方,我在vim中编辑文件,并自动显示带有尾随波浪号后缀的该文件的副本.什么vim选项控制这个?我想关掉这个功能,因为它只会弄乱我的目录并破坏命令行上的自动完成功能.

谢谢.

vim

25
推荐指数
2
解决办法
2万
查看次数

使用'__progname'代替argv [0]

在我工作的C/Unix环境中,我看到一些开发人员使用__progname而不是argv[0]使用消息.这有什么好处吗?__progname和之间的区别是什么argv[0].它是便携式的吗?

c unix double-underscore

17
推荐指数
4
解决办法
2万
查看次数

主要和其他混淆技巧的三个论点

以下混淆的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)

c obfuscation

15
推荐指数
1
解决办法
3727
查看次数

如何通过ruby中的变量访问冒号哈希键

我有一个哈希数组,我想写一个通用的检查器,所以我想传入要检查的键的名称.散列是使用带冒号前缀(符号)的键定义的.我无法弄清楚如何正确使用变量作为键.即使密钥存在于散列中,使用变量访问它也会导致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)

ruby hash

15
推荐指数
2
解决办法
1万
查看次数

我应该从C函数返回TRUE/FALSE值吗?

在用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?

c return-value

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

不同版本的Perl是否需要安装不同的CPAN模块?

我们有一个服务器场,我们正在慢慢迁移到新版本的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指向)是否适用于两个树,或者当我在不同的树(安装模块)工作时,我应该链接到不同的目录?

perl cpan

12
推荐指数
2
解决办法
1547
查看次数

VIM如何搜索<XX>单字节表示

当我从Word文档剪切并粘贴到VIM中时,引号会被转换为a-circumflex,后跟<99>,其中<99>是单字节表示.(我知道,因为当我移动它时,键入一个'l'会让我直接移动到所有四个字符).

我想做搜索和替换,我知道足够使用control-K a>找到a-cirumflex有向图,但我无法弄清楚如何搜索<99>,并搜索文字/ <99 >不起作用.

所以我真的有两个问题:

我应该在vim中咨询哪些帮助主题,以了解<99>是什么类型的野兽(因为它似乎不是一个有向图)(或者它可能是有向图并且我缺少某些东西)?

如何搜索由<99>表示的单个字符?

vim

10
推荐指数
1
解决办法
6589
查看次数

当省略'else'时,Scheme'cond'子句会发生什么?

我正在学习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)

scheme racket

9
推荐指数
2
解决办法
7564
查看次数

如何将调试器与mod_perl一起使用

我正在尝试将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)

apache perl mod-perl

8
推荐指数
1
解决办法
1640
查看次数