小编Jos*_*ick的帖子

如何在进行转换时从Ember路径调用控制器操作?

我的目标是在我的页面上显示一个花哨的"loading ..."图形,而Ember通过Ember路线获取模型数据.

这导致我http://emberjs.com/guides/routing/loading-and-error-substates/.这激发了我在我的页面控制器上创建一个动作,它将在DOM中显示"加载"覆盖窗口.例如,这是我的控制器:

控制器/ users.js:

export default Ember.ArrayController.extend({
    ...
    actions: {
        displayLoading: function() {
            // Show the DOM element that says "Loading..."
        },
        ...
    }
});
Run Code Online (Sandbox Code Playgroud)

我想在我的数据加载时调用它,所以我然后定义一个路由如下:

路线/ users.js:

export default Ember.Route.extend({
    model: function( params ) {
        return this.store.find('user', params );
    },

    actions: {
        loading: function(transition, originRoute) {
            transition.send('displayLoading');
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做时,我收到此错误:

Uncaught Error: Nothing handled the action 'displayLoading'. If you did handle the action, this error can be caused by returning true from an action handler …

javascript ember.js

14
推荐指数
1
解决办法
8776
查看次数

基于新的 GitHub 版本触发 Jenkins 构建或提交到 master 分支

我意识到这里这里这里之前已经问过这个问题,但是这些解决方案似乎都不适用于我的 Jenkins 设置,我不知道为什么。

我的目标是在对master分支进行新提交或将任何标签(或在 GitHub 中,发布)添加到存储库时触发 Jenkins 构建。这是我目前的设置:

在此处输入图片说明

当我对master分支进行新的提交时,会触发一个新的构建。但是当我添加一个新的 GitHub 版本时,什么也没有发生。

查看我的“Git 轮询日志”显示以下输出:

Started on Jun 20, 2017 1:25:00 AM
Polling SCM changes on master
Using strategy: Default
[poll] Last Built Revision: Revision 035c0f46422616b1862376b79c43b2562dc66f93 (origin/master)
 > git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repositories
 > git config remote.origin.url git@github.com:some-org/sample-app-frontend.git # timeout=10
Fetching upstream changes from git@github.com:some-org/sample-app-frontend.git
 > git --version # timeout=10
using GIT_SSH to set credentials …
Run Code Online (Sandbox Code Playgroud)

git github jenkins

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

jOOQ - 在查询中简明地表示列和聚合/窗口函数

这篇文章是我在类似问题上留下的评论结果:https://stackoverflow.com/a/19860271/2308858

我正在使用PostgreSQL和jOOQ 3.4并尝试在jOOQ中表示以下SQL查询:

SELECT *, COUNT(*) OVER() 
FROM table1 t1
JOIN table2 t2 ON (t1.id = t2.id)
JOIN table3 t3 ON (t1.otherId = t3.otherId)
Run Code Online (Sandbox Code Playgroud)

我喜欢Postgres如何让我简洁地代表"所有专栏和count专栏" SELECT *, COUNT(*) OVER().但是当我尝试在jOOQ中表示相同的查询时,我能做的最简洁的方法是:

create.select( TABLE1.fields() ).select( TABLE2.fields() ).select( TABLE3.fields() ).select( count().over() )
   .from( TABLE1 )
   .join( TABLE2 ).on( TABLE1.ID.equal( TABLE2.ID ))
   .join( TABLE3 ).on( TABLE1.OTHER_ID.equal( TABLE3.OTHER_ID ))
Run Code Online (Sandbox Code Playgroud)

理想情况下,我会写这个:

create.select().select( count().over() )
   .from( TABLE1 )
   .join( TABLE2 ).on( TABLE1.ID.equal( TABLE2.ID ))
   .join( TABLE3 ).on( TABLE1.OTHER_ID.equal( TABLE3.OTHER_ID ))
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用.有关如何做到这一点的任何想法?

java postgresql jooq

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

从计算财产中归还承诺

我意识到有几个类似的问题,但这些答案似乎都没有解决我的问题.我的目标是获取一个列表language,并过滤它们,以便我的模板可以显示完整列表的子集.

我开始验证我的计算属性是否正常工作:

MyController.js

// Works as expected
languagesFiltered: function() {
   return this.get('languages');
}.property('languages')
Run Code Online (Sandbox Code Playgroud)

然后我添加了一个过滤功能,但这里遇到了麻烦:

MyController.js

languagesFiltered: function() {
   // console.log shows that languages is actually a promise
   var languages = this.get('languages');

   // all of this returns a promise, but Handlebars can't handle the promise
   return languages.then( function( languagesArray ) {
      return languagesArray.filter( function( item, index, enumerable) { 
         return item.get('name') !== 'English';
      });
   })
}.property('languages')
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用该Ember.Array.filter方法(http://emberjs.com/api/classes/Ember.ArrayProxy.html#method_filter).过滤器似乎工作正常,但现在languagesFiltered返回一个promise,Handlebars无法处理.

我尝试了最后一种选择:

MyController.js

languagesFiltered: function() {
     var languages …
Run Code Online (Sandbox Code Playgroud)

ember.js ember-data

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

保护 Google 存储桶的惯用方法

我的目标是授予在某种程度上对谷歌的存储桶的计算实例模板读写权限仅授予那些必要的,但我感到困惑的是怎么考虑的GCP惯用给出的权限许多访问控制选项为谷歌存储桶。

目前,我正在创建托管实例组和计算实例模板并分配以下范围:

  • https://www.googleapis.com/auth/userinfo.email
  • https://www.googleapis.com/auth/compute.readonly
  • https://www.googleapis.com/auth/devstorage.read_write

到计算实例上的默认服务帐户。这似乎工作正常,但鉴于上面的链接,我想知道是否应该将存储桶上的访问控制列表 (ACL) 也显式设置private为?但同一页面还说“仅当您需要对单个对象进行细粒度控制时才使用 ACL”,而在这种情况下,我需要一个粗粒度的策略。这让我想知道我是否应该使用 IAM 权限 (?) 但我应该在哪里分配它?

配置它的惯用方法是什么?

google-cloud-storage google-compute-engine

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

了解非阻止Web服务调用与非阻止JDBC之间的区别

我试图从概念上理解为什么在Play Framework 2.0中,它被认为是调用WS.url().get()Web服务调用的最佳实践,但如果你在promise中包装任何其他阻塞调用(如JDBC调用),建议你在除默认执行上下文之外的执行上下文?

据我所知,默认情况下,Play Framework的线程池配置为每个核心有一个线程,每个控制器都希望运行完全非阻塞的代码.因此,如果您在控制器(例如,Web服务)中进行阻止调用,那么您需要确保此调用不会阻止可用于控制器的线程.

否则,将不会有任何线程执行控制器,因为它们都处于阻塞状态.

但令我困惑的是以下几点:

  • 首先,控制器代码本身执行什么线程池?这是默认的执行上下文吗?
  • 其次,一方面我理解WS.url().get()也在默认执行上下文中执行,另一方面,线程池配置上Play框架文档声明"请注意,您可能想要...将您的阻止代码包装在Futures中这不会使它成为非阻塞,它只是意味着阻塞将在不同的线程中发生."

上述不是指WS.url().get()在同一默认执行上下文中"只是在不同的线程中发生"吗?在不同的执行上下文中执行JDBC调用有什么不同?

java jdbc nonblocking playframework

3
推荐指数
1
解决办法
1258
查看次数

动态加载Java Enum类和枚举常量

我已经看过很多关于如何动态获取枚举值的StackOverflow帖子,因为你在编译时知道了Enum类,但我试图动态加载枚举类和枚举值,我没有看到如何做这个.

我正在尝试做这样的事情:

public interface Config {
    public ConfigValue getConfigValue();
}

public enum AwsConfig implements Config {
    ACCESS_KEY_ID( new ConfigValue(...) ),
    API_URL( new ConfigValue(...) )
    ...
    public static String getName() { return "AwsConfig"; }
    ...
}

public enum PaginatorConfig implements Config {
    DEFAULT_PAGE_SIZE( new ConfigValue(...) ),
    ...
    public static String getName() { return "PaginatorConfig"; }
    ...
}

public void myMethod( ConfigValue configValue ) {
    String enumClassName = configValue.getName();
    String enumConstantKeyName = configValue.getKey();

    // I now have the enum's class name as …
Run Code Online (Sandbox Code Playgroud)

java enums

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

具有数组输入和输出的 Bash 函数

如果我在 bash shell 中定义一个数组:

a=()
a+=("A")
a+=("B")
a+=("C")
Run Code Online (Sandbox Code Playgroud)

我可以按预期与它交互:

echo "${a[0]}"
# Returns "A"

echo "${a[1]}"
# Returns "B"
Run Code Online (Sandbox Code Playgroud)

但是当我通过函数运行同一个数组时,我一定做错了什么。首先,我将定义我的函数:

function sort_array {
  declare -a array=("${!1}")
  local sorted=()

  sorted+=("1")
  sorted+=("2")
  sorted+=("3")

  echo "${sorted[@]}"
}
Run Code Online (Sandbox Code Playgroud)

现在让我们调用它并检查结果:

b=()
b=$(sort_array a[@])
echo "${b[0]}"

# Returns "1 2 3"
# But I'm expecting b[0] == 1
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我意识到我的示例可以完全删除函数参数,但我的最终目标是编写一个 bashsort_array()函数,我可以向其传递数组并获取数组。

arrays bash shell function

0
推荐指数
1
解决办法
1437
查看次数