读《打造 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

PyCon 2012 见闻

Thumbnail

PyCon 是 Python 领域最著名的技术会议,从 2011 年开始,中国区开始举办自己的 PyCon 大会。这次 PyCon 2012 分成两个场地同时进行,北京和上海, 并且在网上提供同步转播,各地也有组织线下收看的。 去年时候我很遗憾的不能跑到上海来参加,现在我人就在上海, 怎能错过 Pythoner 的饕餮大餐呢?早就眼巴巴的买票准备参加了。 上海这边的主题如下: 《Python 产品构建与发布指南》- 沈崴 《实战游戏客户端》 - 林伟 《让程序运行更快》- 李小红 《演进或革命 - 选型和架构的实践经验谈》 - 潘俊勇 《网游开发中的 Python 组件》- 赖勇浩 《自动化即时战斗游戏解决方案》 - 王健 《人人可以化半小时开发一个全功能OpenERP模块》 - Tony Gu 《元编程在redis orm中的应用》 - 许智翔 《OpenERP即将推出的第7版的功能和新的编程框架介绍》- Eric Caudal 《Python如何帮助「逆转三国」获得成功》- 车蕙怡 《Pyramid Web Framework for Advanced Web Applications》- 黄峥峼 (Mark Huang) 《用Tornado开发RESTful API应用》- 飞龙非龙 《NOSQL和MySQL在django上的混合使用》- 黄昶 《网页游戏的跨界开发》 - 董诣 《阿里云之移动开发者上云》 - 刘飞 《使用 Python 和 Django 建设维护学校门户》- 于夏桥 《python在linux运维中的应用》 - 吴晗 《用Python替换C代码——A Python Successful Story》- Adieu(刁立知) 《 Python in Gentoo Linux》- Patrick Lauer 《基于nova的自动扩展和负载均衡》- 刘明华 《用myTestCase模块来做python的UT》- 陈钢 我最喜欢的是 许智翔(shell) / 沈崴 / 林伟 / 黄峥峼 / 李小红 / 赖勇浩 的 Topic。其中尤其是沈崴关于输入处理的准则,解开我一个很久的疑惑。 沈崴这个 Python 编程艺术 是赖勇浩提到的幻灯片,强烈推荐观看。 ...

2012-10-21 · alswl

Working with Python subprocess[译文]

Thumbnail

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 模块来和命令行指令进行交互。 ...

2012-10-16 · alswl

面试小记

最近在上海找工作面试,这两天就要出结果了。早晨5点多就醒过来,睡不着觉, 那就写篇这段时间面试感觉的小记。 选择 我在台风「海葵」登录上海那天离开南京,已经约好了几个面试, 这几个团队都是我慎重筛选的。招聘消息来源于各大社区: Python-CN 邮件列表 / V2EX / Ruby-China / 豆瓣小组。 来源于社区的招聘信息会更靠谱,在社区投递的很有可能是直接主管,而不是人事 HR。 仅仅在 51job 上投放招聘,而不参到社区来的公司,很可能氛围不是那么有活力。 我尽量避免被分散注意力,只选择自己认可的公司,几乎是清一色创业团队。 个人的精力是有限的,找到最适合自己的是我的核心原则。使用所有手段:「Google / 社区 / 业内人士咨询 / 微博 / 新闻报道」的方法, 来了解自己想去团队的产品和文化。来对比公司理念和自己理念的异同, 自己是否认可一些团队文化,还有创始人和主管的性格和技术取向是否和自己偏差很大。 有些人会觉得这有偷巧之嫌,但在我看来,这是对双方负责的表现。 贸贸然的选择,会浪费双方的时间和精力。 ...

2012-08-16 · alswl

我为什么来上海

今天是我到上海的第二天,窗外的台风依然在肆虐, 我用半天的时间来研究这几天要面试公司的产品。放下腿上的笔记本, 抽了根烟,我开始整理一下思绪,准备回答这么一个问题:「我为什么要到上海来?」 南京有相对悠闲的生活节奏,开车回家 1 小时不到, 父母在毕业那年帮我购置并装修好了新房,工作也比较稳定。 那我为什么还要抛弃这些去上海? 回答这个问题,我需要从我的经历讲起。 前天在和 @lightory 在雕刻时光聊天,我提到自己的成长经历: 我从小就是一个 loser,成绩不好,长得不高不帅,没有突出的能力。 尤其是在学生时代,学习是他们的本职工作,而我完成的很差劲, 最后也是很勉强的上了大学。 ...

2012-08-09 · alswl

《少有人走的路》读后感

Thumbnail

关注这本书是在编程随想那里看到的一篇书评, 其中引用了书中一句经典的话: 人可以拒绝任何东西,但绝对不可以拒绝成熟。拒绝成熟,实际上就是在规避问题、 逃避痛苦。规避问题和逃避痛苦的趋向,是人类心理疾病的根源,不及时处理, 你就会为此付出沉重的代价,承受更大的痛苦。 所有逃避者,都在阻碍自己心智的成熟; 一切心智成熟者,他们的人生之旅都是从直面问题开始。 我最近半年的时间中,经常和一位闺密朋友讨论成熟、感情、人生历程的问题, 她的价值取向:喜欢自由无舒服的生活,压力尽量好。 我直观的感觉这是有问题的,可是说不出哪里不对,人的确有追求美好生活的权利呀。 看到《少有人走的路》中这几句话,我反应过来了。 我们依然用童年的遗留思维评判生活质量,以自己为中心,缺少安全感,心智还没有成熟。 ...

2012-08-04 · alswl