推荐几本 Unix/Linux 经典书

几天前答应过一位新 VPS 客户,推荐一点 Linux 书,今天静下来写文才发现推荐书其实不是这么容易,至少应该知道一点读书人的背景,是入门、进阶还是高级,阅读习惯啊、方式啊;有人喜欢看例子书,边看边操作学得快;有的人喜欢先读原理,后操作。

现在每年增加的信息量比过去几百年还要多,不过好书还是那么少,经过历史考验的经典书就更少了,每个领域的经典书就那么几本,作为初学者应该首先看完该领域的经典书,然后再看其他的流行好书。

选择经典书是因为,这个拇指就能陌陌的年代我们实在没有时间花在烂书上,好书能更快更好的帮助我们理解内容,好书是一种享受,你不会觉得读书是一种辛苦。选择英文书是因为,这些经典书的英文都写得朴实、简单,不超过大学四级的阅读水平,长时间侵淫英文书可以为自己以后学习和工作打好基础。在工作中,最新最好最权威的资料都是英文的,翻译过来的二手资料不放心,做技术这行迟早要用英语混日子,老板想派你出国培训、开会你不能腼腆的把机会让给别人吧~

下面是 vpsee 看过的一些好书,有些书至今还放在桌头翻阅,这些经典不管怎么过分推荐和转载都不过分。

Linux 入门

Running LinuxLinux in a Nutshell 都是很棒的 Linux 入门书,如果你是计算机专业出身,只需要这两本书就可以了,这两本书都包括一些初级系统管理内容,Linux in a Nutshell 稍微难一点,建议阅读顺序是先 Running Linux 后 Linux in a Nutshell.

系统管理和网络

UNIX System Administration Handbook 可能是系统管理方面最权威的的一本大部头百科全书式著作,第一版本是1989年发行的,以后一直是 Unix 系统管理的方面的经典,其作者在2002年发布了对应的 Linux Administration Handbook 第一版,然后又成了 Linux 系统管理的必读,终于在2010年的时候作者把这两本书合为一本 UNIX and Linux System Administration Handbook.

Essential System Administration 是另一个 Unix/Linux 系统管理的经典书,可以替代 UNIX and Linux System Administration Handbook,不过建议两本都看看。

TCP/IP Illustrated, Volume 1: The Protocols 是理解 TCP/IP 协议的必读经典,书的内容不涉及具体的网络管理命令,也不讨论如何架设各种服务器,主要讨论 TCP/IP 各层协议是如何工作的,不管你是 System Administrator, Network Administrator, DevOps 还是 System Programmer 这本书都必读,就算今天用 Django, Ruby on Rails 之类的框架编程也应该了解一下底层 HTTP 协议是如何工作的,网络包是如何一层一层的封装、解封的。TCP/IP Illustrated 三部曲的另外两本也很经典,不过太窄太具体,除非你是 TCP/IP 协议设计者或网络栈码农,看 TCP/IP Illustrated, Volume 2: The Implementation 的用处不是很大。

系统编程

The UNIX Programming Environment 是两位 UNIX 大师 Brian W. Kernighan 和 Rob Pike 的合著,UNIX/Linux 编程入门的最好读物,字里行间里浸透了 UNIX 的哲学和设计思想。

The C Programming Language 可能有人会问为啥学 Unix/Linux 要懂 C 语言,C 是 Unix/Linux 的核心,想继续深入理解 Unix/Linux 必须懂点 C 语言,不然下面一些书没法继续读,C 语言还是一种优美、高效的语言,每个程序员都应该会(个人观点)。

Advanced Programming in the Unix Environment 是 Unix/Linux 编程的经典必读书,Unix 大师级作者 Richard Stevens 的巨著,事实上 Richard Stevens 的每本书都是巨著。

Unix Network Programming 是 Richard Stevens 另一巨著,这本经典 Unix 网络编程书可看作上面那本的补充。

编程还应该包括 shell 编程,这里没有单独拿出来推荐是因为因为上面推荐的入门和系统管理书里面都或多或少包括了一些 shell 编程基础知识。

