我的2009

By ganquan, 2009年12月31日 23:21

今天是2009年的最後一天,21世紀的第一個十年即將與我擦肩離去,每次在這種承前啟后的時刻,我總會想起一句我非常喜歡的話:走過的路都是美好的,因為永恆;前方的路都是美好的,因為未卜。

我是一個健忘的人。我以前就發現自己總是忘記在前半年或者是上一個月干了什麼事情,或者就是記憶亂七八糟順序顛倒,發現自己根本理不清楚。總之,頭腦中想不起來自己的經歷是非常可怕的,所以就強迫自己記錄自己的生活,避免出現記憶缺失。記錄的方式有很多,寫日記是一種,拍照是一種,寫博客也是一種,還有其他各種各樣的方法。每當我翻看自己對過往生活的記錄時,過去的一幕幕似乎都在眼前再現,歷歷在目的感覺讓我感覺到安心和充實。對過去進行總結是一個好主意,它能夠提醒我,在將來要和現在不同。

上半年我依舊是不慌不忙的過着自己快樂又簡單的日子,自由地學習自己感興趣的知識,學習Linux,學習網絡編程和驅動開發,還花了很多時間去拍照,在今年春暖花開的時候,我去了祥裕森林公園,周末則會去大雁塔或者青龍寺或者西安其他我感興趣的地方。我上傳了很少一部分照片到flickr,後來由於我訪問flickr速度很慢,而且由於某些不可抗力的原因,flickr曾經一度無法訪問,於是索性放棄傳照片到flickr。在叁分之貳玩耍,叁分之壹學習的生活中,我大學的第三個學年結束了。

在暑假即將到來的時候我提前感受了一次筆試和面試,非常幸運的我找到了一份實習,這個開發工程師的角色使得我的暑期生活非常充實,也體會到了上班的辛苦。一旦忙碌起來就感覺時間過得很快,很快實習就結束了,同時也意味着暑假結束了。大一入學的場景還在腦海中清晰可見,但我卻步入了大四的行列,似乎在眨眼之間就開始了大學的最後一年,找工作這一打算我堅定了叁年,從來沒有變過。在求職戰鬥即將打響之前,發生了甲流,封校,隔離等等事件,國慶節前我選擇回家去玩了半個月再回到學校找工作。回西安那天我印象異常清晰,下了飛機直奔到宣講會現場,是新校區的第一場宣講會,在人山人海的陣勢下求職大軍轟轟烈烈地拉開了找工作的序幕。

這一年中,最讓我記憶深刻和深有收穫的就是找工作那短短的一個月。整日的奔波,不停地筆試和面試,再不停地被拒,然後又回到起點,再次輪迴筆試面試被拒這一循環。每天都以積極活躍的態度去接受被別人的挑了又挑的現實,同時自己則在心中對別人用挑剔的眼光選了又選。

挑來選去的,在我回到西安的第30天,我把自己賣了出去。

我非常感謝這段奔波的日子,它幫我準確地認識了自己,給了自己一個準確的定位。和網易公司擦肩而過雖然非常遺憾,但是這次擦肩對我幫助非常大,我認識到自己性格中的缺陷,在將來的生活工作中要改善自己的性格。雖然失去了一次珍貴的機會,但我卻很開心能有這樣的收穫。

結束奔波的日子,對自己的認識變得更加清晰起來。我對這段日子很滿意,快樂的找到了我還滿意的工作。最後一年的大學生活是無比的輕鬆,在找到工作之後更是如此。又回到了自由的時光,看自己感興趣的書,做自己喜歡的事情。

腳下踩着過往,心中憧憬着未來,就要走進2010年。此刻我更加的感覺到了時間的流逝,一年就這樣過去。希望自己在新的一年中能夠繼續開心自由地學習,快樂的結束我的大學生涯。我對忙碌的工作早已做好了心理準備,所以我一直在期待着未知的生活快些到來。

這就是我的2009。

2010,我來了。

全面轉到Debian sid

By ganquan, 2009年12月29日 16:31

以前都是一直用testing,前段時間更換硬盤之後就開始用stable。今天轉到sid,以後應該是一直用sid了。

開發除了相關庫版本升級,其他沒什麼變化。

言论

By ganquan, 2009年12月24日 16:13

当你的一个需求,用标准的方法不能满足时,只有两种可能:
1.从一开始的设计就错了,才会导致用标准的方法不能满足
2.你读过的代码太少,不知道业界解决该问题的标准方法是什么

好久不见

By ganquan, 2009年12月20日 14:13

陈奕迅的低沉温柔真是让人心里轻轻一震,例如这个《好久不见》。词作者是林夕。

非常简单的文字,几乎可以说是平铺直叙,却在充满回忆的音乐中用美丽的声音简单的场景述说难以释怀的伤痛。

让我难以抗拒的一句,不再去说从前只是寒暄。

