小编Ehu*_*Lev的帖子

如何在 docker-compose 关闭并稍后启动后保留 localstack S3 的数据

我是 localstack 的新手,我复制了 docker-compose 示例。我确保将数据路径安装到我的机器中,并且我确实在主机 tmp 文件夹中看到它,此外,我在调用 s3 写入命令时看到我的数据被附加,但是在我杀死 docker-compose 并从头开始启动它之后,我看不到上一会话的数据。我需要添加一个特殊标志来重新加载数据吗?

docker-compose 文件:

version: '3.0'

services:
  localstack:
    image: localstack/localstack:latest
    environment:
      - AWS_DEFAULT_REGION=us-east-1
      - EDGE_PORT=4566
      - SERVICES=sqs,sns,s3
      - DATA_DIR=/tmp/localstack/data
    ports:
       - '4566-4583:4566-4583'
    volumes:
      - "/tmp/localstack:/tmp/localstack"
      - "/var/run/docker.sock:/var/run/docker.sock"
Run Code Online (Sandbox Code Playgroud)

运行示例:

aws --endpoint-url=http://localhost:4566 s3 mb s3://bucket-test
aws --endpoint-url=http://localhost:4566 s3 cp myfile.png  s3://bucket-test

#Now this command will return the file
aws --endpoint-url=http://localhost:4566 s3 ls s3://bucket-test
# But after I will kill the docker and run docker-compose up again I will see nothing
Run Code Online (Sandbox Code Playgroud)

amazon-s3 docker docker-compose localstack

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

具有和不具有类型归属的最终val的Scala不一致行为

我正在使用scala 2.10.3,我注意到以下行为

object TestConstantScala {

    final val str1 : String = "foo:" + number1
    final val number1 : Int = 123
    final val number2 : Int = 123
    final val str2 : String = "foo:" + number2

    def main(args: Array[String]){
        System.out.println(str1)
        System.out.println(str2)
    }


}
Run Code Online (Sandbox Code Playgroud)

输出:

foo:0  
foo:123  
Run Code Online (Sandbox Code Playgroud)

而我的问题是为什么订单有所作为.另外,如果我省略了Int定义,它返回的行为正常

scala

5
推荐指数
1
解决办法
137
查看次数

Kafka流处理器线程安全吗?

我知道这个问题之前在这里被问过:Kafka Streaming Concurrency?

但这对我来说很奇怪。根据文档(或者也许我遗漏了一些东西),每个分区都有一个任务,意味着不同的处理器实例,并且每个任务都由不同的线程执行。但是当我测试它时,我发现不同的线程可以获得不同的处理器实例。因此,如果您想在处理器中保留任何内存状态(老式方式),则必须锁定?

示例代码:

public class SomeProcessor extends AbstractProcessor<String, JsonObject> {

   private final String ID = UUID.randomUUID().toString();

   @Override
   public void process(String key, JsonObject value) {
     System.out.println("Thread id: " + Thread.currentThread().getId() +" ID: " + ID);
Run Code Online (Sandbox Code Playgroud)

输出:

线程 ID:88 ID:26b11094-a094-404b-b610-88b38cc9d1ef

线程 ID:88 ID:c667e669-9023-494b-9345-236777e9dfda

线程 ID:88 ID:c667e669-9023-494b-9345-236777e9dfda

线程 ID:90 ID:0a43ecb0-26f2-440d-88e2-87e0c9cc4927

线程 ID:90 ID:c667e669-9023-494b-9345-236777e9dfda

线程 ID:90 ID:c667e669-9023-494b-9345-236777e9dfda

有没有办法强制每个实例线程?

java multithreading apache-kafka-streams

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

Scala 中的委托装饰(如 kotlin)

在 kotlin 中有“委托装饰”模式。有没有办法在 Scala 中以优雅的方式实现它。

这是一个 kotlin 代码示例:

interface Doo{
    fun a(): Unit
    fun b(): Unit
}

class Goo:Doo {
    override fun a() {
        println("goo a")
    }

    override fun b() {
        println("goo b")
    }
}

class Moo(doo: Doo):Doo by doo{
    override fun b() {
        println("mooooooo")
    }
}

fun main() {
    val m = Moo(Goo())
    m.a();m.b()

}
Run Code Online (Sandbox Code Playgroud)

scala decorator kotlin

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

Ruby Rspec Mock 相同实例在第一次和第二次调用中表现不同

我有一个看起来像这样的代码:

def call(some_id:)

          verify_before = @verify.call(some_id)
          return verify_before if verify_before.sucess?
          did_something = @processor.call(some_id)
          return did_something unless did_something.sucess?
          @verify.call(some_id)
end
Run Code Online (Sandbox Code Playgroud)

我想模拟@verify,所以第一次它会返回sucess?= false,第二次调用时它会返回true

最好的方法是什么?

ruby rspec

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

Circleci 过滤器分支不起作用

我是 Circleci 的新手,我试图限制我的构建仅在特定分支上工作,我尝试了下面的配置文件,但是当我包含过滤器部分时,我收到以下错误:

Your config file has errors and may not run correctly:
2 schema violations found
  required key [jobs] not found
  required key [version] not found
Run Code Online (Sandbox Code Playgroud)

带过滤器的配置:

version: 2
jobs:
  provisioning_spark_installation_script:
    working_directory: ~/build_data
    docker:
      - image: circleci/python:3.6.6-stretch
    steps:
      - setup_remote_docker:
          docker_layer_caching: true
      - checkout
      - run: &install_awscli
               name: Install AWS CLI
               command: |
                 sudo pip3 install --upgrade awscli
      - run: &login_to_ecr
               name: Login to ECR
               command: aws ecr get-login --region us-east-1 | sed 's/-e none//g' | bash
workflows:
  version: …
Run Code Online (Sandbox Code Playgroud)

circleci-workflows circleci-2.0

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

如何使用 OptionParser 将空字符串传递到命令行

我正在尝试编写一个脚本来获取一些参数,其中一些参数可能为空。

Ruby 的 OptionParser 似乎不允许这样做并抛出 (OptionParser::InvalidArgument)

代码:

require 'optparse'

options = {}
OptionParser.new do |opt|

  opt.on('--might_be_empty might_be_empty', String) { |o| options[:might_be_empty] = o }

end.parse!

puts "might_be_empty: #{options[:might_be_empty]}"
Run Code Online (Sandbox Code Playgroud)

快乐流:

ruby ./for_stack.rb --might_be_empty "some_real_data"
might_be_empty: some_real_data
Run Code Online (Sandbox Code Playgroud)

当值为空时:

ruby ./for_stack.rb --might_be_empty ""
./for_stack.rb:10:in `<main>': invalid argument: --might_be_empty  (OptionParser::InvalidArgument)
Run Code Online (Sandbox Code Playgroud)

我如何告诉 OptionParser 允许空字符串?

ruby

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