Loading...

Archive for April, 2008

    AD: 子非鱼母婴社区 | 猛买 | Jobsdigg | 很棒的男装店

麦迪不容易

火箭

照片笑死人

荐书(2)——给子宁的书

电话里的子宁总会抱怨技术上的东西不那么容易学,那些技术方面的书们也确实没那么容易让人很快上手。Thomas曾经推荐过一篇控制论方面的白话文章,写得实在不错。在Web开发或是别的技术方向上,怎么没见过这么牛的白话文呢?

不过对事物的理解总是循序渐进的过程,读别的方面的书也许对现在的难题有好处。今天就推荐给一些我看过的别的书,课外图书。整理的过程我也发现,自己精神生活还是比较丰富的。(卓越亚马逊现在还一直免邮费,所以每本书都加上了卓越网的链接。我的这些书,大多都是从卓越亚马逊买的)

像赫本一样优雅

我2006年10月读到了这本书,它不是一个简单的赫本画传,更多的内容是赫本背后的故事。虽然我是男的,但还是很喜欢这本谈如何做个女人的书。第一次见到Jennifer时,就送了她这本书。

中国哲学简史

作者是冯友兰。我买的是中英文对照的版本,因为这本书本就翻译自冯友兰的英文讲稿。大学里大家都要学马哲,大多数人都是在老师辩证唯物主义的催眠曲中混过去的。但是这本《中国哲学简史》一点都不枯燥,像是在讲故事,把古代的哲学家和他们的理论们真正充实了起来。alone某次上课带了这本书去,以后就经常拿在手里。

魔鬼投资学

在寒假里我读了这本《魔鬼投资学》,其实在车上读到前言我就被深深吸引了。这本书到处体现着作者多学科的思维和眼光,从伍兹调整挥杆动作看投资中的长期目标和短期目标、求证陷阱、新旧企业的竞争等等,薄薄一本书,读起来颇为享受。封面说它与《魔鬼经济学》、《世界是平的》齐名,可惜后面两本书我都没机会好好读。

宏观经济学

在任何一个书店搜索“宏观经济学” ,都会有一大堆书跳出来。可能是因为专业方面的书都会直接找国外图书的阴影版或翻译版(实在对我们国内的出版物没什么信心了),所以在搜“宏观经济学”时也刻意地找翻译过来的版本。于是找到了这个。我只是为了补充点知识,远远没有上升到“学”的高度,所以也无法评判书的好坏。可以肯定的是,它很通俗易懂。(或者是我理解能力太好了?)

少写一点,明天还能出一期 :)

PHP with Memcached

在Windows上有个烦恼就是装类似于memcached、lighttpd这些好东西都得一番好找,最后像是做贼一样,终于在互联网的某个角落里找到了。

其实memcached Server我早就找到了,可是配套的PHP的memcached Client一直没找着。windows里不能像在linux那样config/make/make install就搞定,只能满世界地找dll。

坦白说现在做这些都是尝试。niupu的微薄流量对比起强悍的双核服务器,哪怕不用缓存也没啥问题,现在用文件系统缓存自然也可以。想把memcached拿来尝尝鲜,终于被我找到php_memcached.dll

把php_memcached.dll放在php的扩展文件夹,然后在C:\windows下打开php.ini,加入一行对php_memcached.dll的引用。重启apache,看看phpinfo()中有没有memcache,如果有,那就安装成功了。

我用Zend Framework中的Zend_Cache,使用默认配置,就可以连接memcached Server了。试试看,速度也没提升多少嘛。

荐书(1)

看到Fenng说今天(or 昨天?)是世界读书日,正好最近都打算写写自己看的书。内容比较多,所以打算分2、3天来写。今天先写写技术方面我最近读的一些书,明天打算写一下其他方面的书。

最近颇为关注Ruby和Rails,学得也比以前更深入。

Ferret

这本书是讲ferret的,是一个ruby下面Lucene的移植(现在的数据已经不和lucene兼容了)。国内没有Ferret影印版或者中文版,我看的是英文版CHM电子书,有兴趣的朋友可以搜一下。这本书是ferret的作者写的,所以谈得很不错。不过要用ferret来索引中文,分词方面推荐使用浙大pluskid写的Rmmseg。PS:看到pluskid谈到学软件工程,没准和我一样是05级的呢。

