小编Leo*_*ard的帖子

如何将autoconf/automake指向非标准包

我正在尝试在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系统在非标准的地方寻找它的进展.任何人都有任何关于如何做到这一点的提示?

automake autoconf configure apache-zookeeper

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

如何将常见参数传递给Perl模块?

对于为一些调用各种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)并不需要太多.

在很多方面,我所做的只是面向对象的设计而没有面向对象的语言陷阱,而且看起来更加丑陋而没有所谓的陷阱,但仍然......

有人有想法或想法吗?

perl module

6
推荐指数
2
解决办法
3020
查看次数

为什么代理商和经理人认为OO设计不佳

早在90年代初,我参与了包含大量"代理"类的系统的设计和实现.该系统运行良好,并且可以合理维护.现在,我正在与新工作环境中的人们争论,他们声称"对象应该是名词".是否有好的文章解释为什么代理商是一个坏主意?什么区分Agent和Object更详细(我得到了一般的想法,但具体是什么被弃用?)

最好不要整本书:我刚刚开始阅读Bertrand Meyer关于面向对象软件构建的书,要花点时间才能完成.

根据Tomasz和Niko的评论,我改变了主题(从询问指针到文章),现在邀请人们直接回答,而不是指向文章.

oop object

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

如何判断vimscript中的搜索是否成功?

我正在努力学习vimscript.我在"学习vimscript艰难的方式"中读了很多,但没有找到我的问题的答案:

如何判断vimscript中的搜索是否成功?我有两个案例:

:如果有一个(在当前行上做foo:endif

:if/searchtarget成功做bar:endif

vim

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

best_in_place在更新后保留原始值

我正在使用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.

伦纳德

ruby-on-rails coffeescript best-in-place

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

Option或Command键作为Macintosh上LispBox的Meta键

我是emacs的新手,刚刚将带有SBCL的LispBox(来自Practical Common Lisp页面)下载到我的Macintosh.我确实知道我想要选项或Command键作为元键.

与LispBox一起提供的emacs版本不关注我的主目录中的.emacs.

与LispBox一起提供的Emacs会激活到REPL中.我无法弄清楚我应该键入什么来设置命令键作为Meta,也不知道在何处或如何永久配置它.

编辑:我真的不想加载另一个版本的emacs.我已经有从终端运行的emacs,我的选项键映射为元.能够密切关注"Practical Common Lisp"教程,假设是LispInABox,这是我对此感兴趣的内容.

TIA.

lisp emacs

5
推荐指数
1
解决办法
3447
查看次数

我怎么能写出看起来不像C的Perl?

我的同事抱怨我的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)

perl coding-style

5
推荐指数
7
解决办法
1468
查看次数

安装新的xcode 4.3后找不到stdio.h

升级到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开发".

想法?

xcode xcode4.3

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

捕获Ruby Logger输出以进行测试

我有一个像这样的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.

ruby logging minitest

5
推荐指数
2
解决办法
2497
查看次数

初学者:Scheme中的Curried函数

我正在使用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编程还没有为此做好准备.:-) :-)

scheme currying

4
推荐指数
1
解决办法
5161
查看次数