- 博客(285)
- 收藏
- 关注
原创 我已搬迁到blog.yufeng.info
[url]http://mryufeng.iteye.com[/url]这里已停止更新,谢谢javaeye的优质服务。以后会在独立的域名[url]http://yufeng.info[/url]下更新博客, 同时内容也会从Erlang扩展到Linux, 工具,以及编程技术等方面, 谢谢大家的关注。 请朋友们更新书签。余锋2011/1/9...
2011-01-09 15:38:34
405
原创 OTP R14A今天发布了
以下是这次发布的亮点,没有太大的性能改进, 主要是修理了很多BUG!--- HIGHLIGHTS ---------------------------------------------------------- OTP-8217 == erts stdlib compiler == The module binary from EEP31 (and ...
2010-06-17 14:36:28
277
R14A实现了EEP31,添加了binary模块
Erlang的binary数据结构非常强大,而且偏向底层,在作网络程序的时候,很方便的能够和二进制协议对应起来。但是由于这个数据结构加入erlang语言的时间不是很长,相关的配套模块不是很多。 在binary的匹配,替换,修改就显的非常麻烦。 于是有了EEP31 。 R14A昨天已经实现了这个功能, 在stdlib下添加了个binary模块。 这个模块大部分功能是由BIF实现的,同时充分考虑了CP...
2010-05-21 15:15:28
299
如何查看节点的可用句柄数目和已用句柄数
很多同学在使用erlang的过程中, 碰到了很奇怪的问题, 后来查明都是文件句柄不够用了, 因为系统默认的是每个进程1024. 所以我们有必要在程序运行的时候, 了解这些信息, 以便诊断和预警.下面的这个程序就演示了这个如何查看节点的可用句柄数目和已用句柄数的功能.首先确保你已经安装了lsof, 我的系统是ubuntu可以这样安装.root@ubuntu:~# apt-get -y...
2010-04-08 03:31:17
297
获取Erlang系统信息的代码片段
从lib/megaco/src/tcp/megaco_tcp_connection.erl摘抄的代码, 挺详细的关于系统的信息:[code="java"] SchedId = erlang:system_info(scheduler_id), SchedNum = erlang:system_info(schedulers), ProcCount...
2010-04-06 21:49:02
207
iolist跟list有什么区别?
看到erlang-china.org上有个帖子在问这个问题[quote]一直不太明白iolist,跟list到底有什么区别?请各位大侠指教。。[/quote]我翻看了半天erlang的文档也没写的太明白,所以就看看源码:erts/emulator/beam/utils.c[code="java"]3015int io_list_len(Eterm obj)3016{...
2010-04-06 20:30:58
426
erlang:send_after和erlang:start_timer的使用解释
前段时间arksea 同学提出这个问题, 因为文档里面写的很不明白. erlang:send_after(Time, Dest, Msg) -> TimerRef Time = int() 0
2010-04-06 18:31:52
201
Latest news from the Erlang/OTP team at Ericsson 2010
参考Talk http://www.erlang-factory.com/upload/presentations/238/ErlangFView postactorySFBay2010-KennethLundin.pdf摘抄我感兴趣的:R14要实现的:1. June 16: R14A, a beta release2. Multi-core performance imp...
2010-04-05 19:23:10
163
对try 异常 运行的疑问,为什么出现两种结果
郎咸武 同学在erlang-china上post了一个问题:请注意编号为91和92两行运行结果,请问为什么会出现两种结果。一个抛出 {error,{badmatch,5}}另一个抛出** exception error: no match of right hand side value 4view sourceprint?01 root@ubuntu:/usr/src/...
2010-04-05 19:22:03
288
Erlang ERTS Async基础设施
其实Erts的Async做的很不错的, 相当的完备, 性能又高. 但是奇怪的是只有文件driver才真正利用到了这个优势. 难道是OTP团队的人,不想为了性能把事情搞的复杂了. Driver和最近加入的NIF都提供了大量的线程,锁,同步的原语来支持最大的程度的利用单线程的优势. 俺会做小白鼠来参试这些被遗忘的设施....
2010-03-19 00:03:11
176
Haproxy 1.4-dev2: barrier of 100k HTTP req/s crossed
原文地址: [url]http://haproxy.1wt.eu/10g.html[/url][color=red]点滴优化造就了今天的性能, willy好样的,应该是目前软件做到的最好的数字[/color]Introduction It was my first test since I moved house. I wanted to quickly plug...
2010-03-09 23:00:20
158
CloudI 0.0.9 Released, A Cloud as an Interface
[color=red]基于Erlang的云平台 看了下代码 质量还是不错的 完成了不少, 兴趣的同学可以参观下[/color]CloudI 0.0.9 (alpha)Homepage: http://cloudi.orgDownload:http://sourceforge.net/projects/cloudi/files/0.0.9a/cloudi-0.0.9.ta...
2010-03-09 22:32:06
167
Memory matters - even in Erlang (再次说明了了解内存如何工作的必要性)
原文地址:[url]http://www.lshift.net/blog/2010/02/28/memory-matters-even-in-erlang[/url][color=red]作者解决问题的思路非常敬佩! 真没想到hibernation后, 由于对象的移动, 使得内存访问的不连续, 导致内存cahche的失效, 速度可以慢这么多![/color]Some time ag...
2010-03-09 20:26:54
151
Some simple examples of using Erlang’s XPath implementation
原文地址 [url]http://www.lshift.net/blog/2008/01/31/some-simple-examples-of-using-erlangs-xpath-implementation[/url][color=red]这篇文章很好的介绍了xmerl_xpath 这个很方便的东西, 而在官方的文档里, 一笔带过, 让人不识宝,我把它挖掘出来,有兴趣的同学折腾折...
2010-03-08 23:30:51
129
LuaJIT 2 beta 3 is out: Support both x32 & x64(为什么会如此快?)
LuaJIT's interpreter is fast, because:•It's written in assembler.•It keeps all important state in registers. No C compiler manages to do that on x86.•It uses indirect threading (aka labeled go...
2010-03-08 16:59:35
208
Libevent 2.0.4-alpha released
Libevent 2.0.4-alpha is now available for download:[url]http://monkey.org/~provos/libevent-2.0.4-alpha.tar.gz[/url]http://monkey.org/~provos/libevent-2.0.4-alpha.tar.gz.sigThe complete change ...
2010-03-08 10:48:08
150
haproxy 1.4释出
[size=large] February 26th, 2010 : New stable branch 1.4 ! After 11 months of active development and a lot of external contributions, version 1.4 is now released. It has been tested for the l...
2010-02-27 00:44:04
179
lcnt 环境搭建
抄书:otp_doc_html_R13B04/lib/tools-2.6.5.1/doc/html/lcnt_chapter.html#id2252207[b]lcnt - The Lock Profiler[/b]Internally in the Erlang runtime system locks are used to protect resources from bei...
2010-02-26 16:19:50
306
Erlang强大的代码重构工具 tidier
[b]Jan 29, 2010[/b]We are very happy to announce the website of Tidier, an automaticrefactoring tool for Erlang programs.Tidier cleans up Erlang source code and suggests to its user a sequence...
2010-02-25 16:22:40
192
[Feb 24 2010] Erlang/OTP R13B04 has been released
Erlang/OTP R13B04 has been released. R13B04 is a service release for R13B. There are mostly error corrections, but also some new functionality.This is the first release after the introduction of t...
2010-02-25 00:31:24
141
原创 gccgo将合并到gcc4.5
From: [url]http://lwn.net/Articles/371466/[/url]I am pleased to announce that the GCC Steering Committee hasaccepted the contribution of the gccgo front-end and gcc-specific runtimefor the Go la...
2010-01-28 11:11:28
158
原创 Go-lang特性介绍
Go Lang介绍Go编程语言是Google中一些大牛(尤其是有着plan9前科的大牛们)如Rob Pike,Ken Thomason这两位赫赫有名的程序高手、技术作于2007年9月开始建造。Pike指出,Go代码的编译基本上可以达到C语言的速度,几乎可以在瞬间完成,“就像是在使用交互式语言”。现有的语言都没有针对多核心处理器进行优化,为了解决此类编程问题,Google工程
2010-01-28 10:47:00
1408
原创 R13B04 Installation
R13B04后erlang的源码编译为了考虑移植性,就改变了编译方式,以下是官方wiki上的安装文档[url]http://wiki.github.com/erlang/otp/installation[/url]:[color=red]1. Cloning[/color]Here are the basic steps to build Erlang/OTP in the Git...
2010-01-28 10:28:13
147
原创 Go-lang特性介绍
[b]Go Lang介绍[/b]Go编程语言是Google中一些大牛(尤其是有着plan9前科的大牛们)如Rob Pike,Ken Thomason这两位赫赫有名的程序高手、技术作于2007年9月开始建造。Pike指出,Go代码的编译基本上可以达到C语言的速度,几乎可以在瞬间完成,“就像是在使用交互式语言”。现有的语言都没有针对多核心处理器进行优化,为了解决此类编程问题,Google工...
2010-01-21 22:24:15
160
原创 Running tests
R13B03以后 OTP的模块加入了大量的测试模块,这些模块都是common_test的使用例子. 我们可以学到的2点 1. 如何编写common_test 2. 如何养成好习惯,为我们自己的工程编写测试案例. 以下是如何允许测试案例:原文地址: [url]http://wiki.github.com/erlang/otp/running-tests[/url]Runnin...
2010-01-19 14:51:12
158
原创 R13B04在细化Binary heap
从github otp的更新日志可以清楚的看到otp R13B04在binary heap的细化上做了很多工作:1. 提供参数 限制binary的最小limit.2. binary_to_term 加多参数来保证安全, 对于外来binary解码的安全性检查 比如说 避免atom的滥用.3. 更高效率的处理binary fragment.4. 加强GC对binary碎...
2010-01-14 15:11:54
109
R13B03 binary vheap有助减少binary内存压力
R13B03 binary vheap有助减少binary内存压力.参看:[url]http://www.erlang.org/download/otp_src_R13B03.readme[/url][quote] OTP-8202 A new garbage collecting strategy for binaries which is more ag...
2009-11-29 16:07:52
173
erl_nif 扩展erlang的另外一种方法
我们知道扩展erl有2种方法, driver和port. 这2个方法效率都低,因为都要经过 port机制,对于简单的模块,这个开销有时候是不可接受的。这时候nif来救助了。今天发布的R13B03已经支持了,虽然是实验性质的。erl_nif的代表API functions for an Erlang NIF library。 参考文档:erl_nif.html 和 erlang.html#erl...
2009-11-26 01:02:50
303
原创 lua源码研究阅读顺序
转自:[url]http://www.reddit.com/comments/63hth/ask_reddit_which_oss_codebases_out_there_are_so/c02pxbp[/url]Recommended reading order: * lmathlib.c, lstrlib.c: get familiar with the external ...
2009-11-25 14:27:30
214
escript的高级特性
escript Erlang scripting support, 可以让erl模块转身变成unix script来使用,大大方便用户,具体的使用参看otp文档。我这里要演示的是些比较被忽视的高级特性:首先crack erts/etc/common/escript.c:33 static int debug = 1; 让之显示调用参数。root@nd-desktop:~# cat...
2009-11-25 05:42:28
339
erl命令行工具链的设计思路
erlang otp标准发布包里面的命令行工具都在bin目录下dialyzer erlc escript typererlang的这些命令行工具基本上都是erl模块的c的wrapper, 最后都是调用erl来运行相应的模块完成任务。实验如下:root@nd-desktop:~# touch test.erlroot@nd-desktop:~# ...
2009-11-25 03:51:11
174
rlwrap方便行编辑
GNU libreadline 为行编辑提供了统一的接口和方便的编辑能力,在使用中感觉非常爽。但是不是所以的应用程序都使用了readline库来读取用户输入,大部分C程序只是简单的调用fgets。这样的程序在输入的时候非常痛苦。比如erl,为了移植性没用到readline,而是自己实现了类似readline那样的基本的行编辑,但是非常难用,例如不支持CTRL A, CTRL E等等。这时候...
2009-11-25 03:25:20
211
Go lang的emacs mode设置
昨天新发布的Go还是很不错的,而且随机带了个emacs的模式 用起来很方便。root@nd-desktop:/usr/src/golang# pwd/usr/src/golangroot@nd-desktop:/usr/src/golang# ls misc/emacs/go-mode.el go-mode-load.elroot@nd-desktop:/usr/s...
2009-11-12 17:10:40
226
杭州ecug会议上的演讲稿
刚从11月7-8号在杭州举行的ecug会议上回来,这次会议总体感觉是 大家都在开始用erlang了,这是个很好的现象。[img]http://blog.yufeng.info/wp-content/uploads/2009/11/4089937238_13e554a5d4-200x300.jpg[/img]附件是我的演讲稿。...
2009-11-10 13:40:57
114
最快的http hello world服务器调优指南 (C20Khttp短链接请求/S每桌面CPU)
erl的虚拟机有2种方式 plain版本的和smp版本的。 smp版本由于锁的开销相比要比plain版本的慢很多。 而32位机器由于内存访问比64位的少,也会快出很多。所有我选择在32位的linux系统下调优这个httpd服务器。 这个服务器就是实现个简单的功能,在browser下返回hello world。 以下我们会先编译我们的优化版本的虚拟机,然后再分别测试R13B02的标准版本的和我们优化...
2009-11-04 00:56:57
243
用systemtap来修改下linux内核变量的值
我们在探索linux内核的时候,经常需要调整下变量的值,看它对系统的影响。如果这个值没有透过/proc来修改的话,那只能编译内核。这个步骤是非常繁琐的。现在我们有systemtap这个利器来帮忙了。演示如下:我们通过修改过extern int sysctl_tcp_fin_timeout;的值来达到目的。是因为这个值是proc导出的 我们好验证是否成功。root@local...
2009-10-29 19:06:07
140
如何查看gen_server系列的状态 (高级)
gen_server在erlang otp编程中的地位是无可撼动的,几乎都是gen_server或者gen_fsm的模型。那么程序运行起来的时候 我们如何查看gen_server的内部状态呢。有2种方法:1. 自己写个类似于info这样的函数,来获取状态。2. 利用系统现有的架构。sasl应用带了一个si的东西 全名是status inspector, 这个东西就是设计来帮用户解决这个问题...
2009-10-29 16:17:21
157
erlang和port通讯的数据格式
erlang内置的port非常强大,是erlang通往外面世界的通道,所以port和erlang程序的通讯的数据格式影响了通讯的效率,和稳定性。 我们在选择格式的时候, 会优先考虑到erlang的特性和port程序编写语言的特点,选出一种2者都容易处理的格式。通讯通常有2种,基于行的文本和2进制格式。行通讯最容易,因为是文本,调试起来就很方便。 形如这样的格式:request ...
2009-10-22 22:25:01
226
leex文法分析的效率
R13B新添加的leex相当于c的lex, 在做文法分析非常方便,但是效率如何呢? leex的example里面带了个erlang_scan和erlang标准的发布版的erl_scan兼容,所以我们来对比测试下效率。注意用R13B03,因为R13B02的erlc漏掉了编译xrl格式。以下是实验:root@nd-desktop:~# git clone git://githu...
2009-10-12 21:02:06
333
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人