May 22

前些天,买了域名:babyishan.com, 并在github pages上搭建了个静态博客:

http://babyishan.com

May 14
      4月1日的时候才看到今年的google summer of code, 对于在校的学生,这是个参与开源组织的绝佳机会。以前本科的时候就看到过,不过没当回事。之前一直在关注FIO的项目,对开源项目的开发流程有了一定的了解。于是花了两天查看各个开源组织的项目,但没发现一个适合自己的(还是自己太菜了,好多项目都看不懂)。最后终于在GNOME找个了一个感觉相对简单的项目:为GNOME3写一个lockdown editor,就是实现想银行或公共场所那种功能有限制的定制系统的效果,用python和gtk实现。于是赶紧给mentor发邮件,询问相关细节,并让给提建议,准备写proposal(主要是针对项目的设计和时间安排)。
      在4月6号之前这几天,一边查相关的知识(gconf,dconf,gsetting等),一边在gnome上试验,最后终于提交了proposal。后来mentor回复指出几个问题,我最后又作了一些修改。不过之后给mentor发邮件,却一直没收到回复,心想应该没戏了。之后还学习了一下python和gtk。到4月23号公布结果的那天,收到了没有选上的邮件,挺失望的。但是并不后悔,看看这里的介绍还是很鼓舞人心的。以后就不是学生了,没机会参加这种活动,不过有机会参与开源软件开发的话,还是会积极的参与的。希望还有机会的同学们不要错过明年的gsoc。
      一直在维护学校测试中心的网站,那个预约系统是用asp+access实现的,代码不敢说烂,但是真的不好维护。一个多月前老师让修改某个地方,我实在想不出什么好的办法,于是决定重新实现一个了。我选择了django+mysql,花了一个月时间,一边学习一边开发,总算大部分完成了,现在已经在测试,再就是不断的改进了。通过这个网站的开发,我对web开发有了自己的认识,python也熟练了不少。可能是django太方便了,我发现我还是挺喜欢写网站的。
      实习也没怎么找,可能就不找了,打算在实验室巩固些基础知识,然后好好做个项目。
Apr 20
4月7日星期六在武大国际软件学院参加的笔试。投的是软件开发工程师。
试卷是全英文的,20道多项选择题。这里是试题。
因为答错了要减分,所以不确定的就没有填。
本来不报什么希望的,没想到一个星期之后收到了面试通知。

这个星期一直在搞django。没怎么准备,也不知道准备什么。下午四点的面试,路上车子超级堵,差点迟到了。
到4点钟了,HRmm把我引到一个房间开始面试。
面试官挺没什么特别的,一上来让我自我介绍,我也不知道说什么,就说了些废话,学校,名字。
我这个还真是个木头。
他问:然后呢?
我回答:没有然后。

让我把简历拿出来,看着我的简历就说当时看到我的简历很简洁,就一张纸,也没有过多的说明,觉得我这个人挺特别的。
我说写多了也没什么用。
然后说我就是不太注重细节,原来我打印的简历上面联系地址占用了两行,字体也有点问题。
唉,匆忙打印的,也没注意那么多。

问我英文怎么样?我说阅读,收/回复邮件没问题,又问我六级多少分,真不好意思跟他说啊。
然后让我说几句英语,结结巴巴,说一句:I like sports。!!太丢人了。
他也没为难我,拿了张草稿纸就让我写个atoi()函数。
噼里啪啦写完了,想给他看,他让我仔细检查,一定要考虑完善。
之后在提醒写完善了正负号,溢出点问题。

问我知道了解OO不,我说没怎么用过C++,java。
讨厌C++,不过挺喜欢Python的,他也觉得python挺美的。

问我知不知道虚函数是什么东西?
C++,好久没看过了,真不知道虚函数是干什么的。他就知道了:我确实不会c++。

之后主要是针对简历上的东西问。
看到我本科在腾讯财付通实习过,就问了我做什么。我跟他说了是优化网站性能。然后他问我怎么优化的。
当时就是在学习那个网站的代码,找出瓶颈是在查询上面,主要就是优化SQL语句。

