背景
这是我一直收藏在 evernote 里面的,架构设计方面的合集。后面会不定期更新一些比较好的设计文章,然后我也在想有没办法像湾区日报那样,做得比较自动化,那就太棒了。
不分主题
- 豆瓣阅读
- MixRadio 的架构实战
- reddit 的架构实战1它们的数据库设计比较有意思,两张表完全整个站的设计
- 红点在线多人系统
- segmentfault 重构
- 代码分层
- 一号店
这是我一直收藏在 evernote 里面的,架构设计方面的合集。后面会不定期更新一些比较好的设计文章,然后我也在想有没办法像湾区日报那样,做得比较自动化,那就太棒了。
之前在游戏公司的时候,需要自己搭建一套推送服务,顺道研究了下一些开源实现。mosquito 的代码库,代码量少,而且也写得比较好懂,对推送协议的实现也是比较 ok 的,所以就撸了一番。虽然后来没用上,但是还是把当时的一些想法记录下来。
- 基于poll的事件模型,没有epoll的性能好
- 内存分配策略简单,来一个生成一个,存在优化空间
- 比如改用初始2倍,到达一定数量后,以后每次改用增加额定数量的算法
- 数据结构过于简单
- 常用结构为单向链表,查找耗时为O(n),存在性能问题
- 内存占用过大
- 没有使用数据库,数据都堆在内存里面,可能无法应付大数据量
继续阅读 在 ziz 的时候,cto 的技术选型不合理,对使用技术缺乏必要的了解,采用了旧和大而笨重的中间件。因为 tcelery
的核心开发者不再维护代码,所以需要重新选择更加合适的技术方案。
原版的 tcelery 有几点问题:
- 对于redis的backend,存在race condition的情况,具体要参考下对应的git仓库的issue
- 对于超时的处理,如果worker跑这个任务运行的运行时间超过规定时间,客户端的连接就会卡死
- 代码时间有点旧了,作者mher也没有继续维护和做codereview的工作
后来认识了一个提交 pull request 的童鞋,因为作者没有维护采纳修改的缘故,他做了一版新的工具,totoro。现在的项目就是基于这个来开发的。
ps: segmentfault 有专门一个问题来讨论这个 bug 的,也可以去看看解决方案(其实是我自问自答啦)。
积累一些优秀的设计,包括但不限于交互、产品,视觉单独放开。
如何写游戏策划文案,其中一个非常赞,首先明确自己的目标、目的,然后才是要怎么做
俞军老师说过特经典的一句话,优秀的产品经理,要学会做减法。
这是有关创业的第 N 本书,知乎出的集合,《创业时,我们在知乎聊什么》。
看到书单君的推荐,就拿过来看看
- 第一象限。大而具体—“我如何做才能使销量在半年内增加一倍呢?”
最近对 “底层” 着迷了起来,找了一本深入理解计算机系统和王爽的汇编语言,开始啃了起来。
其实大学的时候也上过汇编的课,而且是用那本异常坑爹的 IBM80X86,上了一个学期的课,还不如我这两个礼拜啃的汇编。
汇编语言其实一点都不底层,只是平时写脚本写多了,不适应罢了。
你要明白一点,“底层” 编程体验对你非常非常重要,1010101010 其实能给你一种其他不同的视觉去看待
自己写的代码,非常 cool,不是么…….
不过说回来,豆瓣评论有不少吐槽,集中在版本较旧,而且保护模式没讲…… 保护模式?额,其实我也没去查……
倒是同事过来跟我吐槽说,看完这本最好再去看下那本 80×86 之类的书。
嗷嗷,所以呢,了解 “底层”,体会底层编程体验,重新学习汇编,是件好事,虽然做那些练习题很耗时间,但值得啦~
我总是有种冲动要把一个框架给撸一遍才 happy,但我发现这样把自己累得半死,还吸收不良……
特别是当我遇到了神奇的 Django,她的完备,资料齐全,开发方便,社区活跃,让我很 high 得撸了好几个月….. 好吧,其实是项目需要…..
但就像有些人说的一样,当一个框架的文档完备到让人发紫的时候,是不是也意味着他很难改变?
额,有点,Django 给我的感觉是,开发的程序猿是来写配置文件的,已经脱离了传统意义上的开发。那种感觉,
就像你去写 rails 一样,一切都安排好了,按着套路去填就好了。
吐槽完了,其实我是来记笔记的……
继续阅读scheme, a dialect of lisp.
car
is defined only for non-empty lists. The cdr
of any non-empty list is always another list.null?
is defined only for lists.eq?
takes two arguments.Each must be a nonnumeric atom.null?
as the first question in expressing any function.cons
to build lists.null?
.我想没什么比阅读 john Resig 的 JQ 库更让人觉得亲切的了。
从一开始接触 js,到做一个小小的 demo,最后做一些面向单页 app 的应用,jq 库这个熟悉而又陌生的脚手架一直陪伴着我们。
而我总是会有一种阅读的冲动,每次遇到不懂的东西,我想起的第一个念头,不是怎么用,而是,它怎么实现的。于是,你就开始折腾各种框架了,不是么?
那种拨开眼前迷雾的感觉,那种看得真切的感觉,是前所未有的快乐,也许,那就叫做思考的乐趣吧。
## 为什么阅读
当然了,这个世界上,js 库多的是,jq 并不是最优秀的那个。我阅读的原因是:
## 怎么阅读
## 还可以怎么做
## 参考资料