Erlang Gtalk 讨论群9月份聊天记录
9月份聊天记录,全2000多行,杀猫慎入:)
2007-09-02 00:24:58 <panxiaof> emacs和vim,netBeans,还有erlide哪个好啊,我对这些都有点陌生。。。。
2007-09-02 00:25:29 <panxiaof> 就说哪个用来写erlang最有前途吧~
2007-09-02 00:25:55 <baojing.jiao> 熟悉哪个用那个
2007-09-02 00:26:12 <panxiaof> 都是没太用过`
2007-09-02 00:26:24 <panxiaof> 一个起跑线~现在都有notebook
2007-09-02 00:26:39 <baojing.jiao> 自己比较喜欢vim
2007-09-02 00:27:03 <baojing.jiao> 可以当作notepad用,而且启动速度快。
2007-09-02 00:27:09 <panxiaof> 有没有语法提示?debug功能?
2007-09-02 00:27:21 <baojing.jiao> 有高亮提示。
2007-09-02 00:27:26 <baojing.jiao> debug貌似就没有了。
2007-09-02 00:27:55 <baojing.jiao> 错了,应该是我没用过。:)
2007-09-02 00:28:53 <panxiaof> 还是糊涂得很,不过还是谢谢你,我自个再看看。
2007-09-02 00:32:25 <baojing.jiao> 我打开vim,按i进入编辑模式就当notepad用了。常用的就那些命令。打印出来,粘到墙上。很快就会了。我也就是让erl有个语法高亮显示,至于debug,没有用过。
2007-09-03 18:00:54 <panxiaof> 早上问了一个问题,没人回答,现在很不好意思再问一下
2007-09-03 18:01:07 <panxiaof> ets的表,能不能有两个index
2007-09-03 18:01:33 <linningjie> 我是 新手 不懂啊
2007-09-03 18:01:53 <panxiaof> ![]()
2007-09-03 18:02:02 <mryufeng> 不行 没有这个参数
2007-09-03 18:02:26 <mryufeng> 他只能指定在tuple指定一个key pos
2007-09-03 18:02:41 <mryufeng> 默认是1
2007-09-03 18:03:05 <panxiaof> 哦~那如果涉及到多个index的话,只能用mnesia
2007-09-03 18:03:18 <jackyz.zhao> 你可以用mnesia,或者自己再加一个“反向查找记录”(如果你的数据可以支持的话)
2007-09-03 18:03:26 <panxiaof> (虽然听说mnesia也是在ets开发的)
2007-09-03 18:03:57 <baojing.jiao> mnesia应该是ets的一个封装版本吧?便于操作
2007-09-03 18:04:14 <mryufeng> 是的
2007-09-03 18:04:42 <mryufeng> mnesia底层的存储就是ets和dets
2007-09-03 18:04:45 <jackyz.zhao> mnesia以ets/dets作为其存储机制,但其实增加一些别的东西。
2007-09-03 18:05:37 <panxiaof> mnesia做的表,如果系统关了,我希望那些表同时自动就删除,但好像每次起来的时候还都在,是不是只能主动写语句删除?
2007-09-03 18:07:05 <baojing.jiao> mnesia可以设定存储方式的吧?难道宕机会自动dump?
2007-09-03 18:07:28 <panxiaof> 我设定了ram_copy
2007-09-03 18:08:07 <panxiaof> 再仔细看看吧~反正现在看来就没了ram_copyies的话,关了erl就会dump~
2007-09-03 18:08:07 <baojing.jiao> 人家都是希望机子挂了数据保存下来,你倒好,反过来玩:)
2007-09-03 18:08:20 <jackyz.zhao> 那你就直接用ets得了
2007-09-03 18:08:22 <panxiaof> 每个东东需求不一样了
2007-09-03 18:08:36 <panxiaof> 但ets不支持多个index啊
2007-09-03 18:08:44 <panxiaof> 问题又跑回来了:(
2007-09-03 18:09:23 <jackyz.zhao>
应该有这个设置的吧 ram_copy 和别的属性的组合啥的。
2007-09-03 18:09:45 <panxiaof> 回家试试~
2007-09-03 18:09:51 <mryufeng> index This is a list of attribute names, or integers, which specify the tuple positions on which Mnesia shall build and maintain an extra index table.
2007-09-03 18:10:20 <mryufeng> 看来是mnesia自己维护额外的index
2007-09-03 18:10:46 <panxiaof> 就是再建一个ets表什么的`
2007-09-03 18:10:59 <panxiaof> 我想
2007-09-03 18:11:13 <mryufeng> 今天仔细看下mnesia这个的实现
2007-09-03 18:11:39 <jackyz.zhao> 是地,它就是额外建表的方式来做多字段的索引地。
2007-09-03 18:11:45 <panxiaof> 已经看过了?yufeng兄就是yufeng兄
2007-09-03 18:12:01 <jackyz.zhao> 只不过你不用管,它帮你搞定了。
2007-09-03 18:12:23 <mryufeng> 俺前端主要是关注他如何分布 如何fragment
2007-09-03 18:12:25 <panxiaof> 我先下了~88
2007-09-03 18:12:36 <mryufeng> 俺对这个比较关心
2007-09-03 18:12:42 <jackyz.zhao> ![]()
2007-09-03 18:13:26 <baojing.jiao> 俺们还停留在使用上 ![]()
2007-09-03 18:14:18 <baojing.jiao> 老大啥时候领头做个项目让大家参与参与呀,不知有什么打算没
2007-09-03 18:15:43 <mryufeng> 感觉现在还不能随心所欲地操纵erlang 作起东西也是不地道的样子
2007-09-03 18:16:42 <baojing.jiao> 有进度了,随时给大家通报一下 ![]()
2007-09-03 18:16:44 <mryufeng> 还得多看看 erlang stdlib和kernel自己的实现 熟练了以后 才会有生产力的样子
2007-09-03 18:17:49 <mryufeng> 比较一些惯用法 别人不会教你 得从人家程序的行见去挖掘
2007-09-04 09:00:49 <bitcowboy> Erlang里面就没有数组这样的结构吗?
2007-09-04 09:01:14 <bitcowboy> 就是nthElement操作可以在O(1)时间内完成的。
2007-09-04 09:06:16 <xushiweizh> erlang基本的数据结构:Turples, Records, Lists, Bits
2007-09-04 09:06:37 <xushiweizh> 我觉得Bits比较接近你的需求。
2007-09-04 09:07:06 <bitcowboy> 我看下Bits
2007-09-04 09:07:36 <xushiweizh> 不过也不完全是,因为Bits就是Binary Buffer。
2007-09-04 09:07:53 <xushiweizh> 你要的是Type Array。
2007-09-04 09:10:51 <bitcowboy> Erlang中Bits也是只读的吧?
2007-09-04 09:10:58 <xushiweizh> 嗯
2007-09-04 09:11:31 <bitcowboy> 如果要交换一个Array中两个数的位置应该还是不能像C中那样高效吗?
2007-09-04 09:12:21 <xushiweizh> Bits肯定不能。
2007-09-04 09:13:11 <bitcowboy> 要写个堆排序都快写死我了。找不到高效率的实现方法。
2007-09-04 09:13:40 <bitcowboy> 除非用balanced binary tree实现。不过那就不是堆结构了。
2007-09-04 09:16:29 <xushiweizh> 可以考虑用ets,如果要高效的话。
2007-09-04 09:16:42 <bitcowboy> ets是啥?
2007-09-04 09:17:35 <xushiweizh> ets是一个表结构,可修改,而且没有gc。
2007-09-04 09:18:24 <baojing.jiao> ets相当于内存表
2007-09-04 09:18:40 <xushiweizh> TableId = ets:new(test, [Mode]),
ets:insert(TableId, {a, 1}),
ets:insert(TableId, {b, 2}),
ets:delete(TableId).
2007-09-04 09:18:52 <xushiweizh> 看起来和C语言是不是差不多?
2007-09-04 09:19:05 <xushiweizh> TableId就像个指针。
2007-09-04 09:20:02 <bitcowboy> 嗯。
2007-09-04 09:20:03 <xushiweizh> 你看看第15章。
2007-09-04 09:20:05 <bitcowboy> 我看看。
2007-09-04 09:20:13 <bitcowboy> 嗯,找到了。
2007-09-04 09:26:54 <bitcowboy> 嗯,看了一下,ets基本上就是一个大的STL map。
2007-09-04 09:27:08 <xushiweizh> 差不多。
2007-09-04 09:27:24 <bitcowboy> key的查找时间应该是O(logN).
2007-09-04 09:27:54 <xushiweizh> 这个我没有发言权,没看过实现。
2007-09-04 09:28:31 <bitcowboy> 做不到O(1)。拿来做heap还是不划算了。
2007-09-04 09:29:40 <bitcowboy> 呵呵,基于key查找是很难做到O(1)的。除非hash,但是hash函数本身也有开销。
2007-09-04 09:29:44 <xushiweizh> 嗯,要真去做堆排序不是erlang的特长。数据不可修改,这点就已经限定死了。
2007-09-04 09:30:50 <xushiweizh> 这是一个双刃剑,不过我觉得总体来讲利大于弊。
2007-09-04 09:31:47 <bitcowboy> Erlang应该搞个Priority Queue的库或者BIF。
2007-09-04 09:32:14 <bitcowboy> 或者用C实现一个,让Erlang调C的模块。
2007-09-04 09:44:43 <baojing.jiao> erlang给网络开发提供了一个很好的机制和平台,如果对效率要求高或者特别实现的地方,可以用c写,erlang去调用么。虽然这块我不是很清楚 ![]()
2007-09-04 09:45:22 <baojing.jiao> 等过段时间,希望老大们给出一个erlang最佳实践指南
2007-09-04 09:46:14 <xushiweizh> erlang + c是一个很不错的选择。两者互补性很强。
2007-09-04 09:47:34 <panxiaof> 可是调用过程本身的效率怎么样呢?
2007-09-04 09:48:45 <bitcowboy> Erlang+C 有一个问题。Erlang在调C的时候本身能保证多线程调用是互斥的吗?还是C的模块本身是要可重入的?
2007-09-04 09:49:08 <xushiweizh> 还没细看。不过既然erlang是用c写的,调用应该还是比较自然吧,大不了我们做个定制的erlang。 ![]()
2007-09-04 09:49:40 *** <ashchan> joins this room.
2007-09-04 09:49:42 <xushiweizh> C最好是可重入的。
2007-09-04 09:50:30 <baojing.jiao> c可以做成一个节点,和erlang用消息交互。
2007-09-04 09:50:31 <xushiweizh> 全局变量是可耻的。C程序员应该忘记它。 ![]()
2007-09-04 09:50:48 <bitcowboy> 如果是要C保证的话,那么其实我们把一个程序中最影响效率最可能成为瓶颈的部分又退化到“锁”的问题上。整个Erlang写的程序所有Erlang的优点都退化调了。
2007-09-04 09:50:53 <ashchan> 有全局变量这种东西吗?:)
2007-09-04 09:51:04 <baojing.jiao> 那么c就会被封装到这个进程或者节点,对erlang就不会有太大影响了吧?
2007-09-04 09:51:17 <xushiweizh> C做成节点的例子我看过了,不知道效率如何,我觉得应该还有更高效的方式。
2007-09-04 09:53:09 <panxiaof> 问一下比较傻的问题,gen_server的handle_call,handle_cast等东东,是不是一定都是一个安一个顺序执行,不会打岔是吧
2007-09-04 09:56:08 <xushiweizh> 打岔有什么问题?
2007-09-04 09:56:26 <xushiweizh> 反正函数没有什么副作用。 ![]()
2007-09-04 09:56:57 <panxiaof> 就是一个handle_cast执行到一半,另一个也开始了
2007-09-04 09:57:06 <xushiweizh> 没问题的。
2007-09-04 09:57:27 <xushiweizh> 而且完全有可能出现这种情况。
2007-09-04 09:57:38 <panxiaof> 应该是一个执行完也,才执行等二个哦~
2007-09-04 09:57:55 <bitcowboy> CPU核心越多,概率越大。
2007-09-04 09:58:09 <panxiaof> kao~gen_server不可能吧
2007-09-04 09:59:10 <panxiaof> 我就是想有一个更明确的回案,因为我觉得gen_server本身是起了一个线程,他是一个个挨着
receiver message然后处理的
2007-09-04 09:59:35 <panxiaof> 所以不可能出现一个执行一半另一个就开始执行的情况
2007-09-04 10:00:02 <panxiaof> 我就是想有一个更明确的回案,因为我觉得gen_server本身是起了一个process,他是一个个挨着
receiver message然后处理的
所以不可能出现一个执行一半另一个就开始执行的情况
2007-09-04 10:02:15 <xushiweizh> gen_server不能start多个吗?
2007-09-04 10:03:16 <mryufeng> gen_server设计的目的就是单子的好像哦
2007-09-04 10:03:33 <panxiaof> 我是说,一个start里(多个start出来的process,当然他们之间没瓜葛)
2007-09-04 10:03:37 <mryufeng> 根据名字访问的对象都是每个的
2007-09-04 10:03:50 <panxiaof> en~
2007-09-04 10:04:12 <panxiaof> yufeng在啊~
2007-09-04 10:04:28 <mryufeng> en
2007-09-04 10:04:56 <panxiaof> 请教一个问题,就是gen_server里,一个个handle_call是不是都是顺序挨个执行的》?
2007-09-04 10:05:44 <mryufeng> 是挨个的
2007-09-04 10:06:08 <mryufeng> 实现代码在gen.erl里面
2007-09-04 10:06:22 <panxiaof> 好,这样就放心使用了,就可以不用怕什么脏数据问题了
2007-09-04 10:06:26 <panxiaof> thanks
2007-09-04 10:06:54 <mryufeng> 典型的串行server 所以叫gen_server
2007-09-04 10:07:06 <mryufeng> 个人理解
2007-09-04 10:07:33 <panxiaof> 这个理解好~我也是刚这么认为的
2007-09-04 10:40:49 <baojing.jiao> 刚才那两位争论的,c如何和erlang结合使用,不知道老大有什么经验分享一下。
2007-09-04 10:41:18 <AvinDev> 有啥争论?我来迟了-_-
2007-09-04 10:41:40 <mryufeng> ei 已经很强大了 ei + rpc模式 你看下ei的实现
2007-09-04 10:42:18 <mryufeng> 典型的c/s用ei + gen_server做 真的是无比简单
2007-09-04 10:42:47 <panxiaof> ei??
2007-09-04 10:43:00 <mryufeng> erl interface
2007-09-04 10:43:13 <panxiaof> ![]()
2007-09-04 10:44:01 <mryufeng> mnesia 数据库 甚至特地用 ei 作了个表 方便ei 的hidden node 存取数据
2007-09-04 10:45:58 <mryufeng> ei 不好的一点就是 安全机制太简单 就是cookie的方式 这样被人突破以后 会影响服务器的安全
2007-09-04 10:46:14 <mryufeng> 不过在受管环境 问题也不大。
2007-09-04 10:58:52 <baojing.jiao> bitcowboy 、xushiweizh 出来吭吭声,把问题重提一下 ![]()
2007-09-04 10:59:41 <bitcowboy> 我的意思是,Erlang调用C模块我慎重。不要让C模块拖Erlang的后腿。
2007-09-04 11:00:14 <mryufeng> erlang调用c是driver c调用erlang是ei
2007-09-04 11:00:50 <bitcowboy> C代码单线程的时候效率肯定高,多线程就不一定了。
2007-09-04 11:01:04 <mryufeng> 其实erlang的driver实现也是很简单的模拟ioctl那种做法
2007-09-04 11:01:19 <mryufeng> ei本身是多线程安全的
2007-09-04 11:02:23 <mryufeng> ei 只要一把锁保护全局的 链接列表 也就是说在 connect 和 disconnect的时候 用到锁 其他的时候都是线程安全的
2007-09-04 11:02:33 <mryufeng> 这个没有什么疑问的
2007-09-04 11:02:59 <mryufeng> 有疑问的时候 代码是最好的答案
2007-09-04 11:03:01 <bitcowboy> 我是说Erlang调用C,你说的是C调用Erlang。
2007-09-04 11:03:46 <mryufeng> erlang的driver 设计的时候 已经考虑到锁的问题 2种说driver 和 port级别的
2007-09-04 11:04:20 <bitcowboy> 我不是担心线程安全。
2007-09-04 11:04:30 <mryufeng> 一般我们写driver的时候 其实很简单的调用dirver提供的lock函数 就好了
2007-09-04 11:04:36 <mryufeng> 那你担心什么
2007-09-04 11:04:43 <mryufeng> 不稳定?
2007-09-04 11:04:46 <bitcowboy> C代码的多线程效率。
2007-09-04 11:05:02 <bitcowboy> 这也是我们为什么学习Erlang的目的。
2007-09-04 11:05:41 <mryufeng> erlang的smp 里面一大堆lock condition 你认为有效率码?
2007-09-04 11:06:10 <bitcowboy> 呵呵。
2007-09-04 11:06:14 <bitcowboy> It depends.
2007-09-04 11:06:29 <mryufeng> 如何 depends
2007-09-04 11:06:54 <mryufeng> 其实erlang的lock没有任何效率 只是人家把复杂的事情 已经摆平了
2007-09-04 11:07:19 <mryufeng> 我们写driver的时候 相当于2次开发 开发效率就高了 而已
2007-09-04 11:07:30 <bitcowboy> Erlang的内存只读和独特的线程模型,已经很大程度减少了Lock的使用。当然不是完全没有Lock。
2007-09-04 11:07:42 <mryufeng> 谁说的
2007-09-04 11:07:49 <bitcowboy> 我决定不同意你的看法。
2007-09-04 11:08:01 <bitcowboy> 我绝对不同意的你看法。
2007-09-04 11:08:50 <mryufeng> 呵呵 不是同意不同意的问题 你自己可以看下代码 或者-smp 的时候strace下
2007-09-04 11:09:07 <mryufeng> 一陀的futex
2007-09-04 11:09:31 <panxiaof> 今天的问题,好像我都不太懂~不过看着讨论得不错~哈哈
2007-09-04 11:09:33 <AvinDev> 你们貌似一个在说SMP模式,一个在说非SMP?
2007-09-04 11:09:42 <bitcowboy> 不是的
2007-09-04 11:09:58 <bitcowboy> 大家看问题的角度不一样。
2007-09-04 11:10:14 <mryufeng> 其实erlang的smp的机制 和我之前作的系统的底层架构是一模一样的 我自己设计的底层 所以对smp非常熟悉
2007-09-04 11:10:25 <bitcowboy> 哈哈。
2007-09-04 11:10:29 <mryufeng> 非smp的时候 没有用到任何锁
2007-09-04 11:11:08 <bitcowboy> It’s ok. We can discuss.
2007-09-04 11:11:16 <bitcowboy> But
2007-09-04 11:12:04 <mryufeng> 俺一个月在调试各种锁的时候 快疯掉了 所以这种事情还是留给erlang那帮人慢慢把所有的细节都想好 我们做享其成
2007-09-04 11:12:19 <bitcowboy> 我觉得你很了解Erlang的实现,但是你没有理解Erlang的编程思想。
2007-09-04 11:12:45 <mryufeng> 我感觉不是
2007-09-04 11:13:02 <bitcowboy> Erlang绝对不仅仅是帮你写好了一堆锁这么简单。
2007-09-04 11:13:28 <mryufeng> 我认为function语言带来的immutable对程序员的帮助是太大了
2007-09-04 11:14:03 <bitcowboy> 理解了Erlang的编程思想,可以用C写出Erlang一样高并发能力的程序。
2007-09-04 11:14:25 <mryufeng> 但是你应该看到 任何都是不是凭空产生的 它的支撑系统都少不了的
2007-09-04 11:14:32 <bitcowboy> immutable的好处是什么?
2007-09-04 11:14:41 <mryufeng> 不是一样高并发 是高个数量级别的是程序。
2007-09-04 11:14:56 <bitcowboy> immutable好处就是多线程可以不加锁。
2007-09-04 11:15:13 <mryufeng> 这和多线程没有关系
2007-09-04 11:15:35 <mryufeng> process的设计是只有process自己才可以出来message
2007-09-04 11:16:09 <bitcowboy> MPI is a part of immutable.
2007-09-04 11:16:14 <baojing.jiao> yufeng是从实现的角度研究erlang如何实现了fp,至于fp的好处我想肯定大家都知道,要不然都不会在这里谈论了。可以就erlang的编程思想进行一下交流,越辩越明白么。
2007-09-04 11:17:29 <mryufeng> 别人只能把小心扔到他的msg queue里面 只要保证不同时扔 或者扔的时候 没有人在取消息 剩下的完全是 独占使用数据的 和多线程没有任何关系
2007-09-04 11:17:50 <erlanging> 好像错过了精彩演出?
2007-09-04 11:18:18 <mryufeng> 其实我们在设计c程序的时候 也是这样的思想 避免数据交叉使用 尽量让数据的owner来处理数据
2007-09-04 11:18:28 <bitcowboy> In a immutable enviroment, MPI is a good way of ipc.
2007-09-04 11:19:32 <mryufeng> 这个俺不是很懂 但是有一点就是erlang的设计是很中庸的 很务实的
2007-09-04 11:19:38 <baojing.jiao> 这个queue是不是得需要锁了
2007-09-04 11:19:52 <mryufeng> queue有锁呀
2007-09-04 11:20:11 <mryufeng> 但是锁的智能点
2007-09-04 11:20:21 <baojing.jiao> 嘿嘿,看来从你们的谈论中我还是学到点东西了么。哈哈
2007-09-04 11:20:52 <bitcowboy> No matter we talk about one assiment varibales or MPI, we’re talking about immutable. Why immutable so important? Because that’s lock free.
2007-09-04 11:20:53 <baojing.jiao> 自己对c没有经验,不过在了解erlang的过程中,发现erlang的实现确实是比较中庸的。
2007-09-04 11:20:57 <baojing.jiao> 符合我的口味。
2007-09-04 11:21:21 <panxiaof> 以前那一个即时通信的jvava写服务器wildfire的时候,上面写数拷贝使这个服务器的性能影响很大,他们经过优化,把从每秒转2000个包,变成了4000个包;
前天几看好erlang写的同样的服务器,不知道那个狗日的测试结果上写得,每秒2000包以上
感觉性能还是不太好,对erlang第一次产生了不太好的感觉
2007-09-04 11:21:33 <baojing.jiao> 把复杂的东西,在一个地方做掉。其他就方便多了。
2007-09-04 11:22:21 <mryufeng> bitcowboy我明白你的意思 我也明白immtuable 但是我感觉还是不要太停留在别人告诉你 这样那样 最好自己挖潜
2007-09-04 11:23:48 <mryufeng> 其实jabber 这样的文本协议处理是erlang的效率弱像来着
2007-09-04 11:24:16 <bitcowboy> You can’t see Erlang’s value when CPU is single core or dual core. But when CPU have tens or hundreds cores, you’ll see that.
2007-09-04 11:24:33 <cpunion> 2000个包?什么样的包?
2007-09-04 11:24:37 <mryufeng> erlang再出来binary效率就很高 因为他底层实现了很复杂的binary 和 bit操作
2007-09-04 11:25:07 <AvinDev> 啥时候Erlang能在GPU上面跑那才叫NB,GPU上好多核啊:)
2007-09-04 11:25:09 <panxiaof> 就是几百个字符,算是一包
2007-09-04 11:25:41 <mryufeng> erlang在出来文本协议的时候是这样的 binary->list->list操作 ->bianry
2007-09-04 11:25:53 <mryufeng> 而binary自己处理
2007-09-04 11:26:01 <erlanging> list好慢
2007-09-04 11:26:02 <mryufeng> 直接
2007-09-04 11:26:17 <cpunion> 不会吧,我测试短连接256字节一个包,每秒至少有8000个包,长连接都能达到4万的,用C++写的一个更高,长连接7万以上,4CPU
2007-09-04 11:26:27 <bitcowboy> GPUs use flow-computing modle, that’s quite diffrent.
2007-09-04 11:26:27 <mryufeng> list的实现是很慢
2007-09-04 11:27:43 <panxiaof> 我也觉得那个erlang写的ejabberd有很多不太好的地方,但这个2000个每秒的数据,还是有点不接收
2007-09-04 11:27:48 <panxiaof> 接受
2007-09-04 11:27:56 <mryufeng> 2000多差不多了
2007-09-04 11:28:06 <mryufeng> 俺我的理解
2007-09-04 11:28:25 <mryufeng> jabber的xml解释权 公司一个报文 封装一个报文
2007-09-04 11:28:50 <mryufeng> 你用c做个xml 解开 再 封装 你看下 多少时间
2007-09-04 11:29:12 <erlanging> ejabberd我记得可以用expat去解析xml
2007-09-04 11:29:26 <cpunion> XML是很慢。。
2007-09-04 11:29:37 <mryufeng> 100-200us 少了 + io 100us 加其他的 400-500us不是正常码
2007-09-04 11:30:14 <cpunion> 我们现在都是自己的协议格式
2007-09-04 11:30:48 <bitcowboy> Erlang现在的效率是满一点。我已经说了。当CPU有数十个核心是,Erlang的价值才能体现出来。
2007-09-04 11:30:51 <mryufeng> 之前我们用sip作协议的时候 买个$30000 radvision协议stack enocode和decode 用掉了70us 我们没有办法自己写了一个才70us
2007-09-04 11:31:30 <mryufeng> 有10个cpu的时候 我的程序不是也很块
2007-09-04 11:31:43 <erlanging> erlang最nb的是分布式
2007-09-04 11:31:51 <mryufeng> 其实erlang的很大核心不是smp 而是分布式
2007-09-04 11:31:54 <erlanging> smp才刚刚支持来着,估计有很大的空间
2007-09-04 11:32:26 <mryufeng> erlang的实现中我估计有30%是为分布设计的 而smp不到5%
2007-09-04 11:33:08 <mryufeng> 所以smp不是erlang的优势 而分布才是 我是这么理解的
2007-09-04 11:33:45 <bitcowboy> It depands.
2007-09-04 11:33:48 <erlanging> 顶
2007-09-04 11:34:32 <mryufeng> 过去erlang是没有smp的
2007-09-04 11:34:42 <mryufeng> 最近的版本才加进去的
2007-09-04 11:34:43 <erlanging> smp是MPI, PVM的强项
2007-09-04 11:35:15 <mryufeng> sctp smp 和 epoll 都是前2个版本加的功能
2007-09-04 11:35:34 <mryufeng> 而分布的时间应该是 erlang吃奶的时候就有了
2007-09-04 11:35:59 <mryufeng> 难度不能说明问题码
2007-09-04 11:36:16 <bitcowboy> 那个时候没有多核CPU。
2007-09-04 11:36:32 <bitcowboy> 要用发展的眼光看问题。
2007-09-04 11:36:44 <bitcowboy> 过去不代表未来。
2007-09-04 11:36:45 <mryufeng> 没有码?sun的多核都什么时候的东西了
2007-09-04 11:36:49 <bitcowboy> 要看到潜力。
2007-09-04 11:37:13 <mryufeng> 问题我认为 他的潜力 我们可以简单的获取到
2007-09-04 11:37:17 <bitcowboy> Sun的多核,没出几年。
2007-09-04 11:37:42 <mryufeng> ok 我们暂时不讨论这个问题
2007-09-04 11:37:59 <erlanging> erlang的计算能力是fortran的1/50, smp的加速比,再除以个50,也难受哦
2007-09-04 11:38:03 <bitcowboy> 大型机内部本质上是分布式结构的。
2007-09-04 11:38:22 <bitcowboy> Erlang是虚拟机跑的。
2007-09-04 11:38:35 <bitcowboy> Erlang可以不停机换模块的代码。
2007-09-04 11:38:40 <erlanging> 俺就是研究虚拟机的啦~~
2007-09-04 11:38:43 <mryufeng> 虚拟机180多条指令
2007-09-04 11:38:46 <bitcowboy> 这个对服务器是很高的。
2007-09-04 11:39:11 <bitcowboy> 可以不停机维护代码,对服务器程序而言是很有价值的。
2007-09-04 11:39:12 <mryufeng> 呵呵 俺们顺便还研究complier 研究vm 哦
2007-09-04 11:39:43 <mryufeng> 他是如何做到的不停机维护?
2007-09-04 11:40:06 <mryufeng> 这个erlang在设计和实现上 花了很多心思的
2007-09-04 11:40:16 <mryufeng> 从代码可以看出来
2007-09-04 11:42:23 <mryufeng> hot replace erlang在erlang module 级别 和 底层的dll driver 都做了很多努力
2007-09-04 11:43:24 <baojing.jiao> erlang的优势在于分布式,不在于并行,至少目前是这样是么?
2007-09-04 11:43:31 <mryufeng> 成打的工具 这个不是一般人能作出来的 需要很多花费精力
2007-09-04 11:43:57 <mryufeng> 并行科学计算 就不行
2007-09-04 11:44:26 <mryufeng> 但是并行作写计算 如 半io半计算的还是不错的选择
2007-09-04 11:44:51 <erlanging> 非数值的
2007-09-04 11:45:12 <mryufeng> 比如象goolge 那样的 给他些数据 让他找写什么呀 这个好像还挺现实的
2007-09-04 11:49:48 <bitcowboy> So, I said, it depands.
2007-09-04 11:54:30 <erlanging> It’s ur depands means depends?
2007-09-04 11:55:09 <bitcowboy> Sorry, typo.
2007-09-04 11:55:50 <erlanging> I get it
2007-09-05 13:29:00 <coderplay> 我想问问一般大家开发erlang,有哪些测试手段?
2007-09-05 13:29:11 <mjollnir.ray> eunit
2007-09-05 13:29:43 <coderplay> 跟踪呢?
2007-09-05 13:30:07 <mjollnir.ray> http://svn.process-one.net/contribs/trunk/eunit/doc/index.html
2007-09-05 13:30:26 <mjollnir.ray> http://news.csdn.net/n/20070905/108317.html
2007-09-05 13:32:00 <coderplay> 晕,打错了.不是测试,是调试
2007-09-05 13:32:56 <baojing.jiao> 调试用眼睛看。用笔推导。哈哈
2007-09-05 13:34:37 <coderplay> 感觉debugger不是很好用
2007-09-05 15:30:25 <mryufeng> http://mryufeng.javaeye.com/blog/120666
2007-09-06 10:10:51 <AvinDev> Erlang China 的 comments 那里有人在发 Erlang 的 offer,有兴趣的不妨试试:)
2007-09-06 10:11:07 <AvinDev> # mjchen Says:
September 5th, 2007 at 3:59 pm edit
Hi, May I know how to contact you, because our company opened several server / client engineer (erlang) positions recently. If you are interested in them, please do not hesitate to contact me.
I am staffing officer of Ubisoft Shanghai Studio, If you are interested in these positions, please contact me: ming-jian.chen@ubisoft.com
2007-09-06 10:11:47 <renfengxing> 来挖墙角的啊
2007-09-06 10:12:07 <xushiweizh> 哈哈,我这里也招erlang高手。
2007-09-06 10:12:12 <panxiaof> 哦,我技术还差了点,
2007-09-06 10:12:30 <panxiaof> 也不在上海
2007-09-06 10:12:40 <panxiaof> 看来没机会了
2007-09-06 10:14:04 <yuxh312> UBi, sigh
2007-09-06 10:14:28 <rory.cn> UBI怎么了?
2007-09-06 10:14:37 <renfengxing> 呵呵
2007-09-06 10:14:42 <yuxh312> 搞游戏的吧
2007-09-06 10:14:54 <rory.cn> 怎么叹气呢?
2007-09-06 10:14:59 <renfengxing> 小公司,不过貌似89年就成立了
2007-09-06 10:15:07 <yuxh312> Ubi不小啊
2007-09-06 10:15:15 <renfengxing> 多打?
2007-09-06 10:15:17 <renfengxing> 大?
2007-09-06 10:15:18 <yuxh312> 因为我不会玩游戏
2007-09-06 10:15:28 <bitcowboy> Ubi招Erlang程序员?
2007-09-06 10:15:38 <renfengxing> http://www.ubi.com/US/
2007-09-06 10:15:59 <bitcowboy> 待遇如何?
2007-09-06 10:16:05 <yuxh312> 上海只是ubi china
2007-09-06 10:16:22 <bitcowboy> 上海是一个研发中心。
2007-09-06 10:16:57 <yuxh312> zybx是不是被ubi offer过
2007-09-06 10:17:05 <bitcowboy> 是的。
2007-09-06 10:17:11 <bitcowboy> 不过他看不上。
2007-09-06 10:17:18 <yuxh312> 可惜ubi还是挖不动他
2007-09-06 10:17:51 <yuxh312> 貌似2kgame ,”是不是这么写的” 也试过offer他
2007-09-06 10:19:07 <bitcowboy> 2k games吧?
2007-09-06 10:19:23 <yuxh312> *_* , 一下忘了怎么写
2007-09-06 10:19:40 <baojing.jiao> what?
2007-09-06 10:19:50 <bitcowboy> 呵呵,不过Ubi好像不做网游的吧?
2007-09-06 10:20:00 <bitcowboy> 他们招Erlang程序干啥?
2007-09-06 10:20:22 <yuxh312> 多核时代了
2007-09-06 10:20:36 <yuxh312> 单机也跑并行嘛
2007-09-06 10:21:14 <baojing.jiao> 我错过了什么?由公司招erlang程序员了?
2007-09-06 10:21:18 <bitcowboy> Erlang写3D Engine还是不是很成熟吧?
2007-09-06 10:21:44 <xushiweizh> 说不定他们想做网游了。
2007-09-06 10:21:49 <AvinDev> baojing.jiao,看 http://erlang-china.org/ 第一个post的comments ![]()
2007-09-06 10:22:00 <jackyz.zhao> 上海育碧,游戏界的知名大拿,恐怕不是写clientside的code。
2007-09-06 10:23:31 <baojing.jiao> 育碧是做游戏的。
2007-09-06 10:23:50 <baojing.jiao> 我认识一个哥们是育碧的讲师。估计他们招erlang是去做server端吧
2007-09-06 10:24:24 <AvinDev> “opened several server / client engineer (erlang) positions recently”
估计两方都用Erlang
2007-09-06 10:24:59 <panxiaof> 。。。。
2007-09-06 10:25:19 <baojing.jiao> 客户端怎么用erlang?
2007-09-06 10:25:30 <baojing.jiao> 客户端基本上就是3d渲染了
2007-09-06 10:25:44 <coderplay> 把erts封装
2007-09-06 10:25:44 <baojing.jiao> erlang这块不是强项。
2007-09-06 10:25:50 <AvinDev> 呵呵,他们也没有说一定是游戏客户端:)
2007-09-06 10:26:06 <baojing.jiao> 他们不做游戏做什么? ![]()
2007-09-06 10:26:16 <coderplay> 他们是指?
2007-09-06 10:26:18 <coderplay> 来晚啦
2007-09-06 10:26:24 <yuxh312> UBi
2007-09-06 10:26:38 <baojing.jiao> 我找朋友帮我问问不就知道了。
2007-09-06 10:28:36 <coderplay> 育碧,呵呵
2007-09-06 10:28:50 <coderplay> 看样子是做服务器咯
2007-09-06 10:29:00 <renfengxing> 这么多人嘲笑UBI啊
2007-09-06 10:30:07 <baojing.jiao> who?
2007-09-06 10:31:19 <renfengxing> 你看看前面,都说的“ubi,呵呵,sigh”之类,俺不玩游戏,还没听过这公司…俺也 sigh一个
2007-09-06 10:31:47 <bitcowboy> 我也不玩游戏,不过Ubi还是听说过的。
2007-09-06 10:31:59 <renfengxing> …
2007-09-06 10:32:49 <yuxh312> 嗯,听说Ubi还是当年被WT熏陶的
2007-09-06 10:33:30 <bitcowboy> 有钱的公司我都听说过,哈哈哈
2007-09-06 10:59:28 <panxiaof> 再问一下一个问题,一般的台式机2G cpu 2G RAM 1秒能起多少process?? process有上限吗?
2007-09-06 11:00:04 <panxiaof> 能稳定空跑多少process
2007-09-06 11:00:08 <bitcowboy> 这个没试郭。
2007-09-06 11:00:22 <AvinDev> 上限是跟内存相关的哦,可以设每个process的堆大小
2007-09-06 11:00:25 <bitcowboy> 不过据说Erlang处理几万个process没问题。
2007-09-06 11:00:43 <AvinDev> 100W也是没问题滴
2007-09-06 11:01:19 <panxiaof> 那5秒内能起100W吗?
2007-09-06 11:01:28 <bitcowboy> 。。。。。
2007-09-06 11:01:35 <bitcowboy> 估计可以的。
2007-09-06 11:01:39 <AvinDev> 要看各人的机器的啊,你试试咧
2007-09-06 11:02:01 <panxiaof> 我希望能到那个级别~hehhe
2007-09-06 11:40:07 <coderplay> 处理io很容易占掉内存,process占很少啦
2007-09-06 11:40:43 <baojing.jiao> 怎么又突然冒出一句
2007-09-06 11:40:51 <AvinDev> yufeng在那64位机器上跑了多少个进程?
2007-09-06 11:41:47 <coderplay> 没跑多,102400
2007-09-06 11:43:25 <AvinDev> 以前做过试验,设小了进程的堆大小,CPU占用更加高,应该是GC次数变多的原因,不能过分追求进程数啊~
2007-09-06 11:43:43 <coderplay> 对
The bot is started! 2007-09-06 11:51:10
2007-09-06 11:53:23 <baojing.jiao> 是不是我老掉线,怎么看你们的话都没有上下文呢?
2007-09-06 11:53:57 <coderplay> 进程中
ErlMessageQueue msg; /* Message queue */
ErlOffHeap off_heap; /* Off-heap data updated by copy_struct(). */
Eterm* arith_heap; /* Current heap pointer. */
这些会增大
2007-09-06 11:54:15 <coderplay> 但这与能跑多少进程无关
2007-09-06 11:54:25 <coderplay> 是你的其它业务
2007-09-07 00:01:04 <panxiaof> 刚才看了一下那个erlang的书,上面说celeon 2.4G每秒可以产生280000Process,512M可以起300000Process
2007-09-07 00:04:01 <panxiaof> 对了,wall-clock time是什么东东啊
2007-09-07 00:06:08 <panxiaof> 说错了,好像每秒是8W Process, 如果算这个wall-clock time的话
2007-09-07 00:15:44 <cpunion> google 什么是wallclock time
2007-09-07 00:17:30 <panxiaof> 找了一下还是不太明白。。。
2007-09-07 00:17:55 <cpunion> 我也跑过那个测试,测试结果告诉我的成绩和实际运行相差比较多,可能就是进程运行的总时间。
2007-09-07 00:23:52 <cpunion> http://read.cdbook.cn/11642/viewspace-1827.html
2007-09-07 00:26:13 <panxiaof> 哈:)
2007-09-07 08:56:03 <bitcowboy> 我想看lists的源码,在哪里找?
2007-09-07 10:54:20 <mryufeng> wallclock time 就是挂钟时间 也就是电脑当前的time 给人看的
2007-09-07 10:56:31 <panxiaof> 我昨天问的问题,起一个procss有人测试过在ceolon 2.4G上要花10 个微秒wallclock time
2007-09-07 10:56:49 <mryufeng> 差不多是这个数字
2007-09-07 10:58:18 <mryufeng> process实际上就是初始化一个erl_process这样的数据结构
2007-09-07 10:59:35 <mryufeng> 熟悉vm的人都知道 就是一些stack 和 heap 已经vm运行期需要的一些辅助结构 用到的内存资源都是从池中去的 所以速度飞快 几个us差不多
2007-09-07 11:00:49 <mryufeng> 你可以看下 erl_process.[ch]
2007-09-07 11:01:14 <panxiaof> 我想问一个问题,也是比较傻的~我有几万条记录,读取特别频繁,用ets每秒是读个100W还差一点,我想知道如果自个用C++实现一个hash,速度上会不会可以快上一个数量级别
2007-09-07 11:01:33 <bitcowboy> 可以。
2007-09-07 11:01:46 <mryufeng> 不会 ets本来就是hash结构的
2007-09-07 11:02:07 <bitcowboy> ets应该是O(logN)的时间,hash可以接近O(1).
2007-09-07 11:02:16 <bitcowboy> ets
2007-09-07 11:02:27 <bitcowboy> ets 本来就是hash的?
2007-09-07 11:02:34 <bitcowboy> 没看过实现。
2007-09-07 11:02:37 <mryufeng> 你读取数据的时候 除了hash查找的时间 还涉及到参数的变形
2007-09-07 11:02:52 <panxiaof> 好像ets就是hash的,所以我在想用ets就可以了,
2007-09-07 11:02:54 <mryufeng> ets 2种实现 hash和tree
2007-09-07 11:03:27 <mryufeng> 人家细节作的非常完善 你自己写的hash还是免了把
The bot is started! 2007-09-07 11:07:08
2007-09-07 11:07:22 <AvinDev> ets可以设用那种类型的哦。。。
Type = set | ordered_set | bag | duplicate_bag
默认是set,也就是gb_sets吧?那是O(logN)的
2007-09-07 11:07:57 <panxiaof> bag呢?
2007-09-07 11:08:05 <bitcowboy> 100W感觉是logN的能力。
2007-09-07 11:08:16 <mryufeng> 不是gb_set是自己c实现的set
2007-09-07 11:08:52 <mryufeng> 100w 已经是1us一个了 你认为不够快码?
2007-09-07 11:09:03 <davies.liu> 看 programing erlang
2007-09-07 11:09:12 <davies.liu> 上面讲得很清楚
2007-09-07 11:09:23 <AvinDev>
好
2007-09-07 11:09:31 <mryufeng> 因为你去数据的时候 ets是把数据拷贝 这个也包含在1us里面
2007-09-07 11:09:50 <panxiaof> 不过,我从300W读一个数据100W次,与30W里同读一个数据100
2007-09-07 11:09:58 <panxiaof> 次,花的时间差不多
2007-09-07 11:10:53 <bitcowboy> 那估计是hash了。
2007-09-07 11:11:04 <mryufeng> 这就说明了hash时间非常短 实际的时间在copy数据
2007-09-07 11:11:27 <bitcowboy> 如果涉及数据copy的吧,看数据有多大了。
2007-09-07 11:11:49 <mryufeng> 数据多大 除了binary都要拷贝的
2007-09-07 11:12:15 <bitcowboy> 数据大的话copy就要多话时间啊。
2007-09-07 11:12:35 <bitcowboy> 同样100W次就会差很多了。
2007-09-07 11:12:51 <panxiaof> 我昨天测试的是mnesia,ets的测试我忘记了~你去读一个空的数据100W次与读一个20字符的数据100W次,时间相差1倍多一点点
2007-09-07 11:12:55 <mryufeng> 正常情况下 erlang的hash是 根据数据类型作优化的 速度上肯定非常快的
2007-09-07 11:13:38 <mryufeng> 那就说明 hash操作时间 == copy20bytes的时间
2007-09-07 11:14:00 <AvinDev> 嗯,找到了
Internally, ETS tables are represented by hash tables (except ordered
sets, which are represented by balanced binary trees).
2007-09-07 11:14:25 <jackyz.zhao> programming erlang 第 15 章讲得很明白,ets 中 set 是 o(1) tree 是 o(logN) ,一般来说,数据都是 copy 的,例外的情况是 binary ,binary 不做 copy 而是从单独的 binary heap 做 ref ,所以,比其他数据类型更快。
2007-09-07 11:14:43 <mryufeng> 和你说了 ets的实现只要2种 tree 和 hash
2007-09-07 11:15:10 <mryufeng> 但是binary不参与gc 浪费内存
2007-09-07 11:15:38 <jackyz.zhao> 上面的 tree 说错了,是 order set
2007-09-07 11:15:46 <davies.liu> joe 建议用binary,而不是string
2007-09-07 11:16:02 <AvinDev> 那binary没有引用指向的时候也不会gc?你说的不参与gc是啥意思
2007-09-07 11:16:12 <mryufeng> binary肯定快 但是你得有多内存
2007-09-07 11:16:15 <jackyz.zhao> binary会gc的,由 erlang 自己维护引用计数
2007-09-07 11:16:42 <jackyz.zhao> 反而是 ets 中的东西不会 gc
2007-09-07 11:16:53 <mryufeng> 就是ets用到的binary ref +1 你delte的时候才-1
2007-09-07 11:16:55 <davies.liu> ets 还不参与gc呢,
2007-09-07 11:17:25 <mryufeng> 所以ets容易把binary给霸住了
2007-09-07 11:17:53 <davies.liu> 霸住?要用的数据,当然不能给回收了
2007-09-07 11:18:00 <jackyz.zhao> 会不会霸住,要看你怎么用了
2007-09-07 11:18:13 <AvinDev> ets的数据要存着用的啊,当然不能gc。。。。删了的是要gc的。。
2007-09-07 11:18:27 <mryufeng> 我说的是注意事项
2007-09-07 11:19:38 <mryufeng> ets还是蛮好用的 erlang自己的lib里面大量用到了
2007-09-07 11:19:50 <bitcowboy> ETS is highly efficient – using ETS, you can store colossal amounts of data (if you have enough memory) and perform lookups in constant (or in some cases logarithmic) time.
2007-09-07 11:20:34 <jackyz.zhao> 嗯,这个注意事项倒是不错,用完释放,总是错不了的。
2007-09-07 11:20:36 <bitcowboy> 看样子,默认是hash的。
2007-09-07 11:20:58 <mryufeng> 默认是hash来着
2007-09-07 11:21:12 <mryufeng> hash对一般的用途都够用了
2007-09-07 11:21:14 <jackyz.zhao> 除了 order set ,其他的好像都是 hash
2007-09-07 11:21:22 <panxiaof> 但1微秒对2.4G的CPU来说,是2400时间周期~都说人心不足,我也是想着ets的性能会不会更好一些
2007-09-07 11:21:26 <bitcowboy> hash就是费内存。
2007-09-07 11:21:49 <mryufeng> hash如何浪费内存
2007-09-07 11:21:49 <mryufeng> ?
2007-09-07 11:22:19 <mryufeng> hash 是最紧凑的数据结构
2007-09-07 11:22:27 <bitcowboy> hash算法不可能吧每一块内存都利用上的。
2007-09-07 11:22:48 <bitcowboy> 那样的hash算法开销是很大的。
2007-09-07 11:22:55 <mryufeng> linux内核里面70%以上的数据 结构是hash
2007-09-07 11:23:11 <bitcowboy> 我没说hash不好。
2007-09-07 11:23:20 <mryufeng> bitcowboy 还是仔细看下hash的实现
2007-09-07 11:23:24 <xushiweizh> hash据我的测试,在大数据量的时候性能不如tree。
2007-09-07 11:23:33 <xushiweizh> 主要是rehash过程比较慢。
2007-09-07 11:23:37 <mryufeng> hash是最省内存的结构
2007-09-07 11:23:50 <xushiweizh> 除非你事先知道hash table的size。
2007-09-07 11:23:53 <mryufeng> 你的bucket搞大些
2007-09-07 11:24:21 <mryufeng> erlang就是比较遗憾 没有参数让你调整hash bucket的大小
2007-09-07 11:25:01 <mryufeng> linux 内核 就考虑的更细 关键的hash都给你预先设置bucket的机会
2007-09-07 11:25:09 <bitcowboy> 呵呵,hash最省内存,好像每人这么说过。
2007-09-07 11:25:17 <mryufeng> rehash的时候就麻烦
2007-09-07 11:25:21 <bitcowboy> 没人
2007-09-07 11:25:36 <mryufeng> hash就是一个数组 一个list
2007-09-07 11:25:39 <bitcowboy> 数据量不是很大的时候,hash是好的。
2007-09-07 11:26:26 <bitcowboy> hash为了避免冲突,通常会占用比实际需求更大的内存。
2007-09-07 11:26:28 <mryufeng> 数组的大小 就是bucket的大小 10240 个桶才40k内存
2007-09-07 11:26:41 <mryufeng> 你说省不省
2007-09-07 11:27:06 <mryufeng> hash为了避免冲突,通常会占用比实际需求更大的内存。 —》不知道你是哪里看来的?
2007-09-07 11:27:21 <xushiweizh> 从这个意义上说,hash 比 tree省多了。
2007-09-07 11:27:35 <zhuzhaoyuan> hash的性能和hash函数的设计是息息相关的。我觉得你们在争论的时候,是不是该考虑一下你们用的hash算法是不是一样的先?
2007-09-07 11:27:43 <xushiweizh> 因为 c++ 的 rb tree 每个node很费内存。
2007-09-07 11:28:26 <mryufeng> 每个桶是list来着 需要的时候才分配项 一般来讲就是2个pointer位置 8bytes 你说不省
2007-09-07 11:28:44 <mryufeng> 唯一麻烦的就是 hash rehash的时间很长
2007-09-07 11:29:03 <xushiweizh> 是的,不是一般的长。
2007-09-07 11:29:07 <zhuzhaoyuan> 老许的红黑树之所以性能比hash高,是因为那个hash设计的不好吧? ![]()
2007-09-07 11:29:21 <mryufeng> 所以就是预留大的bucket
2007-09-07 11:29:30 <xushiweizh> 不是,是hash本身的缺陷决定的。
2007-09-07 11:29:37 <xushiweizh> 所有的hash都这样。
2007-09-07 11:29:53 <mryufeng> 内核我调bucket都把bucket搞的非常大 避免碰撞
2007-09-07 11:30:03 <xushiweizh> 除非hash table的size可预计,否则只要有rehash,性能急剧下降。
2007-09-07 11:30:07 <mryufeng> 反正bucket也占用不了多少内存
2007-09-07 11:30:30 <panxiaof> 可是erlang可以调这个bucket吗?
2007-09-07 11:30:40 <mryufeng> epoll_wait的那个 table 也有这个问题
2007-09-07 11:31:33 <xushiweizh> 我做过大量的io,这方面有不少经验。其实sgi stl的hash已经做的很好了。但是数据不确定的时候,我还是推荐用 rb tree。
2007-09-07 11:31:37 <mryufeng> 默认好像是 256 但是我们运行的时候handle可能几w 所以就不停地扩大
2007-09-07 11:32:30 <mryufeng> 这个变成可调 其实就是1-2行代码的问题 但是erlang没有做
2007-09-07 11:36:38 <bitcowboy> STL的rb_tree一个节点16个字节。
2007-09-07 11:38:18 <bitcowboy> 10240 40k,只够记一个指针的。
2007-09-07 11:39:08 <bitcowboy> 这10240个节点都用慢的话,rehash的代价将非常大。
2007-09-07 11:39:30 <bitcowboy> 这样的hash的平均新能并不好的。
2007-09-07 11:40:10 <bitcowboy> hash速度要快,浪费一点内存是可以接受的。
2007-09-07 11:40:47 <NetSnail> erlang ets的bucket是多少?
2007-09-07 11:42:02 <mryufeng> #define SZEXP 8
#define SEGSZ (1 << SZEXP)
2007-09-07 11:42:08 <mryufeng> 256来着
2007-09-07 11:43:24 <xushiweizh> 256的bucket size少了点。
2007-09-07 11:43:54 <bitcowboy> 难道不会动态增长的?
2007-09-07 11:44:02 <xushiweizh> 不过初始多少都没有用,最重要还是size可估计。
2007-09-07 11:44:09 <xushiweizh> 可以动态增长。
2007-09-07 11:44:31 <xushiweizh> 但是增长(rehash)麻烦。
2007-09-07 11:44:39 <zhuzhaoyuan> size可估计那就性能不会很差呀
2007-09-07 11:44:53 <xushiweizh> 是的。
2007-09-07 11:46:15 <panxiaof> 那size你估计到了,在erlang里又有什么用?
2007-09-07 11:46:50 <mryufeng> 有用呀 那就不用rehash
2007-09-07 11:46:53 <xushiweizh> erlang中确实没用。给joe个建议。
2007-09-07 11:47:19 <xushiweizh> panxiaof的意思,erlang没有这样的接口。
2007-09-07 11:47:28 <AvinDev> me, yufeng, aol, xushiwei,还有who?
2007-09-07 11:47:42 <mryufeng> 呵呵 让他们把桶都可以用env变量调整
2007-09-07 15:21:41 <bitcowboy> 嗯,发现上午关于hash费内存的问题,我错了。
2007-09-07 15:22:07 <xushiweizh> ![]()
2007-09-07 15:22:49 <panxiaof> oh~
2007-09-07 15:23:18 <AvinDev> 讲解一下如何发现错的:)
2007-09-07 15:23:23 <xushiweizh> bitcowboy明天的聚会去吗?
2007-09-07 15:25:09 <bitcowboy> 其实我的意思是,想避免rehash,就要把bucket开得大一点,所以有点费。但是其实和rb tree比,可能还是会省一点的。
2007-09-07 15:25:30 <xushiweizh> 确实是这样。
2007-09-07 15:25:50 <xushiweizh> rb tree费得惊人。
2007-09-07 15:26:14 <xushiweizh> 但是它的好处是性能很稳定。
2007-09-07 15:26:23 <mryufeng> 呵呵 erlang 运行起来动辄大几百M 不怕这点浪费了
2007-09-07 15:27:06 <xushiweizh> 我曾经向hash table和rb tree中加入1亿个int,hash table运行了一天没有完成,rb tree不到1小时完成了。
2007-09-07 15:27:35 <bitcowboy> rb tree其实如果节点要存的东西很大,16字节的开销也就无所谓了。不过在rb tree里面只存一个DWORD的话,那就……
2007-09-07 15:28:52 <bitcowboy> 其实,hash table的特点是,保证了查找时间接近O(1),从来没说过插入性能很好。
2007-09-07 15:29:05 <xushiweizh> 嗯。
2007-09-07 15:29:50 <bitcowboy> rb tree的特点是,插入和查找的性能都是差不多的,而且是可以估计的,O(logN)的速度,很多时候也够用了。
2007-09-07 15:30:48 *** mryufeng is being a moron trying to flood the channel
2007-09-07 15:30:50 <xushiweizh> 其实插入和查找理论上来说时间是差不多的。如果没有rehash,插入也是O(1)。
2007-09-07 15:31:14 <bitcowboy> 哈哈,就是有rehash啊。
2007-09-07 15:32:15 <panxiaof> 我问一下哦,如果是字符串做索引,我看那啊ets也很快,比那个int的索引的好像也就慢个一倍。感觉应该相差很大,所以有点不解
2007-09-07 15:32:16 <mryufeng> hash_grow的时候是以128 为单位叠加上去的
2007-09-07 15:32:30 <mryufeng> 不行就hack下代码 把这些数字搞大
2007-09-07 15:32:37 <xushiweizh> yufeng是说erlang?
2007-09-07 15:32:47 <mryufeng> 是呀
2007-09-07 15:33:00 <xushiweizh> 如果是这样的话,比sgi stl的hash糟糕。
2007-09-07 15:33:12 <mryufeng>
if (tb->nsegs == 1)
sz = SEG_LEN;
else
sz = tb->nsegs + SEG_INCREAMENT;
new_seg = (HashDbTerm***)
erts_db_realloc(ERTS_ALC_T_DB_SEG_TAB,
(DbTable *) tb,
(void *) tb->seg,
sizeof(HashDbTerm**)*tb->nsegs,
sizeof(HashDbTerm**)*sz);
2007-09-07 15:33:18 <xushiweizh> 和mfc的hash差不多。
2007-09-07 15:33:27 <mryufeng> 不过他的数据是分SEG的
2007-09-07 15:33:51 <mryufeng> 但是它估计没有预期你们搞那么大的数据量
2007-09-07 15:34:21 <xushiweizh> sgi stl的hash bucket增长比较合理。
2007-09-07 15:34:51 <xushiweizh> 如果是等差序列增长,那么大数据量肯定受不了。
2007-09-07 15:34:57 <bitcowboy> 我去看下ets的源码再发言。
2007-09-07 15:35:26 <mryufeng> 它就是这么干的
2007-09-07 15:36:11 <mryufeng> 看错了
2007-09-07 15:36:14 <xushiweizh> 分segment可以减少bucket本身的挪动。但是data搬移还是有的。
2007-09-07 15:36:51 <mryufeng> 是以256为单位增加的 segment是以128为单位增加的
2007-09-07 15:37:47 <mryufeng> 所以你大量的数据的话 就会有大量的segment
2007-09-07 15:39:02 <bitcowboy> bucket变大了,能不能不rehash的?
2007-09-07 15:40:04 <xushiweizh> 不能。只能减少rehash次数来加速。预测最终的bucket大小,就成了关键。
2007-09-07 15:41:04 <bitcowboy> 比如,其实不改变bucket。但是增加bucket的数量。hash值出来后到多个bucket的相同位置去查找。
2007-09-07 15:42:19 <xushiweizh> 这样和没有增加bucket大小差不多。
2007-09-07 15:42:21 <bitcowboy> 不过bucket多了的时候效率就下降了。
2007-09-07 15:42:50 <xushiweizh> 失去了bucket扩容的意义。
2007-09-07 15:42:55 <bitcowboy> 嗯。好像没用。
2007-09-07 15:45:07 <mryufeng> 好像没有rehash过程
2007-09-07 15:45:31 <xushiweizh> erlang? 这么强?
2007-09-07 15:46:06 <xushiweizh> 什么算法解决冲突?
2007-09-07 15:46:14 <xushiweizh> bucket size = ?
2007-09-07 15:47:58 <mryufeng> 一般的hash是bucket+list
2007-09-07 15:48:15 <mryufeng> 他是bucket + list 数组
2007-09-07 15:49:12 <mryufeng> 也就是说 碰撞的时候 就简单的加到list去 list容量不够的时候 再生成一个list
2007-09-07 15:49:51 <xushiweizh> 哦,是数组的list吧?
2007-09-07 15:50:20 <xushiweizh> 那么数据大了的时候,岂不是冲突 很多?
2007-09-07 15:50:26 <mryufeng> right
2007-09-07 15:50:32 <mryufeng> 是冲突很多
2007-09-07 15:51:34 <mryufeng> get 的时候就是 定位到bucket的时候 狂遍历list 的 list
2007-09-07 15:51:35 <xushiweizh> 这样,到最后时间性能可能会不如rb tree。
2007-09-07 15:51:51 <xushiweizh> 当然空间性能是很不错了。
2007-09-07 15:51:59 <mryufeng> 这样 数据量大 肯定不行
2007-09-07 15:52:07 <mryufeng> 空间利用率很好
2007-09-07 15:52:23 <mryufeng>
hval = MAKE_HASH(key);
HASH(tb, hval, ix);
b1 = BUCKET(tb, ix);
while(b1 != 0) {
if ((b1->hvalue == hval) && EQ(key, GETKEY(tb, b1->dbterm.tpl))) {
HashDbTerm* b2 = b1->next;
Eterm copy;
if ((tb->common.status & DB_BAG) ||
(tb->common.status & DB_DUPLICATE_BAG)) {
while((b2 != 0) && ((b2->hvalue == hval) ||
(b2->hvalue == INVALID_HASH)) &&
EQ(key, GETKEY(tb, b2->dbterm.tpl)))
b2 = b2->next;
}
copy = put_term_list(p, b1, b2);
CHECK_TABLES();
*ret = copy;
return DB_ERROR_NONE;
}
b1 = b1->next;
2007-09-07 15:52:49 <AvinDev> yufeng说过,R12的时候会用Judy Array来取代hash?
2007-09-07 15:53:08 <cooljiwen> 我的屁股疼啊。
2007-09-07 15:53:09 <mryufeng> 我说那帮人有这个打算
2007-09-07 15:53:23 <mryufeng> 号称judy array性能会好很多
2007-09-07 15:53:49 <xushiweizh> 这样的“内幕”消息在哪发布的一般。:)
2007-09-07 15:53:51 <mryufeng> 是list的list
2007-09-07 15:53:58 <bitcowboy> 就是说,不管数据量多大,冲突的概率都是1/256?
2007-09-07 15:53:58 <mryufeng> maillist
2007-09-07 15:54:34 <xushiweizh> 哦,我订了,不过一般没时间细看。
2007-09-07 15:55:57 <mryufeng> #define BUCKET(tb, i) (tb)->seg[(i) >> SZEXP][(i) & SZMASK]
2007-09-07 15:56:09 <mryufeng> 他这bucket的函数很人 不一样
2007-09-07 15:56:22 <mryufeng> 看来要好好研究下 hash的实现
2007-09-07 15:56:36 <mryufeng> 本来以为是简单的hash看来 不是这样的
2007-09-07 15:56:53 <mryufeng> 先不下结论 等研究明白了 再说
2007-09-07 15:57:13 <xushiweizh> 这是分段,如此看来,它的bucket应该会比较大才对。
2007-09-07 15:57:26 <xushiweizh> 不然分段就没有意义了。
2007-09-07 15:57:36 <baojing.jiao> yufeng是不是在公司做技术选型的,或者属于实验室探索性的
2007-09-07 15:57:52 <xushiweizh> stl只有deque才是这种分段结构的。
2007-09-07 15:59:36 <NetSnail> 这样说来,他的bucket很大呀
2007-09-07 17:37:10 <baojing.jiao> erlang对字符串的处理是不是弱项呀。只能映射到asiic 码,中文怎么处理?
2007-09-07 17:39:48 <AvinDev> 中文也是用数字方式存列表里头啊,只是GBK到UTF8这样的编码转换麻烦点而已:)
2007-09-07 17:41:41 <baojing.jiao> 比如我是utf-8编码的,存的是数字,但是我解码的时候怎么晓得他是utf-8编码的呢
2007-09-07 17:42:07 <NetSnail> 猜.
2007-09-07 17:42:44 <AvinDev> 要确定好传输的编码啊,来的是 binary,不知道是啥编码也没辙。。
2007-09-07 17:43:10 <baojing.jiao> 我明白你的意思了。
2007-09-07 17:44:05 <baojing.jiao> 不过说回来erlang对字符的操作还是不那么轻松,容易
2007-09-07 17:44:14 <AvinDev> 是的
2007-09-07 17:44:28 <baojing.jiao> http://beerriot.com/ 是用erl开发的web项目,当然比较小。
2007-09-07 17:45:23 <baojing.jiao> erlang的一些库还是太少,search这块erlang有没有lib可用?
2007-09-07 17:45:50 <baojing.jiao> 用erlang开发出一个search引擎的话,是不是可以提高erlang的关注度呀。
2007-09-07 17:47:18 <NetSnail> 不好搞呀,erlang搞密集计算感觉不行.
2007-09-07 17:47:54 <panxiaof> 适合分布~哈
2007-09-07 17:48:09 <NetSnail> 特别是字符串。我们做过实验,解析文本协议,差别在50倍左右
2007-09-07 17:48:11 <AvinDev> 感觉不够Java的Lucene+Hadoop竞争,密集计算实在有点慢
2007-09-07 17:48:57 <cpunion> 不会吧?这么慢?用HiPE了吗
2007-09-07 17:50:53 <cpunion> 我测试它比C++慢5倍左右,比python快2-3倍。字符串操作没比较过,测试的是fibonacci
2007-09-07 17:51:05 <panxiaof> 上次我就看到有人测试那个erlang写的IM服务器ejabberd,他一秒是转2000个包,yufeng解释问题可能就出在文本协议解析上
2007-09-07 17:51:14 <NetSnail> 不是的,我们只是单纯的处理把协议包解析了下,不涉及io的
2007-09-07 17:51:50 <mryufeng> erlang 的字符解释是用函数递归来作的
2007-09-07 17:52:08 <baojing.jiao> erlang可能更适合做分布式应用的胶水部分,其他的比如密集计算还得c上吧。
2007-09-07 17:52:20 <mryufeng> 你看下 c移动一个指针位 而erlang的vm要做多少事情
2007-09-07 17:52:33 <mryufeng> 速度当然不能比较了
2007-09-07 17:52:53 <baojing.jiao> 或者那位告知一下erlang到底适合做什么,在目前。适合在那个点切入?
2007-09-07 17:53:01 <mryufeng> 估计这些密集行的操作 要通过driver或者port解决
2007-09-07 17:53:25 <NetSnail> 我们是用了一个cnode,绕过了一些问题
2007-09-07 17:53:38 <mryufeng> erlang 的 port很强大 就好容易作这个事情
2007-09-07 17:55:27 <cpunion> Herb:我认为你说的是对的。但是,我不同意你提出的理由,说我们必须在各自的语言中加点什么特性吸引用户,从而使他们不去使用其他的微软的语言。为什么呢?比如我吧,我更加关心使用C++或者C#的用户到底需要什么,我怎样才能帮助他们把工作完成得更好。也许某处有某种很牛的特性的语言,但我的工作是 ——怎样才能使客户的工作更成功?我必须要考虑客户会如何集成,我怎样做才能使客户工作得更好,这也是CLR的核心所在,因为目前已经不是靠一种语言就能做完整个项目的时代了。我怀疑在稍有点规模的实际项目中,是否还有人仅仅依靠一种开发语言。
2007-09-07 17:56:01 <mryufeng> to NetSnail: 如何用cnode来解决这个问题
2007-09-07 17:57:07 <mryufeng> 每个语言和系统都有擅长和不擅长的东西 最好取其长 所以hybrid的系统现在很流行哦
2007-09-07 17:57:14 <NetSnail> 主要是要重用我们原来的c++代码
2007-09-07 17:57:49 <mryufeng> 就是部份用c++作 部份通过rpc来让erlang作?
2007-09-07 17:57:49 <NetSnail> 先对收到的包做一些处理,弄成message发到erlang上来
2007-09-07 17:58:05 <mryufeng> 哦 这样 有点意思
2007-09-07 17:58:31 <NetSnail> 是的,还在研究中,上层应用打算全用erlang做
2007-09-07 17:59:12 <AvinDev> 是的,hybrid的系统有个问题就是不太好维护,现在很多公司都是只用一门语言的,这个是事实
2007-09-07 18:14:23 <baojing.jiao> 希望各位在实际工作中有用到erlang,或者对erlang的最佳时间有所了解的,适时的分享一下erlang的最佳实践。很有知道意义哟
2007-09-09 22:26:55 <panxiaof> case [R || R <- Rs, node(R#route.pid) == node()] of
2007-09-09 22:27:14 <panxiaof> 当中那个是什么表达式啊,看不懂,heheh
2007-09-09 22:28:26 <panxiaof> 哦~
2007-09-09 22:29:18 <mryufeng> list comprehension呀
2007-09-09 22:30:15 <panxiaof> R||R<-RS 这是什么啊
2007-09-09 22:30:39 <coderplay> list comprehension
2007-09-09 22:30:46 <mryufeng> 也就是从RS中选出node(pid) == node()的节点
2007-09-09 22:31:32 <mryufeng> R <- Rs是遍历 node(R#route.pid) == node()是条件
2007-09-09 22:31:38 <panxiaof> 哦~~ 我怎么 都没看到过这种表达式,看来还是看得不够多啊
2007-09-09 22:31:59 <mryufeng> 这个erlang代码里面大把
2007-09-09 22:32:19 <panxiaof> 见笑了~hehe
2007-09-09 22:32:21 <davies.liu> list compreshension
2007-09-09 22:36:28 <panxiaof> google了一下,找到了。^_^
2007-09-09 22:42:38 <rory.cn> 刚才打算下载这个的时候出现的。
2007-09-09 22:42:39 <rory.cn> http://media.pragprog.com/titles/jaerlang/code/shop1.erl
2007-09-09 22:54:03 <cpunion> 我对pmap有点疑问,现在看的是这篇文章:http://anonymouse.org/cgi-bin/anon-www.cgi/http://montsamu.blogspot.com/2007/02/erlang-parallel-map-and-parallel.html
2007-09-09 22:54:13 <cpunion> 代理过去的..
2007-09-09 22:54:43 <cpunion> pmap_gather方法是不是按顺序匹配Pids?这样如果结果不是按顺序发回的会怎么样?
2007-09-09 22:56:30 <mryufeng> 不俺顺序也没有事呀 msg match的时候会遍历msg queue来匹配
2007-09-09 22:56:39 <mryufeng> 不过有点土而以
2007-09-09 22:57:10 <cpunion> 哦..还有这一手.
2007-09-09 22:57:10 <mryufeng> 最好是用ets自己来 匹配结果哦
2007-09-09 22:57:16 <mryufeng> y
2007-09-09 22:57:46 <cpunion> 没有match到的,后面再receive时还会接收?是不是一直在队列里
2007-09-09 22:57:53 <yuxh312> 貌似mryufeng嘴边总是挂着ets的,好痴迷啊
2007-09-09 22:58:42 <mryufeng> 不是哦 ets在erlang库里面用到了很多地方
2007-09-09 22:58:49 <mryufeng> 确实有好用的地方
2007-09-09 22:58:54 <yuxh312> 哈哈
2007-09-09 22:59:01 <mryufeng> 要不什么东西 都fp都好麻烦
2007-09-09 22:59:40 <mryufeng> receive的时候重新匹配过
2007-09-09 23:00:15 <mryufeng> 今天还是昨天的erlang的maillist 刚好有一篇文章 大家可以看下 就是说这个问题的
2007-09-09 23:01:05 <mryufeng> title: [erlang-questions] Message-sending performance
2007-09-09 23:02:02 <panxiaof> 好啊,大家知道的都聊聊,我过看看电视10分种后看聊天记录,哈哈
2007-09-09 23:02:50 <cpunion> 一直以为是没match的就丢掉了
2007-09-09 23:02:57 <cpunion> 在看..
2007-09-09 23:03:37 <yuxh312> This is one of the problems one must be keeping an eye on: beware the
size of the mailbox. In your problem you will see that if you replace
receive by
receive {msg, _} -> ok end
the program will execute extremely fast, as with 1 process.
2007-09-09 23:03:41 <yuxh312> 汗
2007-09-09 23:04:21 <mryufeng> 然后再用ets 查找下 是什么结果
2007-09-09 23:04:26 <mryufeng> 就快非常多
2007-09-09 23:04:49 <mryufeng> 这个属于erlang的一种惯用法
2007-09-09 23:08:34 <yuxh312> msg queue是lock-free的吗
2007-09-09 23:09:12 <mryufeng> 在单smp当然是lock free
2007-09-09 23:10:12 <mryufeng> 在多smp下 在往msg queue put msg的时候是要lock的 但是会做些优化 尽可能少lock
2007-09-09 23:10:28 <cpunion> 多CPU上receive应该也是lock free的吧,send应该不是
2007-09-09 23:10:55 <yuxh312> 嗯,我刚才看到一个帖子:Another useful application of SMP-safe lock-free FIFO queues could be
inside the emulator. Correct me if I am wrong but in the emulator with
SMP support different schedulers use mutex synchronization in order to
get the next process descriptor off of a shared linked list of all
processes waiting to be dispatched. Also when copying a message sent by
some Erlang process to a mailbox of another Erlang process the emulator
with SMP support uses POSIX locking to ensure thread safety (if I
remember it correctly).
2007-09-09 23:11:05 <yuxh312> by Serge Aleynikov-2 Aug 08, 2007
2007-09-09 23:12:39 <mryufeng> 就是这个样子的哦
2007-09-09 23:15:22 <mryufeng> emulator的smp感觉做的还是比较细致 周道 但是好像可以再细一点
2007-09-09 23:16:06 <yuxh312> 呵呵,这句话跟你这句差不多:We will definitely consider using lock-free data structure in future releases
of the SMP emulator. Thanks for the references. Now that the SMP emulator
seem to be stable, most of our future work on it will be to improve its
performance.
/Bjorn
2007-09-09 23:17:02 <mryufeng> 呵呵 俺作作类似的工作 所以对这lock是体会比较省的
2007-09-09 23:17:43 <mryufeng> 俺学多线程编程的时候 看一本书上讲 1. 不要多线程 2.还是不要多线程 3. 千万不要多线程
2007-09-09 23:17:57 <mryufeng> 但是不理解 现在俺理解了 怕怕
2007-09-09 23:18:40 <yuxh312> 呃, 有过类似这样用排比的警告
2007-09-09 23:18:56 <yuxh312> 不要goto,真的不要goto,千万不要goto.
2007-09-09 23:19:20 <mryufeng> goto 还好 我老了 反而狂goto
2007-09-09 23:19:38 <yuxh312> 哈哈,我也喜欢goto,
2007-09-09 23:20:00 <mryufeng> 对性能比较care的时候 goto很方便
2007-09-09 23:20:05 <mryufeng> 就是代码难看下
2007-09-09 23:20:17 <yuxh312> goto特别适合从深层直接套出来
2007-09-09 23:20:18 <coderplay> FSM用goto很好,很强大
2007-09-09 23:20:20 <yuxh312> 逃出来
2007-09-09 23:20:24 <mryufeng> glibc 自己还狂goto
2007-09-09 23:22:01 <yuxh312> 单向的(不要往回跳)goto还是比较清晰的,大多的时候写到错误处理宏里保证唯一出口也很好用
2007-09-09 23:22:38 <mryufeng> 内核里面的 代码都很遵守你刚才提的原则 感觉很舒服
2007-09-09 23:22:39 <coderplay> for (msgp = p->msg.first; msgp; msgp = msgp->next) 果然都是这样
2007-09-09 23:23:03 <mryufeng> coderplay果然有考证精神
2007-09-09 23:23:14 <yuxh312> orz
2007-09-09 23:23:22 <mryufeng> 想想下 他都要这样作 否者不符合 logic
2007-09-09 23:31:39 <mryufeng> ragel 编译从来的atoi fsm 比他妈的glibc 的人写的还快20-30% 到处是goto
2007-09-09 23:32:02 <yuxh312> 好彪悍
2007-09-09 23:32:51 <mryufeng> 人肉都开始不值钱了
2007-09-09 23:33:27 <yuxh312> -_-!
2007-09-09 23:33:30 <davies.liu> ragel是什么?
2007-09-09 23:33:54 <mryufeng> http://www.cs.queensu.ca/~thurston/ragel/
2007-09-09 23:34:01 <yuxh312> 一个状态机编译器
2007-09-09 23:34:03 <mryufeng> 很cool
2007-09-09 23:34:35 <mryufeng> 俺准备作个 sql文法分析器
2007-09-09 23:35:11 <coderplay> 很好,很强大
2007-09-09 23:35:36 <coderplay> 特别是Visualize output with Graphviz
2007-09-09 23:36:05 <davies.liu> 编译速度比较慢吧
2007-09-09 23:36:34 <coderplay> 找不到比这更快的了
2007-09-09 23:36:49 <mryufeng> 编译速度就是 就是 闪电
2007-09-09 23:37:04 <mryufeng> 确实是个好工具
2007-09-09 23:37:29 <davies.liu> cool
2007-09-09 23:37:56 <davies.liu> mnesia有非key字段的索引么?
2007-09-09 23:38:09 <davies.liu> 否则按其他字段查询就很慢了
2007-09-09 23:38:23 <mryufeng> 可以支持多个key
2007-09-09 23:39:14 <mryufeng> 但是实现比较土 复制ets, 以指定的key为 index 然后发现你用什么key 就查那个ets
2007-09-09 23:39:22 <coderplay> 只要你的内存多 嘿嘿
2007-09-09 23:39:24 <mryufeng> 比较土!!!
2007-09-09 23:39:58 <mryufeng> 这混照 那帮人也敢想 看来老外还是比较猛
2007-09-09 23:40:19 <mryufeng> 混照 == 昏招
2007-09-09 23:40:45 <coderplay> 先做出来,再优化… 内存便宜嘞~~
2007-09-09 23:41:27 <mryufeng> 内核便宜 但是32 位机器 有4g的限制 linux下 准确讲是 3G
2007-09-12 11:23:37 <bitcowboy> 问个SB问题,什么样才算尾递归?
2007-09-12 11:24:17 <zhuzhaoyuan> 呼唤albert lee把例子贴出来
2007-09-12 11:24:34 <bitcowboy> hanoi(0) ->
0;
hanoi(N) ->
2 * hanoi(N – 1) + 1.
2007-09-12 11:24:36 <AvinDev> 递归函数下面不会有其他递归完需要执行的语句,就算是了
2007-09-12 11:24:39 <bitcowboy> 这样算不算?
2007-09-12 11:24:45 <NetSnail> 不算
2007-09-12 11:24:47 <AvinDev> 你这个不算
2007-09-12 11:24:49 <zhuzhaoyuan> 不是
2007-09-12 11:25:03 <bitcowboy> 好的。明白了。
2007-09-12 11:25:25 <jackyz.zhao> http://erlang-china.org/study/the-right-tail-recursive.html
2007-09-12 11:25:31 <AvinDev> hanoi(N-1) 执行完之后还要 * 2,会造成压栈。
2007-09-12 11:25:35 <jackyz.zhao> 刚好有一篇
2007-09-12 11:25:43 <NetSnail> sum([],N)->N;
sum([H|T],N)->sum(T,H+N).
2007-09-12 11:26:14 <baojing.jiao> 递归函数下面不会有其他递归完需要执行的语句,这个怎么理解?
2007-09-12 11:26:49 <AvinDev> 比如上面的 2 * hanoi(N – 1) + 1.
2007-09-12 11:27:01 <NetSnail> 囧rz…这句话其实有点不通顺呢.
2007-09-12 11:27:13 <zhuzhaoyuan> 尾递归可被编译器优化为非递归
2007-09-12 11:27:20 <AvinDev> 嘿嘿,表达能力比较差,召唤达人
2007-09-12 11:28:20 <jackyz.zhao> The important thing to note about tail-recursive functions is that they can run in loops without consuming stack space. Such function are oden called “iterative functions.”
2007-09-12 11:28:52 <zhuzhaoyuan> 传统语言里面,如C语言,递归造成的函数压栈及弹栈过程的消耗是很恐怖的
2007-09-12 11:28:55 <coderplay> 迭代 ![]()
2007-09-12 11:29:31 <NetSnail> 恩恩,sicp里就是直接说迭代的
2007-09-12 11:30:04 <AvinDev> 嗯,因为FP追求变量一次绑定,因此只能用尾递归取代命令式语言里面的迭代
2007-09-12 11:32:41 <bitcowboy> 再问一下,erlang的位移操作是不是像C一样快的?
2007-09-12 11:33:11 <mryufeng> bit操作是在emulator里面c实现的
2007-09-12 11:33:54 <bitcowboy> 我发现我把1 << 64位都可以。
2007-09-12 11:34:12 <bitcowboy> Erlang直接支持大数运算。
2007-09-12 11:34:22 <mryufeng> bigint
2007-09-12 11:34:25 <coderplay> yup
2007-09-12 11:35:25 <bitcowboy> 那样的话,就不能直接用CPU算移位了吧?
2007-09-12 11:37:02 <mryufeng> 为什么不能
2007-09-12 11:37:26 <mryufeng> erlang有位移运算的关字呀
2007-09-12 11:37:43 <bitcowboy> CPU的移位操作是直接差一张硬件表的,只有位数限制的。
2007-09-12 11:38:02 <bitcowboy> 32位,或者64位。
2007-09-12 11:38:11 <mryufeng> 超过呢?
2007-09-12 11:38:36 <bitcowboy> 超过是会异常的。
2007-09-12 11:38:46 <bitcowboy> 不信是可以在C里面试试。
2007-09-12 11:38:47 <mryufeng> 位移运算是硬件实现最简单的事情 还要查表
2007-09-12 11:39:14 <bitcowboy> 查表比较快。
2007-09-12 11:39:20 <mryufeng> erlang的bit操作是很复杂的
2007-09-12 11:39:24 <mryufeng> 快什么呀
2007-09-12 11:39:52 <mryufeng> memory access是 几十个ns级别的
2007-09-12 11:40:01 <NetSnail> 硬件实现就是查表呀.
2007-09-12 11:40:03 <bitcowboy> 查表可以做到不论移动几位都是一个时钟周期完成的。
2007-09-12 11:40:13 <NetSnail> 硬件查表…不用内存的…
2007-09-12 11:40:18 <NetSnail> 就是堆电路
2007-09-12 11:40:22 <bitcowboy> 不是查内存里的表。
2007-09-12 11:40:33 <bitcowboy> 是CPU里面的一个硬件表。
2007-09-12 11:40:36 <mryufeng> 硬件就搞不清楚如何实现的了
2007-09-12 11:40:39 <baojing.jiao> 扯回尾递归,尾递归就是不要保存中间状态,一般采取的措施是把中间状态当作参数传来传去。ok,你们继续。
2007-09-12 11:41:12 <mryufeng> 反正你看成 一个cycle可以完成bit运算就好了 管他如何实现
2007-09-12 11:41:30 <bitcowboy> 我是说位数限制。
2007-09-12 11:41:37 <NetSnail> 至少我们数字电路课的实现是查表,不查表还真想不出怎么实现 =.=
2007-09-12 11:41:40 <baojing.jiao> 我没有设置busy呀。。。
2007-09-12 11:42:02 <AvinDev> 其他客户端有点不太兼容,不要理会:)
2007-09-12 11:42:03 <bitcowboy> 不查表要用循环实现。
2007-09-12 11:42:24 <NetSnail> 循环 @.@ 那样没法并行呀…
2007-09-12 11:42:50 <baojing.jiao> 测试一下…
2007-09-12 11:43:04 <baojing.jiao> 不提示了 ![]()
2007-09-12 11:43:42 <bitcowboy> 我想问的是,C里面的位移运算基本上就是一条硬件指令,所以很快,但是Erlang支持大数运算应该就没有这么简单了。想问问有没有人知道Erlang大概是怎么实现的。
2007-09-12 11:43:54 <mryufeng> 普通机器的bogomips都是4000左右 也就是说执行一个指令0.25ns 左右 考虑那么多干吗
2007-09-12 11:46:17 <bitcowboy> mryufeng,你没理解我的意思。
2007-09-12 11:46:25 <mryufeng> bits操作也是c的移位作的 只是支持很长的bit 作的比较复杂而已
2007-09-12 11:46:53 <bitcowboy> 我就是想知道这个复杂有什么代价。
2007-09-12 11:47:06 <mryufeng> 你看下 erts\emulator\beam\erl_bits.c
2007-09-12 11:47:42 <mryufeng> 就是加些 判断 循环 有什么大的代价?
2007-09-12 11:47:53 <bitcowboy> 循环就是代价么。
2007-09-12 11:48:15 <mryufeng> 呵呵 你自己看下代码把
2007-09-12 12:54:57 <bitcowboy> hanoi(0) ->
0;
hanoi(N) ->
2 * hanoi(N – 1) + 1.
2007-09-12 12:55:12 <bitcowboy> 好像没有办法改成尾递归?
2007-09-12 12:55:25 <mryufeng> 怎么没有办法
2007-09-12 12:55:33 <bitcowboy> 怎么改?
2007-09-12 12:55:36 <bitcowboy> 求教
2007-09-12 12:55:42 <bitcowboy> 请教
2007-09-12 12:55:48 <AvinDev> 汉诺塔貌似有个迭代算法的,将它改成尾递归就可以
2007-09-12 12:56:23 <mryufeng> 用迭代呀
2007-09-12 12:56:30 <bitcowboy> 不用迭代算法。汉诺塔的解=2^n – 1。
2007-09-12 12:57:40 <panxiaof> # fac(N) ->
# % 内部调用尾递归的实现,X=1是初始值
# fac_i(N, 0).
#
# % 尾递归的终结器
# fac_i(0, X) ->
# X;
# % 尾递归的循环器
# fac_i(N, X) ->
# fac_i(N – 1, 2* X).
2007-09-12 12:58:09 <panxiaof> # fac_i(N – 1, 2* X+1).
2007-09-12 12:58:09 <bitcowboy> 我是问,应该不是所有的递归都能写成尾递归的吧?
2007-09-12 12:58:25 <mryufeng> 那是
2007-09-12 12:58:34 <bitcowboy> fac可以写成尾递归。fac本质是个线性问题。
2007-09-12 12:59:00 <panxiaof> 哦~
2007-09-12 13:00:26 <bitcowboy> hanoi的递归解法不是线性的。所以我想不出尾递归写法。用迭代法,或者直接用公式算,那是另外一回事了。
2007-09-12 13:11:22 <bitcowboy> hanoi(N, Iterator, Result) when N == Iterator ->
Result;
hanoi(N, Iterator, ResultSoFar) ->
hanoi(N, Iterator + 1, 2 * ResultSoFar + 1).
2007-09-12 13:11:38 <bitcowboy> 迭代法可以写成尾递归。
2007-09-12 13:11:47 <bitcowboy> 因为迭代是线性的。
2007-09-12 13:12:05 <coderplay> 说反了 ![]()
2007-09-12 13:12:11 <panxiaof> 哦~
2007-09-12 13:12:24 <bitcowboy> 啊?啥说反了?
2007-09-12 13:12:26 <coderplay> 尾递归可以消除成迭代 ![]()
The bot is started! 2007-09-12 13:12:54
2007-09-12 13:12:59 <bitcowboy> 用for循环也可以算是迭代么,本质上是一样的。
2007-09-12 13:13:23 <bitcowboy> 编译器把递归编译成了循环了。
2007-09-12 13:13:23 <coderplay> 在ocaml里面就有这个 如果加上rec 关键字, 编译器就会帮助消除尾递归
2007-09-12 13:13:45 <coderplay> 有的编译器不会的啦
2007-09-12 13:13:54 <bitcowboy> 嗯。不过对hanoi而言,最快的应该是:
2007-09-12 13:13:59 <bitcowboy> fast_hanoi(N) ->
1 bsl N – 1.
2007-09-12 13:14:25 <bitcowboy> 也就是 2^n – 1
2007-09-12 13:15:29 <coderplay> 2^n …
2007-09-12 13:16:51 <bitcowboy> 嗯,你把 2^n – 1 代入到原始公式里替换掉 f(n),你就能证明,这是对的。
2007-09-12 13:17:16 <bitcowboy> f(n) = 2×f(n – 1) + 1
2007-09-12 13:18:01 <bitcowboy> 2^n – 1 = 2×(2^(n – 1) – 1) + 1
2007-09-12 14:50:13 <panxiaof> 我不想用mnesia,想用ets,因为mnesia与ets在同样数据下读的速度上会差上10倍多,同时我的数据也不需要保存,都是些运行时的数据。
可是有个问题解决不了,我需要两个关键字,不知道ets怎么样才能做到
2007-09-12 14:50:49 <bitcowboy> 有没有类似STL的pair这样的东西?
2007-09-12 14:50:57 <davies.liu> 用两个ets,mnesia就是这么做的
2007-09-12 14:51:03 <bitcowboy> {Key1, Key2}?
2007-09-12 14:51:05 <davies.liu> {}
2007-09-12 14:51:12 <panxiaof> 两个ets也不行啊~
2007-09-12 14:51:19 <NetSnail> 支持两个ets ^_^
2007-09-12 14:51:44 <panxiaof> 我不知道你是怎么做的,因为ets没有{key1,key2}这样的结构
2007-09-12 14:52:16 <bitcowboy> 哦,我只是猜一下。还没用过ets。
2007-09-12 14:52:31 <panxiaof> 你删除的时候,你根据一个关键字删除了一个ets的某些数据,然后另一个ets怎么删除?
2007-09-12 14:54:24 <NetSnail> {key1,key2,data…} 存一个ets
{key2,key1,data…} 存一个.
删除时取出一个…用里面的key去另一个删?
2007-09-12 14:58:27 <panxiaof> 好像这样可以,不过这样一来,也存在一些编历成份,好像速度上又降下来了~。。
2007-09-12 14:58:41 <panxiaof> 看来是没有两全其美的方法
2007-09-12 14:59:11 <NetSnail> 恩恩,当你完成了全部增加删除修改操作后,你就实现了一个小的mnesia =.=
2007-09-12 15:00:27 <panxiaof> (我用mnesia 的acitve读数据,1秒35W,而ets同样的数据集,1秒500W,相差太大了)
2007-09-12 15:00:29 <NetSnail> 其实这样的东西,跟语言的关系不是很大呢,用C来写多index的数据结构,也差不多…
2007-09-12 15:01:21 <mryufeng> 35w不够用码?
2007-09-12 15:01:51 <panxiaof> 有点不够~
2007-09-12 15:02:23 <mryufeng> 把表分布 到节点去 就快了
2007-09-12 15:04:40 <panxiaof> 你是说把表分成几个小表是吧?
2007-09-12 15:05:43 <mryufeng> 分成小表 散到其他节点去 让其他的cpu帮你计算
2007-09-12 15:07:44 <panxiaof> en..不过我是很希望,如果ets能支持双key,速度又能达到每秒500W,那太爽了,就没有这么烦的事了
2007-09-12 15:08:07 <panxiaof> 人心不足啊~hehe
2007-09-12 15:08:32 <mryufeng> 双key对库的作者是个挑战哦
2007-09-12 15:10:13 <bitcowboy> Erlang的Eterm是什么东西?
2007-09-12 15:10:30 <bitcowboy> 看Erlang的bigint实现的时候看到的。
2007-09-12 15:10:59 <panxiaof> 商业的oracle,sql好像这个方面做得很到位是吧~(没有测试过oracle表在已经载入内存情况下的多个key的速度)
2007-09-12 15:11:39 <panxiaof> (但他们key的功能真是很强大)
2007-09-12 15:11:56 <mryufeng> 用过商业的extremedb 内存数据库
2007-09-12 15:12:25 <panxiaof> 感觉与mnesia比起来如何?
2007-09-12 15:12:48 <mryufeng> 百万数据量 和ets速度相当 支持多index
2007-09-12 15:13:12 <mryufeng> 会慢一些 但是没有到数量级
2007-09-12 15:14:04 <mryufeng> 比bereklydb快上百倍
2007-09-12 15:14:30 <panxiaof> bereklydb也是开源的,还是商业的?还是free的?
2007-09-12 15:14:40 <baojing.jiao> 是么,我们的cache 框架就是基于bereklydb做的。哈哈
2007-09-12 15:14:54 <panxiaof> 那还不如不做了,哈哈
2007-09-12 15:14:59 <bitcowboy> bereklydb好像是比较慢的。
2007-09-12 15:15:10 <mryufeng> bereklydb 是双重授权
2007-09-12 15:15:20 <mryufeng> 和mysql 差不多
2007-09-12 15:15:25 <bitcowboy> bereklydb比mysql好在哪里?
2007-09-12 15:15:36 <mryufeng> 商业的要求 研究的 个人不要
2007-09-12 15:16:25 <baojing.jiao> bereklydb不是关系数据库,没有sql。用起来根map一样。
2007-09-12 15:16:31 <NetSnail> bereklydb 能多index? 不是个大哈希表么?
2007-09-12 15:16:38 <baojing.jiao> 粗浅理解,嘿嘿
2007-09-12 15:16:50 <mryufeng> 我说 extremedb可以多index
2007-09-12 15:17:04 <mryufeng> bereklydb 不行哦
2007-09-12 15:17:07 <bitcowboy> 啊,原来这年头还有不支持SQL的数据库啊。我火星了。
2007-09-12 15:17:25 <NetSnail> 很多呀 =.=
2007-09-12 15:17:28 <mryufeng> 呵呵 不支持sql的多的去了
2007-09-12 15:17:35 <mryufeng> mnesia不是也不支持
2007-09-12 15:17:47 <bitcowboy> 我以为不只是SQL的都淘汰了。
2007-09-12 15:18:11 <mryufeng> 你要sql查询 就自己作一个哦
2007-09-12 15:18:19 <NetSnail> 并不是每个模型都适合sql的。。。比如ldap…没看出为什么要支持sql。。。
2007-09-12 15:18:33 <mryufeng> en
2007-09-12 15:18:35 <bitcowboy> 哦。
2007-09-12 15:19:12 <bitcowboy> 嗯,typedef unsigned long Eterm;
2007-09-12 15:19:26 <baojing.jiao> 用berekelydb做cache简单,效果么?多上机子,多上内存。应该还不错。哈哈
2007-09-12 15:19:38 <mryufeng> 你对eterm理解的太肤浅了
2007-09-12 15:20:00 <mryufeng> berekelydb 反正不要钱
2007-09-12 15:20:09 <bitcowboy> 我不知道什么叫Eterm,我只是在看代码。
2007-09-12 15:21:22 <davies.liu> 做cache为什么不用memcached?
2007-09-12 15:21:43 <mryufeng> memcache就是一个大的hash表
2007-09-12 15:21:59 <mryufeng> 加多一个网络接口
2007-09-12 15:21:59 <baojing.jiao> 做的时间长了估计。
2007-09-12 15:22:23 <mryufeng> ets随便搞搞也不比memecache差
2007-09-12 15:22:25 <baojing.jiao> 当时选型的时候要么就是没有memechaced,要不就是觉得不适用。
2007-09-12 15:22:46 <panxiaof> milliseconds 是1/1000秒吗?(不好意思,脑袋卡住了)
2007-09-12 15:22:49 <mryufeng> 主要是用的人多了 而且memcache协议和概念简单 容易上手
2007-09-12 15:23:01 <coderplay> bitcowboy貌似对数据库不是很熟 ![]()
2007-09-12 15:23:05 <baojing.jiao> 那意思是erlang可以开发一个分布式的cache
2007-09-12 15:23:32 <bitcowboy> 嗯,我只用过关系型数据库。
2007-09-12 15:23:33 <mryufeng> millisecond
[5mili7sekEnd]
n.
毫秒
2007-09-12 15:23:55 <bitcowboy> ms = 1/1000秒
2007-09-12 15:23:59 <mryufeng> 本来就是这样的 erlang的mnesia就是一个分布式的cache
2007-09-12 15:24:02 <AvinDev> 有篇paper就是说Erlang做的concurrency cache
2007-09-12 15:24:21 <coderplay> sql基于关系演算和关系代数的一种
2007-09-12 15:24:21 <baojing.jiao> cache是少计算,大内存的应用。可以分布式的部署在多计算,少内存的web服务器上。是不是就可以省点硬件投入了?哈哈
2007-09-12 15:24:24 <mryufeng> 分布+并发
2007-09-12 15:25:22 <baojing.jiao> memecached 可以分布式的不是在多台机子上么?没有用过
2007-09-12 15:25:37 <mryufeng> 可以多台分布
2007-09-12 15:25:37 <baojing.jiao> 还是说是单台
2007-09-12 15:25:47 <AvinDev> 客户端来实现分布
2007-09-12 15:26:01 <mryufeng> 要在libmemecahce里面支持
2007-09-12 15:26:09 <AvinDev> 根据key哈希到不同的memcached server
2007-09-12 15:26:17 <mryufeng> right
2007-09-12 15:26:17 <bitcowboy> HEADER representation:
aaaaaaaaaaaaaaaaaaaaaaaaaatttt00 arity:26, tag:4
2007-09-12 15:26:38 <panxiaof> extreme:
Insert ………………………100000 objects: 315 milliseconds,(3 microsecs/object)
Creating tree………………100000 objects: 271 milliseconds (2 microsecs/object)
Hash search………………100000 searches: 63 milliseconds (0 microsecs/search)
Tree search…………………100000 searches: 271 milliseconds (2 microsecs/search)
Sequential…………………100000 searches: 30 milliseconds (0 microsecs/search)
这个数据却实还比ets好像慢一点点,不过ets不支持双key啊
2007-09-12 15:27:16 <davies.liu> 分布式的cache应该是DHT,而不是erlang这种分布是,不需要集中的出口,也不需要节点间的通讯
2007-09-12 15:27:23 <mryufeng> 人家extremedb 支持 sql
2007-09-12 15:27:35 <baojing.jiao> 那意思是memecached如果分布式的话,对应用不是透明的喽?
2007-09-12 15:27:53 <baojing.jiao> 要自己去根据key去命中到不同的cache服务器上去?
2007-09-12 15:28:13 <mryufeng> 对应用透明
2007-09-12 15:28:21 <baojing.jiao> 还是这块已经做好了,应用不用操心
2007-09-12 15:28:22 <davies.liu> 在库里实现DHT,
2007-09-12 15:28:26 <mryufeng> 是memcahche client里面作的
2007-09-12 15:28:31 <baojing.jiao> 哦,明白了。
2007-09-12 15:28:39 <mryufeng> 应用不用担心
2007-09-12 15:29:07 <davies.liu> 做应用的还是尽量少发明轮子比较好,出发实在满足不了需求
2007-09-12 15:29:14 <AvinDev> davies.liu 对 DHT有什么研究?以前看过一把paper,没有搞懂
2007-09-12 15:29:37 <mryufeng> dht俺2004年就用过存p2p的数据
2007-09-12 15:29:56 <mryufeng> dht实际上就是一个好的hash算法
2007-09-12 15:30:17 <mryufeng> 加上网络的实现
2007-09-12 15:30:22 <baojing.jiao> 前者发明私家轮子,后来的人不会修呀。造成了很大的学习障碍。
2007-09-12 15:30:34 <mryufeng> dht本身没有作存储系统
2007-09-12 15:30:41 <AvinDev> 可以在增加和减少机器的情况下,不会导致大量的hash值失效和冲突吧?
2007-09-12 15:31:04 <bitcowboy> 不会
2007-09-12 15:31:07 <mryufeng> 不会 他一般一份数据存好几个地方
2007-09-12 15:31:33 <mryufeng> 在节点预备失效的 自动转存到其他节点去
2007-09-12 15:31:55 <davies.liu> 以我的粗浅理解,DHT就是用节点信息来做hash,比如IP,端口等,尽量能分别均匀
2007-09-12 15:32:01 <mryufeng> 他就是赌 不会所有的相关节点都失效这个概率
2007-09-12 15:32:02 <NetSnail> 节点可以动态增加删除,不需要中心处理器做调度是dht和普通用hash做符合均衡的区别 @.@
2007-09-12 15:32:47 <mryufeng> 是这样的 所以的细节都是节点见自己商量
2007-09-12 15:32:47 <bitcowboy> 你们都是牛人。
2007-09-12 15:33:11 <coderplay> yufeng GG是牛人
2007-09-12 15:33:14 <AvinDev> 看过emule那dht的文章,是一组文件信息都会存储到一组IP相近的机器上,那一组机器总会有几个在线
2007-09-12 15:33:37 <mryufeng> 俺就是 重新编码emule的dht实现的
2007-09-12 15:33:38 <AvinDev> 是不是dht一般有个tracker这样的东东来记录入口?
2007-09-12 15:33:54 <NetSnail> 没,那个是bt…
2007-09-12 15:33:56 <bitcowboy> Erlang的C源码中好多的宏啊,看起来真累。
2007-09-12 15:33:59 <mryufeng> 2004年p2p火的时候 想做个分布的系统
2007-09-12 15:34:26 <mryufeng> 后来 bt的那个比emule 的dht要简单些
2007-09-12 15:34:43 <davies.liu> memcached好像没有用DHT,因为cache是暂时性的,不需要备份
2007-09-12 15:34:52 <NetSnail> emule 的dht,是指kad?
2007-09-12 15:35:00 <bitcowboy> 嗯
2007-09-12 15:35:01 <AvinDev> 现在bt也要用dht来存储peer信息了,防止tracker被封
2007-09-12 15:35:15 <mryufeng> memcache就是简单的hash没有dht
2007-09-12 15:35:20 <NetSnail> kad确实不错的 @.@
2007-09-12 15:35:21 <davies.liu> 不过现在如果有节点down了,会比较域名,hash全边了
2007-09-12 15:35:22 <mryufeng> emule dht ==kad
2007-09-12 15:36:12 <NetSnail> 那本 programming erlang 不也提到,可以用erlang来做dht实现集群么?
虽然只是一句话 …
2007-09-12 15:36:44 <mryufeng> erlang来做就更简单了
2007-09-12 15:36:46 <davies.liu> 可不可以用DHT来缓存wikipedia的数据,解决在国内访问不了的问题
2007-09-12 15:36:52 <mryufeng> 网络部份不用作了
2007-09-12 15:37:03 <mryufeng> 存贮不用作了
2007-09-12 15:37:14 <mryufeng> 只要专心写个hash算法
2007-09-12 15:37:21 <davies.liu> 哪一章提到了?没印象
2007-09-12 15:37:23 <NetSnail> 恩恩…
2007-09-12 15:37:42 <AvinDev> 锋爷来写个dht算法吧,open source
2007-09-12 15:37:54 <AvinDev> 这里研究分布式的牛人也挺多
2007-09-12 15:38:25 <NetSnail> 把成熟的kad之类的写写,基本就够用了 @.@
关键是看做什么应用
2007-09-12 15:38:29 <mryufeng> dht鸟算法 我看了半个月 没有太明白 精髓
2007-09-12 15:38:35 <AvinDev> davies.liu 貌似是在清华搞分布式计算的吧:)
2007-09-12 15:38:41 <mryufeng> 和chord之类的改进版
2007-09-12 15:38:52 <NetSnail> 其实, 我熟悉的只有chord >_<
2007-09-12 15:39:11 <davies.liu> 没有,我只是对分布式计算一直很憧憬,hehe
2007-09-12 15:39:30 <mryufeng> 所以这些还得专门搞算法的GG 来搞 我们来实现
2007-09-12 15:39:50 <davies.liu> 本来有留学校做相关方面的机会,后来黄了:)
2007-09-12 15:40:06 <coderplay> 牛
2007-09-12 15:40:38 <AvinDev> coderplay,靠你了,考研男
2007-09-12 15:41:02 <mryufeng> 是猥琐男
2007-09-12 15:41:33 <NetSnail> 囧rz
2007-09-12 15:41:55 <davies.liu> …..
2007-09-12 15:42:12 <panxiaof> coderplay在考研?
2007-09-12 15:42:24 <coderplay> …
2007-09-12 15:42:26 <mryufeng> coderplay 也是搞分布计算的哦
2007-09-12 15:42:51 <AvinDev> 嗯,他在攻读分布式计算
2007-09-12 15:43:11 <panxiaof> 哦~在清华?
2007-09-12 15:43:24 <coderplay> 我在帮yufeng GG 物色极品mm
2007-09-12 15:43:48 <mryufeng> 嘘 小声点
2007-09-12 15:43:53 <coderplay> 一个校园mm,换五招绝招
2007-09-12 15:43:53 <NetSnail> 可以搭车同求么?
2007-09-12 15:44:54 <bitcowboy> Kad的思想很简单,所以Kad的论文也很简单。但是Kad是建立在Chord的基础上的,如果光看Kad那篇论文,而不看后面的参考文献,是不太容易理解的。
2007-09-12 15:45:39 <bitcowboy> Kad,只是用XOR作为距离运算,其他的都没说,都是集成别人的。
2007-09-12 15:45:47 <bitcowboy> 继承
2007-09-12 15:46:42 <AvinDev> 这个距离是指IP间的逻辑距离?
2007-09-12 15:46:48 <bitcowboy> 不是。
2007-09-12 15:46:56 <NetSnail> 是key的距离
2007-09-12 15:47:00 <bitcowboy> 只是一个抽象的距离。
2007-09-12 15:47:05 <bitcowboy> 嗯。
2007-09-12 15:47:12 <mryufeng> 是key的距离
2007-09-12 15:47:58 <bitcowboy> 这个距离其实用什么都可以,只是Kad发现了用XOR做距离的一系列好处。
2007-09-12 15:50:39 <bitcowboy> #define BIG_SIGN(xp) (!!bignum_header_is_neg(*xp))
2007-09-12 15:50:50 <bitcowboy> 这句话为什么要加两个!
2007-09-12 15:50:53 <bitcowboy> not
2007-09-12 15:52:32 <mryufeng> 2个的意思是 把 bignum_header_is_neg(*xp) 从 非0 数值 转成 bool的 true false
2007-09-12 15:52:44 <mryufeng> 俺也经常这么写
2007-09-12 15:52:53 <bitcowboy> 嗯,明白了。
2007-09-12 15:54:46 <bitcowboy> 看到这样一个注释:/* FIXME: */ 有点寒。
2007-09-12 15:55:48 <NetSnail> 多了…不过我常写的是/* TODO */
2007-09-12 15:55:49 <AvinDev> 呵呵,看过Erlang源码的各位老大可以考虑写本《Erlang Hack Guide》
2007-09-12 15:55:50 <mryufeng> 寒什么 大型的系统多的去 这样的case 好多时候是没有想好 更好的方法来解决 先凑合用
2007-09-12 15:56:18 <mryufeng> 一本500块 你看不
2007-09-12 15:56:19 <coderplay> 还有工具可以方便看FIXME, TODO标记
2007-09-12 15:56:21 <NetSnail> 而且,vi之类的编辑器还会高亮这种注视.
2007-09-12 15:56:32 <NetSnail> 注释
2007-09-12 15:56:33 <AvinDev> Eclipse里面提供三种: TODO FIXME XXX
2007-09-12 15:57:12 <bitcowboy> 数值计算算是基础系统吧。这些地方有这样的注释,让人看了不敢用。
2007-09-12 15:57:46 <mryufeng> 人家诚实才写 不写你不是也不知道
2007-09-12 15:57:57 <bitcowboy> 那倒也是哦
2007-09-12 15:58:23 <mryufeng> 写了 反而亲切 不写出事就麻烦了
2007-09-12 15:59:04 <coderplay> 说不定patch一下,就立功啦~~
2007-09-12 15:59:33 <bitcowboy> patch也要先看懂啊。现在是看不懂啊。
2007-09-12 15:59:54 <mryufeng> 感觉作程序还得象老外那样 比较诚实 早暴露问题 才好
2007-09-12 16:04:19 <nbvghost> 最近要做flash flv播放器..
2007-09-12 16:04:33 <nbvghost> 有没有人感趣的.
2007-09-12 16:04:48 <mryufeng> 具体点
2007-09-12 16:06:55 <nbvghost> 像土豆网那个视频播放器
2007-09-12 16:07:38 <mryufeng> 和erlang什么关系
2007-09-12 16:07:41 <AvinDev> 感觉到as的讨论组会比较好,这里都是讨论erlang的
2007-09-12 16:07:56 <AvinDev> yufeng给他个qq群号码:)
2007-09-12 16:08:09 <NetSnail> 囧rz …
2007-09-12 16:08:27 <coderplay> 讨论rtmp?
2007-09-12 16:08:47 <mryufeng> 说不定erlang可以帮他的忙
2007-09-12 16:08:50 <hczworld> 问一下erlang搞基于web的大型应用有前途吗
2007-09-12 16:08:53 <bitcowboy> rtmp是啥?
2007-09-12 16:09:02 <davies.liu> 有没有开源的任务调度的软件?就是可以调度给不同的机器执行,比如下载
2007-09-12 16:09:13 <AvinDev> rtmp,flash media server的通信协议
2007-09-12 16:09:18 <bitcowboy> 哦
2007-09-12 16:09:43 <coderplay> 俺很熟哦, 谁要知道些啥?
2007-09-12 16:09:58 <nbvghost> 群号多少.
2007-09-12 16:10:03 <AvinDev> erlang搞web,如果不是基础设施,感觉没有前途。。。不看好那个erlyweb项目
2007-09-12 16:10:31 <nbvghost> 想了解一下播放头功能.
2007-09-12 16:10:45 <AvinDev> twitter这个站点用了一些Erlang的基础设施来解决扩展性问题
2007-09-12 16:11:21 <hczworld> web应用的话,可能跟erlang对字符串支持还不好有关?
2007-09-12 16:11:47 <bitcowboy> 感觉今天这里人好多。
2007-09-12 16:12:02 <AvinDev> 每天都那么多人,只是潜水
2007-09-12 16:12:11 <coderplay> 播放头功能??
2007-09-12 16:12:33 <mryufeng> flash qq 26623753
2007-09-12 16:12:45 <coderplay> 我也加~~
2007-09-12 16:12:47 <yuxh312> flash俺不懂
2007-09-12 16:12:54 <yuxh312> 这么多人,貌似我迟到了
2007-09-12 16:13:00 <bitcowboy> 潜水的都上来了。
2007-09-12 16:13:03 <coderplay> flash seer, 不加
2007-09-12 16:13:22 <hczworld> flash搞多人在线视频聊天?
2007-09-12 16:13:27 <zhuzhaoyuan> 冒个泡
2007-09-12 16:13:57 <AvinDev> 说到视频,maillist上面有人问,有没有人用Erlang做fms
2007-09-12 16:14:42 <AvinDev> 锋爷觉得Erlang搞这些流媒体应用,编码解码会不会成瓶颈?
2007-09-12 16:14:54 <coderplay> 不会.
2007-09-12 16:15:29 <bitcowboy> 编码解码可以写个C模块去算。
2007-09-12 16:15:44 <coderplay> c+汇编做了, port一个就可以.或者直接调用bin
2007-09-12 16:15:48 <mryufeng> rtmp是binary协议 erlang处理应该没有效率的问题
2007-09-12 16:16:02 <AvinDev> 那就是要用到c了,我想讨论下纯Erlang的可能性
2007-09-12 16:16:04 <mryufeng> 最差的情况写个driver
2007-09-12 16:16:11 <coderplay> rtmp没有涉及解码
2007-09-12 16:16:22 <mryufeng> 个人感觉应该效率很高
2007-09-12 16:16:24 <coderplay> 只有做录制的时候,会有编码
2007-09-12 16:16:28 <AvinDev> 应该是属于解包
2007-09-12 16:16:38 <mryufeng> 因为erlang的binary和bit运算处理的还不错
2007-09-12 16:17:02 <AvinDev> 我以前也看过一下,录制,一般是在客户端录制然后传到服务器的
2007-09-12 16:17:11 <mryufeng> binary分析起来很简单 也很高效
2007-09-12 16:17:22 <coderplay> 可以录制在服务端
2007-09-12 16:18:11 <AvinDev> 感觉流量控制是个难点,red5做得不是太好
2007-09-12 16:18:36 <mryufeng> 流量控制 确实是media server的难点
2007-09-12 16:19:08 <mryufeng> 不过这个linux kernel的 traffic control里面有好多算法 可以抄下
2007-09-12 19:56:22 <bitcowboy> 嗯,吧Erlang的bit shift left看明白了。
2007-09-12 19:56:55 <bitcowboy> 和我想象的差不多。
2007-09-14 15:45:19 <baojing.jiao> 大家看看这篇文章(可能很多人都看过了
) -> http://ocaml.cn/node/343
2007-09-14 15:45:46 <baojing.jiao> 在邮件列表中看到: lock-free datastructure, STM 等等, 在高并发的程序里面优点很多, Intel 开始考虑硬件直接支持这些东西了.
2007-09-14 15:45:57 <baojing.jiao> 就搜回到这个文章。
2007-09-14 15:46:22 <baojing.jiao> 大家发表一下对stm,并发模型的看法。。。
2007-09-14 15:46:53 <panxiaof> 我不懂~我听~
2007-09-14 15:47:28 <baojing.jiao> 我投个引子,让老大们给大家科普科普
2007-09-14 15:48:12 <panxiaof> 哈~每次这个时候,我的耳朵都坚着的~
2007-09-14 15:48:49 <bitcowboy> 现在的 Lock free 都是依靠CPU的硬件指令完成的。
2007-09-14 15:49:05 <bitcowboy> 这个早就有了。
2007-09-14 15:49:13 <satyendra.iiml> how to use it
2007-09-14 15:49:20 <bitcowboy> ASM
2007-09-14 15:49:25 <bitcowboy> 汇编指令。
2007-09-14 15:49:38 <bitcowboy> cmpxchg 之类的。
2007-09-14 15:49:54 <satyendra.iiml> cmpxchg
2007-09-14 15:52:12 <baojing.jiao> cpu貌似还没有支持吧?
2007-09-14 15:52:30 <baojing.jiao> 我看那个maillist上inter才开始考虑呀
2007-09-14 15:52:46 <bitcowboy> compare exchange 早就有了。我们项目里都用了很久了。
2007-09-14 15:53:02 <bitcowboy> Windows 2000开始就有内置的API支持了。
2007-09-14 15:53:29 <bitcowboy> InterlockedSingleList
2007-09-14 15:53:38 <panxiaof> 对了,双核的与单核的,在解析xml,通过关键字读取ets,相差会大吗?
2007-09-14 15:53:55 <bitcowboy> 反汇编,看一下微软的源码就知道怎么实现的了。
2007-09-14 15:54:23 <mryufeng> 这个差别大 因为解释xml 和读取ets是cpu密集的
2007-09-14 15:54:39 <panxiaof> 哦`收到~
2007-09-14 15:55:11 <bitcowboy> Maillist 里的意思可能是Intel会支持更多的类似原子操作吧?
2007-09-14 15:55:53 <bitcowboy> 不过这些所谓的Lock free也不是完全的不锁。只是CPU内部锁内存总线了。
2007-09-14 15:56:24 <baojing.jiao> 就是硬件实现了锁,程序就不用考虑了。
2007-09-14 15:56:28 <baojing.jiao> 是吧?
2007-09-14 15:56:42 <bitcowboy> CPU锁总线的开销很小,而操作系统锁通常要切换内核,开销很大。
2007-09-14 15:57:29 <bitcowboy> 嗯,硬件锁,目前的应用范围还是比较受限制的。不想操作系统锁那么通用。
2007-09-14 15:57:43 <bitcowboy> 不像
2007-09-14 15:57:55 <linningjie> ??
2007-09-14 15:59:14 <bitcowboy> 但是,其实锁内存总线,对多核CPU的影响也很大的。因为只要一个核心锁定了总线,其他核心都不能访问内存了,只能在使用寄存器里的数据。
2007-09-14 15:59:52 <bitcowboy> 不过,这个可能会通过改进CPU Cache一致性算法得到改善,不过这个是Intel的事情了。
2007-09-14 16:05:49 <baojing.jiao> 如果这块inter做好了的话,那既有的编程方式就可以不用改变,享受多核的好处了。
2007-09-14 16:06:24 <baojing.jiao> 性能不行就加核,做到类似于主频提升性能提升的甜头。
2007-09-14 16:06:48 <baojing.jiao> 不过,在硬件层屏蔽多核的问题,能够简单彻底么?
2007-09-14 16:12:05 <bitcowboy> 那也是不可能的。
2007-09-14 16:12:26 <bitcowboy> 天下没有免费的午餐。
2007-09-14 16:12:43 <jackyz.zhao> 内存锁总线和对同一块内存区域的加锁,不是同一个概念。
2007-09-14 16:13:58 <bitcowboy> 嗯。Cache一致性算法弱的情况下,就只能把内存总线锁定。那样就不可能会出问题了。
2007-09-14 16:15:19 <jackyz.zhao> 这么说吧,多个cpu,仍然要共享一块ram吧,这样的话,不管你锁不锁总线,两个cpu上的进程还不是一样要解决共享冲突的问题?和cache一致性算法的关系又在哪里了?
2007-09-14 16:17:06 <bitcowboy> CPU是访问Cache的。虽然内存是同一块,但是这块内存可能同事在多个Cache里(比如每个核心有自己独立的Cache)。那样的话,就有Cache一致性问题了。
2007-09-14 16:17:58 <bitcowboy> 因为每个核心在向各自的Cache写数据的时候,可能不知道有其他的CPU在向同一块内存地址写数据。
2007-09-14 16:18:18 <bitcowboy> 这个就要Cache一致性算法解决了。
2007-09-14 16:19:39 <bitcowboy> 因为Cache不可能每次CPU写了数据之后都提交到内存里,再通知所有的Cache更新数据。那样效率太低,还不如没有Cache呢,÷
2007-09-14 16:20:42 <bitcowboy> 锁内存总线是个通俗的说法,意思是:锁定当前内存的状态。具体怎么实现,那要看CPU了。
2007-09-14 16:21:22 <jackyz.zhao> 引入cache,就把问题搞得更复杂了,比如:我有两个process跑在两个cpu上,各自有一个cache,它们都cache了同一块内存,那一个数据就有可能出现三个不同的版本。抛开cache,这个问题的症结,在我看来,就是前面说的,允许两个cpu上的process访问同一块内存(共享),这个不解决,有没有cache都是一样。
2007-09-14 16:22:35 <jackyz.zhao> 而,按照share nothing的原则来设计process,避免两个进程对同一块内存的访问这种情况,那么,就不存在这样的共享问题,也就没有必要搞锁。
2007-09-14 16:23:30 <bitcowboy> 哈哈,看样子我又把问题复杂话了。我映入Cache,只是想说明,Lock Free不是没有成本的,好的架构设计是必不可少的。不能在思想上依赖CPU的硬件锁。
2007-09-14 16:24:15 <jackyz.zhao> 嗯,cpu的总线锁是为了解决多个cpu对一个总线的硬件共享冲突,和内存锁没关系的。
2007-09-14 16:28:17 <baojing.jiao> 那就是要充分返回多核的计算能力,必须在编程模型上有所改变了?
2007-09-14 16:28:44 <baojing.jiao> 不能依靠硬件商来把这层做掉。
2007-09-14 16:30:09 <bitcowboy> 曾经,我的BOSS跟我说过一句话:“貌似是有函数式语言才能在多核时代发挥出多核的性能。”
2007-09-14 16:30:26 <mryufeng> 一旦你的数据结构涉及共享 可能会一发不可收拾 到处加锁
2007-09-14 16:30:48 <bitcowboy> 其实,他的意思是。我们要面临编程思想上的意思大革新。
2007-09-14 16:31:06 <bitcowboy> 我们要面临编程思想上的一次大革新。
2007-09-14 16:31:18 <satyendra.iiml> i m not understanding …u
2007-09-14 16:31:20 <bitcowboy> 这也是我们学习Erlang的原因和目的。
2007-09-14 16:31:34 <jackyz.zhao> 是的,这就是我的理解。虽说,目前还有一些别的研究方向正在探索共享内存方式下“优雅简单”的解决方案,比如,内存Transact啥的,不过我不是很看好这几个方向。
2007-09-14 16:32:41 <jackyz.zhao> 也许我理解得不够深刻,但在我看来,那有点类似“用一个大锁来替代N多小锁”。
2007-09-14 16:33:30 <mryufeng> 看下FMS服务器 http://mryufeng.javaeye.com/blog/105086
2007-09-14 16:33:33 <bitcowboy> 嗯,不过我都不抵制。哪个好用,我就用哪个。
2007-09-14 16:33:58 <jackyz.zhao> 呵呵。
2007-09-14 16:34:06 <jackyz.zhao> yufeng又博了啊?
2007-09-14 16:34:20 <baojing.jiao> 我的意思是,程序还可以按照传统的方式去写。至于多核的影响让inter这些硬件上和编译器的大牛屏蔽掉。我们可以象以前享受增加主频来增加性能的甜头。还是,多核的时候,必然伴随这开发思想上的革新。比如用好erlang。或者对传统编程语言进行整形。
2007-09-14 16:34:34 <baojing.jiao> 会出现那种情况?
2007-09-14 16:34:41 <jackyz.zhao> 这个fms是不是类似于red5之类的flash stream server?
2007-09-14 16:34:49 <baojing.jiao> 第二种,还是第一种也有可能?
2007-09-14 16:34:55 <bitcowboy> 貌似,周末可以一睹大牛的风采了。
2007-09-14 16:35:09 <mryufeng> 其实是很自然的 C++程序员 习惯了就会作出这样的蠢事
2007-09-14 16:35:33 <mryufeng> 反正加锁就一条一句 到处加
2007-09-14 16:35:50 <bitcowboy> 我觉得,多核的时候,必然伴随着开发思想上的革新。
2007-09-14 16:35:58 <mryufeng> fms是adobe的商业版本 每个copy 几十wus$
2007-09-14 16:36:05 <mryufeng> 还这样的性能
2007-09-14 16:36:14 <jackyz.zhao> 我是说,是不是干相同的事?
2007-09-14 16:36:38 <mryufeng> 害得我们到处 内核打patch hack fms的系统调用 来提高性能
2007-09-14 16:36:39 <jackyz.zhao> erlang社区有个家伙已经在对这个领域下手了
2007-09-14 16:37:00 <jackyz.zhao> 要搞一个erlang的red5
2007-09-14 16:37:06 <mryufeng> 但是如果是免锁的设计的话 就不会出现这样的情况
2007-09-14 16:37:12 <jackyz.zhao> 要不你们等一等?哈哈。
2007-09-14 16:37:21 <bitcowboy> 等啥?
2007-09-14 16:37:51 <mryufeng> 呵呵 其实我们也在关注erlang的fms实现
2007-09-14 16:38:31 <mryufeng> 而且比那个家伙应该作的工作多
2007-09-14 16:38:33 <jackyz.zhao> 嗯,他的代码已经可以svn了,你搞一份来,做个测试给大家看看啊
2007-09-14 16:38:47 <jackyz.zhao> hoho,
2007-09-14 16:40:26 <mryufeng> 呵呵 你要我耐心等候。。。
2007-09-14 16:41:50 <baojing.jiao> yufeng兄估计已经先人一步自己搞了吧。
2007-09-14 16:42:12 <baojing.jiao> 自己动手丰衣足食
2007-09-14 16:42:13 <jackyz.zhao> 估计自己已经秘密进行中了,哈哈,商业机密啊。
2007-09-14 16:42:45 <baojing.jiao> 只有牛人才能从轮子做起呀。哈哈
2007-09-14 16:43:18 <mryufeng> 呵呵 俺之前做过stream server的
2007-09-14 16:44:35 <mryufeng> xunlei的mms,rtsp下载就是俺们搞的哦
2007-09-14 16:44:49 <jackyz.zhao> @baojing.jiao 我认为,如果没有找到更好的共享内存下替代锁的解决方案,就是必须要变革思维的时候了,现有的主流语言,小到 x = x + 1 这样的语句,都是构建在共享内存的思维模式下的。要用语法糖,或者什么简便易行的方式来全面替换语言的底层设计思路,似乎是个不可能的任务。
2007-09-14 16:45:19 <bitcowboy> 嗯
2007-09-14 16:45:31 <jackyz.zhao> 我靠,牛叉啊。嘿嘿。yufeng匿名opensource一下嘛。
2007-09-14 16:46:50 <baojing.jiao> 我要几个下电影的ftp用户名,密码就行了。
2007-09-14 16:46:50 <mryufeng> 主要是思维变换过来 俺很欣赏lua的实现 作的太好了 几乎没有共享 极少需要锁。
2007-09-14 16:47:25 <bitcowboy> Lua貌似不是线程安全的。
2007-09-14 16:47:42 <baojing.jiao> 哈哈,研究了这么多东西,要写文章分享的呀。
2007-09-14 16:47:46 <jackyz.zhao> lua不了解,你说的是虚拟机吧,lua语言本身是不是构建在共享内存概念上的?
2007-09-14 16:47:56 <mryufeng> 呵呵 俺把lua的代码 作教材经常温习
2007-09-14 16:48:02 <baojing.jiao> 独乐不如众乐么
2007-09-14 16:48:20 <mryufeng> 他的设计思路就是 所有的东西不共享
2007-09-14 16:48:46 <mryufeng> 思路贯穿所有的API
2007-09-14 16:49:13 <mryufeng> 所以lua就非常适合多多线程环境 效率也高
2007-09-14 16:49:19 <jackyz.zhao> lua 不运行 x = x + 1 ?难怪n多游戏拿它做脚本了。
2007-09-14 16:50:01 <bitcowboy> 为什么我们这里说Lua不是线程安全的?可能是说Lua的C接口吧?
2007-09-14 16:50:20 <mryufeng> 运行 但是他的vm 相当于erlang的process
2007-09-14 16:50:39 <mryufeng> 你可以一个thread一个vm vm间互相没有任何关联
2007-09-14 16:51:06 <mryufeng> 这样你就不需要保护数据 就不需要lock了
2007-09-14 16:51:18 <jackyz.zhao> 哦,那它的 vm 也很轻量级?可以并发跑多少个?
2007-09-14 16:51:40 <bitcowboy> 哦,是的。不同的vm之间就是线程安全的。
2007-09-14 16:51:42 <mryufeng> 之前俺研究python的时候就被python搞死了 python有个全局的lock
2007-09-14 16:51:57 <mryufeng> 和erlang的process差不多轻量
2007-09-14 16:52:16 <bitcowboy> 是的,Lua的特点就是简洁。
2007-09-14 16:52:29 <jackyz.zhao> 嗯,那么,java或者javascript之类的语言,有没有可能按照这个思路来做呢?
2007-09-14 16:52:46 <mryufeng> 而且vm没有用到其他os resource, 除了ram, 而ram是大白菜的价格
2007-09-14 16:52:54 <bitcowboy> 游戏都喜欢用Lua做脚本是因为Lua执行速度快。
2007-09-14 16:52:58 <mryufeng> lua 4.0以后才这么设计的
2007-09-14 16:53:11 <mryufeng> 之前也是很差的
2007-09-14 16:53:37 <jackyz.zhao> 每个虚拟机都搞得极轻量,然后,动不动就搞几百上千个虚拟机来玩。
2007-09-14 16:53:45 <mryufeng> 建议大家有空读读lua代码 真的非常经典
2007-09-14 16:54:02 <mryufeng> 3个人花了1x年作了16000行代码
2007-09-14 16:54:06 <bitcowboy> Lua的代码据说还是比较短的。
2007-09-14 16:54:13 <mryufeng> 你说能不经典码
2007-09-14 16:55:07 <mryufeng> 而且简单易懂 用的数据结构非常简单 基本上就是array
2007-09-14 16:55:31 <bitcowboy> Erlang的代码好像就难度一些。
2007-09-14 16:55:42 <bitcowboy> 难读
2007-09-14 16:55:47 <mryufeng> 个人感觉l熟读ua对设计和编码的影响非常大
2007-09-14 16:55:59 <mryufeng> erlang的代码作的也是比较清晰的
2007-09-14 16:56:17 <bitcowboy> Erlang的数据结构比较复杂。
2007-09-14 16:56:25 <mryufeng> 而且所有的运行状态是可见的
2007-09-14 16:56:37 <mryufeng> 数据结构也不会太复杂
2007-09-14 16:56:43 <bitcowboy> 相对Lua而言。
2007-09-14 16:57:02 <jackyz.zhao> yufeng同学是c大拿级的,大家在家不要轻易模仿啊。读吐血不负责啊。 ![]()
2007-09-14 16:58:11 <mryufeng> erlang估计有20%的代码在作这个事情 所以性能优化 什么的就有依据
2007-09-14 16:58:22 <baojing.jiao> 我们学西语言是看文档,yufeng兄是直接看代码,看实现。功力之深厚,唯虚竹堪比呀。
2007-09-14 16:59:04 <mryufeng> 俺也看文档 但是细节还的看代码 代码最准确
2007-09-14 17:00:00 <jackyz.zhao> 说回 lua,这个语言的footprint怎么样?工业成熟度如何?比方什么框架啊,类库啊之类的。
2007-09-14 17:00:38 <mryufeng> 之前俺们的系统都是用ACE开发的 ACE的文档非常落后 俺就花了一年多的时间把他2xw行的代码读了好几遍 现在看其他的系统感觉都是很熟悉 套路好像都见过的那种。
2007-09-14 17:00:52 <mryufeng> footprint非常小
2007-09-14 17:01:05 <mryufeng> 代码的成熟度非常搞
2007-09-14 17:01:07 <mryufeng> 高
2007-09-14 17:01:18 <mryufeng> 唯一不足的就是 库太少
2007-09-14 17:01:38 <mryufeng> 还有就是没有 开发 调试的 工具
2007-09-14 17:01:48 <mryufeng> 就是配套的东西比较少
2007-09-14 17:02:35 <mryufeng> 所以lua没有进入大众
2007-09-14 17:03:48 <jackyz.zhao> 嗯,有意思,有时间了研究下。
2007-09-14 17:03:50 <mryufeng> 不过最近 luaforge.net 上面开始慢慢有成熟的库了
2007-09-14 17:04:06 <bitcowboy> Lua的用法,一般都是嵌入C中用,而不是单独用。所以其实库不用很多。
2007-09-14 17:04:56 <jackyz.zhao> 我感觉,lua的方式,如果能够给java借鉴,也许能够“以简单的方式”为主流语言带来“多核运算”的好处
2007-09-14 17:04:58 <mryufeng> 库不多 作大型的application的时候 开发效率就受影响 什么东西都要自己实现
2007-09-14 17:05:23 <jackyz.zhao> 象 hotcode replace 这样的特性 lua 有办法实现么?
2007-09-14 17:05:36 <bitcowboy> Lua暴露的调试接口,真的整合好的游戏引擎会自己整合一个Lua调时器进去。
2007-09-14 17:06:07 <mryufeng> lua的重心不在这里
2007-09-14 17:06:34 <bitcowboy> 真的有复杂的东西,一般都是在C里面实现好了给个Lua接口。没必要全在Lua里做。
2007-09-14 17:06:39 <jackyz.zhao> 那它的重心在哪里?
2007-09-14 17:07:09 <mryufeng> 它基本上是这样组成的 lexer + parser + opcode generator + vm + basic lib + api
2007-09-14 17:07:10 <bitcowboy> Lua的重心是简单、容易整合到C里面去。
2007-09-14 17:07:39 <bitcowboy> 这也是Lua目前主要的应用方式。
2007-09-14 17:07:42 <mryufeng> 他要解决的问题是 作一个高效的脚本语言
2007-09-14 17:07:56 <jackyz.zhao> 哦,作为一个c的脚本引擎,那和rhino之于java的关系是一样的咯?
2007-09-14 17:08:18 <mryufeng> rhino之于java的关系 俺不了解
2007-09-14 17:08:46 <bitcowboy> rhino,没听说过,java不熟。火星了啊。
2007-09-14 17:08:59 <jackyz.zhao> rhino是javascript引擎,它的目的是为了方便在java中加入javascript的脚本支持
2007-09-14 17:09:02 <mryufeng> 俺害怕 java
2007-09-14 17:09:22 <bitcowboy> 我有点抵制 java
2007-09-14 17:09:25 <jackyz.zhao> 哈哈。可以理解。yufeng同学看到这么低效的代码,还不抓狂?
2007-09-14 17:09:26 <mryufeng> java的库太大 变化太快 俺跟不上
2007-09-14 17:10:03 <bitcowboy> 我比较喜欢写C代码,java的异常机制我受不了。
2007-09-14 17:11:45 <jackyz.zhao> 这就是流派不同了,好比你们两个是少林的,俺是无名小派。哈哈。
2007-09-14 17:12:49 <baojing.jiao> 我是隔壁老王教的三脚猫,没门派呢还 ![]()
2007-09-14 17:13:04 <bitcowboy> 少林应该对武当吧 ![]()
2007-09-14 17:13:05 <hczworld> lua开发大型网站好搞吗
2007-09-14 17:13:24 <mryufeng> lua不是搞网站的
2007-09-14 17:13:27 <mryufeng> 不适合
2007-09-14 17:13:30 <bitcowboy> lua好像没有web开发框架吧。
2007-09-14 17:13:37 <mryufeng> 有
2007-09-14 17:13:42 <NetSnail> 只有个简单的server吧
2007-09-14 17:13:43 <mryufeng> kelper
2007-09-14 17:13:45 <bitcowboy> 居然有……
2007-09-14 17:13:58 <bitcowboy> 我觉得Lua搞这个没啥前途。
2007-09-14 17:14:04 <mryufeng> lua实现的web server功能很power
2007-09-14 17:14:22 <mryufeng> 但是 lua的长处不在这里
2007-09-14 17:14:40 <baojing.jiao> web开发就是从页面上搞定参数,组合起来,然后操作数据库。剩下的都是业务逻辑。没什么好玩的。
2007-09-14 17:14:40 <hczworld> 誐. 那lua搞游戏有一套而已?
2007-09-14 17:15:12 <bitcowboy> 现在游戏脚本用Lua比较多。
2007-09-14 17:15:18 <NetSnail> 胶水语言,有要胶水的地方就有它.
2007-09-14 17:15:34 <baojing.jiao> 我觉得大型网站,前面用rails,或者php直接和c写的中间件交互是比较好的方式。
2007-09-14 17:15:50 <jackyz.zhao> 嗯,erlang现在还缺少一个有力的脚本语言支持,遗憾啊。
2007-09-14 17:16:16 <coderplay> 我觉得lua整合各种c库成一个系统才素王道, MUHAHAHA~~
2007-09-14 17:16:16 <mryufeng> erlang本身就是script
2007-09-14 17:16:31 <coderplay> lua为主语言, C就专门写库
2007-09-14 17:16:42 <jackyz.zhao> 虽说也有同志在搞,不过搞到牛年马月才出来,就说不好了。
2007-09-14 17:16:57 <jackyz.zhao> erlang这个东西做script还是艰深了些
2007-09-14 17:17:05 <mryufeng> 呵呵
2007-09-14 17:17:12 <hczworld> erlang 结合python, 可以玩吧?
2007-09-14 17:17:26 <mryufeng> fp 大家看了是有点晕
2007-09-14 17:18:05 <jackyz.zhao> 我一个哥们看了erlang的小例子说:我靠,这是什么语言,让我用,门都没有。
2007-09-14 17:18:14 <baojing.jiao> 不过看习惯了就好了。
2007-09-14 17:18:39 <panxiaof> 我反正只管用,看的时候他说什么我就记什么,就是那个OPT是有点麻烦
2007-09-14 17:18:52 <bitcowboy> 呵呵,要让现在的大多数程序员接受Erlang,我觉得还是有一点挑战的。
2007-09-14 17:18:56 <hczworld> 看过一点erlang,觉得比较深是在binary处理.. 云云的
2007-09-14 17:19:24 <jackyz.zhao> 嗯,我倒是挺看好javascript作为erlang的script语言。一则javascript其实也是fp,二则语法很接近c家族,比较平易近人。
2007-09-14 17:19:58 <baojing.jiao> 我觉得从语法层上看没有多大的挑战,只是要深入下去的话,由于没有c和网络编程的基础。基本上就停滞不前了。
2007-09-14 17:21:54 <baojing.jiao> to:jackyz,那本书翻译的如何了?等着买来收藏呢。看英文的总觉得有些囫囵吞枣了。哈哈
2007-09-14 17:22:24 <jackyz.zhao> 苦翻中,老头子说话罗嗦得紧
2007-09-14 17:22:38 <NetSnail> LOL
2007-09-14 17:22:53 <mryufeng> 呵呵 鬼佬就是啰嗦 不过啰嗦的让人明白 俺喜欢
2007-09-14 17:23:29 <baojing.jiao> 这本电子版的看起来还是平易近人的。
2007-09-14 17:23:38 <baojing.jiao> 没有太让人看不懂的单词和句子。
2007-09-14 17:23:41 <jackyz.zhao> 是啊,可是翻中文还那么罗嗦,非给人打死不可
2007-09-14 17:24:16 <NetSnail> 没事没事, 入门书么
2007-09-14 17:24:25 <baojing.jiao> 我还以为自己的英文水平增强了呢,一看别的文章,打击不小。哈哈
2007-09-14 17:26:51 <jackyz.zhao> 嘿嘿。老头也不是英文的母语,maillist中,也是五花八门的英语都有。貌似erlang在欧洲比较流行,美国人处于刚刚启蒙的状态。
2007-09-14 17:31:53 <mryufeng> 呵呵 用google trend看下 你可能会比较吃惊
2007-09-14 17:32:10 <jackyz.zhao> 哦?地址?
2007-09-14 17:32:27 <mryufeng> http://www.google.com/trends
2007-09-14 17:33:05 <mryufeng> 中国没名
2007-09-14 17:33:52 <jackyz.zhao> ohyeah,瑞典俄罗斯?
2007-09-14 17:34:00 <jackyz.zhao> 还有南非?
2007-09-14 17:34:01 <mryufeng> 想不到把
2007-09-14 17:34:06 <jackyz.zhao> 不靠谱吧。
2007-09-14 17:34:35 <hczworld> 估计瑞典人把erlang当中小学课程了?
2007-09-14 17:34:37 <jackyz.zhao> 南非的软件工业?木有听说过呀。
2007-09-14 17:34:54 <mryufeng> 呵呵 这个世界 太crazy了
2007-09-14 17:35:03 <coderplay> 我记得做hipe的那个学校有erlang课程
2007-09-14 17:36:02 <jackyz.zhao> 确实crazy。
2007-09-14 17:36:57 <jackyz.zhao> 不过07年erlang增长很迅猛就是
2007-09-14 17:37:13 <mryufeng> 明显增长
2007-09-14 17:37:17 <jackyz.zhao> 似乎有翻倍的样子
2007-09-14 17:37:33 <jackyz.zhao> 况且还是其
2007-09-14 17:37:35 <jackyz.zhao> q3
2007-09-14 17:51:18 <bitcowboy> 随着CPU核心数量的增长,Erlang必定会更火爆。
2007-09-14 17:51:40 <coderplay> MPI也会火爆的,MUHAHA~~
2007-09-15 21:19:29 <yuxh312> Bill Clementson 给了回复 , 他也在windows下试了把的distel,碰上跟我一样的问题了,sigh
2007-09-15 21:25:31 <mryufeng> 等他解决 or 你自己解决
2007-09-15 21:26:46 <yuxh312> 我前两天自己尝试修改elisp,改了一个晚上没啥结果, 发到maillist后他说也碰上这个问题,不过他是在cvs版的emacs中有,bin版的没有,我则在bin版的有,现在把问题转到distel的邮件组去了
2007-09-15 21:27:21 <mryufeng> 多参与国际讨论是好事情
2007-09-15 21:27:36 <yuxh312>
2007-09-17 15:24:00 <xushiweizh> 哪些人有兴趣近期来珠海作下交流吗?珠三角Erlang Fans二次会议。:D
上次主要是认识下,不过这次我觉得就需要深入一些了。大家有啥建议?
2007-09-17 15:24:16 <zhuzhaoyuan> 支持
2007-09-17 15:24:28 <yuxh312> 哇,又有白饭吃了
2007-09-17 15:24:30 <linningjie> 时间?
2007-09-17 15:24:33 <bitcowboy> 上次喝咖啡,这次改吃饭了。
2007-09-17 15:24:34 <baojing.jiao> ?
2007-09-17 15:25:02 <mryufeng> 恩 俺带个塑料袋 打包
2007-09-17 15:25:10 <coderplay> 我带桶
2007-09-17 15:25:35 <yuxh312> 带垃圾桶装废塑料袋吗?
2007-09-17 15:25:48 <tigermobile> Where can I get ConferenceBot from? Perrys Page seems to be down… ![]()
2007-09-17 15:25:53 <linningjie> :(!
2007-09-17 15:26:20 <AvinDev> 上次的照片你们上传到那里啦?
2007-09-17 15:26:36 <yuxh312> re,一直没看到照片
2007-09-17 15:26:42 <yuxh312> 呼唤netsnail
2007-09-17 15:26:51 <AvinDev> 嗯,让大家看看恶人aol
2007-09-17 15:27:04 <yuxh312> -_-!
2007-09-17 15:27:05 <coderplay> no
2007-09-17 15:32:17 <xushiweizh> 大家可以列一下你关注Erlang的主题。
2007-09-17 15:32:38 <xushiweizh> 然后我们筛选一两个重点交流下。
2007-09-17 15:32:40 <xushiweizh> 如何?
2007-09-17 15:33:03 <xushiweizh> 关注的Erlang的某个话题。
2007-09-17 15:34:29 <coderplay> 什么时候?
2007-09-17 15:35:01 <jackyz.zhao> 嗯,南方的兄弟们活动频繁啊,羡慕羡慕。
2007-09-17 15:35:08 <xushiweizh> 时间待定,为了大家有充分准备,我建议是下周六。
2007-09-17 15:35:19 <xushiweizh> (不是这周六)
2007-09-17 15:35:30 <mryufeng> 下周六我们上班哦
2007-09-17 15:35:35 <coderplay> 29号可能很多人国庆上班
2007-09-17 15:35:44 <coderplay> 调休
2007-09-17 15:35:58 <xushiweizh> 国庆后也可以。
2007-09-17 15:36:15 <mryufeng> 哦
2007-09-17 15:36:18 <coderplay> ![]()
2007-09-17 15:37:15 <xushiweizh> 或者这周六?
2007-09-17 15:37:22 <xushiweizh> 看大家意见吧。
2007-09-17 15:37:29 <coderplay> 有些仓促 ![]()
2007-09-17 15:37:44 <coderplay> 质量为上 ![]()
2007-09-17 15:37:48 <xushiweizh> 我也觉得。
2007-09-17 15:39:40 <coderplay> 我想听听emacs的一些手段 ![]()
2007-09-17 15:40:17 <zhuzhaoyuan> emacs的手段是指什么?emacs的使用方法?
2007-09-17 15:40:28 <coderplay> 是啊
2007-09-17 15:40:37 <coderplay> 一直不会用这玩意
2007-09-17 15:40:46 <zhuzhaoyuan> 看王垠的教程
2007-09-17 15:41:03 <zhuzhaoyuan> 一旦你会用它了,你就爱死它了
2007-09-17 15:41:24 <mryufeng> 这么牛
2007-09-17 15:41:27 <xushiweizh> 要不我们定10月13日吧。这样每个参与的人都有充足时间准备议题、讲稿。
2007-09-17 15:41:46 <zhuzhaoyuan> to coderplay: 这里http://docs.huihoo.com/homepage/shredderyin/
2007-09-17 15:42:08 <zhuzhaoyuan> http://docs.huihoo.com/homepage/shredderyin/emacs.html
2007-09-17 15:42:14 <coderplay> 看过,还是不会 ![]()
2007-09-17 15:43:21 <zhuzhaoyuan> 我曾经有个键盘表贴在家里的,挺好的
2007-09-17 15:43:30 <zhuzhaoyuan> 搜搜看,应该能找到
2007-09-17 15:44:11 <xushiweizh> 1. erlang ide
2. erlang diagnost (log, trace, debug, etc)
2007-09-17 15:44:25 <xushiweizh> 还有什么话题比较关注?
2007-09-17 15:44:36 <coderplay> 基本上王列的我会, 就是不能得心应手,可能用习惯了ide
2007-09-17 15:45:25 <mryufeng> 3. erlang distribution
2007-09-17 15:45:32 <panxiaof> 我也要参加啊~~真可惜。。太远了
2007-09-17 15:46:05 <coderplay> 4. erlang emulator implementation
2007-09-17 15:46:35 <xushiweizh>
这个肯定到时由coderplay来讲。
2007-09-17 15:46:40 <coderplay> …
2007-09-17 15:48:55 <xushiweizh> panxiaof是在哪里工作?
2007-09-17 15:49:08 <panxiaof> 北京了:(
2007-09-17 15:49:26 <zhuzhaoyuan> to coderplay: 找到了:
http://www.clip.dia.fi.upm.es/~logalg/doc/emacsreference.pdf
http://www.cse.ucsc.edu/classes/cmps012a/Fall05/supplements/emacsRefCard.pdf
2007-09-17 15:50:01 <coderplay> 谢谢,我瞄一下 ![]()
2007-09-17 15:50:35 <zhuzhaoyuan> 打印出来,贴于显眼的位置
2007-09-17 15:50:41 <xushiweizh> 大家都用什么erlang ide?调查一下。哈哈
2007-09-17 15:50:53 <coderplay> 我用erlide
2007-09-17 15:50:55 <zhuzhaoyuan> guru们说,emacs是一种生活,是一种姿态
2007-09-17 15:51:04 <zhuzhaoyuan> 我用emacs
2007-09-17 15:51:06 <mryufeng> erlide + vim
2007-09-17 15:51:12 <rory.cn> vim
2007-09-17 15:51:22 <bitcowboy> Ultra Edit
2007-09-17 15:51:22 <AvinDev> erlybird+emacs
2007-09-17 15:51:31 <coderplay> 我和yufeng一样,有时用vim
2007-09-17 15:51:59 <panxiaof> Ultr Edit
2007-09-17 15:52:33 <bitcowboy> 不过我打算改emacs了。
2007-09-17 15:52:46 <yuxh312> ??
2007-09-17 15:52:57 <yuxh312> 难道有什么消息我没收到?
2007-09-17 15:53:09 <coderplay> yuxh312 给我们讲emacs
2007-09-17 15:53:33 <yuxh312> sigh,我果然错过了很多消息
2007-09-17 15:53:53 <bitcowboy> 去gmail里看聊天记录吧。
2007-09-17 15:54:32 <coderplay> gtalk没收, gmail也木有
2007-09-17 15:54:44 <yuxh312> 之前试了一下distel,很好用,很强大,但是要在linux下才能发挥,windows下跑都跑不顺畅
2007-09-17 15:54:51 <yuxh312> 我已经拿到记录了
2007-09-17 15:55:02 <AvinDev> 以前想配distel,但是出问题:(
2007-09-17 15:55:13 <coderplay> 我也试了distel
2007-09-17 15:55:26 <coderplay> avindev是node down?
2007-09-17 15:55:33 <yuxh312> 我之前截了图
2007-09-17 15:55:46 <coderplay> 我老碰上node down 不知道是咋回事, 配置都okay
2007-09-17 15:56:05 <yuxh312> nodedown碰过一次
2007-09-17 15:56:09 <yuxh312> 后来灭掉了
2007-09-17 15:56:19 <coderplay> how to?
2007-09-17 15:56:32 <yuxh312> 只要在distel启动的时候给当前节点设个名字,然后连到这个名字就可以了
2007-09-17 15:56:44 <yuxh312> 默认的名字或者localhost都会nodedown
2007-09-17 15:56:56 <AvinDev> When I press (C-c C-z) start an erlang console at emacs, and press
(C-c C-d l), message console print following messages:
“DeepBlue / -27924 servname not supported for ai_socktype”
2007-09-17 15:56:58 <bitcowboy> 完全听不懂。
2007-09-17 15:57:09 <coderplay> 那它其实是通过port?
2007-09-17 15:57:22 <yuxh312> 等下,我把distel的配置elisp code贴给大家
2007-09-17 15:58:18 <AvinDev> 最近都在win下开发,很少到linux下了,等国庆有空试试新版本的distel行不行
2007-09-17 15:58:43 <AvinDev> 提示 servname not supported for ai_socktype,google不到结果,那时候太郁闷了
2007-09-17 15:59:42 <yuxh312> ;distel
(add-to-list ‘load-path “/home/yuxihe/src/distel/elisp”)
(when (locate-library “distel”)
(require ‘distel)
(distel-setup)
;; (add-hook ‘erlang-mode-hook ‘distel-erlang-mode-hook) ; now with apt-get
(add-hook ‘erlang-mode-hook
‘(lambda ()
(unless erl-nodename-cache
(distel-load-shell))))
(defun distel-load-shell ()
“Load/reload the erlang shell connection to a distel node”
(interactive)
;; Set default distel node name
(setq erl-nodename-cache ‘distel@localhost)
(setq distel-modeline-node “distel”)
(force-mode-line-update)
;; Start up an inferior erlang with node name `distel’
(let ((file-buffer (current-buffer))
(file-window (selected-window)))
(setq inferior-erlang-machine-options ‘(“-sname” “distel”))
(switch-to-buffer-other-window file-buffer)
(inferior-erlang)
(select-window file-window)
(switch-to-buffer file-buffer))))
2007-09-17 16:00:04 <AvinDev> 呵呵,干脆你到erlang china发文章,岂不是更好
2007-09-17 16:00:21 <bitcowboy> 顶啊顶。
2007-09-17 16:00:23 <xushiweizh> 赞同。
2007-09-17 16:00:30 <mryufeng> en
2007-09-17 16:00:38 <yuxh312> 说回 UE,其实Ultraedit 是我多年来的最爱,嘿嘿
2007-09-17 16:00:50 <yuxh312> erlang china我还没帐号,回头注一个就去贴
2007-09-17 16:01:17 <bitcowboy> UltraEdit就是上手快。直接开始Erlang了。也不用去搞一堆的配置文件啥的。
2007-09-17 16:01:56 <bitcowboy> 不过到后期,可能觉得UE功能不够用。
2007-09-17 16:02:32 <xushiweizh> 没有 debug 功能
2007-09-17 16:03:01 <coderplay> 调debugger出来
2007-09-17 16:03:20 <xushiweizh> 我是指UE。
2007-09-17 16:03:26 <jackyz.zhao> 嘿嘿。俺也是心向emacs久矣,最近特地整了一个linux,专门来练emacs,不习惯中。
2007-09-17 16:03:28 <xushiweizh> 看来ide之争主要是emac和erlide。
2007-09-17 16:03:29 <coderplay> erlide的计划有很多view哦
2007-09-17 16:03:31 <yuxh312> windows下distel我现在位置碰到的问题是 在reload code准备iterpreter的时候会报一个handle event失败的错误, 搜到一个同样的错误,说是erlang。cookie的缘故,但是同样的解决办法在我这里不适用,改了一个晚上的elisp也没解决,郁闷死, .erlang.cookie 都换到hex 清零了都不行。发到maillist也有人碰过类似的问题,到现在貌似也没什么好办法
2007-09-17 16:04:06 <xushiweizh> emacs
2007-09-17 16:04:07 <yuxh312> UE + erlw with debugger mode,也是不错的
2007-09-17 16:04:16 <yuxh312> 昨晚上我就在这么干
2007-09-17 16:04:43 <yuxh312> UE的功能其实很彪悍的,当然,断点调试的确是没有。
2007-09-17 16:04:57 <yuxh312> 不过比起emacs这种变态的扩展能力就弱很多了
2007-09-17 16:07:36 <bitcowboy> UE只是个编辑器,emacs当初是当操作系统写的。
2007-09-17 16:08:07 <yuxh312> 至今见过最彪悍的用法就是 kernerl + emacs
2007-09-17 16:08:41 <yuxh312> sorry. typo , “kernel”
2007-09-17 16:10:21 <coderplay> 有没有谁讲otp设计相关的? 包括release, appup等
2007-09-17 16:10:37 <yuxh312> 就你了, coderplay
2007-09-17 16:10:38 <coderplay> 偶还想听 code replacement 之类的
2007-09-17 16:10:54 <coderplay> …
2007-09-17 16:12:41 <xushiweizh> code replacement ? 指“重构”吗?
2007-09-17 16:13:21 <coderplay> no, 热部置相关
2007-09-17 16:13:27 <yuxh312> refactor 这个是重构吧
2007-09-17 16:13:33 <xushiweizh> 哦。明白了。
2007-09-17 16:13:43 <coderplay> 部署
2007-09-17 16:13:43 <xushiweizh> hot code swap
2007-09-17 16:14:21 <AvinDev> 做软交换的估计会对code replement很关注
2007-09-17 16:14:31 <yuxh312> 貌似今晚王东的讲座有这个内容
2007-09-17 16:15:28 <xushiweizh> 1. erlang ide
2. erlang diagnost (log, trace, debug, etc)
3. erlang distribution (by mryufeng)
4. erlang emulator implementation (by coderplay)
5. code replement (hot code swap) (by coderplay)
2007-09-17 16:15:50 <coderplay> 俺想听
2007-09-17 16:16:21 <xushiweizh> 飞过来吧。 ![]()
2007-09-17 16:16:48 <coderplay> 我领4号好了, 还没开始看实现, 不过我有时间 ![]()
2007-09-17 16:17:11 <AvinDev> 读研男的悠闲生活啊
2007-09-17 16:17:25 <xushiweizh> 向往ing…
2007-09-17 16:17:28 <yuxh312> 羡慕啊羡慕
2007-09-17 16:17:32 <mryufeng> 5 号 俺来把
2007-09-17 16:18:04 <coderplay> 其实yufeng每个都会,俺是班门弄斧
2007-09-17 16:18:22 <AvinDev> 嗯,yufeng超级强悍
2007-09-17 16:18:37 <yuxh312> 把yufeng解剖掉
2007-09-17 16:19:49 <mryufeng> 发现肚子里面全部是青蛙和草
2007-09-17 16:20:10 <xushiweizh> yufeng解剖并不能得到2个或4个yufeng,这个违背生物学原理。
2007-09-17 16:20:29 <coderplay> 那到春天把yufeng种下去
2007-09-17 16:20:41 <yuxh312> 可以的,解剖完了可以造几个出来,现在的生物学绝对彪悍
2007-09-17 16:21:05 <yuxh312> 青蛙送金山食堂,草种到金山草场
2007-09-17 16:21:15 <mryufeng> 错 找几个美女就姐姐这个问题 了
2007-09-17 16:21:29 <mryufeng> 姐姐==解决
2007-09-17 16:21:37 <yuxh312> 这条信息作永久记录,打劫用
2007-09-17 16:22:06 <coderplay> 路人皆知,你是后知后觉了,打劫不到
2007-09-17 16:22:10 <mryufeng> 呵呵 不要 呀我收回
2007-09-17 16:22:33 <yuxh312> 家人不知啊,所以还是有效果的
2007-09-17 16:25:06 <xushiweizh> 1. erlang ide: emacs vs. erlide
2. erlang diagnost (log, trace, debug, etc)
3. erlang distribution (by mryufeng)
这3个议题谁感兴趣?
2007-09-17 16:26:21 <zhuzhaoyuan> 对2比较感兴趣 ![]()
2007-09-17 16:26:45 <panxiaof> 都感兴趣
2007-09-17 16:26:50 <yuxh312> 你领走吧
2007-09-17 16:27:10 <yuxh312> 老许的意思是谁来讲,哈哈
2007-09-17 16:27:27 <zhuzhaoyuan> 汗。。。
2007-09-17 16:30:18 <bitcowboy> 我想听4和5。
2007-09-17 16:30:52 <AvinDev> 那时候准备个DV就可以了
2007-09-17 16:32:50 <xushiweizh> DV肯定要准备的。 ![]()
2007-09-17 16:33:27 <xushiweizh> bitcowboy就在珠海,不用DV就听得到啦。 ![]()
2007-09-17 16:33:41 <AvinDev> OH,珠海软件园的?
2007-09-17 16:33:51 <xushiweizh> 金山的
2007-09-17 16:34:13 <bitcowboy> ……革命任务被曝光了。
2007-09-17 16:34:15 <zhuzhaoyuan> bitcowboy是金山的?
2007-09-17 16:34:26 <yuxh312> 西山居的牛,
2007-09-17 16:34:38 <yuxh312> 俺们当年竞赛实验室的大队长
2007-09-17 16:34:53 <zhuzhaoyuan> 哦,知道了,那头牛啊
2007-09-17 16:34:53 <xushiweizh> 曝光任务继续中…
2007-09-17 16:35:18 <bitcowboy> 不要说了。以后还让不让人搞地下任务啊……
2007-09-17 16:36:05 <yuxh312> 新金山大楼建成之前都没有地下室,让你搞你也搞不了
2007-09-17 16:36:14 <zhuzhaoyuan> 拿可乐来收买我们吧
2007-09-17 16:36:34 <mryufeng> 坚决曝光 无论涉及到谁 也不管他的职位多高
2007-09-17 16:36:50 <coderplay> 楼上的话ms在哪听过?
2007-09-17 16:36:59 <AvinDev> 呃,这个群里面有多少个金山的?
2007-09-17 16:37:04 <yuxh312> 凤凰卫视?
2007-09-17 16:37:22 <xushiweizh> 好像挺多。
2007-09-17 16:37:24 <coderplay> 某河蟹吧
2007-09-17 16:37:34 <xushiweizh> 不过不曝光了。
2007-09-17 16:37:37 <xushiweizh> ![]()
2007-09-17 16:37:48 <yuxh312> 嗯,留点小秘密
2007-09-17 16:37:53 <zhuzhaoyuan> 看口气,我猜yuxh312可能是
2007-09-17 16:37:58 <xushiweizh> 到时大家到珠海参加二次会议就认识了,哈哈。
2007-09-17 16:38:10 <coderplay> yuxh312本来就是
2007-09-17 16:38:19 <yuxh312> 我是泰山的
2007-09-17 16:38:48 <coderplay> 难道这里除了我与arbow, yufeng不是,其它都是??? 太恐怖了…
2007-09-17 16:39:13 <yuxh312> 显然 netsnail不是金山的
2007-09-17 16:39:28 <NetSnail> 突然看到自己的名字
2007-09-17 16:39:38 <yuxh312> 不过这个id好久没现身了。。。。。。。。。。汗,马上就来了
2007-09-17 16:39:44 <AvinDev> 谁来讲一下 C Node,Port,Driver这些啊
2007-09-17 16:39:50 <yuxh312> 给大家发照片拿,帅哥
2007-09-17 16:40:07 <AvinDev> 网蛇把照片放那里去了?
2007-09-17 16:40:09 <coderplay> yufeng讲
2007-09-17 16:40:16 <NetSnail> 我不是给了金山的某隐藏boss的么?
2007-09-17 16:40:17 <xushiweizh> 6. erlang interact with c
2007-09-17 16:40:19 <AvinDev> 我也支持yufeng讲
2007-09-17 16:40:22 <zhuzhaoyuan> NetSnail的这个反应速度像bot,设置了关键字 ![]()
2007-09-17 16:40:42 <xushiweizh> 嗯,我收到NetSnail的照片了。
2007-09-17 16:40:50 <xushiweizh> 不过不知道该公布到哪。
2007-09-17 16:40:59 <yuxh312> 建 picasa相册
2007-09-17 16:41:01 <mryufeng> 俺有ftp
2007-09-17 16:41:12 <coderplay> tudou.com
2007-09-17 16:41:13 <mryufeng> 放picasa好
2007-09-17 16:41:16 <NetSnail> 要整理一下呀,主要是考虑到你有其他的照片,觉得你来发全部的比较好.
2007-09-17 16:41:18 <xushiweizh> picasa相册不错。
2007-09-17 16:41:27 <NetSnail> picasa 支持
2007-09-17 16:41:39 <xushiweizh> 好,以后都放picasaweb上了。
2007-09-17 16:41:52 <xushiweizh> 我整理下。
2007-09-17 16:42:13 <mryufeng> 把俺搞的漂亮些
2007-09-17 16:42:33 <coderplay> 麻烦帮我磨下皮再传
2007-09-17 16:42:36 <AvinDev> 把你PS成芙蓉
2007-09-17 16:42:39 <NetSnail> 就放在erlang_group这个gtalk的picasaweb上不就可以了 @.@
2007-09-17 16:43:14 <yuxh312> 我要准备代表事业部参加足球联赛去啦,大家继续
2007-09-17 16:44:48 <NetSnail> ZoomQuiet 转战珠海是也乎
突然看到这个.
2007-09-17 16:45:29 <AvinDev> where?
2007-09-17 16:45:40 <NetSnail> python-cn group.
2007-09-17 16:47:25 <AvinDev> 响应金山召唤了,下周就转战珠海了。。。。。。。老许下手真快。。
2007-09-17 16:47:29 <coderplay> netsnail, what’s your topic on erlang ?
2007-09-17 16:47:57 <NetSnail> 听 …
2007-09-17 16:49:05 <NetSnail> 其实,其实,我是小菜来的 …
2007-09-17 16:52:57 <xushiweizh> 关于erlang交流会的说明:
1. 我本人起发起人和组织交流的义务。
2. 交流会主讲人报销来回火车票或汽车票、住宿(如果交流会超过1天的话)。
3. 交流会任何人可报名免费参与听讲。
2007-09-17 16:53:32 <mryufeng> 呀 这么好呀 免费逛公园码?
2007-09-17 16:54:01 <AvinDev> 海滨公园是免费的,随便你去逛个够
2007-09-17 16:54:12 <jackyz.zhao> 哇塞,有金山这样的大公司赞助,爽啊。
2007-09-17 16:54:25 <xushiweizh> 当然,也可能考虑其他形式的交流(如沙龙对等方式的)。
2007-09-17 16:54:33 <xushiweizh> 作为补充
2007-09-17 16:54:53 <mryufeng> 呵呵 喜欢 喜欢 最好再搞点好吃的 俺天天去
2007-09-17 16:54:57 <coderplay> arbow可以顺便回家了
2007-09-17 16:55:17 <jackyz.zhao> 怒羡慕
2007-09-17 16:55:20 <AvinDev> 我国庆都回去了啊
2007-09-17 16:55:53 <dotwoo> 不错啊,那里报名
2007-09-17 16:55:54 <coderplay> 要xushiweizh报机票, jackyz就可以过来啦
2007-09-17 16:56:03 <AvinDev> jackyz坐个火车来一趟好了,让大伙瞻仰一下
2007-09-17 16:56:28 <jackyz.zhao> 咣当
2007-09-17 16:56:30 <xushiweizh> 目前还没有报机票的计划,期待以后吧。 ![]()
2007-09-17 16:58:57 <xushiweizh> 报名可发信到 xushiweizh@gmail.com
2007-09-17 16:59:35 <xushiweizh> 具体事宜及相关安排容后发布。
2007-09-17 17:00:03 <baojing.jiao> 最好分享一下在目前情况下erlang的最佳实践,有具体项目就更好了。还有,比如如果扬长避短,和c node如何结合之类的。
2007-09-17 17:00:03 <baojing.jiao> 哈哈
2007-09-17 17:00:29 <coderplay> 楼上说的有道理
2007-09-17 17:00:48 <mryufeng> 恩
2007-09-17 17:01:21 <coderplay> 可这要经验,ms我们的经验都不足的说
2007-09-17 17:01:39 <xushiweizh> 这个议题很棒。很有挑战&难度。
2007-09-17 17:01:49 <baojing.jiao> 大虾都是从小虾米长起来的么。
2007-09-17 17:02:09 <baojing.jiao> 让yufeng大哥,好好准备一下,哈哈。
2007-09-17 17:02:19 <coderplay> 我觉得让我们的erlang社区经过一段时间后再说吧 ![]()
2007-09-17 17:02:40 <jackyz.zhao> 嘿嘿,曝光yufeng的绝密商业产品。:D
2007-09-17 17:03:09 <baojing.jiao> 这个是长期议题,有能力者,多思考思考。时机成熟了,就可以分享了。
2007-09-17 17:03:21 <panxiaof> screate project :…..
2007-09-17 17:03:55 <jackyz.zhao> 北京的还有谁啊?
2007-09-17 17:03:56 <AvinDev> 锋爷有啥秘密项目,咋俺不知道?
2007-09-17 17:04:14 <xushiweizh> erlang的最佳实践,可以后续交流会再来探讨。不过 6. erlang interact with c 还是可以讲讲。
2007-09-17 17:04:51 <jackyz.zhao> 俺们也要组织北京聚会
2007-09-17 17:04:59 <coderplay> 准备一些胖大海给yufeng吧
2007-09-17 17:05:14 <mryufeng> 胖大海 == ?
2007-09-17 17:05:32 <coderplay> 怕你失声
2007-09-17 17:05:44 <mryufeng> 这么多前辈 俺哪里敢吹牛皮
2007-09-17 17:06:05 <xushiweizh> yufeng过谦了。 ![]()
2007-09-17 17:06:07 <mryufeng> 俺平常吹下也就算了 人多了 俺怕怕
2007-09-17 17:06:32 <xushiweizh> 公认的erlang前辈级人物呢。呵呵
2007-09-17 17:06:49 <jackyz.zhao> 嘿嘿,这次活动要主动公布照片啊。
2007-09-17 17:07:02 <jackyz.zhao> 都还没见到真人呢
2007-09-17 17:09:53 <baojing.jiao> 可怜的我呀,即不在广州,又不在北京。
2007-09-17 17:09:59 <baojing.jiao> 离上海倒是很近。
2007-09-17 17:11:36 <AvinDev> 上海的朋友也可以组织一下的,T1和Potian也很强悍
2007-09-17 17:12:00 <panxiaof> 北京也没活动啊
2007-09-17 17:12:12 <mryufeng> 把T1和Potian要求进来哦
2007-09-17 17:12:17 <jackyz.zhao> 北京没有赞助商。:|
2007-09-17 17:12:23 <xushiweizh> 这个群貌似T1没加入?
2007-09-17 17:12:35 <AvinDev> 貌似Potian和T1都很忙,jackyz说过的
2007-09-17 17:12:51 <jackyz.zhao> T1怒低调,MSN难得见他开
2007-09-17 17:12:55 <panxiaof> 北京有没有牛人,站出来组织一下
2007-09-17 17:13:10 <baojing.jiao> 发现有了这个群,erlang_group 没有东西了。
2007-09-17 17:13:30 <panxiaof> T1与Potian是北京的是吗?
2007-09-17 17:13:37 <AvinDev> ErlangChina还是有不少滴
2007-09-17 17:13:49 <AvinDev> T1在上海,Potian在杭州
2007-09-17 17:13:50 <jackyz.zhao> T1在上海,potian在杭州
2007-09-17 17:13:56 <jackyz.zhao> 哈哈
2007-09-17 17:14:01 <baojing.jiao> copy?
2007-09-17 17:14:01 <xushiweizh> im 和 maillist最有时效性。所以粘度比较大。
2007-09-17 17:14:36 <AvinDev> T1很少上msn,那翻译的事情怎样跟你沟通?mail?
2007-09-17 17:14:38 <xushiweizh> group只有真正遇到问题的人去发。目前是乎国内用erlang的公司不多。
2007-09-17 17:14:54 <jackyz.zhao> 北京的还有谁,小规模组织下。
2007-09-17 17:15:03 <jackyz.zhao> mail很好使
2007-09-17 17:15:26 <xushiweizh> 我经常出差北京,可以算半个。 ![]()
2007-09-17 17:16:11 <jackyz.zhao> 哈。panxiaof,me,还有who?
2007-09-17 17:16:21 <xushiweizh> 有交流会提前1,2周通知下,一般没问题。
2007-09-17 17:16:38 <jackyz.zhao> 你啥时候来北京啊?
2007-09-17 17:16:50 <xushiweizh> 一般一月一次。
2007-09-17 17:17:33 <panxiaof> 好像还有几个~
2007-09-17 17:17:38 <jackyz.zhao> 嗯,算上你了,还有who?
2007-09-17 17:17:52 <jackyz.zhao> 北京不会人这么少吧。 ![]()
2007-09-17 17:17:56 <panxiaof> 要不推出一个人来记录一个名单~我们还也要像模像样一点~
2007-09-17 17:19:26 <jackyz.zhao> 我记了,目前2个半。
2007-09-17 17:19:36 <xushiweizh> ![]()
2007-09-17 17:20:21 <panxiaof> 现在在线的只有2.5个是北京的~~好少啊~
2007-09-17 17:20:29 <panxiaof> 现在在线的只有2.5个是北京的??~~好少啊~
2007-09-17 17:23:12 <AvinDev> 不知道现在gigix还在不在研究这个,可以让他找TW赞助一下北京的活动,呵呵
2007-09-17 17:23:20 <jackyz.zhao> 没办法,这就是北京残酷的显示。
2007-09-17 17:23:27 <mryufeng> tw==?
2007-09-17 17:23:43 <AvinDev> 有那么残酷吗?貌似北京的交流会是很火爆的,数量多
2007-09-17 17:23:54 <AvinDev> 只是现在搞Erlang的比较少而已
2007-09-17 17:24:01 <jackyz.zhao> 上次barcamp,gigix还是在讲ruby enterprise。最近好像也没写 erlang 相关的了。
2007-09-17 17:24:23 <rory.cn> tw = though works
2007-09-17 17:24:28 <coderplay> 我发动我们全班学erlang好了
2007-09-17 17:24:29 <mryufeng> 现在好东西太多了 诱惑太多
2007-09-17 17:24:33 <AvinDev> 嗯,人的精力有限
2007-09-17 17:25:23 <jackyz.zhao> 嗯,北京城市太大了,任意两个人见面,平均要走48km,确实对party很不友好。
2007-09-17 17:25:34 <mryufeng> 只能比较专注搞一二个东西
2007-09-17 17:25:57 <mryufeng> 恩 北京赶上人家一个国家大了
2007-09-17 17:26:28 <rory.cn> 北京的车还那么的堵。更是没法。…
2007-09-17 17:26:48 <cooljiwen> erlang是什么
2007-09-17 17:27:50 <coderplay> 寒,这是?
2007-09-17 17:27:52 <cooljiwen> ……………………..
2007-09-17 17:27:55 <cooljiwen> ………
2007-09-17 17:27:57 <jackyz.zhao> 是了,要不人sun搞技术大会,只能选在非周末时段,跑到体育场,一开一整天,还提供免费班车?
2007-09-17 17:28:41 <cooljiwen> …………………………….
2007-09-17 17:28:59 <rory.cn> 原来这样啊。sun在上海的好像也不在周末的。
2007-09-17 17:29:10 <xushiweizh> to cooljiwen: http://www.javaeye.com/article/65549
2007-09-17 17:29:36 <jackyz.zhao> 不这样谁去啊,来回4个钟头,体力活啊
2007-09-17 17:29:55 <xushiweizh> 《一场茶杯里的风暴》(刊于《程序员》06年9、10期)介绍了Erlang,T1写的,挺不错。
2007-09-17 17:30:23 <mryufeng> T1牛
2007-09-17 17:30:49 <cooljiwen> 这个是新兴的吗?
2007-09-17 17:31:50 <xushiweizh> 20年历史了
2007-09-17 17:31:52 <panxiaof> 那北京最牛的人是谁?
2007-09-17 17:31:57 <cooljiwen> …………
2007-09-17 17:32:01 <cooljiwen> 哦
2007-09-17 17:32:04 <AvinDev> jackyz吧?
2007-09-17 17:32:11 <cooljiwen> AJAX比这个
2007-09-17 17:32:23 <panxiaof> 哦~
2007-09-17 17:32:28 <jackyz.zhao> 我牛啥啊?
2007-09-17 17:32:29 <cooljiwen> 早?
2007-09-17 17:32:39 <panxiaof> jackyz是金山的?
2007-09-17 17:32:52 <xushiweizh> 昏。
2007-09-17 17:33:26 <jackyz.zhao> 嗯,我是金山的无间道,哈哈。
2007-09-17 17:33:32 <bitcowboy> 肚子饿了。
2007-09-17 17:33:43 <panxiaof> 我听了一堆金山不金山的,。就湖涂了
2007-09-17 17:33:56 <bitcowboy> 珠海没有星巴克啊。我的上帝啊。
2007-09-17 17:34:15 <mryufeng> 广州好多starbuck
2007-09-17 17:39:56 <coderplay> 掐饭去了, 88
2007-09-18 15:29:25 <AvinDev> Life is short, STOP 扯淡
有空的可以看看这个 http://www.builderau.com.au/program/soa/Interview-The-importance-of-being-Erlang/0,339024614,339282123,00.htm 有个在实际项目中使用的哥们接受的采访
2007-09-18 15:39:24 <baojing.jiao> 这东西一发现就应该发出来,哈哈
2007-09-18 15:39:46 <AvinDev> 早上才发现的,不算太迟,哈哈
2007-09-18 15:40:12 <mryufeng> 俺们arbow可是挖资源专家
2007-09-18 15:40:35 <AvinDev> 汗,早上在dzone看8卦的时候发现的
2007-09-18 15:40:39 <zhuzhaoyuan> Data Mining?
2007-09-18 15:40:42 <baojing.jiao> 挖坟专家,哈哈
2007-09-18 15:41:06 <mryufeng> 挖坟 不吉利不要乱说
2007-09-18 15:41:13 <baojing.jiao> 恩
2007-09-18 15:41:25 <AvinDev> 应该说盗墓
2007-09-18 15:41:27 <baojing.jiao> 挖料专家
2007-09-18 15:42:55 <mryufeng> 恩 这个好
2007-09-18 15:50:48 <mryufeng> 好像也没有提到什么有价值俄哦
2007-09-18 15:52:26 <baojing.jiao> 貌似就讲了一下用ejabberd 实现了视频服务器,没有其他分享的呀。
2007-09-18 15:52:36 <baojing.jiao> 等你们的交流的ppt了。
2007-09-18 15:52:40 <baojing.jiao> 写的详细点
2007-09-18 15:52:54 <baojing.jiao> 不要只搞几个公式没了,看都看不懂
2007-09-18 15:53:09 <AvinDev> 嗯,只是说明搞视频服务器是可行的
2007-09-18 15:53:24 <mryufeng> 这个地球人都知道
2007-09-18 15:53:35 <AvinDev> 说到公司,挺担心读研男会一堆公式充斥PPT
2007-09-18 15:53:39 <AvinDev> 公式
2007-09-18 15:53:41 <baojing.jiao> 玉峰兄不是早已证实了么。哈哈
2007-09-18 15:55:14 <mryufeng> 大部份的服务器都是IO密集型的 cpu计算力都过剩
2007-09-18 15:56:53 <AvinDev> 嘿嘿,你看看公司那一堆cpu占用长期低于10%的服务器就知道了
2007-09-18 15:57:17 <mryufeng> 大部份都是1-2%
2007-09-18 15:57:32 <baojing.jiao> 你们一个公司的?
2007-09-18 17:19:30 <hczworld> 问个关于lua. 有个人说”作为脚本引擎,python要比lua好用,lua纯粹是因为当时没有比lua更合适的”..
2007-09-18 17:19:59 <NetSnail> 看情况.
2007-09-18 17:20:03 <hczworld> 真的吗 :s 刚刚对lua产生兴趣..
2007-09-18 17:22:24 <AvinDev> yufeng对lua很有研究哦,让他说说
2007-09-18 17:22:35 <bitcowboy> lua效率比python高一些,好像。
2007-09-18 17:23:06 <hczworld> 查了一些资料说lua运行最快,这个优势好
2007-09-18 17:25:20 <baojing.jiao> lua速度快,和c结合容易,比python简单很多。
2007-09-18 17:25:32 <NetSnail> 还是应该看情况,比如,openoffice 就也可以用python 作为宏语言,python完整的面向对象实现,比较灵活的语法,都很适合这种工作。
2007-09-18 17:25:32 <baojing.jiao> 了解的不深,呵呵
2007-09-18 17:30:50 <hczworld> 估计国内lua最牛是这个了:http://blog.codingnow.com
2007-09-18 17:31:24 <yuxh312> sigh,云风
2007-09-18 17:31:25 <AvinDev> 呵呵,可能是。不过yufeng也是把lua的代码看过好几遍的,也很彪悍
2007-09-18 17:32:22 <mryufeng> 其实1.5w行代码 多看几遍就熟悉了 羡慕人家干码 自己花点时间就好了
2007-09-18 17:33:14 <baojing.jiao> 云风没玉峰牛
2007-09-18 17:33:34 <hczworld> 有pk过吗 : p
2007-09-18 17:33:37 <baojing.jiao> (兄弟们跟上,快~)
2007-09-18 17:34:01 <AvinDev> 之前谁说过的,唯恐天下不乱啊
2007-09-18 17:34:36 <NetSnail> 真囧。。。
2007-09-18 17:58:54 <panxiaof> supervisor:start_child(Sup, ChildSpec)
这个可不可以启动别的Node上的process啊
2007-09-18 17:59:10 <digitalsaurabh> hello
2007-09-18 17:59:53 <mryufeng> 不需要和谁比牛 自己感觉程序有快乐就好了
2007-09-18 17:59:58 <panxiaof> 就是说Supervisor,监控进程应该监控的子进程应该可以在别的Node上吗
2007-09-18 18:00:05 <mryufeng> 可以
2007-09-18 18:00:24 <fzuster> .hello
2007-09-18 18:00:27 <mryufeng> erlang这个process创建和管理是透明的
2007-09-18 18:01:49 <panxiaof> 我是看着这个{Id, StartFunc, Restart, Shutdown, Type, Modules} Child Specification,没有参数指定Node属性
2007-09-18 18:03:59 <panxiaof> 先下了~88
2007-09-18 18:04:12 <mryufeng> 8
2007-09-19 18:00:15 <panxiaof> 好像mnesia是由ets实现的,我想知道mnesia的index是怎么用
2007-09-19 18:00:20 <panxiaof> ets实现的?
2007-09-19 18:00:42 <mryufeng> 恩 存贮是ets和dets
2007-09-19 18:01:17 <panxiaof> 但mnesia的second index是怎么实现的呢
2007-09-19 18:01:19 <mryufeng> 上次讨论过这个问题 你看下chat history
2007-09-19 18:01:39 <panxiaof> 上次?大概什么时候?几天前?
2007-09-19 18:02:10 <mryufeng> 多少个 index 多少个ets 数据相同 index不同
2007-09-19 18:02:53 <panxiaof> 那多一个index就是多一倍的数据贮存了?
2007-09-19 18:03:01 <mryufeng> 恩
2007-09-19 18:04:10 <panxiaof> 可怕~
2007-09-19 18:35:56 <baojing.jiao> 是有些~
2007-09-21 08:49:21 <xushiweizh> 【第二届】Erlang Fans交流会: http://erlang-china.org/news/erlang-fans-fair.html
2007-09-21 08:55:08 <renfengxing> 详细聚会地址带确定 @带@字错了
2007-09-21 08:55:34 <xushiweizh> ?
2007-09-21 08:55:43 <xushiweizh> 哦,看到了
2007-09-21 08:55:47 <renfengxing> 等待 的待
2007-09-21 09:09:08 <zoom.quiet> 先扫盲,再求道为好
2007-09-21 09:09:35 <xushiweizh> 有什么好建议没有?
2007-09-21 09:10:27 <zoom.quiet> show time!!!
2007-09-21 09:11:16 <zoom.quiet> 和初級的python 推广一样,show 出ErLang 与众不同之处,说明开发学习的便利环境,有了兴趣,自然的就有了同学
2007-09-21 09:11:40 <zoom.quiet> 不能说我们感觉这先进,得有故事背景的showing
2007-09-21 09:12:23 <hczworld> 推广到高校bbs等地方去吧
2007-09-21 09:12:38 <NetSnail> ^_^ 推广python,zoom.quiet很有经验的呀,不妨也说下python推广的方法,看看能不能借鉴咯
2007-09-21 09:12:56 <zoom.quiet> 最好有录音录像,经得起传播,反复参阅,坚持积累,形成中文 ErLang 的实际知识势能后,大家学习交流也就有了趋向性
2007-09-21 09:13:10 <xushiweizh> 这种交流会成本高,搞推广不是这样搞的。 ![]()
2007-09-21 09:13:30 <xushiweizh> 会有录像。
2007-09-21 09:13:43 <zoom.quiet> 都记录在啄木鸟WIKI 中的,现在主机升级中,以后分享
2007-09-21 09:15:05 <greatcleverpig> 录像能够put到youtube吗?
2007-09-21 09:15:31 <zoom.quiet> 咔咔咔,利用网络,我们仅仅是轻松组织,但是注意详细记录,必竟网络传播有延时性,在大家逐渐意识到多核并发应用的重要性时,发现 erlang-china.org 已经积累有丰富的资料时,自然的趋向这里来 交流贡献, 了 ![]()
2007-09-21 09:15:59 <greatcleverpig> 因为珠海对我来讲太遥远了。。
2007-09-21 09:16:21 <NetSnail> 恩恩,也许也可以用网络语音会议的方式么@.@
2007-09-21 09:16:49 <yuxh312> 嗯,这个主意不错,躺床上翘起腿
2007-09-21 09:16:51 <xushiweizh> youtube还没怎么用。
2007-09-21 09:17:02 <xushiweizh> 对格式有什么要求?
2007-09-21 09:17:08 <zoom.quiet> 当然那!!利用一切可以利用的免费資源来发布! 活动通过 https://www.google.com/calendar 录像通过 YouTub 录音通过 土豆, 文档通过Blog 。。。。
2007-09-21 09:17:39 <zoom.quiet> YouTube 唯心主义提供各种转换工具的吧
2007-09-21 09:17:42 <hczworld> erlang-china 怎么没加forum, wiki, rss聚合, 手册库,翻译等内容
2007-09-21 09:17:46 <xushiweizh> google calendar很好用。
2007-09-21 09:17:50 <baojing.jiao> ppt也可以用gooogle doc么。
2007-09-21 09:18:06 <zoom.quiet> 网络会课是非常好的主意,当初啄木鸟社区的聚集就是通过UC 的语音会课,
2007-09-21 09:18:07 <jackyz.zhao> 唉呀,刚上来,活动正式搞起来了啊
2007-09-21 09:18:35 <zoom.quiet> 但是现在难以找到免费的好视频会议服务
2007-09-21 09:18:40 <xushiweizh> google docs的presentation有团队演示。
2007-09-21 09:18:59 <xushiweizh> 不过编辑功能确实弱了点。
2007-09-21 09:19:15 <jackyz.zhao> 一上来就看见这个好消息
2007-09-21 09:19:18 <baojing.jiao> 凑合能用
2007-09-21 09:19:18 <yuxh312> 大家都用txt写文档,画图一律用字符组合出来
2007-09-21 09:19:20 <zoom.quiet> 讲演资料的话,通过 S5 整理发布在个人空间中效果更加好的
2007-09-21 09:20:55 <zhuzhaoyuan> 建议:文档最好都有pdf格式的版本
2007-09-21 09:21:15 <xushiweizh> 呵呵,wps office用得着了。
2007-09-21 09:21:30 <xushiweizh> 直接用wps office将ppt转pdf。
2007-09-21 09:22:05 <greatcleverpig> 对,用google docs
2007-09-21 09:22:09 <NetSnail> 反正都要兼容linux就成,要可怜下没有windows的人呀 >_<
2007-09-21 09:22:25 <jackyz.zhao> 嗯。wps 生成的 pdf ,我看行
2007-09-21 09:22:45 <rory.cn> google docs也一份。
2007-09-21 09:26:03 <jackyz.zhao> erlang有大量的资料都是pdf,哈哈,咱们在这一点上可以与erlang.org保持一致
2007-09-21 09:26:10 <xushiweizh> 嗯。
2007-09-21 09:26:24 <xushiweizh> pdf到时可以传到erlang china上。
2007-09-21 09:26:46 <hczworld> 加了两个gmail进来了,heihei (先退出一个)
2007-09-21 09:26:47 <xushiweizh> 录像、录音要找其他地方。
2007-09-21 09:27:08 *** Quit: <hczworld>
2007-09-21 09:27:25 <jackyz.zhao> 录音录像可以考虑yutube,
2007-09-21 09:27:36 <NetSnail> 报名要怎么写信呀,有什么格式呢?
2007-09-21 09:27:49 <xushiweizh> 没啥格式。
2007-09-21 09:27:52 <jackyz.zhao> 不用考虑什么丢数据,被和谐啥的
2007-09-21 09:28:24 <seeker365> 想问下,报名来做什么?
2007-09-21 09:28:32 <xushiweizh> 好,我考察下yutube,一直没用起来。
2007-09-21 09:28:53 <xushiweizh> 【第二届】Erlang Fans交流会: http://erlang-china.org/news/erlang-fans-fair.html
2007-09-21 09:29:04 <NetSnail> youtube还是不错的,不过国内电信的用土豆会快点.
2007-09-21 09:29:27 <jackyz.zhao> yutube上有erlang the movie,据说是joe老先生20年前的珍贵影响。:D
2007-09-21 09:29:41 <seeker365> o,有些远..
2007-09-21 09:31:29 <xushiweizh> erlang-china.org 是否可以考虑加个wiki?
2007-09-21 09:32:08 <xushiweizh> forum我倒是觉得不用。已经有 google group了。
2007-09-21 09:32:56 <jackyz.zhao> 嗯,有需求,就可以加。
2007-09-21 09:33:03 <NetSnail> google group 不是有个配套的wiki么?
2007-09-21 09:33:29 <zoom.quiet> BBS 是极其可怕的选择! 本质上不是知识积累的体制: 社区研究之BBS的死亡鉴定http://blog.donews.com/yokanta/archive/2006/06/05/902554.aspx
2007-09-21 09:33:45 <rory.cn> googlecode倒是有wiki.
2007-09-21 09:34:29 <baojing.jiao> 那个ppt按道理是说是越简单越好,但是考虑到我们没有参加的人,看几个符号,很难理解其意呀。建议,多写写备注之类的。或者其他方式让我们这些不能到现场听的人看ppt也能看懂一些。
2007-09-21 09:34:35 <zoom.quiet> code 的 WIKI 太简单,建议安装MoinMoin 进行轻松的知识归整;
2007-09-21 09:35:50 <zoom.quiet> PPT 还是需要专有软件才可以打开的,不利于传播,纯文本的S5 等等工具才是平民化的工具
2007-09-21 09:35:59 <NetSnail> 简单也有简单的好处吧,
顺便可以把一些演示文档和code放到上面去,bbs是不好的.
2007-09-21 09:36:47 <zoom.quiet> 加上Freemind YUM 等等思维图谱工具足矣
2007-09-21 09:42:51 <xushiweizh> google code的wiki版本管理是用svn实现的,这个构思很神奇。
2007-09-21 09:43:01 <rory.cn> 是啊。
2007-09-21 10:14:10 <baojing.jiao> 把整个wiki html 页面用svn管理?
2007-09-21 10:15:53 <xushiweizh> 在google code上做个wiki页面,然后到source上看看,上面多了wiki目录,进去就可以看到你的wiki页面源代码了。
2007-09-21 10:16:57 <xushiweizh> 这样做的好处是,你不只是可以在线编辑wiki页面,还可以本地用任何工具修改它。
2007-09-21 13:21:57 <panxiaof> 帮个忙,我用了 -mnesia extra_db_nodes “['haomain@feng']” ,只能把haomain节点上的表结构给考过来,再用 add_table_copy把数据给考过来,但haomain上的数据发生了变化 ,这边还是不会跟着变化。好像不应该这么麻烦吧
2007-09-21 13:37:59 <panxiaof> 用sync就可以了。。
2007-09-21 13:41:53 <mryufeng> 数据会知道同步的哦
2007-09-21 13:42:24 <mryufeng> 你用工具跟踪下 数据变化的时候 有没有网络流量
2007-09-21 14:16:17 <panxiaof> 原来mnesia:activity(ets, fun() -> mnesia:write(#siteinfo{url =Url, id =Id}) end),这个操作只写ram,而且是本地的ram..弄了半天问题在这里
2007-09-21 15:02:07 <mryufeng> 要用transaction
2007-09-21 15:02:32 <panxiaof> 那到不用,dirty_write也可以
2007-09-21 15:02:45 <panxiaof> 只要不用我上面那个acitveity
2007-09-24 14:11:40 <bitcowboy> 上次关于hash的性能讨论中,讨论到rehash的开销。
2007-09-24 14:11:46 <bitcowboy> Consistent hashing is a scheme that provides hash table functionality in a way that the addition or removal of one slot does not significantly change the mapping of keys to slots. In contrast, in most traditional hash tables, a change in the number of array slots causes nearly all keys to be remapped. By using consistent hashing, only K/n keys need to be remapped on average, where K is the number of keys, and n is the number of slots.
The bot is started! 2007-09-24 16:01:21
2007-09-24 16:13:07 <baojing.jiao> 周末聚会的ppt上几个呀。。。
2007-09-24 16:13:32 <yuxh312> 不是10.1之后?
2007-09-24 16:13:40 <bitcowboy> 这周末有聚会?
2007-09-24 16:13:42 <baojing.jiao> 还没开始?
2007-09-24 16:13:53 <baojing.jiao> 我晕~哈哈。
2007-09-24 16:13:57 <yuxh312> 报名截至是10.1吧
2007-09-24 16:14:02 <baojing.jiao> 我以为是上周末呢
2007-09-24 16:14:08 <bitcowboy> 我好像还没报名。
2007-09-24 16:14:10 <baojing.jiao> 不好意思 ![]()
2007-09-24 16:14:22 <yuxh312> 你不用报名也在劫难逃
2007-09-24 16:14:44 <bitcowboy> ……
2007-09-24 16:15:01 <coderplay> 你们都是帅锅… 俺是听听好了
2007-09-24 16:15:16 <bitcowboy> 我就是去听的。
2007-09-24 16:15:29 <yuxh312> aol更逃不掉了,就你最有空, 要精心准备讲稿噢
2007-09-24 16:15:30 <AvinDev> 有谁开讲mnesia,貌似话题那里没有提及
2007-09-24 16:15:49 <coderplay> 我不会ppt,得花一个星期去学
2007-09-24 16:16:00 <bitcowboy> 珠海为什么没有starbucks啊!我郁闷啊。
2007-09-24 16:16:03 <yuxh312> 你用mspaint我们也不介意的
2007-09-24 16:16:13 <baojing.jiao> ppt不要做什么动画效果,一会就会了。
2007-09-24 16:16:36 <yuxh312> 要是你用mspaint做出动画效果,我们更欢迎
2007-09-24 16:16:41 <bitcowboy> 没事,让方块扛块白板去。
2007-09-24 16:16:49 <coderplay> 没搞过演讲,所以啥都不会
2007-09-24 16:16:57 <yuxh312> 他们不知道方块是谁的,哈哈
2007-09-24 16:17:13 <coderplay> 不就是你嘛
2007-09-24 16:17:16 <bitcowboy> 没事,让yuxh312扛块白板去。
2007-09-24 16:17:18 <mryufeng> yuxh312==方块
2007-09-24 16:17:30 <coderplay> 路人皆知
2007-09-24 16:17:30 <yuxh312> 这下完了,暴露了
2007-09-24 16:17:48 <zhuzhaoyuan> 嗯,这回走光了吧,方块
2007-09-24 16:17:52 <bitcowboy> 就你这小样儿,还想躲?
2007-09-24 16:17:55 <baojing.jiao> 黑红梅方,看来你是老四呀
2007-09-24 16:18:05 <baojing.jiao> 老二是谁? ![]()
2007-09-24 16:18:09 <yuxh312> 今天天气热,衣服遮不住了
2007-09-24 16:27:40 <zoom.quiet> orz
2007-09-24 17:01:16 <xushiweizh> mnesia我也比较关心,谁有兴趣讲啊?
2007-09-24 17:01:30 <coderplay> yufeng gg
2007-09-24 17:01:51 <yuxh312> 我觉得直接开 yufeng 专场吧
2007-09-24 17:01:52 <AvinDev> yufeng是全能人物啊
2007-09-24 17:01:57 <mryufeng> 俺不行呀 这段时间研究的少
2007-09-24 17:02:45 <mryufeng> mnesia俺代码还没有仔细分析 没有说服力
2007-09-24 17:04:02 <zhuzhaoyuan> up专场
2007-09-24 17:04:24 <coderplay> 我去当倒水的
2007-09-24 17:04:34 <yuxh312> 我收门票
2007-09-24 17:05:02 <AvinDev> 可以当咨询师了。。。一小时100,哈哈
2007-09-24 17:06:05 <mryufeng> 1小时收费10块 一天8小时 80块 一个月2400
2007-09-24 17:06:37 <coderplay> … 那不如当阿姨
2007-09-24 17:06:53 <coderplay> 1小时20块, 还可以偷油,买菜省钱
2007-09-24 17:06:57 <AvinDev> 搞咨询的哪有10块那么少,起码100
2007-09-24 17:07:00 <coderplay> 一天工作4小时
2007-09-24 17:10:27 <coderplay> <<Troubleshooting a Large Erlang System>> 此文谁看过?
2007-09-24 17:10:46 <yuxh312> no
2007-09-24 17:11:01 <yuxh312> share it pls!
2007-09-24 17:11:13 <xushiweizh> http://www.google.cn/search?sourceid=navclient&ie=UTF-8&rlz=1T4GZHZ_enCN241CN241&q=Troubleshooting+a+Large+Erlang+System
2007-09-24 17:15:13 <mryufeng> 也好像没有讲什么 那几招平常也在用哦
2007-09-24 17:15:22 *** nbvghost@gmail.com is temporarily away.
2007-09-24 17:16:44 <mryufeng> 还是一句话 要做可感知 可诊断的系统
2007-09-24 17:17:12 <coderplay> ? 发错了?
2007-09-24 17:17:51 <mryufeng> 没有哦 我的意思是 程序里面要加入 诊断 统计 测量 代码
2007-09-24 17:18:25 <mryufeng> 特别是大型的系统 要不没有办法系统运作起来 就失去控制了 你不知道系统在作什么
2007-09-24 17:19:29 <yuxh312> 系统在自我繁殖
2007-09-24 17:19:35 <coderplay> ![]()
2007-09-24 17:20:03 <mryufeng> 这篇论文的时间 应该比较早 提到的工具 erlang的发布版本里面基本都有
2007-09-24 17:26:07 <zoom.quiet> “可感知 可诊断的系统” 嗬嗬嗬,现在也只能作出人可以预知的情况范畴内的”可感知 可诊断的系统” 根本无法真正”可感知 可诊断的系统”
2007-09-24 17:27:55 <mryufeng> 不是系统自己诊断 是人可诊断系统
2007-09-24 17:28:13 <mryufeng> 成熟的系统 其实都会有一陀代码作这个事情
2007-09-24 17:28:27 <mryufeng> 要不运营的时候真的是噩梦
2007-09-24 17:46:02 <zoom.quiet> 那一坨就是在死亡前详细汇报哪怕
2007-09-24 17:47:23 <mryufeng> 恩 最好是你想了解系统的什么信息都可以得到 就方便了 很多时候可以从趋势避免很多系统失败
2007-09-24 18:08:53 <panxiaof> http://www.erlang-consulting.com/index.html
2007-09-24 18:11:38 <mryufeng> 国外好像好多consulting公司 是不是 国内很挣钱哦
2007-09-24 18:11:47 <mryufeng> 国外很挣钱?
2007-09-24 18:12:01 <coderplay> 锋爷,恰饭去
2007-09-24 18:12:36 <panxiaof> 可是国内好像用erlang的公司就不多,国外的consulting多,说明国外很公司在用erlang
2007-09-24 18:12:42 <panxiaof> 这是个好消息
2007-09-24 18:14:26 <mryufeng> 好像ACE就有2-3个consulting公司
2007-09-24 18:14:42 <mryufeng> 一个项目就可以养一大帮人
2007-09-24 18:14:49 <coderplay> 爽
2007-09-25 11:19:12 <panxiaof> 有个傻问题,有个<0.96.0>的process id..我想在shell里用命令给他发消息~~好像
‘<0.96.0>’!testinfo
这样写不对
2007-09-25 11:19:39 <panxiaof> 不知道应该怎么写
2007-09-25 11:19:42 <mryufeng> pid(X,Y,X)
2007-09-25 11:20:44 <panxiaof> OK~~ thanks~
2007-09-25 11:22:38 <mryufeng> pid(X,Y,Z) — convert X,Y,Z to a Pid
2007-09-25 11:35:50 <mryufeng> Happy Mid-Autumn Festival !!!
◢████◣ ◢████◣
◢◤ ◥◣ ◢◤ ◥◣
◤ ◥◣ ◢◤ █
▎ ◢█◣ ◥◣◢◤ ◢█ █
◣ ◢◤ ◥◣ ◢◣◥◣◢◤
◥█◤ ◢◤ ◥◣
█ ● ● █
█ 〃 ▄ 〃 █
◥◣ ╚╩╝ ◢◤
◥█▅▃▃ ▃▃▅█◤
◢◤ ◥◣
█中秋節快樂█
◢◤▕ ▎◥◣
▕▃◣◢▅▅▅◣◢▃
2007-09-25 11:36:10 <bitcowboy> 好可爱的兔子。
2007-09-25 11:40:28 <zoom.quiet> good character art ![]()
2007-09-25 11:40:50 <fzuster> 怎么看着不像兔子
2007-09-25 11:46:06 <zoom.quiet> 对了,下月的首次集会,掺合名单何时确认?
2007-09-25 11:57:20 <xushiweizh> 中秋節快樂。 ![]()
2007-09-25 12:03:31 <cooljiwen> 中秋节快乐
2007-09-25 12:05:40 <mryufeng> http://www.infoq.com/cn/news/2007/08/mnesia
2007-09-25 12:05:50 <mryufeng> 写的挺牛
2007-09-25 12:07:09 <AvinDev> 这里有谁研究过Amazon S3
2007-09-25 12:52:54 <seeker365> 好文
2007-09-25 13:53:42 <xushiweizh> 这篇看过,不过没研究过S3
2007-09-25 13:55:01 <bitcowboy> 什么好问?难道我错过了?
2007-09-25 13:55:17 <xushiweizh> <mryufeng> http://www.infoq.com/cn/news/2007/08/mnesia
<mryufeng> 写的挺牛
2007-09-25 16:50:14 <baojing.jiao> 爱立信是不是就用erlang开发了那一个产品呀
2007-09-25 16:50:27 <baojing.jiao> 怎么一举例子就是那个东西
2007-09-25 17:40:17 <jackyz.zhao> erlang的产品本来就不多,其中还有很多都是商用的,说了也不了解。
2007-09-25 17:41:04 <jackyz.zhao> 主要的有rabbitmq,ejabbered,还有一个ventta(可能拼错了)的游戏
2007-09-25 17:41:09 <zoom.quiet> erlang 本身开源后,自由产品会逐渐增加的哪
2007-09-25 17:41:45 <jackyz.zhao> 另外还有一个wing3d,居然是用来做3d设计的
2007-09-25 17:51:19 <zoom.quiet> Python 都能整3D 何况 erlang 乎>?
2007-09-25 17:52:31 <jackyz.zhao> 嗯,只是erlang的ui出了名的难写,竟然有这样的神人完全无视,所以说居然。
2007-09-25 17:53:57 <seeker365> lua 跟erlang 的接口用起来方便吗
2007-09-25 17:59:07 <baojing.jiao> 怎么收到的消息都是没有上下文环境呢?
2007-09-25 17:59:17 <baojing.jiao> 是不是离开一会,就收不到消息了。?
2007-09-25 18:00:08 <AvinDev> 有可能你的IM发了个idle的status到bot那里了
2007-09-25 18:00:46 <baojing.jiao> bot能不能不理这个状态。
2007-09-25 18:00:57 <baojing.jiao> 只要是活的,管他什么状态都发。哈哈
2007-09-25 18:01:15 <baojing.jiao> 本来关于erlang的消息就少,有时候离开了,就会错过精彩的讨论。
2007-09-25 18:01:17 <baojing.jiao> 多可惜
2007-09-25 18:01:56 <AvinDev> 呵呵,我国庆会整理一下聊天记录,放上erlang china的
2007-09-25 18:02:00 <rory.cn> gmail里的历史有的么?
2007-09-25 18:02:11 <baojing.jiao> 估计没有。
2007-09-25 18:02:22 <baojing.jiao> 去扒聊天记录很累的说
The bot is started! 2007-09-27 10:02:08
2007-09-27 10:10:34 <panxiaof> gen_server:call({pid(0,86,0),s1@feng},{page_opened,{“www.sina.com/haha.html”,userpid}}).
我在s1@feng节点上调用可以
但在同一机器同一setcokie的节点上为什么会出现错误?
2007-09-27 10:12:02 <yuxh312> 同一机器上启两个相同名字的erlang node是不行的,即便是不同用户名下
2007-09-27 10:13:13 <panxiaof> 同一机器不同名字~
2007-09-27 10:15:54 <panxiaof> 我在s2@feng 调用那个不不行~
2007-09-27 10:16:56 <panxiaof> 我是想同样cookie的两个节点上的不同process之间,应该是相互可以发消息的吧
2007-09-27 14:40:51 <yuxh312> AOL在不在,出来讲讲monads
2007-09-27 14:41:03 <panxiaof> monads??
2007-09-27 14:41:07 <panxiaof> what is this?
2007-09-27 14:41:41 <yuxh312> 我就是因为不知道该怎么理解这个东西
2007-09-28 09:08:57 <xushiweizh> 【第二届】Erlang Fans交流会(补充事宜)
详细参见:http://erlang-china.org/news/erlang-fans-fair.html
这里做些补充:
考虑到上海到珠海坐春秋航空的飞机有特价机票,本次活动的讲师也可报销上海至珠海的飞机票(要求是春秋航空)。
报名(普通参会者或讲师)截止日期:2007-10-1。报名者请从速。
本次会议的选址已经完成。我们会在珠海罗马假日海滨西餐厅(日东广场,临近珠海海滨泳场,可观海,吹海风)举行本次会议。可通过Google Earth了解(珠海的地图超清晰)该餐厅周边信息。
2007-09-28 09:10:11 <bitcowboy> 好像很高档的样子唉。
2007-09-28 09:12:29 <xushiweizh> 补充:本次活动的讲师也可报销上海至珠海{{来回}}的飞机票(要求是春秋航空)。
2007-09-28 09:12:30 <sunnyrui> 有没有热闹点的Gtalk群?国内国外都可以
2007-09-28 09:12:42 <xushiweizh> ?
2007-09-28 09:13:06 <jackyz.zhao> 上海的兄弟们有福了。:D
2007-09-28 09:36:00 <xushiweizh> 哈哈,大家应该都知道了吧。
http://erlang-china.org/WordPress/wp-content/uploads/2007/09/joes-thesis.zip
段先德翻译的Joe Armstrong的博士论文。
see http://erlang-china.org/study/joe-armstrong_thesis_cn.html
2007-09-28 09:37:39 <sunnyrui> ![]()
2007-09-28 10:35:59 <xushiweizh> welcome martin.xus.
2007-09-28 10:36:06 <martin.xus> ![]()
2007-09-28 10:36:17 <xushiweizh> ![]()
2007-09-28 10:36:37 <jackyz.zhao> 自我介绍下哈
2007-09-28 10:37:24 <xushiweizh> 躺在沙滩上的小猪
2007-09-28 10:37:27 <xushiweizh> ![]()
2007-09-28 10:37:29 <martin.xus> 是的:)
2007-09-28 10:38:47 <martin.xus> 最近我在关注分布式的东东,对这些比较感兴趣,对erlang也开始感兴趣,向各位先行者学习:)
2007-09-28 10:40:39 <xushiweizh> 欢迎参加erlang大会哦,上海到珠海有特价的机票。
http://www.erlang-china.org/
2007-09-28 10:41:12 <renfengxing> hehe,别人以为你推销机票的
2007-09-28 10:41:19 <xushiweizh> ![]()
2007-09-28 10:41:39 <martin.xus> 呵呵,不会的,我今天刚刚看到邮件列表里面的通知,就跑来看看了 o_o
2007-09-28 10:41:40 <xushiweizh> 我是知道他是上海的。所以推销下机票。
2007-09-28 10:43:00 <jackyz.zhao> 上海的同志们可真多啊。
2007-09-28 10:44:27 <xushiweizh> 也欢迎大家踊跃当讲师,不要把这看作是很难的事情。其实没有什么大不了的,把自己所学share给大家而已,并不需要太难的技巧。
2007-09-28 10:45:08 <panxiaof> 因为北京的都沉默着呢
2007-09-28 10:45:47 <jackyz.zhao> 嗯。奇怪,为啥都不冒出来呢。
2007-09-28 10:46:25 <panxiaof> 广东那太远了,所以就不说话了~哈
2007-09-28 10:46:32 <mryufeng> 俺们都去珠海吹海风 看靓女
2007-09-28 10:46:35 <linningjie> 我是北京的 主要是我的erlang实在不咋地
2007-09-28 10:46:50 <linningjie> 所以。。。。
2007-09-28 10:47:15 <xushiweizh> 我们其实也是刚开始学,大家踊跃交流,共同进步嘛。
2007-09-28 10:47:27 <linningjie> 哈哈
2007-09-28 10:48:19 <jackyz.zhao> 就是说,大家都是刚开始学,能交流多少算多少,不交流技术可以交流感情嘛。哈哈。
2007-09-28 10:49:34 <panxiaof> en~~就是路太远了~就是家里学学erlang了~
2007-09-28 10:50:42 <panxiaof> 用谁用这个做过正式系统没有啊?
2007-09-28 10:52:05 <jackyz.zhao> 嗯,嗯,北京的现在3个半了。哈哈。我,paoxiaof,linningjie,还有xushiwei(算半个),啥时候凑齐6个人,咱也来搞聚会。
2007-09-28 10:52:13 <mryufeng> 俺在做些小规模的应用
2007-09-28 10:53:34 <panxiaof> 我也在做一个应用,不过是个人的行为,不太好意思
2007-09-28 10:54:59 <seeker365> 想问问大家怎样抓时间学的呢, 除了上班8,9个小时后..
2007-09-28 10:55:00 <jackyz.zhao> 呵呵,不错哦。到时候给咱们讲讲。
2007-09-28 10:57:04 <panxiaof> 可以讲讲一些经验,不过现在我是经常问yufeng他们啊(基本上问题都是一些笨问题)
2007-09-28 10:58:20 <jackyz.zhao> 没有笨问题,有问题就是好问题,你问过这些问题,没准我问过其他的问题,大家一交流,拼凑起来就能覆盖更多的问题。
2007-09-28 10:58:51 <mryufeng> 恩 3个臭皮匠 一个诸葛亮
2007-09-28 10:58:56 <panxiaof> 有时候真不知道从哪开始翻书~所以只好问了
2007-09-28 10:59:02 <zoom.quiet> 在厕所,在食堂,在路上,都是学习的好地方
2007-09-28 10:59:15 <mryufeng> 恩 都很用功哦
2007-09-28 10:59:17 <linningjie> 俄
2007-09-28 10:59:37 <jackyz.zhao> 哇,厕所?这个比较猛。
2007-09-28 10:59:43 <xushiweizh> 我一般下班后,回家后看一下。
2007-09-28 10:59:47 <zoom.quiet> 时间就象海棉里的水,只要挤总是有的 ![]()
2007-09-28 11:00:00 <rory.cn> 看来要打印点东西,带在身边。
2007-09-28 11:00:37 <seeker365> 总感觉要学的东西太多时间不够誐
2007-09-28 11:00:41 <rory.cn> 是啊。挤。十一了,应该好挤了。
2007-09-28 11:00:45 <zoom.quiet> 有PDA也不错,可以顺手记点,纸还要回头整理
2007-09-28 11:01:02 <seeker365> 十一真好, 可以学想学的.
2007-09-28 11:01:05 <rory.cn> 没有啊。只有个破手机。
2007-09-28 11:01:45 <panxiaof> 那我现在就问一下问题了。hehe..那个PID,比如在本node上调用可能是pid(0,60,0)
在其它node上,可能就是pid(5034,60,0)
我要看看哪些东东,才能明白这个??
2007-09-28 11:03:08 <jackyz.zhao> yufeng同学,起来回答问题啦。
2007-09-28 11:03:12 <mryufeng> 这个看emulator里面的erl_node_tables
2007-09-28 11:03:43 <mryufeng> pid(x,y,z) 其中x就是erl_node_tables的index
2007-09-28 11:03:59 <mryufeng> 根据index 找到node 的ip port等等信息
2007-09-28 11:04:48 <panxiaof> 哦~这个table是不是每一个node都有一份,但各自管各自的~
2007-09-28 11:05:00 <mryufeng> 发message的时候 就根据ip port等信息 通过tcp发数据到对端 对端还原成message放在pid message_queue里面
2007-09-28 11:05:30 <mryufeng> table是global的 是锁保护的
2007-09-28 11:06:18 <mryufeng> 这个机制erlang实现的挺有意思的 好好看下 挺享受的
2007-09-28 11:08:09 <panxiaof> 我在一个node上起了好多process,然后把主些process的ID存进mnesia,别的node读出这个ID,然后给这个process发信息。。会不会出现在别的节点上调用的时候,出找<0,60,0>这样的process,然后发不出去,说是badarg~
2007-09-28 11:08:36 <mryufeng> 恩 是这样的
2007-09-28 11:09:25 <mryufeng> 因为别的节点没有和 这个节点联系过 所以他的 node_tables没有这条记录
2007-09-28 11:09:56 <mryufeng> send message首先检查node_tables有没有这个pid 没有的话就badarg
2007-09-28 11:10:10 <mryufeng> 你明白我在说什么了码?
2007-09-28 11:11:01 <panxiaof> 有一个关键点,我可能还不知道~
2007-09-28 11:11:13 <mryufeng> 你说
2007-09-28 11:11:41 <panxiaof> 我存进去一个pid的时候,好像用tv查看的时候是<0,60,0>
2007-09-28 11:12:01 <panxiaof> 这个pid他拿出来,好像就直接当本地的pID也处理了吧
2007-09-28 11:12:15 <panxiaof> 他会去查那个node_table吗?
2007-09-28 11:12:15 <mryufeng> 恩 是这样的
2007-09-28 11:12:31 <mryufeng> ets肯定不会改你的pid数据哦
2007-09-28 11:13:08 <panxiaof> 那我就要存进去node与pid的信息,然后取出node与pid组成一个新的pid是吗?
2007-09-28 11:13:54 <jackyz.zhao> 我插一句,你这个情况,如果做 net_adm:ping(Node) 那么这两个 node 上的 node 表应该就会完成同步了。
2007-09-28 11:14:43 <panxiaof> 是的~我做了~
2007-09-28 11:14:51 <mryufeng> 不会同步
2007-09-28 11:14:57 <jackyz.zhao> 哦,那没有同步么?
2007-09-28 11:15:26 <mryufeng> 因为你的pid里面的index 在每个node上不固定
2007-09-28 11:15:40 <jackyz.zhao> 那只能用 register 机制咯
2007-09-28 11:15:51 <mryufeng> 这种情况最简单的就是 register 个名字
2007-09-28 11:16:06 <mryufeng> register个名字的时候 erlang作了很多事情
2007-09-28 11:16:22 <panxiaof> 会不会你把一个pid存进去mnesia的时候,在不同的节点上读出来是不一样的,有没有可能?
2007-09-28 11:16:31 <mryufeng> 就是gloabl global_group会自动维护这个名字
2007-09-28 11:16:56 <mryufeng> 这个工作量是非常大的 erlang帮我们作了 比想像的要复杂很多
2007-09-28 11:17:03 <panxiaof> 我的进程好多,几十W个~~所以不想注册~:(
2007-09-28 11:17:11 <mryufeng> to panxiaof: 没有可能
2007-09-28 11:17:47 <mryufeng> 不能注册这么多name你可以注册个name 通过这个process再作进一步的分解工作
2007-09-28 11:17:48 <panxiaof> 那要注册的话,注册成local的是不是就可以了~
2007-09-28 11:17:57 <jackyz.zhao> 嗯。正好问一下yufeng,register的性能或者容量有没有什么问题?我试过register 10w个 local 的,内存占用长得飞快。20w默认配置就垮掉了。
2007-09-28 11:17:58 <panxiaof> 还是要注册成grobal的
2007-09-28 11:18:44 <mryufeng> register 的全局名字非常耗费资源
2007-09-28 11:19:06 <jackyz.zhao> 如果注册成为global的,还有同步开销,网络来回,就不可行了。
2007-09-28 11:19:29 <mryufeng> 应该global 模块要在net_tick 30秒的时间内 维护这个节点的名字
2007-09-28 11:19:58 <mryufeng> 所以如果你注册10w个name 对整个网络来讲是个灾难
2007-09-28 11:20:02 <panxiaof> 注册成local后,在别的node上调用,比如发个信息{pidname,node}!ehehhe
这样就可以了,是吧,注册成local看来也还行~
2007-09-28 11:20:13 <jackyz.zhao> 另外,register的时候还有一个问题是必须要用atom,而,atom的表大小是有限制的。
2007-09-28 11:20:22 <mryufeng> 所以的节点都在互相查询 对方的状态 而且是30秒一次
2007-09-28 11:20:35 <mryufeng> atom是255的大小限制
2007-09-28 11:20:49 <mryufeng> atom的容量也有限制
2007-09-28 11:21:06 <mryufeng> 不过可以设置env 搞大些
2007-09-28 11:21:10 <jackyz.zhao> 嗯,paoxiaof看来还是用mnesia/ets来搞个类似的机制比较靠谱。
2007-09-28 11:21:28 <mryufeng> 所以我要说的是 global名字不能滥用
2007-09-28 11:21:48 <mryufeng> 你可以用ets建立进一步的 index
2007-09-28 11:21:54 <jackyz.zhao> 嗯,这种情况不适用register/global
2007-09-28 11:22:43 <panxiaof> 我打算那20W的process分成几组,分存到不同机器上去,一组2W来个,然后在本地注册,然后存进mnesia,然后通过{pidname,node())!heheh
这样来用~
2007-09-28 11:23:16 <mryufeng> 恩 这样靠谱点
2007-09-28 11:23:58 <jackyz.zhao> 我觉得,如果是这样的话,注册你都可以省了,直接上pid
2007-09-28 11:24:17 <jackyz.zhao> 省了一个atom
2007-09-28 11:24:31 <panxiaof> 可是直接pid,,..存进去的是<0,60,0>在别的节点上用的时候就出现badarg….
2007-09-28 11:25:05 <jackyz.zhao> 你不是还有 node 么?
2007-09-28 11:25:57 <panxiaof> 写成{pid(0,60,0),nodeXXX}!heheh
这样在本地node上可以
可是在别的node上就报错
不知道为什么
2007-09-28 11:27:04 <mryufeng> 就是本地没有这个node 的记录
2007-09-28 11:27:19 <mryufeng> 你要先 net_adm:ping(node)下
2007-09-28 11:27:37 <mryufeng> 让erlang把记录补上去哦
2007-09-28 11:27:51 <jackyz.zhao> 查了下文档,好像是没有 {pid, Node} ! hehe 这样的用法,只有 {RegName, Node} ! hehe 这样的用法,莫非必须要浪费一个 Atom 来做 RegName ?
2007-09-28 11:27:51 <panxiaof> 我用了那个mnesia extra node……我想这样应该也可以了。。。。我再试试
2007-09-28 11:28:33 <panxiaof> {pid, Node} ! hehe 。。这样的用法在本node上是一定可行的,我试过。。
2007-09-28 11:29:19 *** <neooen.hu> joins this room.
2007-09-28 11:29:57 <jackyz.zhao> 那我觉得你应该试试 yufeng 说的 net_adm:ping 然后再 {pid, Node} ! hehe 这种方式
2007-09-28 11:31:07 *** <shaofei> joins this room.
2007-09-28 11:33:45 <panxiaof> 刚才试了一下,不好意思,好像不行~~ai~
2007-09-28 11:34:05 <mryufeng> 好像 {pid, Node}
2007-09-28 11:34:11 <mryufeng>
!呵呵
2007-09-28 11:34:15 <mryufeng> 不行哦
2007-09-28 11:34:27 <panxiaof> gen_server:call({pid(0,98,0),’haoT1server@10.0.11.61′},{page_opened,{“www.sina.com/haha.html”,userpid}}).
这个东东在两个已经用net_adm执行过的node下执行,本地node可以,别的node不行
2007-09-28 11:34:30 <mryufeng> 我看了文档pid() | port() | RegName | {RegName, Node}
2007-09-28 11:34:57 <mryufeng> 再看了bif.c do_send函数
2007-09-28 11:35:28 <mryufeng> } else if (is_tuple(to)) { /* Remote send */
int ret;
tp = tuple_val(to);
if (*tp != make_arityval(2))
return SEND_BADARG;
if (is_not_atom(tp[1]) || is_not_atom(tp[2]))
return SEND_BADARG;
/* sysname_to_connected_dist_entry will return NULL if there
is no dist_entry or the dist_entry has no port*/
if ((dep = erts_sysname_to_connected_dist_entry(tp[2])) == NULL) {
return SEND_TRAP;
}
2007-09-28 11:35:33 <jackyz.zhao> 嗯。文档就是这么写的,只有 RegName, Node 没有 Pid, Node
2007-09-28 11:35:36 <panxiaof> 我回去细看一下那个ejabberd,他那里也有类似的处理,我看他是怎么做的~然后再告诉大家
2007-09-28 11:35:48 <mryufeng> 如果是tuple的话 必须2个都是atom
2007-09-28 11:35:55 <mryufeng> f (is_not_atom(tp[1]) || is_not_atom(tp[2]))
return SEND_BADARG;
2007-09-28 11:36:06 <mryufeng> 肯定 不行哦
2007-09-28 11:36:35 <mryufeng> 看下do_send函数 就知道 这个细节了
2007-09-28 11:36:39 <panxiaof> ejabberd的PID好多是通过mnesia来传的~我看一下他是怎么做的~
2007-09-28 11:37:10 <mryufeng> 好 看好了 通报下
2007-09-28 11:37:22 <jackyz.zhao> 嗯,其实这个也好绕,你就在那个node上写一个 broker 嘛,pid 不好用没关系,你先发给这个 broker,然后由这个broker在本node 来执行,执行结果再发回去不就结了。
2007-09-28 11:37:30 <panxiaof> (关键是看一下,还要搭一个环境。。555)
2007-09-28 11:37:41 <mryufeng> 呵呵
2007-09-28 11:38:40 <jackyz.zhao> 反正是一次remote,local的send和receive是多做了几次,不过开销应该不大。
2007-09-28 11:39:36 <panxiaof> 还有一个问题~就是通过消息发一个100个字符的消息,同一局域网内的两个机器上的node,一秒能发多少?
2007-09-28 11:39:50 <panxiaof> 谁试过没有~?
2007-09-28 11:39:53 <mryufeng> 我给你一个数字
2007-09-28 11:41:18 <mryufeng> os 的send 在20-50us 左右 上层应用的开销就10us把 光速延迟在几百us 如果不用应答的话 应该可以发很多
2007-09-28 11:43:09 <panxiaof> 你说的光速延迟是指什么?
2007-09-28 11:43:57 <mryufeng> 就是指数据经过网卡 路由器 电缆的时间
2007-09-28 11:45:12 <panxiaof> 延迟与系统容量没有关系吧~所以要讲流量的话,这个几百us可以不用考虑是吗?
2007-09-28 11:45:14 <mryufeng> 还要操作系统从tcp/ip stack到网卡的时间
2007-09-28 11:45:44 <mryufeng> 如果你是应答型的协议 就要考虑
2007-09-28 11:45:53 <mryufeng> 其他 的就不用考虑了
2007-09-28 11:46:12 <panxiaof> 我就是用那个pid!message这样结构
2007-09-28 11:46:23 <mryufeng> 那不用
2007-09-28 11:46:45 <panxiaof> gen_server:call呢??好像也用是吧~hehe
2007-09-28 11:46:56 <panxiaof> gen_server:call呢??好像也不用是吧~hehe
2007-09-28 11:47:02 <mryufeng> 没有1w个请求应该有保证
2007-09-28 11:47:11 <neooen.hu> 精确的估算好像不现实吧,到了os那层就不受控制了吧
2007-09-28 11:47:39 <mryufeng> os层面 的经验值就是上面的那个
2007-09-28 11:47:47 <mryufeng> 这个东西哪里有精确的
2007-09-28 11:47:47 <panxiaof> 我想起码一秒能处理1W以上~。。不然就有点失望了
2007-09-28 11:48:26 <panxiaof> 最好是10W个信息每秒。。。好像不现实 。。55555
2007-09-28 11:48:36 <mryufeng> 1w以上是很难的
2007-09-28 11:48:48 <mryufeng> 所谓的c10k问题 就是这个
2007-09-28 11:48:59 <mryufeng> 10w 我用c都做不出来
2007-09-28 11:49:22 <mryufeng> 除非把消息延迟发送 累计个10个消息左右发一次。
2007-09-28 11:49:42 <neooen.hu> 造成c10k问题的根源在哪
2007-09-28 11:49:58 <mryufeng> 你自己算
2007-09-28 11:50:11 <panxiaof> 也就是所谓的用一个proxy是吧~
2007-09-28 11:50:21 <mryufeng> 10K 也就是说 10us每个请求
2007-09-28 11:50:32 <mryufeng> 写错了 是 100us
2007-09-28 11:50:44 <mryufeng> send/recv一对去了50us
2007-09-28 11:50:45 <panxiaof> 这一点好像你adiven在一个文章中说过~
2007-09-28 11:51:32 <mryufeng> 剩下的50us 你要完成消息的decode encode logic处理 lock/unlock
2007-09-28 11:51:33 <xushiweizh> .
2007-09-28 11:51:44 <panxiaof> 我想全部异步~~
2007-09-28 11:51:55 <mryufeng> 每个步骤你都要精确控制
2007-09-28 11:52:10 <mryufeng> 我说的都是异步的情况
2007-09-28 11:52:23 <mryufeng> 同步就不和你讨论c10k的问题了
2007-09-28 11:53:01 <mryufeng> lock/unlock 1次都1-2us 如果你的数据结构没有设计好 你就over了
2007-09-28 11:53:19 <mryufeng> 还要线程切换 都是非常耗时间的
2007-09-28 11:53:24 <panxiaof> 50us才能完成一个消息encode decode吗?
比用drity_read读一个mneis记录要慢5倍~~ai~~
2007-09-28 11:53:57 <mryufeng> 现在搞性能的服务器 都是单线程 event_driven设计原因就在这里
2007-09-28 11:54:53 <mryufeng> 我们一起用的sip协议 买的商业的radvision协议stack 3wus$一套 sip encode 和 decode要700us
2007-09-28 11:55:07 <mryufeng> 实在不行了 我们自己写才30us
2007-09-28 11:55:12 <panxiaof> 在erlang里,有一个socket based distriubter的东东,那个好像就是建议你用proxy来做,而且还有名字密码保护,。。回去了好看看
2007-09-28 11:55:21 <mryufeng> 才把性能提到1w
2007-09-28 11:55:41 <mryufeng> 就是erlang的auth模块
2007-09-28 11:56:26 <panxiaof> 做一个proxy可能性能就上去了~让每个消息慢上0.1秒,积个100条再发~
2007-09-28 11:56:32 <mryufeng> 这个设计的不行 连替换接口都没有 存心不让我们自己设计加密机制
2007-09-28 11:56:46 <mryufeng> 恩 只有用这一招了
2007-09-28 11:57:13 <panxiaof> 今天早上累了yufeng了~~我也累了~要去吃饭了`
2007-09-28 11:57:25 <panxiaof> 谢谢yufeng大哥~
2007-09-28 11:57:25 <mryufeng> 恩 多吃点
2007-09-28 11:57:31 <mryufeng> 客气了
2007-09-28 17:36:27 <panxiaof> 有没有用过yaws的?
2007-09-28 17:37:15 <jackyz.zhao> 啥问题?
2007-09-28 17:37:35 <panxiaof> 我在<erl></erl>里用pid函数,他说不存在这个东东
2007-09-28 17:37:50 <jackyz.zhao> erlang:pid 呢
2007-09-28 17:37:50 <panxiaof> 刚开始看这个yawshehe
2007-09-28 17:38:21 <panxiaof> 哦~跟shell下不是吧,必需要写erlang:pid是吗
2007-09-28 17:38:34 <panxiaof> 哦~跟shell下同是吧,必需要写erlang:pid是吗
2007-09-28 17:38:56 <jackyz.zhao> 试试嘛,是有些区别,记得不是很清楚了
2007-09-28 17:40:44 <panxiaof> en..下班之前,即兴问一下:)
2007-09-29 09:26:32 <panxiaof> 在两个节点间使用gen_server:call(pid(0,Y,0),{page,{“www.sina.com/haha.html”,userpid}}).
一秒钟1000条都不到
使用 gen_server:cast(pid(0,Y,0),{page,{“www.sina.com/haha.html”,userpid}}).
是一秒3000条
发信息的机器是windowsXP,cpu P4 2.0G 他的cpu会是接近100%(cast时就是100%) 接受机器是windowXP 双核2.0G,他执行了几条查库操作,CPU会是30%左右
不知道要提高吞吐量瓶劲在哪里??大家帮我指点一下啊
2007-09-29 09:30:50 <panxiaof> en“我还是看看书先:(
2007-09-29 11:58:03 <jackyz.zhao> 问一下,大家能正常访问 erlang-china.org 么?
2007-09-29 11:58:29 <dotwoo> 可以啊
2007-09-29 11:58:31 <AvinDev> 可以
2007-09-29 11:58:47 <stingchen> 不行
2007-09-29 11:59:11 <stingchen> 现在又可以了
2007-09-29 11:59:11 <jackyz.zhao> 好奇怪啊,我看google的访问统计,从9月22日开始就没数据了。
2007-09-29 11:59:11 <AvinDev> 我是电信,不行的是网通么?
2007-09-29 11:59:52 <xushiweizh> 应该是你改模板的原因吧。
2007-09-29 11:59:57 <stingchen> 说明Google Analytics代码出问题了
2007-09-29 12:00:01 <xushiweizh> 忘了加上js代码了。
2007-09-29 12:00:13 <jackyz.zhao> 嗯。我刚想到这里
2007-09-29 12:00:22 <stingchen> 低级错误
2007-09-29 12:00:34 <jackyz.zhao> 哈哈。。。蒙了。
2007-09-29 12:01:06 <jackyz.zhao> 我本机做了hosts设置,我还以为又被河蟹了呢
2007-09-29 12:01:49 <AvinDev> jackyz,erlang china的banner,在我的宽屏本本上面显示,两边都留空白了,很难看:)
2007-09-29 12:02:25 <jackyz.zhao> 哦,这个模板还有这问题?我看看
2007-09-29 15:47:22 <rory.cn> 今天又看到c10k problem了。
2007-09-29 15:47:30 <rory.cn> 在lighttpd 的story里面。
2007-09-29 17:20:17 <panxiaof> C10K啊~~ai~
2007-09-29 17:20:38 <rory.cn> 怎么要 ai呢?
2007-09-29 17:21:02 <panxiaof> 我在叹气呢~~好麻烦
2007-09-29 17:21:15 <linningjie> ??
2007-09-29 17:21:22 <panxiaof> 你那个C10K发生在什么地方?
2007-09-29 17:21:36 <rory.cn> 没有我是看到lighttpd的story上面的。
2007-09-29 17:22:23 <panxiaof> 没有用过lightHttp
所以请你描述一下,是不同node间发送信息的C10K呢还是别的
2007-09-29 17:22:31 <mryufeng> c10k是很难克服的 lighty的作者作了多少改进 才有lighty的今天
2007-09-29 17:23:08 <rory.cn> 是啊。所以想用用lighttpd
2007-09-29 17:23:09 <rory.cn> I already had seen apaches killing systems because they ran out of memory into swap with only 100 parallel connections.
2007-09-29 17:23:24 <rory.cn> 他说apache100就killing 了。
2007-09-29 17:23:39 <mryufeng> nginx更牛
2007-09-29 17:23:49 <mryufeng> 比lighty做的还好
2007-09-29 17:24:19 <rory.cn> 但是没有比较过好多少。
2007-09-29 17:24:27 <rory.cn> yufeng做过比较么?
2007-09-29 17:24:46 <panxiaof> yaws怎么样啊~
2007-09-29 17:24:52 <panxiaof> 我在用yaws呢
2007-09-29 17:24:54 <mryufeng> 俺 研究lighty和nginx比较多
2007-09-29 17:24:54 <rory.cn> nginx好像ror用得比较多。
2007-09-29 17:25:41 <rory.cn> 我想用用lighttpd+tomcat.看到lighttpd有个ajp的proxy,nginx没有的吧?
2007-09-29 17:25:49 <rory.cn> 还没有怎么看过nginx
2007-09-29 17:25:51 <mryufeng> nginx的代码质量是目前为止我看到的系统最讲效率的
2007-09-29 17:29:37 <rory.cn> yufeng是不是都用lighttpd和nginx了。放弃apache了。
2007-09-29 17:29:58 <mryufeng> apache确实年纪有点大了
2007-09-29 17:37:46 <jackyz.zhao> 绝大部分的应用,瓶颈都不在webserver这里,常常是webserver还很闲,db或者其他的部分就已经先撑不住了。所以,就算是,用apache来跑也无所谓。除非你的应用全部是静态页,那就有升级webserver的紧迫性。但另一个问题是,你升级到那么大的容量也没用。要么是访问量没那么大,要么是带宽没那么大。总之就是说瓶颈通常不在这里就对了。所以apache这么高寿,还是用的那么多。
2007-09-29 17:39:11 <rory.cn> 原来是这样的哦。
2007-09-29 17:40:10 <jackyz.zhao> 另外一个问题是webserver很多时候只是前端,需要和后面的技术接起来,这个时候,如果你要用的接口还不支持,或者支持得还不够好。那你就郁闷了,而apache的mod最多,可以说是最保险的选择。
2007-09-29 17:40:54 <mryufeng> 恩 从稳定和易用方面来讲 apache还是老大
2007-09-29 17:42:36 <jackyz.zhao> 就是说啦,ngix性能是很牛,但是它的普及,很大程度上可能靠的是他上面的mod是否丰富,特性是否完备。而这些因素并不是ngix的俄罗斯作者自己一个人就能搞定的问题。
2007-09-29 17:43:26 <mryufeng> 不过lighty和nginx的模块差不多都开始和apache可以有的一比较了
2007-09-29 17:43:50 <mryufeng> 除了script方面的 其他的应该比较接近
2007-09-29 17:44:11 <mryufeng> webcraft 排名 lighty第5 nginx第9
2007-09-29 17:44:38 <mryufeng> 这2只程序都只用了4年不到的时间
2007-09-29 17:45:28 <jackyz.zhao> 嗯。是的啊。后起之秀,很厉害啊。
2007-09-29 17:46:03 <rory.cn> 是啊。有好多大站都在用。
2007-09-29 17:46:13 <rory.cn> 用的人自然就会多起来了。
2007-09-29 17:48:09 <mryufeng> 而且名次估计还得往前靠 社区的人开始大力开发模块了
2007-09-29 17:49:20 <jackyz.zhao> 社区是关键啊。erlang也类似,技术先进,但还是要推广得好。
2007-09-29 17:50:04 <mryufeng> 就仅仅一年时间 现在大家开始知道lighty和nginx
2007-09-29 17:50:27 <mryufeng> 我前年看的时候 国内几乎没有这2个名词
2007-09-29 17:50:52 <rory.cn> 我也是在06年才听过的。
2007-09-29 17:51:02 <rory.cn> 在javaeye上看到robbin在装。
2007-09-29 17:51:13 <rory.cn> nginx是在box.net看到的。
2007-09-29 17:51:24 <mryufeng> 俺是关注服务器实现 才跟踪的
2007-09-29 17:51:28 <mryufeng> 发展的太快了
2007-09-29 17:51:29 <AvinDev> 现在很多新兴web2.0站点都用它们了
2007-09-29 17:51:45 <mryufeng> 恩 确实性能高 特别是nginx
2007-09-29 17:51:49 <jackyz.zhao> 呵呵,未来还不好说,如果apache的内核也开始改用lighttpd和nginx的技术呢?我不知道是否有这个可能啊。
2007-09-29 17:52:54 <jackyz.zhao> apache背后有ibm,技术牛人满载啊。
2007-09-29 17:53:23 <mryufeng> 这个我明白 但是apache不可能去改构架
2007-09-29 17:53:56 <mryufeng> 设置连api变动都不容易 更不用说大规模的代码优化 提速
2007-09-29 17:54:13 <mryufeng> 因为社区太大了 没有人同意你这么做
2007-09-29 17:54:39 <mryufeng> 而新的web服务器就可以这样 可以用各种各样的新技术
2007-09-29 17:54:58 <AvinDev> 貌似现在很多人还是在用Apache1.x,很多人觉得2.x不好用
2007-09-29 17:56:14 <jackyz.zhao> 嗯,api好不好改就没研究过,不好说了,
2007-09-29 17:56:18 <rory.cn> 是啊。php的好多还在用1.x吧。
2007-09-29 17:57:13 <jackyz.zhao> 不过apache的struts就干过这种事,整个吞了webwork,然后说是自己的2.0,晕死一大片。
2007-09-29 17:57:32 <mryufeng> 恩 linux2.6出来都几年了 但是很多系统还是2.4 因为他们认为2.4足够满足他们的需要 和习惯 我不需要
2007-09-29 17:58:01 <mryufeng> 我也讨厌变化太快的东西 如java 我担心跟不上
2007-09-29 17:58:33 <AvinDev> 没关系,没有打算跟上,哈哈
2007-09-29 17:58:33 <jackyz.zhao> 哈哈。。。同感,我就是感叹一下,软件越来越象政治了。
2007-09-29 17:58:44 <mryufeng> c语言就好很多 c99出来好多年了 大家都抗拒不用 还用c89的标准
2007-09-29 17:59:11 <rory.cn> java是跟不上了。
2007-09-29 17:59:31 <rory.cn> AvinDev不是都 away from java了么?
2007-09-29 17:59:39 <rory.cn> 看来我也要做做准备了。
2007-09-29 18:00:03 <mryufeng> python最近也是 有点受不了
2007-09-29 18:00:28 <mryufeng> 天天改东西 改语法 晕死去了
2007-09-29 18:01:08 <stingchen> 说python坏话的人还真难找
2007-09-29 18:01:21 <mryufeng> 俺就说
2007-09-29 18:01:32 <jackyz.zhao> 呵呵,最近也听见javascript要改语法,也是惊起哇声一篇。
2007-09-29 18:01:44 <stingchen> 变化才能生存
2007-09-29 18:01:50 <stingchen> 竞争才有发展
2007-09-29 18:01:50 <jackyz.zhao> 世界变化快啊
2007-09-29 18:01:51 <mryufeng> 虽然特性是很好用 但是老是变化也不好
2007-09-29 18:02:30 <mryufeng> python 这几年改了多少东西 唉
2007-09-29 18:03:24 <AvinDev> 哈哈,加小小语法就在嚷嚷了,AS2到AS3可是大变呢
2007-09-29 18:03:44 <mryufeng> lua那几个人就实在好多 几年才改一次
2007-09-29 18:04:09 <mryufeng> 哈哈 我爱死那几个人了
2007-09-29 18:04:16 <rory.cn>
2007-09-30 09:13:31 <panxiaof> potian 这个兄弟有没有在这个群里?
2007-09-30 09:14:23 <yuxh312> 你可以 “/names”
2007-09-30 15:19:40 <panxiaof> 同一节点上的不同node发消息,是通过什么方式发的,会不会可能也是通过socket发的?
2007-09-30 15:19:54 <mryufeng> 通过tcp
2007-09-30 15:20:11 <mryufeng> inet_tcp.erl这个模块
2007-09-30 15:20:20 <mryufeng> ssl是inet_ssl
2007-09-30 15:20:34 <mryufeng> 还可以自己写个模块来
2007-09-30 15:21:00 <mryufeng> 我前端时间本来想做个udp的版本 解决nat穿透问题
2007-09-30 15:22:33 <panxiaof> inet_ssl与inet_tcp性能上差别大吗?
2007-09-30 15:23:05 <mryufeng> ssl handshake以后 就是简单的对称加密 如rc4什么的
2007-09-30 15:23:28 <mryufeng> 对现在的cpu来讲 根本不算什么负担
2007-09-30 15:25:41 <panxiaof> 我在本机上不同node间发消息与不同机器上不同node之发消息,性能差别好大,如果都是通过solet的话,也就是说,10M的内网与100M的内网,性能的差别也会很大是吧?
2007-09-30 15:31:40 <mryufeng> 本机和node当然差别大了 / 10m也100M和你程序有什么关系
哇塞,好多东西没见过啊。整理出来好有必要。Arbow辛苦了。
Hi, May I know how to contact you, because our company opened several server / client engineer (erlang) positions recently. If you are interested in them, please do not hesitate to contact me.
I am staffing officer of Ubisoft Shanghai Studio, If you are interested in these positions, please contact me: ming-jian.chen@ubisoft.com
ohyeah! Erlang 已经有 N 个游戏的“成功案例”了,Great Choice, Ubi !
“育碧上海”是游戏业界知名的BigNames,如果他们也开始招 Erlang Guy ,那么,这就足以表明“游戏业界主流大拿对 Erlang 的感兴趣程度”。各位上海的大拿,赶紧去报名啊。
可惜,俺在北京,Arbow 在广州。残念-ing。。。
我估计也是试水
刚知道Erlang不久,正在学习中。有这么多爱好者,不错^_^
Hello, blogger, your article very good, looking forward to sharing your latest