在 Python 中使用 GDB 来调试[译文]

大约一年前,我接触了 Java 中的 Btrace 能够不停机查看线上 JVM 运行情况的特性让我艳羡不已。 另外还有强悍的 jStack 和 jConsole 来进行运行期侦测,JVM 的工业级强度果然不是盖的。 当时公司技术方面也遇到了一些瓶颈,一部分原因是 CPython 本身的 IO 模型问题, 另一方面也和早期代码写的极不工整脱不了关系。万般无奈之下,我们用 Jython 推翻重做了主要业务,效果立竿见影,但同时也把真实问题给规避掉了。 在这之后我们在 JVM 的领导下,走上了康庄大道。但我心中始终还有一个梗, 就是想对性能遇到瓶颈的 Python Process 进行线上侦测。 这篇文章就是开始的第一步。 ...

2013-11-01 · alswl

15 分钟学会 R 语言[译文]

仗着自己有几门语言的基础,我在学新语言时候,都会选择一些快速入门教程。 比如 Learn X in Y minuts 就是我经常光顾的站点。 前段时间,小柒在用 R 写数据分析脚本,我就建议她把 Learn X in Y minuts 里面的 R 语言教程翻译出来。话说 Learn X in Y minuts 里面的中文贡献还是非常多的,赞。 Learn X in Y minuts 的源码托管在 Github。 小柒被我逼着把这篇 R 语言教程 翻译到 R 语言教程中文版。 下面是译文,有不妥的地方可以留言或者直接去 Github 上面 Pull request。 R 是一门统计语言。它有很多数据分析和挖掘程序包。可以用来统计、分析和制图。 你也可以在 LaTeX 文档中运行 R 命令。 ...

2013-10-29 · alswl

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

Thumbnail

年前看了这本书《大规模Web服务开发技术》,当时给的评价是: 很好,让我这个渣渣看的很感动,数据翔实,经历可靠,翻译的也不错,我给 4.2 分 现在经历过 Python / Django / 烂代码的阵痛,开始有更多的想法, 在整理这些粗糙的想法之前,我又把这本书翻了一遍,写个流水帐读书笔记。 《大规模Web服务开发技术》@豆瓣: http://book.douban.com/subject/6758780/ 规模 小规模 / 大规模 / 超大规模的侧重点各不相同:保持扩展性/保持冗余/低成本运维/开发合作方便 内存、磁盘、负载 内存快,磁盘慢,IO 速度的差异 ...

2013-06-29 · alswl

Arch,再见

Thumbnail

Arch 是我真正使用的第一款 Linux 发行版,大约使用了三年, 现在的这个 VPS 跑的系统也是 Arch。 然而随着时间变化,我从最早的天天更新狂,到一周、一个月、三个月和不主动更新。 彻底从从不折腾会死星人变成了一个尽量避免变更的老用户。 Arch 很适合作为第二个(第一个是新手使用的 Ubuntu),它的哲学 KISS 非常优雅, Keep It Simple And Stupid。基于这原则,它将 Linux 内部的使用、运维细节都展现出来。 毫不夸张的说,被 Arch 折腾几年,就能胜任 Linux SA 的角色了(笑)。 ...

2013-04-13 · alswl

读《人件》

Thumbnail

事情起源于动态语言和静态语言之争,最后争论焦点转移到:「相信人本身的能力重要, 还是通过语言/工具来约束人重要」。 我认为项目开发中最重要的是个人能力和团队协作能力,工具只是加分项。 如果代码质量差、监控难、性能难以优化,解决根本问题的关键还是在人身上。 并不是静态编译和工具检查就能搞定了。 我愤愤的在 QQ 对话框中写道: 我工作第一年痛苦于开发流程,阅读了《人月神话》,就开始坚信软件工程的哲学 后来痛苦与代码质量,阅读了《重构》,开始坚信代码质量决定产品质量 现在痛苦于人和语言的冲突,动态和静态的冲突,我想读《人件》了 ...

2013-04-10 · alswl

读《打造 Facebook》

Thumbnail

感谢好基友 @daodao 送了我这本《打造 Facebook》, 年前一直忙,最近腾出两个晚上,把这本很火的书看完了。 第一次听见王淮这个名字,其实是在知乎上面, 当时有一个问题 Facebook 早期员工王淮在职期间有什么成就?。 之后陆陆续续看到他的几个回答,感觉他非常善于自我营销。再之后就读到他这本书。 书中最喜欢的章节是关于 Facebook 工程师文化和产品开发流程的描述。 ============================== 我是分割线 ============================== Facebook 招人标准 对公司的忠诚,是文化认同的附属品 技术面试 2.5 / 系统设计 1 / 文化面试 0.5 5 个程度的面试打分 高标准人才,喜欢挑战和完成艰巨任务 慢招人,快炒鱿鱼 新兵训练营 ...

