- 博客(35)
- 收藏
- 关注
原创 关于那本书的视频访谈
[flash=640,480]http://v.zdnet.com.cn/video/TechTV/081031/soft_book.swf[/flash]应ZDNet的邀请,《Erlang程序设计》的译者赵东炜老师和这本书的策划编辑刘江老师针对《Erlang程序设计》这本书和Erlang技术做了一期视频访谈节目。...
2008-11-07 21:43:04
195
原创 Nitrogen - Yet Another Web Framework
这是火星旧闻了,在若干天之前,有位大佬在maillist宣告了一个新的Erlang Web Framwork - Nitrogen,代码尚在整理中,未开源,只有一个演示视频。视频被gfw了,我将它上传到Youtube,因为刚上传,稍后才可以访问。[flash=425,350]http://www.youtube.com/v/jZdbALtbh6Q[/flash]比较有意思的是这...
2008-10-27 22:52:16
185
原创 New Erlang book
[img]http://www.iteye.com/upload/attachment/35633/5610b545-6a2d-3ff0-a42b-750e50bc1592-thumb.png?1219294851[/img]Manning 出版社发布了最新的Erlang书籍《Concurrent Programming with Erlang/OTP》,目前是Early Access E...
2008-08-21 13:00:49
126
Erlang R12B3 的sub binary优化似乎有Bug?
09.3.18更新:随着R13A release,我也重新查了一下这个问题,首先这份代码在编译的时候,会提示[quote]Warning: NOT OPTIMIZED: different control paths use different positions in the binary[/quote]litaocheng同学提醒,只要将代码修改为[code]dame_shit...
2008-06-28 13:20:53
138
[笔记]Erlang R12B中的sub binary优化
在Erlang的 DOC erl5.6.3/doc/efficiency_guide/binaryhandling.html#4 中,第四章提到了Binary的优化。由于虚拟机经过了改良,一些在R11B使用的Binary优化技巧,在R12B就不推荐使用了。特别注意的是sub binary的使用。举个例子,从一个大的Binary中取出以某个字节结束的一句:[code="java"]e...
2008-06-28 11:29:46
141
一种简单的UUID生成方法
maillist有人提供了一种简单的UUID生成方法:[quote]1> crypto:start().ok2> = crypto:sha(term_to_binary({make_ref(), now()})).3> lists:flatten(io_lib:fwrite("~40..0s", [erlang:integer_to_list(I, 16)]))."2...
2008-06-07 00:53:59
413
[笔记]用ets实现了把一致性哈希中的最接近项查找
最近有些空,继续捣鼓consisten hash的简单实现。先前修改gb_trees,加入了lookup_nearest(Key, Tree) 函数,通过二叉查找和回朔,来查找最接近Key的项。昨天看了下xbaytable的DHT实现,发觉其实用ets会更快捷:ets:prev(Table, Key) 和 ets:next(Table, Key) 函数,可以返回Table中Key的上一个或...
2008-04-01 23:39:57
169
Big Endian & Little Endian 笔记
突然想做IP库的解析,用Erlang,自然就碰到了Big Endian & Little Endian的事IP在DB文件中是以little endian存储的,跟搜索的IP比较时需要转换为一个Int值,Python代码可以这样:[code="python"]ip = unpack('I', buf)[0][/code]将一个IP串转换为Int值,则是[code="python"...
2008-03-13 22:43:12
163
小测试:两种构造字符串方式的性能对比
先推荐两篇文章:http://www.wagerlabs.com/blog/2008/02/parsing-text-an.htmlhttp://ppolv.wordpress.com/2008/02/25/parsing-csv-in-erlang/(都需要爬墙访问,该死的‘功夫网’)Erlang中解析文本协议,使用Binary无疑是高效的选择,但是我发现,文章中,对Bina...
2008-03-05 23:30:12
174
对Socket的{active, true}参数进行一些测试
以前不是很了解Erlang网络编程中流量控制,现在做一下笔记。Erlang中Socket设置了{active, true}之后,接收到的网络消息会通过{tcp, Socket, Data}的格式主动发送给进程,这样做有个弊处就是没有做流量控制。要是有个客户端疯狂发包过来,服务器不做处理就等着堆溢出。在《Programming Erlang》的14.2里面,介绍可以使用 {active,...
2008-03-02 22:39:55
392
高阶函数中变量的绑定和匹配问题
一直一来没有留意到这个问题,今天偶尔在blog上看到,就标记一下,别让自己忘记了。文章在 http://easyerl.blogspot.com/2007/10/high-order-functions-must-be-tested.html测试代码如下:[code]1> Filter = fun(Elem) -> fun({Elem, _, _}) -> true; (_) ...
2007-10-07 14:40:17
147
Java 和 Erlang 的列表元素添加测试
maillist上面对 “VM & BEAM Specs : idea for improving, the lists support”的争论很有意思,我也随手测一把看看JDK 1.5.0_11Erlang/OTP R11B-5$ javac ListAppend.java$ /home/jdk/bin/java -server ListAppendTotal tim...
2007-08-07 12:09:35
270
对Erlang R11B-5 ssl库的修正
http://www.trapexit.org/index.php/Distributed_erlang_using_ssl_through_firewalls这篇文章提供了一种使用ssl连接来实现Erlang各节点间通信的方法。但是我的同事经过试验,两个节点是ping不同的,这几天有人在网上提供了一个patch来解决这事情,但是patch有点问题,需要对源文件进行修改之后才能使用pa...
2007-07-20 20:41:42
138
读 Programming Erlang
《Programming Erlang》Joe的新书,买了个电子版,在花了一些时间读了一下之后,发发牢骚,写写读后感。书不太厚,也不薄,500多页,但是单纯附录就占了100+,Appendix FModule and Function Reference,有凑页面的嫌疑。有仁兄打印了整本书,叠起来转头那么厚,其实后面那一部分没有什么必要去打印。此书中规中矩,跟n年前的《Conc...
2007-07-17 12:21:09
178
修正Socket Base Distribution一节实例代码的Bug
拿到了Programming Erlang的电子书,研究一下Potian先前跟俺说的“Socket Base Distribution”部分代码,结果发现chat_client.erl(对应书上的Chapter 11 IRC Lite),运行出错,提示[quote]lib_chan_mm: protocol error:{login,"general","joe"}[/quote]...
2007-07-14 01:27:08
126
Boot Server 启动
如何让多台Server上的Erlang进程启动时只加载远程服务器上面的模块,在kernel的文档里面谈到了一下,同事经过试验,初步能启动进程了,这里记录一下boot server:192.168.0.2slave server:192.168.0.3在boot server输入:[quote]erl -kernel start_boot_server true boot_s...
2007-07-11 14:01:03
311
1
设置Erlang节点的监听端口范围
是个Undocument的Flags,记录一下:erl -name foo@192.168.0.2 -kernel inet_dist_listen_min 8080 -kernel inet_dist_listen_max 8090这样该节点在epmd中注册和监听的端口就会在8080-8090间,方便在防火墙中设置规则...
2007-07-05 17:55:31
499
CEAN 1.3 的 iconv 模块可用了
CEAN1.3出来了,试试那个iconv还能不能用,在Windows下不行 :cry: 经过邮件咨询,原来目前只能用于Linux x86下,其他平台以后会实现。尝试一下将GBK编码流转换为UTF8编码,就用最简单的例子,GBK格式的 “你好”,转换为UTF8后应该在GBK环境下显示 “浣犲ソ”,可以参见 [url=http://avindev.iteye.com/blog/72564]...
2007-07-05 16:44:13
151
一个简单的列表操作性能测试
Note:首先要了解,Erlang里面的列表,比如 [1,2,3,4],其实是这样的方式来存储 [1,[2,[3,[4]]]],因此在头部插入一个元素,很简单,但是在尾部插入就比较困难了。闲来对Erlang中的2个列表操作进行了测试,先上代码:[code]-module(test_list).-compile(export_all).main() -> tes...
2007-05-24 12:12:24
134
用Erlang写了个解八数码的小程序
NOTE:修正了一个Bug,加入了能否求解的数学算法判断,代码更新了算法学的不好,一直没有写什么算法程序。之前一直想写个A*的,研究了一下,最终还没有写成。昨晚花了点时间,用Erlang写了个解八数码的程序,用的是最简单的A*,程序没有做什么优化,中规中矩,偷懒用模式匹配来处理移动情况。如果想看更加优雅的Erlang算法程序,可以查看我在附件提供的sudoku.erl,里面大量使用了高阶函...
2007-05-21 21:50:09
121
Erlang中频繁发送远程消息要注意的问题
注:这篇文章可能会有争议,欢迎提出意见在Erlang中,如果要实现两个远程节点之间的通信,就需要通过网络来实现,对于消息发送,是使用TCP。如果要在两个节点间频繁发送消息,比如每秒几百上千条,那样就要注意了。无论是网游服务器开发的书籍,或是经验老道的工程师,都会告诉你,在发送数据包时,尽可能把小的消息组合为一个比较大的包来发送,毕竟一个TCP包的头也很大,首先是浪费带宽,其次调用底...
2007-05-01 21:09:00
194
Erlang 里面使用Remote shell
今天无意中发现这个功能。。。[url]http://ejabberd.jabber.ru/interconnect-erl-nodes[/url]在下载的 getting_started-5.0.1.pdf 那里也有这个topic:《Advanced Shell Usage - Job Control Mode》,不知道为何官方html格式的文档那里消失了 :? 简单来说是...
2007-04-20 14:44:21
156
Erlang 字符编码模块: iconv
在Erlang中,要处理字符串编码的转换,可以使用iconv,目前CEAN的发行版本,ejabberd和iconv模块里面都有iconv的库,但是都无法正常运行(提示版本不兼容),但是在ejabberd的安装包可以使用。经过比较,发现是erl.exe,erlexec.dll,beam.dll 这三个启动程序的问题,ejabberd的是V5.5.2.2,而CEAN1.2和ErlangOTP R1...
2007-04-19 21:15:37
319
使用target_system进行erlang应用的发行
好久之前捣鼓过的东西,怕忘记了,记录一下。一个简单实现了OTP的Server:echoline,一个Helloworld级别的OTP应用,目录结构如下:./src/echoline_app.erl./src/echoline_sup.erl./src/echoline_server.erl./src/tcp_server.erl./ebin/echoline_app...
2007-04-09 21:23:07
99
erlang module pg2
《轻松实现可伸缩性,容错性,和负载平衡的大规模多人在线系统》一文里面对“Erlang的分布式进程组(Distributed Named Process Groups)”大吹特吹,就是说的pg2这个module。文档那里虽然写了支持分布式节点,但是并没有说如何如何,只提供了一个join(Name, Pid)。看了一下openpoker的源码,原来很简单,对于连接上的node,用 which_gr...
2007-04-09 19:58:56
164
Erlang 中的Module级别热部署
Java里面要实现Code Replacement,也就是什么热部署,通常是使用ClassLoader机制。不久前看到了一篇Google的Paper,里面讲解的C++代码热部署更为复杂。在Erlang里面,实现Code Replacement其实很简单,最方便的方法可以参考 《Erlang Reference Manual》的12.3:[code]-module(m).-expor...
2007-04-05 19:35:03
111
读《谈分布式网络程序设计》,思Erlang
163的zhousen写了几篇文章,《谈分布式网络程序设计》[url]http://q.163.com/dirgroup/blog/zhousen.zju/1802920067811231290/#1802920067811231290[/url][url]http://q.163.com/dirgroup/blog/zhousen.zju/1802920067123113984/#180...
2007-04-01 19:06:31
119
Erlang 的分布通讯安全策略
Erlang的分布式通讯安全策略,可以归结为 All or None。要不拥有全部的权限,要不就完全没有。它的节点安全设置,是通过一个magic cookie来实现的。这个文件默认放到$HOME/.erlang.cookie ,文件内容是字符串。当启用分布通讯的时候,这个magic cookie就很重要了。如果在命令行里面带上 -setcookie ,则在当前节点使用这个coo...
2007-03-28 19:09:17
200
Erlang备忘:parallel map
[url]http://www.pkblogs.com/montsamu/2007/02/erlang-parallel-map-and-parallel.html[/url]Joe Armstrong 提出了一个pmap实现[code]pmap(F, L) -> S = self(), Pids = map(fun(I) -> spaw...
2007-03-26 20:59:46
145
Erlang网络编程-packet参数
gen_tcp:listen(Port, Options),Options 为一个参数列表之前介绍过 {active, Boolean} 这个 opt,现在介绍一下 {packet, PacketType} [quote]{packet, PacketType} (TCP/IP sockets) Defines the type of packets to use for a ...
2007-03-26 20:20:51
170
Erlang网络编程-Binary
在Erlang里面,Binary支持强大的模式匹配,这为编写网络通讯程序提供了便利。比如一个协议串,格式如下HEADER(2 Bytes) ID (1 Byte) MESSAGE(10 Bytes)可以这样匹配有一些协议,头部是接下来数据的长度,这样就更简单了一个IPV4的头部可以这样表示[quote] = Packet.[/quote]具体...
2007-03-26 20:09:21
164
Comprehensive Erlang Archive Network
CEAN,即Comprehensive Erlang Archive Network。它提供了Erlang的一个最小内核,并能够通过网络安装的方式按需安装数百个packages。这让我们安装yaws这样的大玩意儿也能够像在Ruby中“gem install rails”那样简单。CEAN默认已经有stdlib和kernel两个包,对于一般的场合是完全够用的,而且自带的Console相比dos co...
2007-03-26 19:41:05
125
Ubuntu下编译安装Erlang
Ubuntu的Synaptic里面其实可以直接安装erlang,如果要安装最新版本,还是下载源码包编译吧。CEAN ([url]http://cean.process-one.net/[/url]) 可能是另外一个不错的选择。需要的库[url]http://packages.debian.org/testing/interpreters/erlang-base-hipe[/url]...
2007-03-26 19:34:53
122
Erlang中的half-sync/half-async和Leader/Followers 模式
http://www.iteye.com/article/60414里面,谈到了半同步/半异步和领导者/追随者模式,在Erlang里面可以很简单得实现它下面看看 half-sync/half-async 的例子[code]start() -> case gen_tcp:listen(80, [binary, {nodelay,true...
2007-03-26 14:29:02
262
Erlang,Learning
1. Erlang 是什么一种“小众”语言(排名50之外)一种函数式语言 (变量只能赋值一次)一种动态类型语言(变量类型在运行时决定,代码需要编译后才能执行,与Python,Ruby等不一样)一种强类型语言一种面向并发(Concurrency Oriented)的语言《一场茶杯里的风暴》(刊于《程序员》06年9、10期),《[url=http://blog.mylkc...
2007-03-26 13:45:03
98
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人