面试小记

最近在上海找工作面试,这两天就要出结果了。早晨5点多就醒过来,睡不着觉, 那就写篇这段时间面试感觉的小记。

选择

我在台风「海葵」登录上海那天离开南京,已经约好了几个面试, 这几个团队都是我慎重筛选的。招聘消息来源于各大社区: Python-CN 邮件列表 / V2EX / Ruby-China / 豆瓣小组。 来源于社区的招聘信息会更靠谱,在社区投递的很有可能是直接主管,而不是人事 HR。 仅仅在 51job 上投放招聘,而不参到社区来的公司,很可能氛围不是那么有活力。

more ...

我为什么来上海

今天是我到上海的第二天,窗外的台风依然在肆虐, 我用半天的时间来研究这几天要面试公司的产品。放下腿上的笔记本, 抽了根烟,我开始整理一下思绪,准备回答这么一个问题:「我为什么要到上海来?

南京有相对悠闲的生活节奏,开车回家 1 小时不到, 父母在毕业那年帮我购置并装修好了新房,工作也比较稳定。 那我为什么还要抛弃这些去上海?

回答这个问题,我需要从我的经历讲起。

more ...

《少有人走的路》读后感

关注这本书是在编程随想那里看到的一篇书评, 其中引用了书中一句经典的话:

人可以拒绝任何东西,但绝对不可以拒绝成熟。拒绝成熟,实际上就是在规避问题、 逃避痛苦。规避问题和逃避痛苦的趋向,是人类心理疾病的根源,不及时处理, 你就会为此付出沉重的代价,承受更大的痛苦。

所有逃避者,都在阻碍自己心智的成熟; 一切心智成熟者,他们的人生之旅都是从直面问题开始。

more ...

MoinMoin Wiki 转换 Text 脚本

我使用 MoinMoin 作为我的 KMS,具体使用方式可以参考 [使用MoinMoin作为个人KMS][moin-kms]。另外,我将 MoinMoin 的 data 目录链接到 Dropbox 同步目录下面,从而可以备份并查看我的知识库。

我想同步阅读 KMS 数据

想在移动设备阅读 KMS 数据时,我遇到一个麻烦,MoinMoin 使用文件来保存 wiki 数据, 比如「28个Unix.Linux的命令行神器」这篇 wiki 目录在 data/28(e4b8aa)Unix(2e)Linux(e79a84e591bde4bba4e8a18ce7a59ee599a8) 中, 结构如下:

more ...

学车记

经过两个月的学习,今天下午终于把驾照拿到手了。期间各种苦逼各种悲催顿感消失, 终于打赢了这场难度仅次于装修的战争。

博客也因学车而荒废了1个月,今天就顺便写点针对南京的驾校考试的东西。

南京驾照考试有4部分:

  • 理论考试,网上好好做题,2小时就可以考95分以上了,90分合格
  • 桩考,就是考倒桩。80分合格,当场有一次补考机会。
  • 电子路,2+1(侧方位停车、坡道定点停车和起步、起伏路、直角转弯、S 弯、 百米加减档、限宽门、单边桥和连续障碍),其中「侧方位停车」和 「坡道定点停车和起步」是必考,其他再抽一项。和桩考共享一次现场补考机会,80分合格。
  • 人工路:上车在实际道路开一会。没有现场补考,80分合格。
more ...

Flotr2 - 我最喜欢的 Javascript 图形库[译文]

原文地址:Flotr2 - my favorite javascript graph library

译者:alswl


我研究了很久,得到的终极数据可视化方案是 javascript + html ,这是唯一像样又好用的。

Gnuplot 虽然看上去不错,但是不太漂亮。 一些基于 Python 的图形化工具也有同样的问题。 Mathematica 在我看来则太正式了,所以我不怎么用它。

基于 javascript 的图形化工具其中一个巨大优势是易于共享。 通过设置 Github Page、分享链接等方法,我们都可以很方便的获取最新图表数据, 甚至可以进行交互。

那些基于 javascript 的图形化工具

有很多 javascript 图形化库,从极简到复杂绚丽的风格,都极为丰富。

最流行的可能就是 d3.jsRaphael 了。 他们用起来相当麻烦,但却能实现绚丽到超越你想象的可视化效果。

more ...

想和做

一年前,我在草稿箱里面写了这篇文章的开头,那时的我正在为工作而烦闷,却一筹莫展。 最近在读《人人都是产品设计师》,其中提到了「产品经理」和「项目经理」的区别, 又引发了我一些思考,我决定把这篇文章重新写完。


这篇文章准备讨论普通程序员在工作中容易滋生的错误,以及解决的方法。

传统意义上,大家会提倡「不能光想,还要去做」,即强调行动力的重要性。 而在实际工作中,大部分人都不缺乏这个行动力,反而缺少对自己工作的思考。 比如我为什么要这么做?有没有更优美的办法?能不能通过自动化减少工作强度? 流程是否可以改善?

我和产品

在聊上面几个问题之前,我先确定一个既有现实:「每个程序员都曾经是产品经理」。 诸位是否还记得当年在学校里面学习时候,应该都做过 XX 管理系统吧, 那时候我们也许单枪匹马,也许结对组团去完成「项目」:获取需求,设计系统和 撰写代码,在这些工作中,我们首先担任的就是产品经理一职。

more ...

Vundle 和 Submodule

问题背景

Vundle 是个好东西,可以用来管理 vim 配置和 vim 插件。Vundle 会将所有插件管理在 .vim/bundle/ 中,详情可看 使用 Vundle 管理 Vim 插件

官方安装 Vundle 方法如下:

git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle

我的 Vundle 的版本是 59bff0c457f68c3d52bcebbf6068ea01ac8f5dac, git 版本是 git version 1.7.10.2 。 使用 BundleInstall 可以安装 .vimrc 中配置的插件,

我使用 git 控制 .vim.vimrc 版本。在 BundleInstall 之后会导致 vundle 目录项目状态混乱,要么形成一个无法追踪的 submodule 比如 .vim/bundle/The-NERD-Commenter (untracked content) ,要么变成一个普通的文件夹 .vim/bundle/vim-markdown

more ...

服务器 Push 技术

服务器 Push 技术表示服务器可以主动推送消息给客户端浏览器。

实现方式

  • Comet
  • Ajax 轮询
  • iframe / htmlfile
  • script tag (不中断的连续请求)
  • Flash 通讯
  • WebSocket

Comet 本意是彗星,彗星尾巴痕迹很像长连接工作方式,所以 Comet 指代长连接。 在 Ajax 轮询的分类上,存在一些分歧,这里我把轮询认为一种 Comet 方式。

ps:「长连接」在一些场景下,是另外一种意义「HTTP: Keep alive」。不在本文讨论的范围中。

参考链接:

more ...

《开源和自由》幻灯片

周末回学校一趟,和几个老同学、老师聚会,然后给学弟学妹们做了一个分享。

我的主题是《开源与自由》。 为了让同学们不瞌睡,几乎是当一个故事讲的,没太多技术内容。

more ...