操作系统原理和内核

Operating Systems: Design and Implementation 是操作系统原理的经典书,讲系统原理的还有另一本经典恐龙书 Operating System Concepts,我个人更喜欢前一本一些,理论加实践,书的作者在大学教书的时候没能找到满意的操作系统来教学自己写了一个 Minix,Linus Torvalds 发现 Minix 太简单不实用自己写了一个 Linux,貌似牛人都有共同的特点,不满意就自己造一个~,修改 Minix 内核是很有趣的事情,换工作后一直没机会再玩 Minix.

Linux Device Drivers 是内核编程的入门读物,难得这本经典书还是免费的。

Understanding the Linux Kernel 是 Linux 内核方面的经典,看这本书之前最好看过一些上面讲操作系统原理的书,不要指望看一遍就把这本书都搞懂,理解内核难点的地方在于内核之间的子系统是独立又是交叉的,又缺少实际可运行可修改的例子,不像 web 编程,改几行代码就可以立刻看到效果,所以内核学习是个痛苦的过程,这本书有助于建立一幅完整的 Linux 内核图景。

分享一款适合程序员的字体:Source Code Pro

每个 developer/devops/sysadmin 都有自己喜爱的系统(Mac vs Linux vs Windows)、编辑器(Vi vs Emacs vs Sublime Text vs …)、终端(iTerm2 vs Terminal vs Rxvt vs Gnome Terminal vs …)、配色方案(比如 Solarized vs Tomorrow vs …)、甚至字体(Inconsolata vs Deja Vu vs Monaco vs …)~

Source Code Pro 是 Adobe 公司发布的一款开源等宽字体,看这个字体名字就知道专为程序员定制,非常适合阅读代码,支持 Mac OS X, Linux, Windows 等操作系统。

刚把 iTerm2 终端的默认字体 Monaco 换成了 Source Code Pro,感觉 Source Code Pro 要扁一点,难道这样的设计是为了看更多行的代码?!

Source Code Pro

发布一款 Android 文本阅读器:TxtReader

几年前玩 Android 练手的时候开发了一款文本阅读器,主要是因为那个时候好用的文本阅读器几乎没有,仅有的几个要么是内嵌广告,要么就是臃肿肥,那个时候 Android 硬件配置不高,开一个臃肿肥的 app 看一个 10MB 左右的文本文件经常会程序崩溃(一些 app 没有考虑大文件情况,企图打开文件的时候一次性把内容读出来)。总之吧,当时的情况是本人需要一款轻量级、支持大文件的简单、好用的文本阅读器,顺便找个机会学一下 Android 编程~

后来放到 Android Market(现在叫 Google Play)后就没怎么管,默默的、无任何宣传的情况下今天惊讶的发现居然有 5000-10000 的装机量。这里顺便广告一下:

TxtReader 是一款轻量级的免费文本阅读器,只支持 txt 格式。简单介绍一下特点:

  • 支持自动识别编码(中文简体、中文繁体、英文、日文、韩文),不需要手动设置;
  • 支持自动书签,能自动记住阅读位置,启动软件后能自动从上次关闭的地方开始阅读;
  • 支持大文本文件阅读,不会出现文件太大打不开的情况;
  • 支持多语言菜单设置,可选中文、英文、日文;
  • 免费、绿色、小巧、简单,不侵犯隐私,没有垃圾广告,不打扰别人

TxtReader for Android

Merry Christmas & a prosperous 2014

Merry Christmas and a prosperous 2014

vpsee.com 改版(失败)了!

(7月12日更新:改版失败,差评比好评多得多,不得不恢复到原状,不过时间没有白费,折腾一下还是学到不少东西~)

四年都没有改版,不知道大家看这个博客有没有审美疲劳,反正俺是有点看不下去了,特别是现在看多了扁平化设计后再回头看有点 “不适”。现在不是扁平化(flat)都不敢拿出去 show,好吧,俺被感染了,上周末花了点时间重新设计了 vpsee.com,加上一些陆陆续续的补补丁丁,改版已经基本完成。

