Steve Jobs:我们不做市场调研

apple

Fortune 杂志的资深主编 Betsy Morris 08年对 Steve Jobs 做了一次专访(原文:Steve Jobs speaks out,如果想看翻译的话可以看这里),其中谈到了产品、事业、公司、科技、人才的一些理念,一些 Apple 与众不同的地方,来看看 Apple 和 Jobs 如何 think different:

1、不做市场调研,我们只是想做伟大的产品

We do no market research. We don’t hire consultants. The only consultants I’ve ever hired in my 10 years is one firm to analyze Gateway’s retail strategy so I would not make some of the same mistakes they made [when launching Apple’s retail stores]. But we never hire consultants, per se. We just want to make great products.

2、设计 iPhone 是因为对现有手机的不满

We all had cellphones. We just hated them, they were so awful to use. The software was terrible. The hardware wasn’t very good. We talked to our friends, and they all hated their cellphones too. Everybody seemed to hate their phones.

3、推出 iTunes 是因为我们都喜欢音乐

We did iTunes because we all love music. We made what we thought was the best jukebox in iTunes. Then we all wanted to carry our whole music libraries around with us. The team worked really hard. And the reason that they worked so hard is because we all wanted one. You know? I mean, the first few hundred customers were us.

4、做出我们自己想要的伟大产品后,自然会有一群与我们兴趣相投的人想要购买我们的产品,这就像是他们付钱给我们工作。今天刚好在外面逛街碰到推销,很老土的推销方式,买一送什么还可以参加抽奖。他们希望能 convincing people that they want something they don’t.

继续阅读 »

JSHosts:£4.99 128MB OpenVZ VPS

jshosts

JSHosts 是一家英国公司,拥有自己的服务器和设备,并且只使用服务器级别的硬件,意味着不会在服务器上使用桌面型 CPU。提供 RAID 磁盘阵列保护,Live Chat、Email、Tickets、电话等多种技术支持方式,14天 money back 保证。网站上没有提及 VPS 服务器硬件、网络等有用信息。VPS 配置如下:

服务器在 UK
HyperVM 控制面板
10GB 硬盘
128MB Guaranteed RAM,256MB Burst Memory
250GB 带宽
4.99 英镑

WHT 显示,如果能预付6个月的话会有10%的优惠,预付12个月的话优惠15%。服务器硬件信息:

we use a minimum of Quad Core processors with 8GB of DDR3 RAM.

Kill 某个用户的所有进程

在一台100多人使用的 SUN 服务器上经常发现有人滥用资源,平时用用就算了,到了交作业的时候100多号人同时登录使用,服务器明显迟缓,特别是实验室用的是瘦客户机,没硬盘,SUN 客户端需要从服务器装载系统镜像,而且编译、运行程序都要在服务器上完成。如果发现某个用户运行很多进程,并且进程还有子进程,怎么能方便的找出全部进程并 kill 掉呢?

ps -ef | grep ^username | cut -c 10-15 | xargs kill -9

把全部进程打印出来根据用户名过滤后找出全部进程号,然后逐行 kill 掉。xargs 就是用来把 cut 后的输出逐个以空白符分割后输给 kill。注意上面的 grep ^username 不能缺 ^,^username 表示从一行开始匹配 username,比如就可以避免匹配到 sshd: username@pts/0。不过尽管加了 ^,上面的代码仍然有个小 bug,如果恰好有个进程名和用户名完全一样怎么办?可以用 ps -u 找出所有与 username 相关的进程,然后 grep -v 过滤掉 PID 只剩下进程信息,然后逐行 kill 掉,如下:

ps -u username | grep -v PID | cut -c 0-5 | xargs kill -9

不过上面的命令还有个小问题就是如果 cut 的时候不小心 cut 多了或者 cut 少了怎么办?可以用 awk 过滤一列信息出来:

ps -u username | grep -v PID | awk '{print$1}'| xargs kill -9

上面的命令也可以在 Linux 上运行,不过在 Linux 下可以用更简单的 killall,Solaris 上没有 killall:

killall -u username

一个小小的命令行反反复复改了多次,更别说上百万行的代码了,写代码太容易引入 bug 了,这就是为什么测试这么重要的原因,我觉得程序员应该用50%的时间写代码,50%的时间测代码;测试员也应该用50%的时间测代码,50%的时间写工具来自动测试代码。

Shell 的 IFS 变量

今天把一个 shell script 从 Linux 移植到 Solaris 时遇到一些小问题:

args=`tail -n 1 $file | head -1`

tail 的用法有点不一样。Solaris 下的 tail:tail -1 $file

IFS=”

javac $1
sort_program=`echo $1|sed ‘s/\.[^.]*$//’`
args=”2 1 3″
java $sort_program $args

