D.H.Q的烂笔头

Just code for fun~

Articles about: Erlang

Erlang 与 WebSocket 之间的通讯交互

WebSocketHTML5 引入的新功能,它提供了一种数据可以在浏览器与服务器间双向、按序到达的实时通讯技术,可以说,它是 WEB 应用程序上的传输协议。

相对于传统的的 CometAjax 轮询(polling)、长轮询(long-polling)以及流(streaming)等数据通讯方案,WebSocket 跟服务器连接时所发送的数据量更少,数据传输速度更快,而且它是一种服务器向客户端主动推送数据的技术,因此,它比前两者更具时效性。

WebSocket 握手协议

继续阅读 »

利用 Luerl 在 Heroku 上搭建基于 Erlang 的 Lua Web Shell

其实刚开始接触 Lua 时,就想着能不能也做一个像之前的 Erlang Web Shell 那样方便调试 Erlang 代码的东西出来。一番了解后,Lua 里的 loadstring 函数和 loadfile 函数可以动态解释 Lua 的表达式,不过经过一些测试,发现需要的执行结果却很难返回来,例如 print 函数输出的结果是捕获不到的,解析的结果返回不了给前端,那也没用。喜闻乐见的是,后来无意中发现了 Luerl 这么一个东西。

What's Luerl

Luerl 是一个用纯 Erlang 写的 Lua 解释器,你可以在 Erlang 里执行符合 Lua 语法的表达式和调用其内置的模块函数方法,或者是执行调用一个外部的 Lua 文件。可以说,它纯粹是一个在 Erlang 里实现的 Lua VM。

Luerl 的安装很简单,直接从 github 上载下来,然后到根目录 make 一下就行:

git clone git://github.com/rvirding/luerl.git
make

继续阅读 »

在 Heroku 上部署 Erlang 的 CMS -- Zotonic

对于 Zotonic 部署的环境, Heroku 是最合适不过了,提供免费的 Erlang 环境,还有对 PostgreSQL 数据库的支持,市面上是鲜有这种云服务平台。这得益于 Heroku 的 Cedar 平台架构,让 WEB 应用程序运行在任何语言的运行时栈(runtime stack)成为了可能。 其实之前在 twitter 上也有人提过在 Heroku 上部署 Zotonic 的问题,不过官方给出的回复是觉得 Zotonic 的架构不适合在 Heroku 上部署,还是建议在 VPS 上独立搭建比较好些,也许官方没时间做这种移植吧(前段时间人手不足,在讨论组里发广告招一个开发者进核心开发团队)。

不过有趣的事总会激发人去做,一位来自法国的 Zotonic 开发者 -- Eric,就做了一个 Zotonic 在 Heroku 上的构建包(buildpack),成功地把 Zotonic 移植到 Heroku 上。出于好奇,我也去看了下构建包的使用说明,不过要吐槽下构建包的介绍 README 写得相当简单,很多安装细节都省略了,不折腾还不给你搭起来了。这里先奉上 demo 地址:http://genevent.herokuapp.com/,下面就是这个折腾过程的大概记录: 

安装配置 Heroku 的开发环境

其实之前《在 heroku 上部署 webmachine + mochiweb + erlydtl 组合的Erlang Web应用》也提到过 heroku 开发环境的配置,这里就不赘述了,无非就是:

继续阅读 »

CentOS(Fedora)下源代码编译安装 erlang 环境的 shell 脚本

填上 erlang 源代码下载地址(erl_url)和安装路径(prefix),然后执行这个 shell 脚本就行。

#!/bin/sh



erl_url="http://www.erlang.org/download/otp_src_R16B.tar.gz"

prefix="/usr/local/erlang" 


yum update -y
yum upgrade -y

#yum groupinstall -y "Development Tools" "Perl Support"
yum groupinstall -y "Development Tools"

yum install -y kernel-devel m4 fop ncurses-devel openssl-devel tk unixODBC unixODBC-devel

if [ ! -s "./erlang_otp.tar.gz" ]; then
    wget -c -O erlang_otp.tar.gz $erl_url
fi

tar zxvf erlang_otp.tar.gz
cd ./otp_src*/

./configure --prefix=$prefix --without-javac \
    --enable-kernel-poll \
    --enable-threads \
    --enable-dynamic-ssl-lib \
    --enable-shared-zlib \
    --enable-smp-support \
    --enable-hipe 

make && make install

#if [ ! -s "~/.bashrc" ]; then
#    touch ~/.bashrc
#fi
#echo 'export PATH="/usr/local/erlang/bin:$PATH"' >> ~/.bashrc
#source ~/.bashrc
ln -sfv $prefix/bin/* /usr/local/bin/

yum clean all

erl -noshell -eval "erlang:display('Erlang Success Install')" -s init stop

上面脚本在 CentOS 6.4 和 Fedora 17 下正常运行安装。

继续阅读 »

利用 jsonp 突破 ajax 同源策略限制进行跨域请求

最近瞎搞了一个 Erlang Web Shell -- ErlShell,一直想把它的前端框架移植到敝站上,然后用 ajax 的方式调用部署在 heroku 上的远程接口。不过大多数浏览器出于安全考虑,ajax 都有个同源策略(same origin policy)限制,就是 ajax 的 XmlHttpRequest 方法只能在当前域名下被调用,不能以 ajax…

继续阅读 »
返回顶部