读《大规模Web服务开发技术》

年前看了这本书《大规模Web服务开发技术》,当时给的评价是:

很好,让我这个渣渣看的很感动,数据翔实,经历可靠,翻译的也不错,我给 4.2 分

现在经历过 Python / Django / 烂代码的阵痛,开始有更多的想法, 在整理这些粗糙的想法之前,我又把这本书翻了一遍,写个流水帐读书笔记。

大规模Web服务开发技术

《大规模Web服务开发技术》@豆瓣: http://book.douban.com/subject/6758780/

规模

小规模 / 大规模 / 超大规模的侧重点各不相同:保持扩展性/保持冗余/低成本运维/开发合作方便

内存、磁盘、负载

内存快,磁盘慢,IO 速度的差异

数据分布式

  1. 使用局部分布式,热数据独立出来。
  2. Partition 分布式,按模块分割数据。
  3. 按 ID 分割,比如 a-g, h-z
  4. 按访问类型,一般请求 / feed / 图像(#毒药计划的原理)
more ...

Arch,再见

Arch

Arch 是我真正使用的第一款 Linux 发行版,大约使用了三年, 现在的这个 VPS 跑的系统也是 Arch。 然而随着时间变化,我从最早的天天更新狂,到一周、一个月、三个月和不主动更新。 彻底从从不折腾会死星人变成了一个尽量避免变更的老用户。

more ...

读《人件》

事情起源于动态语言和静态语言之争,最后争论焦点转移到:「相信人本身的能力重要, 还是通过语言/工具来约束人重要」。 我认为项目开发中最重要的是个人能力和团队协作能力,工具只是加分项。 如果代码质量差、监控难、性能难以优化,解决根本问题的关键还是在人身上。 并不是静态编译和工具检查就能搞定了。

我愤愤的在 QQ 对话框中写道:

我工作第一年痛苦于开发流程,阅读了《人月神话》,就开始坚信软件工程的哲学 后来痛苦与代码质量,阅读了《重构》,开始坚信代码质量决定产品质量 现在痛苦于人和语言的冲突,动态和静态的冲突,我想读《人件》了

人件

人件已经绝版,只能在找线上版,我花了两个星期把它读完。 书中给了我一部分答案,另外还有一些意外的收获。

more ...



My 2012

本想着末日来了也是好事,大家都挂了,一了百了,啥事情都不用干了。 不过末日既然没来,工作和生活就得继续下去,年末了还是需要缅怀一下 2012, 然后展望一下 2013。

more ...

如何让 Instagram 在一百多万用户爆炸后稳定运行

原文链接:Keeping Instagram up with over a million new users in twelve hours


这周二我们发布了 Instagram for Android,反响空前强烈。 最近这几周我们一直(在基础设施方面)做负载计划,为所有可能发生的事故做准备。 尽管如此,在发布那天,最大的挑战仍然是如何快速定位问题,找到瓶颈并尽快修复他们。 在这里我们将分享一些帮助我们解决问题的工具和技术。

more ...

KuKu-一个 Weekend Project

一个小小的 Weekend Project,基于 web.py。 代码在 alswl / kuku ,很简陋,属于差不多能用阶段。

Kuku

基于以下原因开发:

  • 想把服务器去 PHP 化,以前的 upload.log4d.com 是基于 PHP 的, 详情请见 使用独立图床子域名
  • 刚买的 Linode VPS,终于从 128MB 内存解放出来了,赶紧放个 Python 程序跑跑。
  • 想些 Python 了,手痒,想看看写这么简单的功能需要多长时间, 弥补上次没能参加黑客马拉松的遗憾。

KuKu 的发音是我家乡话的「看看」。

KuKu 中比较有趣的地方是,用了 Foundation 这个流式 Web 前端框架, 用了 ...

more ...

PyCon 2012 见闻

PyCon 是 Python 领域最著名的技术会议,从 2011 年开始,中国区开始举办自己的 PyCon 大会。这次 PyCon 2012 分成两个场地同时进行,北京和上海, 并且在网上提供同步转播,各地也有组织线下收看的。

PyCon Logo

去年时候我很遗憾的不能跑到上海来参加,现在我人就在上海, 怎能错过 Pythoner 的饕餮大餐呢?早就眼巴巴的买票准备参加了。

more ...

Working with Python subprocess[译文]

8月底到魔都开始新工作,头一个月当然各种忙,都没时间来更新博客。

这篇文章是在写 Btrace 脚本时候查资料看到的, 看着不错就顺手翻译,没想到差点烂在草稿箱出不来啊出不来。 熬了一个月才磨出来,媳妇都快成婆了有木有。

原文链接:Working with Python subprocess - Shells, Processes, Streams, Pipes, Redirects and More


注意

关于「执行命令时候发生了什么」这个问题,可以在 http://en.wikipedia.org/wiki/Redirection_(computing) 找到更多最新信息。这篇文章遵循 GFDL 协议。

在我的上一篇日志中,我写到如何 build a command line interface with sub-commands in Python。 这次我来尝试如何通过 Python 的 subprocess 模块来和命令行指令进行交互。

我想达到的目标是:

  • 查看当你键入命令时究竟发生了什么
  • 如何确认一个命令是否存在并找出到底在哪
  • 通过 Python 或 shell 执行命令
  • 向一个运行中的进程读取 STDOUT 或写入 STDIN
  • 检查进程的退出返回状态
  • 理解 Bash 在命令中断中扮演的角色,并如何将它们发送给程序
more ...