我是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) 我在 VTK 中有一个图像,正在使用 vtkImageViewer2 查看,并且我想放大用户单击的点。我在 Java 工作。有谁知道如何做到这一点?
谢谢
我正在Windows下使用最新的QT SDK,想知道如何根据构建类型指定工作目录。我需要一个不同的工作目录,并发布和调试同一项目的内部版本。例如,我有一个名为MyProgram的运行目标,还有两个构建目标,即Release和Debug。MyProgram依赖于某些外部库。当我在调试中运行MyProgram时,我需要它在目录C:\ foo \ bar \ libraries \ debug中运行,但是,当我在发行版中运行时,我需要它在目录C:\ foo \ bar \ libraries \ release中运行。看来工作目录仅取决于运行目标,而不取决于构建目标。有没有一种方法可以同时基于运行目标和构建目标来指定工作目录?我可以使用变量在工作目录中指定发布/调试吗?
我有一个线程池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) 我有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行 …
我有一种情况,我想在Spark中的每个worker上执行系统进程.我希望这个过程能够在每台机器上运行一次.具体来说,这个过程启动一个守护进程,它需要在我的程序的其余部分执行之前运行.理想情况下,这应该在我读取任何数据之前执行.
我使用Spark 2.0.2并使用动态分配.
我们有一个数据集,其中一些标签丢失。我们最近才了解到这一点,并且我们已经删除了这些行。这让我思考这到底是如何运作的?给 GBM 一个没有标签的例子似乎没有意义。
任何人都可以阐明(双关语)LightGBM 如何处理缺少标签的行吗?
谢谢
如何按QDateTime对象的值对QDateTime*对象的QList进行排序?
有人可以解释为什么没有发现这个例外.
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进行编译.
假设我在.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 ×4
qt ×2
apache-spark ×1
c++ ×1
chef-infra ×1
daemon ×1
image ×1
lightgbm ×1
performance ×1
postgresql ×1
qdatetime ×1
qt-creator ×1
scala ×1
sorting ×1
threadpool ×1
vtk ×1