一切都已改变

Apr 29th, 2010 | Filed under Journal

搬到孵化园已经一个月了,很忙,很烦…

从去年的年底到现在,对我来说有了很大的变化,也有不少的收获。在朋友的帮助下,顺利地组建了自己的 Web 外包团队,落户在了高新孵化园。网站外包,真的是件很没技术含量的事情,也没什么油水可捞,不过倒是一条锻炼团队的途径。

自己也和哥们从东门建设路住了近10年的老房子里面搬到了外双楠,传说中非富即贵的富人区,有多少富贵人家我不知道,我只知道外面吃得东西真他娘的贵!一个人随便找个馆子一顿吃下来就几十块就没了,这也算是刺激自己努力赚钱的动力吧~想想你如果吃了N年的炒饭,面条,而现在还在吃这些的东西,那就太凄凉了!

原来住的老房子在建设路,某半死不活的国企职工宿舍,风水很不好,帮我们看房子的风水师傅说,这里叫做空亡之地。我对命理学一窍不通,不过从字面上看也知道不是什么好地方。大师还帮我们看了八字,给我解释的东西,我都忘光了,只记得关于华盖的一些话。命里有华盖的人通常都是才华横溢、性情恬淡的主,被人说自己聪明当然是件开心的事情,不过后来我发现了其实大师也有很多话没有说,那就是华盖通常也意味着不愿与人交往,常常感到孤独,而且通常与宗教有缘,好吧,我命里不但有华盖,而且还是三个,只能叹一声:马勒戈壁的!

本来还想问问姻缘的,没好意思! 😳

搬家的时候,带了以前女友的照片,放在电脑桌上,为此还被哥么给嘲笑了一番。笑就笑吧,我忘不了这个女人,和她之间发生的一切,已成昨日黄花。快3年过去了,唯一留下的,就是这张照片还有那永远挥之不去的浓浓情意萦绕在心头。我一直在想,什么时候可以再见到她呢?只是见见也好,怕只怕这辈子再也看不到她了。我为爱烦恼,只因太执着,人常说,男子汉大丈夫,当拿得起放得下,我拿起了这份感情,却再难放下。

父亲常常打电话催我结婚,这样的日子持续了1年多了直到现在依然如此,有段时间几乎是以每天1,2个电话的高频率给我洗脑,灌输男大当婚、女大当嫁的观念,搞的我一听到手机响,就郁闷不堪,很想把手机从窗户扔出去。不过电话还是要接的,于是每次只能信誓旦旦的和父亲保证一定给他找个好儿媳,就这样日子一天天的过去,儿媳还是没着落,父亲也渐渐不再像以前那样紧紧逼迫,只是偶尔还是会提起,而我也懒的再提那些陈词滥调的保证了。呵呵,像我这样的没钱没车没房的头顶三华盖的孤僻三无宅男,想要找个老婆,还真是件极具挑战性的事。在天朝这个环境里,根本是不可能的嘛,哪怕天上真的会掉下个林妹妹,只怕也是脸先着地的,好吧,我宁愿孤独终老,也不愿意委屈自己,寂寞归寂寞,不过反过来想,不也是一生自由自在,不受约束,逍遥快活的么?哎,就当我阿Q好了!笑~ 😀

Tags:

Vim进阶索引

Mar 15th, 2010 | Filed under Vim
Comments Off on Vim进阶索引

学习使用 Vim 大约已有4、5年了,直到今天仍然有很多不懂的东西,精通自然谈不上,只能说初窥门径。看 best of vim tips 的作者是怎么说的:

David Rayner (zzapper) 15 Years of Vi + 4 years of Vim and still learning

这位大叔,搞了 15 年的 Vi,又搞了 4 年的 Vim,可依旧在学习。看来 Vim 真的是一个可以学到死的文本编辑器。

奇妙的之处就在于,你并不需要完全精通 Vim才能应用到工作中。实际上你只需要了解一些基本的东西,比如模式,光标移动,几个基本的编辑命令就可以让你的编辑效率提高很多,其它的就在实际的工作中根据自己的需要慢慢发掘。

如果你初次接触 Vim,那么建议你运行一下 Vim 安装目录下下面的 vimtutor,了解一下 Vim 的基础知识,花几天时间你就能完全适应它;如果你已经被 manual 中各种眼花缭乱的指令吓傻了,建议你忘掉那些指令,就算暂时记住了,如果用不到你也很快会忘记。

