小编Kar*_*arl的帖子

Typelevel Cats.Effect vs Typlevel eff。哪个,为什么?

我想做一些需要效果的编程(谁不需要:-)。特别是像 scalaz Task 之类的东西来运行一些异步数据检索并产生类似 Future 的效果,该效果将在完成时处理结果。

我注意到 typelevel Cats 现在有Effect Monad但也有 typelevel eff Monad项目。两者都是为了在功能上处理效果。所以现在我可以选择在哪里投资我的时间,我很困惑。

  • 我应该使用哪个?
  • 每个图书馆是否有一些潜在的精神或意图可以指导我的选择?
  • 每个图书馆的用途是什么?
  • 它解决什么问题?

或者我可以同时使用两者,例如在 eff FutureEffect 或 TaskEffect 中包装 cat.Effect。这甚至是个好主意吗?

谢谢

functional-programming scala scala-cats

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

如何对 kubernetes 中的 Pod Eviction 或 Failed && Evicted pod 发出警报

我可以从 pod 描述中看到,我的 pod 由于内存压力而被“驱逐”而“失败”。但我如何使用普罗米修斯警报规则或其他方式测试太多“失败&&驱逐”pod?

我安装了 Prometheus Operator,我可以看到失败 Pod 的指标,但看不到失败和驱逐的指标

kubectl 描述 pod 给出:

Name:         besteffort-evictme-001
Namespace:    skyfii
Priority:     0
Node:         ip-172-17-2-169.ap-southeast-2.compute.internal/
Start Time:   Fri, 24 Sep 2021 15:28:53 +1000
Labels:       <none>
Annotations:  kubernetes.io/psp: eks.privileged
Status:       Failed
Reason:       Evicted
Message:      The node was low on resource: memory. Container termination-demo-container was using 17165108Ki, which exceeds its request of 0. 
IP:           
IPs:          <none>
Containers:

Run Code Online (Sandbox Code Playgroud)

普罗米修斯规则:

kube_pod_status_phase{phase="Failed"} > 0
Run Code Online (Sandbox Code Playgroud)

显示失败的 pod

kube_pod_status_phase{endpoint="http",instance="172.17.3.141:8080",job="kube-state-metrics",namespace="skyfii",phase="Failed",pod="besteffort-evictme-001",service="prometheus-kube-state-metrics"}
Run Code Online (Sandbox Code Playgroud)

但没有显示任何内容

kube_pod_container_status_terminated_reason{reason="Evicted"} > 0
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

谢谢卡尔

kubernetes prometheus-operator

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

Google Admin SDK:目录用户:如何使用 Java 客户端获取用户电话号码?

我使用服务帐户成功进行了身份验证,并且可以在我公司的 Google 目录中列出用户。

但是我想列出用户的电话号码。

我使用了java 快速入门示例代码,它可以工作。但是,它仅打印用户的主要电子邮件地址。

我想使用 User.getPhones() 方法来获取每个用户的电话号码列表/数组,但 Java API 返回“对象”,请参阅Google java API

我知道 Google 请求的真正结果是 JSON,并且用户有一个具有“类型”和“值”的电话数组,例如 work: num ( Admin SDK User Representation )

我知道谷歌 Java 客户端正在使用谷歌特定的 Jackson2 实现,

com.google.api.client.json.jackson2.JacksonFactory
Run Code Online (Sandbox Code Playgroud)

我如何影响它以生成 UserPhone 对象而不仅仅是 java.lang.Object?

干杯卡尔

jackson google-api-java-client google-admin-sdk

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

如何对没有类型别名的Scala猫进行排序(参见牧羊猫)

我正在阅读Herding Cats

排序列表中的Traverse页面上的最后一个示例对我来说都失败了.

在示例中,他们这样做: -

scala> List(Right(1): Either[String, Int]).sequence
res5: Either[String,List[Int]] = Right(List(1))
scala> List(Right(1): Either[String, Int], Left("boom"): Either[String, Int]).sequence
res6: Either[String,List[Int]] = Left(boom)
Run Code Online (Sandbox Code Playgroud)

但是当我尝试时,我收到以下错误: -

scala> import cats._, cats.data._, cats.implicits._
scala> val les = List(Right(3):Either[String,Int], Right(2):Either[String,Int])
scala> les.sequence
<console>:37: error: Cannot prove that Either[String,Int] <:< G[A].
les.sequence
   ^
Run Code Online (Sandbox Code Playgroud)

但是当我用类型别名帮助编译器来修复Left类型时,一切都很好: -

scala> type XorStr[X] = Either[String,X]
defined type alias XorStr

scala> val les = List(Right(3):XorStr[Int], Right(2):XorStr[Int])
les: List[XorStr[Int]] = List(Right(3), Right(2))

scala> les.sequence
res0: XorStr[List[Int]] = Right(List(3, …
Run Code Online (Sandbox Code Playgroud)

scala traversal scala-cats

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

cats.effect.IO 可以排序吗?即它是否在 Traverse 类型类中?

我喜欢对效果集合进行排序,例如将 a 变成List[IO[Int]]a ,IO[List[Int]]如下所示:-

scala> import cats._, cats.data._, cats.implicits._, cats.effect._

scala> val efs : List[IO[Int]] = List(IO(1),IO(2))
efs: List[cats.effect.IO[Int]] = List(IO$647684131, IO$2021068036)

scala> var efOfInts = efs.sequence
efOfInts: cats.effect.IO[List[Int]] = <function1>

scala> efOfInts.unsafeRunSync
res2: List[Int] = List(1, 2)
Run Code Online (Sandbox Code Playgroud)

但有可能走另一条路吗?例如将 aIO[List[Int]]变成List[IO[Int]]?

我似乎无法找到要添加sequence到 IO 上的隐含内容,所以现在我想知道是否无法遍历或序列 IO?

有没有人这样做过或知道为什么不允许这样做?

谢谢。

scala scala-cats

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