Ruby Cookbook影印版) (中文版

以前推荐过第二版的Web开发敏捷之道 ,不过这本ruby cookbook更侧重谈ruby。我想肯定有这样的人,在开始照着别的书书写基于rails的程序,自己却不知道为什么要这么些。从这本Ruby Cookbook中不难发现,ruby很多时候都是轻快而便捷。书中的一些示例也很不错,比如用贝叶斯过滤器进行文本分类(这个地方需要说一下,可能对中文来说得搭配相应分词器),比如创建PDF、编辑图片。

Rails Cookbook 影印版) (中文版

两本都是cookbook,不过这本当然是以rails为主。和 Web开发敏捷之道不同的是,这本书并没有一开始花大篇幅做例子。可能已经不需要用示例来说明rails是多么激动人心了 :) 。我关注这本书里较多的是restful development 、performance 和 rails的部署,特别是部署这部分。我没有什么经验,而rails的部署方式也太多了(apache基本被淘汰,后端用Fastcgi或是mongrel争论不休)。下个月可能会做好手里的第一个rails项目,正好用到书里面的知识。

Ruby for Rails

这本在卓越亚马逊只找到了中文版,算是比较早的谈ruby的书。厚度上没有两本cookbooks厚,但是读起来感觉不错。比起ruby cookbook谈了更多rails,比起rails cookbook谈了更多ruby :)

打算读的书:

算法导论

虽然以前也在校ACM集训队呆过,但总觉得自己在算法方面还不够好。说实话现在很多时候算法已经被数据库这些东西给解决了,可还是需要自己有所了解。我学东西一向的思路是明白道理就好,真正用的时候还可以查。

Foolish Sosospider, Foolish Google

124.115.0.110 - - [24/Apr/2008:11:33:53 +0800] "GET /subject/17888/ HTTP/1.1" 200 13201 "http://www.niupu.com/subject/17888/" "Sosospider+(+http://help.soso.com/webspider.htm)"124.115.0.19 - - [24/Apr/2008:11:33:54 +0800] "GET /template/new/stl.css HTTP/1.1" 503 410 "http://www.niupu.com/template/new/stl.css" "Sosospider+(+http://help.soso.com/webspider.htm)"

124.115.4.192 - - [24/Apr/2008:11:33:35 +0800] "GET /subject/5053/newtopic/ HTTP/1.1" 200 1096 "http://www.niupu.com/subject/5053/newtopic/" "Sosospider+(+http://help.soso.com/webspider.htm)"

124.115.0.110 - - [24/Apr/2008:11:33:57 +0800] "GET /template/new/stl.css HTTP/1.1" 503 410 "http://www.niupu.com/template/new/stl.css" "Sosospider+(+http://help.soso.com/webspider.htm)"

124.115.0.111 - - [24/Apr/2008:11:34:04 +0800] "GET /subject/60860/newtopic/ HTTP/1.1" 200 1096 "http://www.niupu.com/subject/60860/newtopic/" "Sosospider+(+http://help.soso.com/webspider.htm)"

124.115.0.111 - - [24/Apr/2008:11:34:06 +0800] "GET /login/ HTTP/1.1" 200 6291 "http://www.niupu.com/login/" "Sosospider+(+http://help.soso.com/webspider.htm)"

124.115.4.192 - - [24/Apr/2008:11:34:08 +0800] "GET /template/new/stl.css HTTP/1.1" 503 410 "http://www.niupu.com/template/new/stl.css" "Sosospider+(+http://help.soso.com/webspider.htm)"

124.115.4.192 - - [24/Apr/2008:11:34:08 +0800] "GET /template/new/stl.css HTTP/1.1" 503 410 "http://www.niupu.com/template/new/stl.css" "Sosospider+(+http://help.soso.com/webspider.htm)"

124.115.4.192 - - [24/Apr/2008:11:34:08 +0800] "GET /subject/39618/newtopic/ HTTP/1.1" 200 1096 "http://www.niupu.com/subject/39618/newtopic/" "Sosospider+(+http://help.soso.com/webspider.htm)"

124.115.4.192 - - [24/Apr/2008:11:34:08 +0800] "GET /login/ HTTP/1.1" 200 6291 "http://www.niupu.com/login/" "Sosospider+(+http://help.soso.com/webspider.htm)"

124.115.4.192 - - [24/Apr/2008:11:34:08 +0800] "GET /subject/51468/newtopic/ HTTP/1.1" 200 1096 "http://www.niupu.com/subject/51468/newtopic/" "Sosospider+(+http://help.soso.com/webspider.htm)"

