关于作者

用户名:brainstorming
笔名:小狼
地区: 成都-上海
行业:学前教育

日历  

快速登录

+ 用户名:
+ 密 码:

在线留言



友情链接

狡狼三窟

访问统计:
文章个数:179
评论个数:143
留言条数:6




Powered by BlogDriver 2.1

Brainstorming

 

"One man's constant is another man's variable." -- by Alan J. Perlis

文章

工作札记 (8)
新一轮的开发工作早已经开始,我们又回到了写 weekly report 的时代。由于工作需要,我们基本上要用到四种语言: C, Java, Ruby 和 Python. 其中C和Java乃是官方必备, Ruby用在WebUI, 而Python接口虽然不必全部提供,但也经常需要。

我 遇到了一个问题,就是dump出XML-RPC的request. 也就是一段XML表示的调用请求。 用C, Ruby 和 Python 都相当直接而且简单。 对于C而言,只要看看头文件便可一目了然,Ruby和Python的标准库也相当实用并且易懂。 对于Java, 我花了整整一个下午, 一个夜晚(直到午夜),已经今天整整一个上午。最终在gf的帮助下终于搞定。

我曾在大学暑假专心学Java花了一个礼拜,专心学Python的时间只有两个礼拜,至于Ruby,则基本上没花过什么时间瞅一瞅。很容易找到Python和Ruby解决办法的原因在于:
  1. 这两者标准库的文档比较完备,源代码、示例代码等都比较详尽;
  2. 脚本语言,方便调试,并且它们都有非常强大的reflection;
前两者基本上只需要两三行就能搞定,对于Java我最终得到的代码则有二三十行左右。

我 必须承认:我不懂OO。因此一个javadoc文档对我而言没有太大的帮助。我更需要的似乎是一张UML图。在一个完全陌生而且稍微庞大的java包面 前,像我这样一个Java白痴,采用Emacs加软件包源代码的工作方式,那是事倍功半。我得感谢Eclipse的文档和源代码定位功能,基本上是单步跟 踪了一下流程,然后仔细梳理那些类的关系。当然,gf的鼎力相助那是功不可没。

我一直认为OO容易导致设计over- complicated,继承层次太深的时候用户很容易找不着北。另外一点,Andrew Koenig曾经在 ``C++沉思录'' 里面说过:库设计就是语言设计。 就算Java语言本身如何强大,如果缺少我所想要的库,那么我也只能放弃它。 什么是语言? 一种表达方式而已,可以是通用语言,可以是DSL-- PLT-Scheme中可以选择不同语言(包含不同特性的Scheme,甚至是DSL -如slideshow,用于创建和展示slide).

嗯,扯远了。不过我发现自己真的不喜欢Java -- 我习惯于C的简单直接,渐渐也喜欢函数式编程的优雅,却对OO一直没有来电。

周末公司去青岛旅游。没什么期盼,呼吸呼吸新鲜空气,锻炼一下身体而已。

- 作者: 小狼 2008年10月21日, 星期二 22:56  回复(0) |  引用(0) 加入博采

工作札记 (7)
2008-09-28
今天公司没什么人,空调机的风扇声哗哗作响。轻松了两个月后,下一阶段的战役终于拉开序幕。在一番需求,用例,构架之后终于来到了详细设计以及进度安排的 细分。体会不多,然而最深刻的一点是:Any simple problem can be made unsolvable if enough meetings are held to discuss it.

因小见大,管中窥豹,我认为Intel x86系列芯片和Windows系列就其功能特性上,应该算是相当成功的。软件中的历史遗留问题其实相当棘手。这也是``Linux is evolution, not intelligent design.''的原因吧。

OK, 总体架构当然是大佬们决定的 -- 有许多不为喽喽们所知的business因素。但喽喽们现在还有时间再三斟酌、详细设计所在单元的设计。于是我很开心的在org-mode里写文档,然后在自己的机器里建了个hg仓库,并且让同事可以用浏览器访问它们。

按照计划,国庆回来后便是开始写代码的时候。与以前单兵作战不同的是,现在我负责的一个单元有了个帮手。

- 作者: 小狼 2008年10月21日, 星期二 22:51  回复(0) |  引用(0) 加入博采

Beating the Averages
2008-10-12
The Averages, 即 ``the average programmers' '是也。标题所指文章以前应该看过,再次细读了一番,颇有``余音绕梁''之感。

教 科书中常把编程语言划分成低级语言和高级语言,这容易给人造成一种误解:高级语言大致都是等价的。其实不是!并没有一个鸿沟,明确的将一边划为低级语言, 另一边是所有高级语言。每一种语言都提供了一个抽象层次,层次越高便越强大。虽然在图灵机的角度来看,它们是等价的,但是在实际生活中,程序员更关心的是 语言的表达能力和表达效率。

``奇文共欣赏'',热爱程序设计的朋友们不妨仔细一读。

- 作者: 小狼 2008年10月21日, 星期二 22:46  回复(0) |  引用(0) 加入博采

wmii tips
wmii最酷的地方在于它的设计理念,从Plan 9 "偷"过来的:control via filesystem interface. wmii提供了一个虚拟文件系统,可以通过9P协议的create, read, ls, remove, rm, write来访问,从而完成对wmii的各种配置。这种进程间通信方式完全独立于语言,并且极其简单。比如:
# wmiir ls /
client/
colrules
ctl
event
keys
lbar/
rbar/
tag/
tagrules

