我想做一些需要效果的编程(谁不需要:-)。特别是像 scalaz Task 之类的东西来运行一些异步数据检索并产生类似 Future 的效果,该效果将在完成时处理结果。
我注意到 typelevel Cats 现在有Effect Monad但也有 typelevel eff Monad项目。两者都是为了在功能上处理效果。所以现在我可以选择在哪里投资我的时间,我很困惑。
或者我可以同时使用两者,例如在 eff FutureEffect 或 TaskEffect 中包装 cat.Effect。这甚至是个好主意吗?
谢谢
我可以从 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)
有任何想法吗?
谢谢卡尔
我使用服务帐户成功进行了身份验证,并且可以在我公司的 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?
干杯卡尔
我正在阅读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) 我喜欢对效果集合进行排序,例如将 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?
有没有人这样做过或知道为什么不允许这样做?
谢谢。