上面的 script 编译一个 java 排序程序,然后用给定参数 2 1 3 运行,排序后输出 1 2 3。java 运行上面脚本时报错:

Exception in thread “main” java.lang.NumberFormatException: For input string: “2 1 3”

显然 java 把 “2 1 3” 字符串当作了参数,应该是 2 1 3,怎么会这样呢?echo $args 显示 args 的值的确是 2 1 3。调试了半天发现这个 shell script 开头有个 IFS,不知道什么时候加上去的,上面的那句 IFS 导致以新行切分文件时将 “2 1 3” 作为整体发给 java,而不是单独将 2 1 3 作为参数传给 java,所以去掉 IFS 语句就可以了。IFS 是个很有用的变量,默认下用来分割空格、制表、换行等,也可以用来分割指定字符,比如把 www:vpsee:com:8080 分割成 www vpsee com 8080 就可以用 IFS:

bash-3.00$ $line=www:vpsee:com:8080
bash-3.00$ $IFS=':'
bash-3.00$ $for i in $line; do  echo $i; done
www
vpsee
com
8080

上面 java 例子中的 `echo $1|sed ‘s/\.[^.]*$//’` 用来过滤掉后缀名,比如:编译 javac HelloWorld.java 需要 .java 后缀名,但是运行 java HelloWorld 就不需要带上 .class 后缀名。 下面的 shell script 得到一个文件名后打印出其不包含后缀名的文件名:

student=$1
student_title=`echo $1|sed 's/\.[^.]*$//'`
echo $student_title

ItsJustHosting:$6.99 128MB OpenVZ VPS

itsjusthosting

ItsJustHosting 提供24×7 ×365 技术支持,100mbps 网速,DDoS 保护,Raid-1 磁盘阵列,不 oversell。whois 显示域名2009年5月才注册,不到3个月,没有公司介绍信息。VPS 配置如下:

服务器在 Dallas, Texas
Webmin, LXadmin 控制面板
10GB 硬盘
128MB Guaranteed RAM,256MB Burst Memory
100GB 带宽
6.99 美元

服务器硬件和网络信息:

Our servers employ the latest Intel Core 2 Duo processors running at 2.8GHZ, 8GB of ram and over 500GB of Raid-protected storage as well as over 5TB of premium bandwidth. Switching technology: a 100% Cisco Infastructure. The facility is served by multiple fibre carriers including Level 3, MCI Worldcom, InterNap, SouthWestern Bell, Time Warner, Verio and more.

WizzVPS:£4.95 160MB Virtuozzo VPS

wizzvps

WizzVPS 是一家英国 VPS 服务商,是 Layershift Limited 的分支,后者从2003年起开始提供高质量的 Managed VPS,是最早一批使用 Virtuozzo 技术的公司。WizzVPS 提供低价 VPS,面向低端用户,可以看作是 Layershift 的 “低价版”。WizzVPS 采取了奇怪的技术、营销策略,所有 VPS 没有 Swap、也不支持 Burstable Memory。即时开通 VPS,即时重启、重装操作系统,24×7 ×365 技术支持,没有 money-back,不允许 IRC, P2P, proxy servers, file-sharing 等。VPS 配置如下:

服务器在 Manchester, UK
Virtuozzo Power Panel 控制面板
10GB 硬盘
160MB Dedicated RAM
150GB 带宽
4.95 英镑

服务器硬件和网络信息:

We use the latest high-specification, redundant Dell PowerEdge 2950 III servers, high-end Parallels Automation software in use by only the largest providers, and Juniper/Cisco network infrastructure to ensure your VPS is working at all times.

用 Monit 监测 Linux 服务器

Monit 是一个用来监测系统状态的工具,不但可以用来监视进程、服务、文件、目录、文件系统,还可以在服务 down 掉的时候自动重启服务或者当某个进程占用过多的资源的时候自动停掉进程,并且支持 Email 报警功能、远程服务器监测、web 管理界面等,功能很多很强大。VPSee 用 monit 来监测多个 VPS 和独立服务器,如果某个 VPS down 了、某个服务器资源紧张,就能第一时间知道,而且某个服务停了的话可以自动重启服务。

安装 monit

在 CentOS 下安装和配置文件:

# wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
# rpm -Uvh rpmforge-release-0.3.6-1.el5.rf.i386.rpm

# yum install monit

# vi /etc/monit.conf

在 Debian 下安装和配置文件:

# apt-get install monit

# vi /etc/monit/monitrc

配置 monit


继续阅读 »

Xen 的性能

