Erlang Gtalk 讨论群8月份聊天记录
Gtalk 讨论群上面都是比较活跃的,大家的讨论也不乏亮点,现在整理出技术讨论的部分,方便大伙
2007-08-03 12:24:49 <cpunion> Erlang的日志库,有没有强点的?不会要自己扩展吧
2007-08-03 12:25:15 <mryufeng> erlang的日志库很强大的哦
2007-08-03 12:26:45 <cpunion> 我看到add_report_handler,就是不知道有哪些可用
2007-08-03 12:27:09 <mryufeng> 底层的disk_log是分布的哦
2007-08-03 12:27:45 <mryufeng> mnesia的交易日志都是用这个基础的哦
2007-08-03 12:29:36 <cpunion> 。这个接口怎么这么复杂的?不像一般的日志库嘛,像log4j这种,配置使用的
2007-08-03 12:30:31 <cpunion> error_logger,可以用,就是不知道有哪些handler可用。自己可以用gen_event扩展,只是比较麻烦,有现成的就更好了
2007-08-03 13:16:02 <cpunion> http://www.trapexit.org/index.php/Writing_an_Erlang_Port_using_OTP_Principles
2007-08-03 13:16:35 <cpunion> 这个用python写port的,怎么用erlang启动echo.py就会直接退出,手动启动就正常呢
2007-08-03 13:17:28 <cpunion> 加了个日志,证明echo.py已经执行,不过退出了
2007-08-03 14:14:38 <zoom.quiet> ??
2007-08-03 14:58:34 <cpunion> 测试c node,目前只成功了{regname, nodename} ! Msg,如何把self()放在Msg中发出去呢?erlang里面直接{regname, nodename} ! {foo, self()}就可以了,C里面摸不出来了
2007-08-03 15:04:34 <mryufeng> ei不是可以encode任何term码?
2007-08-03 15:08:42 <cpunion> 要把pid转成一个term,塞到tuple里面。不知道如何转,ei_encode_pid是转成一个字节串。
2007-08-03 15:09:11 <cpunion> 刚看到erlang_pid结构和Erl_Pid是一一对应的,应该可以直接赋值过去,试试看。。
2007-08-03 15:11:22 <mryufeng>
/* set up rpc arguments */
/* { PidFrom, { call, Mod, Fun, Args, user }} */
ei_encode_version(buf,&index);
ei_encode_tuple_header(buf,&index,2);
ei_encode_pid(buf,&index,self); /* PidFrom */
ei_encode_tuple_header(buf,&index,5);
ei_encode_atom(buf,&index,”call”); /* call */
ei_encode_atom(buf,&index,EI_MNESIA_MODULE); /* Mod */
ei_encode_atom(buf,&index,EI_MNESIA_DUMP); /* Fun */
ei_encode_list_header(buf,&index,2); /* Args: [ table, self() ] */
ei_encode_atom(buf,&index,mntab);
ei_encode_pid(buf,&index,self);
ei_encode_empty_list(buf,&index);
ei_encode_atom(buf,&index,”user”); /* user */
2007-08-03 15:11:30 <mryufeng> 代码不是大把
2007-08-03 15:11:56 <mryufeng> 自己翻一下就有了
2007-08-03 15:12:38 <cpunion> 不用这一组,太底层了。有erl_interface.h里的
2007-08-03 15:13:14 <mryufeng> 呵呵 erl_interface.h 都准备淘汰了 你还用
2007-08-03 15:13:21 <mryufeng> 这个ei很方便哦
2007-08-03 15:14:41 <cpunion> ei里面操作的都是缓冲区,用起来麻烦。erl_interface.h只是作了点包装
2007-08-03 15:15:20 <mryufeng> 呵呵
2007-08-20 11:09:00 <panxiaof> mnesia:加一个索引后,居然速度奇慢
2007-08-20 11:09:50 <AvinDev> mnesia要问问yufeng,他研究过
2007-08-20 11:10:29 <panxiaof> 更怪的是,我同样结构的两个表,同样的数据,居然占用内存不一样,一个是300M,一个是600M
而用mneaia:info()看这两个表,大小是一样的。郁闷啊~谁还见过这个事
2007-08-20 15:01:11 <davies.liu> 有没有erlang实现的分布式crawler?
2007-08-20 15:02:31 <panxiaof> 没有
2007-08-20 15:02:50 <panxiaof> 我也看得不多,不深入
2007-08-20 15:02:58 <davies.liu> 正考虑做一个这样的
2007-08-20 15:03:24 <panxiaof> crawler这是什么东东啊
2007-08-20 15:03:35 <linningjie> 爬虫
2007-08-20 15:03:38 <AvinDev> 搜索引擎爬虫
2007-08-20 15:03:42 <davies.liu> 爬虫,
2007-08-20 15:03:58 <panxiaof> 不是就splider吗?看来英语还是学的不好啊~
2007-08-20 15:04:11 <davies.liu> 或者只是分布式的下载器,不包括遍历URL部分
2007-08-20 15:04:12 <linningjie> 都是一个意思
2007-08-20 15:05:33 <AvinDev> davies,这种“分布”,有点类似MapReduce的处理吧?
建一个Task,分散到多个Node执行craw,然后返回集中处理结果
2007-08-20 15:06:09 <panxiaof> 没做过~不过用erlang是很有优势的吧
2007-08-20 15:09:06 <AvinDev> 感觉erlang的密集计算能力比较差,在建索引之类的还是用其他语言比较好
2007-08-20 15:09:29 <panxiaof> 你试过?
2007-08-20 15:09:33 <davies.liu> http://www.erlang-projects.org/Public/news/spider/view
2007-08-20 15:09:38 <panxiaof> 有什么”证据“?
2007-08-20 15:10:20 <davies.liu> Erlang做计算和文本处理显然不好,我觉得作为一个平台,处理网络通讯等还不错
2007-08-20 15:10:22 <panxiaof> 你是用mnesia建立索引的吗?还是ets
2007-08-20 15:10:47 <AvinDev> 不是这种索引,是Lucene这种
2007-08-20 15:11:30 <panxiaof> 我处理一个字符串,reverse了好几下,居然1秒能处理1亿次。
2007-08-20 15:11:49 <panxiaof> 我是2G的cpu,这个速度我感觉很高啊
2007-08-20 15:12:03 <mryufeng> reverse 多大的string
2007-08-20 15:12:26 <panxiaof> (不太知道太低层的东西,不过感觉好高,40来个周期就做一次处理了,)
2007-08-20 15:12:31 <hanzhupeng> reverse了好几下,
2007-08-20 15:12:39 <panxiaof> 30来个字符
2007-08-20 15:12:53 <hanzhupeng> 估计不是真的去reverse 吧,可能改改标志之类的
2007-08-20 15:13:18 <panxiaof> 到转
2007-08-20 15:13:37 <mryufeng> 普通的机器memcpy能够处理1G/s
2007-08-20 15:13:52 <panxiaof> 那是考数据
2007-08-20 15:14:19 <mryufeng> 所以reverse处理那么多应该不奇怪
2007-08-20 15:14:37 <AvinDev> reverse 是 [a,b,c] -> [b,c], [a] -> [c], [b,c] -> [], [c,b,a] 这样的操作,都是append头部,效率会很高
2007-08-20 15:14:42 <panxiaof> lists:reverse(lists:dropwhile(fun(X)-> X/=$/ end,lists:nthtail(1,lists:reverse(Path)))).
2007-08-20 15:15:09 <panxiaof> 我是这么写的,当中的path是一个30来字符的东东
2007-08-20 15:15:13 <mryufeng> 但是erlang的string是用list来表示的 一个char要用4个字节 出来起来效率很低
2007-08-20 15:15:21 <mryufeng> 建议用binary
2007-08-20 15:16:10 <panxiaof> 我发现mnesia有个怪毛病。
2007-08-20 15:16:19 <panxiaof> 就是索引怎么好像有问题
2007-08-20 16:37:30 <erlanging> process_main中OpCase的东西找不到啊…奇怪
2007-08-20 16:37:57 <panxiaof> Opcase是什么东江啊
2007-08-20 16:38:31 <erlanging> beam_emu.c
2007-08-20 16:48:59 <erlanging> 靠,原来是source insight 搜索有问题
2007-08-20 16:49:38 <panxiaof> yufeng,是不是mnesia单表最大是4G?
2007-08-20 16:49:50 <mryufeng> mnesia是2G
2007-08-20 16:50:00 <mryufeng> 32bit /2
2007-08-20 16:50:21 <panxiaof> 不是吧,可不可以更大一点
2007-08-20 16:50:49 <mryufeng> 不可以
2007-08-20 16:51:08 <mryufeng> 因为erlang设计的时候好多东西是针对32位机器设计的
2007-08-20 16:51:58 <panxiaof> 两个表的结构相同,都是1,000,000数据,mnesia:info也显示大小都是87,000,000
但是一个表点了600M,一个表是300M 这是为什么啊
2007-08-20 16:52:06 <panxiaof> 数据是完全一样的
2007-08-20 16:52:18 <rmpatel101> 同,都是1,000,000数据,mnesia:info也显示大小都是87,000,000
但是一个表点了600M,一个表是300M 这是为什么啊
2007-08-20 16:52:45 <mryufeng> 因为erlang设计的时候好多东西是针对32位机器设计的
2007-08-20 16:53:23 <mryufeng> 你的数据在第2个表里可能share第一个表里面的了
2007-08-20 16:53:43 <panxiaof> 我是说两个表完全一样,数据也一样,就是1,000,000,mnesia:into看的时候,大小也是一样:
87,000,000. 可是真实的内存占用大小怎么不一样
2007-08-20 16:54:04 <panxiaof> 不可能share,我是分开测试的
2007-08-20 16:54:32 <panxiaof> 不知道大家见到过这个现象没?
2007-08-20 16:58:51 <panxiaof> 谢谢yufeng
2007-08-20 16:59:51 <mryufeng> 我的意思是 vm 里面的 数据是share 的 比如说atom vm只有一份atom的内存占用
2007-08-20 17:01:32 <panxiaof> 我是分开测试的,是关闭了erl后,打开测试第二个。不知道为什么。不过我会再好好看看的
2007-08-20 17:01:59 <mryufeng> 哦 这样呀 那就搞不懂了
2007-08-23 09:42:03 <AvinDev> 貌似换了IP,ErlangChina可以访问了
2007-08-23 09:42:17 <jackyz.zhao> 嘿嘿。。。:[
2007-08-23 09:42:30 <AvinDev> 换了啊?
2007-08-23 09:42:43 <jackyz.zhao> yes
2007-08-23 10:35:45 <baojing.jiao> programming erlang 看了一半。基本上,如果扒过一些文档的话,都可以直接跳过。后面不知道会不会有些惊喜。
2007-08-23 10:36:25 <baojing.jiao> 这本书貌似比较入门呀
2007-08-23 10:36:41 <AvinDev> 就是入门书啊,给不扒文档的看的:)
2007-08-23 10:37:37 <panxiaof> 是不是就是那本500多页的那个书?
2007-08-23 10:38:07 <AvinDev> 是啊,jackz在翻译中
2007-08-23 10:38:24 <jackyz.zhao> 有基础的从16章开始看起
2007-08-23 10:38:28 <baojing.jiao> joe什么时候出几本对otp深入剖析,和实际工作使用,开发具有指导意义的书就好了。
2007-08-23 10:38:45 <panxiaof> 我打印了,看着好怕怕,真厚~
2007-08-23 10:38:47 <baojing.jiao> 或者mryufeng兄来写?
2007-08-23 10:38:55 <baojing.jiao> 就省的翻译了 ![]()
2007-08-23 10:39:09 <AvinDev> 那种书真是曲高和寡咯,不如几个牛人出个OpenDoc更好
2007-08-23 10:40:31 <baojing.jiao> 也是,也是。不过会者不难,难者不会。真会了,都懒的动笔了。
2007-08-23 10:40:50 <mryufeng> otp这么东西还是门槛太高了 感兴趣的人 已经一定的高度了自己都会摆平 不感兴趣的人 也不是看的很懂
2007-08-23 10:40:53 <panxiaof> 好像就是这个样子的
2007-08-23 10:41:00 <AvinDev> 哈哈,所以要督促yufeng同学多写blog
2007-08-23 10:41:18 <baojing.jiao> 这算是一个切实可行的途径。
2007-08-23 10:42:38 <baojing.jiao> 大部分人估计也就是使用otp做开发,不用深入到他是如何实现的。还有,erlang在实际应用中的最佳实践。
2007-08-23 10:42:45 <baojing.jiao> 也许这块可以写写?
2007-08-23 10:42:48 <jackyz.zhao> OTP可以和ejb对照起来理解,如果有EJB的经验,个人感觉还是相当好懂的。
2007-08-23 10:43:19 <baojing.jiao> 至于otp的深入剖析,就是yufeng兄说的情况了。
2007-08-23 10:43:38 <baojing.jiao> ejb没用过 ![]()
2007-08-23 10:43:40 <panxiaof> 大家要不都说一下自个学习erlang的切入点,我现在是边学erlang做看那个ejabberd源码~
目标是改一改ejabberd,加一点功能
2007-08-23 10:43:52 <jackyz.zhao> 书里面这么写:This is the most important section in the entire book, so read it once, read it twice, read it 100 times—just make sure the message sinks in.
2007-08-23 10:45:34 <baojing.jiao> erlang无外乎也是一门语言,一门语言入门,首先是语法。然后是api,深入的话,就是语义实现、原理。
2007-08-23 10:45:58 <baojing.jiao> 要看懂ejabber,yaws,估计更多是其他领域的知识了吧
2007-08-23 10:46:15 <AvinDev> 呵呵,我觉得已经是一个平台了,里面提供的工具异常强大,只是yufeng同学还没写blog来介绍
2007-08-23 10:46:22 <panxiaof> en.我对xmpp比较熟悉~
2007-08-23 10:46:22 <erlanging> 昨天看了一下process
2007-08-23 10:46:24 <baojing.jiao> erlang主要是应用在网络开发上,如果没有这方面的经验,还真不好深入。
2007-08-23 10:46:37 <erlanging> 果然归约也好用嘞...
2007-08-23 10:46:51 <erlanging> 同步都可不做, 归约为原子操作
2007-08-23 10:46:56 <erlanging> smp才需要
2007-08-23 10:47:14 <AvinDev> ejabberd这些,没有相关领域知识,比较难看懂,但是价格上还是蛮简单的,看otp的sup等文件就可以知道大体的架构了
2007-08-23 10:47:23 <AvinDev> 架构上。。
2007-08-23 10:47:46 <baojing.jiao> erlang首先是一门语言,再者就是一个平台么 ![]()
2007-08-23 10:47:48 <erlanging> ejabberd比较容易看懂啊, 标准的otp架构
2007-08-23 10:48:05 <mryufeng> 其实erlang的实现 如果做网络程序作的很多 很深入的花话 应该都多多少少解决过
2007-08-23 10:48:11 <panxiaof> 是啊,已经在架构上上了一点道道 ,但平时都工作,也没太多时间看这个东东
2007-08-23 10:48:17 <AvinDev> 架构是容易看懂,但是代码这些细节的,我不懂xmpp。。
2007-08-23 10:48:54 <panxiaof> 哦~erlanging读过ejabberd源码是吧?对我来说还是有点难度
2007-08-23 10:48:57 <mryufeng> tsung作压力测试框架还不错
2007-08-23 10:49:29 <erlanging> -____- 偶没看过细节... 偶现在在看erlang虚拟机的代码
2007-08-23 10:50:16 <panxiaof> 也是高手级的,喜欢看人家源码的~hehe
2007-08-23 10:50:20 <AvinDev> 哈哈,果然是搞vm的
2007-08-23 10:50:34 <panxiaof> erlaning是做VM的吗?
2007-08-23 10:50:36 <erlanging> 向yufeng前辈学习!
2007-08-23 10:51:01 <mryufeng> erlang的vm其实就是比较大众的那种 register-based
2007-08-23 10:51:07 <erlanging> 不好意思,估计提到前辈两个字, yufeng会很郁闷~~~
2007-08-23 10:51:26 <mryufeng> 和lua的就很象
2007-08-23 10:51:54 <erlanging> 一般有哪些register嘞?
2007-08-23 10:51:57 <panxiaof> 其实对于什么,我最关心的就是性能问题,只要erlang的VM效率高,我就高兴
2007-08-23 10:52:05 <erlanging> 参数reg
2007-08-23 10:52:10 <mryufeng> 不过erlang是一个成熟系统 象beam支持加密 预防源码被人decompile
2007-08-23 10:52:16 <baojing.jiao> erlang的轻量级进程全靠这个高效vm了吧
2007-08-23 10:52:46 <mryufeng> vm和erlang的process没有太大关系
2007-08-23 10:53:07 <erlanging> process_main是vm的主线
2007-08-23 10:53:10 <mryufeng> 俺我的理解 process schedule erlang其实作的不是很好
2007-08-23 10:53:35 <mryufeng> 大量的process的时候 性能还是低
2007-08-23 10:53:45 <panxiaof> 哦!那希望下次他们做得好一点
2007-08-23 10:54:00 <mryufeng> process_main是vm的主线 是指在当个 smp的情况下
2007-08-23 10:54:11 <mryufeng> 多SMP 就不是这样的哦
2007-08-23 10:54:18 <baojing.jiao> yufeng兄改进一下,提交上去不就行了。还用下次?
2007-08-23 10:54:25 <erlanging> 那是虾米? smp的我都还没注意
2007-08-23 10:54:37 <mryufeng> smp的复杂很多
2007-08-23 10:54:49 <mryufeng> 改进目前还没有这个能力
2007-08-23 10:54:55 <erlanging> 飞去瑞典~~
2007-08-23 10:55:13 <mryufeng> 去年的时候 我作类似的架构的时候 调smp快吐血了
2007-08-23 10:55:17 <mryufeng> 所以怕怕
2007-08-23 10:56:26 <erlanging> 基于寄存器的vm ,一般会有哪些register嘞?
2007-08-23 10:56:32 <panxiaof> 我在测试mnesia性能的时候,双核的cpu,一般只有一个是80%,另一个是20%.为什么不是两个都 是80%呢?
2007-08-23 10:57:18 <mryufeng> 就和intetl的那样ax bx cx 什么的 一般搞个5-6个reg就够用了
2007-08-23 10:58:07 <mryufeng> cpu不平衡的问题 是操作系统考虑到cpu的亲缘性
2007-08-23 10:58:18 <mryufeng> 你可以在os 那边设置的哦
2007-08-23 10:58:59 <panxiaof> 真是胜读1个月的书啊,
2007-08-23 10:59:11 <panxiaof> 我看看,一真不明白这是怎么回事
2007-08-23 10:59:30 <baojing.jiao> 读一个月书估计还找不到原因。哈哈
2007-08-23 10:59:31 <mryufeng> 俺说的是linux
2007-08-23 10:59:37 <mryufeng> 其他的系统俺不熟悉
2007-08-23 11:00:12 <panxiaof> 好像是的,一个月估计也找不出来~哈,
2007-08-23 11:00:26 <AvinDev> 在win下面,用非smp运行压力大的应用,也会出现两个core的cpu占用加起来100%的情况
2007-08-23 11:01:25 <panxiaof> 是的~但是有启动erl的时候,加了一些设置,好像还是这样:加起来是100%
2007-08-23 11:01:57 <mryufeng> 不止100% 俺的duo core 俺就跑到180%
2007-08-23 11:02:09 <AvinDev> 你开了smp没有
2007-08-23 11:02:09 <erlanging> For ten years (since 1993, when Lua was first released), Lua used a stack-based virtual machine, in various incarnations. Since 2003, with the release of Lua 5.0, Lua uses a register-based virtual machine. This register-based machine also uses a stack, for allocating activation records, wherein the registers live. When Lua enters a function, it preallocates from the stack an activation record large enough to hold all the function registers. All local variables are allocated in registers. As a consequence, access to local variables is specially efficient.
2007-08-23 11:03:10 <mryufeng> of course 开了smp
2007-08-23 11:03:20 <panxiaof> j是不是就是启动erl的时候,加一个smp的参数?
2007-08-23 11:03:22 <AvinDev> 我说非smp,老大看清楚。。
2007-08-23 11:04:56 <mryufeng> 没有错了 操作实现调度的时候 把计算分摊到每个cpu上去的
2007-08-23 11:05:03 <mryufeng> 加起来还是100%
2007-08-23 11:06:07 <baojing.jiao> 那剩下的100%干什么?
2007-08-23 11:06:39 <mryufeng> 记住 操作系统不是为你一个人服务的哦
2007-08-23 11:06:41 <AvinDev> 剩下的是给其他进程用的啊,没有开smp就是只能用一个100%
2007-08-23 11:07:16 <mryufeng> right
2007-08-23 11:07:25 <panxiaof> $erl +S 2 -smp ,这样启动erl就说明启用了smp了吧
2007-08-23 11:07:42 <baojing.jiao>
明白了
2007-08-23 11:07:45 <AvinDev> 一般 -smp 就够了,会判断多少个cpu的
2007-08-23 11:07:51 <erlanging> 启动之后会有提票
2007-08-23 11:07:56 <erlanging> 提示
2007-08-23 11:08:16 <erlanging> 提示是否 hipe, kernel poll, smp有几个
2007-08-23 11:08:24 <erlanging> 之类的信息
2007-08-23 11:08:39 <mryufeng> erts自己去多系统有多少个cpu的
2007-08-23 11:08:44 <panxiaof> 那个+k true有什么作用,对性能影响 大吗(不好意思,这个问题是不是有点傻)
2007-08-23 11:08:51 <erlanging> 大
2007-08-23 11:08:56 <mryufeng> 非常大
2007-08-23 11:09:04 <erlanging> 不过你的erlang得编译的时候加选项
2007-08-23 11:09:07 <erlanging> ./configure的时候
2007-08-23 11:09:09 <AvinDev> 开Epoll的哦,网络连接多的时候绝对要开
2007-08-23 11:09:12 <mryufeng> 特别是io密集的
2007-08-23 11:09:32 <panxiaof> 哦~get~
2007-08-23 11:09:35 <erlanging> 这点是我和yufeng GG欢快的回忆....
2007-08-23 11:09:52 <AvinDev> 断背啊。。。
2007-08-23 11:10:46 <panxiaof> ehhe
2007-08-23 11:11:27 <panxiaof> 我看过一个文章,是不是就是你两位在linux下不停的调~然后就弄了一个很高的性能出来
2007-08-23 11:12:10 <panxiaof> 原来另一个人是erlanging啊~hoho
2007-08-23 11:13:30 <erlanging> -___- I am coderplay, 好多马甲, 嘎嘎~~
2007-08-23 11:13:41 <baojing.jiao> 晕倒~
2007-08-23 11:13:42 <mryufeng> 其实要大的并发 os 和 tcp stack都要做很多的微调
2007-08-23 11:13:42 <panxiaof> 不过你的erlang得编译的时候加选项 ??是不是说我写的erlang程序在编译的时候也要加选项?
2007-08-23 11:13:58 <AvinDev> 不是,是在 ./configure 那里
2007-08-23 11:14:19 <mryufeng> erlang emulator 和 erl程序 都要细致的调
2007-08-23 11:14:39 <mryufeng> 否者这么多环节 都影响性能
2007-08-23 11:16:06 <erlanging> 哪天列个清单吧 -____-
2007-08-23 11:16:47 <panxiaof>
太好了~
2007-08-23 11:17:21 <erlanging> 我是要yufeng列出来,俺不会~~~
2007-08-23 11:18:44 <panxiaof> 你的心思是众望的归啊~
2007-08-23 11:44:23 <panxiaof> 目前Windows 版本的Erlang,还不支持SMP. ???这是真的吗?
2007-08-23 11:44:34 <AvinDev> right
2007-08-23 11:45:01 <erlanging> 还不支持完成端口
2007-08-23 11:45:09 <panxiaof> 哦,我一直都是用window跑erlang
2007-08-23 11:51:15 <zoom.quiet> 晕!!凡是服务,千万别动M$ 的主意,那是自虐行为,标准的
2007-08-23 11:52:12 <panxiaof> en
2007-08-23 11:52:33 <panxiaof> 过现在主要是开发测试阶段
2007-08-23 11:54:21 <zoom.quiet> 从开发阶段就使用运营阶级相同的环境,可以节省N多不必要的调整的
2007-08-28 11:36:41 <panxiaof> {ok, {{simple_one_for_one, 10, 1}, [{undefined, {Module, start_link, []}, temporary, brutal_kill, worker, [Module]}]}}.
像上面那样用了一个undefined,感觉怪怪的,请问一下,undefined是不是一个特殊的东东,是不是放了个空,真实的worker没起来,还是在这里undefined跟别的PID名一样?
2007-08-28 11:37:25 <panxiaof> 望赐教
2007-08-28 11:37:33 <mryufeng> undefined是个 atom来着
2007-08-28 11:37:54 <panxiaof> 是个特殊的atom吗?
2007-08-28 11:38:15 <baojing.jiao> atom有特殊之说么?
2007-08-28 11:39:03 <panxiaof> 没有,不过superviser程序把它特殊处理,
2007-08-28 11:39:05 <panxiaof> 会不会这样
2007-08-28 11:39:09 <mryufeng> 不是什么特殊的atom atom大多数用来作tag区分各种情况 就像c的enum一样
2007-08-28 11:40:18 <panxiaof> 这个知道,照理说,undefined在这里是个PID的名字,可是这个地方被调用了好几次,大家新的进程都叫”undifined”?
2007-08-28 11:40:54 <panxiaof> 可以给不同的process起同一个名字吧
2007-08-28 11:41:03 <panxiaof> 吗?
2007-08-28 11:41:38 <baojing.jiao> 我猜不可以
2007-08-28 11:42:05 <mryufeng> case get_child(Name, State) of
{value, Child} when Child#child.pid =:= undefined ->
case do_start_child(State#state.name, Child) of
{ok, Pid} ->
NState = replace_child(Child#child{pid = Pid}, State),
{reply, {ok, Pid}, NState};
{ok, Pid, Extra} ->
NState = replace_child(Child#child{pid = Pid}, State),
{reply, {ok, Pid, Extra}, NState};
Error ->
{reply, Error, State}
end;
{value, _} ->
{reply, {error, running}, State};
_ ->
{reply, {error, not_found}, State}
end;
2007-08-28 11:42:47 <panxiaof> hehe,还是源码管用~
2007-08-28 11:42:50 <panxiaof> tanks
2007-08-28 11:44:07 <mryufeng> 成功启动以后 child.pid 就被设为pid 否者还是undefined 后续的程序就可以这样判断 when Child#child.pid =:= undefined
2007-08-28 11:46:08 <panxiaof> 谢谢,这个东东还学了不久,还要好好理解
2007-08-28 11:46:38 <mryufeng> 呵呵 多看看erlang自己带的stdlib kernel这2个模块
2007-08-28 11:46:46 <mryufeng> 看多了自然就会了
2007-08-28 11:47:21 <panxiaof> 那体erlang的书上写的,OPT这一部分要看100次啊,哈哈
2007-08-28 11:47:44 <panxiaof> 不过他自个的实验源码,现在到不是很想看
2007-08-28 11:47:46 <mryufeng> 那个只是小小的概念理解都要100编
2007-08-28 11:48:05 <panxiaof> 不过他自个的实现源码,现在到不是很想看
2007-08-28 11:48:06 <baojing.jiao> 要不组织用erlang写一个开源的东西?
2007-08-28 11:48:18 <mryufeng> erlang的很多惯用法 在其他过程语言里面是看不到的
2007-08-28 11:48:27 <mryufeng> 写的很绝的
2007-08-28 11:48:27 <baojing.jiao> 不知道erlang做负载均衡是否可行?
2007-08-28 11:49:06 <mryufeng> 负载均衡 erlang就作的很好了
2007-08-28 11:49:16 <panxiaof> 我吃饭去先~88 大家
2007-08-28 11:49:29 <baojing.jiao> 我的意思是用他做其他应用的复杂均衡软件
2007-08-28 11:49:47 <mryufeng> 这个效率有问题
2007-08-28 11:49:51 <AvinDev> LB? HA?
2007-08-28 11:50:06 <baojing.jiao> 类似于haporxy反向代理这种
2007-08-28 11:50:26 <AvinDev> CPU占用太高了,不如C的高效:(
2007-08-28 11:50:49 <mryufeng> 这个不行 和haproxy比 erlang效率太低了
2007-08-28 11:53:13 <baojing.jiao> 哦,不过实际用的时候,这些已有的loadbalance,本身就是单入口的,压力大的话,会不会扛不住?
2007-08-28 11:53:33 <baojing.jiao> 是不是这样的压力只能使用硬件了?
2007-08-28 11:53:50 <mryufeng> 你可以用dns rr分开哦
2007-08-28 11:54:05 <AvinDev> 如果压力大到连硬件都不行,就只能用dns方式了
2007-08-28 11:54:18 <baojing.jiao> dns轮询?
2007-08-28 11:54:31 <baojing.jiao> 效果貌似不是很好
2007-08-28 11:54:32 <mryufeng> y
2007-08-28 11:54:48 <mryufeng> 点解
2007-08-28 11:55:15 <baojing.jiao> 我的意思是这种用高并发的,可否用一个erlang集群,做负载均衡。
2007-08-28 11:55:23 <baojing.jiao> 扛不住了,就加节点,机器。哈哈
2007-08-28 11:55:37 <baojing.jiao> 随便想想,嘿嘿
2007-08-28 11:56:19 <mryufeng> 呵呵 好好想想客户如何访问你的集群
2007-08-28 12:21:43 <baojing.jiao> 老大有时间了,发起一个项目吧。让熟悉erlang的可以更深入,让开始学习的有个参考。
2007-08-28 12:45:48 <mryufeng> 这个想法不错哦
2007-08-29 13:54:14 <panxiaof> 在erlang的IDE工具上,不知道大家都是怎么用的,我一点都不知道,只会有utlr_edit写一些小程序
2007-08-29 13:54:43 <panxiaof> 有没有人告诉最好的erlang 的IDE
2007-08-29 13:55:09 <zhuzhaoyuan> Emacs有erlang的mode。基于Eclipse的没试过
2007-08-29 13:55:58 <panxiaof> 对emacs不熟悉,看来这次是不得不去熟悉了
2007-08-29 13:56:42 <rory.cn> vim呢?
2007-08-29 13:57:15 <panxiaof> 一样不熟悉~~~以前都是在widows下做开发的
2007-08-29 13:57:36 <baojing.jiao> vim
2007-08-29 13:57:37 <panxiaof> 不过听说过emacs是个很烦的东西,ai~
2007-08-29 13:57:43 <baojing.jiao> 还是不错的
2007-08-29 13:58:33 <rory.cn> 慢慢用就熟悉了。
2007-08-29 13:58:35 <baojing.jiao> 至少启动速度比emacs快。使用起来,就用一些简单的命令。我就把他当notepad用。
2007-08-29 13:58:39 <rory.cn> 现在在用vim
2007-08-29 13:58:40 <panxiaof> 有谁知道ejabberd的开发者用得是怎么样的IDE,也是emacs吗?
2007-08-29 14:18:27 <baojing.jiao> 老大对我昨天的提议有什么进展没,有进展了,及时通知呀。哈哈,等着呢
2007-08-29 16:24:25 *** <bitfall> has left
2007-08-29 16:47:30 <panxiaof> werl.exe -env ERL_MAX_PORT=32000 -s ejabberd
当中的-s是什么意思啊?
2007-08-29 16:47:46 <panxiaof> werl与erl有什么区别吗?
2007-08-29 16:48:04 <AvinDev> werl在win下功能比较齐全
2007-08-29 16:48:19 <panxiaof> 当中的-s是什么意思啊?
2007-08-29 16:48:40 <AvinDev> -s 就是在shell下面执行模块里面的函数啊 -s 和 -run 是类似的
2007-08-29 16:49:34 <panxiaof> -s ejabberd就相当于 调用ejabberd:start().是吧,明白了
2007-08-29 16:51:21 <panxiaof> i got it
2007-08-29 16:51:44 <panxiaof> 又是一个默认的用法
By default 我怎么加入你们的讨论群?谢谢
Hello, blogger, your article very good, looking forward to sharing your latest