2009年11月07日 星期六 09:43
嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈... 091107:: ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸) ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网 ~09:33 成立涛 - Erlang开发实践 N多内容,包含了所有 erl 开发过程中的所有关键实践体验.. -- http://zoomquiet.org 人生苦短? Pythonic! usage 7-zip to replace WinRAR/WinZip; You can get the truely Freedom 4 software.
2009年11月07日 星期六 09:46
~09:45 讲演的幻灯在: http://ecug.googlecode.com/svn/trunk/cn-erlounge/iv/litao.cheng/ 当然提及OTP, gen_server 在实践中占到80% 的代码覆盖率,而且其它常用模式也都可用 gen_server 模拟出来! 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: > 嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈... > 091107:: > ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸) > ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网 > ~09:33 成立涛 - Erlang开发实践 > N多内容,包含了所有 erl 开发过程中的所有关键实践体验.. > > -- > http://zoomquiet.org 人生苦短? Pythonic! > usage 7-zip to replace WinRAR/WinZip; You can get the truely Freedom 4 software. > -- http://zoomquiet.org 人生苦短? Pythonic! 金山常年招聘Py/C++人才! http://bit.ly/UoTV 简历直投俺就成;-)
2009年11月07日 星期六 09:52
~09:50 gen_server 是个稳固的 S/C 框架,我们可以放心的在其上进行开发; - erl 进程是种抽象概念,是应用的最小单位 - 不要在gen_server 中进行复杂的处理,以免引发阻塞 - 这时使用 gen_fsm 这是专门进行处理可能有阻塞的进程处理框架 - 而且可以使用内置的相互监督模型进行进程脆崩后的自动处理 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: > ~09:45 讲演的幻灯在: > http://ecug.googlecode.com/svn/trunk/cn-erlounge/iv/litao.cheng/ > 当然提及OTP, gen_server 在实践中占到80% 的代码覆盖率,而且其它常用模式也都可用 gen_server 模拟出来! > > 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >> 嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈... >> 091107:: >> ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸) >> ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网 >> ~09:33 成立涛 - Erlang开发实践 >> N多内容,包含了所有 erl 开发过程中的所有关键实践体验.. >> >> -- >> http://zoomquiet.org 人生苦短? Pythonic! >> usage 7-zip to replace WinRAR/WinZip; You can get the truely Freedom 4 software. >> > > > > -- > http://zoomquiet.org 人生苦短? Pythonic! > 金山常年招聘Py/C++人才! http://bit.ly/UoTV 简历直投俺就成;-) > -- http://zoomquiet.org 人生苦短? Pythonic! 向靠谱,反脑残! Kaopulity,小白退散! [Kaopulity~= Keep all processes usablity!]
2009年11月07日 星期六 09:55
~09:55 昨日的讲师小聚照片:http://www.flickr.com/photos/zoomq/sets/72157622746793958/ - appmon 内置的应用进程关系观察工具 - 相当于JAVA的类树图自动分析,只是这里是对真实的网络进程间关系探测! 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: > ~09:50 gen_server 是个稳固的 S/C 框架,我们可以放心的在其上进行开发; > - erl 进程是种抽象概念,是应用的最小单位 > - 不要在gen_server 中进行复杂的处理,以免引发阻塞 > - 这时使用 gen_fsm 这是专门进行处理可能有阻塞的进程处理框架 > - 而且可以使用内置的相互监督模型进行进程脆崩后的自动处理 > > 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >> ~09:45 讲演的幻灯在: >> http://ecug.googlecode.com/svn/trunk/cn-erlounge/iv/litao.cheng/ >> 当然提及OTP, gen_server 在实践中占到80% 的代码覆盖率,而且其它常用模式也都可用 gen_server 模拟出来! >> >> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>> 嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈... >>> 091107:: >>> ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸) >>> ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网 >>> ~09:33 成立涛 - Erlang开发实践 >>> N多内容,包含了所有 erl 开发过程中的所有关键实践体验.. >>> >>> -- >>> http://zoomquiet.org 人生苦短? Pythonic! >>> usage 7-zip to replace WinRAR/WinZip; You can get the truely Freedom 4 software. >>> >> >> >> >> -- >> http://zoomquiet.org 人生苦短? Pythonic! >> 金山常年招聘Py/C++人才! http://bit.ly/UoTV 简历直投俺就成;-) >> > > > > -- > http://zoomquiet.org 人生苦短? Pythonic! > 向靠谱,反脑残! Kaopulity,小白退散! [Kaopulity~= Keep all processes usablity!] > -- http://zoomquiet.org 人生苦短? Pythonic! 一个人如果力求完善自己,就会看到:为此也必须同时完善他人. 一个人如果不关心别人的完善,自己便不可能完善! -------------- 下一部分 -------------- A non-text attachment was scrubbed... Name: 2009-11-07-095449_570x472_scrot.png Type: image/png Size: 43144 bytes Desc: 不可用 URL: <http://www.zeuux.org/pipermail/zeuux-universe/attachments/20091107/9e0c9b36/attachment-0001.png>
2009年11月07日 星期六 09:58
~10:01 Emakefile 内置的编译工具,比手工逐一make 可以获得一致性的自动统一编译; - 遗憾的是:只能编译.erl 的,无法依赖支持 - 所以,习惯的使用 GNU make,通过makeconf 进一步加强日常的erl 生产编译行为... - 而且可移植!... 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: > ~09:55 昨日的讲师小聚照片:http://www.flickr.com/photos/zoomq/sets/72157622746793958/ > - appmon 内置的应用进程关系观察工具 > - 相当于JAVA的类树图自动分析,只是这里是对真实的网络进程间关系探测! > > 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >> ~09:50 gen_server 是个稳固的 S/C 框架,我们可以放心的在其上进行开发; >> - erl 进程是种抽象概念,是应用的最小单位 >> - 不要在gen_server 中进行复杂的处理,以免引发阻塞 >> - 这时使用 gen_fsm 这是专门进行处理可能有阻塞的进程处理框架 >> - 而且可以使用内置的相互监督模型进行进程脆崩后的自动处理 >> >> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>> ~09:45 讲演的幻灯在: >>> http://ecug.googlecode.com/svn/trunk/cn-erlounge/iv/litao.cheng/ >>> 当然提及OTP, gen_server 在实践中占到80% 的代码覆盖率,而且其它常用模式也都可用 gen_server 模拟出来! >>> >>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>> 嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈... >>>> 091107:: >>>> ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸) >>>> ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网 >>>> ~09:33 成立涛 - Erlang开发实践 >>>> N多内容,包含了所有 erl 开发过程中的所有关键实践体验.. >>>> >>>> -- >>>> http://zoomquiet.org 人生苦短? Pythonic! >>>> usage 7-zip to replace WinRAR/WinZip; You can get the truely Freedom 4 software. >>>> >>> >>> >>> >>> -- >>> http://zoomquiet.org 人生苦短? Pythonic! >>> 金山常年招聘Py/C++人才! http://bit.ly/UoTV 简历直投俺就成;-) >>> >> >> >> >> -- >> http://zoomquiet.org 人生苦短? Pythonic! >> 向靠谱,反脑残! Kaopulity,小白退散! [Kaopulity~= Keep all processes usablity!] >> > > > > -- > http://zoomquiet.org 人生苦短? Pythonic! > 一个人如果力求完善自己,就会看到:为此也必须同时完善他人. 一个人如果不关心别人的完善,自己便不可能完善! > -- http://zoomquiet.org 人生苦短? Pythonic! 流程是对先前蠢行的内在反应! ~ Clay Shirky (Process is an embedded reaction to prior stupidity)http://bit.l...
2009年11月07日 星期六 10:04
~10:05 注释约定! 模块用 %%% 前缀,函式用 %% 前缀... - 遗憾的是:edoc 对中文支持不好 - 嗯嗯嗯,建议使用 Doxygen 之类第3方专业文档化编程工具 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: > ~10:01 Emakefile 内置的编译工具,比手工逐一make 可以获得一致性的自动统一编译; > - 遗憾的是:只能编译.erl 的,无法依赖支持 > - 所以,习惯的使用 GNU make,通过makeconf 进一步加强日常的erl 生产编译行为... > - 而且可移植!... > > 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >> ~09:55 昨日的讲师小聚照片:http://www.flickr.com/photos/zoomq/sets/72157622746793958/ >> - appmon 内置的应用进程关系观察工具 >> - 相当于JAVA的类树图自动分析,只是这里是对真实的网络进程间关系探测! >> >> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>> ~09:50 gen_server 是个稳固的 S/C 框架,我们可以放心的在其上进行开发; >>> - erl 进程是种抽象概念,是应用的最小单位 >>> - 不要在gen_server 中进行复杂的处理,以免引发阻塞 >>> - 这时使用 gen_fsm 这是专门进行处理可能有阻塞的进程处理框架 >>> - 而且可以使用内置的相互监督模型进行进程脆崩后的自动处理 >>> >>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>> ~09:45 讲演的幻灯在: >>>> http://ecug.googlecode.com/svn/trunk/cn-erlounge/iv/litao.cheng/ >>>> 当然提及OTP, gen_server 在实践中占到80% 的代码覆盖率,而且其它常用模式也都可用 gen_server 模拟出来! >>>> >>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>> 嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈... >>>>> 091107:: >>>>> ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸) >>>>> ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网 >>>>> ~09:33 成立涛 - Erlang开发实践 >>>>> N多内容,包含了所有 erl 开发过程中的所有关键实践体验.. >>>>> >>>>> -- >>>>> http://zoomquiet.org 人生苦短? Pythonic! >>>>> usage 7-zip to replace WinRAR/WinZip; You can get the truely Freedom 4 software. >>>>> >>>> >>>> >>>> >>>> -- >>>> http://zoomquiet.org 人生苦短? Pythonic! >>>> 金山常年招聘Py/C++人才! http://bit.ly/UoTV 简历直投俺就成;-) >>>> >>> >>> >>> >>> -- >>> http://zoomquiet.org 人生苦短? Pythonic! >>> 向靠谱,反脑残! Kaopulity,小白退散! [Kaopulity~= Keep all processes usablity!] >>> >> >> >> >> -- >> http://zoomquiet.org 人生苦短? Pythonic! >> 一个人如果力求完善自己,就会看到:为此也必须同时完善他人. 一个人如果不关心别人的完善,自己便不可能完善! >> > > > > -- > http://zoomquiet.org 人生苦短? Pythonic! > 流程是对先前蠢行的内在反应! ~ Clay Shirky (Process is an embedded reaction to prior > stupidity)http://bit.l... > -- http://zoomquiet.org 人生苦短? Pythonic! Time is unimportant, only life important!
2009年11月07日 星期六 10:18
~10:13 erl 开发中的逻辑问题解决... - 编译过,但是运行不过时的调试技巧! -> plt 的进一步自动分析,来定位可能的编辑问题 - 使用定制的 dialyzer 测试脚本,定位常见问题... - 进一步的,充分使用 EUnit 是个好思路... 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: > ~10:05 注释约定! 模块用 %%% 前缀,函式用 %% 前缀... > - 遗憾的是:edoc 对中文支持不好 > - 嗯嗯嗯,建议使用 Doxygen 之类第3方专业文档化编程工具 > > 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >> ~10:01 Emakefile 内置的编译工具,比手工逐一make 可以获得一致性的自动统一编译; >> - 遗憾的是:只能编译.erl 的,无法依赖支持 >> - 所以,习惯的使用 GNU make,通过makeconf 进一步加强日常的erl 生产编译行为... >> - 而且可移植!... >> >> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>> ~09:55 昨日的讲师小聚照片:http://www.flickr.com/photos/zoomq/sets/72157622746793958/ >>> - appmon 内置的应用进程关系观察工具 >>> - 相当于JAVA的类树图自动分析,只是这里是对真实的网络进程间关系探测! >>> >>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>> ~09:50 gen_server 是个稳固的 S/C 框架,我们可以放心的在其上进行开发; >>>> - erl 进程是种抽象概念,是应用的最小单位 >>>> - 不要在gen_server 中进行复杂的处理,以免引发阻塞 >>>> - 这时使用 gen_fsm 这是专门进行处理可能有阻塞的进程处理框架 >>>> - 而且可以使用内置的相互监督模型进行进程脆崩后的自动处理 >>>> >>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>> ~09:45 讲演的幻灯在: >>>>> http://ecug.googlecode.com/svn/trunk/cn-erlounge/iv/litao.cheng/ >>>>> 当然提及OTP, gen_server 在实践中占到80% 的代码覆盖率,而且其它常用模式也都可用 gen_server 模拟出来! >>>>> >>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>> 嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈... >>>>>> 091107:: >>>>>> ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸) >>>>>> ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网 >>>>>> ~09:33 成立涛 - Erlang开发实践 >>>>>> N多内容,包含了所有 erl 开发过程中的所有关键实践体验.. >>>>>> >>>>>> -- >>>>>> http://zoomquiet.org 人生苦短? Pythonic! >>>>>> usage 7-zip to replace WinRAR/WinZip; You can get the truely Freedom 4 software. >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> http://zoomquiet.org 人生苦短? Pythonic! >>>>> 金山常年招聘Py/C++人才! http://bit.ly/UoTV 简历直投俺就成;-) >>>>> >>>> >>>> >>>> >>>> -- >>>> http://zoomquiet.org 人生苦短? Pythonic! >>>> 向靠谱,反脑残! Kaopulity,小白退散! [Kaopulity~= Keep all processes usablity!] >>>> >>> >>> >>> >>> -- >>> http://zoomquiet.org 人生苦短? Pythonic! >>> 一个人如果力求完善自己,就会看到:为此也必须同时完善他人. 一个人如果不关心别人的完善,自己便不可能完善! >>> >> >> >> >> -- >> http://zoomquiet.org 人生苦短? Pythonic! >> 流程是对先前蠢行的内在反应! ~ Clay Shirky (Process is an embedded reaction to prior >> stupidity)http://bit.l... >> > > > > -- > http://zoomquiet.org 人生苦短? Pythonic! > Time is unimportant, only life important! > -- http://zoomquiet.org 人生苦短? Pythonic! 过程改进乃是催生可促生靠谱的人的组织! (ProcessEnhancement keeps evolving organizations which promoting people b...
2009年11月07日 星期六 10:51
~10:50 锋爷:Erlang应用优化指南 - 网游公司,用erl 开发平台! - 对于性能的苛求导致发现短连接响应领域 erl 绝对领先! - Taskset -c 1 erl +K true +h 99999 +P 99999 -s ehttpd - 严格理解了应用需求后,放弃了垃圾收集等等内置行为后,性能增加 110% 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: > ~10:13 erl 开发中的逻辑问题解决... > - 编译过,但是运行不过时的调试技巧! -> plt 的进一步自动分析,来定位可能的编辑问题 > - 使用定制的 dialyzer 测试脚本,定位常见问题... > - 进一步的,充分使用 EUnit 是个好思路... > > 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >> ~10:05 注释约定! 模块用 %%% 前缀,函式用 %% 前缀... >> - 遗憾的是:edoc 对中文支持不好 >> - 嗯嗯嗯,建议使用 Doxygen 之类第3方专业文档化编程工具 >> >> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>> ~10:01 Emakefile 内置的编译工具,比手工逐一make 可以获得一致性的自动统一编译; >>> - 遗憾的是:只能编译.erl 的,无法依赖支持 >>> - 所以,习惯的使用 GNU make,通过makeconf 进一步加强日常的erl 生产编译行为... >>> - 而且可移植!... >>> >>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>> ~09:55 昨日的讲师小聚照片:http://www.flickr.com/photos/zoomq/sets/72157622746793958/ >>>> - appmon 内置的应用进程关系观察工具 >>>> - 相当于JAVA的类树图自动分析,只是这里是对真实的网络进程间关系探测! >>>> >>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>> ~09:50 gen_server 是个稳固的 S/C 框架,我们可以放心的在其上进行开发; >>>>> - erl 进程是种抽象概念,是应用的最小单位 >>>>> - 不要在gen_server 中进行复杂的处理,以免引发阻塞 >>>>> - 这时使用 gen_fsm 这是专门进行处理可能有阻塞的进程处理框架 >>>>> - 而且可以使用内置的相互监督模型进行进程脆崩后的自动处理 >>>>> >>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>> ~09:45 讲演的幻灯在: >>>>>> http://ecug.googlecode.com/svn/trunk/cn-erlounge/iv/litao.cheng/ >>>>>> 当然提及OTP, gen_server 在实践中占到80% 的代码覆盖率,而且其它常用模式也都可用 gen_server 模拟出来! >>>>>> >>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>> 嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈... >>>>>>> 091107:: >>>>>>> ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸) >>>>>>> ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网 >>>>>>> ~09:33 成立涛 - Erlang开发实践 >>>>>>> N多内容,包含了所有 erl 开发过程中的所有关键实践体验.. -- http://zoomquiet.org 人生苦短? Pythonic! KM乃是培育可催生自学习型组织的文化氛围! (KM=Knowledge Management=知识管理)
2009年11月07日 星期六 11:03
~10:57 erl应该来作什么? - I/O密集型/先进的SMP多核支持的 *网络服务器*!!!(或是说专用的操作系统) - 为了证明这一感觉,进行了真实的OS 对比 - 各种组件完全可以和一个OS 的各个部件对应起来!~ etop?!?!? 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: > ~10:50 锋爷:Erlang应用优化指南 > - 网游公司,用erl 开发平台! > - 对于性能的苛求导致发现短连接响应领域 erl 绝对领先! > - Taskset -c 1 erl +K true +h 99999 +P 99999 -s ehttpd > - 严格理解了应用需求后,放弃了垃圾收集等等内置行为后,性能增加 110% > > > 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >> ~10:13 erl 开发中的逻辑问题解决... >> - 编译过,但是运行不过时的调试技巧! -> plt 的进一步自动分析,来定位可能的编辑问题 >> - 使用定制的 dialyzer 测试脚本,定位常见问题... >> - 进一步的,充分使用 EUnit 是个好思路... >> >> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>> ~10:05 注释约定! 模块用 %%% 前缀,函式用 %% 前缀... >>> - 遗憾的是:edoc 对中文支持不好 >>> - 嗯嗯嗯,建议使用 Doxygen 之类第3方专业文档化编程工具 >>> >>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>> ~10:01 Emakefile 内置的编译工具,比手工逐一make 可以获得一致性的自动统一编译; >>>> - 遗憾的是:只能编译.erl 的,无法依赖支持 >>>> - 所以,习惯的使用 GNU make,通过makeconf 进一步加强日常的erl 生产编译行为... >>>> - 而且可移植!... >>>> >>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>> ~09:55 昨日的讲师小聚照片:http://www.flickr.com/photos/zoomq/sets/72157622746793958/ >>>>> - appmon 内置的应用进程关系观察工具 >>>>> - 相当于JAVA的类树图自动分析,只是这里是对真实的网络进程间关系探测! >>>>> >>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>> ~09:50 gen_server 是个稳固的 S/C 框架,我们可以放心的在其上进行开发; >>>>>> - erl 进程是种抽象概念,是应用的最小单位 >>>>>> - 不要在gen_server 中进行复杂的处理,以免引发阻塞 >>>>>> - 这时使用 gen_fsm 这是专门进行处理可能有阻塞的进程处理框架 >>>>>> - 而且可以使用内置的相互监督模型进行进程脆崩后的自动处理 >>>>>> >>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>> ~09:45 讲演的幻灯在: >>>>>>> http://ecug.googlecode.com/svn/trunk/cn-erlounge/iv/litao.cheng/ >>>>>>> 当然提及OTP, gen_server 在实践中占到80% 的代码覆盖率,而且其它常用模式也都可用 gen_server 模拟出来! >>>>>>> >>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>> 嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈... >>>>>>>> 091107:: >>>>>>>> ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸) >>>>>>>> ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网 >>>>>>>> ~09:33 成立涛 - Erlang开发实践 >>>>>>>> N多内容,包含了所有 erl 开发过程中的所有关键实践体验.. > -- http://zoomquiet.org 人生苦短? Pythonic! 工作的层次(依靠谱程度从低到高)=有做->做完->做对->做好->帮助他人做好 -------------- 下一部分 -------------- A non-text attachment was scrubbed... Name: 2009-11-07-110244_649x527_scrot.png Type: image/png Size: 270823 bytes Desc: 不可用 URL: <http://www.zeuux.org/pipermail/zeuux-universe/attachments/20091107/ef67e005/attachment-0001.png>
2009年11月07日 星期六 11:11
~11:05 R12B~R13B 最大的变化在进程调度方面,增长了上万行代码! - 智能的进行了逻辑CPU 间的协同调度.. - erl进程是使用操作系统的真实线程 - 10000/s 的请求,引发的OS消息可以达到 600000/s 内核消息... - 调度的单位是 Port 引发的一组I/O事件 ~ erl的调度是由进程和Port 组成的... 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: > ~10:57 erl应该来作什么? > - I/O密集型/先进的SMP多核支持的 *网络服务器*!!!(或是说专用的操作系统) > - 为了证明这一感觉,进行了真实的OS 对比 > - 各种组件完全可以和一个OS 的各个部件对应起来!~ etop?!?!? > > 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >> ~10:50 锋爷:Erlang应用优化指南 >> - 网游公司,用erl 开发平台! >> - 对于性能的苛求导致发现短连接响应领域 erl 绝对领先! >> - Taskset -c 1 erl +K true +h 99999 +P 99999 -s ehttpd >> - 严格理解了应用需求后,放弃了垃圾收集等等内置行为后,性能增加 110% >> >> >> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>> ~10:13 erl 开发中的逻辑问题解决... >>> - 编译过,但是运行不过时的调试技巧! -> plt 的进一步自动分析,来定位可能的编辑问题 >>> - 使用定制的 dialyzer 测试脚本,定位常见问题... >>> - 进一步的,充分使用 EUnit 是个好思路... >>> >>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>> ~10:05 注释约定! 模块用 %%% 前缀,函式用 %% 前缀... >>>> - 遗憾的是:edoc 对中文支持不好 >>>> - 嗯嗯嗯,建议使用 Doxygen 之类第3方专业文档化编程工具 >>>> >>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>> ~10:01 Emakefile 内置的编译工具,比手工逐一make 可以获得一致性的自动统一编译; >>>>> - 遗憾的是:只能编译.erl 的,无法依赖支持 >>>>> - 所以,习惯的使用 GNU make,通过makeconf 进一步加强日常的erl 生产编译行为... >>>>> - 而且可移植!... >>>>> >>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>> ~09:55 昨日的讲师小聚照片:http://www.flickr.com/photos/zoomq/sets/72157622746793958/ >>>>>> - appmon 内置的应用进程关系观察工具 >>>>>> - 相当于JAVA的类树图自动分析,只是这里是对真实的网络进程间关系探测! >>>>>> >>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>> ~09:50 gen_server 是个稳固的 S/C 框架,我们可以放心的在其上进行开发; >>>>>>> - erl 进程是种抽象概念,是应用的最小单位 >>>>>>> - 不要在gen_server 中进行复杂的处理,以免引发阻塞 >>>>>>> - 这时使用 gen_fsm 这是专门进行处理可能有阻塞的进程处理框架 >>>>>>> - 而且可以使用内置的相互监督模型进行进程脆崩后的自动处理 >>>>>>> >>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>> ~09:45 讲演的幻灯在: >>>>>>>> http://ecug.googlecode.com/svn/trunk/cn-erlounge/iv/litao.cheng/ >>>>>>>> 当然提及OTP, gen_server 在实践中占到80% 的代码覆盖率,而且其它常用模式也都可用 gen_server 模拟出来! >>>>>>>> >>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>> 嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈... >>>>>>>>> 091107:: >>>>>>>>> ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸) >>>>>>>>> ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网 >>>>>>>>> ~09:33 成立涛 - Erlang开发实践 >>>>>>>>> N多内容,包含了所有 erl 开发过程中的所有关键实践体验.. -- http://zoomquiet.org 人生苦短? Pythonic! Time is unimportant, only life important!
2009年11月07日 星期六 11:14
~11:11 OS方面的选择优化: - 32位性能比64位好(64位没有内存限制,但是性能低20~30%) - RHEL 致力于高性能的挖掘>.. - 配置系统的swapness ,内存的OS预留等默认配置要向已知业务倾斜! - 绝大多数erl 死亡都是内存耗光... 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: > ~11:05 R12B~R13B 最大的变化在进程调度方面,增长了上万行代码! > - 智能的进行了逻辑CPU 间的协同调度.. > - erl进程是使用操作系统的真实线程 > - 10000/s 的请求,引发的OS消息可以达到 600000/s 内核消息... > - 调度的单位是 Port 引发的一组I/O事件 ~ erl的调度是由进程和Port 组成的... > > > 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >> ~10:57 erl应该来作什么? >> - I/O密集型/先进的SMP多核支持的 *网络服务器*!!!(或是说专用的操作系统) >> - 为了证明这一感觉,进行了真实的OS 对比 >> - 各种组件完全可以和一个OS 的各个部件对应起来!~ etop?!?!? >> >> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>> ~10:50 锋爷:Erlang应用优化指南 >>> - 网游公司,用erl 开发平台! >>> - 对于性能的苛求导致发现短连接响应领域 erl 绝对领先! >>> - Taskset -c 1 erl +K true +h 99999 +P 99999 -s ehttpd >>> - 严格理解了应用需求后,放弃了垃圾收集等等内置行为后,性能增加 110% >>> >>> >>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>> ~10:13 erl 开发中的逻辑问题解决... >>>> - 编译过,但是运行不过时的调试技巧! -> plt 的进一步自动分析,来定位可能的编辑问题 >>>> - 使用定制的 dialyzer 测试脚本,定位常见问题... >>>> - 进一步的,充分使用 EUnit 是个好思路... >>>> >>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>> ~10:05 注释约定! 模块用 %%% 前缀,函式用 %% 前缀... >>>>> - 遗憾的是:edoc 对中文支持不好 >>>>> - 嗯嗯嗯,建议使用 Doxygen 之类第3方专业文档化编程工具 >>>>> >>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>> ~10:01 Emakefile 内置的编译工具,比手工逐一make 可以获得一致性的自动统一编译; >>>>>> - 遗憾的是:只能编译.erl 的,无法依赖支持 >>>>>> - 所以,习惯的使用 GNU make,通过makeconf 进一步加强日常的erl 生产编译行为... >>>>>> - 而且可移植!... >>>>>> >>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>> ~09:55 昨日的讲师小聚照片:http://www.flickr.com/photos/zoomq/sets/72157622746793958/ >>>>>>> - appmon 内置的应用进程关系观察工具 >>>>>>> - 相当于JAVA的类树图自动分析,只是这里是对真实的网络进程间关系探测! >>>>>>> >>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>> ~09:50 gen_server 是个稳固的 S/C 框架,我们可以放心的在其上进行开发; >>>>>>>> - erl 进程是种抽象概念,是应用的最小单位 >>>>>>>> - 不要在gen_server 中进行复杂的处理,以免引发阻塞 >>>>>>>> - 这时使用 gen_fsm 这是专门进行处理可能有阻塞的进程处理框架 >>>>>>>> - 而且可以使用内置的相互监督模型进行进程脆崩后的自动处理 >>>>>>>> >>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>> ~09:45 讲演的幻灯在: >>>>>>>>> http://ecug.googlecode.com/svn/trunk/cn-erlounge/iv/litao.cheng/ >>>>>>>>> 当然提及OTP, gen_server 在实践中占到80% 的代码覆盖率,而且其它常用模式也都可用 gen_server 模拟出来! >>>>>>>>> >>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>> 嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈... >>>>>>>>>> 091107:: >>>>>>>>>> ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸) >>>>>>>>>> ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网 >>>>>>>>>> ~09:33 成立涛 - Erlang开发实践 >>>>>>>>>> N多内容,包含了所有 erl 开发过程中的所有关键实践体验.. -- http://zoomquiet.org 人生苦短? Pythonic! Free as in Freedom! 哲思社区:http://zeuux.com
2009年11月07日 星期六 11:21
~11:15 Hipe 虽然社区认为不稳定,但是实际应用时性能增强非常多!建议使用... - 可以省略很多系统特性 - 未公开的特性: 调度器绑定! ~ 高级特性,可以预先配置CPU 行为>.. 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: > ~11:11 OS方面的选择优化: > - 32位性能比64位好(64位没有内存限制,但是性能低20~30%) > - RHEL 致力于高性能的挖掘>.. > - 配置系统的swapness ,内存的OS预留等默认配置要向已知业务倾斜! > - 绝大多数erl 死亡都是内存耗光... > > 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >> ~11:05 R12B~R13B 最大的变化在进程调度方面,增长了上万行代码! >> - 智能的进行了逻辑CPU 间的协同调度.. >> - erl进程是使用操作系统的真实线程 >> - 10000/s 的请求,引发的OS消息可以达到 600000/s 内核消息... >> - 调度的单位是 Port 引发的一组I/O事件 ~ erl的调度是由进程和Port 组成的... >> >> >> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>> ~10:57 erl应该来作什么? >>> - I/O密集型/先进的SMP多核支持的 *网络服务器*!!!(或是说专用的操作系统) >>> - 为了证明这一感觉,进行了真实的OS 对比 >>> - 各种组件完全可以和一个OS 的各个部件对应起来!~ etop?!?!? >>> >>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>> ~10:50 锋爷:Erlang应用优化指南 >>>> - 网游公司,用erl 开发平台! >>>> - 对于性能的苛求导致发现短连接响应领域 erl 绝对领先! >>>> - Taskset -c 1 erl +K true +h 99999 +P 99999 -s ehttpd >>>> - 严格理解了应用需求后,放弃了垃圾收集等等内置行为后,性能增加 110% >>>> >>>> >>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>> ~10:13 erl 开发中的逻辑问题解决... >>>>> - 编译过,但是运行不过时的调试技巧! -> plt 的进一步自动分析,来定位可能的编辑问题 >>>>> - 使用定制的 dialyzer 测试脚本,定位常见问题... >>>>> - 进一步的,充分使用 EUnit 是个好思路... >>>>> >>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>> ~10:05 注释约定! 模块用 %%% 前缀,函式用 %% 前缀... >>>>>> - 遗憾的是:edoc 对中文支持不好 >>>>>> - 嗯嗯嗯,建议使用 Doxygen 之类第3方专业文档化编程工具 >>>>>> >>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>> ~10:01 Emakefile 内置的编译工具,比手工逐一make 可以获得一致性的自动统一编译; >>>>>>> - 遗憾的是:只能编译.erl 的,无法依赖支持 >>>>>>> - 所以,习惯的使用 GNU make,通过makeconf 进一步加强日常的erl 生产编译行为... >>>>>>> - 而且可移植!... >>>>>>> >>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>> ~09:55 昨日的讲师小聚照片:http://www.flickr.com/photos/zoomq/sets/72157622746793958/ >>>>>>>> - appmon 内置的应用进程关系观察工具 >>>>>>>> - 相当于JAVA的类树图自动分析,只是这里是对真实的网络进程间关系探测! >>>>>>>> >>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>> ~09:50 gen_server 是个稳固的 S/C 框架,我们可以放心的在其上进行开发; >>>>>>>>> - erl 进程是种抽象概念,是应用的最小单位 >>>>>>>>> - 不要在gen_server 中进行复杂的处理,以免引发阻塞 >>>>>>>>> - 这时使用 gen_fsm 这是专门进行处理可能有阻塞的进程处理框架 >>>>>>>>> - 而且可以使用内置的相互监督模型进行进程脆崩后的自动处理 >>>>>>>>> >>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>> ~09:45 讲演的幻灯在: >>>>>>>>>> http://ecug.googlecode.com/svn/trunk/cn-erlounge/iv/litao.cheng/ >>>>>>>>>> 当然提及OTP, gen_server 在实践中占到80% 的代码覆盖率,而且其它常用模式也都可用 gen_server 模拟出来! >>>>>>>>>> >>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>> 嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈... >>>>>>>>>>> 091107:: >>>>>>>>>>> ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸) >>>>>>>>>>> ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网 >>>>>>>>>>> ~09:33 成立涛 - Erlang开发实践 >>>>>>>>>>> N多内容,包含了所有 erl 开发过程中的所有关键实践体验.. > -- http://zoomquiet.org 人生苦短? Pythonic! 过程改进乃是催生可促生靠谱的人的组织! (ProcessEnhancement keeps evolving organizations which promoting people b...
2009年11月07日 星期六 11:33
~12:00 业务方面的优化: - 小消息大计算! - IO和计算的时间开销比,就是应用的性能收益比! - 对CPU和内存及早进行明显的分配! - 将业务和实际CPU 对应上,以免引发切换时间消耗... - 进程和物理世界的对象尽量 1:1 (erl 的对象控制级别是百万级别的!) - 多用ets ~ 大数据量推荐 - tuple/list/array 只能应作小数据量 - 尽量 *无锁结构* 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: > ~11:15 Hipe 虽然社区认为不稳定,但是实际应用时性能增强非常多!建议使用... > - 可以省略很多系统特性 > - 未公开的特性: 调度器绑定! ~ 高级特性,可以预先配置CPU 行为>.. > > 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >> ~11:11 OS方面的选择优化: >> - 32位性能比64位好(64位没有内存限制,但是性能低20~30%) >> - RHEL 致力于高性能的挖掘>.. >> - 配置系统的swapness ,内存的OS预留等默认配置要向已知业务倾斜! >> - 绝大多数erl 死亡都是内存耗光... >> >> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>> ~11:05 R12B~R13B 最大的变化在进程调度方面,增长了上万行代码! >>> - 智能的进行了逻辑CPU 间的协同调度.. >>> - erl进程是使用操作系统的真实线程 >>> - 10000/s 的请求,引发的OS消息可以达到 600000/s 内核消息... >>> - 调度的单位是 Port 引发的一组I/O事件 ~ erl的调度是由进程和Port 组成的... >>> >>> >>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>> ~10:57 erl应该来作什么? >>>> - I/O密集型/先进的SMP多核支持的 *网络服务器*!!!(或是说专用的操作系统) >>>> - 为了证明这一感觉,进行了真实的OS 对比 >>>> - 各种组件完全可以和一个OS 的各个部件对应起来!~ etop?!?!? >>>> >>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>> ~10:50 锋爷:Erlang应用优化指南 >>>>> - 网游公司,用erl 开发平台! >>>>> - 对于性能的苛求导致发现短连接响应领域 erl 绝对领先! >>>>> - Taskset -c 1 erl +K true +h 99999 +P 99999 -s ehttpd >>>>> - 严格理解了应用需求后,放弃了垃圾收集等等内置行为后,性能增加 110% >>>>> >>>>> >>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>> ~10:13 erl 开发中的逻辑问题解决... >>>>>> - 编译过,但是运行不过时的调试技巧! -> plt 的进一步自动分析,来定位可能的编辑问题 >>>>>> - 使用定制的 dialyzer 测试脚本,定位常见问题... >>>>>> - 进一步的,充分使用 EUnit 是个好思路... >>>>>> >>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>> ~10:05 注释约定! 模块用 %%% 前缀,函式用 %% 前缀... >>>>>>> - 遗憾的是:edoc 对中文支持不好 >>>>>>> - 嗯嗯嗯,建议使用 Doxygen 之类第3方专业文档化编程工具 >>>>>>> >>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>> ~10:01 Emakefile 内置的编译工具,比手工逐一make 可以获得一致性的自动统一编译; >>>>>>>> - 遗憾的是:只能编译.erl 的,无法依赖支持 >>>>>>>> - 所以,习惯的使用 GNU make,通过makeconf 进一步加强日常的erl 生产编译行为... >>>>>>>> - 而且可移植!... >>>>>>>> >>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>> ~09:55 昨日的讲师小聚照片:http://www.flickr.com/photos/zoomq/sets/72157622746793958/ >>>>>>>>> - appmon 内置的应用进程关系观察工具 >>>>>>>>> - 相当于JAVA的类树图自动分析,只是这里是对真实的网络进程间关系探测! >>>>>>>>> >>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>> ~09:50 gen_server 是个稳固的 S/C 框架,我们可以放心的在其上进行开发; >>>>>>>>>> - erl 进程是种抽象概念,是应用的最小单位 >>>>>>>>>> - 不要在gen_server 中进行复杂的处理,以免引发阻塞 >>>>>>>>>> - 这时使用 gen_fsm 这是专门进行处理可能有阻塞的进程处理框架 >>>>>>>>>> - 而且可以使用内置的相互监督模型进行进程脆崩后的自动处理 >>>>>>>>>> >>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>> ~09:45 讲演的幻灯在: >>>>>>>>>>> http://ecug.googlecode.com/svn/trunk/cn-erlounge/iv/litao.cheng/ >>>>>>>>>>> 当然提及OTP, gen_server 在实践中占到80% 的代码覆盖率,而且其它常用模式也都可用 gen_server 模拟出来! >>>>>>>>>>> >>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>> 嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈... >>>>>>>>>>>> 091107:: >>>>>>>>>>>> ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸) >>>>>>>>>>>> ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网 >>>>>>>>>>>> ~09:33 成立涛 - Erlang开发实践 >>>>>>>>>>>> N多内容,包含了所有 erl 开发过程中的所有关键实践体验.. -- http://zoomquiet.org 人生苦短? Pythonic! KM乃是培育可催生自学习型组织的文化氛围! (KM=Knowledge Management=知识管理)
2009年11月07日 星期六 11:44
~11:40 性能测量的关注: + erl/Erts/OS 的热点 - systemtap ~ 非入侵式旁观 - Erlang 工具集,非常丰富,非常关注内存的分配... - 十多种调度模式 - 200多种内存锁 lockcounter 就可以观察到问题集中点 - dbg ~ "ETrace";-) ... snmp 综合运行期情况 + 延迟变化 + 响应时间的抖动 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: > ~12:00 业务方面的优化: > - 小消息大计算! > - IO和计算的时间开销比,就是应用的性能收益比! > - 对CPU和内存及早进行明显的分配! > - 将业务和实际CPU 对应上,以免引发切换时间消耗... > - 进程和物理世界的对象尽量 1:1 (erl 的对象控制级别是百万级别的!) > - 多用ets ~ 大数据量推荐 > - tuple/list/array 只能应作小数据量 > - 尽量 *无锁结构* > > 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >> ~11:15 Hipe 虽然社区认为不稳定,但是实际应用时性能增强非常多!建议使用... >> - 可以省略很多系统特性 >> - 未公开的特性: 调度器绑定! ~ 高级特性,可以预先配置CPU 行为>.. >> >> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>> ~11:11 OS方面的选择优化: >>> - 32位性能比64位好(64位没有内存限制,但是性能低20~30%) >>> - RHEL 致力于高性能的挖掘>.. >>> - 配置系统的swapness ,内存的OS预留等默认配置要向已知业务倾斜! >>> - 绝大多数erl 死亡都是内存耗光... >>> >>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>> ~11:05 R12B~R13B 最大的变化在进程调度方面,增长了上万行代码! >>>> - 智能的进行了逻辑CPU 间的协同调度.. >>>> - erl进程是使用操作系统的真实线程 >>>> - 10000/s 的请求,引发的OS消息可以达到 600000/s 内核消息... >>>> - 调度的单位是 Port 引发的一组I/O事件 ~ erl的调度是由进程和Port 组成的... >>>> >>>> >>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>> ~10:57 erl应该来作什么? >>>>> - I/O密集型/先进的SMP多核支持的 *网络服务器*!!!(或是说专用的操作系统) >>>>> - 为了证明这一感觉,进行了真实的OS 对比 >>>>> - 各种组件完全可以和一个OS 的各个部件对应起来!~ etop?!?!? >>>>> >>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>> ~10:50 锋爷:Erlang应用优化指南 >>>>>> - 网游公司,用erl 开发平台! >>>>>> - 对于性能的苛求导致发现短连接响应领域 erl 绝对领先! >>>>>> - Taskset -c 1 erl +K true +h 99999 +P 99999 -s ehttpd >>>>>> - 严格理解了应用需求后,放弃了垃圾收集等等内置行为后,性能增加 110% >>>>>> >>>>>> >>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>> ~10:13 erl 开发中的逻辑问题解决... >>>>>>> - 编译过,但是运行不过时的调试技巧! -> plt 的进一步自动分析,来定位可能的编辑问题 >>>>>>> - 使用定制的 dialyzer 测试脚本,定位常见问题... >>>>>>> - 进一步的,充分使用 EUnit 是个好思路... >>>>>>> >>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>> ~10:05 注释约定! 模块用 %%% 前缀,函式用 %% 前缀... >>>>>>>> - 遗憾的是:edoc 对中文支持不好 >>>>>>>> - 嗯嗯嗯,建议使用 Doxygen 之类第3方专业文档化编程工具 >>>>>>>> >>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>> ~10:01 Emakefile 内置的编译工具,比手工逐一make 可以获得一致性的自动统一编译; >>>>>>>>> - 遗憾的是:只能编译.erl 的,无法依赖支持 >>>>>>>>> - 所以,习惯的使用 GNU make,通过makeconf 进一步加强日常的erl 生产编译行为... >>>>>>>>> - 而且可移植!... >>>>>>>>> >>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>> ~09:55 昨日的讲师小聚照片:http://www.flickr.com/photos/zoomq/sets/72157622746793958/ >>>>>>>>>> - appmon 内置的应用进程关系观察工具 >>>>>>>>>> - 相当于JAVA的类树图自动分析,只是这里是对真实的网络进程间关系探测! >>>>>>>>>> >>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>> ~09:50 gen_server 是个稳固的 S/C 框架,我们可以放心的在其上进行开发; >>>>>>>>>>> - erl 进程是种抽象概念,是应用的最小单位 >>>>>>>>>>> - 不要在gen_server 中进行复杂的处理,以免引发阻塞 >>>>>>>>>>> - 这时使用 gen_fsm 这是专门进行处理可能有阻塞的进程处理框架 >>>>>>>>>>> - 而且可以使用内置的相互监督模型进行进程脆崩后的自动处理 >>>>>>>>>>> >>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>> ~09:45 讲演的幻灯在: >>>>>>>>>>>> http://ecug.googlecode.com/svn/trunk/cn-erlounge/iv/litao.cheng/ >>>>>>>>>>>> 当然提及OTP, gen_server 在实践中占到80% 的代码覆盖率,而且其它常用模式也都可用 gen_server 模拟出来! >>>>>>>>>>>> >>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>>> 嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈... >>>>>>>>>>>>> 091107:: >>>>>>>>>>>>> ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸) >>>>>>>>>>>>> ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网 >>>>>>>>>>>>> ~09:33 成立涛 - Erlang开发实践 >>>>>>>>>>>>> N多内容,包含了所有 erl 开发过程中的所有关键实践体验.. -- http://zoomquiet.org 人生苦短? Pythonic! 工作的层次(依靠谱程度从低到高)=有做->做完->做对->做好->帮助他人做好 -------------- 下一部分 -------------- A non-text attachment was scrubbed... Name: 2009-11-07-114401_545x530_scrot.png Type: image/png Size: 113351 bytes Desc: 不可用 URL: <http://www.zeuux.org/pipermail/zeuux-universe/attachments/20091107/77ff61e8/attachment-0001.png>
2009年11月07日 星期六 11:52
~11:49 总结优化最佳体验 - 多用: + list comprehension + iolist /gather write + Binart > 256时,才引用计数(不用复制的!) + Hipe_bif 也可以考虑 - 不要用昂贵的BIF: - now() - io_lib:format 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: > ~11:40 性能测量的关注: > + erl/Erts/OS 的热点 > - systemtap ~ 非入侵式旁观 > - Erlang 工具集,非常丰富,非常关注内存的分配... > - 十多种调度模式 > - 200多种内存锁 lockcounter 就可以观察到问题集中点 > - dbg ~ "ETrace";-) > ... snmp 综合运行期情况 > + 延迟变化 > + 响应时间的抖动 > > > 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >> ~12:00 业务方面的优化: >> - 小消息大计算! >> - IO和计算的时间开销比,就是应用的性能收益比! >> - 对CPU和内存及早进行明显的分配! >> - 将业务和实际CPU 对应上,以免引发切换时间消耗... >> - 进程和物理世界的对象尽量 1:1 (erl 的对象控制级别是百万级别的!) >> - 多用ets ~ 大数据量推荐 >> - tuple/list/array 只能应作小数据量 >> - 尽量 *无锁结构* >> >> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>> ~11:15 Hipe 虽然社区认为不稳定,但是实际应用时性能增强非常多!建议使用... >>> - 可以省略很多系统特性 >>> - 未公开的特性: 调度器绑定! ~ 高级特性,可以预先配置CPU 行为>.. >>> >>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>> ~11:11 OS方面的选择优化: >>>> - 32位性能比64位好(64位没有内存限制,但是性能低20~30%) >>>> - RHEL 致力于高性能的挖掘>.. >>>> - 配置系统的swapness ,内存的OS预留等默认配置要向已知业务倾斜! >>>> - 绝大多数erl 死亡都是内存耗光... >>>> >>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>> ~11:05 R12B~R13B 最大的变化在进程调度方面,增长了上万行代码! >>>>> - 智能的进行了逻辑CPU 间的协同调度.. >>>>> - erl进程是使用操作系统的真实线程 >>>>> - 10000/s 的请求,引发的OS消息可以达到 600000/s 内核消息... >>>>> - 调度的单位是 Port 引发的一组I/O事件 ~ erl的调度是由进程和Port 组成的... >>>>> >>>>> >>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>> ~10:57 erl应该来作什么? >>>>>> - I/O密集型/先进的SMP多核支持的 *网络服务器*!!!(或是说专用的操作系统) >>>>>> - 为了证明这一感觉,进行了真实的OS 对比 >>>>>> - 各种组件完全可以和一个OS 的各个部件对应起来!~ etop?!?!? >>>>>> >>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>> ~10:50 锋爷:Erlang应用优化指南 >>>>>>> - 网游公司,用erl 开发平台! >>>>>>> - 对于性能的苛求导致发现短连接响应领域 erl 绝对领先! >>>>>>> - Taskset -c 1 erl +K true +h 99999 +P 99999 -s ehttpd >>>>>>> - 严格理解了应用需求后,放弃了垃圾收集等等内置行为后,性能增加 110% >>>>>>> >>>>>>> >>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>> ~10:13 erl 开发中的逻辑问题解决... >>>>>>>> - 编译过,但是运行不过时的调试技巧! -> plt 的进一步自动分析,来定位可能的编辑问题 >>>>>>>> - 使用定制的 dialyzer 测试脚本,定位常见问题... >>>>>>>> - 进一步的,充分使用 EUnit 是个好思路... >>>>>>>> >>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>> ~10:05 注释约定! 模块用 %%% 前缀,函式用 %% 前缀... >>>>>>>>> - 遗憾的是:edoc 对中文支持不好 >>>>>>>>> - 嗯嗯嗯,建议使用 Doxygen 之类第3方专业文档化编程工具 >>>>>>>>> >>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>> ~10:01 Emakefile 内置的编译工具,比手工逐一make 可以获得一致性的自动统一编译; >>>>>>>>>> - 遗憾的是:只能编译.erl 的,无法依赖支持 >>>>>>>>>> - 所以,习惯的使用 GNU make,通过makeconf 进一步加强日常的erl 生产编译行为... >>>>>>>>>> - 而且可移植!... >>>>>>>>>> >>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>> ~09:55 昨日的讲师小聚照片:http://www.flickr.com/photos/zoomq/sets/72157622746793958/ >>>>>>>>>>> - appmon 内置的应用进程关系观察工具 >>>>>>>>>>> - 相当于JAVA的类树图自动分析,只是这里是对真实的网络进程间关系探测! >>>>>>>>>>> >>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>> ~09:50 gen_server 是个稳固的 S/C 框架,我们可以放心的在其上进行开发; >>>>>>>>>>>> - erl 进程是种抽象概念,是应用的最小单位 >>>>>>>>>>>> - 不要在gen_server 中进行复杂的处理,以免引发阻塞 >>>>>>>>>>>> - 这时使用 gen_fsm 这是专门进行处理可能有阻塞的进程处理框架 >>>>>>>>>>>> - 而且可以使用内置的相互监督模型进行进程脆崩后的自动处理 >>>>>>>>>>>> >>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>>> ~09:45 讲演的幻灯在: >>>>>>>>>>>>> http://ecug.googlecode.com/svn/trunk/cn-erlounge/iv/litao.cheng/ >>>>>>>>>>>>> 当然提及OTP, gen_server 在实践中占到80% 的代码覆盖率,而且其它常用模式也都可用 gen_server 模拟出来! >>>>>>>>>>>>> >>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>>>> 嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈... >>>>>>>>>>>>>> 091107:: >>>>>>>>>>>>>> ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸) >>>>>>>>>>>>>> ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网 >>>>>>>>>>>>>> ~09:33 成立涛 - Erlang开发实践 >>>>>>>>>>>>>> N多内容,包含了所有 erl 开发过程中的所有关键实践体验.. -- http://zoomquiet.org 人生苦短? Pythonic! usage 7-zip to replace WinRAR/WinZip; You can get the truely Freedom 4 software.
2009年11月07日 星期六 12:00
~11:59 CPU亲缘性利用! - Taskset ~ 如果业务明确后,令CPU 对于业务运行从来没有竞争锁,性能将提高 50%以上! - 启动OS的内置特性 + Futex + VDSO + TCP/IP 协议桟... - 大文件句柄(只应微调,根据业务的) 有两面性.. port 等数据结构会自动调整,引发意外操作.. - 基于测试的持续调优! 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: > ~11:49 总结优化最佳体验 > - 多用: > + list comprehension > + iolist /gather write > + Binart > 256时,才引用计数(不用复制的!) > + Hipe_bif 也可以考虑 > - 不要用昂贵的BIF: > - now() > - io_lib:format > > 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >> ~11:40 性能测量的关注: >> + erl/Erts/OS 的热点 >> - systemtap ~ 非入侵式旁观 >> - Erlang 工具集,非常丰富,非常关注内存的分配... >> - 十多种调度模式 >> - 200多种内存锁 lockcounter 就可以观察到问题集中点 >> - dbg ~ "ETrace";-) >> ... snmp 综合运行期情况 >> + 延迟变化 >> + 响应时间的抖动 >> >> >> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>> ~12:00 业务方面的优化: >>> - 小消息大计算! >>> - IO和计算的时间开销比,就是应用的性能收益比! >>> - 对CPU和内存及早进行明显的分配! >>> - 将业务和实际CPU 对应上,以免引发切换时间消耗... >>> - 进程和物理世界的对象尽量 1:1 (erl 的对象控制级别是百万级别的!) >>> - 多用ets ~ 大数据量推荐 >>> - tuple/list/array 只能应作小数据量 >>> - 尽量 *无锁结构* >>> >>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>> ~11:15 Hipe 虽然社区认为不稳定,但是实际应用时性能增强非常多!建议使用... >>>> - 可以省略很多系统特性 >>>> - 未公开的特性: 调度器绑定! ~ 高级特性,可以预先配置CPU 行为>.. >>>> >>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>> ~11:11 OS方面的选择优化: >>>>> - 32位性能比64位好(64位没有内存限制,但是性能低20~30%) >>>>> - RHEL 致力于高性能的挖掘>.. >>>>> - 配置系统的swapness ,内存的OS预留等默认配置要向已知业务倾斜! >>>>> - 绝大多数erl 死亡都是内存耗光... >>>>> >>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>> ~11:05 R12B~R13B 最大的变化在进程调度方面,增长了上万行代码! >>>>>> - 智能的进行了逻辑CPU 间的协同调度.. >>>>>> - erl进程是使用操作系统的真实线程 >>>>>> - 10000/s 的请求,引发的OS消息可以达到 600000/s 内核消息... >>>>>> - 调度的单位是 Port 引发的一组I/O事件 ~ erl的调度是由进程和Port 组成的... >>>>>> >>>>>> >>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>> ~10:57 erl应该来作什么? >>>>>>> - I/O密集型/先进的SMP多核支持的 *网络服务器*!!!(或是说专用的操作系统) >>>>>>> - 为了证明这一感觉,进行了真实的OS 对比 >>>>>>> - 各种组件完全可以和一个OS 的各个部件对应起来!~ etop?!?!? >>>>>>> >>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>> ~10:50 锋爷:Erlang应用优化指南 >>>>>>>> - 网游公司,用erl 开发平台! >>>>>>>> - 对于性能的苛求导致发现短连接响应领域 erl 绝对领先! >>>>>>>> - Taskset -c 1 erl +K true +h 99999 +P 99999 -s ehttpd >>>>>>>> - 严格理解了应用需求后,放弃了垃圾收集等等内置行为后,性能增加 110% >>>>>>>> >>>>>>>> >>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>> ~10:13 erl 开发中的逻辑问题解决... >>>>>>>>> - 编译过,但是运行不过时的调试技巧! -> plt 的进一步自动分析,来定位可能的编辑问题 >>>>>>>>> - 使用定制的 dialyzer 测试脚本,定位常见问题... >>>>>>>>> - 进一步的,充分使用 EUnit 是个好思路... >>>>>>>>> >>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>> ~10:05 注释约定! 模块用 %%% 前缀,函式用 %% 前缀... >>>>>>>>>> - 遗憾的是:edoc 对中文支持不好 >>>>>>>>>> - 嗯嗯嗯,建议使用 Doxygen 之类第3方专业文档化编程工具 >>>>>>>>>> >>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>> ~10:01 Emakefile 内置的编译工具,比手工逐一make 可以获得一致性的自动统一编译; >>>>>>>>>>> - 遗憾的是:只能编译.erl 的,无法依赖支持 >>>>>>>>>>> - 所以,习惯的使用 GNU make,通过makeconf 进一步加强日常的erl 生产编译行为... >>>>>>>>>>> - 而且可移植!... >>>>>>>>>>> >>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>> ~09:55 昨日的讲师小聚照片:http://www.flickr.com/photos/zoomq/sets/72157622746793958/ >>>>>>>>>>>> - appmon 内置的应用进程关系观察工具 >>>>>>>>>>>> - 相当于JAVA的类树图自动分析,只是这里是对真实的网络进程间关系探测! >>>>>>>>>>>> >>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>>> ~09:50 gen_server 是个稳固的 S/C 框架,我们可以放心的在其上进行开发; >>>>>>>>>>>>> - erl 进程是种抽象概念,是应用的最小单位 >>>>>>>>>>>>> - 不要在gen_server 中进行复杂的处理,以免引发阻塞 >>>>>>>>>>>>> - 这时使用 gen_fsm 这是专门进行处理可能有阻塞的进程处理框架 >>>>>>>>>>>>> - 而且可以使用内置的相互监督模型进行进程脆崩后的自动处理 >>>>>>>>>>>>> >>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>>>> ~09:45 讲演的幻灯在: >>>>>>>>>>>>>> http://ecug.googlecode.com/svn/trunk/cn-erlounge/iv/litao.cheng/ >>>>>>>>>>>>>> 当然提及OTP, gen_server 在实践中占到80% 的代码覆盖率,而且其它常用模式也都可用 gen_server 模拟出来! >>>>>>>>>>>>>> >>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>>>>> 嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈... >>>>>>>>>>>>>>> 091107:: >>>>>>>>>>>>>>> ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸) >>>>>>>>>>>>>>> ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网 >>>>>>>>>>>>>>> ~09:33 成立涛 - Erlang开发实践 >>>>>>>>>>>>>>> N多内容,包含了所有 erl 开发过程中的所有关键实践体验.. -- http://zoomquiet.org 人生苦短? Pythonic! 金山常年招聘Py/C++人才! http://bit.ly/UoTV 简历直投俺就成;-)
2009年11月07日 星期六 12:10
~12:05 可诊断的系统 - 有内部信息暴露的,参数可动态调节的! - 测试自动的,有高压力环境的 - 尽可能的发挥 erts 的优势:: + 用Ports 整合不同语言系统 + 用 driver 改写关键性能苛求部分 + 使用标准协议方便erl 自然处理(Asn.1),使用内置的高级特性... - 锁是实际存在的... + 尽量减少这方面的代码... 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: > ~11:59 CPU亲缘性利用! > - Taskset ~ 如果业务明确后,令CPU 对于业务运行从来没有竞争锁,性能将提高 50%以上! > - 启动OS的内置特性 > + Futex > + VDSO > + TCP/IP 协议桟... > - 大文件句柄(只应微调,根据业务的) 有两面性.. port 等数据结构会自动调整,引发意外操作.. > - 基于测试的持续调优! > > > 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >> ~11:49 总结优化最佳体验 >> - 多用: >> + list comprehension >> + iolist /gather write >> + Binart > 256时,才引用计数(不用复制的!) >> + Hipe_bif 也可以考虑 >> - 不要用昂贵的BIF: >> - now() >> - io_lib:format >> >> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>> ~11:40 性能测量的关注: >>> + erl/Erts/OS 的热点 >>> - systemtap ~ 非入侵式旁观 >>> - Erlang 工具集,非常丰富,非常关注内存的分配... >>> - 十多种调度模式 >>> - 200多种内存锁 lockcounter 就可以观察到问题集中点 >>> - dbg ~ "ETrace";-) >>> ... snmp 综合运行期情况 >>> + 延迟变化 >>> + 响应时间的抖动 >>> >>> >>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>> ~12:00 业务方面的优化: >>>> - 小消息大计算! >>>> - IO和计算的时间开销比,就是应用的性能收益比! >>>> - 对CPU和内存及早进行明显的分配! >>>> - 将业务和实际CPU 对应上,以免引发切换时间消耗... >>>> - 进程和物理世界的对象尽量 1:1 (erl 的对象控制级别是百万级别的!) >>>> - 多用ets ~ 大数据量推荐 >>>> - tuple/list/array 只能应作小数据量 >>>> - 尽量 *无锁结构* >>>> >>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>> ~11:15 Hipe 虽然社区认为不稳定,但是实际应用时性能增强非常多!建议使用... >>>>> - 可以省略很多系统特性 >>>>> - 未公开的特性: 调度器绑定! ~ 高级特性,可以预先配置CPU 行为>.. >>>>> >>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>> ~11:11 OS方面的选择优化: >>>>>> - 32位性能比64位好(64位没有内存限制,但是性能低20~30%) >>>>>> - RHEL 致力于高性能的挖掘>.. >>>>>> - 配置系统的swapness ,内存的OS预留等默认配置要向已知业务倾斜! >>>>>> - 绝大多数erl 死亡都是内存耗光... >>>>>> >>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>> ~11:05 R12B~R13B 最大的变化在进程调度方面,增长了上万行代码! >>>>>>> - 智能的进行了逻辑CPU 间的协同调度.. >>>>>>> - erl进程是使用操作系统的真实线程 >>>>>>> - 10000/s 的请求,引发的OS消息可以达到 600000/s 内核消息... >>>>>>> - 调度的单位是 Port 引发的一组I/O事件 ~ erl的调度是由进程和Port 组成的... >>>>>>> >>>>>>> >>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>> ~10:57 erl应该来作什么? >>>>>>>> - I/O密集型/先进的SMP多核支持的 *网络服务器*!!!(或是说专用的操作系统) >>>>>>>> - 为了证明这一感觉,进行了真实的OS 对比 >>>>>>>> - 各种组件完全可以和一个OS 的各个部件对应起来!~ etop?!?!? >>>>>>>> >>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>> ~10:50 锋爷:Erlang应用优化指南 >>>>>>>>> - 网游公司,用erl 开发平台! >>>>>>>>> - 对于性能的苛求导致发现短连接响应领域 erl 绝对领先! >>>>>>>>> - Taskset -c 1 erl +K true +h 99999 +P 99999 -s ehttpd >>>>>>>>> - 严格理解了应用需求后,放弃了垃圾收集等等内置行为后,性能增加 110% >>>>>>>>> >>>>>>>>> >>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>> ~10:13 erl 开发中的逻辑问题解决... >>>>>>>>>> - 编译过,但是运行不过时的调试技巧! -> plt 的进一步自动分析,来定位可能的编辑问题 >>>>>>>>>> - 使用定制的 dialyzer 测试脚本,定位常见问题... >>>>>>>>>> - 进一步的,充分使用 EUnit 是个好思路... >>>>>>>>>> >>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>> ~10:05 注释约定! 模块用 %%% 前缀,函式用 %% 前缀... >>>>>>>>>>> - 遗憾的是:edoc 对中文支持不好 >>>>>>>>>>> - 嗯嗯嗯,建议使用 Doxygen 之类第3方专业文档化编程工具 >>>>>>>>>>> >>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>> ~10:01 Emakefile 内置的编译工具,比手工逐一make 可以获得一致性的自动统一编译; >>>>>>>>>>>> - 遗憾的是:只能编译.erl 的,无法依赖支持 >>>>>>>>>>>> - 所以,习惯的使用 GNU make,通过makeconf 进一步加强日常的erl 生产编译行为... >>>>>>>>>>>> - 而且可移植!... >>>>>>>>>>>> >>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>>> ~09:55 昨日的讲师小聚照片:http://www.flickr.com/photos/zoomq/sets/72157622746793958/ >>>>>>>>>>>>> - appmon 内置的应用进程关系观察工具 >>>>>>>>>>>>> - 相当于JAVA的类树图自动分析,只是这里是对真实的网络进程间关系探测! >>>>>>>>>>>>> >>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>>>> ~09:50 gen_server 是个稳固的 S/C 框架,我们可以放心的在其上进行开发; >>>>>>>>>>>>>> - erl 进程是种抽象概念,是应用的最小单位 >>>>>>>>>>>>>> - 不要在gen_server 中进行复杂的处理,以免引发阻塞 >>>>>>>>>>>>>> - 这时使用 gen_fsm 这是专门进行处理可能有阻塞的进程处理框架 >>>>>>>>>>>>>> - 而且可以使用内置的相互监督模型进行进程脆崩后的自动处理 >>>>>>>>>>>>>> >>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>>>>> ~09:45 讲演的幻灯在: >>>>>>>>>>>>>>> http://ecug.googlecode.com/svn/trunk/cn-erlounge/iv/litao.cheng/ >>>>>>>>>>>>>>> 当然提及OTP, gen_server 在实践中占到80% 的代码覆盖率,而且其它常用模式也都可用 gen_server 模拟出来! >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>>>>>> 嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈... >>>>>>>>>>>>>>>> 091107:: >>>>>>>>>>>>>>>> ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸) >>>>>>>>>>>>>>>> ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网 >>>>>>>>>>>>>>>> ~09:33 成立涛 - Erlang开发实践 >>>>>>>>>>>>>>>> N多内容,包含了所有 erl 开发过程中的所有关键实践体验.. -- http://zoomquiet.org 人生苦短? Pythonic! 向靠谱,反脑残! Kaopulity,小白退散! [Kaopulity~= Keep all processes usablity!]
2009年11月07日 星期六 12:26
~12:17 Q&A;: - Q:ets 的使用策略? - A:策略!业务决定,在理解erl运行本质后,就容易判决了... - Q:百万级应用中,总是有单点node 怎么搞? - A:OTP 本身就一直存在这种问题! + 尝试使用多个进程来解决 + 建议在另外一个VM 中进行处理...进行批量的消息移交(共享内存...),而且可以不用erl 的消息处理 - xiu+A:如果请求间关联不大时,可以使用进程池; + 如果有关联时(同资源操作时),晚上有说 - Q:小消息原则,怎么把握? - A:是指消息传递开销小! <5ms - 消息传递时间和计算时间比例 > 1:10 才有意义 - Q:DB方面的操作有不? - A:有很多: + ets 内存DB; + Monisa 内置K/V DB + 外部关系数据库的支持不在Erl 哲学中... 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: > ~12:05 可诊断的系统 > - 有内部信息暴露的,参数可动态调节的! > - 测试自动的,有高压力环境的 > - 尽可能的发挥 erts 的优势:: > + 用Ports 整合不同语言系统 > + 用 driver 改写关键性能苛求部分 > + 使用标准协议方便erl 自然处理(Asn.1),使用内置的高级特性... > - 锁是实际存在的... > + 尽量减少这方面的代码... > > 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >> ~11:59 CPU亲缘性利用! >> - Taskset ~ 如果业务明确后,令CPU 对于业务运行从来没有竞争锁,性能将提高 50%以上! >> - 启动OS的内置特性 >> + Futex >> + VDSO >> + TCP/IP 协议桟... >> - 大文件句柄(只应微调,根据业务的) 有两面性.. port 等数据结构会自动调整,引发意外操作.. >> - 基于测试的持续调优! >> >> >> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>> ~11:49 总结优化最佳体验 >>> - 多用: >>> + list comprehension >>> + iolist /gather write >>> + Binart > 256时,才引用计数(不用复制的!) >>> + Hipe_bif 也可以考虑 >>> - 不要用昂贵的BIF: >>> - now() >>> - io_lib:format >>> >>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>> ~11:40 性能测量的关注: >>>> + erl/Erts/OS 的热点 >>>> - systemtap ~ 非入侵式旁观 >>>> - Erlang 工具集,非常丰富,非常关注内存的分配... >>>> - 十多种调度模式 >>>> - 200多种内存锁 lockcounter 就可以观察到问题集中点 >>>> - dbg ~ "ETrace";-) >>>> ... snmp 综合运行期情况 >>>> + 延迟变化 >>>> + 响应时间的抖动 >>>> >>>> >>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>> ~12:00 业务方面的优化: >>>>> - 小消息大计算! >>>>> - IO和计算的时间开销比,就是应用的性能收益比! >>>>> - 对CPU和内存及早进行明显的分配! >>>>> - 将业务和实际CPU 对应上,以免引发切换时间消耗... >>>>> - 进程和物理世界的对象尽量 1:1 (erl 的对象控制级别是百万级别的!) >>>>> - 多用ets ~ 大数据量推荐 >>>>> - tuple/list/array 只能应作小数据量 >>>>> - 尽量 *无锁结构* >>>>> >>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>> ~11:15 Hipe 虽然社区认为不稳定,但是实际应用时性能增强非常多!建议使用... >>>>>> - 可以省略很多系统特性 >>>>>> - 未公开的特性: 调度器绑定! ~ 高级特性,可以预先配置CPU 行为>.. >>>>>> >>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>> ~11:11 OS方面的选择优化: >>>>>>> - 32位性能比64位好(64位没有内存限制,但是性能低20~30%) >>>>>>> - RHEL 致力于高性能的挖掘>.. >>>>>>> - 配置系统的swapness ,内存的OS预留等默认配置要向已知业务倾斜! >>>>>>> - 绝大多数erl 死亡都是内存耗光... >>>>>>> >>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>> ~11:05 R12B~R13B 最大的变化在进程调度方面,增长了上万行代码! >>>>>>>> - 智能的进行了逻辑CPU 间的协同调度.. >>>>>>>> - erl进程是使用操作系统的真实线程 >>>>>>>> - 10000/s 的请求,引发的OS消息可以达到 600000/s 内核消息... >>>>>>>> - 调度的单位是 Port 引发的一组I/O事件 ~ erl的调度是由进程和Port 组成的... >>>>>>>> >>>>>>>> >>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>> ~10:57 erl应该来作什么? >>>>>>>>> - I/O密集型/先进的SMP多核支持的 *网络服务器*!!!(或是说专用的操作系统) >>>>>>>>> - 为了证明这一感觉,进行了真实的OS 对比 >>>>>>>>> - 各种组件完全可以和一个OS 的各个部件对应起来!~ etop?!?!? >>>>>>>>> >>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>> ~10:50 锋爷:Erlang应用优化指南 >>>>>>>>>> - 网游公司,用erl 开发平台! >>>>>>>>>> - 对于性能的苛求导致发现短连接响应领域 erl 绝对领先! >>>>>>>>>> - Taskset -c 1 erl +K true +h 99999 +P 99999 -s ehttpd >>>>>>>>>> - 严格理解了应用需求后,放弃了垃圾收集等等内置行为后,性能增加 110% >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>> ~10:13 erl 开发中的逻辑问题解决... >>>>>>>>>>> - 编译过,但是运行不过时的调试技巧! -> plt 的进一步自动分析,来定位可能的编辑问题 >>>>>>>>>>> - 使用定制的 dialyzer 测试脚本,定位常见问题... >>>>>>>>>>> - 进一步的,充分使用 EUnit 是个好思路... >>>>>>>>>>> >>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>> ~10:05 注释约定! 模块用 %%% 前缀,函式用 %% 前缀... >>>>>>>>>>>> - 遗憾的是:edoc 对中文支持不好 >>>>>>>>>>>> - 嗯嗯嗯,建议使用 Doxygen 之类第3方专业文档化编程工具 >>>>>>>>>>>> >>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>>> ~10:01 Emakefile 内置的编译工具,比手工逐一make 可以获得一致性的自动统一编译; >>>>>>>>>>>>> - 遗憾的是:只能编译.erl 的,无法依赖支持 >>>>>>>>>>>>> - 所以,习惯的使用 GNU make,通过makeconf 进一步加强日常的erl 生产编译行为... >>>>>>>>>>>>> - 而且可移植!... >>>>>>>>>>>>> >>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>>>> ~09:55 昨日的讲师小聚照片:http://www.flickr.com/photos/zoomq/sets/72157622746793958/ >>>>>>>>>>>>>> - appmon 内置的应用进程关系观察工具 >>>>>>>>>>>>>> - 相当于JAVA的类树图自动分析,只是这里是对真实的网络进程间关系探测! >>>>>>>>>>>>>> >>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>>>>> ~09:50 gen_server 是个稳固的 S/C 框架,我们可以放心的在其上进行开发; >>>>>>>>>>>>>>> - erl 进程是种抽象概念,是应用的最小单位 >>>>>>>>>>>>>>> - 不要在gen_server 中进行复杂的处理,以免引发阻塞 >>>>>>>>>>>>>>> - 这时使用 gen_fsm 这是专门进行处理可能有阻塞的进程处理框架 >>>>>>>>>>>>>>> - 而且可以使用内置的相互监督模型进行进程脆崩后的自动处理 >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>>>>>> ~09:45 讲演的幻灯在: >>>>>>>>>>>>>>>> http://ecug.googlecode.com/svn/trunk/cn-erlounge/iv/litao.cheng/ >>>>>>>>>>>>>>>> 当然提及OTP, gen_server 在实践中占到80% 的代码覆盖率,而且其它常用模式也都可用 gen_server 模拟出来! >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>>>>>>> 嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈... >>>>>>>>>>>>>>>>> 091107:: >>>>>>>>>>>>>>>>> ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸) >>>>>>>>>>>>>>>>> ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网 >>>>>>>>>>>>>>>>> ~09:33 成立涛 - Erlang开发实践 >>>>>>>>>>>>>>>>> N多内容,包含了所有 erl 开发过程中的所有关键实践体验.. -- http://zoomquiet.org 人生苦短? Pythonic! 一个人如果力求完善自己,就会看到:为此也必须同时完善他人. 一个人如果不关心别人的完善,自己便不可能完善!
2009年11月07日 星期六 12:39
~12:30 热烈的进行提问,锋爷的实战体验分享,引爆了好奇心... - Q: 加密怎好? - A: driver 沟通外部NB模块! - Q: 小消息原则应用策略? - A: cfg 要特别关注...(原先的 get 方式消耗非常不合算) + 先 ets 读入 cfg ,并代理进行维护 + 其它进程来读ets - ~ 分享自个儿的经验: + 关系DB 的访问,策略 - MySQL 的erl 驱动可以用 - 先用erl 的DB - 尽量用 存储过程来计算 + Asn.1 的标准比 SOAP 要靠谱!得多用! - 门槛是 概念和一般的不同 - 电信工业标准,资料也少... 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: > ~12:17 Q&A;: > - Q:ets 的使用策略? > - A:策略!业务决定,在理解erl运行本质后,就容易判决了... > > - Q:百万级应用中,总是有单点node 怎么搞? > - A:OTP 本身就一直存在这种问题! > + 尝试使用多个进程来解决 > + 建议在另外一个VM 中进行处理...进行批量的消息移交(共享内存...),而且可以不用erl 的消息处理 > - xiu+A:如果请求间关联不大时,可以使用进程池; > + 如果有关联时(同资源操作时),晚上有说 > > - Q:小消息原则,怎么把握? > - A:是指消息传递开销小! <5ms > - 消息传递时间和计算时间比例 > 1:10 才有意义 > > - Q:DB方面的操作有不? > - A:有很多: > + ets 内存DB; > + Monisa 内置K/V DB > + 外部关系数据库的支持不在Erl 哲学中... > > > 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >> ~12:05 可诊断的系统 >> - 有内部信息暴露的,参数可动态调节的! >> - 测试自动的,有高压力环境的 >> - 尽可能的发挥 erts 的优势:: >> + 用Ports 整合不同语言系统 >> + 用 driver 改写关键性能苛求部分 >> + 使用标准协议方便erl 自然处理(Asn.1),使用内置的高级特性... >> - 锁是实际存在的... >> + 尽量减少这方面的代码... >> >> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>> ~11:59 CPU亲缘性利用! >>> - Taskset ~ 如果业务明确后,令CPU 对于业务运行从来没有竞争锁,性能将提高 50%以上! >>> - 启动OS的内置特性 >>> + Futex >>> + VDSO >>> + TCP/IP 协议桟... >>> - 大文件句柄(只应微调,根据业务的) 有两面性.. port 等数据结构会自动调整,引发意外操作.. >>> - 基于测试的持续调优! >>> >>> >>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>> ~11:49 总结优化最佳体验 >>>> - 多用: >>>> + list comprehension >>>> + iolist /gather write >>>> + Binart > 256时,才引用计数(不用复制的!) >>>> + Hipe_bif 也可以考虑 >>>> - 不要用昂贵的BIF: >>>> - now() >>>> - io_lib:format >>>> >>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>> ~11:40 性能测量的关注: >>>>> + erl/Erts/OS 的热点 >>>>> - systemtap ~ 非入侵式旁观 >>>>> - Erlang 工具集,非常丰富,非常关注内存的分配... >>>>> - 十多种调度模式 >>>>> - 200多种内存锁 lockcounter 就可以观察到问题集中点 >>>>> - dbg ~ "ETrace";-) >>>>> ... snmp 综合运行期情况 >>>>> + 延迟变化 >>>>> + 响应时间的抖动 >>>>> >>>>> >>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>> ~12:00 业务方面的优化: >>>>>> - 小消息大计算! >>>>>> - IO和计算的时间开销比,就是应用的性能收益比! >>>>>> - 对CPU和内存及早进行明显的分配! >>>>>> - 将业务和实际CPU 对应上,以免引发切换时间消耗... >>>>>> - 进程和物理世界的对象尽量 1:1 (erl 的对象控制级别是百万级别的!) >>>>>> - 多用ets ~ 大数据量推荐 >>>>>> - tuple/list/array 只能应作小数据量 >>>>>> - 尽量 *无锁结构* >>>>>> >>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>> ~11:15 Hipe 虽然社区认为不稳定,但是实际应用时性能增强非常多!建议使用... >>>>>>> - 可以省略很多系统特性 >>>>>>> - 未公开的特性: 调度器绑定! ~ 高级特性,可以预先配置CPU 行为>.. >>>>>>> >>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>> ~11:11 OS方面的选择优化: >>>>>>>> - 32位性能比64位好(64位没有内存限制,但是性能低20~30%) >>>>>>>> - RHEL 致力于高性能的挖掘>.. >>>>>>>> - 配置系统的swapness ,内存的OS预留等默认配置要向已知业务倾斜! >>>>>>>> - 绝大多数erl 死亡都是内存耗光... >>>>>>>> >>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>> ~11:05 R12B~R13B 最大的变化在进程调度方面,增长了上万行代码! >>>>>>>>> - 智能的进行了逻辑CPU 间的协同调度.. >>>>>>>>> - erl进程是使用操作系统的真实线程 >>>>>>>>> - 10000/s 的请求,引发的OS消息可以达到 600000/s 内核消息... >>>>>>>>> - 调度的单位是 Port 引发的一组I/O事件 ~ erl的调度是由进程和Port 组成的... >>>>>>>>> >>>>>>>>> >>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>> ~10:57 erl应该来作什么? >>>>>>>>>> - I/O密集型/先进的SMP多核支持的 *网络服务器*!!!(或是说专用的操作系统) >>>>>>>>>> - 为了证明这一感觉,进行了真实的OS 对比 >>>>>>>>>> - 各种组件完全可以和一个OS 的各个部件对应起来!~ etop?!?!? >>>>>>>>>> >>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>> ~10:50 锋爷:Erlang应用优化指南 >>>>>>>>>>> - 网游公司,用erl 开发平台! >>>>>>>>>>> - 对于性能的苛求导致发现短连接响应领域 erl 绝对领先! >>>>>>>>>>> - Taskset -c 1 erl +K true +h 99999 +P 99999 -s ehttpd >>>>>>>>>>> - 严格理解了应用需求后,放弃了垃圾收集等等内置行为后,性能增加 110% >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>> ~10:13 erl 开发中的逻辑问题解决... >>>>>>>>>>>> - 编译过,但是运行不过时的调试技巧! -> plt 的进一步自动分析,来定位可能的编辑问题 >>>>>>>>>>>> - 使用定制的 dialyzer 测试脚本,定位常见问题... >>>>>>>>>>>> - 进一步的,充分使用 EUnit 是个好思路... >>>>>>>>>>>> >>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>>> ~10:05 注释约定! 模块用 %%% 前缀,函式用 %% 前缀... >>>>>>>>>>>>> - 遗憾的是:edoc 对中文支持不好 >>>>>>>>>>>>> - 嗯嗯嗯,建议使用 Doxygen 之类第3方专业文档化编程工具 >>>>>>>>>>>>> >>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>>>> ~10:01 Emakefile 内置的编译工具,比手工逐一make 可以获得一致性的自动统一编译; >>>>>>>>>>>>>> - 遗憾的是:只能编译.erl 的,无法依赖支持 >>>>>>>>>>>>>> - 所以,习惯的使用 GNU make,通过makeconf 进一步加强日常的erl 生产编译行为... >>>>>>>>>>>>>> - 而且可移植!... >>>>>>>>>>>>>> >>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>>>>> ~09:55 昨日的讲师小聚照片:http://www.flickr.com/photos/zoomq/sets/72157622746793958/ >>>>>>>>>>>>>>> - appmon 内置的应用进程关系观察工具 >>>>>>>>>>>>>>> - 相当于JAVA的类树图自动分析,只是这里是对真实的网络进程间关系探测! >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>>>>>> ~09:50 gen_server 是个稳固的 S/C 框架,我们可以放心的在其上进行开发; >>>>>>>>>>>>>>>> - erl 进程是种抽象概念,是应用的最小单位 >>>>>>>>>>>>>>>> - 不要在gen_server 中进行复杂的处理,以免引发阻塞 >>>>>>>>>>>>>>>> - 这时使用 gen_fsm 这是专门进行处理可能有阻塞的进程处理框架 >>>>>>>>>>>>>>>> - 而且可以使用内置的相互监督模型进行进程脆崩后的自动处理 >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>>>>>>> ~09:45 讲演的幻灯在: >>>>>>>>>>>>>>>>> http://ecug.googlecode.com/svn/trunk/cn-erlounge/iv/litao.cheng/ >>>>>>>>>>>>>>>>> 当然提及OTP, gen_server 在实践中占到80% 的代码覆盖率,而且其它常用模式也都可用 gen_server 模拟出来! >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>>>>>>>> 嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈... >>>>>>>>>>>>>>>>>> 091107:: >>>>>>>>>>>>>>>>>> ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸) >>>>>>>>>>>>>>>>>> ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网 >>>>>>>>>>>>>>>>>> ~09:33 成立涛 - Erlang开发实践 >>>>>>>>>>>>>>>>>> N多内容,包含了所有 erl 开发过程中的所有关键实践体验.. -- http://zoomquiet.org 人生苦短? Pythonic! 流程是对先前蠢行的内在反应! ~ Clay Shirky (Process is an embedded reaction to prior stupidity)http://bit.l...
2009年11月07日 星期六 14:10
~14:00 xiu shiwei引言,预告明日的沙龙... ~14:09 老范 开讲EB: - 先用实况录像来开始,讲解EB 的实际情景 - 有机会使用Erl 的情景非常稀少,所以,通过一个简单的程序智力游戏实例来学习,有效,而且可行 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: > ~12:30 热烈的进行提问,锋爷的实战体验分享,引爆了好奇心... > - Q: 加密怎好? > - A: driver 沟通外部NB模块! > - Q: 小消息原则应用策略? > - A: cfg 要特别关注...(原先的 get 方式消耗非常不合算) > + 先 ets 读入 cfg ,并代理进行维护 > + 其它进程来读ets > - ~ 分享自个儿的经验: > + 关系DB 的访问,策略 > - MySQL 的erl 驱动可以用 > - 先用erl 的DB > - 尽量用 存储过程来计算 > + Asn.1 的标准比 SOAP 要靠谱!得多用! > - 门槛是 概念和一般的不同 > - 电信工业标准,资料也少... > > > 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >> ~12:17 Q&A;: >> - Q:ets 的使用策略? >> - A:策略!业务决定,在理解erl运行本质后,就容易判决了... >> >> - Q:百万级应用中,总是有单点node 怎么搞? >> - A:OTP 本身就一直存在这种问题! >> + 尝试使用多个进程来解决 >> + 建议在另外一个VM 中进行处理...进行批量的消息移交(共享内存...),而且可以不用erl 的消息处理 >> - xiu+A:如果请求间关联不大时,可以使用进程池; >> + 如果有关联时(同资源操作时),晚上有说 >> >> - Q:小消息原则,怎么把握? >> - A:是指消息传递开销小! <5ms >> - 消息传递时间和计算时间比例 > 1:10 才有意义 >> >> - Q:DB方面的操作有不? >> - A:有很多: >> + ets 内存DB; >> + Monisa 内置K/V DB >> + 外部关系数据库的支持不在Erl 哲学中... >> >> >> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>> ~12:05 可诊断的系统 >>> - 有内部信息暴露的,参数可动态调节的! >>> - 测试自动的,有高压力环境的 >>> - 尽可能的发挥 erts 的优势:: >>> + 用Ports 整合不同语言系统 >>> + 用 driver 改写关键性能苛求部分 >>> + 使用标准协议方便erl 自然处理(Asn.1),使用内置的高级特性... >>> - 锁是实际存在的... >>> + 尽量减少这方面的代码... >>> >>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>> ~11:59 CPU亲缘性利用! >>>> - Taskset ~ 如果业务明确后,令CPU 对于业务运行从来没有竞争锁,性能将提高 50%以上! >>>> - 启动OS的内置特性 >>>> + Futex >>>> + VDSO >>>> + TCP/IP 协议桟... >>>> - 大文件句柄(只应微调,根据业务的) 有两面性.. port 等数据结构会自动调整,引发意外操作.. >>>> - 基于测试的持续调优! >>>> >>>> >>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>> ~11:49 总结优化最佳体验 >>>>> - 多用: >>>>> + list comprehension >>>>> + iolist /gather write >>>>> + Binart > 256时,才引用计数(不用复制的!) >>>>> + Hipe_bif 也可以考虑 >>>>> - 不要用昂贵的BIF: >>>>> - now() >>>>> - io_lib:format >>>>> >>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>> ~11:40 性能测量的关注: >>>>>> + erl/Erts/OS 的热点 >>>>>> - systemtap ~ 非入侵式旁观 >>>>>> - Erlang 工具集,非常丰富,非常关注内存的分配... >>>>>> - 十多种调度模式 >>>>>> - 200多种内存锁 lockcounter 就可以观察到问题集中点 >>>>>> - dbg ~ "ETrace";-) >>>>>> ... snmp 综合运行期情况 >>>>>> + 延迟变化 >>>>>> + 响应时间的抖动 >>>>>> >>>>>> >>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>> ~12:00 业务方面的优化: >>>>>>> - 小消息大计算! >>>>>>> - IO和计算的时间开销比,就是应用的性能收益比! >>>>>>> - 对CPU和内存及早进行明显的分配! >>>>>>> - 将业务和实际CPU 对应上,以免引发切换时间消耗... >>>>>>> - 进程和物理世界的对象尽量 1:1 (erl 的对象控制级别是百万级别的!) >>>>>>> - 多用ets ~ 大数据量推荐 >>>>>>> - tuple/list/array 只能应作小数据量 >>>>>>> - 尽量 *无锁结构* >>>>>>> >>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>> ~11:15 Hipe 虽然社区认为不稳定,但是实际应用时性能增强非常多!建议使用... >>>>>>>> - 可以省略很多系统特性 >>>>>>>> - 未公开的特性: 调度器绑定! ~ 高级特性,可以预先配置CPU 行为>.. >>>>>>>> >>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>> ~11:11 OS方面的选择优化: >>>>>>>>> - 32位性能比64位好(64位没有内存限制,但是性能低20~30%) >>>>>>>>> - RHEL 致力于高性能的挖掘>.. >>>>>>>>> - 配置系统的swapness ,内存的OS预留等默认配置要向已知业务倾斜! >>>>>>>>> - 绝大多数erl 死亡都是内存耗光... >>>>>>>>> >>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>> ~11:05 R12B~R13B 最大的变化在进程调度方面,增长了上万行代码! >>>>>>>>>> - 智能的进行了逻辑CPU 间的协同调度.. >>>>>>>>>> - erl进程是使用操作系统的真实线程 >>>>>>>>>> - 10000/s 的请求,引发的OS消息可以达到 600000/s 内核消息... >>>>>>>>>> - 调度的单位是 Port 引发的一组I/O事件 ~ erl的调度是由进程和Port 组成的... >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>> ~10:57 erl应该来作什么? >>>>>>>>>>> - I/O密集型/先进的SMP多核支持的 *网络服务器*!!!(或是说专用的操作系统) >>>>>>>>>>> - 为了证明这一感觉,进行了真实的OS 对比 >>>>>>>>>>> - 各种组件完全可以和一个OS 的各个部件对应起来!~ etop?!?!? >>>>>>>>>>> >>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>> ~10:50 锋爷:Erlang应用优化指南 >>>>>>>>>>>> - 网游公司,用erl 开发平台! >>>>>>>>>>>> - 对于性能的苛求导致发现短连接响应领域 erl 绝对领先! >>>>>>>>>>>> - Taskset -c 1 erl +K true +h 99999 +P 99999 -s ehttpd >>>>>>>>>>>> - 严格理解了应用需求后,放弃了垃圾收集等等内置行为后,性能增加 110% >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>>> ~10:13 erl 开发中的逻辑问题解决... >>>>>>>>>>>>> - 编译过,但是运行不过时的调试技巧! -> plt 的进一步自动分析,来定位可能的编辑问题 >>>>>>>>>>>>> - 使用定制的 dialyzer 测试脚本,定位常见问题... >>>>>>>>>>>>> - 进一步的,充分使用 EUnit 是个好思路... >>>>>>>>>>>>> >>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>>>> ~10:05 注释约定! 模块用 %%% 前缀,函式用 %% 前缀... >>>>>>>>>>>>>> - 遗憾的是:edoc 对中文支持不好 >>>>>>>>>>>>>> - 嗯嗯嗯,建议使用 Doxygen 之类第3方专业文档化编程工具 >>>>>>>>>>>>>> >>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>>>>> ~10:01 Emakefile 内置的编译工具,比手工逐一make 可以获得一致性的自动统一编译; >>>>>>>>>>>>>>> - 遗憾的是:只能编译.erl 的,无法依赖支持 >>>>>>>>>>>>>>> - 所以,习惯的使用 GNU make,通过makeconf 进一步加强日常的erl 生产编译行为... >>>>>>>>>>>>>>> - 而且可移植!... >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>>>>>> ~09:55 昨日的讲师小聚照片:http://www.flickr.com/photos/zoomq/sets/72157622746793958/ >>>>>>>>>>>>>>>> - appmon 内置的应用进程关系观察工具 >>>>>>>>>>>>>>>> - 相当于JAVA的类树图自动分析,只是这里是对真实的网络进程间关系探测! >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>>>>>>> ~09:50 gen_server 是个稳固的 S/C 框架,我们可以放心的在其上进行开发; >>>>>>>>>>>>>>>>> - erl 进程是种抽象概念,是应用的最小单位 >>>>>>>>>>>>>>>>> - 不要在gen_server 中进行复杂的处理,以免引发阻塞 >>>>>>>>>>>>>>>>> - 这时使用 gen_fsm 这是专门进行处理可能有阻塞的进程处理框架 >>>>>>>>>>>>>>>>> - 而且可以使用内置的相互监督模型进行进程脆崩后的自动处理 >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>>>>>>>> ~09:45 讲演的幻灯在: >>>>>>>>>>>>>>>>>> http://ecug.googlecode.com/svn/trunk/cn-erlounge/iv/litao.cheng/ >>>>>>>>>>>>>>>>>> 当然提及OTP, gen_server 在实践中占到80% 的代码覆盖率,而且其它常用模式也都可用 gen_server 模拟出来! >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>>>>>>>>> 嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈... >>>>>>>>>>>>>>>>>>> 091107:: >>>>>>>>>>>>>>>>>>> ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸) >>>>>>>>>>>>>>>>>>> ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网 >>>>>>>>>>>>>>>>>>> ~09:33 成立涛 - Erlang开发实践 >>>>>>>>>>>>>>>>>>> N多内容,包含了所有 erl 开发过程中的所有关键实践体验.. -- http://zoomquiet.org 人生苦短? Pythonic! 向靠谱,反脑残! Kaopulity,小白退散! [Kaopulity~= Keep all processes usablity!]
2009年11月07日 星期六 14:27
~14:25 EB架构的演化: - 无名 ets 表,发布战场时况 - 各种游戏运营过程中的情景 - 同时行动时的内置顺序聲明 - 战队算法>.. 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: > ~14:00 xiu shiwei引言,预告明日的沙龙... > > ~14:09 老范 开讲EB: > - 先用实况录像来开始,讲解EB 的实际情景 > - 有机会使用Erl 的情景非常稀少,所以,通过一个简单的程序智力游戏实例来学习,有效,而且可行 > > 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >> ~12:30 热烈的进行提问,锋爷的实战体验分享,引爆了好奇心... >> - Q: 加密怎好? >> - A: driver 沟通外部NB模块! >> - Q: 小消息原则应用策略? >> - A: cfg 要特别关注...(原先的 get 方式消耗非常不合算) >> + 先 ets 读入 cfg ,并代理进行维护 >> + 其它进程来读ets >> - ~ 分享自个儿的经验: >> + 关系DB 的访问,策略 >> - MySQL 的erl 驱动可以用 >> - 先用erl 的DB >> - 尽量用 存储过程来计算 >> + Asn.1 的标准比 SOAP 要靠谱!得多用! >> - 门槛是 概念和一般的不同 >> - 电信工业标准,资料也少... >> >> >> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>> ~12:17 Q&A;: >>> - Q:ets 的使用策略? >>> - A:策略!业务决定,在理解erl运行本质后,就容易判决了... >>> >>> - Q:百万级应用中,总是有单点node 怎么搞? >>> - A:OTP 本身就一直存在这种问题! >>> + 尝试使用多个进程来解决 >>> + 建议在另外一个VM 中进行处理...进行批量的消息移交(共享内存...),而且可以不用erl 的消息处理 >>> - xiu+A:如果请求间关联不大时,可以使用进程池; >>> + 如果有关联时(同资源操作时),晚上有说 >>> >>> - Q:小消息原则,怎么把握? >>> - A:是指消息传递开销小! <5ms >>> - 消息传递时间和计算时间比例 > 1:10 才有意义 >>> >>> - Q:DB方面的操作有不? >>> - A:有很多: >>> + ets 内存DB; >>> + Monisa 内置K/V DB >>> + 外部关系数据库的支持不在Erl 哲学中... >>> >>> >>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>> ~12:05 可诊断的系统 >>>> - 有内部信息暴露的,参数可动态调节的! >>>> - 测试自动的,有高压力环境的 >>>> - 尽可能的发挥 erts 的优势:: >>>> + 用Ports 整合不同语言系统 >>>> + 用 driver 改写关键性能苛求部分 >>>> + 使用标准协议方便erl 自然处理(Asn.1),使用内置的高级特性... >>>> - 锁是实际存在的... >>>> + 尽量减少这方面的代码... >>>> >>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>> ~11:59 CPU亲缘性利用! >>>>> - Taskset ~ 如果业务明确后,令CPU 对于业务运行从来没有竞争锁,性能将提高 50%以上! >>>>> - 启动OS的内置特性 >>>>> + Futex >>>>> + VDSO >>>>> + TCP/IP 协议桟... >>>>> - 大文件句柄(只应微调,根据业务的) 有两面性.. port 等数据结构会自动调整,引发意外操作.. >>>>> - 基于测试的持续调优! >>>>> >>>>> >>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>> ~11:49 总结优化最佳体验 >>>>>> - 多用: >>>>>> + list comprehension >>>>>> + iolist /gather write >>>>>> + Binart > 256时,才引用计数(不用复制的!) >>>>>> + Hipe_bif 也可以考虑 >>>>>> - 不要用昂贵的BIF: >>>>>> - now() >>>>>> - io_lib:format >>>>>> >>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>> ~11:40 性能测量的关注: >>>>>>> + erl/Erts/OS 的热点 >>>>>>> - systemtap ~ 非入侵式旁观 >>>>>>> - Erlang 工具集,非常丰富,非常关注内存的分配... >>>>>>> - 十多种调度模式 >>>>>>> - 200多种内存锁 lockcounter 就可以观察到问题集中点 >>>>>>> - dbg ~ "ETrace";-) >>>>>>> ... snmp 综合运行期情况 >>>>>>> + 延迟变化 >>>>>>> + 响应时间的抖动 >>>>>>> >>>>>>> >>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>> ~12:00 业务方面的优化: >>>>>>>> - 小消息大计算! >>>>>>>> - IO和计算的时间开销比,就是应用的性能收益比! >>>>>>>> - 对CPU和内存及早进行明显的分配! >>>>>>>> - 将业务和实际CPU 对应上,以免引发切换时间消耗... >>>>>>>> - 进程和物理世界的对象尽量 1:1 (erl 的对象控制级别是百万级别的!) >>>>>>>> - 多用ets ~ 大数据量推荐 >>>>>>>> - tuple/list/array 只能应作小数据量 >>>>>>>> - 尽量 *无锁结构* >>>>>>>> >>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>> ~11:15 Hipe 虽然社区认为不稳定,但是实际应用时性能增强非常多!建议使用... >>>>>>>>> - 可以省略很多系统特性 >>>>>>>>> - 未公开的特性: 调度器绑定! ~ 高级特性,可以预先配置CPU 行为>.. >>>>>>>>> >>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>> ~11:11 OS方面的选择优化: >>>>>>>>>> - 32位性能比64位好(64位没有内存限制,但是性能低20~30%) >>>>>>>>>> - RHEL 致力于高性能的挖掘>.. >>>>>>>>>> - 配置系统的swapness ,内存的OS预留等默认配置要向已知业务倾斜! >>>>>>>>>> - 绝大多数erl 死亡都是内存耗光... >>>>>>>>>> >>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>> ~11:05 R12B~R13B 最大的变化在进程调度方面,增长了上万行代码! >>>>>>>>>>> - 智能的进行了逻辑CPU 间的协同调度.. >>>>>>>>>>> - erl进程是使用操作系统的真实线程 >>>>>>>>>>> - 10000/s 的请求,引发的OS消息可以达到 600000/s 内核消息... >>>>>>>>>>> - 调度的单位是 Port 引发的一组I/O事件 ~ erl的调度是由进程和Port 组成的... >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>> ~10:57 erl应该来作什么? >>>>>>>>>>>> - I/O密集型/先进的SMP多核支持的 *网络服务器*!!!(或是说专用的操作系统) >>>>>>>>>>>> - 为了证明这一感觉,进行了真实的OS 对比 >>>>>>>>>>>> - 各种组件完全可以和一个OS 的各个部件对应起来!~ etop?!?!? >>>>>>>>>>>> >>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>>> ~10:50 锋爷:Erlang应用优化指南 >>>>>>>>>>>>> - 网游公司,用erl 开发平台! >>>>>>>>>>>>> - 对于性能的苛求导致发现短连接响应领域 erl 绝对领先! >>>>>>>>>>>>> - Taskset -c 1 erl +K true +h 99999 +P 99999 -s ehttpd >>>>>>>>>>>>> - 严格理解了应用需求后,放弃了垃圾收集等等内置行为后,性能增加 110% >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>>>> ~10:13 erl 开发中的逻辑问题解决... >>>>>>>>>>>>>> - 编译过,但是运行不过时的调试技巧! -> plt 的进一步自动分析,来定位可能的编辑问题 >>>>>>>>>>>>>> - 使用定制的 dialyzer 测试脚本,定位常见问题... >>>>>>>>>>>>>> - 进一步的,充分使用 EUnit 是个好思路... >>>>>>>>>>>>>> >>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>>>>> ~10:05 注释约定! 模块用 %%% 前缀,函式用 %% 前缀... >>>>>>>>>>>>>>> - 遗憾的是:edoc 对中文支持不好 >>>>>>>>>>>>>>> - 嗯嗯嗯,建议使用 Doxygen 之类第3方专业文档化编程工具 >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>>>>>> ~10:01 Emakefile 内置的编译工具,比手工逐一make 可以获得一致性的自动统一编译; >>>>>>>>>>>>>>>> - 遗憾的是:只能编译.erl 的,无法依赖支持 >>>>>>>>>>>>>>>> - 所以,习惯的使用 GNU make,通过makeconf 进一步加强日常的erl 生产编译行为... >>>>>>>>>>>>>>>> - 而且可移植!... >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>>>>>>> ~09:55 昨日的讲师小聚照片:http://www.flickr.com/photos/zoomq/sets/72157622746793958/ >>>>>>>>>>>>>>>>> - appmon 内置的应用进程关系观察工具 >>>>>>>>>>>>>>>>> - 相当于JAVA的类树图自动分析,只是这里是对真实的网络进程间关系探测! >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>>>>>>>> ~09:50 gen_server 是个稳固的 S/C 框架,我们可以放心的在其上进行开发; >>>>>>>>>>>>>>>>>> - erl 进程是种抽象概念,是应用的最小单位 >>>>>>>>>>>>>>>>>> - 不要在gen_server 中进行复杂的处理,以免引发阻塞 >>>>>>>>>>>>>>>>>> - 这时使用 gen_fsm 这是专门进行处理可能有阻塞的进程处理框架 >>>>>>>>>>>>>>>>>> - 而且可以使用内置的相互监督模型进行进程脆崩后的自动处理 >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>>>>>>>>> ~09:45 讲演的幻灯在: >>>>>>>>>>>>>>>>>>> http://ecug.googlecode.com/svn/trunk/cn-erlounge/iv/litao.cheng/ >>>>>>>>>>>>>>>>>>> 当然提及OTP, gen_server 在实践中占到80% 的代码覆盖率,而且其它常用模式也都可用 gen_server 模拟出来! >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> 2009/11/7 Zoom.Quiet <zoom.quiet在gmail.com>: >>>>>>>>>>>>>>>>>>>> 嗯嗯嗯,因为有人在 Twitter,俺就进行习惯的邮件报道,有不习惯的请过滤哈... >>>>>>>>>>>>>>>>>>>> 091107:: >>>>>>>>>>>>>>>>>>>> ~08:55 到达金溪山庄(关键词:西湖边上 杨公堤岸) >>>>>>>>>>>>>>>>>>>> ~09:30 大家在沉默的等待开始,和会场的WIFI 进行斗争,終于明白是网页登录,不要关闭中国电信的认证网页,才可以继续上网 >>>>>>>>>>>>>>>>>>>> ~09:33 成立涛 - Erlang开发实践 >>>>>>>>>>>>>>>>>>>> N多内容,包含了所有 erl 开发过程中的所有关键实践体验.. -- http://zoomquiet.org 人生苦短? Pythonic! 一个人如果力求完善自己,就会看到:为此也必须同时完善他人. 一个人如果不关心别人的完善,自己便不可能完善!
Zeuux © 2024
京ICP备05028076号