摘要:大家好,几天没跟新了,在上一篇,我们简单介绍了mochiweb这个项目,以及下载,编译,创建mochiweb的源码以及示例。今天继续跟大家来分析mochiweb这个项目,跟之前分析cowboy的方法一样,我们找到切入口点,来一一分析每个函数的功能,作用,下面看下上一篇创建的示例都有哪些文件,如下图: 这里除了keepalive.erl 是我从官方example考过来以外,其他为上一篇创建的例子的源码。 我不一一介绍这几个文件了,参考我一直给大家推荐的Erlang OTP 设计原理。好好看几遍,你就对Erlang应用程序有一定的了解了。 我们从运行程序的 mochiweb_exam... 阅读全文
mochiweb 源码阅读(一)
2012-07-09 23:51 by rhinovirus, 9072 阅读, 7 推荐, 收藏, 编辑
摘要:博客园的朋友们,这次又有个机会让你们了解Erlang这门不错的语言,赶紧跟随我的步伐吧,抛开你现在拥有的,买本Erlang书,或者下本电子书,开始Erlang的世界吧。这次又是新的征程,让我们来了解mochiweb这个不错的http服务器。 这次的标题修改为源码阅读,而不是源码分析,感觉自己还没到源码分析的那个水平吧,所以称做源码阅读更合适一些。这次我希望自己不再是单纯的看代码,还是那句话,多动手吧,看会了,自己写未必写的出来,所以多尝试写一些实例代码。 好了,回到今天的正题吧,之所以选择 mochiweb,个人感觉是这个项目还是Erlang入门必看的项目吧,许多大牛也推荐新手去看看,... 阅读全文
Cowboy 源码分析(二十八)
2012-07-09 08:03 by rhinovirus, 1631 阅读, 1 推荐, 收藏, 编辑
摘要:大家好,上一篇我们总结了cowboy_examples这个例子启动时,进程的启动总结,这一篇,我们看下cowboy如何响应来自浏览器的请求。 首先我们看下,在上一篇cowboy_acceptors_sup启动的100个cowboy_acceptor工作进程,而这个工作进程在初始化时,同时等待来自浏览器的Socket连接,代码如下:-spec start_link(inet:socket(), module(), module(), any(), pid(), pid()) -> {ok, pid()}.start_link(LSocket, Transport, Protocol,... 阅读全文
Cowboy 源码分析(二十七)
2012-07-08 12:42 by rhinovirus, 1491 阅读, 0 推荐, 收藏, 编辑
摘要:大家好,从2012-05-15号开始的第一篇Cowboy源码分析,到上一篇2012-07-04的第二十六篇为止,我们已经完整的看完了,Cowboy的启动,处理来自浏览器的请求,响应等整个过程。这这一篇,我们来做个总结。毕竟这是我第一个接触的Erlang开源项目,今天回过头来,从整体上去看这个项目。 首先是cowboy应用的启动,我们从observer上可以看到,当该应用程序启动时,启动进程情况,如下图: 我们右键可以查看该进程的相关信息,这点observer做的还是挺方便的,如下图: 下图为打开的进程信息窗口: 从上面可以很容易的获取一些和该进程相关的信息,比如进程名称... 阅读全文
Ubuntu 使用Git 使用
2012-07-07 00:11 by rhinovirus, 36528 阅读, 5 推荐, 收藏, 编辑
摘要:1. 首先到 https://github.com/这里创建一个帐号。 2. 创建Repository,到个人首页以后,点击 New repository,如下图: 3. 添加该代码库名称,描述,其他如下图: 4. 点击 Create repository,完成创建,会显示如下图: 这张图是上传代码到github仓库的关键。 5. 安装Git客户端 打开终端,输入如下指令: sudo apt-get install git 因为我本地之前就安装过,所以这里提示已经是最新的: 6. Generating SSH Keys(生成 SSH 密钥),按照下面的官方... 阅读全文
Erlang observer 简单使用
2012-07-06 07:40 by rhinovirus, 4715 阅读, 2 推荐, 收藏, 编辑
摘要:昨晚的大雨带来今天的凉爽,早睡早起。 这一篇,给大家介绍个Erlang工具:observer。 简介(摘自erlang doc): A GUI tool for observing an erlang system. The observer is gui frontend containing various tools to inspect a system. It displays system information, application structures, process information, ets or mnesia tables and a fronte... 阅读全文
Cowboy 源码分析(二十六)
2012-07-04 00:30 by rhinovirus, 1465 阅读, 3 推荐, 收藏, 编辑
摘要:大家好,这边给大家推荐一本马上要上市的书《Erlang/OTP并发编程实战》,想要学习Erlang的朋友不要错过,这本书的作者是Martin Logan, Eric Merritt, Richard Carlsson,译者是百度的连城,具体可以看下这里:http://www.ituring.com.cn/book/828 好了,广告发完了,回到今天的正题,继续跟大家分享Cowboy源码。上一篇,讲完了 cowboy_http_req:body_length/1 函数,今天继续往下看,如图: 这里返回的 Length = 0,所以这里返回 {done, Req3#http_req{b... 阅读全文
Cowboy 源码分析(二十五)
2012-07-03 01:36 by rhinovirus, 1294 阅读, 2 推荐, 收藏, 编辑
摘要:大家好,之前想改改熬夜的习惯,无奈熬夜的习惯改不过来啊,毕竟熬了几年了,改起来确实费劲,那就继续学习吧,好几天没跟新这个系列了,今天接着上一篇未讲完的继续跟大家分享。stream_body(Req=#http_req{body_state=waiting}) -> case parse_header('Transfer-Encoding', Req) of {[<<"chunked">>], Req2} -> stream_body(Req2#http_req{body_state= {stream, fun cowb.. 阅读全文
Cowboy 源码分析(二十四)
2012-06-29 08:40 by rhinovirus, 1468 阅读, 0 推荐, 收藏, 编辑
摘要:大家好,调整下作息时间,以后尽量不熬夜写文章了,改成早上早起写。试试这样的作息习惯吧,不是有句话说吗,早睡早起精神好,其实主要是熬夜确实对身体不太好。好了,回归正题,上一篇,我们分析到 cowboy_http_protocol:terminate_request/3 函数第一行,今天我们来看下一行,也就是:next_request(Req, State, HandlerRes). cowboy_http_protocol:next_request/3函数代码如下:-spec next_request(#http_req{}, #state{}, any()) -> ok.next_req 阅读全文
Cowboy 源码分析(二十三)
2012-06-27 01:09 by rhinovirus, 1073 阅读, 0 推荐, 收藏, 编辑
摘要:大家好,上一篇在文章的最后我们提到cowboy_http_protocol:terminate_request/3 函数,今天我们继续往下看:-spec terminate_request(any(), #http_req{}, #state{}) -> ok.terminate_request(HandlerState, Req, State) -> HandlerRes = handler_terminate(HandlerState, Req, State), next_request(Req, State, HandlerRes). 这个函数就两行代码: 首先调用c... 阅读全文