看我对操作系统有所研究,就说问个系统问题。
malloc函数调用什么?(本来是说new的,我说:new?他才改说malloc的)
我只知道好像是调用brk,他问我brk做了什么,我就不知道了。
他就开始教育我了:不能只知道几个命令,会用,还要知道原理。
我也知道啊,原理学了不怎么用容易忘,对于现阶段的我,原理知道个大概就可以了。

又问了我web服务器怎么实现的。
我就说在linux下面用c语言socket实现的,实现了GET,POST方法,CGI和fastCGI。
他问我怎么提高性能,我说改进并发模型。他问我怎么改进。
我就用多进程,多线程,进程池,epoll等。

最后聊到python,我就说我正在用django写一个网站,顺便学习python。
是一个预约网站,在一个时间段访问量很大,大多数时候没什么人访问(类似12306)。他就问我怎么解决这个问题,
我就说用分两个方面1.服务器配置2.网站程序设计
网站程序方面:
1.使用ajax避免重复拉取数据。
2.优化数据库设计
本来想说cache,实在想不出cache什么原理,就没说了。
最后我说看过coolshell写过一篇分析这个问题的文章。然后他说他也看过,问我平时上网都看些什么。
我说看些牛人的博客。比如coolshell,刘未鹏,Matrix67等。听到Matrix67,他来劲了,说你也知道他?囧
那考你个数据结构的题:怎么从一个数组中去除重复的项?
我想了想,想到了
1.排序
2.hash
3.bitmap
不知道为什么,觉得hash不怎么好用,bitmap太占用空间,就没跟他说了(有点懊悔,至少也该跟面试官司交流下)。
我一直在想其它O(n)的方法,不占用太多空间。
最后实在想不出来,就跟他说了边排序,边判断。(比如用选择排序)
他问我时间复杂度,我就说等于排序的时间复杂度。
让我写出来代码,当时我真不想写代码,就说写不出来,最后就没写了。

最后好像HR有什么事,他让我等5分钟,不一会HRmm进来说,面试结束了,晚上会通知结果。

之间看过微软面试的一些有意思的题目,本来很期待有这样的题目的。
结果根本就没有,由于面试意外中止,也没有机会向面试官求解。
对于此次面试,难说满意 。
面试官问的所有问题,我几乎都没有进行深入的分析,只是回答了表面的东西。
理论不行,实践也不行,差距很大啊!
看来还是平时还是要多总结
一个项目做完了,要及时总结收获。
Nov 16

从上大学开始就从vista(笔记本自带)开始(错过xp时代了),后来流行装双系统,也搞过xp玩。最主要还是搞linux,当时好像是ubuntu和debian,后来知道他们是一家。跟其它同学不同,就算ubuntu这好东西,我还是觉得不合适,最后还是放弃了。

从接触windows到了解windows,喜欢windows,到知道linux,到了解linux,到喜欢linux,到讨厌windows, 到不讨厌windows,到理解windows,到不怎么用linux,到用windows也用linux,到只用linux,到现实。

那时我一直坚定地觉得windows方便(主要是视觉上亲切,不同工作环境用不现系统嘛),特别是出了win7之后,视觉上总觉得比linux舒服(不管linux搞得多炫)。

那时用linux也通过虚拟机,试过virtualPC(这个主要用来虚拟dos,方便),然后用vmware,装redhat(centOS),这种搭配稳定了一段时间,其实我一直觉得redhat+gnome界面好用,怎么说呢?就是给人一种沉稳的感觉,用着放心。

之后还是觉得vmware太大了,用着不流畅(可能是我配置电脑太差了),在猫的介绍下用上了colinux了,开始是用debian lenny,桌面用的是xfce,当然印象最深的就是apt-get这个命令了,太帅了。

再之后就是archlinux了,而且再也没有换过其它发行版了。

0.archlinux足够简单。它只给了我们一个基本系统,其它都是自己加上去的。

1.配置方便。rc.conf加上其它的一些配置文件,从开机到各种模块服务加载,我感觉可以完全控制我的系统。

2.pacman+abs。更新,安装软件方便。不管是下载安装还是自己编译都可以统一管理。

总体感觉:轻量,简洁,安心,自由。

archlinux通过虚拟机和双系统都搞过,最后稳定在winddows+colinux+archlinux+putty这种搭配,算是集windows和linux优点于一身了吧。

