我正在尝试使用捆绑器来安装一些软件包,我想使用的命令是:
bundle install --path vendor/bundle
Run Code Online (Sandbox Code Playgroud)
然而,由于libxml2 是一个混蛋,我需要使用如下命令预先设置配置:
bundle config --local build.nokogiri --with-xml2-include=dir1 --with-xml2-lib=dir2 --with-xslt-include=dir3 --with-xslt-lib=dir4
Run Code Online (Sandbox Code Playgroud)
但当我查看该.bundle/config
文件时,我看到:
BUNDLE_BUILD__NOKOGIRI: --with-xml2-include=dir1
--with-xml2-lib=dir2 --with-xslt-include=dir3 --with-xslt-lib=dir4
Run Code Online (Sandbox Code Playgroud)
您会注意到dir2
、dir3
和dir4
出现在下一行,而不是与 位于同一行dir1
。这是一个问题,因为当我键入bundle config
显示当前配置时,我发现它无法识别第二行配置:
Settings are listed in order of priority. The top value will be used.
build.nokogiri
Set for your local app (/path/app/.bundle/config): "--with-xml2-include=dir1"
Run Code Online (Sandbox Code Playgroud)
如何保留bundle config
多个构建选项?仅供参考,我已经尝试在它们周围加上引号,并删除--local
- 它们产生了相同的结果。
我使用的是捆绑器版本 1.3.5
我正在使用一个构建系统,它定义了许多 rake 目标,包括这个:
task :test => [:all]
Run Code Online (Sandbox Code Playgroud)
这对我来说似乎是不正确的,所以我定义了自己的 rake 任务,如下所示:
task :test => [:spec]
task :all => [:test, :build]
task :release => [:all]
task :default => [:release]
Run Code Online (Sandbox Code Playgroud)
但是,现在当我尝试构建我的包时遇到此错误:
Circular dependency detected: TOP => default => all => test => all
Tasks: TOP => default => all => test
BUILD FAILED
Run Code Online (Sandbox Code Playgroud)
我开始意识到,定义 rake 任务(或 rake 任务的依赖项)只是将这些任务/依赖项附加到任务定义中!这真让我抓狂!为什么我不能按照我认为合适的方式重新定义我的 rake 任务?!有没有办法覆盖 rake 任务和/或覆盖 rake 任务的依赖项?
如何使用Ruby在目录中找到最近修改过的文件夹(NOT A FILE)?
我正在尝试制作一个Android应用程序,它将小部件(表示为视图)存储在数据库中,然后能够在以后重新创建它们.
以下是它的要点:
public class DBSerializer<T extends View & Serializable> {
public int storeWidget(T widget) {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(bytes);
out.writeObject(widget);
byte[] data = bytes.toByteArray();
bytes.close();
out.close();
<store "data" in database>;
return <unique database id>;
}
public T getWidget(int id) {
byte[] data = <get data from database for the given id>;
ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(data));
return (T)in.readObject();
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,in.readObject()
抛出带有消息的InvalidClassException android.view.View; IllegalAccessException
.
由于Android的View直接扩展了Object,而Object有一个无参数的构造函数,所以不应该这样吗?或者它是否尝试使用无参数构造函数调用View?错误消息不清楚异常的确切原因是什么.
有谁知道是什么导致了这个以及如何解决它?
我可以使用轻松地将pem文件添加到SSH代理中ssh-add
,如下所示:
$ ssh-add /home/jsmith/keys/mytest.pem
Run Code Online (Sandbox Code Playgroud)
但我似乎无法删除它们:
$ ssh-add -d /home/jsmith/keys/mytest.pem
Bad key file /home/jsmith/keys/mytest.pem: No such file or directory
Run Code Online (Sandbox Code Playgroud)
尽管pem文件仍然存在...我还没有进行任何移动或更改。为什么刚才从我添加的SSH代理中删除这个pem文件时遇到了很多麻烦?正确的方法是什么?
我想避免使用ssh-add -D
(使用大写字母“ D”),因为那样会从SSH代理中删除所有身份,而我只想删除我指定的身份。
我像这样使用反射来打印出System.out
对象的属性:
System.out.println("Class: " + System.out.getClass().getName());
for (Field field : ObjectUtils.getAllFields(System.out)) {
field.setAccessible(true);
System.out.println("> " + field.getType().getSimpleName() + ' ' + field.getName() + " = " + field.get(System.out));
}
Run Code Online (Sandbox Code Playgroud)
这是结果:
Class: java.io.PrintStream
> boolean autoFlush = false
> boolean trouble = false
> Formatter formatter = null
> BufferedWriter textOut = java.io.BufferedWriter@43c1b556
> OutputStreamWriter charOut = java.io.OutputStreamWriter@587e5365
> boolean closing = false
> OutputStream out = org.apache.tools.ant.util.TeeOutputStream@22fcf7ab
Run Code Online (Sandbox Code Playgroud)
如您所见,autoflush
设置为false
。所以我的问题很简单-我怎么配置System.out
已经autoflush
设置为true
?
从我在网上读到的内容来看,听起来很多人建议设置-XX:+PerfDisableSharedMem
JVM 标志来修复由于垃圾收集器尝试写入/tmp
(hsperfdata) 时 IO 阻塞而导致的高 GC 暂停延迟。
我正在尝试优化系统垃圾收集的性能,并且我尝试在设置标志之前和之后运行负载测试,并且实际上在没有标志的情况-XX:+PerfDisableSharedMem
下性能稍好一些!我什至第二次重新运行负载测试并得到相同的结果。
所以我的问题是:这只是一个侥幸,还是-XX:+PerfDisableSharedMem
实际上有任何潜在的负面性能影响?
(我知道使用-XX:+PerfDisableSharedMem
意味着jstat
依赖于该文件的某些诊断工具将无法工作,但我们不使用任何这些工具 - 我只是询问潜在的性能缺点,而不是工具缺点。)