问题标签 [carp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
340 浏览

perl - 在 Plack/Starman 下呼唤“忏悔”

我有一个运行 TryCatch 语句的 Plack/Starman 应用程序,该语句从 Carp 模块调用“confess”。但是我注意到坦白输出没有打印到 STDOUT。我尝试将 STDERR 输出路由到 STDOUT '2>&1',但仍然看不到任何东西。我没有运气搜索可能的错误日志文件。这种印刷在世界上的什么地方?我相信这可能是一个简单的答案。日志文件位于何处?如果这很重要,我正在一个 Ubuntu 机器上运行。

谢谢

0 投票
2 回答
655 浏览

python - Python中的CARP哈希

我正在尝试在 Python 中实现 CARP 哈希,如以下 IETF 草案中所述:

https://datatracker.ietf.org/doc/html/draft-vinod-carp-v1-03#section-3.1

具体来说:

3.1。哈希函数

散列函数基于以零结尾的 ASCII 输入字符串输出 32 位无符号整数。URL 的机器名称和域名、协议以及每个成员代理的机器名称应以小写形式计算,因为 URL 的该部分不区分大小写。

由于此应用程序不需要不可逆性和强大的加密功能,因此使用了一个非常简单且快速的基于按位左旋转运算符的散列函数。

对于(URL 中的每个字符): URL_Hash += _rotl(URL_Hash, 19) + char ;

成员代理哈希以类似的方式计算:

对于(MemberProxyName 中的每个字符): MemberProxy_Hash += _rotl(MemberProxy_Hash, 19) + char ;

由于成员名称通常彼此相似,因此它们的哈希值通过以下附加操作进一步分布在哈希空间中:

MemberProxy_Hash += MemberProxy_Hash * 0x62531965 ; MemberProxy_Hash = _rotl (MemberProxy_Hash, 21) ;

3.2. 哈希组合

哈希通过首先异或 (XOR) URL 哈希与机器名称组合,然后乘以常数并执行按位旋转。

所有最终值和中间值都是 32 位无符号整数。

Combined_Hash = (URL_hash ^ MemberProxy_Hash) ; 组合哈希 += 组合哈希 * 0x62531965 ; Combined_Hash = _rotl(Combined_Hash, 21) ;

我尝试使用 numpy 创建 32 位无符号整数。第一个问题是在实现左位移时出现的。Numpy 自动将结果重新转换为 64 位无符号整数。对于任何会溢出 32 位的算术都是一样的。

例如:

回报:

输入“numpy.int64”

关于如何将这一切限制为 32 位空间的任何提示?此外,我对规范如何执行其中一些操作(如“MemberProxy_Hash += MemberProxy_Hash * 0x62531965”)在计算哈希时将永远适合 32 位感到有些困惑。


编辑:

根据反馈,听起来正确的解决方案是:

编辑#2:

另一个固定版本。

0 投票
3 回答
1359 浏览

perl - 无法安装 Carp-1.25

我已经为 Windows 安装了 Strawberry Perl,“DWIM Perl”来自:http ://dwimperl.com/ 。我想用鲤鱼。所以我从 CPAN 下载了 Carp-1.25,对其进行了解压缩,然后运行了 nmake。

我得到:

请注意,这不是 Windows nmake 问题,在 cygwin 中运行 make 时出现类似错误。

我的系统:MS Windows 7。

(顺便说一句,我一直在运行 ActiveState Perl,并且在那里,PPM 下载并安装 Carp 没有问题。我切换到 Strawberry/DWIM Perl 的原因是我想运行一个调试器,而 Padre 的ActiveState 的最新版本是 0.86,这是错误的。所以我安装了 DWIM Perl,因为我想使用 Padre 0.92)。

0 投票
2 回答
1347 浏览

perl - Carp:sassign 中 ARRAY 的奇异副本。有什么修复吗?

尝试dieeval.

代码如下;

在这种情况下$self->$func,指向一个处理程序,该处理程序在错误时分离到某个页面,如下所示:

应该放入"REDIR:$url"$@以便在eval退出时可用。

然而,相反 Carp.pm 死了,我假设在diewith内部的某个地方

环顾四周,有一些建议表明 perl 中存在与死期间堆栈相关的错误(例如http://code.activestate.com/lists/perl5-porters/149248/),但是我担心在这个点我对perl的了解有限,我不确定这是否相关,或者如果是的话该怎么办。:(

有谁知道是否有解决此问题的方法或另一种方法可以将错误字符串从 传回eval,或者我是否读错了?

0 投票
0 回答
180 浏览

perl - 使用@CARP_NOT(Moose 和方法修饰符)从错误位置报告鲤鱼

这是warnings::warnif( 'deprecated' ... ) with carp 的后续问题?.

这是我在 Github 上来自 Business::Cyber​​Source 的代码片段

注意:上一个答案(在上一个问题中),并添加 of@CARP_NOT已经证明warnings::warnif使用carp. 我尝试直接替换鲤鱼,行为完全相同。

但是当我调用这段代码时

错误仍然是从错误的地方报告的(尽管至少不是来自Class::MOP::Method::Wrapped

如何从测试文件中的正确行号生成此报告?->new(注意:如果我直接调用而不是使用,行为不会改变new_ok

0 投票
2 回答
107 浏览

perl - 如何使用 Carp 将呼叫标记为“不安全”?

我遇到了与Can't disable stack trace in Carp::croak() for some reason相同的问题。因为堆栈中的每个调用都被认为是“安全的”,所以每次都croak()打印出完整的堆栈跟踪。我想为某些呼叫禁用它。

这是一个例子:

两个子例程都在同一个包中,因此this_may_fail被自动标记为安全。有没有办法告诉 Carpthis_may_fail应该被认为是不安全的?

0 投票
0 回答
384 浏览

apache - Perl / Apache / CGI / Carp:无法让 fatalsToBrowser 工作

我正在编写一个使用 apache 运行的 perl Web 应用程序,并希望将错误消息重定向到浏览器进行调试。为此,我fatalsToBrowserCGI::Carp.

不幸的是,我仍然收到“内部服务器错误”而不是错误消息,它仍然出现在 apache 错误日志中。这是我的代码:

CGI::Carp的文档中,我读到“请注意,fatalsToBrowser 可能不适用于 mod_perl 2.0 版及更高版本。”

我正在使用 mod_perl 2,如果我fatalsToBrowser在一个简单的“Hello World”cgi 示例中使用,它可以工作。但我不确定这个功能是否在我的设置中不起作用,或者我做错了什么。

有谁知道如何让它工作(也许还有 CGI::Carp 的替代品)?

0 投票
1 回答
309 浏览

perl - Perl Carp:承认单元测试

我正在尝试编写 perl 单元测试。我能够为它测试快乐的情况。但是,如果在方法中生成错误,它会使用 打印错误Carp:confess "<message>"。我无法在我的测试中发现这种情况。我尝试使用

dies_ok( <method call>, 'Expected Error' );

但是测试用例仍然失败。它打印传递给 Carp::confess 的消息,然后打印

Looks like your test exited with 111 before it could output anything. Dubious, test returned 111 (wstat 28416, 0x6f00)

有没有办法我可以抓住这个?我什至尝试过throws_ok但没有工作。

请通过指导我应该如何捕捉这些错误来提供帮助。我使用这些dies_ok并且throws_ok不正确吗?

0 投票
0 回答
356 浏览

networking - Ucarp更新交换机的arp缓存

我在 linux 绑定上使用 ucarp 来实现两台服务器的高可用性和自动故障转移。以下是我在每台服务器上用于启动 ucarp 的命令:

服务器 1: ucarp -i bond0 -v 2 -p secret -a 10.110.0.243 -s 10.110.0.229 --upscript=/etc/vip-up.sh --downscript=/etc/vip-down.sh -b 1 -k 1 -r 2 -z

服务器 2: ucarp -i bond0 -v 2 -p secret -a 10.110.0.243 -s 10.110.0.242 --upscript=/etc/vip-up.sh --downscript=/etc/vip-down.sh -b 1 -k 1 -r 2 -z

和脚本的内容:

vip-up.sh :

vip-down.sh :

一切正常,当主服务器不可用时,服务器正确地从一个切换到另一个。

问题是当我从交换机上拔下两台服务器的时间过长(大约 30 分钟)时。当他们拔掉插头时,他们都认为他们是主人,当我重新插入他们时,IP地址最低的那个人试图通过发送免费的arp来保持主人地位。另一个按预期切换到备份,但我无法通过其虚拟 IP 访问主服务器。如果我拔掉主服务器,第二台服务器将从备份服务器转到主服务器,并且可以通过其虚拟 IP 访问。

我的猜测是,当我的服务器断开连接时间过长时,交换机会“忘记”我的服务器,当我重新连接它们时,需要从备份转到主服务器以正确更新交换机的 arp 缓存,即使主服务器发送的无偿 arp 应该做这项工作。请注意,在主服务器上重新启动 ucarp 确实可以解决问题,但是每次断开连接时间过长时我都需要重新启动它...

知道为什么它不能按我的预期工作以及如何解决问题吗?

谢谢。

0 投票
0 回答
87 浏览

eclipse - Perl 调试原因:在“PerlDebugJob”期间发生内部错误

我不知道我做错了什么。当我调试我的 perl 脚本时,它被终止了。scipr 终止的地方是函数完全正常的返回:

就在终止之前,它进入了Carp模块功能longmess ,我在这里只预览了我的代码,因为它是一个巨大的项目。只看普通代码是怎么回事,哪里出错了。

当我从项目中“删除”导致终止的模块并单独运行该模块时,就可以了。因此错误将在其他地方。

在此处输入图像描述 (此错误发生在代码中的不同位置,但仅在return命令中)我使用 perl 5.16、Eclipse 和 Epic,我的项目位于 c:\Perl\site\lib\

请帮我。谢谢

编辑

仅当我在 Eclipse 中以调试模式运行程序时才会出现问题。当我在不调试的情况下运行它