《好久不见》

我来到你的城市
走过你来时的路
想象着没我的日子
你是怎样的孤独

拿着你给的照片
熟悉的那一条街
只是没了你的画面
我们回不到那天

你会不会忽然的出现
在街角的咖啡店
我会带着笑脸回首寒暄
和你坐着聊聊天

我多么想和你见一面
看看你最近改变
不再去说从前只是寒暄
对你说一句只是说一句
好久不见

我已经喷饭了

By ganquan, 2009年12月17日 23:16

《蜗居》24集,刚开始,大约在3分30秒左右,给我们证明了小贝是个C++程序员。

注意桌子上红色的书

2009-12-17-230452_698x380_scrot

放大来看

2009-12-17-230628_538x382_scrot

好吧,这是本书是《大规模C++程序设计》

thumb

EOF

严重失眠

By ganquan, 2009年12月17日 06:09

一夜未眠。现在是早上6点10分,来电了,起床。

好片推荐:《姐姐的守护者》

By ganquan, 2009年12月15日 16:11

一部有关家庭,有关情感,有关死亡,有关生活的片子。

刚刚看完,感觉非常好,于是去豆瓣看了一下打分(看片之前绝不去豆瓣),多数是4星以上。

这是一部温暖的电影。

移植2.6.32内核到mini2440开发板

By ganquan, 2009年12月13日 16:02

转载请注明出处:http://ganquan.org,谢谢。本文链接是http://ganquan.org/blog/2009/12/2-6-32-port-to-mini2440/

过程非常简单,麻烦的是如果出问题,就要要一遍又一遍的编译。

先上图:

友善官方的Qtopia系统我早就看烦了,直接启动进入字符界面

img_3676

下面是移植步骤,

1.www.kernel.org下载内核代码,修改构架和编译器

2.修改时钟频率,mini2440开发板用的是12M晶振,修改arch/arm/mach-s3c2440/mach-smdk2440.c

把下面代码中的16934400改为12000000,如果不改串口会出现乱码

static void __init smdk2440_map_io(void)
{
s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc));
s3c24xx_init_clocks(12000000);
s3c24xx_init_uarts(smdk2440_uartcfgs, ARRAY_SIZE(smdk2440_uartcfgs));
}

3.修改mini2440的lcd配置,有两个地方要修改,第一是修改LCD屏幕的参数,第二是修改fbi

修改LCD屏幕参数,mini2440使用的是3.5寸的屏幕,在arch/arm/mach-s3c2440/mach-smdk2440.c中,写入

  • 3.1修改LCD参数结构。

#define LCD_WIDTH 240
#define LCD_HEIGHT 320
#define LCD_PIXCLOCK 170000

#define LCD_RIGHT_MARGIN 25
#define LCD_LEFT_MARGIN 0
#define LCD_HSYNC_LEN 4

#define LCD_UPPER_MARGIN 1
#define LCD_LOWER_MARGIN 4
#define LCD_VSYNC_LEN 1

修改lcd参数结构为:

static struct s3c2410fb_display mini2440_lcd_cfg __initdata = {

#if !defined (LCD_CON5)
.lcdcon5    = S3C2410_LCDCON5_FRM565 |
S3C2410_LCDCON5_INVVLINE |
S3C2410_LCDCON5_INVVFRAME |
S3C2410_LCDCON5_PWREN |
S3C2410_LCDCON5_HWSWP,
#else
.lcdcon5    = LCD_CON5,
#endif

.type        = S3C2410_LCDCON1_TFT,

.width        = LCD_WIDTH,
.height        = LCD_HEIGHT,

.pixclock    = LCD_PIXCLOCK,
.xres        = LCD_WIDTH,
.yres        = LCD_HEIGHT,
.bpp        = 16,
.left_margin    = LCD_LEFT_MARGIN + 1,
.right_margin    = LCD_RIGHT_MARGIN + 1,
.hsync_len    = LCD_HSYNC_LEN + 1,
.upper_margin    = LCD_UPPER_MARGIN + 1,
.lower_margin    = LCD_LOWER_MARGIN + 1,
.vsync_len    = LCD_VSYNC_LEN + 1,
};

  • 3.2修改fbi

static struct s3c2410fb_mach_info smdk2440_fb_info __initdata = {
.displays    = &smdk2440_lcd_cfg,
.num_displays    = 1,
.default_display = 0,

.gpccon =       0xaa955699,
.gpccon_mask =  0xffc003cc,
.gpcup =        0x0000ffff,
.gpcup_mask =   0xffffffff,

.gpdcon =       0xaa95aaa1,
.gpdcon_mask =  0xffc0fff0,
.gpdup =        0x0000faff,
.gpdup_mask =   0xffffffff,

.lpcsel        = 0xf82,
};

