在Erlang中,每个进程都有一个组长,当一个进程想要打印某些内容(即调用io库或执行类似操作)时,它将向其组长发送一条消息
我的问题是,在哪里可以找到这些消息的规范?或者一般来说,团队领导应该做什么
我通过一些实验设法发现,有时进程发送一个{io\u request,Sender,GroupLeader,request}术语,答案是{io\u reply,GroupLeader,ok}术语,但可能还有其他情况;是一个很好的信息源,也是的源代码
简言之:
{io_request, From,
Archelus认为,编写一个新的格式例程来处理命名参数可能是一个很好的学习练习。因此,本着学习该语言的精神,我编写了一个格式化例程,用于处理命名参数
一个例子:
1> fout:format("hello ~s{name}, ~p{one}, ~p{two}, ~p{three}~n",[{one,1},{three,3},{name,"Mike"},{two,2}]).
hello Mike, 1, 2, 3
ok
1> timer:tc(fout,benchmark_for
我最近用debian包安装了Erlang RFC4627(JSON-RPC)。我使用以下命令运行测试服务器:
sudo erl -pa ebin
然后在提示下:
test_jsonrpc:start_httpd().
返回
ok
我使用http://:5671/进行了测试,得到了成功消息
然而,当我尝试运行rabbitmq-http2时,我得到了自述文件所说的错误,这些错误是由rfc4627的代码不在erlang搜索路径上引起的。我如何把它放在路上。我在Dave Thomas的博客上看到一
我认为使用ets仍然会带来类似的副作用。ets优于流程字典的好处是:
其他进程可以直接访问ETS表
ETS为您提供搜索/匹配/迭代功能,而流程字典只是一个键值存储
您可以通过一个步骤将表保存/加载到文件中
如果您的所有者进程死亡,那么表可以被其他人继承,因此数据不会丢失
ETS不是垃圾收集的,因为它存储在erlang进程之外的堆中。这意味着,当你把东西放入ets时,它会被复制到ets中,当你取出它时,你会在过程中得到一份副本。进行大量ets查找可能会导致在您的过程中过度考虑(但这仅与非常高的吞
在编写本文时,的实现在任务、类别和板的存储模块之间共享基本相同的功能。这是通过将大量使用模块的相同代码移动到scrumjet_datastore.hrl中实现的。scrumjet_task.erl、scrumjet_category.erl和scrumjet_board.erl包括scrumjet_数据存储.hrl,并且没有本地定义的功能
这在没有问题的情况下非常有效。但是,如果需要调试,则调试器会调出空模块,而不是定义函数的头文件
有人知道如何使Erlang调试器为includes中的函数工作
安装Erlang Web 1.3并以交互模式启动后,我在日志中发现以下错误:
无法启动服务:
“config/inets.conf”
由于:“httpd_conf:0.0.0.0是一个
无效地址“
在我的inets.conf中,我有以下内容:
BindAddress 0.0.0.0
我的sys.config:
[{inets,[{services,[{httpd,"config/inets.conf"}]}]}].
有什么建议吗?我对这种语言或情况没有经验,但看起来0.0.0.0是一个无效的
当我在学习一门新语言时,我通常会放很多愚蠢的println,以查看在特定的时间,哪些值在哪里。这通常就足够了,因为这些语言通常都有一个tostring等价物。在使用erlang尝试同样的方法时,当试图打印的值不是列表时,我的webapp只是“挂起”。当打印的变量是元组而不是列表时,就会发生这种情况。没有错误,没有例外,什么都没有。。。只是没有回应。现在,我正在通过对我所写内容的谨慎而蒙混过关,并且随着我学到更多,事情变得越来越好。但我想知道,有没有更可靠的方法[盲目地]将值打印到stdout?
在花了很长时间让rb在远程shell上工作之后,我想在远程shell上获取stdio/error logger消息,我已经四处寻找更改组长的方法,但似乎需要更改所有运行进程的组长,我的实验发现这是非常不稳定的。最直接的方法是不要弄乱erlang io子系统,而是使用标准的ERTS工具。
1使用标准输入/标准输出包装器/记录器启动仿真器:
run_erl -daemon /tmp/ /some/log/dir erl
2然后做:
ssh localhost -tt to_erl /tmp/
使
我在Erlang中有一个参数化模块,我希望从同一个参数化模块的函数B中调用函数a。我如何才能做到这一点?来自纸张:
在抽象模块的每个函数中,变量
始终隐式绑定到当前模块实例
因此,您只需在函数B中编写:
THIS:A().
从纸上看:
在抽象模块的每个函数中,变量
始终隐式绑定到当前模块实例
因此,您只需在函数B中编写:
THIS:A().
只是在回答中重述一下。调用参数化模块中的函数不需要做任何特殊的操作,只需像平常一样编写代码即可。只有当您希望从模块中对导出的函数进行“远程”调用时,才需
我有一个CouchDB实例在一台机器上运行,因此它有自己的ErlangVM进程。如果我有另一个独立的Erlang应用程序也在该机器上运行,那么在CouchDB和我的应用程序之间共享同一个VM是更好的选择,还是建议启动一个新的Erlang节点 虽然许多人会推荐这些子系统,但我会采取相反的方法。Erlang有一个内置的策略,可以在同一个服务器上运行多个服务器。如果您的应用程序直接相互通信,那么将它们捆绑到一个版本中可能是有意义的。这将加快应用程序之间的调用。有些人会争辩说,如果您需要关闭系统进行升级
我有代码在文件中查找特定的文本,并给我一个偏移量,这样我就知道这种情况在哪里结束。现在我想从偏移量到文件末尾读取文件。该文件包含二进制数据和文本。如何在Erlang中执行此操作?使用pread。(见附件)。您必须自己处理任何字符编码,因为函数只处理字节
我读到了erlang最大的采用者之一是电信行业。我假设他们使用它在节点之间发送二进制数据,并提供简单的冗余、效率和并行性
erlang是否只将二进制文件发送到中心节点
它是否直接负责将二进制数据解析为实际语音?还是通过端口将其输入到另一种语言/程序
负责电话通话的速度,比如我说话和你听到之间的延迟
是否可以使用Erlang单独用于并行行为和C++或类似的顺序函数处理速度?< P>我只能猜测实际电信交换机中如何实现,但是我可以推荐一种方法:
首先,您可以在Erlang中实现所有内容,包括许多底层
我尝试将消息强制转换到gen_服务器:
gen_server:cast({global, ID}, {watchers}).
处理程序是:
handle_cast({watchers}, State) ->
case State#table_state.watchers of
[] ->
{reply, no_watchers, State};
_ ->
{reply, State#table_state.watche
我想开始在我的个人项目中使用,以获得技术和概念方面的经验。问题是我的编程毒药流向了非主流(说得委婉一点),我的大部分工作都在Erlang中
什么样的持续集成系统能够处理非主流语言,在我的例子中,主要是Erlang?设置、配置和运行它们有多容易?在这一点上,我建议。它易于设置和配置,有许多联机帮助和常用Erlang测试工具的基本支持
有关如何将eunit和common test集成到Jenkins中的基本信息,请参见堆栈溢出问题。我们正在etorrent项目中使用Jenkins CI,这似乎非常有
wings 3d shell使用erlang的新手问题(windows 7 pro,wings 3d 1.4.1)。当我写入读取记录定义的命令时:
rr(wings).
我总是会出错:
{error,beam_lib,
{missing_chunk,'d:/temp/erlang/lib/wings/ebin/wings.beam',"Abst"}}
我做错了什么?rr/1“从模块的BEAM文件读取记录定义。如果BEAM文件中没有记录定义,则定位并读取源文件。”
标签: Erlang
distributedwatchdog
国际公共部门监管——国际公共部门监管(子宫分母)
我有以下设置:
在一个节点上('one@erlang.enzo“)正在运行一个服务器进程,其中一个监视程序正在运行另一个节点(”)two@erlang.enzo'). 当服务器启动时,它将启动远程节点上的看门狗。当服务器不正常退出时,看门狗会再次启动服务器。当看门狗退出时,服务器将再次启动它
网络启动后,服务器作为运行级别的一部分启动
服务器还监视远程节点,并在其(即节点)联机时启动看门狗。现在,服务器和看门狗之间的连接丢失可能有两个原因:第一,
下一个代码的结果是5.99999999998,但正确答案是6
Alpha = math:acos((4*4 + 5*5 - 3*3) / (2*4*5))
Area = 1/2 * 4 * 5 * math:sin(Alpha)
可以得到6吗?计算是在硬件上使用标准浮点算法完成的。有时会出现舍入错误
你真的需要15位精度吗
要获得更“精确”的值,有多个选项:
> round(Area). % Will round to integer
6
或者你可以精确到某个程度
round(Area
使用Erlydtl进行主/应用程序布局的好方法是什么?对于主控/应用程序布局,我的意思是将主页布局模板和带有页面内容的模板分离,但将它们作为一个整体呈现。想想Ruby on Rails应用程序布局或ASP.NET母版页。您是否在尝试实现以下目标:
main.dtl
<html>
<head></head>
<body>
<div id="menu">Menu</div>
<div id="con
我正在二郎建立一个网站,但我遇到了麻烦。我安装了Chicagoboss,服务器启动,但我有一个问题。他们说要转到这个页面localhost:8001/pages/index当我转到这个页面时,我得到一个错误:
没有与请求的URL匹配的路由。别担心,此消息不会出现在生产中
我什么也没做,我在src/controllers/main.erl中对文件进行了编码。我做错了什么?我从未使用过ChicagoBoss,但这个问题非常基本,在提问之前,你们应该仔细阅读教程。看看请求的URL是如何调度的:
hos
我仍在努力深入理解人们可以用记忆来做什么,回答这两个问题将大有帮助
1) 如果一个进程执行关于记录X的原子事务,而另一个进程执行涉及该记录的脏事务,会发生什么情况。第一道工序的酸性是否受损
2) 同一进程是否有办法在一个表的行上持有非脏(mnesia:transaction/1)读锁,同时在另一个表上执行脏操作?在允许脏操作的数据库环境中,隔离保证会丢失,就像mnesia一样。因此,问题1)的答案是肯定的,行为良好的事务流程可能会受到并发脏操作的危害,反之亦然——例如,脏读可能会返回“旧”甚至新
我正在列表中读取一个文本文件,内容如下:
blah
blah
blah
现在,我正试图将列表数据写入一个文件,使其看起来与上面相同,我使用的是:
filewrite(File,L) ->
{ok, S} = file:open(File, write),
lists:foreach( fun(X) -> io:format(S, "~n",[X]) end, L),
file:close(S).
但这会在一行上打印所有内容,带有括号和语音标记…试试这个:
我尝试使用下面的代码进行一个简单的测试,通过Internet发送数据包。我确实检查了localhost版本是否可以与以下命令一起工作,它确实可以工作,但如果我将localhost(127.0.0.1)替换为真实的internet地址(我的地址),它就不工作了。我只是在客户端得到0,服务器端没有任何变化,尽管在服务器端使用localhost是一样的
服务器端:
udp\u测试:启动服务器()。
客户端:
udp\u测试:客户端(40)。
很简单,但是当我用我的ip地址替换127.0.0.1时,我什
通过关注读取性能,我想创建一个术语,例如Orddict或Proplist,其中包含大量(100000)条目,每个条目都包含一个ID和一个术语值。这个封装术语应该能够返回存储在其键下的值,就像Orddict一样
example:
K001 - Term001
K002 - Term002
K003 - Term003
包含整个集合的结果项需要从一个函数传递到另一个函数,用于多种计算目的,而无需将其存储在持久性存储中以避免磁盘I/O。我还选择在这一阶段不使用内存缓存,以避免此时的体系结构复
标签: Erlang
behaviorotperlang-supervisor
当我试图编译一个OTP管理器模块时,它是这样开始的:
-module(gridz_sup).
-behaviour(supervisor).
-export([start_link/0, start_child/2]).
-define(SERVER, ?MODULE).
yada, yada...
我得到以下错误:
gridz_sup.erl:9:警告:未定义的回调函数init/1(行为“supervisor”)
有善良的灵魂能指出我的错误吗
非常感谢,
LRP在实施行为回调模块时,
通配符模式是将任何字符与(?)匹配、将任何序列字符与(*)匹配的文件系统标准
我正在尝试使用erlang函数替换:
a) *进入*
b) ?进入
c) 进入\。
d) 如果通配符模式不是以通配符开头,则在模式末尾添加一个^(在正则表达式中开始匹配)
e) 如果通配符模式不是以通配符结尾,则在模式末尾添加一个$(regex中的end match)
不知何故,我无法获得re:replace来实现这一点
示例:
试图根据上述a)项进行更换
如果您对规范的完整性有信心,那么可以直接编写转换(我想不会有性
我有一段代码,其中取4个值,并用管道(“|”)连接它们。目前,其实施方式如下:
lists:flatten(io_lib:format("~s~s~s~s~s",[Id, Delim, Date, Delim, Signature])).
列表:展平(io_lib:format(“~s~s~s~s~s”,[Id,Delim,Date,Delim,Signature])。
但是,我想知道改用string:join(除了看起来更干净之外)是否有什么好处?它会稍微快一点,但更重要的是更容易阅读,正如我
我找到了代码:
erlc -I ~/ejabberd-2.1.13/lib/ejabberd-2.1.13/include -pa ~/ejabberd-2.1.13/lib/ejabberd-2.1.13/ebin mod_my.erl
但它不起作用?只需将模块放到ejabberd的src/文件夹中,然后“make”。编译它不需要什么特别的东西 以下是将自定义模块添加到ejabberd的步骤
将模块放入ejabberd/src文件夹
来到终端中的ejabberd目录并运行命令$sudo
我是Erlang的新手,除了阅读书籍和手册外,我还喜欢查看现有代码。trapexit.org网站看起来不错,但目前已关闭。
是否有人可以重新启动该程序,或者更好,是否在其他地方有一个维护良好、最新的代码库
TIA我个人会看看Bitbucket:或Github:
但是没有,我不知道还有其他类似于Trapexit的以Erlang为中心的网站,我个人会看看Bitbucket:或Github:
但是没有,我不知道有任何其他类似于Trapexit的以Erlang为中心的网站拥有Trapexit的大部分内容
我的项目结构如下:
ROOT/
apps/
common_lib_1/
src/*.erl
include/*.hrl
common_lib_2/
src/*.erl
include/*.hrl
common_lib_3/
src/*.erl
include/*.hrl
login_
我想用一个流程启动一个主管,该流程将产生更多链接到该主管的流程。程序冻结在主管:启动\u child
主管启动主子级:
% supervisor (only part shown)
init([]) ->
MainApp = ?CHILD_ARG(mainapp, worker, [self()]),
{ok, { {one_for_one, 5, 10}, [MainApp]} }.
主要子项从这里开始:
% mainapp (gen_server)
start_l
我遵循此网站链接进行ejabberd群集
一切正常,它显示两个节点运行db和web admin,还有两个节点主节点和从节点,但如果我关闭主节点或从节点,另一个节点不继续进程,我应该做什么,如果一个节点关闭,另一个节点继续进程。Mnesia的行为类似于多主数据库。但是,如果关闭节点,则重新启动过程的顺序应该相反。如果您有node1和node2,并且您杀死了node1,然后杀死了node2,那么您应该首先重启node2,然后重启node1。这是因为Mnesia认为最后更新的节点是最后一个。我不明白另
我已经成功地建立了mongooseIM。它不能与odbc一起使用。模块mod_vcard_odbc无法正常工作。当我输入vcard时,出现以下错误-
2014-01-02 19:35:22.192 [error] <0.369.0>@ejabberd_odbc:outer_transaction:400 SQL transaction restarts exceeded
** Restarts: 10
** Last abort reason: "#42S22Unknow
有人知道如何使用gen_bunny订阅Rabbitmq队列吗
我可以连接并推送消息,通过使用get方法,我也可以接收消息。但是,我无法找到如何订阅队列并在我的gen_服务器中获取消息。我没有尝试过,但他们有一个在回购中使用gen_bunny行为的示例:谢谢Jose,我检查过了,但没有显示订阅队列的示例。我可以使用get方法接收消息,但我想订阅队列。顺便说一句,在bunnyc.erl中,它们有两个函数,register\u return\u handler和register\u flow\u ha
遵循本指南:
根据指南,此代码在Erlang中生成一个名为?LEX的模块。长生不老药叫什么名字 如果调用文件lexer.xrl,leex将生成一个名为lexer.erl的Erlang文件,该文件定义了一个名为lexer的模块。然后,您可以从Elixir使用它作为:lexer.。要查看本文中的示例,请搜索selector\u lexer.xrl
它与parser.yrl的工作原理类似–您将获得名为parser的Erlang模块,您可以在Elixir中调用它作为:parser.。它在哪里说的?Thi
标签: Erlang
actorerlang-escript
我有以下Erlang代码:
#!/usr/bin/env escript
%%! -pz ../deps/amqp_client ../deps/rabbit_common ../deps/amqp_client/ebin ../deps/rabbit_common/ebin
% RMQ module
-module(rmq).
-export([main/1, send/1, validate/0, test/0]).
-include_lib("../deps/amqp_client/in
目前,我的Erlang应用程序是在escript(TCP服务器)中启动的,由于它使用了我提供的默认端口,所以一切正常。现在我想通过escript将端口传递给应用程序,但我不知道如何传递。(应用程序运行一个主管)
script.escript
!/usr/bin/env escript
%% -*- erlang -*-
-export([main/1]).
main([UDPort, TCPort]) ->
U = list_to_integer(UDPort),
T =
我现在正在读一本书>。当我查看Map字段的模式匹配时,书中的代码片段抱怨我的Erlang提示符出现了一些错误
%% Book's version
1> Henry8 = #{ class => king, born => 1491, died => 1547 }.
#{ born => 1491, class=> king, died => 1547 }.
2> #{ born => B } = Henry8.
#{ born =>
我将下面的命令应用于两个erlang提示,它们都生成相同的随机数序列,这是否意味着在erlang语言中它是伪随机的?我对基本原理很好奇,因为在Java中,即使我为它提供两次相同的种子,序列也不会相同。非常感谢
random:seed(6, 6, 6).
random:uniform(100).
random:uniform(100).
...
the generated sequence: 12, 27, 79, 58, 90, 25, ...
您所描述的通常是传统伪随机数生成器(PRNG)
我正在处理脱机通知。
我试过这个密码
我正在脱机使用mod\u http\u模块。
当用户发送脱机消息时,我的错误日志中出现以下错误
running hook: {offline_message_hook,[{jid,<<"1112121212">>,
<<"xyz.com.com">>,<<"26112267011450933160669531">>,
<
在Elixir中进行ssh连接时,我遇到以下错误:
:ssh.shell('host address', port_number, user: 'user_name')
{:error, 'Unable to connect using the available authentication methods'}
答案是@svarlet on留下的评论
如果您的ssh密钥有一个密码短语,则需要在Erlang ssh connect命令的选项中指定它
:ssh.shell('host addr
标签: Erlang
bytecodebytecode-manipulation
嘿,伙计们,我有一个关于文件格式字节码的问题
指令的{label,1}和{line,1}是什么
有没有人有一个好的网站/表格,我可以在那里阅读有关反转光束文件的内容
感谢Erlang's的:
请注意,汇编程序文件的格式没有文档记录,并且可以在不同版本之间更改
也就是说,标签指令为分支和调用目的标记一个位置,行指令提供源位置和行号信息
您可能需要调查此问题。好的,谢谢。另一个问题:你知道我如何将字节码转换成.beam文件,或者以某种方式运行被操纵的字节码吗?@QDA:你是在问如何将汇编程序编译成b
我正在编写一个测试来检查gen_服务器的响应。响应本身是{profile,someprofilefromgeneserver}或{error,ErrorResponse}
所以我想写一个测试,它可以:
Profile = mygenserver:get_profile(),
?assertEqual(Profile, {profile, SomeProfile})
因为我并不真正关心SomeProfile的值。但是这表明SomeProfile是未绑定的:(有办法修复它吗?您可以使用?asser
我想根据给定的数字将字符串划分为子字符串,例如:
divide("string",1) = ["s","t","r","i","n","g"].
我试过这个,但没有成功
lists:split(1,"string") = {"s", "tring"}
有什么想法吗?你可以试试这个功能。如果数字>0小于或等于字符串长度除以2
first_substring(List, Separator) ->
first_substring_loop(List, Separator, [])
如何检查部署的节点是否可以相互看到?
我试着做:
mix edeliver ping production --verbose
我得到:
EDELIVER MY_IDEA WITH PING COMMAND
-----> pinging production servers
production node: 0
user : bitnami
host : xxx
path : /home/bitnami
response: pong
我正在尝试使用amqp_客户端库连接到rabbitmq。我遵循提供的步骤
我的rabbitmq版本是rabbitmq 3.5.7,Erlang 18.3。所以我从中下载了相应的文件。并解压缩到“/usr/lib/erlang/lib/”路径。然后在erlang shell中,我开始如下所示
application:start(xmerl).
application:start(amqp_client).
application:start(rabbit_common).
rr("/usr/lib
我刚开始学习二郎,觉得很难理解。
我想将一个列表拆分为一个字符串,在其上运行string:titlecase,然后将其合并为一个字符串
namecase(Text) ->
TextArray = string:split(Text, " ", all),
lists:join(" ", lists:foreach(fun(Element) -> string:titlecase(Element) end, TextArray)).
但是它失败了,错误消息是escri
我想在ejabberd数据包中找到消息元素。
数据包本身是一个消息元素,但有时(延迟消息或其他情况)实际消息嵌套在数据包内:
正常信息:
<message from="hag66@shakespeare.example"
to="coven@muc.shakespeare.example"
type="groupchat">
<body>Test</body>
</message>
试验
其他结构示例:
我有一个http gen_服务器,它使用gun作为http客户端库。我能够打开连接并发出GET请求。但是,我没有收到响应正文,但收到的消息是'fin。如何在异步模式下获得gun响应
(defun get (url-map)
(io:format "http get ~p~n" `(,url-map))
(let* ((`#(ok ,con-pid) (gun:open (binary:bin_to_list (map-get url-map 'host))
几年后,我想回到Erlang/LFE的工作岗位。我为学习这门语言做了很多努力。我无法使用rebar3 get deps命令获取依赖项
它遵循钢筋.config,也可用
我知道我引用了一个旧版本的LFE。。。但是,如果我删除所有dep并再次尝试添加它们:第一个失败的是clj。然而,当rebar.config处于其原始状态时,我在rebar3 get deps之后获得了以下输出。完成输出
我检查了a和,但仍然无法解决问题
我的系统是macOSCatalina。它遵循的是Erlang环境版本:
ERL
在Erlang标准库的类型规范中,在when子句之前,规范中几乎没有任何类型。例如,列表:member/2的规范如下:
-spec成员(元素,列表)->boolean()当
元素:T,
列表::[T],
T::term()。
而不是:
-spec成员(Elem::T,List::[T])->boolean()当
T::term()。
这有什么原因吗?从透析器的角度来看,这两种样式是否等效?这样做是因为从规范生成的文档如果这样做会更好。这样做是因为从规范生成的文档如果这样做会更好。谢谢,卢卡斯
1 2 3 4 5 6 ...
下一页 最后一页 共 129 页