小编cla*_*lay的帖子

Ansible ec2:"这个模块需要boto"

当我运行这个简单的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)

boto ansible

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

如何运行JDK 9 jlink生成的图像?

我在这里关注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可执行文件运行.

java jlink java-platform-module-system java-9

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

如何默认禁用"Slow"标记的Scalatests,允许执行选项?

我想默认禁用标记为"慢"的某些自动化测试,但允许用户使用简单的命令行启用它们的执行.我想这是一个非常常见的用例.

鉴于此测试套件:

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)

然后,我得到了我想要的默认行为,其中未标记的测试运行,并且慢速标记的测试将不会运行.

但是,当我想运行它们时,我无法弄清楚将运行慢速测试的命令行选项.我做了几次搜索并尝试了几个例子.我有点惊讶,因为这似乎是一种非常常见的情况.

unit-testing scala sbt scalatest

12
推荐指数
1
解决办法
687
查看次数

Scala:投掷错误与返回尝试?

Scala API是否应该理想地抛出异常或返回Try值?有关于此的官方指南吗?

def doSomethingMayThrow(): A = ???
def doSomethingWontThrow(): Try[A] = ???
Run Code Online (Sandbox Code Playgroud)

scala

11
推荐指数
1
解决办法
7730
查看次数

Kafka Connect Offsets.get/set方法?

如何获取,设置或重置Kafka Connect连接器/任务/接收器的偏移量?

我可以使用/usr/bin/kafka-consumer-groups运行的工具kafka.admin.ConsumerGroupCommand来查看我所有常规Kafka消费者群体的偏移量.但是,Kafka Connect任务和组不会显示此工具.

同样,我可以使用zookeeper-shell连接到Zookeeper,我可以看到常规Kafka使用者组的zookeeper条目,但不能查看Kafka Connect接收器的条目.

apache-kafka

11
推荐指数
2
解决办法
7694
查看次数

Vagrant + Ansible + Python3

我有一个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,这是本文撰写时的最新版本.

python vagrant ansible vagrantfile

11
推荐指数
1
解决办法
2597
查看次数

简单的应用函数示例

我正在读"了解你一本哈斯克尔"一书.我很难理解这个应用程序的编码器代码:

(*) <$> (+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)

但我不知道命令是如何工作的?有小费吗?

haskell functor applicative

10
推荐指数
1
解决办法
551
查看次数

如何删除Kafka Consumer Group以重置偏移?

我想删除一个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)

apache-kafka apache-zookeeper

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

使用 Flask 测试客户端请求传递 cookie 标头

我无法让 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)

python flask

10
推荐指数
1
解决办法
2048
查看次数

Java 19 模式匹配编译错误:“switch 语句未涵盖所有可能的输入值”

使用 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 …

java pattern-matching switch-statement

10
推荐指数
2
解决办法
1185
查看次数