小编NXT*_*NXT的帖子

我如何grep整个,可能包装的代码行?

在搜索字符串的代码时,我经常遇到的问题是我没有意义,没有上下文的结果.例如,如果函数调用分为3行,并且我搜索参数的名称,则我自己获取参数,而不是函数的名称.

例如,在包含的文件中

...
  someFunctionCall ("test",
                    MY_CONSTANT,
                    (some *really) - long / expression);
Run Code Online (Sandbox Code Playgroud)

grepping for MY_CONSTANT将返回如下所示的行:

                    MY_CONSTANT,
Run Code Online (Sandbox Code Playgroud)

同样,在评论栏中:

/////////////////////////////////////////
// FIXMESOON, do..while is the wrong choice here, because
// it makes the wrong thing happen
/////////////////////////////////////////
Run Code Online (Sandbox Code Playgroud)

为FIXMESOON打气给出了非常令人沮丧的答案:

// FIXMESOON, do..while is the wrong choice here, because
Run Code Online (Sandbox Code Playgroud)

当有数千次点击时,单行结果有点无意义.我想要做的是让grep知道源代码行的起点和终点,就像让它考虑";"一样简单.因为行分隔符将是一个良好的开端.

如果点击位于评论内,您可以使其返回整个评论区块的奖励积分.

我知道你不能单独使用grep来做到这一点.我也知道让grep返回一定数量的上下文的选项.有关如何在Linux下完成的任何建议?仅供参考我的首选语言是C和Perl.

我确信我可以写点什么,但我知道有人必须已经这样做了.

谢谢!

unix linux awk command-line grep

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

C表达式在两个不同编译器上的评估方式不同

我的代码在GCC和Atmel Studio之间运行方式不同:

uint32_t tc = 107900;
int8_t   m  = 59;

tc = tc - (m*1800);
Run Code Online (Sandbox Code Playgroud)

在GCC上,结果tc是1700,如预期的那样.

使用AtmelStudio,结果tc是132772,这是不正确的.

问题似乎m*1800是使用AtmelStudio以m的有限精度计算该术语.

我的问题是,哪个编译器正确地执行了它?

谢谢.

c gcc language-lawyer atmelstudio

10
推荐指数
2
解决办法
372
查看次数

为什么undef值在Perl中成为有效的数组引用?

在perl 5.8.5中,如果我执行以下操作,则不会出现错误:

use strict;

my $a = undef;
foreach my $el (@$a) {
  ...whatever
}
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?打印出更改的ref($a)节目输出,$a以便在某些时候变为有效的数组引用.但我从未明确$a表示过任何事情.

似乎有点奇怪,如果没有我做任何事情,变量的内容可能会改变.

思绪,有人吗?

编辑:是的,我知道所有关于自动生存的知识.我一直认为必须在某个地方有一个任务来触发它,而不仅仅是一个参考.

perl

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

C#如何以编程方式在控件之间切换选项卡

我希望能够以编程方式模拟对话框的键盘导航.

我有一个带键盘的自定义硬件设备,我想用它来进行对话框导航.

我知道Focus(),但我宁愿做一些自动遵守Tab键顺序的东西.通过模拟键盘导航,我不必担心为每种类型的控件重新发明复杂的行为.

有谁知道如何做到这一点?

谢谢!

c#

7
推荐指数
3
解决办法
1万
查看次数

如何根据安装位置"使用lib"相应的目录?

我有一个面向对象的Web应用程序,它安装在我的服务器上的多个位置.一次用于"live",一次用于"beta"等.面向对象,它由许多perl模块组成.在主模块中,我必须"使用lib" 为该应用程序实例的所有自定义 perl模块使用相应的目录.

这没什么大不了的,我有一个BEGIN块来检查主程序的位置并适当地设置库目录.但是我也有很多实用程序,命令行程序需要做同样的事情.我不想在任何地方剪切和粘贴此代码.

在需要它的各种程序中共享此代码段的最佳方法是什么?

我不能"使用"它,因为尚未设置libary路径.也许"做"或"要求"将是正确的答案,但这两者都会搜索@INC,这是不合适的.

也许类似的东西eval `cat GetLib.pl`;是合适的,但它似乎有点笨重和脆弱.

这是我目前使用的BEGIN块:

BEGIN {
  use FindBin qw ($Bin);
  require lib;

  if ($Bin =~ /^\/home\/w\/myapp_live/) {
    lib->import('/home/w/myapp_live/lib');
    print STDERR "live site\n";
  }

  if ($Bin =~ /^\/home\/w\/myapp_beta/) {
    lib->import('/home/w/myapp_beta/lib');
    print STDERR "beta site\n";
  }

  if ($Bin =~ /^\/home\/w\/myapp_test/) {
    lib->import('/home/w/myapp_test/lib');
    print STDERR "testing site\n";
  }

}
Run Code Online (Sandbox Code Playgroud)

谢谢!

perl

7
推荐指数
2
解决办法
975
查看次数

信用卡:在授权之前可以检查AVS吗?

这是一个关于信用卡处理的问题.我们正在使用AVS,并且发现每个因AVS而失败的交易都会导致客户卡上的总金额暂停.多次失败意味着多次失败.

