学习Erlang?speedbump线程,常见,小问题

Fli*_*man 10 erlang

我只想知道当你刚开始使用Erlang时,你和最终解决方案之间存在的所有小问题.

例如,这是我的第一个速度突击:

  1. 如果在多个线程中生成,请使用controlling_process(Socket,Pid).正确的数据包到正确的线程.
  2. 你会开始和另一台服务器说话吗?记得net_adm:ping('car @ bsd-server').在壳中.否则没有沟通可以通过.
  3. 计时器:睡觉(10),如果你想什么也不做.调试时总是很有用.

arc*_*lus 5

  • 学习浏览标准文档

    一旦您了解了OTP文档的组织方式,就可以更轻松地找到您要查找的内容(您往往需要了解哪些应用程序提供了哪些模块或模块类型).

    也只是浏览的应用程序的文档往往是相当有益的-我发现很多非常有用的代码这种方式- ,sys,dbg,toolbar等.

  • shell erlang和模块erlang之间的区别

    Shell erlang与模块erlang略有不同.您无法定义模块功能(仅限于操作),您需要加载记录定义才能使用记录(rr/1)等.学习如何根据匿名函数编写erlang代码有点棘手,但对于使用远程shell进行生产系统工作至关重要.

    学习shell和{start,spawn} _link ed进程之间的交互 ​​- 当你运行一些崩溃的shell代码(引发异常)时,shell进程退出并将退出信号广播到你链接到的任何东西.这将关闭你正在处理的新gen_server.("为什么我的服务器进程一直在消失?")

  • erlang表达式和保护表达式之间的区别

    Guard表达式(when子句)不是Erlang表达式.它们可能看起来很相似,但它们完全不同.Guards不能调用任意的erlang函数,只能调用保护函数(length/1,类型测试element/2以及OTP文档中指定的其他函数).警卫成功或失败,没有副作用.另一方面,Erlang表达式可以做他们喜欢的事情.

  • 代码加载

    确定代码升级的工作时间和方式,以及让gen_server升级到最新版本的回调模块(code:load(Mod), sys:suspend(Pid), sys:change_code(Pid, Mod, undefined, undefined), sys:resume(Pid).)的咒语.

    代码服务器路径(code:get_path/0) - 我无法计算我遇到未定义的函数错误的次数,结果是我忘记将ebin目录添加到代码搜索路径.

  • 构建erlang代码

    制定一个有用的emake(make:all/0erl -make)和gnu make组合花了相当长的时间(到目前为止大约三年:).

    我目前最喜欢的makefile可以在http://github.com/archaelus/esmtp/tree/master上看到

  • Erlang发行

    获取节点名称,dns,cookie以及其他所有权限,以便能够访问net_adm:ping/1其他节点.这需要练习.

  • 远程shell IO错综复杂

    记住要传递group_leader()io:format远程节点上运行的调用,以便输出显示在shell中而不是神秘地消失(我认为SASL报表浏览器rb在通过远程shell连接使用时将其部分输出发送到错误的节点仍有问题)


Fli*_*man 1

控制进程()

如果您在多个线程中生成,请使用controlling_process(Socket, Pid)。正确的数据包到正确的线程。