我正在尝试在RedHat Linux机器上构建ZooKeeper.(究竟ZooKeeper可能并不重要:-)
当我按照包装说明进行操作时,我得到:
$ autoreconf -if
aclocal:configure.ac:33: warning: macro `AM_PATH_CPPUNIT' not found in library
aclocal:configure.ac:33: warning: macro `AM_PATH_CPPUNIT' not found in library
configure.ac:33: error: possibly undefined macro: AM_PATH_CPPUNIT
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
autoreconf: /usr/bin/autoconf failed with exit status: 1
Run Code Online (Sandbox Code Playgroud)
我无法在标准位置安装CPPPUNIT.(没有root权限,系统团队的策略与标准配置"无偏差".)
我通过AM_PATH_CPPUNI在configure.ac文件中注释掉对T 的引用来解决这个问题
,但我真正想做的是在我的个人目录中安装CPPPUNIT并指向它,但是我没有做太多在弄清楚如何告诉autoconf/auotmake系统在非标准的地方寻找它的进展.任何人都有任何关于如何做到这一点的提示?
对于为一些调用各种Hadoop MapReduce作业的脚本开发的(很多)Perl脚本而言,我对于参数传递架构我并不感到兴奋.
目前有8个脚本(形式为run_something.pl)从cron运行.(还有更多的方法......对于我们添加到hadoop的每个函数,我们预计会增加1到3个.)每个函数都有大约6个相同的命令行参数,以及几个相似的命令行参数,所有这些都是指定的与欧几里德.
实现是在十几个.pm模块中.其中一些是常见的,其他的是独特的......
目前我正在将args全局传递给每个模块......
在run_something.pl里面我有:
set_common_args (%ARGV);
set_something_args (%ARGV);
Run Code Online (Sandbox Code Playgroud)
在Something.pm里面,我有
sub set_something_args {(%MYARGS)= @ _; }
那么我就可以做到
if ( $MYARGS{'--needs_more_beer'} ) {
$beer++;
}
Run Code Online (Sandbox Code Playgroud)
我看到我可能会有其他"常见"文件,我想要传递args,所以我将在每个run_something.pl的顶部有三个或四个set_xxx_args调用,它只是没有看起来太优雅了.
另一方面,它将整个愚蠢的参数数组传递到调用链中,并且选择并将单个元素传递到调用链下面是(a)过多的工作(b)容易出错(c)并不需要太多.
在很多方面,我所做的只是面向对象的设计而没有面向对象的语言陷阱,而且看起来更加丑陋而没有所谓的陷阱,但仍然......
有人有想法或想法吗?
早在90年代初,我参与了包含大量"代理"类的系统的设计和实现.该系统运行良好,并且可以合理维护.现在,我正在与新工作环境中的人们争论,他们声称"对象应该是名词".是否有好的文章解释为什么代理商是一个坏主意?什么区分Agent和Object更详细(我得到了一般的想法,但具体是什么被弃用?)
最好不要整本书:我刚刚开始阅读Bertrand Meyer关于面向对象软件构建的书,要花点时间才能完成.
根据Tomasz和Niko的评论,我改变了主题(从询问指针到文章),现在邀请人们直接回答,而不是指向文章.
我正在努力学习vimscript.我在"学习vimscript艰难的方式"中读了很多,但没有找到我的问题的答案:
如何判断vimscript中的搜索是否成功?我有两个案例:
:如果有一个(在当前行上做foo:endif
:if/searchtarget成功做bar:endif
我正在使用best_in_place在ruby-on-rails应用程序中对数据表进行页内编辑.就地编辑工作,但我有一个失败的角落案例.行中的一对项(device_name,generic_name)必须是唯一的.如果它们不是唯一的,则服务器端代码会使用更改的generic_name传回一组名称,以使该对唯一.我使用以下coffeescript来更新显示.
jQuery ->
$('.best_in_place[data-bip-object="full_dpoint"]').bind(
"ajax:success", (event, d) ->?
return if ! d?
data = JSON.parse(d)
if ! data.dpoint?
return
else
item_to_edit = "#best_in_place_full_dpoint_" + data.dpoint.dpoint_id + "_generic_name"
$(item_to_edit).text(data.dpoint.generic_name)
)
Run Code Online (Sandbox Code Playgroud)
此代码有效(IE正确地使用服务器提供的新通用名称更新页面),但如果我再单击"generic_name"字段,(进入编辑模式),默认编辑文本将更改回原来的名称是在一开始(页面下载时间).我已尝试将许多不同的页面元素设置为新的通用名称,包括以下所有内容:
$(item_to_edit).attr('data-bip-original-content', data.dpoint.generic_name)
$(item_to_edit).attr('data-bip-value', data.dpoint.generic_name)
$(item_to_edit).attr('original-value', data.dpoint.generic_name)
$(item_to_edit).attr('bipValue', data.dpoint.generic_name)
$(item_to_edit).attr('bipvalue', data.dpoint.generic_name)
Run Code Online (Sandbox Code Playgroud)
一切都无济于事.我在dom中试图找到原始值可能存储的位置,但除了这些之外没有找到任何其他东西.
有任何想法吗?
TIA.
伦纳德
我是emacs的新手,刚刚将带有SBCL的LispBox(来自Practical Common Lisp页面)下载到我的Macintosh.我确实知道我想要选项或Command键作为元键.
与LispBox一起提供的emacs版本不关注我的主目录中的.emacs.
与LispBox一起提供的Emacs会激活到REPL中.我无法弄清楚我应该键入什么来设置命令键作为Meta,也不知道在何处或如何永久配置它.
编辑:我真的不想加载另一个版本的emacs.我已经有从终端运行的emacs,我的选项键映射为元.能够密切关注"Practical Common Lisp"教程,假设是LispInABox,这是我对此感兴趣的内容.
TIA.
我的同事抱怨我的Perl看起来太像C了,这很自然,因为我大部分时间用C编程,而Perl只是一点点.这是我最近的努力.我对易于理解的Perl很感兴趣.我是一个Perl评论家,对于神秘的Perl几乎没有宽容.但考虑到可读性,下面的代码怎么能更多Perlish?
它的目标是进行流量分析,找出哪些IP地址在文件"ips"中给出的范围内.这是我的努力:
#!/usr/bin/perl -w
# Process the files named in the arguments, which will contain lists of IP addresses, and see if
# any of them are in the ranges spelled out in the local file "ip", which has contents of the
# form start-dotted-quad-ip-address,end-dotted-quad-ip_address,stuff_to_be_ignored
use English;
open(IPS,"ips") or die "Can't open 'ips' $OS_ERROR";
# Increment a dotted-quad ip address
# Ignore the fact that part1 could get erroneously large.
sub increment {
$ip = shift;
my ($part_1, $part_2, $part_3, …Run Code Online (Sandbox Code Playgroud) 升级到Lion后,安装XCode 4.3我无法编译"Hello,World".
include <stdio.h>
int
main ( int argc, char *argv[]) {
printf("Hello, World!\n");
}
$ gcc hello.c
hello.c:1:19: error: stdio.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我在./SDKs/MacOSX10.6.sdk/usr/include/stdio.h中看到了一个stdio.h,但是有一点令人惊讶的是没有10.7版本.我的安装失败了吗?它报告了成功.
在谷歌搜索之后,这个问题的标准解决方案是重新安装XCode.但XCode是通过App商店提供的,并没有给我重新安装选项.我也从未见过其他地方引用的其他各种选项,如"Unix开发".
想法?
我有一个像这样的ruby类:
require 'logger'
class T
def do_something
log = Logger.new(STDERR)
log.info("Here is an info message")
end
end
Run Code Online (Sandbox Code Playgroud)
这个测试脚本排成一行:
#!/usr/bin/env ruby
gem "minitest"
require 'minitest/autorun'
require_relative 't'
class TestMailProcessorClasses < Minitest::Test
def test_it
me = T.new
out, err = capture_io do
me.do_something
end
puts "Out is '#{out}'"
puts "err is '#{err}'"
end
end
Run Code Online (Sandbox Code Playgroud)
当我运行此测试时,out和err都是空字符串.我看到消息打印在stderr上(在终端上).有没有办法让Logger和capture_io很好地一起玩?
我处于直接的Ruby环境中,而不是Ruby on Rails.
我正在使用SICP讲座和文字来了解我自己的Scheme.我正在看一个练习,上面写着"表达式E的应用是形式的表达式(E E1,... En).这包括n = 0的情况,对应于表达式(E).一个Curried的应用程序E是E的应用或E的Curried应用的应用."
(编辑:我纠正了上面的引用......我最初错误地引用了这个定义.)
任务是定义一个Curried应用程序,该程序的计算结果为3
(define foo1
(lambda (x)
(* x x)))
Run Code Online (Sandbox Code Playgroud)
我真的不明白这个想法,阅读关于Curriying的维基百科条目并没有真正帮助.
任何人都可以帮助更清楚地解释这里要求的内容吗?
实际上,即使给我这个问题的答案也会有所帮助,因为在这之后还有五个要解决.......我只是没有得到基本的想法.
另外:即使在Brian Campbell冗长的解释之后,我仍然有点失落.
被(foo1 (sqrt 3)))认为是foo的应用程序,因此foo的curry应用程序?
似乎太简单了,但也许......
输入(((foo1 2 )) 2)DrScheme会出现以下错误(我有点期待)
procedure application: expected procedure, given: 4 (no arguments)
Run Code Online (Sandbox Code Playgroud)
重读后什么是Currying?我明白我也可以将foo1重新定义为:
(define (foo1 a)
(lambda (b)
(* a b)))
Run Code Online (Sandbox Code Playgroud)
那么我就可以打字了
((foo1 3 ) 4)
Run Code Online (Sandbox Code Playgroud)
12
但是这并没有让我更接近于将3作为输出,并且看起来这并不是原来的foo1,它只是重新定义它.
该死的,20年的C编程还没有为此做好准备.:-) :-)