根据 2013 Web Design Trends Infographic 的图示和理解,今年网站设计的趋势包括以下几点:responsive, metro or “flat”, minimalism, typography, parallax, infinite scrolling, content first, fixed header, single page websites, and large image backgrounds. 我们的改版选择了 responsive, flat, minimalism, content first 这几个关键字。

现代社会的特点是东东极为丰富,给用户和消费者的选择太多,选择多是好事,坏事是不知道选哪个,害怕自己把持不住眼花缭乱的世界,所以定了两条原则:“内容优先” 和 “简单”。不管 flat or not flat,不管是否大图片背景,不管响应设计还是不响应,都要遵循 content first 和 simplicity (and minimalism).

有了基本指导思想,做事的速度就快多了。唯一纠结的问题是导航条是选择放在上面(fixed header)还是放在左边(vertical navigation),vertical navigation 也是今年的流行趋势之一。貌似大部分网站都在用 fixed header,决定尝试一下 vertical navigation.

工具方面,Twitter 的 Bootstrap 觉得有点笨重,不符合我们的最简原则,所以选用了另一个小巧的 CSS 库:Pure. 中文的排版方面参考了 TYPO.CSS.

有了神器 Pure 相助,重写 WordPress 模版花了不到一小时。欢迎大家测试和意见,如果这个新版设计太糟糕,请留言告知你所使用的浏览器和分辨率以便调试,谢谢。

新版
vpsee.com 2.0

旧版
vpsee.com 1.0

Merry Christmas & a prosperous 2013

一年又过去了,三年多的坚持让我们惊讶我们竟然走了这么远,vpsee.com 的存在离不开你的持续关注、评论建议、信任理解和给力支持,所以,谢谢你!

祝广大客户、合作伙伴、读者和此时此刻还奋斗在键盘一线的码农们,圣诞快乐、新年 happy!

Merry Christmas and a prosperous 2013

分享一些程序员的办公桌

优秀的程序员和普通的程序员之间的生产力差距在10倍到100倍之间。窥视高手的办公桌看看能不能找到高手生产力的秘密,没有高手的智慧和经验但至少不要让自己输在工具上,好的工具真的可以提高生产力,飞机真的比汽车快。看看什么样的环境和电脑帮助这些高手提高生产力的,VPSee 发现有两点值得注意:

  • 最简风格,工具都很简单,大多办公桌上没有乱七八糟的东西;
  • 都用 Mac(有一人同时用 Mac 和 ThinkPad),这个不稀奇,三年前就讨论过:为什么国外程序员爱用 Mac?

Coderwall 是 Y Combinator 最近孵化的其中一家创业公司中,致力于聚合 Geek 们在 Github、Twitter、LinkedIn 等的项目和信息,为 Geek 打造一张“技术名片”。最近 Coderwall 社区分享了几位技术高手的工作平台,以下图片来自 Codewall.

Ilya Grigorik: Google 工程师。

igrigorik

Alex MacCaw: JavaScript 程序员,O’Reilly 作者,目前在 Stripe 公司工作。

alex

Sam Soffes: iOS 和 Rails 软件工程师,Synthetic 前雇员,目前在创业。

samsoffes

Max Howell: Homebrew 的作者。

mxml

Scott Hanselman: 微软工程师。

shanselman

Jeff Lindsay: 开源黑客,Hacker Dojo 创始人,目前在 Twilio 工作。

progrium

Dr Nic Williams: 每个 Ruby 社区的人都应该听过或看过他的作品,贡献了超过100个开源项目,目前在 Engine Yard 工作。

drnic

Phil Haack: 前微软 ASP.NET 程序经理,目前在 GitHub 工作。

haacked

Michael Bleigh: 开发了几个被广泛使用的 Ruby 开源软件库。

mbleigh

Chris Eppstein: Compass 框架作者和 Sass 贡献者。

chriseppstein

迟到的 “软文”:42区 VPS

