2012-02-23

刘未鹏的书单

转自怎样花两年时间去面试一个人
列一下我所认为的,你面试微软前必须要读的十本书:
Code: The Hidden Language of Computer Hardware and Software (《编码的奥秘》)
Computer System: A Programmer’s Perspective (《深入理解计算机系统》) / Windows via C/C++ (《Windows核心编程》 / 《程序员的自我修养》
Code Complete 2(《代码大全》)/ The Pragmatic Programmer (《程序员修炼之道》,我也把这本书称为《代码小全》)
Programming Pearls (《编程珠玑》) / Algorithms / Algorithm Design / 《编程之美》
The C Programming Language
The C++ Programming Language / Programming: Principles and Practice Using C++ / Accelerated C++
The Structure and Interpretation of Computer Programs (《计算机程序的构造和解释》)
Clean Code / Implementation Patterns
Design Patterns (《设计模式》) / Agile Software Development, Principles, Patterns, and Practices
Refactoring (《重构》)
(注:1. 以上同一条目下用“/”隔开的表示任选,当然你也可以都读了,相信我,时间是足够的。2. 读这些书并不意味着逐字逐句从第一页读到最后一页——当然你也可以这么做。怎么是聪明高效的读法,可以参考我之前写的关于如何阅读和查找/鉴别书籍/资料的博文)
注意:以上是我个人认为你面试微软开发职位前必须要读的10本书,它不代表我的雇主的观点。它也只是一个初步的书单,肯定会受到我个人经验和眼界的限制。欢迎大家提意见。
此外,IT不同子领域的必读书单可能千差万别,所以在发布之前我把这篇文章发给了一些朋友,他们给出了自己的书单(你是不是能看到一些有趣的共同点呢):
云风(中国游戏编程先行者,前网易游戏部门资深程序员,简悦创始人):
如果面试,我会挑以下的我自己读过的书,让人选择他也读过的部分,再了解他对这些书的理解。这些书其实本质上就是两类,对所面对的东西(程序语言也好,操作系统也好,底层设施也好)本身的理解程度。以及另一类:对设计思想和原则的理解:
C++编程思想
Effective C++
深度探索C++对象模型
C++语言的设计和演化
C专家编程
C陷阱与缺陷
C语言接口与实现
Lua程序设计
Linkers and Loaders
COM本质论
Windows核心编程
深入解析Windows操作系统
程序员修炼之道
代码大全
UNIX编程艺术
设计模式
代码优化:有效使用内存
深入理解计算机系统
深入理解LINUX内核
TCP/IP 详解
冯大辉(丁香园CTO,贝塔咖啡创始人):
软件随想录
黑客与画家
重来
UNIX编程艺术
编程人生
洪强宁(豆瓣技术总监):
StackOverflow上有一个程序员必读书单帖子,这里仅列出top10,更多参考这里。
Code Complete 2
The Mythical Man-Month (《人月神话》)
Code: The Hidden Language of Computer Hardware and Software (《编码的奥秘》)
TAOCP (不解释)
The Pragmatic Programmer (《程序员修炼之道》)
Design Patterns (《设计模式》)
The Structure and Interpretation of Computer Programs (《计算机程序的构造和解释》)
Refactoring (《重构》)
The C Programming Language
Introduction to Algorithms (《算法导论》)
郑昀(窝窝团研发副总裁):
工程师入门:
Code Complete 2
程序员修炼之道
深入理解计算机系统
工程师升级:
设计模式
重构——改善既有代码的设计
工程师转型:
快速软件开发——有效控制与完成进度计划
人月神话
IT项目管理那些事儿
软件随想录
最后期限
走出软件作坊
你的灯亮着吗?——发现问题的真正所在
张峥(微软亚洲研究院副院长):
Algorithms (by Sanjoy Dasgupta, Christos Papadimitriou and Umesh Vazirani)
Data Structure and Algorithms
The C Programming Language
The Design of the UNIX Operating System
Compilers (龙书)
Computer Architecture: A Quantitative Approach
Flow
Outliers (why hard work and luck are both important)
邹欣(MSRA创新工程中心首席研发经理):
关于创新的书籍(http://book.douban.com/doulist/1253169/):
The Myths of Innovation
The Innovator’s Dilemma
The Innovator’s Solution
Crossing the Chasm
Inside Intuit
盛田昭夫
杰克·韦尔奇自传
梦断代码
Innovation
浪潮之巅

2011-04-11

aoyoo.org

处于众所周知的原因,blogger常年悲剧,近来Gmail/GAE等也惨遭毒手。。。
入手虚拟空间一枚aoyoo.org,无聊的时候自己搞着玩,省得被墙烦心

2011-01-17

手动修改ramdisk.gz

由于工作需要,对一个编译好的ramdisk.gz尽心修改, 查了一下, 原来是一个打包过的镜像而已.


ramdisk.gz在~/xxx

解压

#cd ~/xxx
#gunzip ramdisk.gz

在解压后, 得到文件系统镜象文件ramdisk, 原来的ramdisk.gz会消失(不知道为什么...)

#mkdir loop
#mount –o loop ramdisk loop //挂载镜像到loop目录
#cd loop

这里可以看到, 就是ramdisk.gz成功加载后的目录, 可以修改了, 我在这里添加了一些程序

#cd ..
#umount loop

#gzip –v9 ramdisk //生成新的ramdisk.gz压缩文件

2010-12-14

fedora13下安装KScope

    KScope ,一款源代码阅读、浏览工具,它也为你提供源代码的编辑环境.该工具尤其适合于使用 C 语言编写的大型项目.KScope 使用 Cscope 作为源代码的分析引擎,可以为编码人员提供一些有价值的信息.堪比Windows下的source insight.

     我用的是fedora13系统,用#yum install kscope后,从菜单启动的KScope只有一个标题栏,别的什么都没有......查看了以下,是1.9.2版本,估计是KDE和QT环境不兼容导致(我没有安装fedora的KDE)
    从kscope网站下载了kscope的版本为1.6.2的源代码(这个版本似乎用的人最多)

    解压后,进入kscope目录:

    [kscope-1.6.2]$./configure

       这个时候,会提示缺少kde-config,yum不了这个玩意, 上网搜也没发现这个软件包...不过,看名字应该是kde环境里面用于配置的,于是打开"添加/删除软件"(不得不说,这玩意没有ubuntu的新力得好用),查找kdelib,勾选上KDE 3 Libraries和对应的devel包,安装,再回去./configure,ok
     开始make,又出问题了,提示./src目录下缺少-lkateinterfaces,不知道这是什么,Google一下,按照这篇blog里面说的

       接下来,进行make:

        [ /home/lanch/Download/kscope-1.6.2]$make

        这个时候,会提示找不到 -lkateinterfaces 不用担心,该参数是要找动态链接

库,其实没有动态链接库,只有静态链接库,该库位于

         /usr/lib/libkatepartinterfaces.la

        这个时候,切换到src目录下:

        [ /home/lanch/Download/kscope-1.6.2]$cd src

        [ /home/lanch/Download/kscope-1.6.2/src]$grep -n -lkateinterfaces Makefile

        将Makefile文件中使用-lkateinterfaces 的地方,替换为/usr/lib/libkatepartinterfaces.la,接着,退回到上层目录cd .. ,进行make,就会大功告成。
       
    按照这样可以就可以了,不过替换是没有用原文里面的grep(不知道那行命令是干什么的),我gedit打开Makefile然后替换了.
    然后#make install  OK, 安装成功

2010-11-09

ubuntu下使用tex编辑中文简易方法

ubuntu下最简单的使用tex编辑中文应该是使用texlive+xelatex了

1.下载texlive
我是在学校的镜像下载的最新的texlive2010,比较大,有2G
将下载的镜像挂载到~/iso目录
不下载的话,也可以使用apt-get来安装,应该效果一样

2.根据~/iso/texlive-doc/texlive-zh-cn.pdf 安装
记得选中create symlinks in standard directories
省的自己设置环境变量

3.只要你的ubuntu支持中文,现在已经可以使用xelatex来编辑中文了
来个网上找来的例子,用gedit/vim等把下面的文本写进s.tex:

\documentclass{article}
\usepackage{fontspec}
\setmainfont{WenQuanYi Zen Hei Mono} %关键在于这里的字体设置,下面会说到

\begin{document}
Cowards die many times before their deaths.\\

懦夫在未死之前,已身历多次死亡的恐怖了。
\end{document}

4.ubuntu下
$fc-list
可以查看机器中的字体
找出中文字体,我ubuntu10.04有

文泉驿微米黑,文泉驛微米黑,WenQuanYi Micro Hei:style=Regular
文泉驿正黑,文泉驛正黑,WenQuanYi Zen Hei:style=中等,Medium
文泉驿等宽正黑,文泉驛等寬正黑,WenQuanYi Zen Hei Mono:style=中等,Medium
文泉驿等宽微米黑,文泉驛等寬微米黑,WenQuanYi Micro Hei Mono:style=Regular

将中文字体写到 \setmainfont{//这里} 就可以了

5. $ xelatex s.tex
目录下会自动生成pdf,可以显示中文

2010-11-01

SYGATE的端口映射

做了个Sygate的端口映射,这样在宿舍也能访问我在实验室的电脑了

打开服务器的Sygate,"高级"--"访问规则"--"增加"--"增加一条新规则"--"确定"
先做一个TCP的映射,用于http的访问
1.选择"IN"
2.选择"TCP"
3.填自己电脑内网地址192.168.1.101
4.默认端口80
5.保存

在相同的办法添加一个SSH的映射规则,端口为22,其他与http完全一样

OK,Sygate的映射完成,重启一下Sygate即可