2007年5月11日星期五

Linux下常用软件及配置

Linux下常用软件及其配置

  1. 窗口管理器icewm,轻便小巧,与idesk配合使用有非常出色的效果

  2. 资源管理器 gnome-commander类似于totalcommander

  3. 输入法 fcitx

  4. 常用的浏览器firefox、flock、seamonkey

  5. 邮件收发 thunderbird

  6. 终端mrxvt

  7. 编辑器vim emacs

  8. office工具 openoffice 如果比较喜欢定制的话可以使用latex,建议使用texlive套装

  9. pdf注意器 可以安装xpdf或者安装aroread的linux版,阅读中文需要同时下载安装其中文字体

mrxvt的配置文件 .mrxvtrc


mrxvt.multichar_encoding: GB
mrxvt.transparent: true
!mrxvt.transparentTabbar: true
mrxvt.foreground: white
mrxvt.background: black
mrxvt.termName: linux
mrxvt.xft: true
mrxvt.xftFont: Courier 10 Pitch
mrxvt.xftSize: 11
mrxvt.xftmFont: WenQuanYi Bitmap Song
mrxvt.xftmSize: 11
mrxvt.scrollBar: true
mrxvt.scrollbarRight: true
#打开多个标签页
mrxvt.initProfileList: 0,1,2,3
mrxvt.profile0.tabTitle: debian
mrxvt.profile1.tabTitle: redhat
mrxvt.profile2.tabTitle: debian_2
mrxvt.profile2.tabTitle: debian_3

2007年5月9日星期三

从源码编译安装sipx

sipx是一个开源的ip pbx,它使用的是sip协议。目前该项目的日趋成熟,影响力逐步的扩大。

一个东西好坏与否,得先试上一把才知道,那么如何进行安装呢。相应的安装说明在sipx-wiki上有相应的说明,但对从源码编译一事都有些语焉不详。经过两天的尝试,安装并运行成功,现总结一下,与大家共勉。注,本人使用的是debian etch

  1. 获取源码 svn co http://sipxecs.sipfoundry.org/rep/sipXecs/main sipx
  2. 确保已经安装automake、 autoconf和libtool 运行命令autoreconf --install --force
  3. 运行configure,如果在configure过程中有错误出现,根据提示安装相应的软件包
  4. make 这里会出现找到头文件的错误,直接修改Makefile是没有用的,请修改config.status中相应的内容
  5. make install
  6. 安装ssl-cert,有关详细说明在sipXcommserverLib/doc/INSTALL.ssl.in,该文件中所要使用到的脚本文件在/usr/local/sipx/bin/ssl-cert目录下,确保已经编译并安装了sipXcommserverLib
  7. 为了正常启动sipxpbx需要添加sipxchange用户 useradd -m sipxchange
  8. su sipxchange
  9. 启动服务,注意要用sipxchange用户启动或停止 sipxpbx start
  10. 停止服务 sipxpbx stop

有关sipx最全的参考网站是sipfoundrysipx-wiki

2007年4月23日星期一

C++编程再认识

学会一门编程语言并不是一件难事,但是要想熟练的掌握它并进而依赖其谋生的话,就不是一件非常简单的事情了。c&c++就是最典型的例子,谁都知识C语言入门很easy,但要想用的得心应手就没那么容易了。

在linux环境下,要想应用c&c++来进行快速的应用开发,在现在有几个library还是非学一下不可的,它们可以快速的提高开发效率。说了这么多,它们究竟是谁?

  1. ACE Adaptive Communication Environment
  2. boost

其中boost是函数库,知道如何怎么用就可以了,至于为什么要设计成这样及如何设计就是另外一个层次的问题了?

至于ACE的学习,可能会困难一些,首先得知道一下网络编程的基本概念,这方面最好是先读一下Richard Stevens的经典《Unix Network Programming》一、二卷的内容,了解一下涉及到的基本概念。这些基本概念有:

  1. tcp udp的基本概念
  2. 阻塞与非阻塞模式
  3. 进程间通讯
  4. 进程同步

有了网络编程的基础知识,还要知道一点设计模式的皮毛才能快速的使用ACE。

2007年4月4日星期三

一周感怀Weekly

不知不觉中又到了一年的四份,时间真的是悄无声息的就从身边溜走了。最近两个星期,事情还是瞒多的,也学着一些网站的样子,弄个weekly report之类的东西。

