小编Jon*_*Jon的帖子

带有递归目录的厨师模板

我是Chef的新手,我正在试图找出模板(这看起来很酷).在我的旧部署结构中,我有一个我只想复制的目录.它有许多配置参数分散在目录中的整个文件中.我已经开始尝试将这些参数抽象为一个属性文件(更干净),但是在使用Chef安装它时遇到了麻烦.我用ERB修改了所有文件的扩展名以.erb结尾(我来自Rails背景,所以这对我来说似乎很自然).例如,我有一个名为run.conf的文件,它现在名为run.conf.erb.

理想情况下,我希望在配方中有一个模板块,它只复制目录中的所有文件,并使用我提供的变量更新那些.erb文件(删除.erb扩展名).这是我到目前为止的一个例子:

template "#{node["dcm4chee"]["home"]}" do
  source "server/"
  variables(
    "java_mem_opts" => node["dcm4chee"]["java_mem_opts"],
    "db_username" => node["dcm4chee"]["admin"]["username"],
    "db_password" => node["dcm4chee"]["admin"]["password"],
    "db_hostname" => node["mysql"]["hostname"],
    "db_port" => node["mysql"]["port"]
)
end
Run Code Online (Sandbox Code Playgroud)

我在templates/default下放了一个名为server的文件夹,该文件夹包含我想模板化的文件.#{node ["dcm4chee"] ["home"]}变量是我想将文件放在目标机器上的位置.理想情况下,我想在没有命名配方中的特定文件的情况下执行此操作,因为这样,如果我修改服务器目录的内容以进行部署,我就不必触摸配方.

这可能吗?如果是这样,我做错了什么?如果没有,我有什么选择.

谢谢

编辑

在考虑了这一点之后,我尝试使用一些自定义ruby代码来执行此操作.这是我当前尝试失败的NoMethodError引用ruby_block中初始调用的tempate_dir.

def template_dir(file)
  Dir.foreach("server") do |file|
    if File.file?(file)
      template "#{node["dcm4chee"]["home"]}/#{file}" do
        source "server/#{file}"
          variables(
            "java_mem_opts" => node["dcm4chee"]["java_mem_opts"],
            "db_username" => node["dcm4chee"]["admin"]["username"],
            "db_password" => node["dcm4chee"]["admin"]["password"],
            "db_hostname" => node["mysql"]["hostname"],
           "db_port" => node["mysql"]["port"]
          )
      end
    else
      directory "#{node["dcm4chee"]["home"]}/#{file}" do
        action :create
      end
      template_dir(file)
    end
  end
end

ruby_block "template the whole server directory" do …
Run Code Online (Sandbox Code Playgroud)

chef-infra

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

使用 VTK 放大图像中的某个点

我在 VTK 中有一个图像,正在使用 vtkImageViewer2 查看,并且我想放大用户单击的点。我在 Java 工作。有谁知道如何做到这一点?

谢谢

java image vtk

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

如何在Qt Creator中指定其他工作目录?

我正在Windows下使用最新的QT SDK,想知道如何根据构建类型指定工作目录。我需要一个不同的工作目录,并发布和调试同一项目的内部版本。例如,我有一个名为MyProgram的运行目标,还有两个构建目标,即Release和Debug。MyProgram依赖于某些外部库。当我在调试中运行MyProgram时,我需要它在目录C:\ foo \ bar \ libraries \ debug中运行,但是,当我在发行版中运行时,我需要它在目录C:\ foo \ bar \ libraries \ release中运行。看来工作目录仅取决于运行目标,而不取决于构建目标。有没有一种方法可以同时基于运行目标和构建目标来指定工作目录?我可以使用变量在工作目录中指定发布/调试吗?

qt qt-creator

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

Java将Runnable对象插入ExecutorService

我有一个线程池ExecutorService对象.在将来的某个时间,使用submit()方法添加任务.我的理解是提交将提交将提交的Runnable添加到要完成的任务列表的末尾.但是我有一种情况,基于布尔我可能想要将runnable提交到要执行的任务的前面.我不希望这会影响当前的任务,只是下一个完成的任务将是我刚刚给出的任务.以下再现示例方法.我该怎么做呢?

