当我运行这个简单的Ansible剧本时:
- name: EC2 Test Example
hosts: localhost
connection: local
gather_facts: False
tasks:
- name: EC2 Instance
ec2:
# Amazon EC2 key pair name
key_name: my-key-pair
# Amazon EC2 Security Group
group: my-security-group
instance_type: t2.micro
# Latest from https://wiki.debian.org/Cloud/AmazonEC2Image/Jessie
image: ami-221ea342
wait: yes
register: ec2
Run Code Online (Sandbox Code Playgroud)
我跑venv/bin/ansible-playbook -i localhost, playbook.yml:
PLAY [EC2 Test Example] ********************************************************
TASK [EC2 Instance] ************************************************************
fatal: [localhost]: FAILED! => {"changed": false, "failed": true, "msg": "boto required for this module"}
to retry, use: --limit @/Users/admin/temp/ansec2/playbook.retry
PLAY …Run Code Online (Sandbox Code Playgroud) 我在这里关注Jigsaw 快速入门.我成功运行了jlink给出的命令:
jlink --module-path $JAVA_HOME/jmods:mlib --add-modules com.greetings --output greetingsapp
Run Code Online (Sandbox Code Playgroud)
这会生成一个"运行时映像",它是一个展开的目录结构,如下所示:
~ tree -d greetingsapp
greetingsapp
??? bin
??? conf
? ??? security
? ??? policy
? ??? limited
? ??? unlimited
??? include
? ??? darwin
??? legal
? ??? java.base
??? lib
??? jli
??? security
??? server
Run Code Online (Sandbox Code Playgroud)
我该怎么办?我期待一个二进制可执行文件,而不是一个展开的目录树.
该bin目录有一个java和一个keytool.我没有看到任何.jar文件或.class文件通过捆绑的java可执行文件运行.
我想默认禁用标记为"慢"的某些自动化测试,但允许用户使用简单的命令行启用它们的执行.我想这是一个非常常见的用例.
鉴于此测试套件:
import org.scalatest.FunSuite
import org.scalatest.tagobjects.Slow
class DemoTestSuite extends FunSuite {
test("demo test tagged as slow", Slow) {
assert(1 + 1 === 2)
}
test("demo untagged test") {
assert(1 + 1 === 2)
}
}
Run Code Online (Sandbox Code Playgroud)
默认情况下,sbt test将运行标记和未标记的测试.
如果我将以下内容添加到build.sbt:
testOptions in Test += Tests.Argument("-l", "org.scalatest.tags.Slow")
Run Code Online (Sandbox Code Playgroud)
然后,我得到了我想要的默认行为,其中未标记的测试运行,并且慢速标记的测试将不会运行.
但是,当我想运行它们时,我无法弄清楚将运行慢速测试的命令行选项.我做了几次搜索并尝试了几个例子.我有点惊讶,因为这似乎是一种非常常见的情况.
Scala API是否应该理想地抛出异常或返回Try值?有关于此的官方指南吗?
def doSomethingMayThrow(): A = ???
def doSomethingWontThrow(): Try[A] = ???
Run Code Online (Sandbox Code Playgroud) 如何获取,设置或重置Kafka Connect连接器/任务/接收器的偏移量?
我可以使用/usr/bin/kafka-consumer-groups运行的工具kafka.admin.ConsumerGroupCommand来查看我所有常规Kafka消费者群体的偏移量.但是,Kafka Connect任务和组不会显示此工具.
同样,我可以使用zookeeper-shell连接到Zookeeper,我可以看到常规Kafka使用者组的zookeeper条目,但不能查看Kafka Connect接收器的条目.
我有一个Vagrantfile简化为:
Vagrant.configure(2) do |config|
config.vm.box = "ubuntu/xenial64"
config.vm.boot_timeout = 900
config.vm.define 'srv' do |srv|
srv.vm.provision 'ansible' do |ansible|
ansible.compatibility_mode = '2.0'
ansible.playbook = 'playbook.yml'
end
end
end
Run Code Online (Sandbox Code Playgroud)
当我运行时vagrant provision,在Gathering Facts阶段,我得到/usr/bin/python: not found因为Ubuntu 16.04默认情况下只安装了python3Python 2.x.python
我看到几篇关于此的帖子.似乎最近版本的Ansible支持使用Python 3,但它必须通过ansible_python_interpreter=/usr/bin/python3hosts文件或ansible命令行进行配置.有没有办法在我Vagrantfile或我的playbook.yml文件中指定此选项?我目前没有使用hosts文件,我没有ansible-playbook通过命令行运行,我通过Vagrant集成运行Ansible.
仅供参考,我使用的是Ansible 2.4.1.0和Vagrant 2.0.1,这是本文撰写时的最新版本.
我正在读"了解你一本哈斯克尔"一书.我很难理解这个应用程序的编码器代码:
(*) <$> (+3) <*> (*2) $ 2
Run Code Online (Sandbox Code Playgroud)
这归结为:(3 + 2)*(2*2)= 20
我不遵循如何.我可以将上面的内容扩展为不那么优雅但更明确的新手理解版本:
((fmap (*) (+3)) <*> (*2)) 2
Run Code Online (Sandbox Code Playgroud)
我理解<*>运营商的基本知识.这很有道理:
class (Functor f) => Applicative f where
pure :: a -> f a
(<*>) :: f (a -> b) -> f a -> f b
Run Code Online (Sandbox Code Playgroud)
但我不知道命令是如何工作的?有小费吗?
我想删除一个Kakfa使用者组,以便当应用程序创建使用者并订阅某个主题时,它可以从主题数据的开头开始.
这是使用当前最新的Confluent Platform 3.1.2使用Kafka 0.10.1.1的单节点开发vm.
我尝试了正常的语法:
sudo /usr/bin/kafka-consumer-groups --new-consumer --bootstrap-server localhost:9092 --delete --group my_consumer_group
Run Code Online (Sandbox Code Playgroud)
我收到错误:
Option [delete] is only valid with [zookeeper]. Note that there's no need to delete group metadata for the new consumer as the group is deleted when the last committed offset for that group expires.
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用zookeeper变体:
sudo /usr/bin/kafka-consumer-groups --zookeeper localhost:2181 --delete --group my_consumer_group
Run Code Online (Sandbox Code Playgroud)
我明白了:
Delete for group my_consumer_group failed because group does not exist.
Run Code Online (Sandbox Code Playgroud)
如果我使用"旧"消费者列出,我看不到我的消费者群体(或任何其他消费者群体)
sudo /usr/bin/kafka-consumer-groups --zookeeper localhost:2181 --list
Run Code Online (Sandbox Code Playgroud)
如果我使用"新"消费者列出,我可以看到我的消费者组,但显然我无法删除它:
sudo /usr/bin/kafka-consumer-groups --new-consumer --bootstrap-server localhost:9092 …Run Code Online (Sandbox Code Playgroud) 我无法让 Flask 测试客户端传递 cookie。这段代码曾经可以工作,我认为我的环境中的某些东西发生了变化,这打破了这一点。我最近创建了一个新的 Python 3.7 virtualenv 并安装了 Flask 1.0.2。
from flask import Flask, jsonify, request
app = Flask(__name__)
@app.route('/cookie_echo')
def cookie_echo():
return jsonify(request.cookies)
with app.test_client() as client:
response = client.get("/cookie_echo", headers={"Cookie": "abc=123; def=456"})
print(response.get_data(as_text=True))
Run Code Online (Sandbox Code Playgroud)
运行示例打印{},但我希望它打印{"abc":"123","def":"456"}。
如果我通过 运行我的应用程序flask run,使用 curl 发送标头工作:
$ curl -H "Cookie: abc=123; def=456" http://localhost:5000/cookie_echo
{"abc":"123","def":"456"}
Run Code Online (Sandbox Code Playgroud) 使用 Brian Goetz 的文章:https ://www.infoq.com/articles/data-oriented-programming-java/
sealed interface Opt<T> {
record Some<T>(T value) implements Opt<T> { }
record None<T>() implements Opt<T> { }
}
Run Code Online (Sandbox Code Playgroud)
这将按预期编译并运行。详尽的模式匹配工作原理:
Opt<String> optValue = doCalc(value);
switch (optValue) {
case Opt.Some<String> some -> System.out.printf("got string: %s%n", some.value());
case Opt.None<String> none -> System.out.printf("got none%n");
};
Run Code Online (Sandbox Code Playgroud)
我使用新的记录模式预览功能的这种变体打破了详尽的模式匹配,如果不添加默认的 case 语句,则无法编译:
Opt<String> optValue = doCalc(value);
switch (optValue) {
case Opt.Some<String>(String v) -> System.out.printf("got string: %s%n", v);
case Opt.None<String> none -> System.out.printf("got none%n");
};
Run Code Online (Sandbox Code Playgroud)
使用OpenJDK Runtime Environment (build 19-ea+32-2220),我得到编译错误:the …
ansible ×2
apache-kafka ×2
java ×2
python ×2
scala ×2
applicative ×1
boto ×1
flask ×1
functor ×1
haskell ×1
java-9 ×1
java-platform-module-system ×1
jlink ×1
sbt ×1
scalatest ×1
unit-testing ×1
vagrant ×1
vagrantfile ×1