124.115.4.192 - - [24/Apr/2008:11:34:08 +0800] "GET /subject/277710/newtopic/ HTTP/1.1" 200 1096 "http://www.niupu.com/subject/277710/newtopic/" "Sosospider+(+http://help.soso.com/webspider.htm)"

124.115.4.202 - - [24/Apr/2008:11:34:09 +0800] "GET /subject/154442/ HTTP/1.1" 200 17850 "http://www.niupu.com/subject/154442/" "Sosospider+(+http://help.soso.com/webspider.htm)"

124.115.4.192 - - [24/Apr/2008:11:34:10 +0800] "GET /login/ HTTP/1.1" 200 6291 "http://www.niupu.com/login/" "Sosospider+(+http://help.soso.com/webspider.htm)"

124.115.4.192 - - [24/Apr/2008:11:34:10 +0800] "GET /login/ HTTP/1.1" 200 6291 "http://www.niupu.com/login/" "Sosospider+(+http://help.soso.com/webspider.htm)"

124.115.4.192 - - [24/Apr/2008:11:34:10 +0800] "GET /login/ HTTP/1.1" 200 6291 "http://www.niupu.com/login/" "Sosospider+(+http://help.soso.com/webspider.htm)"

124.115.4.192 - - [24/Apr/2008:11:34:10 +0800] "GET /subject/223418/newtopic/ HTTP/1.1" 200 1096 "http://www.niupu.com/subject/223418/newtopic/" "Sosospider+(+http://help.soso.com/webspider.htm)"

124.115.4.192 - - [24/Apr/2008:11:34:11 +0800] "GET /subject/71701/newtopic/ HTTP/1.1" 200 - "http://www.niupu.com/subject/71701/newtopic/" "Sosospider+(+http://help.soso.com/webspider.htm)"

124.115.4.192 - - [24/Apr/2008:11:34:12 +0800] "GET /login/ HTTP/1.1" 200 6291 "http://www.niupu.com/login/" "Sosospider+(+http://help.soso.com/webspider.htm)"

124.115.0.19 - - [24/Apr/2008:11:33:51 +0800] "GET /subject/40364/ HTTP/1.1" 200 13318 "http://www.niupu.com/subject/40364/" "Sosospider+(+http://help.soso.com/webspider.htm)"

124.115.0.111 - - [24/Apr/2008:11:34:13 +0800] "GET /template/new/stl.css HTTP/1.1" 503 410 "http://www.niupu.com/template/new/stl.css" "Sosospider+(+http://help.soso.com/webspider.htm)"

124.115.4.192 - - [24/Apr/2008:11:34:13 +0800] "GET /subject/47796/newtopic/ HTTP/1.1" 200 1096 "http://www.niupu.com/subject/47796/newtopic/" "Sosospider+(+http://help.soso.com/webspider.htm)"

From many different ips, requested some pages many times, such as the /login/, /template/new/stl.css . I searched the ips in Google and amazingly found these Sosospiders also work for Google.

Cause soso uses Google as its search engine, it’s acceptable that they collaborate. But it’s not right to request a page with such a huge frequency.

加油奥运

今天下午上形势与政策的课,老师说了一下最近的紧张形势,说浙江省内部已经下了命令,在奥运前任何地方都不准举办大的活动。这下连学校的毕业典礼都不好开,拜奥运所赐。据说还附近还有学生约好一起游行,短信散布了很广,可是还没出发就被派出所给查了——搞得好像游行是起义。

初中政治就学了:公民有言论自由,也有游行、集会、示威的自由——这些权利和受教育权、选举权、被选举权一样应当被尊重。但实际情况是,言论自由早就不敢奢望了,比言论自由更激烈的游行集会示威,自然也变得不靠谱。小时候我很奇怪,为啥游行示威还要报相关部门批准,岂不是告诉一个人明天中午12点半要打他耳光 ?现在看来,报批的游行示威估计没个通过的,贸然上去游行就会被批判和镇压。

莫谈国事。

在我的印象中,法国和中国关系一直挺好,之前有什么中法文化年。03年美国打伊拉克,法国也是坚定地站在美国的对立面。没有永远的朋友,只有永远的利益。这次先是有了高原的事,之后随着火炬周游世界,我们赫然发现,藏独分子遍布全球。我们的国家是这么孤立无援,像是注定被包围的伞兵。

