小编Dav*_*les的帖子

OAuth2"客户端凭据流"的浏览器测试工具

到目前为止,我们一直在开发的REST API应用程序使用了一个简单的api密钥作为URL参数传入,但我们刚刚切换到使用OAuth2 Client Credentials Flow.

这是一个简单的工作流程,客户端通过基本身份验证发布密钥和密钥,并接收到期访问令牌.不幸的是,虽然简单,但是在开发期间或者我们的支持团队进行安装完整性检查时,在浏览器中对API进行快速测试变得相当困难.

我已经尝试过针对Chrome的OAuth 2.0 PlaygroundREST控制台,但这两者似乎只支持更复杂的授权代码授予工作流程.是否有支持Client Credentials流的基于浏览器的工具?

browser rest oauth-2.0

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

资源文件放在构建Java 9模块的Gradle项目中的哪个位置?

从IDEA 2018.2.1开始,IDE从模块化的依赖项开始错误突出显示"不在模块图"中的包.我module-info.java在项目中添加了一个文件并添加了必需的requires语句,但我现在无法访问src/main/resources目录中的资源文件.

(有关完整示例,请参阅此GitHub项目.)

当我使用./gradlew run./gradlew installDist+生成的包装器脚本时,我能够读取资源文件,但是当我从IDE运行我的应用程序时,我不是.

我向 JetBrains 提出了一个问题,我学到的是IDEA正在使用模块路径,而Gradle默认使用类路径.通过向我添加以下块build.gradle,我能够让Gradle ...无法读取任何资源文件.

