小编Zur*_*iar的帖子

在选项[Seq[T]]上使用映射

我有一个 Option[Seq[T]] ,它自然可能包含一个 Seq[T] 或实际上可能包含 None 。

我已被警告不要使用 .get 但如果选项为 None,如何使用 map 返回预期填充的 Seq[T] 或空 List() 。

我已经设法使用模式匹配来做到这一点,想知道是否有一种方法可以使用地图来实现相同的目标。谢谢!

val maybeProducts:Option[Seq[Product]] = {....}

val products:Seq[Product] = {
  maybeProducts match {
    case Some(ps) => ps
    case None     => List()
  }
}
Run Code Online (Sandbox Code Playgroud)

scala

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

在Scala中重新排序序列

我有一个具有以下数据顺序的序列:

A, B, C, D, E, F, G, H, I, J, K, L, M, N, O
Run Code Online (Sandbox Code Playgroud)

我需要对它进行排序,使它看起来像这样:

A, F, K, B, G, L, C, H, M, D, I, N, E, J, O
Run Code Online (Sandbox Code Playgroud)

它基本上将第一个序列分组为三个组,将它们堆叠在彼此的顶部,然后读取第一列,然后读取下一个序列以形成新序列.

ABCDE

FGHIJ

KLMNO
Run Code Online (Sandbox Code Playgroud)

我有一个概念性的理解,这可能涉及映射和压缩.我可以用命令式的方式在短时间内实现它,但我希望它作为一种功能风格.

感谢任何帮助/指针,谢谢!

scala

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

是否可以排除函数/名称空间:在Repl上重新加载?

我有两个函数在dosync中执行IO.因此,当我做一个

(require 'my.namespace :reload)
Run Code Online (Sandbox Code Playgroud)

我明白了:

CompilerException java.lang.IllegalStateException: I/O in transaction, compiling:
Run Code Online (Sandbox Code Playgroud)

有没有办法排除重新加载这两个函数或整个命名空间?

clojure

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

什么是Clojure REPL?它背后的技术是什么?

我知道Clojure Repl 了什么以及它是如何有用的,但是我没有关于它的内部结构如何工作的任何信息.它是在JVM中运行的程序吗?repl的内部如何工作?

clojure

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

在 Clojure 中将纪元时间转换为人类可读的日期

我有一个 Unix 纪元时间。如何将其转换为人类可读的日期字符串?我已经检查了 clj-time (https://github.com/clj-time/clj-time),但它似乎只能从可读到纪元。谢谢。

clojure

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

命名通过运行 docker-compose 文件构建的映像

如果我运行这个 docker-compose.yml:

version: '2'
services:
   kibana:
      build: ./kibana
Run Code Online (Sandbox Code Playgroud)

如何指定生成的图像的名称?目前它只是默认目录名称加服务。

docker-compose

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

关闭让我们加密

我正在安装 GitLab Omnibus。我想使用我自己的通配符证书。我已经将它们安装在 /etc/gitlab/ssl 中。当我单独重启 Nginx 时:

 sudo gitlab-ctl hup nginx 
Run Code Online (Sandbox Code Playgroud)

我的证书已被使用,我可以在浏览器中看到它们。但是,当我然后运行重新配置时:

 sudo gitlab-ctl reconfigure
Run Code Online (Sandbox Code Playgroud)

它会使用新的 Lets Encrypt 证书覆盖我的证书。我猜有一个选项可以完全关闭 Lets Encrypt。我在 /etc/gitlab/gitlab.rb 中找到了这个

 # letsencrypt['enable'] = nil
Run Code Online (Sandbox Code Playgroud)

但它被注释掉了 - 所以我假设它只是默认启用?即使在进行完整的“重新配置”时,我如何才能永远完全禁用 Lets Encrypt。谢谢

gitlab-omnibus

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

基本身份验证 - 哈希算法和标头注入 - 安全问题

我对基本身份验证的理解是,它将用户名:密码对存储在请求标头中,然后在服务器的后续响应中返回这些标头。

问题:

  1. 浏览器使用什么哈希算法来创建初始用户名:密码哈希并将其发送到服务器进行验证?

  2. 服务器上的每个请求是否应该通过验证运行用户名:密码对,或者仅查看授权标头中存在某些内容并接受它就足够了,因为它在那里,那么会话已经被验证了?

  3. (与 2 相关)是否可以在授权标头中插入任何旧字符串,从而欺骗服务器相信会话已通过身份验证?

我知道理论上我们不应该使用基本身份验证,但在某些情况下这是有意义的。

非常感谢

authentication http

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

更改集合中的所有关键字,从命名空间中删除点并用短划线替换

如何在地图矢量(也包含地图矢量)上映射函数以从关键字命名空间中删除所有点?

所以,给定:

[{:my.dotted/namespace "FOO"}
 {:my.nested/vec [{:another.dotted/namespace "BAR"
                   :and.another/one "FIZ"}]}]
Run Code Online (Sandbox Code Playgroud)

变为:

[{:my-dotted/namespace "FOO"}
 {:my-nested/vec [{:another-dotted/namespace "BAR"
                   :and-another/one "FIZ"}]}]
Run Code Online (Sandbox Code Playgroud)

clojure

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

使用prometheus作为日志聚合器

可以/应该使用prometheus作为日志聚合器吗?我们正在将应用程序部署到kubernetes集群中.所有容器都已登录到stdout/err,我们希望所有开发人员使用日志将其代码设置为stdout/err.然后,Fluentd将整理整个群集中的所有日志并发送给聚合器.我们已经考虑过使用Elasticsearch/kibana但是我们已经有Prometheus用于节点度量收集,所以如果我们能够流畅地将所有日志发送到Prometheus,它会将所有日志保存在一个地方.

那么,Prometheus可以/应该用作日志记录聚合器吗?它还需要轮询流畅的服务器吗?真的,能够使用Prometheus的警报功能会很棒,这样如果某个日志被创建(例如)就会将日志消息转储到松弛通道等.

感谢你对这一点的一些指示.

prometheus

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

在map函数中获取Seq/Vector的索引

我有一个Seq [文章]

我想映射它们,但不知何故可以访问序列中文章的位置.

所以,如果Seq包含(Article1,Article2,Article3,Article4),我想做这样的事情:

mySeq.map { article =>

   val index = article.getPositionInSeq  // <- obviously this is not defined

   //if index odd {}
   //if index even {}

}
Run Code Online (Sandbox Code Playgroud)

我知道Vector已被索引,并且在其上定义了一个索引函数,它给出了Vector的范围(在我的例子中,为0..3),但是如何才能得到序列中每篇文章的实际位置?谢谢

scala

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

如何“进入选项[String]”并使字符串小写?

我有一个 Option[String] 并且我想确保字符串是小写的。“进入”选项并进行转换而无需提取字符串然后将其放回选项的惯用方法是什么?

谢谢

scala

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

如果且仅当前后char不是'dot'时,如何在'点'上拆分字符串

给出以下字符串:

"foo.bar.baz"
Run Code Online (Sandbox Code Playgroud)

它可以使用Java String split轻松地在'dot'上拆分:

split("foo.bar.baz", "\.")
Run Code Online (Sandbox Code Playgroud)

但是,如果我想保留点,如果它后面紧跟另一个点,那么正则表达式是什么:

"foo.bar.baz..raz..daz.faz" ? "foo" "bar" "baz..raz..daz" "faz"
Run Code Online (Sandbox Code Playgroud)

java regex

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