Erlang
文章平均质量分 50
iteye_13453
这个作者很懒,什么都没留下…
展开
-
使用dialyzer遇到的问题
1. 对自定义behaviour的警告有洁癖的可能无法忍受这种警告, Callback info about the my_module behaviour is not available只能加这个参数-Wno_undefined_callbacks [code="shell"]dialyzer --src ./src -Wno_undefined_callbacks [...原创 2012-06-19 18:18:07 · 235 阅读 · 0 评论 -
对Riak Core的探索 (9) cheatsheet
haogongju、人人IT网、59n南龙、360doc不要抄我的烂博客了,私人备忘用。[size=x-large]常用API之与ring、节点有关的API[/size][list][*]riak_core:vnode_modules() 查询安装的vnode模块[*]riak_core_ring_manager:get_raw_ring() 获取整个ring环,包括part...2012-08-12 12:58:36 · 107 阅读 · 0 评论 -
对Riak Core的探索 (8)
haogongju、人人IT网、59n南龙、360doc不要抄我的烂博客了,私人备忘用。原创 2012-08-11 18:52:17 · 102 阅读 · 0 评论 -
关于webmachine
haogongju、人人IT网、59n南龙、360doc不要抄我的烂博客了,私人备忘用。基于mochiweb,REST风格的erlang Web容器。流程图见docs目录下的http-headers-status-v3.png。它适合构建符合REST风格的面向资源的web应用,不适合那种需要HTTP长连接的应用(例如websocket,这也和webmachine基于的web服务器m...2012-08-03 14:38:08 · 452 阅读 · 0 评论 -
riak资料汇编
[size=x-large]一、上手[/size]各个操作系统平台上的安装说明:[url=http://wiki.basho.com/Installation.html]Installation[/url]新手可以先看[url=http://wiki.basho.com/The-Riak-Fast-Track.html]riak快速教程[/url]上手。[size=x-...原创 2012-04-10 17:38:03 · 230 阅读 · 0 评论 -
对Riak Core的探索 (4) 数据的分布及处理步骤
haogongju、人人IT网、59n南龙、360doc不要抄我的烂博客了,私人备忘用。[size=x-large]三、Riak Core系统的数据的分布和处理步骤[/size]从原理上讲,Riak Core通过hash算法将数据随机均匀的分布在一个环上,数据的hash值也就是在环上的位置(源码中常用Index表示),知道了Index就知道了对应的分区partition,知道了...2012-03-19 23:20:30 · 202 阅读 · 0 评论 -
对Riak Core的探索 (3) - 依赖注入 IoC
[size=x-large]二、 基于Riak Core分布式应用开发[/size]开发一个基于Riak Core的分布式数据处理系统,意味着它要处理的数据将在hash后映射到一个环上,也就是说这些数据分布在各个数据节点的partition上,数据的处理也在各个partition上进行。显然每个数据处理系统有它自己的数据处理逻辑。如果我们实现了这个处理逻辑然后以某种方式注入到Ria...原创 2012-03-16 20:05:14 · 150 阅读 · 0 评论 -
对Riak Core的探索 (2) 基本原理
haogongju、人人IT网、59n南龙、360doc不要抄我的烂博客了,私人备忘用。Riak Core采用一致性哈希算法分布数据。[quote="《分布式系统原理介绍》第2节 分布式系统原理 by刘杰"]“所谓分布式系统顾名思义就是利用多台计算机协同解决单台计算机所不能解决的计算、存储等问题。单机系统与分布式系统的最大的区别在于问题的规模,即计算、存储的数据量的区别。将一个单机...2012-03-16 17:41:34 · 205 阅读 · 0 评论 -
对Riak Core的探索 (1) Hello
haogongju、人人IT网、59n南龙、360doc不要抄我的烂博客了,私人备忘用。[size=x-large]基于Riak Core的开发指南[/size][size=large]1. hello, Riak Core[/size] 从riak-core-first-multinode开始一个hello world应用(简称mfmn):访问[url=https:/...原创 2012-03-16 17:38:28 · 243 阅读 · 0 评论 -
对Riak Core的探索 (0)
haogongju、人人IT网、59n南龙、360doc不要抄我的烂博客了,私人备忘用。[size=x-large]〇、介绍[/size]riak是basho(访问这里:[url=http://wiki.basho.com]关于basho[/url])参照dynamo(pdf格式的论文在[url=http://www.allthingsdistributed.com/files/a...2012-03-14 17:30:42 · 179 阅读 · 0 评论 -
ec2上安装erlang
用信用卡注册开通ec2略过不表。成功后进入ec2的管理界面 https://console.aws.amazon.com/ec2/home我选的是amazon的64位linux实例在web界面中启动你的机器实例(launch instance),点instance action菜单中的connect,出现提示告诉如何ssh连接你的实例,之前要生成自己的pem文件,然后改写这个文件的...原创 2011-04-01 23:09:40 · 320 阅读 · 0 评论 -
rebar工具使用备忘录 (1)
转载标明出处,我指的是你们: http://www.haogongju.net/和www.ask3.cn/[url=https://github.com/basho/rebar]rebar[/url]是一个开源的erlang应用自动构建工具。[url=http://www.basho.com/]basho[/url]的[url=https://github.com/tuncer]tunce...原创 2011-08-27 21:42:09 · 486 阅读 · 0 评论 -
erlang与vim
ubuntu下,vim默认支持erlang语言的高亮度显示和比较弱的语法支持,不过从2008年后就没有更新了。对于某些特殊情况或者比较新的语法往往支持的不够好,例如定义一个双引号的常量后,会发现后面的语句多被当成字符串了,直到遇到下一个双引号,看上去屏幕乱成一片字符串的红色:[code="erlang"]-define(Q, $\")[/code]后来改用[url=https://...原创 2011-08-09 21:52:56 · 269 阅读 · 0 评论 -
rebar工具使用备忘录 (3)
haogongju、人人IT网、59n南龙、360doc不要抄我的烂博客了,私人备忘用。2012-08-22 19:18:30 · 104 阅读 · 0 评论 -
rebar工具使用备忘录 (4)
haogongju、人人IT网、59n南龙、360doc、ask3不要抄我的烂博客了,私人备忘用。 [size=x-large]4.应用的发布与配置[/size]具体的,erlang里的发布是将应用系统及其依赖的第三方库,以及erlang运行时打包,这样的一个发布可以作为一个独立的系统,安装到其它的机器上。这里的发布类似JEE里的war发行包,但是并不完全相同。如果要类...2012-08-22 19:20:13 · 294 阅读 · 0 评论 -
NIF与OS线程
NIF的OS线程编程模型可以参考The Art of Multiprocessor Programming第八章Monitors and Blocking Synchronization原创 2013-08-31 01:29:15 · 251 阅读 · 0 评论 -
关于nif
[size=x-large]一、NIF的误用问题[/size]使用NIF是很危险的,一不小心它就会搞垮你的erlang VM,还会堵塞erlang调度器使VM进入假死状态。平均每20个使用NIF的项目,就有19个滥用了NIF。参考:[url=http://jlouisramblings.blogspot.tw/2013/07/problematic-traits-in-erlang...原创 2013-08-19 10:28:56 · 1275 阅读 · 0 评论 -
关于erlang的iolist
erlang字符串可以用list结构存放ASCII编码(0~255)的整数,这是传统的方式,缺点是浪费内存,而且对unicode无效。又因为list实际上用的是一种链表结构,每个字符都带一个指针(它指向下一个字符的地址)。节省内存的话用binary存放字符串,它有很多有优点,例如可以用utf8编码存放unicode字符。binary字符串内部用字符串的首地址和字符串的长度(而不是\0结束符...原创 2012-06-17 15:10:00 · 728 阅读 · 0 评论 -
关于erlang的binary
[size=x-large]1. binary数据是可以在不同进程间共享的[/size]当然这些进程都在同一Erlang节点上。这与普通term不同,后者作为消息在进程间传递时是要在接收进程中做拷贝的(当然atom数据例外,它们也不会做拷贝)。摘一段[url=http://www.erlang.org/doc/efficiency_guide/processes.html#id68...2012-06-02 16:03:56 · 815 阅读 · 0 评论 -
关于erlang的进程池
有两种情况需要考虑使用进程池管理erlang进程。一种是普通erlang进程,很便宜,一次可以并行很多(默认32K,当然可以调整vm参数设置更大),但是这不意味着可以无限制的使用,实际上轻松的达到上限是很容易的(想想发明国际象棋的那位向国王请赏的办法,类似的,一个进程开两个,两个再开四个,四个再开8个。。。。,很容易就达到了上限),因此有时候我们需要对进程进行管理,避免无限制的使用累垮系统...原创 2012-05-30 18:42:48 · 377 阅读 · 0 评论 -
riak对大数据文件或对象的支持问题
很遗憾在2011年12月的时候,basho宣布[url=http://lists.basho.com/pipermail/riak-users_lists.basho.com/2011-December/006905.html]不再提供对luwak的支持[/url]。因为luwak有[url=http://lists.basho.com/pipermail/riak-users_lists.bas...原创 2012-05-24 19:24:52 · 224 阅读 · 0 评论 -
遇到的riak性能问题
1。 遇到一个奇怪的性能问题,多个进程中用riakc_pb_socket put和get有着不同的性能表现。我的情况是put还好,但是get老是超时(60秒)。有人在邮件上提到了这个问题,不过和我相反。在这里记录下备忘。http://lists.basho.com/pipermail/riak-users_lists.basho.com/2013-July/012669.h...原创 2013-07-23 10:59:12 · 285 阅读 · 0 评论 -
folsom_metrics使用备忘
folsom是一个通用的统计度量工具。使用很简单,关键是搞清它的度量方式的含义。有如下几种度量器(metrics):counter, gauge, histogram, histories, meter有些还可以往下细分。使用方法都是先new一个度量器(metric),然后每来一个数据,notify一下这个metric:例如gauge类型的时速表的使用。1. 新...原创 2013-06-07 15:41:25 · 173 阅读 · 0 评论 -
Riak Core与folsom
folsom是Riak从1.2开始引入。原创 2012-09-01 11:54:14 · 129 阅读 · 0 评论 -
关于Erlang/OTP的application参数配置
Erlang/OTP中将完成特定功能的一组模块组织起来,称之为[url=http://www.erlang.org/doc/man/application.html]application [/url]。(这不是个好名字,因为它与我们约定俗成的application有着不同的含义,例如在JEE这样的开发中,整个应用系统被称为一个application;在iOS中一个独立游戏、一个小工具都被...2012-08-26 23:27:37 · 321 阅读 · 0 评论 -
rebar工具使用备忘录 (5)
haogongju、人人IT网、59n南龙、360doc、ask3不要抄我的烂博客了,私人备忘用。2012-08-23 18:17:59 · 125 阅读 · 0 评论 -
lager的使用
haogongju、人人IT网、59n南龙、360doc不要抄我的烂博客了,私人备忘用。 erlang本身提供了日志管理,但这与其它语言中常见的log4xxx的日志框架很不同:日志文件是二进制的,查看起来很不方便;每条日志跨多行文本,也不方便查找和分析。总之,这自带的日志系统让用惯log4xxx系列的人用起来很不习惯。后来陆续有log4erl这样的应用,lager算是后...2012-08-23 15:06:01 · 1137 阅读 · 0 评论 -
小试NIF(上)
NIF是Erlang OTP R13B03版引入的,在这一版中还只是一个实验特性,按照原计划,NIF在R14B版成为正式特性,相应的API也将在该版之后稳定下来。等不及了,先试试再说。[size=large]1. 基本原理[/size]最大的好处是速度。Erlang程序的逻辑当然是用Erlang写的,速度上不能和C比。NIF使我们可以用C实现相同的程序逻辑, 而速度则是C的速度。...原创 2010-09-26 00:09:12 · 454 阅读 · 0 评论 -
comet与“更新传播”
《分布式系统原理与泛型》第6.4.2节 更新传播 读后笔记分布式系统中数据会有复制,导致一份数据会在多处有复件,那么针对这一数据的更新操作应该传播给所有的复件。这一过程即为更新传播。对于comet来说就是服务器上数据的更新传播到用户浏览器上。更新传播首先面临的设计问题是传播什么样(what)的更新信息,有三种方式:1. 只传播更新的通知:无效化协议(invalidation p...2008-11-28 01:57:50 · 221 阅读 · 0 评论 -
mnesia使用中遇到的问题
1. copy type的问题建了一个mnesia数据库,其中一张表的copy type是disc_copies,大小有1.58G,活动监视器中可以看到Erlang虚拟机占用实际内存差不多有1.44G,虚拟内存占了2.2Gdisc_copies实在不适合数据量大的表啊而且数据量大时继续插入数据很容易出现如下警告信息Mnesia(nonode@nohost): ** WARN...原创 2008-09-19 02:05:47 · 284 阅读 · 0 评论 -
Erlang程序的性能测试工具(1)
一、eprof的使用A. eprof可以植入到程序代码中过程记下:1. 启动eprof服务器[code="java"]eprof:start()[/code]2. 开始profiling[code="java"]eprof:profile([self()])[/code]或者[code="java"]eprof:start_profiling([self...原创 2008-09-16 22:58:50 · 345 阅读 · 0 评论 -
Erlang的系统限制
在Erlang Effecienty Guide第9章中提到1. 进程的数量缺省情况下同时存在的最大Erlang进程数量不超过2^15=32768个,这个限制可以放宽至2^28=268435456个(具体查阅系统标志+P),由于内存的限制在32位环境中这个数量不太可能达到。2. atom最多能有多少个字符255个3. 最多能有多少atom(atom的最大数量)2^20=...原创 2008-09-13 23:56:34 · 235 阅读 · 0 评论 -
Erlang Interoperability Tutorial文档中的例子
linux新手可能会遇到这个问题。第6章Port drivers中Erlang Interoperability Tutorial文档第6章Port drivers中有几个文字错误,影响编译gcc -I/usr/local/lib/erlang/usr/include/ -o example_drv[color=red][b].so[/b][/color] -fpic -sha...原创 2008-09-12 15:24:17 · 108 阅读 · 0 评论 -
mnesia数据库表的id
对于mnesia数据库表有时候需要有一个id字段,就像关系数据库的主键.最简单的办法是用uuid做id,但是我们希望此id是整数递增的.或者用{node(), erlang:now()} 做id也是不错的办法.类似于一个set集合(意思是集合中不可能两个相同的键同时存在),每个键对应的值将作为id,方法mnesia:dirty_update_counter(Tab, Key, ...原创 2008-08-21 19:56:20 · 207 阅读 · 0 评论 -
写内联驱动的port driver时遇到的问题
0. 用C写的内联驱动的port driver运行时嵌入到Eralng虚拟机中,就像是Erlang的一部分,而外部接口是在一个独立的操作系统进程中运行的。内联驱动的优点是高效,缺点是写的不好会连累Erlang虚拟机,把后者崩溃掉。所以,很危险要小心。一个比较好的参考例子是[url=http://yaws.hyber.org/download/bfile-1.2.tgz]bfile[/u...原创 2009-04-03 17:35:04 · 472 阅读 · 0 评论 -
ab性能测试与gnuplot测试结果绘制
Erlang13A出来后,有人就做了[url=http://www.erlangatwork.com/2009/03/lies-damned-lies-and-benchmarks.html]新旧版本的性能测试[/url]。作者自己写了小小的Web服务器进行测试,测试工具是apaceh的[url=http://httpd.apache.org/docs/2.0/programs/ab.html]a...原创 2009-03-19 00:37:51 · 345 阅读 · 0 评论 -
gen_server behaviour的误用
虽名为通用服务器,但gen_server的代码并不天生具有处理并发请求的能力,实际上一个gen_server写成的模块是运行在一个线程中的,所有针对它的请求都是序列化处理的,因此gen_server并不具有自动并行处理的能力,还得靠程序员自己实现并行。熟悉OOP的程序员可能会误用gen_server,例如让一个gen_server的模块持有系统的配置信息,每当需要配置信息时就通过gen_s...原创 2009-03-14 18:06:27 · 148 阅读 · 0 评论 -
Mochiweb的设计
[url=http://en.wikipedia.org/wiki/Web_server]Web服务器[/url]的基本工作大致分3步:1. 接收HTTP请求;2. 处理HTTP请求,生成响应内容;3. 发送响应[size=large]一、处理请求和发送响应[/size]模块mochiweb_request可说是Mochiweb处理HTTP请求的核心部分,它总共负责了第...2009-03-13 01:20:49 · 131 阅读 · 0 评论 -
节点与模块
[size=x-large]一、节点的启动和连接[/size]测试环境中,节点的启动,longname风格,cookie为abc[code="bash"]$ erl -name node1@10.0.0.11 -setcookie abc[/code][code="bash"]$ erl -name node2@10.0.0.22 -setcookie abc[/c...2008-05-27 00:19:31 · 523 阅读 · 0 评论 -
Erlang的Makefile文件备忘
Erlang有个类似Makefile的文件Emakefile负责编译erl程序,[url=http://www.erlang.org/doc/man/make.html]说明文档在此[/url]格式是[code="Erlang"]{Modules, Options}.[/code]其中Modules是一个atom,或者是一个atom的列表。这些atom可以是一个模块...原创 2008-05-12 00:35:51 · 241 阅读 · 0 评论