小编Ero*_*lin的帖子

Gradle版本3.3不支持BuildActionExecuter上的toTask()方法

我刚刚将我的Android Studio更新为3.0 canary 1.现在我正在使用Android Studio 3.0 canary 1上的现有项目.默认情况下,gradle:我的项目中设置了3.0.0-alpha1:gradle_file.所以我将我的gradle版本更改为2.2.3,现在我收到此错误:

错误:无法完成Gradle执行.

原因:您正在使用的Gradle版本(3.3)不支持BuildActionExecuter上的forTasks()方法.Gradle 3.5和所有更高版本都支持此功能.

我在这里附上我的gradle文件

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.3'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
Run Code Online (Sandbox Code Playgroud)

gradle android-studio-3.0

111
推荐指数
5
解决办法
8万
查看次数

Rails 4 [最佳实践]嵌套资源和浅层:真实

以下帖子基于Rails 4.

我实际上正在寻找关于多个嵌套资源(超过1个)的良好最佳实践,并且选项浅:true.

首先在我的路线中,有这样的:

resources :projects do 
  resources :collections
end
Run Code Online (Sandbox Code Playgroud)

相关的路线是:

    project_collections GET    /projects/:project_id/collections(.:format)          collections#index
                        POST   /projects/:project_id/collections(.:format)          collections#create
 new_project_collection GET    /projects/:project_id/collections/new(.:format)      collections#new
edit_project_collection GET    /projects/:project_id/collections/:id/edit(.:format) collections#edit
     project_collection GET    /projects/:project_id/collections/:id(.:format)      collections#show
                        PATCH  /projects/:project_id/collections/:id(.:format)      collections#update
                        PUT    /projects/:project_id/collections/:id(.:format)      collections#update
                        DELETE /projects/:project_id/collections/:id(.:format)      collections#destroy
               projects GET    /projects(.:format)                                  projects#index
                        POST   /projects(.:format)                                  projects#create
            new_project GET    /projects/new(.:format)                              projects#new
           edit_project GET    /projects/:id/edit(.:format)                         projects#edit
                project GET    /projects/:id(.:format)                              projects#show
                        PATCH  /projects/:id(.:format)                              projects#update
                        PUT    /projects/:id(.:format)                              projects#update
                        DELETE /projects/:id(.:format)                              projects#destroy
Run Code Online (Sandbox Code Playgroud)

我在文档中读到了嵌套资源的限制:

资源不应该嵌套超过1级深度.

来源:http://guides.rubyonrails.org/routing.html#limits-to-nesting 好的.然后,就像文件说的那样,我将在我的路线中使用"浅".

shallow do
  resources :projects do 
    resources …
Run Code Online (Sandbox Code Playgroud)

api rest ruby-on-rails nested-routes ruby-on-rails-4

27
推荐指数
2
解决办法
4万
查看次数

redux/react app中的状态具有属性为reducer的属性

我正在使用Redux和React创建一个应用程序.我遇到一个问题,我无法将状态映射到组件属性,因为状态具有与我使用的reducer的名称匹配的属性.

根减少器是使用combineReducers方法创建的

const rootReducer = combineReducers({
  appReducer
});
Run Code Online (Sandbox Code Playgroud)

最初的状态是

const initialState = {
  sources: [], 
  left: {}, 
  right: {},
  diff: {} 
}
Run Code Online (Sandbox Code Playgroud)

但是在组件功能中mapStateToProps:

function mapStateToProps(state) {
  return {
    sources: state.sources
  }
}
Run Code Online (Sandbox Code Playgroud)

state.sourcesundefined因为state参数的值是

{
  appReducer: {
    sources: [], 
    left: {}, 
    right: {}, 
    diff: {}
  }
}
Run Code Online (Sandbox Code Playgroud)

这是redux的一个特性吗?所以当我使用更多reducers时,所有这些都会为state变量添加新属性?或者我身边有什么问题(我在redux教程中从未注意到这种行为).

谢谢

javascript state reactjs redux

15
推荐指数
2
解决办法
6422
查看次数

关于GitHub repos,fork或创建新分支的最佳实践

我正在寻找最佳实践,在GitHub上分叉和分支.我在GitHub中读过这个Forking vs. Branching,但它并不重要.

我们的5人团队正在使用相同的存储库,我们希望避免在代码中合并问题,冲突或回归.目标是让5个人在项目的不同部分工作,通常在同一个文件上.

我想知道它是否值得:

  • 分叉项目,工作和创建拉取请求,这样每个人都可以轻松地查看代码,或者
  • 创建一个新的分支 - 在工作完成后工作并在master上合并.

git github git-merge git-branch git-fork

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

如何在QtCreator中为项目创建文件夹或子目录?

我想创建子目录和文件夹来组织我在Qt中的代码.

我试图在我的shell/explorer中手动创建目录,但Qt无法识别它.

qt qt-creator

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

如何使用 chrome.identity.launchWebAuthFlow 缓存身份验证令牌?

