我是ejabberd的全新人物.我已经下载了windows和linux(Ubuntu)的安装.在网络的某个地方,我看过如何安装和设置它的演示,但安装被配置为"演示".我有pidgin XMPP客户端,现在我在设置ejabberd时遇到了问题.
另一个问题是我试图在后端使用Nitrogen的彗星池和erlang ETS表开发聊天系统(由于现在嵌入在ets表中的故障转移机制),即
ets:give_away/3 [it gives my chat engines fault tolerance, thanks to the guys
who maintain the virtual machine who saw how useful this is]
Please point me in the right direction to get ejabberd up and running.
On the processOne Website and the ejabberd documentation i have still
failed to start it well. Please help
我正在与远程服务器进行交互.此远程服务器位于不同的时区.部分身份验证要求我生成:
"The number of seconds since January 1, 1970 00:00:00 GMT The server will only accept requests where the timestamp is within 600s of the current time"
的文件erlang:now().揭示它可以让我the elapsed time since 00:00 GMT, January 1, 1970 (zero hour)
on the assumption that the underlying OS supports this.它返回一个size=3元组{MegaSecs, Secs, MicroSecs}.我尝试使用,element(2,erlang:now())但远程服务器发送给我这条消息:
Timestamp expired: Given timestamp (1970-01-07T14:44:42Z) not within 600s of server time (2012-01-26T09:51:26Z)自1970年1月1日起,这三个参数中的哪一个是所需的秒数?我做的不对吗?是不是我必须用做
universal time在calendar:universal_time() ? seconds_1970()-> …
Erlang中的进程将调用link/1或spawn_link创建与另一个进程的链接.在我最近的一个应用程序中,我很想知道一个进程是否可以在给定的实例中知道它与其链接的其他进程的数量.这可能吗 ?他们是BIF吗?
然后,当链接进程死亡时,我想如果可以知道链接进程的数量,那么这个数字将由运行时系统自动递减.这种机制在处理Parent-ChildErlang并发程序中的关系时是理想的,即使是在不涉及的简单程序中也是如此supervisors.
那么,Erlang进程是否有out-of-the-box可能通过BIF 知道链接到它的进程数,这样每当链接进程死掉时,这个值会自动递减under-the-hood:)?
要稍微扩展一下这个问题,可以考虑一个gen_server,它将处理数千条消息handle_info.在这一部分中,它的工作就是dispatch子进程在它进入时立即处理任务.这样做的目的是确保server loop返回立即接收下一个请求.现在,子进程异步处理任务,并在它死亡之前将回复发送回请求者.在继续之前,请参阅此问题及其答案.
现在,如果,对于gen_server产生的每个子进程,都会创建一个链接,并且我想将此链接用作计数器.我知道,我知道,每个人都会像"为什么不使用gen_server State,携带说,一个计数器,然后相应地增加或减少它?":) gen_server中的某个地方,我有:
handle_info({Sender,Task},State)->
spawn_link(?MODULE,child,[Sender,Task]),
%% At this point, the number of links to the gen_server is incremented
%% by the run-time system
{noreply,State};
handle_info( _ ,State) -> {noreply,State}.
Run Code Online (Sandbox Code Playgroud)
孩子继续这样做:
child(Sender,Task)->
Result = (catch execute_task(Task)),
Sender ! Result,
ok. %% At this point the child process exits,
%% and i expect the …Run Code Online (Sandbox Code Playgroud) 我们正在构建涉及的Web应用程序
Yaws, Nitrogen and Mnesia
现在系统的一部分需要键值存储,并发现如果我们将它与系统的其他部分分开,效率和可用性将得到改善.另一个要求是我们在文档存储DBMS中放置的信息应该能够从其他技术访问,如PHP,Java,Python甚至Ruby.
Option1: CouchDB
couchDB在负载波动时的表现如何?CouchDb提供什么样的灾难恢复技术?,归档,备份,文件管理等等我从远程计算机上的erlang应用程序访问couchDB中的数据,其中一个是以下机制更好
Using: curl -X [HTTP METHOD] [URI] [REQUEST]要么
Using Erlang CouchDB drivers [e.g benoitc-couchbeam from github e.t.c]. {do
these drivers require couchDb to be on the same host as the driver?,
Which mechanisms do they use to access CouchDb, i.e.
[do they use its HTTP access APIs?, or built-in Erlang RPC mechanisms?,
TCP/IP sockets?]}
Is there a CouchDb erlang driver that can give me Erlang terms direct?
i.e. if i create … 某些Tuples在Erlang中操作的函数会在操作后生成新元组的副本.在大多数情况下,程序不再对创建新元组的旧元组副本感兴趣.让我们看一个例子:
change(Position,Tuple1,NewValue) when size(Tuple1) > 10,Position < 10 ->
NewTuple = erlang:setelement(Position, Tuple1, NewValue),
%% at this point i don't want Tuple1
%% I want to destroy Tuple1 at this point !
%% how do i do it
erlang:send(myprocess,NewTuple),
ok.
在上面的示例中,我从现有元组创建一个新元组.如果我随后要这样做,我会想要破坏我自己的旧副本.我有一种感觉,编译器/运行时系统会自动执行此操作,但如果是这样,他们就不会给我们提供如下功能:erlang:garbage_collect/0.我们肯定他们意识到我们可能需要隐式地管理我们的内存,可能它会使程序免于崩溃并找到通过代码的内存密集部分的方式.
我明白,在它中erlang shell,它可能会让它忘记一个变量(假设他们的意思是破坏变量)使用f/0, f/1.但是,似乎我不能在我的模块/功能中使用它.我还怀疑在变量名称前面放置一个下划线可能会加速运行时系统的破坏,即在我的代码中写入的一些内容:_Tuple1to destroy Tuple1
.总之,问题是,如果我随后将从现有的元组创建元组,并且在每一步我想立即销毁旧副本(我自己),我该怎么做? *注意*我明白效率指南禁止这个,但是,如果我别无选择.....
伙计们帮忙,你的解决方案是什么?谢谢