Erlang
坚强2002
这个作者很懒,什么都没留下…
展开
-
实用主义的思考与学习 读书笔记
手头的这本书是"Pragmatic Thinking and Learning: Refactor Your Wetware" 直译过来就是"实用主义的思考与学习:重构你的思维过程" 中文版被译作为"程序员的思维修炼-开发认知潜能的九堂课". 这本书首先让我想到的是另外一本讲开发者思维方式的书:"系统化思维导论",不过很可惜温伯格的那本书的中文版被翻译得简直不知所云,糟糕至极.而且原创 2012-11-28 15:15:23 · 8744 阅读 · 0 评论 -
[Erlang 0095] 善用 Erlang module_info
在.net里面我们可以使用Attribute和反射在运行时完成对程序集元数据的解析; 下面是C#写得一个简单的例子: Worker1 worker1 = new Worker1 (); var attribute = worker1.GetType().GetCustomAttribute(typeof( ProcessOrderAttribute)) as Proces原创 2012-12-20 22:24:27 · 9191 阅读 · 0 评论 -
Storm-Like Projects
类似Storm几个项目,立此存照,备忘. StreamBase http://www.streambase.com/ESper http://esper.codehaus.org/about/nesper/nesper.htmlHStreaming http://www.hstreaming.com/Yahoo S4 http://incubator.apache.org/原创 2012-12-20 22:25:17 · 9340 阅读 · 0 评论 -
[Erlang 0096] RabbitMQ Boot Step
之前提到[链接]RabbitMQ会把启动过程分成若干阶段,按照依赖关系进行启动.rabbit_boot_step里面的requires 和 enables配置节是描述这种依赖关系的关键.require约定了该项目启动所依赖的前置条件,enables 表示当前项目启动之后可以启动什么;如果有多个项目enable一个项目(比如:external_infrastructure),要等这些项目都启动了原创 2012-12-20 22:25:55 · 9849 阅读 · 0 评论 -
Twitter Storm Real-Life App 排错记
Twitter Storm号称是'实时版本的Hadoop',正好团队在产品中要用,折腾了一下,en,是真折腾;没有Java背景,时间有一些浪费在Java相关的环境和项目维护上. Storm简介 Storm is a free and open source distributed realtime computation system. Storm mak原创 2012-12-20 22:23:16 · 9627 阅读 · 0 评论 -
[Erlang 0094] Erlang 杂记 VI
最近一直忙Storm相关的东西,今天抽时间整理一下Erlang笔记,这一次的内容主要是一些开源项目:Mock ,worker pool...... 安装Erlan/OTP 之前写过一个关于Centos安装Erlang的文章,还是有人把Erlang编译安装这件事情做到了极致:Kerl Easy building and instal原创 2012-12-20 22:22:15 · 9826 阅读 · 0 评论 -
[Erlang 0100] make_ref 与 Selective Receive
春节前后出于对STM和Lisp宏的好奇一直在关注Clojure,新年过后对于Erlang开发者还是有不少好消息,有两本Erlang的新书出版:第一本是O'Reilly公司的小册子"Introducing Erlang";一本是著名的LYSE,这本书终于从有了正式出版的版本,在此之前有热心的网友编译成电子书,印刷版排版精美保持了原站图文并茂的风格.目前这两本电子书都很容易下载到电子版,请自行搜索.原创 2014-01-01 16:08:58 · 7395 阅读 · 0 评论 -
Clojure 宏
开始接触Lisp宏是看Ansi Common Lisp的第十章,Lisp宏定义相关的话题都已经提到,有兴趣的可以看看.ACL的目前已经在Github上有中文译本 [第十章],不要太担心Clojure与Lisp的语法差异,可以看下面这个对照表 http://clojure.org/lisps . Clojure 宏给人留下第一印象就是各种符号` ' ~ ~@ ,那原创 2014-01-01 16:17:42 · 7844 阅读 · 0 评论 -
[Erlang 0109] From Elixir to Erlang Code
Elixir代码最终编译成为erlang代码,这个过程是怎样的?本文通过一个小测试做下探索.原创 2014-09-12 10:09:16 · 6088 阅读 · 0 评论 -
Elixir - Hey, two great tastes that go great together!
这是Elixir的作者 José Valim 参与的一次技术访谈,很有料,我们可以了解Elixir的一些设计初衷,目标等等. 原文在: http://rubyrogues.com/114-rr-elixir-with-jose-valim/ Podcast 下载地址: http://traffic.libsyn.com/rubyrogues/RR114Elixir.mp3翻译 2014-09-12 10:22:44 · 6613 阅读 · 0 评论 -
[Erlang 0110] Erlang Abstract Format , Part 1
Erlang Abstract Format并不难懂,只是枯燥一点罢了,如果把Abstract Format的文档翻译出来,其实就是Erlang教科书中语法入门的部分. Erlang Abstract Format实际上是用Erlang代码的AST,下面通过一些真切的实例代码了解一下它的一些细节. 首先,Erlang Abstract Format里面包含一些概念,我会在下面的描述中把涉及到的原创 2014-09-12 10:12:36 · 6207 阅读 · 0 评论 -
[Erlang 0111] Erlang Abstract Format , Part 2
上回书,我们说到飞天玉虎蒋伯芳来到蜈蚣岭,不是,重来,上回咱们说到可以在Erlang Shell里面手工构造,加载并调用一个模块.在那个demo里面,我把多个Form单独生成出来,最后放在一起做compile:forms,是不是可以简单点?我们先看完整的module代码,erl_scan:string之后是什么样子的: erl_syntax 1原创 2014-09-12 10:13:24 · 6002 阅读 · 0 评论 -
[Erlang 0112] Elixir Protocols
Why Elixir 为什么要学习Elixir?答案很简单,为了更好的学习Erlang.这么无厘头的理由? Erlang语法设计几乎没有考虑过取悦开发者,所以学习之初的门槛略高.对于已经克服了最初语法障碍的同学,Elixir其实没有什么吸引力. 在Elixir之前已经有很多类似的项目,比如http://lfe.github.io Elixir类似思路的还有原创 2014-09-12 10:19:20 · 6232 阅读 · 1 评论 -
Erlang Resources 小站 2013年7月~12月资讯合集
Erlang Resources 小站 2013年7月~12月资讯合集,方便检索. 附 2013上半年盘点: Erlang Resources 小站 2013年1月~6月资讯合集 小站地址: http://site.douban.com/204209/ 七月 Clojure in the Largehttp://www.infoq.com/presentations/Clojure-Larg原创 2014-09-17 12:23:23 · 6303 阅读 · 0 评论 -
2014值得期待的Erlang两本新书
在2014年的开头就有这样一个令人振奋的好消息,Erlang有一本新书即将出版 《The Erlang Runtime System》,其作者happi在2013年3月份公布了这本书的写作计划:"The plan is to have the book done by the end of 2013 and published early 2014. ",出版方是O’Reilly,按照O’Reil原创 2014-09-17 12:24:31 · 7626 阅读 · 0 评论 -
当我们谈论Erlang Maps时,我们谈论什么 Part 1
Erlang 增加 Maps数据类型并不是很突然,因为这个提议已经进行了2~3年之久,只不过Joe Armstrong老爷子最近一篇文章Big changes to Erlang掀起不小了风浪.这篇文章用了比较夸张的说法:"Records are dead - long live maps !",紧接着在国内国外社区这句话就传遍了.马上就有开发者忧心忡忡的在Stackoverflow上提问:Wil原创 2014-09-17 12:28:03 · 7666 阅读 · 0 评论 -
Erlang 杂记 V
我在知乎回答问题不多,这个问题: "对你职业生涯帮助最大的习惯是什么?它是如何帮助你的?",我还是主动回答了一下. 做笔记一开始笔记软件做的不好的时候就发邮件给自己,然后不断的回顾更新笔记;后来用OneNote,由于这玩意当时不是云同步的,硬盘坏掉的时候丢了一些数据,打击还是挺大,好多事情要从头开始再后来用过一段时间Google Wave,还以和朋友分享讨论笔记,结果,你们知道关闭服务了,费力导原创 2014-09-17 12:27:38 · 7978 阅读 · 0 评论 -
[Erlang 0093] RabbitMQ 3.0的一些变化
速记两笔,RabbitMQ 3.0的一些 Breaking Change. Mirror queue policies 还记得之前是怎样创建镜像队列的么?x-ha-policy [Link]在新版本,使用这个参数不会报错但是已经镜像不会再生效.替换方案是使用policies.这样修改的动因是:无法在运行时状态判断哪些队列是镜像队列,新方案是把镜像队列原创 2012-12-20 22:21:29 · 9535 阅读 · 0 评论 -
[Erlang 0080] RabbitMQ :VHost,Exchanges, Queues,Bindings and Channels
和RabbitMQ这个项目的缘分好奇怪,很长一段时间内是只关注源代码,真的是Erlang开源项目中的典范;现在要在项目中应用RabbitMQ,从新的视角切入,全新的感觉.仿佛旧情人换了新衣,虽是熟稔却有不曾领略的风情. RabbitMQ提供了一整套机制来处理消息的发送,接收,容错,管理,上一篇文章中我提到了一篇Rabbits and warrens的文章,是一篇非常棒的入门文章,但是里面忽略了原创 2012-11-28 15:29:15 · 9123 阅读 · 0 评论 -
[Erlang 0081] RabbitMQ Topic Exchanges Routing Rules
RabbitMQ Topic Exchange 按照规则进行消息路由,注意这里使用的Topic表达方式并不是正则表达式.在入门教程[点击链接]里面,简单描述了一下如何编写规则: * (star) can substitute for exactly one word. # (hash) can substitute for zero or more words.原创 2012-11-28 15:28:51 · 9197 阅读 · 0 评论 -
放假杂记
英雄的思路重温了史泰龙巅峰之作《绝岭雄风》 发现是史泰龙早期作品包括第一滴血系列都传达了一个简单有效的处理问题的方式: 第一步 分析最坏的结局 可能发生的最坏的情况是什么第二步 接受最坏的结果第三步 想尽办法改善最坏的结果 有同样思路的英雄比如:赌神高进,赌神2里面在痛失爱妻痛欲绝的时刻已经开始布局复仇了 钢铁侠这种也算 最典型T原创 2012-11-28 15:17:47 · 8850 阅读 · 0 评论 -
[Erlang 0092] Erlang 命令行监控工具
之前介绍过一个Erlang的Web监控工具,如果在字符终端界面呢? Erlang提供了一套监控系统负载情况的模块,可以监控CPU 磁盘 以及内存的使用情况.这些模块组织成为os_mon应用程序,启动os_mon才可以看到采集的系统信息;os_mon依赖sasl应用,我们首先要启动sasl.如果没有运行os_mon,或者系统不支持都会返回无效值;我们先动手试一下: os_m原创 2012-11-28 15:20:55 · 9772 阅读 · 0 评论 -
[Erlang 0091] 另辟蹊径构建RabbitMQ集群
除了内置的RabbitMQ集群方案,还可以通过其它一些软件或者插件来构建RabbitMQ集群.这些方案可以解决一些让我们头痛不已的问题,当然它们也不是银弹,也有使用场景的限制.事实上,对于各种集群方案我们都不能假设太多,每当连入一个节点,我们都要把这个节点当成一个全新的节点来处理,首先要完成各种声明工作. 下面的方式都没有实践过,暂且记录一笔,留点印象,后面实践之后丰富.下面的原创 2012-11-28 15:21:28 · 8883 阅读 · 0 评论 -
[Erlang 0089] RabbitMQ Exchange
之前提到了RabbitMQ是怎样维护Queue的data和metadata的.我们知道Queue在RabbitMQ对应Erlang的进程,那么Exchane是不是也是独立的Erlang进程呢?它的信息是如何维护的呢? Exchange 本质上是什么 印象中Vhost就像一个容器,Exchange Queue就像一个个零件,这些东西组装起来成为一个消息的Brok原创 2012-11-28 15:22:53 · 9168 阅读 · 0 评论 -
[Erlang 0087] RabbitMQ 集群: RAM or Disk node
上一篇文章提到,节点按照metadata的存储方式在集群中可以是RAM node 或者 disc node.这两种node有什么差别?在实际操作的时候又如何选择呢?本文回答这一问题. RAM Node 的性能优势 在集群中声明(declare)创建exchange queue binding,这类操作要等到所有的节点都完成创建才会返回:如果是内存节点就原创 2012-11-28 15:24:27 · 9673 阅读 · 0 评论 -
[Erlang 0086] RabbitMQ 集群: 从零开始
之前文章介绍了RabbitMQ的metadata, 元数据可以持久化在RAM或Disc.从这个角度可以把RabbitMQ集群中的节点分成两种:RAM Node 和 Disk Node. RAM Node只会将元数据存放在RAM,Disc node 会将元数据持久化到磁盘. 单节点系统就没有什么选择了,只允许disk node,否则由于没有数据冗余一旦重启就会丢掉所有的配置信息.但在节点环境原创 2012-11-28 15:25:04 · 9266 阅读 · 1 评论 -
MySpace Mapreduce Framework:Qizmt
临时要处理一批数据,目标是从销售订单明细获得电子商务常见的一些推荐:1.购买了XX的用户还购买了什么 2.XX经常和YY一起购买 3.XX商品被同一用户多次购买;这是典型的MapReduce场景,但由于数据量比较小22w条数据,实在不想搭Hadoop,就找了一个简单的方案搞定:Qizmt; 看下项目简介: MySpace Qizmt is a map原创 2012-11-28 15:27:16 · 9031 阅读 · 0 评论 -
[Erlang 0082] Erlang Web Servers & Frameworks
Erlang应用程序需要暴露出来Web Service接口,你该如何处理?需要做复杂点的页面展现你又将如何选择?不同规模解决方案解决不同规模的问题,这里的问题其实是你要选择哪个Web Server,你要选择哪个Web Framework? Erlang Web Servers 现在(2012-10-27)还处于活跃开发状态的Web Server有:Mochiweb Ya原创 2012-11-28 15:27:50 · 9615 阅读 · 0 评论 -
[Erlang 0079] RabbitMQ 初探
最近在项目中实践RabbitMQ,比较幸运现在除了官方网站,还有一本非常棒的书可以读:RabbitMQ in Action;这本书目前还没有中文版或者影印版,但是从网上很容易找到PDF版本和epub mobi的版本.RabbitMQ上有关于这本书的介绍文章.从本文开始我会陆续把学习实践过程中的收获记录分享出来. What is RabbitMQ?Robust messa原创 2012-11-28 15:30:00 · 9410 阅读 · 0 评论 -
[Erlang 0077] Erlang 杂记 V
[1] Erlang 语言设计的目标是并发,支持并发的核心机制是进程 "Making reliable distributed systems in the presence of sodware errors" [PDF] [2] 并发是一种不按照顺序执行的能力,并行是从处理执行的角度"是否可以同时做";还有一种角度:并发是逻辑上的同时发生(simultaneous),并行是原创 2012-11-28 15:16:57 · 8886 阅读 · 0 评论 -
[Erlang 0078] Erlang HiPE 二三事
HiPE(High Performance Erlang) 霸爷有一个一语中的的描述"erlang的hipe相当于jit, 根据语言评测有hipe支持在纯erlang的运算上会快2-3倍,这个性能的提升对于计算密集型的应用还是比较可观的。"维基百科上关于Jit的资料:即时编译(Just-in-time compilation),又称为动态翻译,是一种提高程序运行效率的方法。通常,程序有原创 2012-11-28 15:18:19 · 9398 阅读 · 0 评论 -
[Erlang 0090] RabbitMQ 集群: Mirrored Queue
之前提到过在集群环境中,队列只有元数据会在集群的所有节点同步,但是队列中的数据只会存在于一个节点;这不免让人失望:数据没有冗余容易丢数据甚至在durable的情况下,如果所在的节点当掉就要等待节点恢复.那么是不是有消息冗余的解决方案呢?是的,RabbitMQ自2.6.0开始就开始支持镜像队列(Mirrored Queue).消息会在节点之间复制,和其它的主从设计一样,它也有master和sla原创 2012-11-28 15:22:03 · 9349 阅读 · 0 评论 -
[Erlang 0088] RabbitMQ 集群 Disc Node 一点实现细节
刚开始使用rabbitmqctl 创建集群的时候会有一个问题,怎么控制节点是disk node还是ram node?翻看了rabbitmq2.8.7的代码看了一下才知道原委,记录一下: 先看下面的实验 这个实验其实之前已经做过了,这里抽出来做对比:[root@localhost scripts]#[root@localhost scrip原创 2012-11-28 15:23:44 · 10293 阅读 · 0 评论 -
[Erlang 0085] RabbitMQ 集群: data and metadata
我们希望 RabbitMQ的集群能够解决单点故障,一旦节点异常自动重连到正常的节点;希望RabbitMQ 集群可以完成负载均衡,可以保证消息不丢失,希望可以快速增加节点到集群,单个节点当掉不会给集群带来灾难影响..... 哦,停下来,我们似乎把构建健壮地可扩展系统的所有梦想都寄托在RabbitMQ之上了.事实又是怎样呢?我们不能臆测软件对一个功能的实现,最好的办法就是用一下;我们近距离看一下.原创 2012-11-28 15:25:30 · 9207 阅读 · 0 评论 -
[Erlang 0084] RabbitMQ: fire-and-forget and RPC
在项目中引入RabbitMQ通常会考虑它会带来的好处:解耦应用程序,实现不同编程语言之间的互通,解除对特定通信协议的依赖,解除应用程序在时序上执行的依赖(异步).落实到代码层面就是两种常用应用模式:"发后即忘"(fire-and-forget)和RPC. fire-and-forget 之前提到过[链接],RabbitMQ解决的是应用程序之间互联(connec原创 2012-11-28 15:26:18 · 9068 阅读 · 0 评论 -
[Erlang 0083] All about Erlang Shell
Erlang Shell是一个强大的工具,几乎只要我的电脑开着,就会有一个Erlang Shell开着,随时验证想法.就是因为是常用武器,也会有一些常见问题,今天做下回顾,顺便解决两个新问题.算是Erlang shell常见问题的不完全合集了吧.后续和Erlang Shell相关的问题也会在本文追加更新. 对于Erlang Shell有些问题已经有解决方案了,你可以先翻翻下面原创 2012-11-28 15:26:47 · 8924 阅读 · 0 评论 -
当我们谈论Erlang Maps时,我们谈论什么 Part 2
声明:本文讨论的Erlang Maps是基于17.0-rc2,时间2014-3-4.后续Maps可能会出现语法或函数API上的有所调整,特此说明. 前情提要: [Erlang 0116] 当我们谈论Erlang Maps时,我们谈论什么 Part 1 继续昨天的话题,在Erlang Factory SF Bay Area 2013有一个议题:"Where are原创 2014-09-17 12:28:55 · 7774 阅读 · 0 评论