4.修改nand分区表,修改arch/arm/plat-s3c24xx/common-smdk.c,这个根据自己的情况来写,照抄是没用滴。

static struct mtd_partition smdk_default_nand_part[] = {
[0] = {
.name    = “bootloader”,
.size    = 0×00060000,
.offset    = 0,
},
[1] = {
.name    = “kernel”,
.offset = 0×00060000,
.size    = 0×00200000,
},
[2] = {
.name    = “root”,
.offset = 0×00260000,
.size    = 0x3fd80000,
}
};

5.修改machine ID,修改arch/arm/tools/mach-types,填写自己的machine ID

s3c2440            ARCH_S3C2440        S3C2440            1999

6.给内核打yaffs文件系统的补丁。去http://www.aleph1.co.uk/cgi-bin/viewcvs.cgi/下载GNU tarball,解压后进入yaffs2目录,给内核打补丁

./patch-ker.sh c ~/kernel/linux-2.6.32

补丁打好后,在内核代码目录下的fs目录新增了yaffs2目录和相关配置文件

7.因为2410和2440很多地方是一样的,可以用2410的配置文件为基础来配置内核。在内核代码主目录下执行:

make s3c2410_defconfig

这个命令其实就是把arch/arm/configs/s3c2410_defconfig文件拷贝过来命名为.config,所以也可以自己cp。其实在2.6.31版内核中就已经加入了对mini2440开发板的支持,但是我没有选。

配置内核这里没有什么好说的,按照自己的需求来配置。

注意两个问题:

(1)编译后的镜像大小不要超过分区配额

(2)不要裁剪太狠了,把一些基本支持都去掉了,这样一些设备就用不了啦

开始编译。我的机器配置是Core 2 T5500 1.66G,2.5G 内存,运行Debian Lenny 5.0.3,编译10分钟左右就OK了。

网卡驱动我一直没有移植成功。后面弄好了再写上来。

EOF

三星的BADA平台

By ganquan, 2009年12月9日 23:14

三星发布了它的智能机操作系统bada。

bada在韩语里面是海洋(ocean)的意思(来自三星bada官网),莫非三星的野心是要做到海洋一样广阔的市场?

看到新闻之后我就立刻去了bada官网逛了一下。看起来建设得还可以,已经有比较完善的文档了。

简单的了解了一下,bada是这样滴:

bada的UI是三星的下一代触摸UI,根据官网上提供的资料看,和Android相似。还说可以直接把Flash或者WebKit嵌入到app里面,其他什么传感器、地图之类的说的很泛,这些写文档的估计原来都是学政治的。

本截图来自于三星bada官网提供的PDF资料

2009-12-09-224753_422x222_scrot

官网说bada是面向服务的(service-oriented),这是最**忽悠的一点,说了一堆假大空话。

另外,bada是开放和结构化的。概括了说就是一句话:不同的应用之间可以共享数据。又和Android一样。

bada可以选择内核,可选择Linux或者是其他实时操作系统内核(比较雷人,有多少精力来把两种都做强做大?),官网说可以根据硬件来定制、选择内核,我靠,居然想两手抓,看你能不能两手硬。另外,bada开发采用GNU工具链和eclipse。

bada的构架分为四层,如图:

本截图来自bada官网

bada_architecture

如果光是看这个构架图来,bada和Android相比,和Maemo相比,都算是最简单的构架了。官方说在Frame层可以导出C++ API,可见bada是可以用C/C++开发的。

假设iPhone、Android、Maemo可以是三分天下,那么bada的加入会改变什么呢?

换一个思维来看,其实已经算是一统了:他们都是Unix-like的内核。iPhone算是bsd,Android和Maemo都是Linux内核的,而且Maemo基本上就是把桌面Linux移植到了手机上,现在又多了一个用Linux内核的bada,可以说在嵌入式领域,在移动设备行业来看,Linux是占了相当大的优势。

剩下的在全球范围(销量,用户)来看算是小众了,静观其变。哦,对了,差点忘记还有一个尴尬的Windows Mobile:拿着冲浪板准备了那么久,结果浪来了却被拍到水底下去了。

我个人情感不喜欢三星手机,对Maemo有很大的希望,对Android不反感。

gtk中menu的item同时设置label和icon

By ganquan, 2009年12月8日 23:36

我要同时设置label和使用STOCK中的icon,其实很简单,只要调用gtk_image_menu_item_set_image( )函数就可以了。

这个函数的原型是
void gtk_image_menu_item_set_image (GtkImageMenuItem *image_menu_item, GtkWidget *image);

这个函数这样调用比较方便:

menu_item = gtk_image_menu_item_new_with_label (“Label you want to add”);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM(menu_item), gtk_image_new_from_stock (GTK_STOCK_ID, GTK_ICON_SIZE_MENU));

起先没走对路子,折腾死人。

Panorama Theme by Themocracy