run {
    inputs.property("moduleName", moduleName)
    doFirst {
        jvmArgs = [
                '--module-path', classpath.asPath,
                '--module', "$moduleName/$mainClassName"
        ]
        classpath = files()
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试export将我感兴趣的资源目录作为"包",并在编译时遇到构建失败:

错误:包是空的或不存在:mydir

使用opens而不是exports获得相同的错误,但降级为警告.

我甚至尝试移动mydir资源目录src/main/java,但是这产生了相同的错误/警告,并且还导致资源没有被复制到build目录中.

应该在Java 9中使用哪些资源,以及如何访问它们?


注意:在继续研究问题之后,我已经相当大地编辑了这个问题.在最初的问题中,我还试图弄清楚如何在资源目录中列出文件,但在调查过程中我确定这是一个红色的鲱鱼 - 首先,因为阅读资源目录只有在资源是从file:///URL 读取(也许甚至不是),第二,因为普通文件也没有工作,所以很明显问题是资源文件一般而不是专门用于目录.


解:

按照Slaw的回答,我将以下内容添加到build.gradle:

// at compile …
Run Code Online (Sandbox Code Playgroud)

java embedded-resource gradle java-9 java-module

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

AVAssetWriterInputPixelBufferAdaptor和CMTime

我正在为视频写一些帧AVAssetWriterInputPixelBufferAdaptor,而且时间上的行为并不是我所期望的.

如果我只写一帧:

 [videoWriter startSessionAtSourceTime:kCMTimeZero];
 [adaptor appendPixelBuffer:pxBuffer withPresentationTime:kCMTimeZero];
Run Code Online (Sandbox Code Playgroud)

这给我一个长度为零的视频,这是我所期待的.

但是,如果我继续添加第二帧:

 // 3000/600 = 5 sec, right?
 CMTime nextFrame = CMTimeMake(3000, 600); 
 [adaptor appendPixelBuffer:pxBuffer withPresentationTime:nextFrame];
Run Code Online (Sandbox Code Playgroud)

我得到十秒的视频,我期待五个.

这里发生了什么?难道withPresentationTime莫名其妙定置了框架和持续时间都开始?

请注意,我没有要求endSessionAtSourceTime,只是finishWriting.

objective-c avfoundation ios avassetwriter cmtime

14
推荐指数
2
解决办法
7702
查看次数

Intellij IDEA:"用于编码UTF-8的不可映射字符"编译ISO-8859-1文件

我有一个混合编码的源代码树,我在上面收到一些源文件的警告.我成功地将这些文件的编码设置为ISO 8859-1,并且在使IDEA的缓存无效后,它们现在可以在编辑器中正确显示.但是,当我编译时,我仍然收到错误消息.

生产构建使用ant并且它不是问题,但它意味着我无法在IDE中"制造".有没有办法让IDEA正确编译这些,或者失败,将错误降低到警告?

java encoding javac intellij-idea

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

使用GO语言将ASCII数字字符的字节数组转换为int

我看到了一些完全相同的问题的答案:如何在GO编程语言中将Byte数组转换为int?

我写下面的函数将字节数组转换为int

func convertByteToInt(in []byte) int32 {
    return  (int32(in[0]) << 24 | int32(in[1]) << 16 | int32(in[2]) << 8 | int32(in[3]))
}
Run Code Online (Sandbox Code Playgroud)

在此之前,我确保字节数组具有正确的(基数256)值.在[0] = 54(ASCII为6),[1] = 54(ASCII为6),[2] = 49(ASCII为1),[3] = 49(ASCII为1)中.

所以我期望从字节数组中检索整数6611的值,但我最终获得了909521201.我无法理解在这种简单的转换中究竟发生了什么.任何人都可以闪光吗?

谢谢

arrays int type-conversion go

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

在斯威夫特,什么是"进步"?

根据Swift语言指南中控制流部分,

所述for-in循环执行一组用于在一个范围,序列,集合,或进展的每个项目的语句.

我很确定我知道其中有三个是:

  1. 范围:使用范围运算符定义的内容,.....<
  2. 顺序:符合SequenceType协议的东西(文档不是很明显,但各种人都对它进行了逆向工程)
  3. 集合:Swift 集合类型中的任何一种,即ArrayDictionary

(我注意到#3可能是多余的,ArrayDictionary似乎都符合SequenceType.)

但是什么是"进展"?这是第四件事,还是作家只是罗嗦?


ETA:我也看到了一个CollectionType协议,所以解释了#3.

iteration control-flow swift

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

按名称动态获取Ruby类常量

我有一个类API,它从第三方API中提取对象,并将它们构建为类型的子类APIObject. APIObject子类匹配我从中提取的API中的对象名称:

User < APIObject
Account < APIObject
Run Code Online (Sandbox Code Playgroud)

我想在APIObject中定义一个类方法,允许我使用标准的Rails访问器来提取对象:

user = User.find id
Run Code Online (Sandbox Code Playgroud)

我想将此调用转换为API调用的方法如下:

API::User::findById id
Run Code Online (Sandbox Code Playgroud)

我想访问APIObject子类(User)的名称,self.class.name并使用它来调用constant(API::User),但我知道API::self.class.name不会工作.我可以一遍又一遍地为每个子类重写这个方法,但看起来这应该是可能的,不用这样做.建议?

ruby oop

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

Mysql ::错误:指定的密钥太长; 最大密钥长度为767字节:CREATE INDEX

我正在使用rails 2.3.5应用程序,女巫我有这个领域

t.string   "trip_cities",             :limit => 256
Run Code Online (Sandbox Code Playgroud)

而这个指数

add_index "bookings", ["trip_cities"], :name => "trip_cities"
Run Code Online (Sandbox Code Playgroud)

当我尝试执行时:

bundle exec rake db:test:load
Run Code Online (Sandbox Code Playgroud)

我收到此错误Mysql::Error: Specified key was too long; max key length is 767 bytes: CREATE INDEX 'trip_cities' ON 'bookings' ('trip_cities'),并不知道如何解决此问题.

ruby mysql rspec ruby-on-rails

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

在RESTful API中包含/嵌入与链接

因此,RESTful API的一般模式是返回一个带有嵌入式链接的对象,您可以使用它来检索相关对象.但有时为方便起见,您希望立即撤回对象图的整个块.

例如,假设您有一个包含客户,订单退货的商店应用程序.您希望一起显示客户ID 12345的个人信息,所有订单和所有退货.(可能有充分理由不总是退回订单并返回客户个人信息.)

纯粹的RESTful方式是这样的:

  1. GET /
    • 返回链接模板列表,包括一个用于查询客户的模板
  2. GET /customers/12345(基于链接模板/)
    • 返回客户的个人信息
    • 返回链接以获取此客户的订单和退货
  3. GET /orders?customerId=12345(来自/customers/12345回复)
    • 获取客户12345的订单
  4. GET /returns?customerId=12345(来自/customers/12345回复)
    • 获得客户12345的退货

但是,一旦你拥有了customersURI,它就能很好地将它全部拉回到一个查询中.这种便利性查询是否有最佳实践,您希望转换部分或全部链接而不是发出多个请求?我想的是:

GET /customers/12345?include=orders,returns
Run Code Online (Sandbox Code Playgroud)

但是,如果有人采用这种方式,那么我宁愿不做一些事情.

(FWIW,我不是在建一个商店,所以我们不要狡辩这些是否是这个模型的正确对象,或者你将如何深入到实际的产品或其他任何东西.)


更新添加:看起来在HAL中说这些被称为"嵌入式资源",但在所示的示例中,似乎没有任何方法可以选择嵌入哪些资源.我找到一篇博文,建议像我上面描述的那样,embed用作查询参数:

GET /ticket/12?embed=customer.name,assigned_user
Run Code Online (Sandbox Code Playgroud)

这是一个标准或半标准的做法,还是一个博主组成的东西?

rest embedding hypermedia

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

让Intellij IDEA(13+)识别Gradle模块的相互依赖性

我有两个Gradle项目,我们称之为蓝色和绿色.绿色取决于蓝色,如下所述build.gradle:

repositories {
  mavenLocal()
}

dependencies {
    compile 'org.example:blue:1.0'
}
Run Code Online (Sandbox Code Playgroud)

Blue使用Maven插件构建适当的工件:

apply plugin: 'maven'
group = 'org.example'
version = '1.0'
Run Code Online (Sandbox Code Playgroud)

如果我install在Blue上运行任务,它会创建一个JAR和一个POM并将它们放入我的~/.m2/repository,没问题.

我将Blue导入build.gradle到我的IDEA项目中,它为Blue创建了一个模块,同样没问题.

如果我现在将Green导入build.gradle到我的IDEA项目中,它会为Green创建一个模块,从存储库中获取Mavenized版本的Blue,创建一个相应的库,并将Blue库作为依赖项添加到Green模块.

但是,如果我现在在Blue中进行代码更改,那么代码更改不会在Green中获取.Green将继续使用Maven存储库中现在陈旧的副本.获得蓝色更改的唯一方法是重新安装Blue,至于重构Blue中的某些内容并将重构覆盖为Green中的用法,请忘掉它.问题.

如何让IDEA识别我的Gradle项目与其相应的IDEA模块之间的相互依赖性?


编辑添加:多模块实际上不是一个选项,因为所涉及的依赖项在多个应用程序项目之间共享(更不用说其他共享库项目),并且不能完全适合单个分层目录结构.


编辑添加:为了指向我最终想出的内容,请参阅此答案.当您想要同时处理项目及其依赖项时,仍然需要手动创建多模块项目,但它允许您或多或少地自由地交换源和二进制依赖项.

intellij-idea gradle

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