4月7日,我们(vpsee.com + 42qu.com)正式向外发布了北京机房(东直门双线数据中心)。从不认识张沈鹏、收第一封邮件、邮件讨论可行性、邮件继续讨论、选机房、租用机柜、讨论服务器配置、购买服务器、服务器上线、安装系统、优化和配置 Xen 环境、整理客户数据到开通第一个 VPS 只用了4天~

发布当天我正忙着去外地开会,已经 check in 正排队登机,忽然手机提示收到一封邮件,多背一公斤的朋友从我们的加州 OC 机房换到刚开的北京机房后出现问题,VPS 的文件系统只读不能写,囧,赶快跑到前面和空姐 mm 打个招呼,处理一点急事,打开 Mac 连上服务器以后没发现啥问题,没时间细看赶紧给 plan 留言,plan 确认后我就盖上 Mac 登机了。下机后,手机收到 plan 的邮件说已经解决,晚上回到 hotel 后再次检查了 VPS 情况,一切正常。发布的第一天很平静,没有想的那么忙,没有新客户:(

大概介绍一下我们的服务器、机房、团队、开发、⋯⋯

服务器

我们北京 VPS 的服务对象主要面向初创公司,所以北京机房服务器(host)的配置很强悍,全部采用 Dell 服务器:

型号:Dell PowerEdge R710
CPU:2x Intel Xeon CPU E5645 @2.40GHz
硬盘:6x 1TB SAS (15K), Hardware RAID 10

机房

服务器托管在北京东直门数据中心和北京石景山七线数据中心。

北京东直门数据中心是占地约7000平方米的电信级宽带数据中心机房,在北京地区处于专业 IDC 市场领先地位,也是当当网等知名网站托管的机房。

北京石景山七线数据中心是北京少见的 BGP 七线机房 , 由北京数据家联合北京市政府和北京市发改委出资2个亿共同搭建联通、电信属于内网,在联通和电信线路上,与中国西单电报大楼机房50G内部直联,与中国电信和中国铁通分别是 42G 和 40G 直联核心交换层,骨干延迟小于10ms,8G直联清华大学教育网骨干核心节点,仅1跳路由,与赛尔网同级别,是各大运营商中与教育网的最大直联带宽。内部直联15G独立国际出口带宽直插国际局,良好的国外访问。机房经典客户:PPlive、新浪网、赛迪网、开心网、土豆网。

团队

有必要给大家简单介绍一下我们的团队。42区是一家创业公司,专注于创业社交网络,分享心得、经验、数据、文章,找到给你答案的人。(另:42区的源代码是开源的,有兴趣的同学可以在自己的服务器/VPS 上搭建一个运行平台。)

张沈鹏(42qu.com 的作者和创始人,前豆瓣程序员)
plan(前阿里云程序员,前百度运维)
vpsee(你懂的~)

开发

vps.42qu.com:后台的用户注册、自助购买、自动开通、自助续费和重装、IP 管理、提成链接等功能已开发完成并已上线运行,还有一些功能比如:自助管理等功能还在陆续开发中。因为团队里除了 VPSee 是打酱油的其他的队友都是 Python 高手,所以 Python 也是我们的首选语言,采用 Tornado 轻量级 Web 框架,使用 Thrift 通讯。

vpsee.com:删除了第三方商业客户管理系统 WHMCS,这套系统不适合中国人的使用习惯,ticket 基本没人用,客户都喜欢用 Gtalk/Gmail/QQ/MSN 即时通信的方式寻求技术帮助和处理问题。新的 VPS 后台管理程序已投入运行,5月底重启了美国机房的所有 VPS 开始使用新的管理程序。

服务

现在,我们可以利用我们的跨时区优势为客户提供真正意义上的 24×7 技术响应和服务,并提供手机、电话等方式。试着北京时间凌晨3点给我们 42qu 技术支持丢一封邮件 (^_-)

成长

3月20日收到张沈鹏的一封邮件,略去来来回回几千字的邮件,开始着手做这件事;
3月24日北京机房第一台服务器上架运行,同一天,开通第一个 VPS;
4月7日正式对外发布 VPS 产品,并在 V2EX 上发布广告;
5月9日增加北京石景山七线数据中心;
6月9日北京机房运行中的 VPS 达到100台,绝大部分是 2G VPS 客户。

42qu VPS 第一台服务器:

42qu vps first server, dell r710

Red Hat 正在悄悄贡献 OpenStack 代码

red hat

据说 OpenStack 刚开始启动的时候 Red Hat 拒绝加入,主要是因为不喜欢 OpenStack 的管理模式(牢牢被抓在 Rackspace 手里),也可能是为了保护自己的云计算产品。不过随着 OpenStack 社区模式日益清晰,Rackspace 将会逐步把 OpenStack 交给社区或基金管理和运作,Red Hat 可能放了点心,从一月份的一篇 Red Hat Quietly Joins the OpenStack Effort 看出,Red Hat 的几个开发人员正在悄悄贡献 OpenStack 代码,估计是为 OpenStack on Fedora 的需要投入了不少人力,也可能是为了以后把 OpenStack 加入到自己的 RHEL 企业版。大家做了什么,看 git 日志最能说明问题。我们来证实一下:

$ git clone https://github.com/openstack/nova.git
$ cd nova
$ git log --since="6 months ago" --pretty=format:"%ae" | grep -v \
"review.openstack.org" | cut -d@ -f2 | sort -n | uniq -c | sort -n | tail -10
     26 jk0.org
     27 canonical.com
     32 nicira.com
     35 citrix.com
     37 openstack.org
     43 codestud.com
     47 cloudscaling.com
    156 redhat.com
    310 gmail.com
    352 rackspace.com

从开发人员的邮件地址来看,显然 Rackspace 贡献最多,有很多人不用公司邮箱用 Gmail,然后就是 Red Hat 了(看这个样子,不像是打几个包修改几个 bug 这么简单),那个貌似和 OpenStack 打的火热的 Ubuntu 公司 Canonical 在哪里?嗯,差不多第9位,让人感到困惑的是 Ubuntu 云计算宣传做的倒是挺足,Ubuntu 还是 OpenStack 开发团队的默认开发测试平台,怎么仔细一看没做啥呢,不会就是把 OpenStack 打包后方便大家 apt-get install 吧?Ubuntu 在 Linux 内核方面没贡献,在 OpenStack 也贡献不多,在忙啥呢~~奇怪没有看到 Dell,貌似 Dell 对 OpenStack 很积极,还集成到了自己的开源项目 Crowbar 里,可能和 Canonical 一样,更多的是集成,而不是开发吧。

今天刚拿到空邮过来的杂志了,貌似作者可以免费收到一本,看了一下自己的文章被改成繁体术语有点别扭,排版出来居然整整正反两面有三页 A4 的纸。

linuxpilot

Ubuntu 自建「Amazon EC2」私有云

linuxpilot 111

VPSee 上次写的一篇密码保护的文章已经发表在 Linuxpilot 月刊第111期,标题是:Ubuntu 自建「Amazon EC2」私有云,3月14日出版,文章图文并茂详细的描述了如何架设 OpenStack 私有云。这本杂志主要在香港和台湾发行,在香港书报摊、7 Eleven、OK 便利店、书店和多个台湾销售点都能买到,售价是40元港币。我不太清楚大陆书店或报刊亭是否能买到,望买到的朋友能留言告知~~

Linuxpilot月刊第111期簡介

名稱:Linuxpilot 國際中文版
售價:HK$40/NT$160
編輯:蕭友強 主筆:麥經倫
出版:Linux Pilot Ltd.
出版日期:2012年3月14日
對象:企業用戶及進階用戶
頁數:Linuxpilot 76頁+2頁海報+商智謀略 16頁 (全彩印刷)
尺寸:280mm高 x 205mm闊 (A4 Size)
網址:www.linuxpilot.com 電郵:editorial@linuxpilot.net
地址:香港九龍觀塘鯉魚門道2號新城工商中心2樓9室