Category Archives: 多读点书

香港房价全世界第一的真相.

香港平均房价为家庭年收入中位数的12.6倍,居世界首位。

网易上看客的160期提到香港房价全球第一,我就深深地震惊了.

12.6倍于收入这个数据来自Demographia最新的International Housing Affordability Survey(国际住房负担调查).学过统计学的人自然对样本比较关心,让我们来看一下这个调查的样本.
涉及到的国家和地区是:澳大利亚,加拿大,香港,爱尔兰,新西兰,英国和美国,一共325个城市,样本数还不少.
但是仔细看一下就会发现,人口超过100万的特大城市只有1/4,剩下3/4城市的人口都小于100万.我随便查了几个:Bakersfield, CA人口大约35万,面积375平方公里,人口密度.(狭义城市,非大都市区,下同). Kingsport, TN,人口大约5万,城市面积大约116平方公里,人口密度393.4.Tyler, TX,人口大约97000,面积大约140平方公里,人口密度688.
看看北京 (中文)的,直辖面积(类似于美国的大都市区)16800平方公里,常驻人口1960万,人口密度1200.年收入(算上公司交的各种社保)按人社局和统计局的数据为56000元.


算了,怎么说也改变不了现实,吃饭

Debian 6 VPS安装新版本php-fpm+MySQL+Nginx

一个小小的VPS,根本用不到企业级的CentOS,况且VPS本来资源就有限.centos+apache2真的太奢侈了.我现在的VPS标配都是php5,mysql 5和nginx 1.下面的方法恨简单,本着简单,高效原则,全部apt-get来安装,不用15分钟.如果超过30分钟,这个VPS就不能用:如果不是钻石硬盘那就是网络有问题.
拿到VPS,装debian 6 32位的.
嗯,先更新一下

apt-get update
apt-get upgrade

除去除去一些不需要的东西和apache2这样耗资源的.

apt-get -y purge apache2-* bind9-* xinetd samba-* portmap sendmail-* sasl2-bin

(如果不需要sendmail发邮件,还可以加上sendmail-*)
你硬盘小咋办?删除一些不必要的组件

apt-get -y purge lynx memtester python-* odbcinst-* sudo ttf-*

(也可以再加上unixodbc等)
可以打扫一下

apt-get autoremove
apt-get clean

接下来装php,mysql和nginx了.
debian官方源的软件版本太老了,太老太老了…那么换个非官方的吧.Dotdeb是个不错的源.
打开/etc/apt/sources.list,添加下面两行之后保存上传

deb http://packages.dotdeb.org stable all
deb-src http://packages.dotdeb.org stable all

然后增加新源的证书

wget http://www.dotdeb.org/dotdeb.gpg
cat dotdeb.gpg | apt-key add –

增加了新源当然要更新一下

apt-get update
apt-get upgrade

接着就可以装了,根据自己需要来安装相应的东西,比如gd等组件.比如我基本上用到这些:

apt-get install php5-cli php5-fpm php5-curl php5-mysql nginx mysql-server

大概110M左右东西,在安装过程中需要输入mysql的root密码.其他就是等待.
安装完毕就根据自己VPS的配置进行设置.配置文件都在/etc下.
建议配置:
/etc/nginx/nginx.conf


worker_processes 2;

别的基本不用改,但是我把gzip_开头的选项都打开.
/etc/php5/fpm/pool.d/www.conf (我用的完整版本www.conf)

[www]
listen = /tmp/php-www.sock
listen.mode = 0666
user = www-data
group = www-data
pm = static
pm.max_children = 8
pm.max_requests = 5000
rlimit_files = 512000
request_slowlog_timeout = 10s
request_terminate_timeout = 30s
slowlog = /var/log/php-fpm.slow.log
;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com
;php_flag[display_errors] = off
;php_admin_value[error_log] = /var/log/fpm-php.www.log
;php_admin_flag[log_errors] = off
php_admin_value[memory_limit] = 24M
php_admin_value[open_basedir] = /var/www/:/tmp/:/var/tmp/

这是256M OpenVZ的标准配置,根据内存大小调整pm.max_children和php_admin_value[memory_limit]的值

mysql 5.5默认就用Innodb了,又不是浩大工程,根本用不到,还占那么多资源,增加下面两项即可
/etc/mysql/my.cnf

[mysqld]
default-storage-engine = MyISAM

skip-innodb

然后重启服务

/etc/init.d/nginx restart
/etc/init.d/php5-fpm restart
/etc/init.d/mysql restart

基本上这个很节约资源也够处理你的请求了.
题外话,别老觉得nginx会导致502, 好刀在好刀客手里才能发挥最大作用.根本不需要把nginx做后端,前面在加个apache.我们单台服务器用nginx+php跑日2000万动态PV不出问题.

小内存VPS使用MySQL 5.5占用内存大的原因

昨晚购一个小内存VPS,256M保证内存,384M突发内存.VPS商的默认模版不太好,小内存不太适合用LAMP,所以卸载了apache和一些不必要的东西.然后装上LNMP(用dotdeb的源).一切和以前一样配置.结果MySQL一起动就占300都M内存,甚至导致不够内存使用任何命令.非常不解.
然后找一个正常的小内存VPS来比较,最后发现dotdeb的MySQL更新到5.5 Final了,而之前装的全是5.1的.再一查,5.5 开始默认使用InnoDB引擎,我光用了一句skip-innodb没效果.所以最后在[mysqld]里加了一句:default-storage-engine = MyISAM, 轻质默认使用MyISAM引擎来存储.这样的小内存VPS本来就不做大用处,不需要InnoDB.