# wmiir read /rbar/status
RX: 5.2 MB TX: 1.1 MB | 0.16 0.17 0.22 | Sun Sep 21 21:25:28 CST 2008
1. wmii的配置文件
wmii 的全局配置文件在 /etc/X11/wmii-x.y/ 下,下面有两个文件 rc.wmii,还有 wmiirc。但大部分时候后者才是有效的,在系统总存在Plan 9运行时的情况下则启用前者。吾开始没主意,屁颠屁颠的修改 rc.wmii,没有任何作用,甚为郁闷。

2. 为wmii添加命令
快捷键Modkey-a使得wmii列出wmii快捷命令, 默认有exec, rehash, wmiirc等等。在任何一个wmii配置文件所在目录下放置一个可执行文件,都会使得系统中多一条命令,命令名即为可执行文件的文件名。比如我在 $HOME/.wmii-3.5/ 下放置了一个名为`lock'的脚本:
#!/bin/sh
# lock the screen

xscreensaver -no-splash &
xscreensaver-command --lock
这样modkey-a中便会列出`lock', 选中它执行之,便会锁定屏幕。

3.1 键绑定 - MODKEY
和多数TWM一样,wmii默认快捷键的主键是modkey,当MODKEY=mod1时,modkey-a便是`ALT-a',这是默认设置,设成mod1时在PC上很不方便,不妨将其设为mod4,也就是窗口键。

3.2 键绑定 - 添加绑定
为wmii添加键绑定同样相当直观且方便。在 wmiirc 文件中的 "key bindings"区域(100行左右)添加一条就是了。规则为:
Key keybinding
command
比如:
key $MODKEY-u
foobar
保存一下,modkey-a执行wmiir,使得配置生效,然后modkey-u便会执行命令`foobar'。

3.3 键绑定 - 音效键
用Gnome的时候笔记本上的音效键工作的相当完美。换到wmii后则仿佛回到刀耕火种,茹毛饮血时代。开始添加了一个命令绑定到`alsamixer',感觉还是很不方便,于是我想着怎么让音效键也工作。其实,很简单 -- 步骤如下:
a) 运行 xev 找到音效键的键码,我的系统中是这样:静音(160),降低(174),增高(176)。
b) 运行 xmodmap 添加键盘布局设置。
# cat ~/.Xmodmap; xmodmap ~/.Xmodmap
keycode 160 = XF86AudioMute
keycode 174 = XF86AudioLowerVolume
keycode 176 = XF86AudioRaiseVolume
最后,在wmiirc下添加如下绑定:
Key XF86AudioLowerVolume
amixer -c 0 set PCM 2dB-
Key XF86AudioRaiseVolume
amixer -c 0 set PCM 2dB+
Key XF86AudioMute
amixer -c 0 set PCM toggle
4. 中文标题
默认wmii选用的字体是'fixed',这样应用程序的标题中如果含有中文则会显示为乱码,修改一下 wmiirc 就行了:
WMII_FONT='-misc-*-medium-r-normal--13-*-*-*-*-*-*-uni'
5. 标签规则
由于wmii是个TWM,这样打开任何应用程序的时候都会试图根据当前平铺模式将其铺满窗口,运行xeye则满屏是个大眼睛,不妥当。系统默认已经添加了mplayer的规则,我们可以添加xev的规则,使得事件测试窗口不铺满屏幕。在tagrules中添加一行:
/Event.*/ -> ~
6. 修改状态条
wmii 的状态条有两个lbar, rbar。分别用来控制状态条的左、右面。左面是各个tag,右面则用来当前时间,系统负载:其实就是uptime和date的输出。当然我们可以很方便 的加上网卡接收、发送数据的统计,稍微修改一下 wmiirc 脚本中的`status'函数即可。
# Status Bar Info
status() {
echo -n $(ifconfig eth1 | awk -F "[)(]" '/RX bytes/{print "RX:",$2}') \
$(ifconfig eth1 | awk -F "[)(]" '/TX bytes/{print "TX:",$4}') \
'|' $(uptime | sed 's/.*://; s/,//g') \
'|' $(date)
}

- 作者: 小狼 2008年09月21日, 星期日 22:13  回复(0) |  引用(0) 加入博采

冒个泡

2008-09-19

这两周几乎每天开会,而这两天一直持续到晚八点。公司的英语课旷了四节,以至于不好意思直视英语老师。Q3眼睁睁的就要结束了,除了十月底公司的青岛游以及窗口的国庆,接下来的这个Q4应该相当充实。

完成了一些文档,歇了口气。翻了几页好久没碰的《古文观止》,听着Andrea Bocelli的音乐,心里在感动中找到一丝平静。

前些日子把用了很久的Gnome桌面也删掉了,转用wmii,它完全符合我对键盘快捷键支持的要求。对于一个12.1c寸小本,它也的确相当合适。此外,awesome窗口管理器也不错。

- 作者: 小狼 2008年09月21日, 星期日 20:47  回复(0) |  引用(0) 加入博采

Tiny Menu
装了Google Chrome后又将其卸了去,不过却让我想到是否有个firefox插件可以把菜单隐藏起来,找到一个Tiny Menu,比较喜欢。

- 作者: 小狼 2008年09月5日, 星期五 23:18  回复(0) |  引用(0) 加入博采