下面是我在网上看到的一个牛人写的教程,涉及到了 Vim 中的很多高级特性,但没有太多让人眼花的指令,读完之后定会有所收获。

😆

Tags:

分析 fastcgi_temp 错误以及 Nginx 的 Buffer 机制

Mar 13th, 2010 | Filed under Ubuntu
Comments Off on 分析 fastcgi_temp 错误以及 Nginx 的 Buffer 机制

最近在使用 phpMyAdmin 的时候,发现一个很让人蛋疼的问题,在每次修改表结构时,页面没有载入完成就自动停止了。因为一直使用 svn/trunk 版本的 PMA,开始以为是程序的问题,但是换成 stable 版本后,问题依旧存在,显然走错了方向。于是再查 error.log,终于找到的症结所在。

日志中显示类似下面的错误:

2010/03/13 02:52:19 [crit] 3396#0: *10 open() 
"/usr/local/nginx/fastcgi_temp/2/00/0000000002" failed (13: Permission denied)

看起来是权限问题,要完全的解决这个问题,先要搞清楚 fastcgi_temp 目录的作用。

先简单的说一下 Nginx 的 buffer 机制,对于来自 FastCGI Server 的 Response,Nginx 将其缓冲到内存中,然后依次发送到客户端浏览器。缓冲区的大小由 fastcgi_buffers 和 fastcgi_buffer_size 两个值控制。

比如如下配置:

fastcgi_buffers      8 4K;
fastcgi_buffer_size  4K;

fastcgi_buffers 控制 nginx 最多创建 8 个大小为 4K 的缓冲区,而 fastcgi_buffer_size 则是处理 Response 时第一个缓冲区的大小,不包含在前者中。所以总计能创建的最大内存缓冲区大小是 8*4K+4K = 36k。而这些缓冲区是根据实际的 Response 大小动态生成的,并不是一次性创建的。比如一个 8K 的页面,Nginx 会创建 2*4K 共 2 个 buffers。

当 Response 小于等于 36k 时,所有数据当然全部在内存中处理。如果 Response 大于 36k 呢?fastcgi_temp 的作用就在于此。多出来的数据会被临时写入到文件中,放在这个目录下面。同时你会在 error.log 中看到一条类似 warning:

2010/03/13 03:42:22 [warn] 3994#0: *1 an upstream response is buffered to a temporary file
/usr/local/nginx/fastcgi_temp/1/00/0000000001 while reading upstream, 
client: 192.168.2.1,
server: pma.verdana.cn,
request: "POST /tbl_structure.php HTTP/1.1",
upstream: "fastcgi://127.0.0.1:9000", 
host: "pma.verdana.cn",
referrer: "http://pma.verdana.cn/tbl_structure.php"

显然,缓冲区设置的太小的话,Nginx 会频繁读写硬盘,对性能有很大的影响,但也不是越大越好,没意义,呵呵!

搞清楚了这些,再回到原来的问题上面,phpMyAdmin 生成的页面大小达到了 100+ Kb,内存中缓冲了 36Kb,剩下的会写入的文件中。而实际的情况是,运行 Nginx Process 的用户并没有 fastcgi_temp 目录的写权限,于是剩下的数据就丢失掉了,这也是为什么 phpMyAdmin 页面只显示了一部分的原因了。

找到原因后,解决方法就比较简单了,粗暴的删掉 fastcgi_temp 目录或者温柔的 chown + chmod 都可以解决问题。

😛

Tags: , ,

设置 SSH 自动登陆多个不同的主机

Feb 12th, 2010 | Filed under Ubuntu
Comments Off on 设置 SSH 自动登陆多个不同的主机

在《使用 Putty 自动登陆远程 Linux 主机》一文中曾经讲过如何设置 SSH (客户端为 Putty) 来自动登陆 Linux 主机。当需要自动登陆的主机有多台的时候,上文的方法就有点不适合了。这里补全一下,如何搞定多台服务器的 SSH 自动登录。

假设有两台远端 Linux 服务器,host-jack 和 host-vicki。

Read more…

Promise

Feb 3rd, 2010 | Filed under Music
Comments Off on Promise

Silent Hill 2: Restless Dreams
Akira Yamaoka

Theme of Laura

Audio clip: Adobe Flash Player (version 9 or above) is required to play this audio clip. Download the latest version here. You also need to have JavaScript enabled in your browser.