周末看了来两篇关于 Xen 的论文,一篇是 University of Cambridge 发表的 Xen and the Art of Virtualization;另一篇是 Clarkson University 的 Xen and the Art of Repeated Research。Repeated Research 这篇是对 Virtualization 那篇做的重复试验,两篇论文的测试数据相似,很好的证明了 Xen 的性能优势,并且回答了 VPSee 感兴趣的4个问题:

本文数据、部分结论和图片均来自以上两篇论文。

1、Xen 相对 Native,VMware 等来说性能好多少?
从理论来说,使用 para virtualization 技术的 Xen 要比使用 full virtualization 的 VMware 性能要好。测试的结果也证明了这个说法, Xen 相对 Native Linux 来说性能损失不大,相对 VMware 来说性能要好1倍左右。
Xen Native VMware UML 性能对比

2、Xen 适合做 Web/VPS Hosting 吗?
Xen 非常稳定、可靠,一个普通的服务器(如果内存够的话)完全能够承受16个左右的 DomU/VPS 同时运行,但是如果同时运行128个左右的虚拟系统的话性能会很差,即使内存、硬件配置足够。下图中随着 DomU 的增加,Xen 总体性能基本能和 Native 持平。很显然 Xen 等虚拟技术并不是用来提高整个服务器性能的,而是通过隔离操作系统来充分发挥每个 DomU 上的计算能力,相比独立服务器虚拟技术极大的节约了计算资源、电力、物理空间、管理维护、IP地址等,所以被称之为“绿色计算”。
Xen Web和数据库服务器性能

3、Xen 能在一般老机器(5年左右)上运行吗?
可以,不但可以运行,而且运行得很好。在1台配置为 P3 1GHZ/512MB/40GB 的老机器上和1台 Xen 2.4GHz/2GB/146GB 的新机器上测试的结果显示,Xen 的性能损失比较稳定,与硬件配置好坏关系不大。也就是说在好机器上 Xen 的性能相对 native 来说损失是5%的话,那么在差机器上也相应损失5%,可以把 Xen 看作是真实硬件一样,随着硬件配置逐步升高相应性能也逐步提高。VPSee 做得简单测试显示有10%左右的性能损失。

4、Xen 在普通服务器上运行和在专门为虚拟设计的服务器上运行的差别?
就从性能方面来说,专门为虚拟环境设计的的 IBM zServer 服务器和普通的 Dell 服务器在相同硬件配置下性能基本没什么差别。但是就价格来说 zServer 要卖得要贵得多,这就是专门服务器专门的地方,卖的不是硬件配置,卖的是高可靠性、高扩展性、可管理性、可维护性等。

IntoVPS:$10 512MB OpenVZ VPS

intovps

IntoVPS 是罗马利亚的一家 VPS 服务商,Elvsoft Ltd. 底下的一家公司,总共有6个人,开发了自己的 VPS 控制面板,并且用 Django/Python 开发了 intodns.com,一个免费查询 DNS 状况的在线工具。VPSee 喜欢有点技术背景的公司,至少他们知道自己在干什么,知道如何解决或者帮助解决客户的问题。VPS 配置如下:

服务器在 Europe (Cluj-Napoca)
自制控制面板,支持 Start/Stop/Reboot/Reinstall 等
20GB 硬盘,RAID10
512MB Guaranteed RAM,1GB Burst Memory
500GB 带宽
10 美元

遗憾的是,没有服务器硬件和网络等详细信息。

Fotolog 的 Solaris/MySQL 架构

Fotolog 是一个以图片为主的 SNS 网站,让 VPSee 好奇的是用 Solaris 的 Web 2.0 站点不多,看看 Fotolog 有没有什么新东西。

数据

数据和图片来源(2007):Fotolog: Scaling the World’s Largest Photo Blogging Community

超过1100万用户
超过24亿条评论
每个月超过35亿 PV 和 2000万独立访问,Alexa Top 20
总共有超过2亿张的图片,每天还有超过50万张照片上传
20%用户每天在 Fotolog 停留 24分钟
32台 MySQL 服务器和一个由30台 memcached 服务器组成的集群

技术平台

Solaris 10
MySQL
Apache
Java / Hibernate
PHP
Memcached
3PAR
IBRIX
CDN

MySQL

32台 MySQL 服务器被分成4个集群:User, GB (guest book), PH (photos), FF (friends and favorites lists)。每个集群又被分成一个 shard 集,并由一个应用服务器集做前端。每个 shard 集包括若干个 MySQL 服务器,一个只写的 Master-Master 配几个只读的 Slaves,应用服务器把读请求发给 Slaves,把写请求发给 Master。MySQL 只存储图像的 metadata,没人想要把图像存到数据库里吧?什么是 metadata?metadata 是 “data about other data”,如一张照片的 metadata 就是一些包括:作者,年份,照片说明,摄影设备等信息就是这张照片的 metadata。

继续阅读 »