小编Rob*_*een的帖子

优雅地重启整个Akka演员系统

我怎样才能优雅地重启整个演员系统?换句话说,用一个gracefulStop(或至少是重要的那些)来阻止系统中的所有演员!

实际上,我希望在测试期间重新启动应用程序,而不必每次都启动新的单独JVM.

我正在使用Akka 2.0.5.

akka

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

如何使用Akka在SIGTERM上进行自定义关闭?

默认情况下,Akka在收到演员系统时会关闭演员系统SIGTERM.在关闭akka系统之前,如何覆盖此行为以执行自定义关闭逻辑?我已经在actor中实现了这个逻辑,使用了特殊的优雅停止消息 - 我只需要在SIGTERM收到时调用该逻辑.

或者我是否必须使用其他方式关闭应用程序?这也是一种选择.

akka

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

Haskell:通用的IORef,MVar?

我做了以下函数,该函数特定于IO monad:

memoIO :: MonadIO m => m a -> IO (m a)
memoIO action = do
  ref <- newMVar Nothing
  return $ do
    x <- maybe action return =<< liftIO (takeMVar ref)
    liftIO . putMVar ref $ Just x
    return x
Run Code Online (Sandbox Code Playgroud)

用法示例:

main :: IO ()
main = do
  p <- memoIO $ putStrLn "hello"
  p
  p
Run Code Online (Sandbox Code Playgroud)

打印" hello"一次.

我想(一个小小的烦恼)让它尽可能多地工作(不仅仅是IO).

我在hackage上发现了stateref,我的代码看起来像这样:

{-# LANGUAGE FlexibleContexts, FlexibleInstances, MultiParamTypeClasses, Rank2Types, UndecidableInstances #-}

import Data.MRef

class (NewMRef r m a, DefaultMRef r …
Run Code Online (Sandbox Code Playgroud)

haskell types ioref

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

如何保护解密密钥免受反编译?

我是初学java程序员.我正在开发一个解密一些数据的应用程序.解密密钥被硬编码到软件中,因此可以通过分析字节码来看到.

我知道逆向工程不能完全防止,所以我要做的是尽可能地使这个过程变得更加困难.

我的想法不是直接将密钥放入我的代码中,而是让它经历某种转换.例如,我可以写 -

private static final byte[] HC256A = Hex
            .decode("8589075b0df3f6d82fc0c5425179b6a6"
                    + "3465f053f2891f808b24744e18480b72"
                    + "ec2792cdbf4dcfeb7769bf8dfa14aee4"
                    + "7b4c50e8eaf3a9c8f506016c81697e32");
Run Code Online (Sandbox Code Playgroud)

这样,看字节码的人无法立即读取它.但是必须遵循逻辑并对其应用转换,这在字节级别上不会那么容易.

那你觉得怎么样?这有用吗?除十六进制解码之外,最好的转换是什么?是否有其他方法可用于保护硬编码的解密密钥?

谢谢你的所有建议.

java security encryption drm reverse-engineering

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

组合类中的多态lift-json反序列化

我试图使用Lift-Json自动将json对象反序列化为scala类,其中一个坐标类用于存储GeoJson信息.

case class Request(name:String, geometry:Geometry)

sealed abstract class Geometry

case class Point(coordinates:(Double,Double)) extends Geometry
case class LineString(coordinates:List[Point]) extends Geometry
case class Polygon(coordinates:List[LineString]) extends Geometry
Run Code Online (Sandbox Code Playgroud)

我想反序列化一个像这样的json字符串:

{
name:"test",
geometry:{
   "type": "LineString",
   "coordinates": [ [100.0, 0.0], [101.0, 1.0] ]
  }
}
Run Code Online (Sandbox Code Playgroud)

在Geometry字段中使用正确的LineString运行时类进入Request case类.我想我应该使用TypeHint但是怎么样?这是正确的方法还是应该创建三个不同的Request(RequestPoint,RequestLineString和RequestPolygon)?这将是反序列化的Scala代码:

val json = parse(message)
json.extract[Request]
Run Code Online (Sandbox Code Playgroud)

polymorphism json scala deserialization lift-json

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

C++ - 就像Java中的友元类机制一样

你知道我怎样才能让一个对象只在一个特殊的类中变化?在这个例子中,我希望对象PrivateObject在类中只能变换(可递增)Box,而不是其他地方.有没有办法实现这个目标?

public class Box { 

    private PrivateObject prv;

    public void setPrivateObject(PrivateObject p){
        prv = p;
    }

    public void changeValue(){
        prv.increment();

    }

}


public class PrivateObject {
    private value;
    public increment(){
        value++;
    }

}

PrivateObject priv = new PrivateObject ();
Box box = new Box();
box.setPPrivateObject(priv);
box.changevalue();
priv.increment(); // I don't want it to be changeable outside the Box class!
Run Code Online (Sandbox Code Playgroud)

在C++中,我会将所有PrivateObject属性和方法Box设为私有,并将该类声明为该类的朋友PrivateObject.

java friend

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

为什么无法绕过3G网络NAT?

我正在开发一个p2p聊天应用程序,它可以在DSL两个不同的NAT上正常工作,但是当涉及到3G USB互联网连接时,它就失败了.

我发现它不可能绕过3g网络的NAT,而Skype和种子等已知的p2p应用也无法绕过3g网络,每当遇到这些问题时,通过中央服务器发送数据.

我想知道3g网络的架构是什么.我听说他们没有私有IP,端口对只有公共IP,端口可用,一个公共端口可以分配给很多设备,我是否正确?如果是这样,服务器如何将数据发送到3g网络?

networking nat 3g

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

将最近的提交移至不同的现有分支

我刚刚对功能分支进行了一些更改,但我意识到我在错误的分支上。

如何获取我所做的最后一次提交,并将其移动到另一个已经存在的分支?我还没有推任何东西。

我见过一些类似的问题,但它们都涉及创建一个新分支,而且他们所做的所有硬头重置都令人恐惧。

git branch

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

使用Postman使用Cognito您的用户池用户签署AWS请求

我正在尝试向AWS API Gateway发送经过身份验证的请求.客户端将针对Cognito您的用户池进行身份验证,然后从与用户池中已登录用户对应的关联Cognito Identity Pool中获取令牌.我试图使用Postman模拟这样的请求.

这篇文章建议该命令aws cognito-identity get-credentials-for-identity可用于获取Postman签署请求所需的AccessKeyId和SecretKey.但是,当我尝试使用subCognito User Pool控制台中的用户属性运行它时:

$ aws cognito-identity get-credentials-for-identity --identity-id aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee

An error occurred (ValidationException) when calling the GetCredentialsForIdentity operation: 1 validation error detected: Value 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee' at 'identityId' failed to satisfy constraint: Member must satisfy regular expression pattern: [\w-]+:[0-9a-f-]+

$ aws cognito-identity get-credentials-for-identity --identity-id us-east-1:aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee

An error occurred (ResourceNotFoundException) when calling the GetCredentialsForIdentity operation: Identity 'us-east-1:aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee' not found.
Run Code Online (Sandbox Code Playgroud)

如果我尝试使用AWS控制台中显示的关联标识池中的标识ID(我选择了具有2个"链接登录"的标识),则会发生同样的情况.

amazon-web-services amazon-iam postman amazon-cognito aws-api-gateway

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

未知用户"客户端"是什么意思?

当我使用gcloud sdk在我的本地shell上运行一个简单的命令时.

$ kubectl get pod
Run Code Online (Sandbox Code Playgroud)

我收到这样的错误:

来自服务器的错误(禁止):禁止使用pod:用户"client"无法列出群集范围内的pod:未知用户"client"

相同的命令在GCP云shell上运行正常,并且输出

$ gcloud auth list
Run Code Online (Sandbox Code Playgroud)

如预期的那样:

Credentialed帐户
ACTIVE ACCOUNT
* foo@bar.com

我也尝试创建clusterrolebinding,但得到类似的错误.

kubernetes google-kubernetes-engine

6
推荐指数
3
解决办法
2903
查看次数