Promise

Audio clip: Adobe Flash Player (version 9 or above) is required to play this audio clip. Download the latest version here. You also need to have JavaScript enabled in your browser.

Tags: ,

Waiting For You ~LIVE AT Heaven’s Night~ (unreleased tunes)

Feb 3rd, 2010 | Filed under Music
Comments Off on Waiting For You ~LIVE AT Heaven’s Night~ (unreleased tunes)

Silent Hill 4: The Room
Akira Yamaoka

Waiting For You ~LIVE AT Heaven’s Night~ (unreleased tunes)

Audio clip: Adobe Flash Player (version 9 or above) is required to play this audio clip. Download the latest version here. You also need to have JavaScript enabled in your browser.

Read more…

Tags: ,

使用 Shell 上传代码

Jan 13th, 2010 | Filed under Ubuntu
Comments Off on 使用 Shell 上传代码

自从法现 SSH 可以执行远端命令后,ftp 软件也渐渐很少用了。

每次更新服务器代码,都要打包、上传、登录到服务器修改文件权限、更新 Cache 等等,又慢又容易出错,所以做成脚本,一次帮我搞定,自己就点上一根烟坐在电脑面前发呆,要么就玩会儿《植物大战僵尸》啥的,悠闲!

PS: Ant 以及 Phing 用户,你们可以无视了… 我只是喜欢玩 Shell 而已。

Read more…

在 Cygwin 中编译 MySQL 客户端

Dec 30th, 2009 | Filed under Windows
Comments Off on 在 Cygwin 中编译 MySQL 客户端

MinTTY 是一个小巧但却很实用的 Cygwin 终端机,但有个严重的问题就是无法调用交互性的 Windows 原生程序,比如说 mysql.exe,当你在 MinTTY 中输入如下的命令:

1
$ mysql -uroot -p

本来 mysql.exe 会提示输入密码,但在 MinTTY 中程序会直接挂起,不再响应,实际上即使在 -p 参数后面跟上密码,也是一样的。

某些程序,比如 python,会提供参数 -i,使自身在终端中进入交互模式,可惜并非所有的程序都有这样的参数。

解决的办法,使用 Cygwin 版本的 MySQL 客户端,但 Cygwin 并没有提供,所以就只有自己动手编译一个!

Read more…

使用 Shell 更新 PHP5

Dec 29th, 2009 | Filed under Journal
Comments Off on 使用 Shell 更新 PHP5

我很迷恋 Shell,很喜欢看着字符在黑色的 Console 界面中跳跃着,奇怪的是,我居然没有因此成为一个 Linux/Unix 程序员,而只是个写 CGI 程序的倒霉蛋。大家都是怎么称呼 “PHP 程序员”的?对了——草根~ 嗯,在土里埋的太久,说不定哪天就烂掉了咯! 😈

可能是被 Windows 惯坏了,实在不想换个 OS,还好有 Cygwin,MinGW … 之类的东西, 适当的时候,可以拿出来装下 B,自我安慰一下~

我总喜欢从 windows.php.net 下载最新的 snapshot,不是我想体验最新的功能,只是强迫症的关系-,-。我机器上的所有软件,程序都是最新的,绝大部分都还挂着 beta 标签,甚至有一些是直接从 SVN,Git 上面拖下来的 trunk 版本,想想真是变态。如果你每天都爬上这些网站,人肉检查一下是不是有新的版本发布,以此满足一下自己变态的心理,那真是要疯掉了。

Read more…

Tags: , ,

检测 Cygwin 最快的镜像站点

Dec 27th, 2009 | Filed under Journal
Comments Off on 检测 Cygwin 最快的镜像站点
检测 Cygwin 的最快镜像站

这是一个 shell 脚本,所以首先你需要安装一个基本的 Cygwin 环境,当然还有 curl。

原理很简单,先从 cygwin.com 下载最新的 mirrors.lst 镜像列表,简单处理一下后,利用 curl 以此检测每个站点的连接速度,并将结果记录下来,最后再排个序,显示出最快的几个站点。 😳

在使用的过程中,我发现检测到的最快的 mirror,实际上使用速度并不一定是最快的,这可能和服务器有关系,毕竟 curl 检测的时间只是读取 mirror 首页的时间。不过每个 mirror 一般都有两组服务器——http & ftp,如果其中一个速度不怎么样,那么可以选择另外一个试试看。

Read more…

Tags: ,