也还是从大的说起吧,blogspot封了又开,5gb彻底是玩完了。中国人总是认为放的太开会出大乱子,于是索性就将自由度控制到最低,然而历史的结果往往与我们预期的不一样。就此打住,不扯远了。

说了国事,也说些家里的琐事吧。上周四,天气比较热,怕宝宝热着了,就说要少穿些衣服,结果衣服一下子脱的太多,小孩受不了,发烧了。幸好是在周末,及时去看了一下医生,吃些药,恢复了。看了带小孩,还是应该多听一下老年人的意见才行。

公司里的任务安排也渐渐的清晰起来,但总觉着不是滋味,或许总有一个适应过程吧。

2007年3月16日星期五

emacs配置文件

每次安装emacs,在配置上都要花许多时间,这次将配置的比较完全的内容保存到网上,以便日后查找。

安装emacs的步骤,建议利用cvs工具下载一份最新的源码,然后编译。具体步骤如下:

  1. ./configure --enable-font-backend --with-xft --with-freetype --with-gtk --with-png
  2. make bootstrap
  3. make info
  4. make install
;;启动窗口最大化
(setq default-frame-alist
'(
(top . 0)
(left . 0)
(height . 67)
(width . 138)
))

(fset 'yes-or-no-p 'y-or-n-p)
(display-time)
(transient-mark-mode t)
(show-paren-mode t)