发生这种情况是因为只有在AUTH完成后才会检查AVS.因此,如果AVS失败,则完成VOID.所以你有一个AUTH后跟一个VOID导致一个hold.

由于我们的大多数客户都进行了大量购买,因此对于此数量的多次保留是一个真正的问题.我的问题是:

  1. 在AUTH完成之前可以检查AVS吗?

  2. 这些是否适用于所有商家或只是较小的商家?我从来没有遇到这种情况,我经常在线购买东西.

  3. 我听说你可以做$ 1的AUTH/VOID来检查AVS.这是处理问题的好方法吗?

欢迎任何建议.谢谢.

credit-card

7
推荐指数
1
解决办法
4794
查看次数

"待处理信号的最大数量(120)超过"是什么意思?

在Apache mod_fastcgi下运行的My Perl web-app经常会出现如下错误:

在线119处超过未决信号(120)的最大计数.

我已经看到这与文件上传有关,但我不确定这是唯一的时间.我在得到错误之前(或可能在之后)也得到了一个SIGPIPE.

有什么想法吗?

编辑 感谢大家的建议.有人问119行是什么.对不起,应该把它放进去.它是在一段代码中,我在上传的文件上运行病毒检查程序.我不是每次都会得到错误,只是偶尔.

if(open VIRUS_CK, '|/usr/local/bin/clamscan - --no-summary >'.$tmp_file) {

  print VIRUS_CK $data; // THIS IS LINE 119

  close VIRUS_CK;

  if (($? >> 8) == 1) {

    open VIRUS_OUTPUT, '<'.$tmp_file;
    my $vout = <VIRUS_OUTPUT>;
    close VIRUS_OUTPUT;
    $vout =~ s/^stdin:\s//;
    $vout =~ s/FOUND$//;


    print STDERR "virus found on upload: $vout\n";
    return undef, 'could not accept attachment, virus found: '.$vout;
  }
  unlink($tmp_file);
}
Run Code Online (Sandbox Code Playgroud)

perl fastcgi mod-fastcgi

7
推荐指数
1
解决办法
1489
查看次数

迫使GCC放弃归零某些全局变量

有没有办法告诉GCC不将特定的全局数组初始化为零?

我想保留一大块内存来存储我的代码管理的大型数据结构,所以我说:

#define SIZE_16_MB 0x01000000
BYTE mChunkSpace[SIZE_16_MB];
Run Code Online (Sandbox Code Playgroud)

问题是crtinit()需要一百万年才能将这个空间初始化为零,而且根本不需要.

有什么办法可以强迫它不要初始化那个空间吗?

目前我正在硬编码一个超出链接器知道的内存地址,但这并不是一种特别强大的做事方式.

此外,这是一个缓慢的嵌入式proc(50MHz Microblaze),所以不要以为我在谈论PC.确实需要很长时间才能将该空间归零.

c gcc

7
推荐指数
1
解决办法
4625
查看次数

如果jQuery函数在其完成回调中调用自身,那对堆栈的递归危险是什么?

我正在编写一个小的jQuery组件,它响应按钮按下而动画,也应该自动进行.我只是想知道这个函数是否递归,我不能完全解决它.

function animate_next_internal() {

  $('#sc_thumbnails').animate(
    { top: '-=106' }, 
    500, 
    function() {
      animate_next_internal();
    }
  ); 
}  
Run Code Online (Sandbox Code Playgroud)

我的实际功能更复杂,允许停止和启动,这只是一个简化的例子.

编辑它可以是否溢出堆栈,具体取决于事件在内部处理的方式.可能性:

  1. animate()directy调用完成的回调,在这种情况下溢出是不可避免的.

  2. animate()通过一些外部调度机制调度回调以进行调用然后终止,在这种情况下它永远不会溢出.

recursion jquery jquery-callback

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

Perl - 如何获取匿名数组中的元素数量,以便简洁地修剪路径名

我试图将一段代码缩减到一行.我需要一种方法来获取列表中的项目数.我的代码目前看起来像这样:

# Include the lib directory several levels up from this directory
my @ary = split('/', $Bin);
my @ary = @ary[0 .. $#ary-4];
my $res = join '/',@ary;
lib->import($res.'/lib');
Run Code Online (Sandbox Code Playgroud)

这很好,但我想制作一行,如下所示:

lib->import( join('/', ((split('/', $Bin)) [0 .. $#ary-4]))  );
Run Code Online (Sandbox Code Playgroud)

但是当然$#ary在上面的行中语法没有意义.

是否有相同的方法来获取匿名列表中的元素数量?

谢谢!

PS:合并这个的原因是它将在一堆perl脚本的标题中,这些脚本是主应用程序的辅助,我希望这个小咒语更多的剪切和粘贴证明.

感谢大家

似乎没有匿名列表中元素数量的简写.这似乎是一种疏忽.然而,建议的替代方案都很好.

我要去:

lib->import(join('/', splice( @{[split('/', $Bin)]}, 0, -4)).'/lib');
Run Code Online (Sandbox Code Playgroud)

但Ether提出了以下建议,它更加正确和便携:

my $lib = File::Spec->catfile(
                realpath(File::Spec->catfile($FindBin::Bin, ('..') x 4)),
               'lib');
lib->import($lib);
Run Code Online (Sandbox Code Playgroud)

arrays perl slice

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