我正在使用chrome.identity.launchWebAuthFlow方法从我们的 OAuth2 服务器启动 OAuth2 令牌生成。

在 Identity API 文档中,指定对用户进行身份验证有两种可用的方法:getAuthTokenlaunchWebAuthFlow。我们使用后者是因为正如文档中所指定的:

如果您的应用程序使用自己的服务器来验证用户身份,则需要使用 launchWebAuthFlow。

我们正在努力缓存结果。在阅读 的文档时getAuthToken,似乎涉及到一些智能缓存。

Chrome 捕获响应并将 和 存储access_tokenrenew_token浏览器中(此处可见:)chrome://identity-internals/Chrome仅在过期时才access_token向 OAuth 服务器请求。access_token

然而,使用 时launchWebAuthFlow,我们很难使用 Chrome 缓存,而且它每次都会调用我们的 OAuth 服务器。

有谁知道如何使用API​​​​的这种方法缓存结果?

google-chrome-extension google-chrome-app

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

Passenger使用比预期更多的PostgreSQL连接

生产中存在很长时间的难题,我们不知道它来自何处.有时候可以在localhost上重现它,Heroku Enterprise支持一直没有这个.

在我们的生产数据库中,我们目前有以下设置:

  • Passenger Standalone,禁用线程,限制为25个进程MAX.没有设置.
  • 3网络dynos

a SELECT * FROM pg_stat_activity GROUP BY client_addr并计算每个实例的连接数,表明在高峰期间为一个客运进程打开了超过1个PSQL连接.

假设:

  • 单个地址大约是一个Dyno(由Heroku员工确认)
  • 乘客当时不会产生超过25个进程(passenger-status在这些峰值期间确认)

这是一个截图SELECT * FROM pg_stat_activity;:

在此输入图像描述 在屏幕截图中,我们可以看到有45个psql连接来自同一个运行乘客的dyno.如果我们遵循先前的逻辑,那么每个乘客流程不应该有超过1个连接,所以25.

日志看起来并不寻常,没有提到dyno崩溃/进程崩溃.

以下是相同dyno的乘客状态的屏幕截图(不同的时间,只是为了证明没有比为一个dyno创建的25个更多的进程): 在此输入图像描述

最后我们从Heroku支持获得了一个响应(惊人的支持btw)

我还看到之前有关乘客利用比预期更多连接的报告,但不幸的是,大多数人因复制困难而被关闭.

在Passenger文档中,解释了Passenger自己处理ActiveRecord连接.

任何线索赞赏.谢谢!

各种信息:

  • Ruby版本: 2.4.x
  • Rails版本: 5.1.x
  • 乘客版本: 5.3.x
  • PG版本: 10.x
  • ActiveRecord版本: 5.1.x

如果您需要更多信息,请在评论中告诉我,我很乐意更新这篇文章.

最后一件事:我们使用ActionCable.我读过某个地方乘客正在处理奇怪的套接字连接(打开一个隐藏的过程以保持连接活着).这是我们的一个主角,但到目前为止,没有运气在localhost上重现它.如果任何人都可以确认Passenger如何处理ActionCable连接,那将非常感激.

更新1(01/10/2018):

尝试:

postgresql ruby-on-rails passenger heroku actioncable

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

Ruby on Rails最佳实践 - 大型控制器与小型控制器

我需要一些关于Ruby on Rails 最佳实践的信息,特别是对于必须做很多事情的Controller,因此,一个简单的"show"动作现在就行了.我知道,它不是很好,我有特定的代码.

这是一个示例代码:

def show
    sound = Sound.find(params[:id])
    @xml_path = File.dirname(sound.file.path)
    s3 = AWS::S3.new(
        :access_key_id => 'XXX',
        :secret_access_key => 'XXX')
    @url = s3.buckets['dev'].objects[sound.file.path[1..-1]].url_for(:read, :expires => 10*60)

    if sound.id_job != 0 && sound.transcript_progress != 100
      @response = Savon.client("http://srap.php?wsdl").request(:avance) do
        soap.body = { 
         :Jeton => "abcdef",
         :ID_job => sound.id_job,
        }
      end
      @response = @response.to_hash
      @progress = @response[:avance][:avancement].to_s.split("#")[1]# ID_job received is formed like "OK#123", we keep "123"
      if @progress == "Termine"
         sound.transcript_progress = 100
      elsif @progress == "ERROR" …
Run Code Online (Sandbox Code Playgroud)

ruby model-view-controller ruby-on-rails ruby-on-rails-3.2

3
推荐指数
2
解决办法
2340
查看次数

如何在Spree中个性化帐户视图

我实际上正在开发Spree电子商务解决方案,我想个性化" 帐户 "视图(127.0.0.1:3000/account),但我无法在Spree的核心找到它.

我也在搜索spree_auth_devise Gem来个性化它,但我无法理解它是如何工作的.

在狂欢的文档中找不到正确的方法.

如果有人有线索,我会打开(:

ruby-on-rails spree devise

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