有没有办法在每次构建结束时始终运行目标?
我知道我可以做这样的事......
<target name="runJob" depends="actuallyRunJob, teardown"/>
Run Code Online (Sandbox Code Playgroud)
......但这很草率,因为我需要一个需要拆卸的每个目标的包装器.
有任何想法吗?
谢谢,罗伊
让我的大脑缠绕在emberjs身上.尝试创建一个控制器,从一个返回JSON数组的webservice调用中加载对象:
(注意,这是从coffeescript生成的javascript)
MTM.Trade.controller = Ember.ArrayController.create({
loadAll: function() {
var self;
self = this;
this.set('content', []); /* fails with or without this line*/
return $.getJSON('http://localhost:8080/webservice/trades', function(data) {
var jsonTrade, trade, _i, _len;
console.log("Length = " + data.length);
for (_i = 0, _len = data.length; _i < _len; _i++) {
jsonTrade = data[_i];
trade = MTM.Trade.create(jsonTrade);
self.pushObject(trade);
}
console.log("Everything pushed");
});
}
});
Run Code Online (Sandbox Code Playgroud)
在调用时MTM.Trade.controller.loadAll(),显然正在为每个对象调用循环.但是我的控制器永远不会改变..运行console.log MTM.Trade.controller.get('content')返回一个空白数组
我知道ember-rest和ember-data存在,但是现在我正在自己学习如何自己做这些事情,并且稍后会迁移到这些框架.
UPDATE
感谢这篇文章,我确实得到了我的问题的答案..我需要初始化我的数组:
MTM.Trade.controller = Ember.ArrayController.create({
init: function() {
this._super();
return …Run Code Online (Sandbox Code Playgroud) 是的,另一个 git flow 问题.. :(
我非常了解“标准” git rebase 流程:
我遇到的问题是,在与 master 合并之前,这没有为代码审查留下空间。审阅者仅在 master 上看到更改,因此如果开发人员需要调整任何内容,则 master 上将针对给定功能进行多次提交。理想情况下只有一个。
我知道的一些选项可以解决这个问题,但并不理想:
有没有更好的办法?
(请注意,您不需要知道这个数据表的数据.)
我正在创建一个处理DataTables的指令.我想做的是有一个带有两个图标的动作栏 - 编辑和删除.这些图标应响应ng-click.
数据表允许您通过为给定的列定义(mRender)提供回调来实现此目的.此回调返回该单元格值的html字符串,该字符串将插入DOM而不是实际单元格值.
检查这个plunker.强调了两个重要功能:
renderActionIcon - 我上面提到的回调的实现.它会在单元格中生成我想要的HTML字符串.registerNewHtmlWithAngular - 表面上让角度知道我需要为该列注册的ng-clicks的函数.应该registerNewHtmlWithAngular怎么做?
如果$编译html,angular会添加相应的click事件侦听器并返回一个元素,但由于Datatables函数需要HTML,因此这些注册的元素不会添加到DOM中.
有任何想法吗?谢谢大家!
我已经发现了一种困难的方式,当你双向绑定一个promise时,angular会为你解除承诺,并且会绑定实际的承诺.我的问题是,如何处理被拒绝的承诺?
我的具体情况是我有一个指令,我从控制器双向绑定一个promise.我的控制器期望该指令处理对该promise的拒绝,因为错误需要在DOM上显示.
在我的指令中,我希望我的绑定变量是一个promise,但我获得了该promise 的解析值.烦人,但是,并不可怕.
问题是当该承诺被拒绝时,指令无法知道.
以这个plunker为例:
http://plnkr.co/edit/m0cOqFhx6TNrDxTbr9Qx?p=preview
我如何处理指令中的承诺拒绝?
谢谢,罗伊
(在 Mac 上,Boot2Docker,docker v 1.1.1)
在分配主机端口时,Docker 不会释放它使用的端口,这是一个问题。例如,我使用相同的映像启动 3 个容器。我的docker ps返回结果如下:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9875e2d28c3b 49ffc1050348 /sbin/my_init 19 hours ago Up 1 seconds 0.0.0.0:49169->22/tcp, 0.0.0.0:49170->3306/tcp boring_goldstine
f0a40c3bb4a1 49ffc1050348 /sbin/my_init 19 hours ago Up 6 seconds 0.0.0.0:49167->22/tcp, 0.0.0.0:49168->3306/tcp sleepy_wright
0fb913db3528 49ffc1050348 /sbin/my_init 19 hours ago Up About a minute 0.0.0.0:49165->22/tcp, 0.0.0.0:49166->3306/tcp agitated_jones
Run Code Online (Sandbox Code Playgroud)
滚动到端口,您将看到 49170 是最后分配的端口。
如果我停止并 rm 这些容器并运行另一个容器,Docker 会使用最低的可用端口。然而现在这个数字还在不断增加:
docker run -P -d 49ffc1050348
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
82fdf0e54846 49ffc1050348 /sbin/my_init …Run Code Online (Sandbox Code Playgroud) 在阅读一次之后,我似乎正在失去我的"身体".请注意,我正在使用Camel的流缓存,并且输入是来自http组件的json文件.我有一个处理器,代码如下.
log.debug("Body Type: " + exchange.getIn().getBody().getClass().getCanonicalName());
log.debug("In msg1:" + exchange.getIn().getBody(String.class));
log.debug("In msg2:" + exchange.getIn().getBody(String.class));
Run Code Online (Sandbox Code Playgroud)
我期望在这里看到的是msg1和msg2是相同的输出,但是msg2返回一个空字符串(非空).以下是TRACE级别的日志.
1- DEBUG com.mycompany.MyProcessor : Body Type: org.apache.camel.converter.stream.InputStreamCache
2- TRACE org.apache.camel.impl.converter.DefaultTypeConverter : Converting org.apache.camel.converter.stream.InputStreamCache -> java.lang.String with value: org.apache.camel.converter.stream.InputStreamCache@780a5cef
3- TRACE org.apache.camel.impl.converter.DefaultTypeConverter : Using converter: StaticMethodTypeConverter: public static java.lang.String org.apache.camel.converter.IOConverter.toString(java.io.InputStream,org.apache.camel.Exchange) throws java.io.IOException to convert [class org.apache.camel.converter.stream.InputStreamCache=>class java.lang.String]
4- DEBUG com.mycompany.MyProcessor : In msg1:{myJson}
5- TRACE org.apache.camel.impl.converter.DefaultTypeConverter : Converting org.apache.camel.converter.stream.InputStreamCache -> java.lang.String with value: org.apache.camel.converter.stream.InputStreamCache@780a5cef
6- TRACE org.apache.camel.impl.converter.DefaultTypeConverter : Using converter: StaticMethodTypeConverter: public static java.lang.String org.apache.camel.converter.IOConverter.toString(java.io.InputStream,org.apache.camel.Exchange) throws …Run Code Online (Sandbox Code Playgroud) (骆驼版2.14.1)
我正在尝试让Camel使用退避重新传递策略重试msg到JMS(实际上是MQ over JMS).这是我得到的:
errorHandler(defaultErrorHandler()
.maximumRedeliveries(-1)
.useExponentialBackOff()
.backOffMultiplier(2)
.maximumRedeliveryDelay(30000)
.retryAttemptedLogLevel(LoggingLevel.WARN));
from("direct:in")
.log("Sending message to MQ")
.to("mq:MY_QUEUE?requestTimeout=1000");
Run Code Online (Sandbox Code Playgroud)
我对这里应该发生的事情的理解是初始超时将是1000ms.之后,骆驼将等待2000毫秒,然后等待4000毫秒等,直到我们达到30000毫秒.
发生了什么事是消息被重试,但在1000毫秒每次.
我可能需要在上面的代码中更改以获得我正在寻找的结果?
TIA
为了充分利用Java中的函数组合,我想讨论一些我常用的现有静态函数.一个完美的currying候选者是Apache Commons StringUtils.
对于一个具体的例子,让我们说,我想讨好的StringUtils.remove(String str, String remove)方法提供了调用的函数(比方说)removeCommas.
一种可能的实现是:
Function<String, String> removeCommas = s -> StringUtils.remove(s, ",");
Run Code Online (Sandbox Code Playgroud)
然而,这并不是一个问题.我希望能够使用方法引用操作符(例如StringUtils::remove)以更实用的方式实现这一点,但我无法弄清楚语法是什么样的.
思考?
我有一个java对象的实例,比方说一个名为myList的ArrayList实例.
对于这个特定的实例,我想重写invokeMethod方法,以便(比方说)调用该方法.
我可以这样做:
myList.metaclass.invokeMethod { name, args ->
println "Called ${name} with ${args}"
whatGoesHere.invokeMethod(name, args)
}
Run Code Online (Sandbox Code Playgroud)
注意闭包的第二行 - 如何调用原始的invokeMethod方法?我正确地谈到这个吗?
angularjs ×2
apache-camel ×2
java ×2
ant ×1
boot2docker ×1
currying ×1
datatables ×1
docker ×1
ember.js ×1
git ×1
groovy ×1
java-8 ×1
jms ×1
promise ×1