在lambda中,我用来定期检查服务,我检查服务器的结果值,并希望将发布到AWS Cloudwatch的值作为度量标准来形成线图.
我不能为我的生活想象我们如何做到这一点.围绕AWS文档进行2小时的梳理无处可去.这甚至可能吗?
要明确这不是关于lambda的度量标准,它是从lamdba发布的度量标准.
码:
'use strict';
const https = require('http');
exports.handler = (event, context, callback) => {
const now = new Date()
const yesterday = new Date(now.toISOString())
yesterday.setTime(now.getTime() - (1000 * 60 * 60 * 24)); // 1 day ago)
const params = [
['limit',0],
['pageStart',0],
['startsOnOrAfter',encodeURIComponent(yesterday.toISOString())],
['startsOnOrBefore',encodeURIComponent(now.toISOString())]
].map(kv => `${kv[0]}=${kv[1]}&`).reduce((s1,s2) => s1.concat(s2))
var uri = `http://service/query?${params}`
const req = https.request(uri, (res) => {
let body = '';
res.setEncoding('utf8');
res.on('data', (chunk) => body += chunk);
res.on('end', …
Run Code Online (Sandbox Code Playgroud) 使用Spring Async与只返回CompletableFuture
自己的优势是什么?
这是我的困境:
我有一个dto类,用于从/向XML来回编组.
这是诀窍:由于我们的项目处理的dto类的数量是具有复数outter标记的集合,我决定创建一个委托集合,允许我从其中一个类中轻松地将它们转换为Collection并获取随之而来的便利(迭代,添加等).
在我们的项目中,我们有编组测试来清除注释错误等.以下是我的故障代码.
问题:根据封送程序,如果我扩展此QuickCollection,我会收到以下错误.当使用CXF将对象解组为xml作为对Web服务请求的响应时,它将失败.确切错误:com.sun.istack.SAXException2:无法封装类型"java.lang.String"作为元素,因为它缺少@XmlRootElement注释
当它在测试中用JAXB进行编组/解组时它很好.当使用相同的QuickCollection来编组第三方使用spring RestOperations的结果并且工作正常
心灵螺丝:当我删除继承并将集合作为私人成员管理时,一切正常!
这对我来说不是一种感觉,因为我在两种情况下都会返回确切的数据类型.
以下是所有相关代码.
这是Inherited委托类.
public class QuickCollection<T> implements Collection<T> {
// to be set if needed after instantiation. To behave like a normal collection, we set it to something safe
protected Collection<T> delegate = Collections.emptySet();
public QuickCollection() {
}
public QuickCollection(Collection<T> delegate) {
this.delegate = delegate;
}
@Override
public int size() {
return delegate.size();
}
@Override
public boolean isEmpty() {
return delegate.isEmpty();
}
@Override
public boolean contains(Object o) {
return delegate.contains(o);
}
@Override …
Run Code Online (Sandbox Code Playgroud) 我正处于开发一些 REST API 的十字路口,我发现没有关于这个主题的真正讨论,更不用说对两者的坚定辩护了。
据我了解,使用 REST,您可以将其/<resource>/<action>
作为 URL
因此,要禁用用户,您将拥有:
PUT /user/disable
Run Code Online (Sandbox Code Playgroud)
似乎有道理。但是,我们正在讨论更基本的方法:
应该是:
POST /user (creates a user *implicitly*)
POST /user/create (creates a user *explicitly*)
DELETE /user/:id
DELETE /user/:id/delete
Run Code Online (Sandbox Code Playgroud)
第一个似乎被认为是“标准”,第二个在意图上显然要明确得多,并且与 /user/disable 等方法一致
也许这场辩论在其他地方已经很激烈了,但我还没有看到。如果您对此有“宗教信仰”,那么现在是您发表意见的机会
不确定这是否可能; 我承认我并不像我希望的那样擅长仿制药.
基本上,我想创建一个类 - >函数的映射,其中用于键的类是函数输入的类,就像这样(不合法的语法):
public static Map<Class<T>,Function<T,Expression>> STUFF = new HashMap<>();
{
STUFF.put(List.class, ListExpression::new);
STUFF.put(String.class, StringExpression::new);// this constructor must take string
}
Run Code Online (Sandbox Code Playgroud)
如果我这样做:
Function<String,Expression> e = STUFF.get(o.getClass());
Expression ex = e.apply(o);
Run Code Online (Sandbox Code Playgroud)
它适合我的类型.
希望有人可以告诉我我错过了什么?这是一个使用webrick的ruby应用程序,我试图将应用程序容器化.在Mac OSX 10.12.3 Sierra上运行.这是我的Dockerfile
FROM ruby:2.4.0-alpine
RUN apk add --no-cache gcc musl-dev libstdc++ g++ make
RUN gem install jekyll bundler redcarpet
RUN mkdir -p /usr/app/jekyll
COPY . /usr/app/jekyll
WORKDIR /usr/app/jekyll
EXPOSE 4000:4000
CMD ["jekyll", "serve"]
Run Code Online (Sandbox Code Playgroud)
以下是图像的构建方式
docker build -t chb0docker/cheat .
Run Code Online (Sandbox Code Playgroud)
如果我直接在主机上运行服务,它运行正常
Violas-MacBook-Pro:progfun-wiki cbongiorno$ jekyll serve &
[1] 49286
Violas-MacBook-Pro:progfun-wiki cbongiorno$ Configuration file: /Users/cbongiorno/development/progfun-wiki/_config.yml
Configuration file: /Users/cbongiorno/development/progfun-wiki/_config.yml
Source: /Users/cbongiorno/development/progfun-wiki
Destination: /Users/cbongiorno/development/progfun-wiki/_site
Incremental build: disabled. Enable with --incremental
Generating...
done in 0.409 seconds.
Auto-regeneration: enabled for '/Users/cbongiorno/development/progfun-wiki'
Configuration file: /Users/cbongiorno/development/progfun-wiki/_config.yml
Server …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Chocolatey 将软件包安装到 Windows 容器中。我实际上只是想更改其中一个包,重建并推送,但现在突然间它不起作用了。当我在主机上测试它时(运行与容器相同的命令),它工作得很好。自上次构建以来,该容器安装存在某种问题。我只能怀疑基本图像已更改。但是,也许不是
在主机上:
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
Getting latest version of the Chocolatey package for download.
Getting Chocolatey from https://chocolatey.org/api/v2/package/chocolatey/0.10.15.
Downloading 7-Zip commandline tool prior to extraction.
Extracting C:\Users\ADMINI~1\AppData\Local\Temp\chocolatey\chocInstall\chocolatey.zip to C:\Users\ADMINI~1\AppData\Local\Temp\chocolatey\chocInstall...
Installing chocolatey on this machine
Creating ChocolateyInstall as an environment variable (targeting 'Machine')
Setting ChocolateyInstall to 'C:\ProgramData\chocolatey'
WARNING: It's very likely you will need to close and reopen …
Run Code Online (Sandbox Code Playgroud) 我们使用 Flyway 1 个月以来没有遇到任何问题。
但是,今天我尝试添加一个非常长(超过1500行)的新迁移脚本,并遇到了一个奇怪的MySQL语法错误。
我在 MySQL Workbench 中打开这个脚本,没有报告语法错误,脚本执行没有错误。
这个名为“V10012__insert-acceptance-testing-event-moment-passed.sql”的脚本包含以下说明。
- 插入语句1
- 插入语句2
- ...
- INSERT 语句最后 - 1
- 最后插入语句
MySQL报告的错误如下:
[错误] 由 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException 引起:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在第 232 行的 'INSERT INTO video_feedback (id, youtube_video_id) VALUES ( 1102, /* id */' at line 232 [ERROR] com.googlecode.flyway.core. migration.MigrationException:迁移到版本 10012 失败!请恢复备份并回滚数据库和代码!
该错误是在“INSERT statements LAST”语句上报告的。
但是,如果我在脚本中反转“INSERT 语句 LAST”和“INSERT 语句 LAST - 1”,则会在“INSERT 语句 LAST - 1”(现在位于文件末尾)上报告错误。所以我在“INSERT statements LAST”中没有错误,因为 Flyway 成功执行了它。
另外,如果现在我从脚本“V10012_ insert-acceptance-testing-event-moment-passed.sql”中完全删除“INSERT statements LAST”语句,并将该语句放入名为“V10013 _test.sql”的新文件中,flyway 会执行我所有的迁移脚本都成功了!
那么,我最初的“V10012__insert-acceptance-testing-event-moment-passed.sql”脚本中可能存在什么问题?
是否存在脚本大小限制?
以下是有关我的环境的有用信息:
- 我的脚本使用了大量 /* */ 注释
- Flyway …
我正在努力学习Kotlin,代表们既有趣又令人困惑.我有一种情况,在java类中,我将采用构造函数arg,创建一个Future(ID表示另一个系统中的资源)并将Future存储为instange变量.然后"getXXX"会调用Future.get()
这是一个示例java类
public class Example {
private Future<Foo> foo;
public Example(String fooId) {
this.foo = supplyAsync(() -> httpClient.get(fooId));
}
public Foo getFoo() {
return foo.get();
}
}
Run Code Online (Sandbox Code Playgroud)
我没有提供Kotlin示例,因为我根本不确定如何构建它.
当我尝试使用SPeL表达式来注入一个值时,它可以在Java中运行,但不能在Kotlin中运行.编译说
错误:(13,25)Kotlin:注释参数必须是编译时常量
码:
@SpringBootApplication
open class DeDup(@Value("#{new java.io.File('${roots}')}") val roots: Set<File>,
@Value("algo") val hashAlgo: String,
@Value("types")val fileTypes: List<String>) {
}
fun main(args: Array<String>) {
SpringApplication.run(DeDup::class.java, *args)
}
Run Code Online (Sandbox Code Playgroud)
嗯...新闻快报Kotlin编译器:它是一个常数!编译器清楚地知道它是一个SPeL表达式并且不喜欢它.
我的问题:
为什么Kotlin不喜欢SPeL?这是施工注塑(或是它)并且不违反不变性.
这是编译器错误吗?这条消息是无可辩驳的错误.