谢谢

private ExecutorService singleLoadPool = Executors.newSingleThreadExecutor();
public void submitTask(Runnable run, boolean doNow) {
    if (doNow)
        singleLoadPool.submitFront(run);  // This is the method I'm looking for
    else
        singleLoadPool.submit(run);
}
Run Code Online (Sandbox Code Playgroud)

java threadpool

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

Postgres Hash加入速度

我有3个表,我希望使用Postgres 9.1中的内部联接,读取,设备和device_patients加入.下面是每个表的缩写模式.

读 - 约250,000行

CREATE TABLE reads
  (
    id serial NOT NULL,
    device_id integer NOT NULL,
    value bigint NOT NULL,
    read_datetime timestamp without time zone NOT NULL,
    created_at timestamp without time zone NOT NULL,
    updated_at timestamp without time zone NOT NULL,
    CONSTRAINT reads_pkey PRIMARY KEY (id )
  )
WITH (
  OIDS=FALSE
);
ALTER TABLE reads
  OWNER TO postgres;

CREATE INDEX index_reads_on_device_id
  ON reads
  USING btree
  (device_id );

CREATE INDEX index_reads_on_read_datetime
  ON reads
  USING btree
  (read_datetime );
Run Code Online (Sandbox Code Playgroud)

设备 - 约500行 …

postgresql performance

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

是否可以对Apache Spark中的所有工作程序执行命令?

我有一种情况,我想在Spark中的每个worker上执行系统进程.我希望这个过程能够在每台机器上运行一次.具体来说,这个过程启动一个守护进程,它需要在我的程序的其余部分执行之前运行.理想情况下,这应该在我读取任何数据之前执行.

我使用Spark 2.0.2并使用动态分配.

java daemon scala apache-spark

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

LightGBM 对缺失标签的支持是什么

我们有一个数据集,其中一些标签丢失。我们最近才了解到这一点,并且我们已经删除了这些行。这让我思考这到底是如何运作的?给 GBM 一个没有标签的例子似乎没有意义。

任何人都可以阐明(双关语)LightGBM 如何处理缺少标签的行吗?

谢谢

machine-learning lightgbm

5
推荐指数
0
解决办法
121
查看次数

如何对QDateTime*的QList进行排序?

如何按QDateTime对象的值对QDateTime*对象的QList进行排序?

sorting qt qdatetime

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

为什么我的程序没有从解除引用空指针中捕获异常?

有人可以解释为什么没有发现这个例外.

try {
    // This will cause an exception
    char *p = 0;
    char x = 0;
    *p = x;
}
catch (...) {
    int a = 0;
}
Run Code Online (Sandbox Code Playgroud)

当我运行程序时它会在*p = x行上死掉.我希望catch块会导致忽略此异常.

我正在使用Qt Creator(2.2)和Qt 4.7.2在Windows 7 32位上使用Visual Studios 2008进行编译.

c++ exception-handling

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

带反射的嵌套协议缓冲区

假设我在.proto文件中有一条消息,其中包含以下内容

Message Foo {
    Message Bar {
        optional int32 a = 1;
        optional int32 b = 2;
    }
    optional Bar bar = 1;
}
Run Code Online (Sandbox Code Playgroud)

在Java中,无论如何设置字段只使用字符串"bar.a"?理想情况下,我想编写如下方法:

public Foo.Builder apply(Foo.Builder builder, String fieldPath, Object value) {
    // fieldPath == "bar.a"
    // This doesn't work
    FieldDescriptor fd = builder.getDefaultInstanceForType().findFieldByName(fieldPath);
    builder = builder.setField(fd, value);
}
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时,我得到一个IllegalArgumentException.

有谁知道如何以通用的方式做到这一点?

我也需要走另一条路

public Object getValue(Foo message, String fieldPath) {
    // This doesn't work
    FieldDescriptor fd = message.getDefaultInstanceForType().findFieldByName(fieldPath);
    return message.getField(fieldPath);
}
Run Code Online (Sandbox Code Playgroud)

请注意,如果fieldPath不包含分隔符(".")并引用基本消息,而不是嵌套消息,则此方法可以正常工作.

java protocol-buffers

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