代码改变世界

随笔分类 -  MochiWeb

mochiweb 源码阅读(二十)

2012-08-25 00:42 by rhinovirus, 1967 阅读, 收藏, 编辑
摘要: 大家好,今天继续上一篇没讲完的mochiweb_request:not_found/1函数:%% @spec not_found(ExtraHeaders) -> response()%% @doc Alias for <code>respond({404, [{"Content-Type", "text/plain"}%% | ExtraHeaders], &lt;&lt;"Not found."&gt;&gt;})</code>.not_found(ExtraHeade 阅读全文

mochiweb 源码阅读(十九)

2012-08-23 00:10 by rhinovirus, 1794 阅读, 收藏, 编辑
摘要: 大家好,好几天没跟新了,今天继续来和大家分享mochiweb源码,上一篇,我们看到了mochiweb_request:get(path)分支,这一篇我们依然回到mochiweb_example_web:loop/2继续往下:loop(Req, DocRoot) -> "/" ++ Path = Req:get(path), try case Req:get(method) of Method when Method =:= 'GET'; Method =:= 'HEAD' -> case Path of ... 阅读全文

mochiweb 源码阅读(十八)

2012-08-14 00:07 by rhinovirus, 2108 阅读, 收藏, 编辑
摘要: 大家好,这两天简单测试了下 erlang-mysql-driver,erlang-mysql-driver 是 MySQL 的 Erlang 语言驱动程序。代码可通过 SVN 获取: svn checkout http://erlang-mysql-driver.googlecode.com/svn/trunk/ erlang-mysql-driver-read-only 以后再分享给大家,今天继续来看mochiweb源码,依然是看下面几行: {Protocol, _, http_eoh} when Protocol == http orelse Protocol == ... 阅读全文

mochiweb 源码阅读(十七)

2012-08-11 02:37 by rhinovirus, 2038 阅读, 收藏, 编辑
摘要: 大家好,今天周五,继续来和大家一起分享mochiweb源码。最近我也是在看百度连城翻译的《Erlang/OTP并发编程实战》,其中第11章:为缓存添加HTTP接口,有这本书的朋友可以翻看下,这里介绍的内容,有助于大家理解mochiweb源码。 上一篇,我们讲到了mochiweb_http:headers/5函数,当所有协议头解析完毕后会有一个空行,它标志着报文头部的结束,剩下的便是消息正文。 {Protocol, _, http_eoh} when Protocol == http orelse Protocol == ssl -> Req = new... 阅读全文

mochiweb 源码阅读(十六)

2012-08-06 23:57 by rhinovirus, 1747 阅读, 收藏, 编辑
摘要: 大家好,几天没跟新这个系列了,忙着考驾照,今天继续来跟大家分享mochiweb源码,上一篇我们讲到了mochiweb_http:handle_invalid_request/1函数,这一篇,我们来看下,正确的逻辑处理,再讲这之前,还有个地方跟大家提下,就是如果mochiweb_http:request/2函数,在使用receive读取消息时,如果发生超时,则是简单的关闭套接字以及退出进程,代码如下: after ?REQUEST_RECV_TIMEOUT -> mochiweb_socket:close(Socket), exit(normal) e... 阅读全文

mochiweb 源码阅读(十五)

2012-08-03 00:54 by rhinovirus, 1991 阅读, 收藏, 编辑
摘要: 大家好,这一篇我们接着上一篇最后提到的mochiweb_http:request/2继续来和大家分享mochiweb源码:request(Socket, Body) -> ok = mochiweb_socket:setopts(Socket, [{active, once}]), receive {Protocol, _, {http_request, Method, Path, Version}} when Protocol == http orelse Protocol == ssl -> ok = mochiweb_socket:se... 阅读全文

mochiweb 源码阅读(十四)

2012-08-01 00:43 by rhinovirus, 1732 阅读, 收藏, 编辑
摘要: 大家好,下了一天雨,十分凉爽,继续来看mochiweb源码,这一篇,我们来消化下上一篇留下的问题。 首先是mochiweb_socket_server:handle_cast/2关于{accepted, Pid, Timing}消息的处理:handle_cast({accepted, Pid, Timing}, State=#mochiweb_socket_server{active_sockets=ActiveSockets}) -> State1 = State#mochiweb_socket_server{active_sockets=1 + Activ... 阅读全文

mochiweb 源码阅读(十三)

2012-07-31 00:59 by rhinovirus, 1811 阅读, 收藏, 编辑
摘要: 大家好,这一篇我们来看下上一篇没有讲完的mochiweb_acceptor:init/3函数中,关于mochiweb_socket:accept/1函数返回值的处理:init(Server, Listen, Loop) -> T1 = now(), case catch mochiweb_socket:accept(Listen) of {ok, Socket} -> gen_server:cast(Server, {accepted, self(), timer:now_diff(now(), T1)}), call_... 阅读全文

mochiweb 源码阅读(十二)

2012-07-29 14:02 by rhinovirus, 1944 阅读, 收藏, 编辑
摘要: 今天也不上班,在家歇着,早起看看书,看看mochiweb源码,这一篇接着昨晚的那篇继续跟大家分享,我们从昨天没看完的mochiweb_acceptor:init/3函数继续往下看:init(Server, Listen, Loop) -> T1 = now(), case catch mochiweb_socket:accept(Listen) of {ok, Socket} -> gen_server:cast(Server, {accepted, self(), timer:now_diff(now(), T1)}), ... 阅读全文

mochiweb 源码阅读(十一)

2012-07-29 02:06 by rhinovirus, 1647 阅读, 收藏, 编辑
摘要: 大家好,今天周六,继续接着上一篇,跟大家分享mochiweb源码。上一篇,最后我们看到了mochiweb_socket_server:listen/3函数:listen(Port, Opts, State=#mochiweb_socket_server{ssl=Ssl, ssl_opts=SslOpts}) -> case mochiweb_socket:listen(Ssl, Port, Opts, SslOpts) of {ok, Listen} -> {ok, ListenPort} = mochiweb_socket:port(Listen... 阅读全文

mochiweb 源码阅读(十)

2012-07-27 01:19 by rhinovirus, 2176 阅读, 收藏, 编辑
摘要: 大家晚上好,这几天忙着练车,开车真是体力活呀,累的够呛,到家就洗洗睡了,因为是下午1点到8点练车,倒是给了我不少时间看书,《Erlang/OTP并发编程实战》这本书不建议当作入门Erlang书,建议先看完《Erlang程序设计》这本,也可以两本结合着看。不管怎么说,这本书确实很给力,学到不少知识。对了,顺便告诉所有Erlang开发者一个好消息,《Learn You Some Erlang for Great Good! a Beginner's Guide》这本书现在由淘宝褚霸来翻译,算是下一本比较值得期待的Erlang书吧。 好了,回到今天的正题,我们继续来阅读mochiweb源码。 阅读全文

mochiweb 源码阅读(九)

2012-07-24 10:06 by rhinovirus, 1633 阅读, 收藏, 编辑
摘要: 今天还是一样,要去驾校练车,早起不用上班,看看mochiweb源码,继续和大家分享。昨天有个函数给跳过了,今天看了下,也有不少知识点,还是补下吧,函数:mochiweb_socket_server:parse_options/1,完整代码如下:parse_options(State=#mochiweb_socket_server{}) -> State;parse_options(Options) -> parse_options(Options, #mochiweb_socket_server{}). 如果传递的是配置是#mochiweb_socket_server{}记录... 阅读全文

mochiweb 源码阅读(八)

2012-07-23 02:00 by rhinovirus, 1757 阅读, 收藏, 编辑
摘要: 看来昨天的大雨给北京确实带来了重创,早上出门去海淀驾校,北清路辛庄桥路段直接就堵死了,结果好不容易慢慢走到红绿灯那,才发现前方正抽水,封路了。唉,晚上回到家,上微博发现此次因灾遇难者37人,愿逝者安息!什么时候政府才能拿我们纳税人的钱办点正事,别整天搞形象工程了,来北京那么多年了,每次大雨都没能引起重视,也别搞什么引咎辞职了,直接抓了判刑吧。唉,牢骚发的有点多了,还是继续我们的主题吧,继续跟大家分享mochiweb源码。 在上一篇最后,我们提到mochiweb_http:start/1函数,其中就一行代码,如下:start(Options) -> mochiweb_socket_s... 阅读全文

mochiweb 源码阅读(七)

2012-07-22 00:35 by rhinovirus, 1760 阅读, 收藏, 编辑
摘要: 早上去公司待了半天,回来时,雨正大,虽然媳妇早上提前把伞塞我包里,但是小伞还是顶不住激情澎湃的大雨,到家已经是落汤鸡了。不过,还是蛮喜欢雨后的安静。虽然小区楼下蛙声不断,但还是蛮适合看书,Coding的。 上一篇文章最后,提到了mochiweb_http:start/1函数,这一篇,我们继续往下看:%% @spec start(Options) -> ServerRet%% Options = [option()]%% Option = {name, atom()} | {ip, string() | tuple()} | {backlog, integer()}%% ... 阅读全文

mochiweb 源码阅读(六)

2012-07-20 00:45 by rhinovirus, 2054 阅读, 收藏, 编辑
摘要: 大家好,最近比较忙,游戏忙着上各个主流的大平台,事情比较多。还记得上次给大家推荐的Erlang的书吗?《Erlang/OTP并发编程实战》这本书在china-pub上已经有卖了,想学Erlang的朋友,可以买一本看看,地址:http://product.china-pub.com/3662181。一不小心又做广告了,呵呵,好书嘛,总是忍不住推荐给大家。 回到今天的正题,继续和大家分析mochiweb源码,在上一篇,我们总结了下mochiweb_example_deps 这个模块的作用,以及简单介绍了下mochiweb_example的启动。这一篇,我们详细看下启动过程。 首先,我们看下... 阅读全文

mochiweb 源码阅读(五)

2012-07-17 23:42 by rhinovirus, 2146 阅读, 收藏, 编辑
摘要: 今天下班比较早,吃完饭继续跟大家分享mochiweb源码。上一篇,我们看完了 mochiweb_example_deps:ensure/0,接下来回到mochiweb_example:start/0,代码如下:%% @spec start() -> ok%% @doc Start the mochiweb_example server.start() -> mochiweb_example_deps:ensure(), ensure_started(crypto), ensure_started(mochiweb_example). 继续往下看,剩下两行代码也很简单,一... 阅读全文

mochiweb 源码阅读(四)

2012-07-17 00:19 by rhinovirus, 2047 阅读, 收藏, 编辑
摘要: 大家好,最近Erlang社区好像又火起来了。这里推荐坚强2002同学推荐的Erlang QA站点,这里也顺便推荐给大家,地址:http://langref.org/erlang,也希望大家有问题,可以到上面去留言解决。当然也可以到成立涛创建的Erlang问答,地址:http://erlangqa.com/,也希望对Erlang有兴趣的朋友加入到Erlang社区,为更多人学习Erlang来提供帮助。 好了,回到正题,上一篇我们还没讲完,这篇我们继续看,上一篇,讲到下面这个代码处: lists:filter(fun filelib:is_dir/1, l... 阅读全文

mochiweb 源码阅读(三)

2012-07-16 08:43 by rhinovirus, 2570 阅读, 收藏, 编辑
摘要: 大家好,周末总是过的那么快,周六跟北京几个Erlang开发者去森林公园玩了一天,打打三国杀,下下象棋,聊聊天。能多出去走走,认识认识其他的Erlang开发者,还是挺爽的一件事。晚上闲下来,静下心来跟大家继续分享mochiweb源码。 在上一篇,我们简单了学习了几个Erlang的系统函数,以及mochiweb_example_deps:deps_on_path/0 函数,这一篇我们继续从mochiweb_example_deps:new_siblings/1 函数往下看:%% @spec new_siblings(Module) -> [Dir]%% @doc Find new sibli 阅读全文

mochiweb 源码阅读(二)

2012-07-14 00:09 by rhinovirus, 4363 阅读, 收藏, 编辑
摘要: 大家好,几天没跟新了,在上一篇,我们简单介绍了mochiweb这个项目,以及下载,编译,创建mochiweb的源码以及示例。今天继续跟大家来分析mochiweb这个项目,跟之前分析cowboy的方法一样,我们找到切入口点,来一一分析每个函数的功能,作用,下面看下上一篇创建的示例都有哪些文件,如下图: 这里除了keepalive.erl 是我从官方example考过来以外,其他为上一篇创建的例子的源码。 我不一一介绍这几个文件了,参考我一直给大家推荐的Erlang OTP 设计原理。好好看几遍,你就对Erlang应用程序有一定的了解了。 我们从运行程序的 mochiweb_exam... 阅读全文

mochiweb 源码阅读(一)

2012-07-09 23:51 by rhinovirus, 9064 阅读, 收藏, 编辑
摘要: 博客园的朋友们,这次又有个机会让你们了解Erlang这门不错的语言,赶紧跟随我的步伐吧,抛开你现在拥有的,买本Erlang书,或者下本电子书,开始Erlang的世界吧。这次又是新的征程,让我们来了解mochiweb这个不错的http服务器。 这次的标题修改为源码阅读,而不是源码分析,感觉自己还没到源码分析的那个水平吧,所以称做源码阅读更合适一些。这次我希望自己不再是单纯的看代码,还是那句话,多动手吧,看会了,自己写未必写的出来,所以多尝试写一些实例代码。 好了,回到今天的正题吧,之所以选择 mochiweb,个人感觉是这个项目还是Erlang入门必看的项目吧,许多大牛也推荐新手去看看,... 阅读全文