我的目标是创建一个玩家可以设置建筑物的浏览器游戏.
每栋建筑都有几个模块(发动机,办公室,生产线......).每个模块将一直运行一个或多个动作,例如用成分Y,Z创建2OO'项目X'.
游戏服务器将使用erlang进行设置:OTP应用程序作为服务器本身,氮气作为Web前端.我需要持久化数据.我在考虑以下问题:
当某人或某物与建筑物相互作用,或者代表某条生产线的计时器结束时,主管会产生gen_server(如果尚未生成),它会从数据库中加载建筑物的状态,因此gen_server可以回答"添加"等消息这个模块','开始这个动作','将这个生产存储到仓库','死'等等(
但是当建筑物在X秒或分钟内没有收到任何消息时,他将终止(由于gen_server超时功能)并将其当前状态丢弃回数据库.
因此,因为它将是一个(软)实时游戏,所以必须非常快速地设置gen_server.我认为membase是数据库,因为它已知具有非常好的响应时间.
我的问题是:当一个gen服务器正在运行时,他的状态会填充一些内存,并且这个状态也存在于membase处理的内存中,因此状态在内存中使用了两倍.这是一个糟糕的设计吗?
在我的情况下,membase是处理持久性的好方法吗?将mnesia用作更好的选择,还是其他什么?
我担心mnesia 2 Go(或4?)表格大小限制,因为我目前不知道我的gen_servers的平均状态大小(在这个例子中的建筑物,但也包括玩家,生产线,等等)我可能有一天比1名球员:)
谢谢
我正在寻找在erlang中实现OpenID的良好(或至少工作).我已经看了几个不同的解决方案,但不是100%的解决方案.
在我的erlang Web应用程序中,有一个列表,其中包含要在网页上打印的整数.但是当脚本执行时,它打印出来,而不是实际的列表,
请查看此图像,显示unicode代码点1,1,2,3,5,8,空白,代码点15的字符
如何格式化以获得我想要的东西?目标列表为[1,1,2,3,5,8,13,15]
我刚刚在Chicago Boss(Erlang web framework)dir中尝试了"make"并且错误地失败了
{"init terminating in do_boot",{undef,[{make,all,[]},{init,start_it,1},{init,start_em,1}]}}
Run Code Online (Sandbox Code Playgroud)
怎么了?我该怎么办?
我的环境是Ubuntu 10.04,Erlang R13B03.