到目前为止,我们一直在开发的REST API应用程序使用了一个简单的api密钥作为URL参数传入,但我们刚刚切换到使用OAuth2 Client Credentials Flow.
这是一个简单的工作流程,客户端通过基本身份验证发布密钥和密钥,并接收到期访问令牌.不幸的是,虽然简单,但是在开发期间或者我们的支持团队进行安装完整性检查时,在浏览器中对API进行快速测试变得相当困难.
我已经尝试过针对Chrome的OAuth 2.0 Playground和REST控制台,但这两者似乎只支持更复杂的授权代码授予工作流程.是否有支持Client Credentials流的基于浏览器的工具?
从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) 我正在为视频写一些帧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
.
我有一个混合编码的源代码树,我在上面收到一些源文件的警告.我成功地将这些文件的编码设置为ISO 8859-1,并且在使IDEA的缓存无效后,它们现在可以在编辑器中正确显示.但是,当我编译时,我仍然收到错误消息.
生产构建使用ant并且它不是问题,但它意味着我无法在IDE中"制造".有没有办法让IDEA正确编译这些,或者失败,将错误降低到警告?
我看到了一些完全相同的问题的答案:如何在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.我无法理解在这种简单的转换中究竟发生了什么.任何人都可以闪光吗?
谢谢
我有一个类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
不会工作.我可以一遍又一遍地为每个子类重写这个方法,但看起来这应该是可能的,不用这样做.建议?
我正在使用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')
,并不知道如何解决此问题.
因此,RESTful API的一般模式是返回一个带有嵌入式链接的对象,您可以使用它来检索相关对象.但有时为方便起见,您希望立即撤回对象图的整个块.
例如,假设您有一个包含客户,订单和退货的商店应用程序.您希望一起显示客户ID 12345的个人信息,所有订单和所有退货.(可能有充分理由不总是退回订单并返回客户个人信息.)
纯粹的RESTful方式是这样的:
GET /
GET /customers/12345
(基于链接模板/
)
GET /orders?customerId=12345
(来自/customers/12345
回复)
GET /returns?customerId=12345
(来自/customers/12345
回复)
但是,一旦你拥有了customers
URI,它就能很好地将它全部拉回到一个查询中.这种便利性查询是否有最佳实践,您希望转换部分或全部链接而不是发出多个请求?我想的是:
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)
这是一个标准或半标准的做法,还是一个博主组成的东西?
我有两个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模块之间的相互依赖性?
编辑添加:多模块实际上不是一个选项,因为所涉及的依赖项在多个应用程序项目之间共享(更不用说其他共享库项目),并且不能完全适合单个分层目录结构.
编辑添加:为了指向我最终想出的内容,请参阅此答案.当您想要同时处理项目及其依赖项时,仍然需要手动创建多模块项目,但它允许您或多或少地自由地交换源和二进制依赖项.
gradle ×2
java ×2
rest ×2
ruby ×2
arrays ×1
avfoundation ×1
browser ×1
cmtime ×1
control-flow ×1
embedding ×1
encoding ×1
go ×1
hypermedia ×1
int ×1
ios ×1
iteration ×1
java-9 ×1
java-module ×1
javac ×1
mysql ×1
oauth-2.0 ×1
objective-c ×1
oop ×1
rspec ×1
swift ×1