在搜索字符串的代码时,我经常遇到的问题是我没有意义,没有上下文的结果.例如,如果函数调用分为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.
我确信我可以写点什么,但我知道有人必须已经这样做了.
谢谢!
我的代码在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的有限精度计算该术语.
我的问题是,哪个编译器正确地执行了它?
谢谢.
在perl 5.8.5中,如果我执行以下操作,则不会出现错误:
use strict;
my $a = undef;
foreach my $el (@$a) {
...whatever
}
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?打印出更改的ref($a)节目输出,$a以便在某些时候变为有效的数组引用.但我从未明确$a表示过任何事情.
似乎有点奇怪,如果没有我做任何事情,变量的内容可能会改变.
思绪,有人吗?
编辑:是的,我知道所有关于自动生存的知识.我一直认为必须在某个地方有一个任务来触发它,而不仅仅是一个参考.
我希望能够以编程方式模拟对话框的键盘导航.
我有一个带键盘的自定义硬件设备,我想用它来进行对话框导航.
我知道Focus(),但我宁愿做一些自动遵守Tab键顺序的东西.通过模拟键盘导航,我不必担心为每种类型的控件重新发明复杂的行为.
有谁知道如何做到这一点?
谢谢!
我有一个面向对象的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)
谢谢!
这是一个关于信用卡处理的问题.我们正在使用AVS,并且发现每个因AVS而失败的交易都会导致客户卡上的总金额暂停.多次失败意味着多次失败.
发生这种情况是因为只有在AUTH完成后才会检查AVS.因此,如果AVS失败,则完成VOID.所以你有一个AUTH后跟一个VOID导致一个hold.
由于我们的大多数客户都进行了大量购买,因此对于此数量的多次保留是一个真正的问题.我的问题是:
在AUTH完成之前可以检查AVS吗?
这些是否适用于所有商家或只是较小的商家?我从来没有遇到这种情况,我经常在线购买东西.
我听说你可以做$ 1的AUTH/VOID来检查AVS.这是处理问题的好方法吗?
欢迎任何建议.谢谢.
在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) 有没有办法告诉GCC不将特定的全局数组初始化为零?
我想保留一大块内存来存储我的代码管理的大型数据结构,所以我说:
#define SIZE_16_MB 0x01000000
BYTE mChunkSpace[SIZE_16_MB];
Run Code Online (Sandbox Code Playgroud)
问题是crtinit()需要一百万年才能将这个空间初始化为零,而且根本不需要.
有什么办法可以强迫它不要初始化那个空间吗?
目前我正在硬编码一个超出链接器知道的内存地址,但这并不是一种特别强大的做事方式.
此外,这是一个缓慢的嵌入式proc(50MHz Microblaze),所以不要以为我在谈论PC.确实需要很长时间才能将该空间归零.
我正在编写一个小的jQuery组件,它响应按钮按下而动画,也应该自动进行.我只是想知道这个函数是否递归,我不能完全解决它.
function animate_next_internal() {
$('#sc_thumbnails').animate(
{ top: '-=106' },
500,
function() {
animate_next_internal();
}
);
}
Run Code Online (Sandbox Code Playgroud)
我的实际功能更复杂,允许停止和启动,这只是一个简化的例子.
编辑它可以是否溢出堆栈,具体取决于事件在内部处理的方式.可能性:
animate()directy调用完成的回调,在这种情况下溢出是不可避免的.
animate()通过一些外部调度机制调度回调以进行调用然后终止,在这种情况下它永远不会溢出.
我试图将一段代码缩减到一行.我需要一种方法来获取列表中的项目数.我的代码目前看起来像这样:
# 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) perl ×4
c ×2
gcc ×2
arrays ×1
atmelstudio ×1
awk ×1
c# ×1
command-line ×1
credit-card ×1
fastcgi ×1
grep ×1
jquery ×1
linux ×1
mod-fastcgi ×1
recursion ×1
slice ×1
unix ×1