一步一步打造Geek风格的技术博客
如梦初醒
Geek是什么
Geek更多的是一种精神,一种态度,一种对技术的理解与信念。他们无法忍受丑陋的代码,拙劣的技术。他们思路开阔,技术娴熟,他们不甘平庸,追求完美。他们不会囿于常识,他们敢于突破。在常人眼中,他们不走寻常路,享受各种非主流的技术。但在他们自己眼中,这些又是那么得自然与优美。他们用自己的行为诠释着自己对于技术的理解,用那份固执传达着自己的信念。
他们掌握并热爱着技术,叛逆、执着,崇尚自由。
为什么不选择CSDN、Wordpress、Jekyll等技术
我在CSDN上发表博文被和谐了一次,就不会允许这种事发生第二次。
Wordpress上手容易、功能强大、插件丰富。但是在我看来,这些优点同时也是它的缺点:太笨重、太无脑、不够酷、无用功能太多、可定制的粒度不够小。我更喜欢简洁快速粗暴的博客系统。
Jekyll非常棒,可惜它基于Ruby。对于Python爱好者而言,基于Python的Pelican显然更加可口。
卧薪尝胆
我在搭建这个博客的过程中学到了很多很多有意思的技术。
搭建环境为Mac OS X/Linux ...
read more编写可读代码的艺术
我最早开始重视代码的可读性还是大三在搜狐做Python研发实习生的时候。那会儿我特别嫩,写代码还是学校大作业风格,天天被leader各种批评。现在回忆起来,虽然在搜狐呆的时间特别短,但那段经历能引起我对代码可读性的重视,也算是重量级的收获了。
今天一口气读完了《编写可读性代码的艺术》,感觉非常爽。我一直认为代码的可读性绝对是第一重要的,正如《黑客与画家》所言:"代码写出来是给人看的,附带着能在机器上运行"。
顺手记录了几个重要的原则:
-
可读性基本定理:代码的写法应当使别人理解它所需的时间最小化。
-
把信息装进名字里。
-
清晰和精确比装可爱好。
-
在小的作用域内可以使用短的名字。
-
不会误解的名字是最好的名字。
-
使用一致的布局;让相似的代码看上去相似;把相关的代码行分组,形成代码块。
-
一致的风格比正确的风格更重要。
-
注释的目的是尽量帮助读者了解得和作者一样多。
-
不要为那些从代码本身就能快速推断的事实写注释。
-
注释应该有很高的信息/空间率。
-
把条件、循环以及其他对控制流的改变做得越“自然”越好,使读者不用停下了重读你的代码。
-
默认情况下都用if/else,三目运算符?:只在最简单的情况下使用。
-
当你对代码改动时,从全新的角度审视它,把它作为一个整体来看待。
-
把超长表达式拆分出易于理解的小块。
-
小心“智能”的小代码段,它们往往在以后会让别人读起来很困惑 ...
临近的双十一
双十一就要来了。
由于我们小组leader是双十一总负责人,所以我很幸运地参与到双十一相关的项目中。
作为一个新人,虽然只能做一点儿双十一相关的小需求,但依然很激动。
生活中常常听到这样的说法:“总有人比你们更勤奋”。
但这句话就不用对我们说了。
我们就是那更勤奋的人。
read more编辑器与IDE
虽然eclim很强悍,但由于它并没有集成任何的java debug功能,因此用vim+eclim的组合开发java仍然显得力不从心。
我最终决定回到eclipse的怀抱中。同时,出于对逐渐丧失vim武功的担忧,我决定使用eclipse+viplugin的组合:编辑代码使用vim的指法,其它事情全部交给eclipse。
这样用了一段时间,节奏还不错,而且eclipse一些强大的功能让我刮目相看,并让我开始反思之前对待编辑器与IDE的态度。
IDE里面确实蕴含了比普通文本编辑器高级很多的技术。IDE会对程序文本进行真正的解析,之后才开始分析里面的结构。它们的“跳转到定义”一般都是很精确的跳转,而不是像文本编辑器那样瞎猜。
此外,IDE代码补全的精准度与速度都远远超过了vim的任何插件;IDE对于java的接口与实现、类与类的继承关系、反射等稍高级的功能都支持得非常好。
vim在这些方面确实做得不好,也不可能做得好。
这样说来,vim的唯一优势就只是它那极其符合人体工程学的指法带来的行云流水般的操作快感了。
不像php, python等所见即所得的解释性语言,java这种编译型的语言,若通过打日志来调试,那么每加一条调试用的日志代码,就要重新编译一次,实在是太低效了。而eclipse的调试功能确实是太强大了,调试过程中每个变量的值也都是清清楚楚。
很多长期使用vim/emacs的人都容易对IDE抱有或多或少的偏见。没错,开发shell, php, python, ruby这样的解释性语言,用vim/emacs确实非常合适 ...
read more阿里校招内推简历筛选
上周在BYR论坛发了一个阿里内推的帖子,没想到短时间内就收到了成百上千封简历。
我仔仔细细地看了每一封简历,附带有Github地址的我也点进去仔细看了代码。
最终我留下了30%的简历,而且这30%中只有10%的本科生。
筛选标准
满足以下条件中的任何一个,直接通过筛选:
- ACM, Topcoder, Google Code Jam、Yahoo! Hack Day等重量级竞赛的获奖经历
- Google, Microsoft, Yahoo!, Amazon, IBM,Baidu, Tencent等顶级公司的靠谱实习经历
- Github, StackOverflow、Archlinux等高水平技术社区的活跃人士,贡献过高质量的开源代码
- Common Lisp, Scheme, Haskell, Scala等函数式语言的钻研经历
- 黑客行为
满足以下条件中的任何一个,增大通过筛选的可能性:
- 保送硕士
- Top级别的专业成绩
- 丰富的国家级重点实验室项目经历
- 发表过高水平的学术论文
- Markdown/Latex生成的PDF简历
- 高质量的技术博客
- 技能栏中写着熟练使用Vim/Emacs,以Mac OS ...