自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 146

原创 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 144

原创 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 102

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 102

[笔记]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 121

一种简单的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 365

[笔记]用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 121

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 123

小测试:两种构造字符串方式的性能对比

先推荐两篇文章: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 135

对Socket的{active, true}参数进行一些测试

以前不是很了解Erlang网络编程中流量控制,现在做一下笔记。Erlang中Socket设置了{active, true}之后,接收到的网络消息会通过{tcp, Socket, Data}的格式主动发送给进程,这样做有个弊处就是没有做流量控制。要是有个客户端疯狂发包过来,服务器不做处理就等着堆溢出。在《Programming Erlang》的14.2里面,介绍可以使用 {active,...

2008-03-02 22:39:55 336

高阶函数中变量的绑定和匹配问题

一直一来没有留意到这个问题,今天偶尔在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 103

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 247

对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 93

读 Programming Erlang

《Programming Erlang》Joe的新书,买了个电子版,在花了一些时间读了一下之后,发发牢骚,写写读后感。书不太厚,也不薄,500多页,但是单纯附录就占了100+,Appendix FModule and Function Reference,有凑页面的嫌疑。有仁兄打印了整本书,叠起来转头那么厚,其实后面那一部分没有什么必要去打印。此书中规中矩,跟n年前的《Conc...

2007-07-17 12:21:09 120

修正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 100

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 237 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 461

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 114

一个简单的列表操作性能测试

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 85

用Erlang写了个解八数码的小程序

NOTE:修正了一个Bug,加入了能否求解的数学算法判断,代码更新了算法学的不好,一直没有写什么算法程序。之前一直想写个A*的,研究了一下,最终还没有写成。昨晚花了点时间,用Erlang写了个解八数码的程序,用的是最简单的A*,程序没有做什么优化,中规中矩,偷懒用模式匹配来处理移动情况。如果想看更加优雅的Erlang算法程序,可以查看我在附件提供的sudoku.erl,里面大量使用了高阶函...

2007-05-21 21:50:09 102

Erlang中频繁发送远程消息要注意的问题

注:这篇文章可能会有争议,欢迎提出意见在Erlang中,如果要实现两个远程节点之间的通信,就需要通过网络来实现,对于消息发送,是使用TCP。如果要在两个节点间频繁发送消息,比如每秒几百上千条,那样就要注意了。无论是网游服务器开发的书籍,或是经验老道的工程师,都会告诉你,在发送数据包时,尽可能把小的消息组合为一个比较大的包来发送,毕竟一个TCP包的头也很大,首先是浪费带宽,其次调用底...

2007-05-01 21:09:00 140

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 123

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 265

使用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 75

erlang module pg2

《轻松实现可伸缩性,容错性,和负载平衡的大规模多人在线系统》一文里面对“Erlang的分布式进程组(Distributed Named Process Groups)”大吹特吹,就是说的pg2这个module。文档那里虽然写了支持分布式节点,但是并没有说如何如何,只提供了一个join(Name, Pid)。看了一下openpoker的源码,原来很简单,对于连接上的node,用 which_gr...

2007-04-09 19:58:56 114

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 81

读《谈分布式网络程序设计》,思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 97

Erlang 的分布通讯安全策略

Erlang的分布式通讯安全策略,可以归结为 All or None。要不拥有全部的权限,要不就完全没有。它的节点安全设置,是通过一个magic cookie来实现的。这个文件默认放到$HOME/.erlang.cookie ,文件内容是字符串。当启用分布通讯的时候,这个magic cookie就很重要了。如果在命令行里面带上 -setcookie ,则在当前节点使用这个coo...

2007-03-28 19:09:17 159

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 117

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 139

Erlang网络编程-Binary

在Erlang里面,Binary支持强大的模式匹配,这为编写网络通讯程序提供了便利。比如一个协议串,格式如下HEADER(2 Bytes) ID (1 Byte) MESSAGE(10 Bytes)可以这样匹配有一些协议,头部是接下来数据的长度,这样就更简单了一个IPV4的头部可以这样表示[quote] = Packet.[/quote]具体...

2007-03-26 20:09:21 114

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 90

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 99

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 206

Erlang,Learning

1. Erlang 是什么一种“小众”语言(排名50之外)一种函数式语言 (变量只能赋值一次)一种动态类型语言(变量类型在运行时决定,代码需要编译后才能执行,与Python,Ruby等不一样)一种强类型语言一种面向并发(Concurrency Oriented)的语言《一场茶杯里的风暴》(刊于《程序员》06年9、10期),《[url=http://blog.mylkc...

2007-03-26 13:45:03 75

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除