我有一些在Hudson奴隶上运行的项目.我希望其中一个在Java6下运行Ant,而不是默认(在我的环境中是Java5).
在项目配置视图中,我希望找到:
有没有办法做上述任何一种?如果其中一个设施可用,我看不到如何访问它.我正在运行Hudson 1.285.
如果可能的话,我宁愿避免使用"执行shell"操作而不是"调用Ant"操作:我的slave在z/OS上,Hudson似乎没有在这个平台上正确创建临时shell脚本(可能是编码问题) ).
我在Windows上运行Eclipse CDT来开发在远程Linux系统上构建和测试的C代码.目前,代码永远不会在Windows上编译.
我能够使用CDT在gdbserver下的Linux目标上开始远程进程,然后从Windows主机上附加gdb.但是,gdb会立即失败并出现以下错误:
warning: A handler for the OS ABI "GNU/Linux" is not built into this configuration
of GDB. Attempting to continue with the default i386 settings.
[...]
Remote 'g' packet reply is too long: 74afe9bff0aee9bf02000000f4af4a00a0aee9bf[...]
Run Code Online (Sandbox Code Playgroud)
两个Linux系统之间的调试工作正常,所以很明显我在Windows主机端做错了.我的具体问题是:
Cygwin的gdb版本是否足以调试远程Linux进程,或者我是否需要一个特殊的交叉gdb才能在Windows上运行它并使用Linux进程?如果是这样,我可以在任何地方获得这样的gdb吗?
使用gdb进行远程调试需要在主机系统上提供符号.实现这一目标的最简单方法是什么?我可以将Linux目标上的构建产生的符号复制到Windows主机,还是必须在Windows上进行完整构建?有没有办法避免这个要求,这样我才能在目标上提供符号?
谢谢,
-R
更多信息:将RSE常见问题提供了一些三分球,但不幸的是,我仍然受阻.FAQ描述了两种方法:
似乎有两种不同的方法来使用HTTP头实现条件请求,这两种方法都可以用于缓存,范围请求,并发控制等......:
在这两种情况下,客户端都会发送一条有关资源的信息,这使得服务器可以确定自客户端上次查看资源后资源是否已更改.然后,服务器根据客户端提供的条件头决定是否执行请求.
我不明白为什么有两种不同的方法可供使用.当然,ETags取代时间戳,因为服务器可以很容易地选择从时间戳生成ETag.
所以,我的问题是:
如果在Content-Type标头中没有指定charset参数,则RFC2616第3.7.1节似乎暗示对于子类型"text"的媒体类型应假定ISO8859-1:
当发送方未提供显式字符集参数时,"文本"类型的媒体子类型被定义为在通过HTTP接收时具有默认字符集值"ISO-8859-1".
除"ISO-8859-1"或其子集之外的字符集中的数据必须用适当的字符集值标记.
但是,我经常看到提供具有Content-Type值的Javascript文件的应用程序,例如"application/x-javascript"(即没有charset param),即使这些脚本包含非ASCII UTF-8字符,如果被解释则会损坏作为ISO8859-1.
这似乎不会给客户带来问题.客户如何知道将字节解释为UTF-8?是否存在其他字符数据子类型的规则,暗示UTF-8应该是默认值?这记录在哪里?
我正在使用CouchDB.我希望能够计算在查询时指定的日期范围内特定字段值的出现次数.我似乎能够做到这一部分,但我无法理解将它们全部拉到一起的最佳方法.
假设文档具有时间戳字段和另一个字段,例如:
{ date: '20120101-1853', author: 'bart' }
{ date: '20120102-1850', author: 'homer'}
{ date: '20120103-2359', author: 'homer'}
{ date: '20120104-1200', author: 'lisa'}
{ date: '20120815-1250', author: 'lisa'}
Run Code Online (Sandbox Code Playgroud)
我可以轻松创建一个按灵活日期范围过滤文档的视图.这可以通过下面的视图来完成,例如使用键范围参数调用_view/all-docs?startkey=20120101-0000&endkey=20120201-0000.
所有文档/ map.js:
function(doc) {
emit(doc.date, doc);
}
Run Code Online (Sandbox Code Playgroud)
使用上面的数据,这将返回一个CouchDB视图,其中只包含前4个文档(日期范围内的唯一文档).
我还可以创建一个查询给定字段的出现次数的查询,如下所示,使用分组调用,即_view/author-count?group=true:
笔者数/ map.js:
function(doc) {
emit(doc.author, 1);
}
Run Code Online (Sandbox Code Playgroud)
笔者数/ reduce.js:
function(keys, values, rereduce) {
return sum(values);
}
Run Code Online (Sandbox Code Playgroud)
这将产生类似于:
{
"rows": [
{"key":"bart","value":1},
{"key":"homer","value":2}
{"key":"lisa","value":2}
]
}
Run Code Online (Sandbox Code Playgroud)
但是,我找不到按日期过滤和计算事件的最佳方法.例如,使用上面的数据,我希望能够指定范围参数,startkey=20120101-0000&endkey=20120201-0000并获得这样的结果,其中最后一个文档从计数中排除,因为它超出了指定的日期范围:
{
"rows": [
{"key":"bart","value":1}, …Run Code Online (Sandbox Code Playgroud) 我目前正在使用另一个项目中的JUnit 4测试来反对我的代码.作为自动化Ant构建的一部分,我直接从其他项目的存储库中获取它们.这很棒,因为它可以确保我的代码在最新版本的测试中保持绿色.
但是,有一部分测试我从未希望传递给我的代码.但是如果我开始在这些测试中添加@Ignore注释,我将不得不维护自己的测试实现的单独副本,我真的不想这样做.
有没有一种方法可以在不修改测试源的情况下排除单个测试?这是我到目前为止所看到的:
据我所知,Ant JUnit任务只允许你排除整个Test类,而不是单独的测试方法 - 这对我没有好处,我需要方法粒度.
我考虑整合一个TestSuite,它使用反射来动态查找和添加所有原始测试,然后添加代码以显式删除我不想运行的测试.但是当我注意到TestSuite API没有提供删除测试的方法时,我放弃了这个想法.
我可以创建自己的Test类来扩展原始的Test类,覆盖我不想运行的特定测试,并使用@Ignore注释它们.然后我在我的子类上运行JUnit.这里的缺点是,如果将新的测试类添加到原始项目中,我将不会自动选择它们.我将不得不监视新的Test类,因为它们被添加到原始项目中.到目前为止,这是我最好的选择,但感觉并不理想.
我能想到的唯一另一个选择是无论如何都要运行错误的测试并忽略失败.但是,这些测试需要一段时间才能运行(并且失败!)所以我宁愿根本不运行它们.另外,我看不到告诉Ant任务忽略特定测试方法失败的方法(再次 - 我看看如何为单个测试类而不是方法执行此操作).
我想探索特定企业(我不拥有)的 Google 评论模式。获得评论的确切日期会很有用,而不仅仅是通过网络界面获得的“3 个月前”或“1 年前”的近似日期。
有谁知道如何做到这一点?以下是我迄今为止探索过的选项:
非常感谢任何帮助!
Groovy 将每个()和许多其他方法添加到java.lang.Object中.我无法弄清楚如何使用Groovy元类动态替换Java类上的默认each().
我可以看到如何添加新方法:
MyJavaClass.metaClass.myNewMethod = { closure -> /* custom logic */ }
new MyJavaClass().myNewMethod { item -> println item } // runs custom logic
Run Code Online (Sandbox Code Playgroud)
但是当覆盖方法时,似乎同样的方法不起作用:
MyJavaClass.metaClass.each = { closure -> /* custom logic */ }
new MyJavaClass().each { item -> println item } // runs Object.each()
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?如何在Groovy中动态覆盖each()?
有没有一种方法可以使用 jq 查找包含与给定条件匹配的值的所有路径?
例如,给定以下 JSON,我想返回“age”值 >35 的所有路径,无论包含该字段的结构的深度如何:
{
"springfield":{
"marge":{
"age":30
},
"homer":{
"age":40,
"job":"xyz"
}
},
"shelbyville":{
"zone1":{
"john":{
"age":10
}
},
"zone2":{
"mark":{
"age":50
}
}
},
"homeless1":{
"age":25
},
"homeless2":{
"age":60
}
}
Run Code Online (Sandbox Code Playgroud)
所以执行会产生如下结果:
[
["springfield", "homer"],
["shelbyville", "zone2", "mark"],
["homeless2"]
]
Run Code Online (Sandbox Code Playgroud) 我想在Unix shell脚本中确定运行时环境的当前代码页.这样做最可靠的方法是什么?
我正在研究解析环境变量$ LC_ALL,但它并不总是设置为有用的值,并且其格式似乎有所不同(可以是< locale >,或< locale >.< code page >,或< locale > .< 代码页 > @ < 修饰符 >等...).
有没有更好的办法?如果我从C调用nl_langinfo(CODESET),我基本上会使用相当于shell的shell.
http ×2
java ×2
ant ×1
bash ×1
c ×1
codepages ×1
content-type ×1
couchdb ×1
default ×1
each ×1
eclipse-cdt ×1
etag ×1
gdb ×1
gdbserver ×1
google-api ×1
google-maps ×1
groovy ×1
http-headers ×1
hudson ×1
jq ×1
json ×1
junit ×1
junit4 ×1
linux ×1
mapreduce ×1
metaclass ×1
overriding ×1
rest ×1
rfc2616 ×1
shell ×1
unix ×1
web-scraping ×1
windows ×1