erlang学习笔记
安装
Ubuntu Server上: sudo apt-get install erlang
如果安装时下载 太慢,可手工下载deb包( esl-erlang_16.a-rc1_ubuntu_precise_i386.deb ),下完deb文件后,ftp到虚拟机上,用dpkg -i <.deb file>安装(需要首先安装JRE);Ubuntu Server不能更改屏幕大小,也不能copy/paste文本,所以用kitty ssh过去操作比较好;
erlang 语法
代码中逗号,分号,句号的用法:逗号是表达式的分隔符(可以理解为AND),分号是条件分支的分隔符(可以理解为OR),句号是函数结束符(可以理解为END);
参考"http://stackoverflow.com/questions/1110601/in-erlang-when-do-i-use-or-or";
erlang文档
在线版(增量式查找,效果比离线版好):http://www.erlang.org/erldoc
离线版:otp_doc_html_R16A_RELEASE_CANDIDATE.tar.gz
在erlang官网下载页上下载Erlang/OTP R16A HTML Documentation File,解压到DOC_HOME下,tr_server中用到的gen_server:start_link/4函数可以在$DOC_HOME\lib\stdlib-1.19\doc下找到html和pdf版的api说明;erlang用到的各个库的api文档都在.\lib文件夹下;erlang用户手册在.\doc目录下,erlang运行时(ERTS)在.\erts-5.10下;
erlang内置函数(BIF)文档在$DOC_HOME\erts-5.10\doc\html\erlang.html中可以查到(或者是对应的pdf文档:$DOC_HOME\erts-5.10\doc\pdf\erts-5.10.pdf的Reference Manual -> erlang部分中),例如apply, list_to_atom等;
erlang编译器
Windows上的erlc居然不支持文件通配符,运行"F:\tcp_rpc>"C:\Program Files\erl5.10\bin\erlc.exe" -o ./ebin ./src/*.erl"提示IO错误,只能用"F:\tcp_rpc>"C:\Program Files\erl5.10\bin\erlc.exe" -o ./ebin ./src/tr_sup.erl"的办法分别编译3个erl源文件;
IDE
erlide
在Eclipse for java developers 4.2中,用 eclipse market搜索erlide并安装成功;(2013-05-13)
See https://github.com/erlide/erlide/wiki/Tutorial-Quick-Start for using this plugin to build a HelloWord erlang program.
其他
erlang发音:elan(哦兰);
多台机器上的erlang节点互相连接
使用erl -name name@ip -setcookie cookiename启动erlang节点,启动后用net_adm:ping('name@ip')进行连接,上午在笔记本和两台服务器上创建3个节点并互联成功,其中笔记本是Win7(IP为10.31.1.30),两个服务器是Ubuntu Server 12.04(IP是10.31.1.113和10.0.7.47),每个节点的-name参数是自己的名字和IP地址,互联的各节点的cookiename需一致;另外Win7可能要关闭防火墙;ip必须是节点的真实IP,如果是hostname,需要有效的DNS,否则无法连接;
Remote shell
113服务器:$ erl -name lc@10.31.1.113 -setcookie test
47服务器:$ erl -name lc@10.0.7.47 -setcookie test
在113上远程连接47:Ctrl + G,然后用r指令,例如:
(lc@10.31.1.113)1>
User switch command
--> r 'lc@10.0.7.47'
--> j
1 {shell,start,[init]}
2* {'lc@10.0.7.47',shell,start,[]}
--> c
Eshell V5.8.5 (abort with ^G)
(lc@10.0.7.47)1>
更多细节:
发起和目标节点上的erl shell都必须已经启动,不需要首先用net_adm:ping建立连接,在113上连接上47后,不能关闭47上的节点,否则remote shell也会随之断开;
113要切换到local shell用"Ctrl+G, j, c "方式;
113要退出本地erlang环境用"Ctrl+G, Ctrl+C, A"方式(Linux下);
113要关闭47上的节点用"q()."命令;
113要关闭连接47的Remote Shell用"Ctrl+G, j, k "方式;
erlang学习笔记的更多相关文章
- Erlang 学习笔记
http://wenku.baidu.com/link?url=AUQR8Hn-e-fEB_lqjXsd8XfapWj1qAK7J05JoBXFib_LlSk5qSOTia8HIxNV1XkeZi-k ...
- erlang学习笔记(shell命令)
erlang shell 命令: help(). 可以查看erlang shell内置命令. 比如:m(Mod),可以查看模块Mod. 待续..
- Programming Erlang 学习笔记(一)
入门 启动Shell 在cmd中输入命令”erl”,百分号(%)表示一个注释的开始,从百分号开始到这行结束的所有文本都被看做是注释. 一个完整的命令需要以一个句点和一个回车结束. 退出erlang的命 ...
- erlang学习笔记之基础语法
字符串是双引号,单引号的是atom元组: 下标从1开始 X = {'test1',2,3,4}. element(1,X). 配合模式匹配,可以给元素项命名,直接不用下标标记元素项 列表增删改查 增加 ...
- Erlang学习笔记2
http://wgcode.iteye.com/blog/1007623 第二章 入门 1.所有的变量都必须以大写字母开头,如果要查看某个变量,只要输入变量的名字即可,如果一个变量被赋予值,就称为绑定 ...
- erlang学习笔记(文件操作)
参考这里和这里了解到的文件操作的模块有很多:kernel下有:file,stdlib下有:filelib,filename,file_sorter.(具体查看官方文档)
- erlang学习笔记(2)
函数%###geometry.erl###-module(geometry). 定义-export([area/1, function1/2, function2/0, ...]).area({rec ...
- erlang学习笔记(1)
提示符erl 注释% comment 表达式123456789 * 123456789. 变量(单一赋值)X = 123456789.X.Y = X * X * X.Y.f(). 整数浮点数X = 5 ...
- Redis学习笔记~目录
回到占占推荐博客索引 百度百科 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合). ...
随机推荐
- 连接mysql数据库实现增删改查(一)
在python中我们通过pymysql来连接数据库,具体实现如下 ''' 连接mysql数据库 此类进行封装了一些基础的操作数据库方法 ''' import pymysql from Homework ...
- 修改myeclipse 项目中用的jdk版本
修改myeclipse 项目中用的jdk版本 首先, 打开MyEclipse,如下图所示 打开之后,找到我们的java项目 右键--"Build Path--->Confirgure ...
- MySQL中的字段拼接 concat() concat_ws() group_concat()函数
1.concat()函数 2.concat_ws()函数 3.group_concat()函数 操作的table select * from test_concat order by id limit ...
- 白话边缘计算解决方案 SuperEdge
一.SuperEdge的定义 引用下SuperEdge开源官网的定义: SuperEdge is an open source container management system for edge ...
- 架构之:REST和RESTful
目录 简介 REST REST和RESTful API REST架构的基本原则 Uniform interface统一的接口 Client–server 客户端和服务器端独立 Stateless无状态 ...
- WSL中使用systemctl报错问题
Windows10里面自带的wsl中安装docker后不支持systemctl命令.需要更换命令,用Sysvinit的命令代替systemd,命令如下: Systemd command Sysvini ...
- vuejs知识总结
1.Vue.js是当下很火的一个JavaScript MVVM库,它是以数据驱动和组件化的思想构建的.ViewModel是Vue.js的核心,它是一个Vue实例. <!DOCTYPE html& ...
- OpenResty简介
OpenResty(也称为 ngx_openresty)是一个全功能的 Web 应用服务器.它打包了标准的 Nginx 核心,很多的常用的第三方模块,以及它们的大多数依赖项. 通过揉和众多设计良好的 ...
- 「CF521D」 Shop
「CF521D」 Shop 传送门 题目说是有三种操作,首先可以知道赋值操作是可以转化为加法操作的,即 \((1,b) \rightarrow (2,b-a_i)\) 然后加法对于一个数你肯定优先选择 ...
- 一文搞懂一致性hash的原理和实现
在 go-zero 的分布式缓存系统分享里,Kevin 重点讲到过一致性hash的原理和分布式缓存中的实践.本文来详细讲讲一致性hash的原理和在 go-zero 中的实现. 以存储为例,在整个微服务 ...