其实最后我是实在忍受不了我机器上windows7的速度,才决定重新装回双系统(更确切是找回我那沉睡在硬盘某角落的arch),进行了各种折腾式的配置。

开学的时候经过一翻折腾把windows7彻底弄掉:整个硬盘从以windows分区为中心转向以linux分区为中心,转向完全的linux分区。

使用linux总免不了在各种桌面环境(图形界面)之间纠结。

我的桌面使用发展轨迹大概是这样的:

1.gnome(redhat,ubuntu,centos)

2.kde(在arch里面安装完,就直接pass了)

3.gnome太大,换xfce4,之后再换lxde,再换回xfce4

4.不再用整套桌面环境,改用用管口管理器+桌面配件搭建自己的个性桌面环境

    a.sawfish+xfce某些组件。主要因为它是用lisp语言配置的。

    b.fvwm,之前一直没碰,因为听说很复杂。也就是从这个暑假开始折腾的,从完全fvwm到fvwm+lxpanel。

    c.fvwm的方案用了一两个月。

5.发现自己fvwm用得最多只是它的键绑定,界面什么的还是没配置得让我满意,于是决定试试gnome,不过这回是3。安装完之后发现我的各种需要都可以得到满足,于是就这么定了。

可是蛋疼的事情还是发生了,有个项目必须用windows开发,在看到了virtualbox,kvm跑xp的表现后,我不得不作出艰难决定,再装回windows7。

一开始以为很简单,只要找个分区就行了,但就是装不成功。原来windows7要求两个主分区,但我只剩扩展分区可以用了。没办法,可怜的arch 最终还是给霸道的windows7让路了,arch重新退守到扩展分区,让出最开始的两个主分区,不过整体上arch还是占有磁盘大部分空间的,并间接控 制着windows7的领地。

不折腾,不纠结!

Nov 16

暑假的时候,想找个linux下的即时战略游戏,于是就找个这个游戏。

Globultaion2是一个跨平台的即时战略游戏,当然其 复杂性比不上魔兽/dota,但也因为简单和创新的任务自动分配资源,简化了操作,使游戏者更关注于战略,更能吸引我这样的人。它自带地图编辑器,战 役,AI,YOG联机对战,地图也挺多的,对于我这种没打过Dota的人,已经足够了。

现在是Beta 4 (0.9.4.4),有些试验性功能,有些功能没开。

详细:http://globulation2.org/wiki/Main_Page

Oct 10

由于要用windows的软件,所以在virtualbox下安装了xp。因为一直是左手使用鼠标,但是安装使用了左手风格的指针后发现鼠标作用点的位置不在指尖。搜索到一个办法:

1.在控制面便->鼠标中设置切换左右键,变成右手。
2.步骤1比较简单,但是左手鼠标指针的图标有点繁琐。

    a)将你希望要变换成左手的图标找出来。
    b)下载并安装可以编辑ani这种鼠标图标文件的软件,我用的是Microangelo Toolset 6(其他的有相同功能的可)
   c)用 b)中的软件打开你要编辑的鼠标指针图标,首先当然是变换方向,第三行的工具栏有flip horizontal
   d)最重要的一部,设置热点,不然你会发现鼠标指针的指尖知道的地方,不是鼠标真正起作用的地方,
    在第二行的工具栏有个set hot spot的功能,功能图标是一个有点的鼠标指针。将热点设置到图标中的鼠指针的指尖位置,保存即可
   e)最后在鼠标的设置图标中使用这个图标即可。

最关键就是d)设置热点,在virtualbox中设置成指尖位置是不行的,测试发现设置成最左下角就可以解决了,此时作用点正好在指尖。

Oct 10

郭去疾对乔布斯一生的总结,很感人。http://t.qq.com/p/t/2672116257737

乔布斯是戏剧人生最精彩的诠释者:

你可以出身卑微,但必须卓然不群;

纵使你将众叛亲离,也注定要重头再来;

最迷人的剧情不是后来居上,而是王者归来;

最伟 大的战局不是尖峰对决,而是独孤求败;

最完美的谢幕不是激流勇退,而是嘎然而止。

美人难免迟暮,英雄方能不朽,

花淘尽,正是好处,却是了处。