惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
Engineering at Meta
Engineering at Meta
D
DataBreaches.Net
月光博客
月光博客
Recent Announcements
Recent Announcements
Google DeepMind News
Google DeepMind News
U
Unit 42
腾讯CDC
爱范儿
爱范儿
J
Java Code Geeks
有赞技术团队
有赞技术团队
Blog — PlanetScale
Blog — PlanetScale
N
Netflix TechBlog - Medium
B
Blog
Stack Overflow Blog
Stack Overflow Blog
GbyAI
GbyAI
T
The Blog of Author Tim Ferriss
小众软件
小众软件
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Y
Y Combinator Blog
大猫的无限游戏
大猫的无限游戏
Microsoft Azure Blog
Microsoft Azure Blog
T
Tailwind CSS Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知

博客园 - yushih

Django杂记: super与metaclass,locmem有害 一直没弄明白的事--为什么招聘要求会有“面向对象分析与设计”这一项 用Linux的iptables和Python模拟广域网 Python programming with goto 实用主义之过--Pragmatic Version Control using Subersion, 2nd Ed.的书评 Python把C语言打得满地找牙 信春哥!Python递归原地满状态变显式堆栈!入教即送尾递归优化! STL的binary search算法正确性的初步说明 关于文档标准之争的一点旁注 有关Ruby eval的一点编程风格 Design pattern一来,动态语言就笑了 - yushih - 博客园 完全没有领会“电子商务”的真谛 超级奇怪的F#格式错误 JAOO的魅力所在 一个Ruby idiom F#的一点糖 C++ hack:将C++编译器的类型检查转化为SLR(1)解析器 Quotes The Ruby Programming Language第一版非官方修正
初学Erlang,写两个程序玩玩
yushih · 2011-09-23 · via 博客园 - yushih

我的第一个erlang/otp程序,虽然弱爆了,还是上线了。

功能:记录gtalk签名档

使用方法:在gtalk里面邀请tpol@takuneering.com为好友。以后每次改签名都会被tpol记录。向tpol发送任意信息,tpol会把签名档历史记录发回来。

实现方式:用Erlang和其标准库实现,没有使用第三方库。整个程序由application/supervisor/gen_server构成,用gen_tcp读写socket,用xmerl_sax_parser解析XMPP协议中的xml,用dets储存数据。


第二个程序,虽然只有几百行,但SoLoMo都有了。

有一次我们几个同事去昭觉寺玩,有一个同事晚一点来,然后因为大家都不熟悉,所以怎么也聚不到一块,电话不停的打,短信也发了很多,都是这样:
喂,你们在哪里啊?
我们在门口啊,你呢?
我也到门口了,怎么没看见你们呢?
哦,原来不是同一个门。所以我就写了一个程序解决这个问题:http://rendezvous.takuneering.com/
很简单,用手机上这个网址,打开GPS,然后建一个组,然后把组的地址短信发给同伙,同伙上去以后大家就可以在google maps上互相看到了。然后还可以发信息,照片(仅限android,iphone不支持),在地图上做标记让大家看见之类的辅助功能。虽然简单,但是我觉得也可以算SoLoMo唉--一群人(So了吧),有手机GPS在g maps上定位(LoMo有木有)。
写这个程序的另一个目的是体验Erlang。选Erlang是因为本来是用websocket通讯的,写了一大半才发现android不支持websocket(js websocket标准的撰写人是google的啊,android你種么了),所以可耻的改成xhr轮询了。写这个程序让我发现了Erlang的一个重大优点(比起Python),Erlang程序里面大量使用模式匹配,其实和类型检查是一样的,可以第一时间让错误把程序crash掉,比动态类型的语言不容易隐藏bug。