;;隐藏工具条
(tool-bar-mode -1)
;;显示在右边
(set-scroll-bar-mode 'right)
;;不要临时文件
(setq-default make-backup-files nil)



(setq inhibit-startup-message t)
(setq default-major-mode 'text-mode)
(mouse-avoidance-mode 'animate)
(setq frame-title-format "emacs@%b")
(auto-image-file-mode)
(global-font-lock-mode t)
(put 'set-goal-column 'disabled nil)
(put 'narrow-to-region 'disabled nil)
(put 'upcase-region 'disabled nil)
(put 'downcase-region 'disabled nil)
(put 'LaTeX-hide-environment 'disabled nil)

(show-paren-mode t)
(setq show-paren-style 'parentheses)
(require 'ido)
(ido-mode t)
(setq ido-save-directory-list-file nil)
(require 'recentf)
(recentf-mode t)

;;括号匹配
(global-set-key "%" 'match-paren)
(defun match-paren (arg)
"Go to the matching paren if on a paren; otherwise insert %."
(interactive "p")
(cond ((looking-at "\\s\(") (forward-list 1) (backward-char 1))
((looking-at "\\s\)") (forward-char 1) (backward-list 1))
(t (self-insert-command (or arg 1)))))
;;vim中fx的替代品
(defun wy-go-to-char (n char)
"Move forward to Nth occurence of CHAR.
Typing `wy-go-to-char-key' again will move forwad to the next Nth
occurence of CHAR."
(interactive "p\ncGo to char: ")
(search-forward (string char) nil nil n)
(while (char-equal (read-char)
char)
(search-forward (string char) nil nil n))
(setq unread-command-events (list last-input-event)))
(define-key global-map (kbd "C-c a") 'wy-go-to-char)

;;主题选择
(require 'color-theme)

;;(color-theme-dark-blue)
(color-theme-sitaramv-solaris)

;;设置编码格式
(prefer-coding-system 'utf-8)
;;设置字体
(create-fontset-from-fontset-spec
"-adobe-courier-medium-r-*-*-14-*-*-*-*-*-fontset-ifree,
chinese-gb2312:-wenquanyi-wenquanyi bitmap song-medium-r-*-*-15-*-*-*-*-*-iso10646-1,\
chinese-gbk:-wenquanyi-wenquanyi bitmap song-medium-r-*-*-15-*-*-*-*-*-iso10646-1,\
chinese-gb18030:-wenquanyi-wenquanyi bitmap song-medium-r-*-*-15-*-*-*-*-*-iso10646-1,\
chinese-cns11643-5:-wenquanyi-wenquanyi bitmap song-medium-r-*-*-15-*-*-*-*-*-iso10646-1,\
chinese-cns11643-6:-wenquanyi-wenquanyi bitmap song-medium-r-*-*-15-*-*-*-*-*-iso10646-1,\
chinese-cns11643-7:-wenquanyi-wenquanyi bitmap song-medium-r-*-*-15-*-*-*-*-*-iso10646-1")
(set-default-font "fontset-ifree")
(add-to-list 'after-make-frame-functions
(lambda (new-frame) (select-frame new-frame)
(set-default-font "fontset-ifree")))

;;使用cedet工具
(add-to-list 'load-path
"/usr/local/share/emacs/site-lisp/cedet-1.0pre3")
(load-file "/usr/local/share/emacs/site-lisp/cedet-1.0pre3/common/cedet.el")
;;(semantic-load-enable-code-helpers)

;;using ecb
(add-to-list 'load-path
"/usr/local/share/emacs/site-lisp/ecb-snap")
(require 'ecb)

(setq track-eol t)
;; 当光标在行尾上下移动的时候,始终保持在行尾。

(setq Man-notify-method 'pushy)
;; 当浏览 man page 时,直接跳转到 man buffer。

(setq-default kill-whole-line t)
;; 在行首 C-k 时,同时删除该行。



(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(ecb-options-version "2.33beta1")
'(ecb-tip-of-the-day nil)
'(ecb-tree-indent 1)
'(ecb-tree-truncate-lines nil)
;;'(ecb-truncate-lines nil)
'(ecb-truncate-long-names t))

(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)

(setq truncate-partial-width-windows nil)

(require 'xcscope)


;;有关c语言编程方面的设置
;;;; CC-mode配置 http://cc-mode.sourceforge.net/
(require 'cc-mode)
(c-set-offset 'inline-open 0)
(c-set-offset 'friend '-)
(c-set-offset 'substatement-open 0)

;;;我的C/C++语言编辑策略

(defun my-c-mode-common-hook()
(setq tab-width 4 indent-tabs-mode nil)
;;; hungry-delete and auto-newline
(c-toggle-auto-hungry-state 1)
;;按键定义
(define-key c-mode-base-map [(control \`)] 'hs-toggle-hiding)
(define-key c-mode-base-map [(return)] 'newline-and-indent)
(define-key c-mode-base-map [(f7)] 'compile)
(define-key c-mode-base-map [(meta \`)] 'c-indent-command)
;; (define-key c-mode-base-map [(tab)] 'hippie-expand)
(define-key c-mode-base-map [(tab)] 'my-indent-or-complete)
(define-key c-mode-base-map [(meta ?/)] 'semantic-ia-complete-symbol-menu)

;;预处理设置
(setq c-macro-shrink-window-flag t)
(setq c-macro-preprocessor "cpp")
(setq c-macro-cppflags " ")
(setq c-macro-prompt-flag t)
(setq hs-minor-mode t)
(setq abbrev-mode t)
)
(add-hook 'c-mode-common-hook 'my-c-mode-common-hook)

;;;;我的C++语言编辑策略
(defun my-c++-mode-hook()
(setq tab-width 4 indent-tabs-mode nil)
(c-set-style "stroustrup")
;; (define-key c++-mode-map [f3] 'replace-regexp)
)

;;配置semantic检索的范围
(setq semanticdb-project-roots
(list
(expand-file-name "/")))

(defun my-indent-or-complete ()
(interactive)
(if (looking-at "\\>")
(hippie-expand nil)
(indent-for-tab-command))
)

(global-set-key [(control tab)] 'my-indent-or-complete)

(autoload 'senator-try-expand-semantic "senator")

(setq hippie-expand-try-functions-list
'(
senator-try-expand-semantic
try-expand-dabbrev
try-expand-dabbrev-visible
try-expand-dabbrev-all-buffers
try-expand-dabbrev-from-kill
try-expand-list
try-expand-list-all-buffers
try-expand-line
try-expand-line-all-buffers
try-complete-file-name-partially
try-complete-file-name
try-expand-whole-kill
)
)
(defun eshell/clear ()
"04Dec2001 - sailor, to clear the eshell buffer."
(interactive)
(let ((inhibit-read-only t))
(erase-buffer)))

;;加入对auctex以方便对latex文件的编辑
(load "auctex.el" nil t t)
(setq TeX-auto-save t)
(setq TeX-parse-self t)
(setq-default TeX-master nil)

2007年3月8日星期四

我手写我心

今天是三八妇女节,是广大女同胞的的节日,但对我来说,比这更为重要的是,我老婆大人的生日是今天。所以除了祝广大女同胞们节日快乐外,更要祝我老婆生日快乐,天天开心。

老婆湖北麻城人是也,于2005嫁与我这一网络民工,并于2006年顺利为我产下一胖胖的狗宝宝,为家里添了许多欢乐和喜庆。

谢谢老婆大人多年来对我这的支持与关心,谢谢老婆大人对宝宝的呵护。我将永远爱你和宝宝。

2007年3月6日星期二

步步为营背诵新概念英语第三册

从今年三月份开始,恢复背诵nce3,去年背诵过nce2,中间由于宝宝出生的原因,背诵进程耽搁了下来。

经过对前8篇文章的背诵和测试,发现能够在半小时内背诵一篇课文,但决不表示一天能够背诵48篇。切合实际的作法是一天背诵两篇课文,上午一篇和晚上一篇,因为就我个人背诵的规律而言,下午不是最好的。下午可以做为复习巩固的时间,将已经背诵的课文用latex做成相应的pdf文档。

背诵最大的敌人是遗忘,特别是当背诵的内容多了以后,遗忘的就越快或者说记忆的准确性就越容易下降,因为这个时候不是记不起来就是将许多东西混在一起。如何处理这个难题呢,我的解决方法是通过联想法与数字桩法将记忆的内容牢牢的与数字卡在一起。

背诵课文是一个整体的过程,最为忌讳的是中间有断点。在平时最容易发生这种情况的是节假日的出现,特别是长假的出现,所以在进行安排的时候,最好将长假作为阶段总结的一个契机,而不要将一个任务安排在节前和节后的两个时间段里,这样的效果是不好 。

2007年3月5日星期一

贵在执行

本周就要离开现在的公司,开始新的征程。在原来公司上班的这段时间里,有成功的经验也有失败的教训。也许从技术上来说,学了不少的东西,但在具体的管理经验上来讲,我还有许多的东西需要好好的琢磨与研究。

新的单位也意味着新的开始,已有成功所获的经验或是不成功带来的教训都将是我今后发展的基石。一个人没有计划是不行的,但有了计划不能很好的执行则更可怕,他将会永远被计划包围而无实质性的进展,所以贵在执行。

2007年3月2日星期五

迎接嵌入式开发的到来

上本科时,win95刚推出没多久,它是多媒体时代的代表,一台电脑能够看看vcd,顺带写些文档就不错了,当然可以做科学研究方面,俺不会。多媒体时代造就了不少的it英雄。

接下来netscape和ie的一场搏杀,带来的是互联网的推广和普及,谁都知道互联网造就了无数的富翁。

时间悄然来到了2007年,接下来该流行什么呢,结合许多文章和事实,可以看出,embedded system将会迎来一个高速发展的黄金时期。作为一个编码的民工,我不该错过这样的机会,错过了第一次,错过了第二次,绝不能再错过第三次,因为我已不再年轻。

2007年2月25日星期日

apt的安装源

让Debian用grub作为bootloader来启动时,有背景图出现,需要进行如下的操作,先apt-get install grub-splashimages 然后修改/boot/grub/menu.lst中的内容,添加如下内容

splashimage=(hd0,0)/grub/splashimages/debsplash.xpm.gz

注意hd0表示第一块硬盘,后面的0表示第几个分区,grub是从0开始计数的,如果用fdisk -l查看到/boot在hda5的话,那么就应该写成(hd0,4),同时将color一行的内容注释掉。

可用的mirrors site安装源:

#deb http://debian.cn99.com/debian sid main contrib
deb http://debian.cn99.com/debian etch main non-free contrib
deb-src http://debian.cn99.com/debian etch main non-free contrib
#deb http://debian.cnsite.org/debian sid main contrib non-free
#deb http://debian.cnsite.org/debian etch main contrib non-free
#deb ftp://218.22.45.5/debian/ etch main non-free contrib
#deb ftp://218.22.45.5/debian/ sid main non-free contrib
#deb http://mirror.dlut.edu.cn/debian/ etch main non-free contrib
#deb http://debian.cn99.com/debian etch main non-free contrib
#deb http://mirrors.geekbone.org/debian sid main non-free contrib
#deb http://mirrors.geekbone.org/debian etch main non-free contrib
#deb ftp://debian.ustc.edu.cn/debian-uo sid marillat rareware misc ustc
#deb-src ftp://debian.ustc.edu.cn/debian-uo sid marillat rareware misc ustc
deb ftp://ftp.linuxforum.net/debian/ etch main non-free contrib
deb ftp://ftp.linuxforum.net/debian/ sid main non-free contrib
测试一下javascript的syntax highlight功能
package us.prokhorenko.jx;
import us.prokhorenko.jx.Person;
import org.exolab.castor.xml.*;
import java.io.*;
import java.util.*;

2007年2月21日星期三

在Linux平台进行企业应用开发

任何一个操作系统如果没有得到以下几个方面的支持,那么它的生命就注定不会长久。
  1. 大的厂商或开发社群
  2. 设备供应商的支持,提供好的驱动程序
  3. 企业应用解决方案及部署方案

尽管在实现上,windows的某些技术不如linux来的精巧与细致,但在企业应用开发的入门难度及部署难度上来说,windows远比linux上的来的简单,这也是为什么linux在中小型的企业应用上没有得到广泛应用的一个原因吧。

linux天生就是一个开源opensource的东西,在其上面的开发工具也如此,否则不易被接受。在企业应用开发或者说web应用开发上面,linux平台借助于这三大开源产品的支撑,同样也弄的风声水起,它们就是赫赫有名的lamp(linux apache mysql php)的简称。

2007年2月15日星期四

gentoo紧急修复

gentoo的使用过程中难免会遇到系统启动不了的情况,原因是我们一直在不停的调整各种参数,难免会有设置的不对的时候。那么如何处理这种情况呢,用livecd进行急救,具体步骤如下:
  1. 用livecd启动系统
  2. 设置网络 net-setup eth0
  3. mkdir -pv /mnt/gentoo/boot
  4. mount /dev/sda1 /mnt/gentoo/boot
  5. mount /dev/sda2 /mnt/gentoo
  6. swapon /dev/sda3
  7. chroot /mnt/gentoo /bin/bash
  8. env-update && source /etc/profile

注意上述命令假设你的分区情况是/dev/sda1为/boot,/dev/sda2为/, /dev/sda3为linux swap,如果情况不同,请自行修改相应的参数。接下来该干啥干啥,呵呵。

gentoo安装手札

gentoo是一个source-based linux distribution,目前非常红火。其吸引人的地方有:
  1. 控制编译过程,可以输入可以优化参数
  2. 自动解决包之间的依赖问题与冲突
  3. 有良好的文档支持
  4. 有非常活跃的用户社区与开发团队

有这么多的好处,那就自己弄一个试个究竟。安装前的步骤:

  1. 下载最新的2006.1的livecd
  2. 安装一个vmware,在虚拟机上试一下,不成功也没关系

开始安装,从livecd启动后,选择gtk-based的安装模式,根据提示可以安装一个基本系统(base system)应该问题不大。安装完成后,修改/etc/make.conf文件

  1. GENTOO_MIRRORS="http://ftp.gentoo.or.kr/ http://mymirror.asiaos.org/gentoo/"
  2. SYNC="rsync://rsync.asia.gentoo.org/gentoo-portage"

修改gcc和ld的优化参数,具体设置为make.conf文件中的CXXFLAGS,CFLAGS和LDFLAGS

  1. 编译内核
    1. emerge gentoo-sources
    2. emerge genkernel

  2. 升级系统
    1. emerge --sync 同步portage
    2. emerge -uDf world 下载源代码
    3. emerge -uD world 升级系统

在进行系统升级过程中,编译时间最长的是glibc的编译,为了给它减肥。建立文件/etc/locales.build,在其中加入以下内容,然后在/etc/make.conf文件的USE标记中加入userlocales选项。

en_US.UTF-8/UTF-8
en_US/ISO-8859-1
zh_CN.GB18030/GB18030
zh_CN.GBK/GBK
zh_CN.UTF-8/UTF-8
zh_CN/GB2312

基本系统安装完成后,接下来的事情就是根据个人的需求安装特定的软件了,这个时候肯定会有一个问题浮现出来,哪就是如何确定所要的软件存在与否呢?这个很简单通过equery,不过使用它之前,需要emerge gentoolkit,如果你觉的equery的速度实在不敢恭维的话,那么就安装eix吧。

文档查阅的好去处

  1. gentoo的老窝
  2. gentoo-wiki

2007年2月6日星期二

诫子书

夫君子之行,静以修身,俭以养德。非淡泊无以明志,非宁静无以致远。夫学须静也,才须学也,非学无以广才,非志无以成学。淫慢则不能励精,险躁则不能治性。年与时驰,意与日去,遂成枯落,多不接世,悲守穷庐,将复何及!

2007年2月5日星期一

UNIX一个充满天才的世界

Unix is simple. It just takes a genius to understand its simplicity. -- Dennis Ritchie

公司里开始考虑转换发展方向,将注意力集中于windows平台下中间件的开发,对于公司来说,这种转型也许是正确的,但对我来说,却意味着开发工具和工作环境的再次转换和熟悉,对个人的职业发展来说,并无太多的好处。

我无意去挑起windows vs. unix之类的话题,但我自己是unix最忠实的拥趸(dun第三声),而且在linux环境下已经开发了两年多时间,所以更换环境对我来说无疑是痛苦的。

毫无疑问,unix开始使用的时候是比较困难的,但是当你有所了解和熟悉以后,你会疯狂的喜欢上这样一个系统。

在unix的世界里,没有盗版软件一说,没有注册码一词,有的只是奉献和open,unix是一个技术和艺术的结合体。在这个世界里,充满了技术天才和富有想像力的艺术家。就好比是建筑领域中的大师。

在windows的世界里,最多成为一个编码匠,但在unix的世界里,却有可能成为大师,当然你得为此付出巨大的努力和牺牲。

2007年2月2日星期五

从网络编程到网卡驱动

网络编程是从事linux开发经常遇到的问题,大部分的开发人员都会花时间在此上面,经过一定时间的学习和实践也都能应对一般的网络开发。

我们要考虑的问题是如何将已有的知识更加的深化下去,我想可以从这些方面来努力

  1. TCP/IP协议学习
  2. Linux驱动编程
  3. 网卡驱动设计
  4. 嵌入式linux开发

经过上面的学习,那么就不仅仅是掌握了网络编程,同时对于底层的驱动和嵌入式开发也能掌握的不错。

2007年1月25日星期四

想法与规划

每个人都有自己的想法,都有诸如我要如何如何如何的念头,但真正能实现或达到目标的人却不是很多。除了个人的能力之外,重要的一点就是没有将心中的想法与自己的实际或者说现有条件进行结合并分析。

我们可以有无数个想法与念头,但有一点要明白,时间是有限的,如果要实现你的每一个想法,100年的时间都过去了。所以要有取舍,要取最有份量的,最容易实现的,最具有潜力投入产出比最高的进行详细的规划,而其余的可以毫不犹豫的舍去。

人生是一个整体的,我们需要的是全局最优,而不仅仅是局部最优,局部最优和全局最优有时是相悖的。看看元帅与将军的不同就知道 了。

2007年1月16日星期二

纯粹与简约之美 Linux使用之我见

使用Linux作为自己日常的工作平台已有一段时间了,从最初接触redhat到现在已经有四五年了。从事在Linux平台下的应用开发也已经快三年了,使用Linux的时间越长就越感觉到其纯粹与简约。目前我所使用的发行版是Debian,感觉Linux入门需要掌握的基本知识有以下内容:

  1. 操作系统的基本模块安装
  2. Shell推荐使用Bash,掌握一些基本的命令并学会shell脚本编程
  3. perl脚本,当然也可以选择其它的如python或ruby
  4. 选择一款窗口管理器,icewm简单易用,不耗资源
  5. 编辑器
    1. vim
    2. emacs
    3. sed
    4. gawk
  6. 排版工具 tex或docbook
  7. 开发工具
    1. gcc
    2. make
    3. gdb
    4. cvs

2007年1月12日星期五

寂寞沙洲冷

今天是冬日里常见的阴雨天,心情受其影响,很忧郁。也许到了年末心情大都如此吧。日子像水一样从身边悄悄流过,转眼已是2006的阴历年末,大街上到处都是喜庆的歌曲,而我却觉的没有太多的欢喜。

也许是觉着自己在过去一年中的进展还不够多吧,其实一个最大的快乐来自挑战与超越自己。如果没有在这上面取的进展,那么其它带给你欢乐都是短期和不持久的。