2013-02-25 · alswl

在 Python 中使用 epoll[译文]

原文地址: http://scotdoyle.com/python-epoll-howto.html , 我这里取精简内容翻译过来。 ============ 正文开始 ============ 介绍 Python 从 2.6 开始支持 epoll。现在我们用 Python3 来写基于这些 API 的 epoll 范例。 阻塞的 Socket 通信范例 import socket EOL1 = b'\n\n' EOL2 = b'\n\r\n' response = b'HTTP/1.0 200 OK\r\ndate: "2013-01-12T00:01:00+08:00" response += b'Content-Type: text/plain\r\nContent-Length: 13\r\n\r\n' response += b'Hello, world!' serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) serversocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) serversocket.bind(('0.0.0.0', 8080)) serversocket.listen(1) try: while True: connectiontoclient, address = serversocket.accept() request = b'' while EOL1 not in request and EOL2 not in request: request += connectiontoclient.recv(1024) print('-'*40 + '\n' + request.decode()[:-2]) connectiontoclient.send(response) connectiontoclient.close() finally: serversocket.close() 这个范例中的代码在 accept() 、 recv() 和 send() 时候会发生阻塞, 导致其他连接无法完成。 通常情况下,在我们使用阻塞模型时候,会专门建立一个主线程来进行监听, 将建立成功的连接交给其他线程操作,然后继续在主线程上面监听。 这样一来,就不会受单次请求阻塞的限制。 C10K 问题描述了其他处理高并发方法,比如异步 Socket, 通过监听事件来触发预设的响应。异步 Socket 可以是单线程,也可以是多线程。 ...

2013-01-12 · alswl

My 2012

本想着末日来了也是好事,大家都挂了,一了百了,啥事情都不用干了。 不过末日既然没来,工作和生活就得继续下去,年末了还是需要缅怀一下 2012, 然后展望一下 2013。 2012 关键词:妹子 和姑娘 A 不得不说的故事,追了一段时间之后发现太熟了,不好下手,另外三观有点不一致, 现在已经有男朋友了。更八卦的段子见 有哪些智能手机用户的行为让你当时就震惊了? 另有青春年少萝莉一枚,让我确认自己不是基佬,已死心。 最近几年我蛮少对异性有好感产生,或许是周围姑娘太少的缘故,或许是爱无能了。 ...

2013-01-01 · alswl

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

原文链接:Keeping Instagram up with over a million new users in twelve hours 这周二我们发布了 Instagram for Android,反响空前强烈。 最近这几周我们一直(在基础设施方面)做负载计划,为所有可能发生的事故做准备。 尽管如此,在发布那天,最大的挑战仍然是如何快速定位问题,找到瓶颈并尽快修复他们。 在这里我们将分享一些帮助我们解决问题的工具和技术。 ##statsd## statsd 在 Instagram 很受欢迎。这是 Etsy 写的一个网络监控器, 能够统计并图形化数据。它有两种核心的统计方式:计数器和计时器。 我们用计数器来跟踪许多信息,从每秒钟注册数到喜欢数量统计。 同时我们使用计时器来跟踪 feeds 变化,用户停留在 feeds 多久,和其他的主要操作。 ...

2012-11-19 · alswl

KuKu-一个 Weekend Project

Thumbnail

一个小小的 Weekend Project,基于 web.py。 代码在 alswl / kuku ,很简陋,属于差不多能用阶段。 基于以下原因开发: 想把服务器去 PHP 化,以前的 upload.log4d.com 是基于 PHP 的, 详情请见 使用独立图床子域名。 刚买的 Linode VPS,终于从 128MB 内存解放出来了,赶紧放个 Python 程序跑跑。 想些 Python 了,手痒,想看看写这么简单的功能需要多长时间, 弥补上次没能参加黑客马拉松的遗憾。 KuKu 的发音是我家乡话的「看看」。 KuKu 中比较有趣的地方是,用了 Foundation 这个流式 Web 前端框架, 用了 Foundation Icons Fonts,将 js 库全部托管在 Google Hosted Libaries 和 cdnjs 上。 这篇文章我看着都觉得水。 ...

2012-11-18 · alswl