话说回来,虽然有CNN的诋毁,有西方国家的污蔑,有藏独的阻挠,我还是相信奥运会办得风风光光。不管对我的国家多么失望或是恼怒,也绝不容许外人的侵犯和骚扰。奥运火炬要上珠峰了,一起的还有华硕的珠峰志愿者。 2008年5月,奥林匹克的火炬将在珠穆朗玛峰点燃。也许不出那些事情,华硕可以更加风光——不要忘记华硕是一家台湾的企业,这个活动背后是不是有些深意呢?

2001年7月13日,北京申奥成功,也是从那天开始,我坚持写日记,后来写随笔,再后来写blog。那年我才13岁。一直想写篇文章直抒胸臆,一起给奥运加油。

为什么我的眼里常含泪水?因为我对这土地爱得深沉

win2003中将apache日志按日期截断

以前在Dreamhost的apache日志都是按天保存的,可是我自己在服务器上安装apache之后,发现只能指定固定的日志路径。去网上搜了一下才知道,linux下是用cronolog实现的,正觉得无望时,发现cronolog也有windows版本。

在cronolog.org上可以下载到cronolog的windows版本cronlog.exe,之后随便放到个目录,记下路径。我放到了D盘,路径就是 d:/cronolog.exe

之后打开apache的配置文件,把指定日志路径的那两行改为:

ErrorLog “|d:/cronolog.exe d:/logs/error-%Y%m%d.log”

CustomLog “|d:/cronolog.exe d:/logs/access-%Y%m%d.log” common

重启apache,这样就可以将日志按天截断。这里%Y指四位数的年份,%m指月份,%d就是日了(这话觉得好别扭)。

这样内存里会长期跑着两个cronolog.exe进程,每个只占了1M多内存。

Font size adjusted

叔叔打电话说blog的字太小了,今天终于记得在css里把字弄得大了点。本来是一件小事,却拖了这么久。

Low down the memory cost of apache in Windows 2003

I kept an eye on apache via the task manager, only to find a apache child process had used 120M RAM. I searched and finally got a solution.

Apache in windows often runs 2 procsses , and I just call them parent and child. The parent recieve the requests and dispatch them to the child, then the child handle the requests.

So, while the child never be terminated, the memory cost will be lager and lager. To avoid this , we have to set a value for “MaxRequestsPerChild” in apache’s config file (httpd.conf). I just wrote:

MaxRequestsPerChild 1024

This means the parent will kill the child once the child has finished 1024 requests. In this way, the memory would not be used that huge.

windows2003上配置Apache+lighttpd

以前都是在Dreamhost放着网站们,不自己维护还真不知道艰难。这次买来服务器,想装Apache+MySQL+PHP就折腾了好半天,愣是没弄好。最后只好下载了Appserv一次把这3个都给装好了,说出来实在挺丢人。

不过后来看很多人说lighttpd响应静态文件很快,虽然在双核的独立服务器上应该还用不着,但我也想尝试一下。现在已经成功了,写一下具体的步骤。

首先来安装和配置lighttpd。通过搜索可以找到windows版本的lighttpd,安装之后,可以在桌面上找到启动lighttpd的快捷方式。建议把它设为启动项或者安装为服务,这样可以每次开机自动运行。

配置方面,既然前端请求用Apache处理,就需要占用80端口。给lighttpd分配别的端口(如8080)就好。

在配置文件里:

server.port = 8080

把根目录也设为apache的根目录(可以不这样做,但这样被证明更方便)。

之后就是apache的配置。Apache常规的配置不必说了,绑定在80端口。之后在httpd.conf中启用proxy_module和proxy_http_module (去掉对应行前面的#号)。

然后在文件中这样写:

Proxy  /css/  http://localhost:8080/css/

ProxyReverse  /css/ http://localhost:8080/css/

其中/css/就表示存放/css/的文件夹下的所有文件,将会被转到http://localhost:8080/css/,由lighttpd处理。同样,可以根据自己的具体情况写成存放图片、js文件的文件夹。这两行是从月光的文章里看来的。

其实也可以使用Rewrite方式来实现,不过通过Rewrite的话实际上是个302转向,并不好。还是通过Proxy 的方式更自然。

还有一种更牛的搭配(当然,现在更用不着),是lighttpd+squid+apache,lighttpd放在最前端负责静态文件,squid作为缓存,如果能在缓存中找到就不需要开动apache。最后再用apache处理那些动态的、不在缓存中的文件。由于niupu将用rails重写,估计将来得用lighttpd+fastcgi了,还得学啊。