January 20, 2012

libuv 初窥

过年了,人都走光了,结果一个人活也干不了。所以我便想找点东西玩玩。

今天想试一下 libev 写点代码。原本在我那台 ubuntu 机器上一点问题都没有,可在 windows 机上用 mingw 编译出来的库一个 backend 都没有,基本不可用。然后网上就有同学推荐我试一下 libuv 。

libuv 是 node.js 作者做的一个封装库,在 unix 环境整合的 libev ,而在 windows 下用 IOCP 另实现了一套。看起来挺满足我的玩儿的需求的。所以就试了一下。

阅读全文 "libuv 初窥" »

January 19, 2012

一个链接 lua 引起的 bug , 事不过三

今天花了将近 3 个小时帮同事看一个崩在 lua VM 中的 bug 结果打乱了进度,没有在年前把预想的东西做完。其实说起来这不是个大问题,以前也碰到过。我检讨自己没有在看到出错时的调用栈时去看一眼 lua 相关的代码。如果是那样,因为以前遇到过同样的问题,所以就可以条件反射出问题原因,而不用荒废宝贵了数小时时间了。

唉,这下整合的进度没接上,过年不能自己一个人接着做下面的活了。

下面记录一下这个 bug ,提醒自己第三次遇到时不用再花时间找问题:

阅读全文 "一个链接 lua 引起的 bug , 事不过三" »

开发笔记 (9) :近期工作小结

最近主要就是一些琐碎的事儿,基本上正事没啥进展。

那个模拟网络环境框架的 skynet 早在一周半前的周末就完成了。一直在等蜗牛的真框架架好。看起来那个昨天也弄好了,但是需要细节磨合需要两天,希望在年前能整合好客户端和服务器框架,过个好年。

我觉得理想情况下,这部分进度能快上几天。但我也觉得目前的进度可以接受。集成这些个不同人写的东西本来就是个麻烦事儿。怪物公司的客户端的网络部分也因为方案调整花了好几天事情修改。

我的想法是尽量隔绝客户端和服务器的具体设计方案。在知识点上不要紧密耦合。就是说只交代很少的一点通讯基本协议,然后由不同的人分别设计代码的架子,看最后再怎么合起来。这样可以保证各自的独立性。适应将来的分工和扩展。

阅读全文 "开发笔记 (9) :近期工作小结" »

January 18, 2012

今天终于爬先锋了

说来很惭愧,接触攀岩运动有 7,8 年了。一直没好好玩。话说线也开过了,结组爬长线路也试过了。就是一直不敢爬先锋。

估计是被人教育的,说先锋这要注意,那要小心等等。说着说着,想着想着,心里就越来越畏惧。

ps. 写给不懂攀岩的同学:

阅读全文 "今天终于爬先锋了" »

January 12, 2012

12306 可望成为中国最大的 SNS 网站

现在有哪家 SNS 网站可以帮用户制造几小时甚至几十小时的共处时间? 还能有共同话题方便搭讪?

没错, 12306 有这个潜质. 它可以帮助适龄男女(通过身份证) 共搭一趟列车, 并肩回家过年。

过于矜持,没留电话?没关系。12306 帮您联系上偶遇的 TA 。

深入挖掘一下,很多潜力(收费项目)可以有。单这一点,就值得铁道部把 12306 做的更好一些,直接通过电子商务创收。单独 IPO ,去骗广大股民的钱。这个概念大家一听就明白,果断上钩啊。


昨天说的排队系统,很多同学提出若干质疑。最多的问题是:黄牛来了肿么办?

本来这么简单的问题,可以有无数方案来解决。我都不忍心说出来几个剥夺您思考的乐趣。不过就着今天 SNS 这话题我提一个。

领排队 ticket 前,需要先提交身份证。排到了必须用这个身份证买一张,或多张同一车次的票。如果排队时间过长,我们可以把排队的人放在一个(多个)大聊天室里。可按年龄段啊,IP 段啊区分一下。

这不就是一同城交友么?

如今还有什么地方好凑这么多人一起聊天的?还不用太担心人妖、装嫩啊等等。谈的投机再想一个方法买一趟车回家,多好。

各位同学可以自由发挥,随便 YY 。

January 11, 2012

铁路订票系统的简单设计

其实铁路订票系统面临的技术难点无非就是春运期间可能发生的海量并发业务请求。这个加上一个排队系统就可以轻易解决的。

本来我在 weibo 上闲扯两句,这么简单的方案,本以为大家一看就明白的。没想到还是许多人有疑问。好吧,写篇 blog 来解释一下。

简单说,我们设置几个网关服务器,用动态 DNS 的方式,把并发的订票请求分摊开。类比现实的话,就是把人分流到不同的购票大厅去。每个购票大厅都可以买到所有车次的票。OK ,这一步的负载均衡怎么做我就不详细说了。

每个网关其实最重要的作用就是让订票的用户排队。其实整个系统也只用做排队,关于实际订票怎么操作,就算每个网关后坐一排售票员,在屏幕上看到有人来买票,输入到内部订票系统中出票,然后再把票号敲回去,这个系统都能无压力的正常工作。否则,以前春运是怎么把票卖出去的?

我们来说说排队系统是怎么做的:

阅读全文 "铁路订票系统的简单设计" »

January 09, 2012

开发笔记 (8) : 策划公式的 DSL 设计

今天很早就起床了,以至于到了办公室还不到 11 点。中饭前有一个多小时可以做各种杂事。

我把周末做的工作和蜗牛同步了一下信息,然后得到了几个新需求。主要就是还是需要在协议定义中加入 protobuf 中等价于 service 的东西。思索了一下,觉得有必要,就花了一个小时把特性加上。 C Binding API 方面还有一点疏漏的地方。大概是源于基于 Erlang 框架下的一些小困难。略微修改了下 C 接口协议就 OK 了。然后很 happy 的去食堂吃饭。

然后我暂时就可以转向 Client 方面的一些需求分析以及解决了。

在生成动画树的数据方面,我们的交换格式使用了某中文本中间格式,最终利用 protobuf 来做二进制持久化。在解析文本格式方面,我操起了多年前耍过的 LPEG 。(我曾经用 lpeg 写过 protobuf 文本的解析工具)这个绝对是解析文本的利器啊。午饭时在食堂大家围在桌子边吐槽 Java ,说道 Java 社区最二的莫过于抓着个 XML 当救命稻草不放,所以便有了各种淡疼的基于 XML 的框架。如果早期 Java 社区能多那么几个受过 Unix/C 传统熏陶过的程序员,就能知道设计 DSL 来解决问题是多么爽快的事情。也不至于在 XML 的树上吊死了。唉,搞得现在积重难返了。

下午正式和策划进行沟通,观看他们这段时间写的各种 excel 表格。我说,你们放开了想怎么把问题表达清楚吧,只要逻辑清晰有条例,信息不要漏掉,怎么表达那些公式都行。我慢慢看,然后规范写法,最终方便程序解析。

以前见过许多项目,有的设计出繁杂的 excel 表格式,然后 export 给程序用;有的干脆让策划写程序代码;甚至有的做一堆漂亮 UI 的公式编辑器。我想最快也最方便达到效果的,莫过于设计一个最小需求集合的 DSL ,让策划认同其语法,然后使用 DSL 来编辑了。

阅读全文 "开发笔记 (8) : 策划公式的 DSL 设计" »

Misc

Categories

Recent Comments