[mysqld]
default-storage-engine = MyISAM

skip-innodb

然后重启mysql服务,mysql果然降到了只有50M,这下就可以了.

MySQL目录占用极大空间并且起不来

一个VPS,只有20G空间, 用

du /usr/local/mysql –max-depth=1 -h

看占掉了其中12G,看到目录里有很多mysql-bin.00000x这种有些一个就要超过1G.
我尝试重启了MySQL,结果显示

MySQL manager or server PID file could not be found! failed!
Starting MySQL.Manager of pid-file quit without updating file. failed!

Google了一下,发现开了log-bin.进入/etc/my.cnf,把其中的log-bin和binlog_format注释掉,然后胆大的删除了bin.00000x.
然后重启就正常了.
看了一下log-bin的功能,如果有备份好习惯的,完全可以不用.况且真出问题了它也未必有效.

ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ 的解决

系统:CentOS

因为数据迁移到另一台机器,发现MySQL起不来,报错:

ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)

想删除mysql.sock,结果没有

[root@host ~]# rm /var/lib/mysql/mysql.sock
rm: cannot lstat `/var/lib/mysql/mysql.sock’: No such file or directory

重启服务失败

[root@host ~]# service mysqld start
Timeout error occurred trying to start MySQL Daemon.
Starting MySQL:                                            [FAILED]

强行从控制台起

结果报错:

InnoDB: Unable to lock ./ibdata1, error: 11
InnoDB: Check that you do not already have another mysqld process
InnoDB: using the same InnoDB data or log files.
InnoDB: Unable to lock ./ibdata1, error: 11
InnoDB: Check that you do not already have another mysqld process
InnoDB: using the same InnoDB data or log files.

提示已经mysqld进程存在,但是这个使用重启服务是可以启动mysql的.结果几个小时候还是挂了.

突然想到InnoDB引擎驱动mysql的话在磁盘转移之后会有问题,之前甘总做李宁funrun专题时候就遇到过.

根据提示,我想弄成相同的日志文件,可是咋弄啊.然后想了一下,好吧,停止服务,删掉ib_logfile0和ib_logfile1,重启.
嘿,几天了没挂.

施琅号

有人看到这么一则新闻美媒:中国第一艘航母将定名为“施琅号”(图),对于航母取名施琅非常抵触,曰:他是汉奸,帮助满族人推翻了近代中国最后一个汉人政权.而其实施琅本人是一个极具争议的人物,有不同看法是好事.但是首先帮助满族人推翻了近代中国最后一个汉人政权这个论据是不严谨的.

为什么这么说?历史公认清朝自1644年就建立了全国性的政权了.当年李自成破京,崇祯皇帝上吊是明朝灭亡的标志.而清军入京后,汉人政权就只有南明这样的小政权了.另外,清朝中亦有太平天国这样的大型汉人政权存在过,也能侧面说明上面的论据是有问题的.

那为啥官方要把施琅这个评价两极分化的人做为第一个航母的名字呢?那就从施琅这个人说起.

施琅是明朝降将,有个著名儿子施世纶(施公奇案的原型).当年随郑成功的父亲郑芝龙降清,继而有跟随郑成功反清.后来郑成功因故杀他全家而再次降清.由于有前科,起初康熙并没有重用他.郑家子孙不孝,有传郑成功是被下毒的,而他儿子又私通乳娘.背负家仇的他一心要灭了郑家.而当年康熙觉得台湾是个弹丸之地,土地贫瘠,人烟稀少,又有大海守着,不值得费精力去收复,这和鹿鼎记中描述有点不同.

施琅上书康熙,陈以利弊,康熙最终决定派施琅收复台湾.施琅善水战,终破郑军(并且上演了一出哭国姓的戏),客观上完成了对台湾的法理统一,即台湾为中国领土.

而台湾郑氏又是什么人呢?就从大家都知道的郑成功说起,郑成功攻打南京失败后,元气大伤,固守厦门金马,于是准备去台湾.于是给葵一写信说,台湾很早以前就是中国人开辟的,是中国的领土,现在我来了,你就需要还给我.之后的事大家都知道了.然而郑成功这时就偏安台湾,甚至虽奉明为主但是处于一个事实独立的状态(郑克塽按东宁王朝年表追谥其潮武王).郑成功死后,长子的岳父陈永华(武侠里陈近南的原型)和冯锡范内讧,后冯得势,其婿郑克塽继承.郑克塽后来被施琅打到降清.施琅后治台,传说把郑家鞭尸,骄横跋扈,贪赃枉法,绝不是一个传统意义上的好官.

总结一下就是没有施琅,康熙可能就根本不要台湾,也就没有”台湾是中国领土不可分割的一部分”这说了;如果没有施琅攻下台湾,台湾就将是一个独立的明郑王朝.这可怎么了得啊! 所以结合当前的政治形式,施琅必须是个需要正面宣传的对象.君不见CCTV都演过一部被人号称汉奸招魂幡的”大将军施琅”么?而台湾的官方(因为第一点)和民间(因为第二点)对他的评价都是负面.

航母要是取这个名字也不奇怪,甚至可以解读为”不放弃武力解放台湾”.对于一些人来说,汉奸不汉奸不重要,重要的是有政治需要.