Archive for November, 2011
架构师的选择(觉悟)
原文链接:アーキテクトの選択(あるいは覚悟)
架构师的工作大部分时间都是在“做选择”,这些选择都是在一切发生之前所做出的,因此,一旦决定就不能更改了。
架构师所要选择的是静态的结构。方案一旦确定,就开始转入退化过程。随着时间的推移,系统的适应性会变差,对做出的决定进行修改往往要付出巨大的代价。
当然,项目经理对于进度计划以及项目人员体制等方面的安排也属于“事先选择”。但是,这些选择对象都属于动态的过程。
动态的过程能够随着时间的推移适应其过程中出现的变化。包括敏捷等迭代式过程在内的开发过程,它们都推荐在开发过程中设立短期目标并根据实际作业情况做出调整。这是非常有效的方法。动态过程承认事先选择中所发生的过失和偏差,且允许在事情发生之后做出改变。
有这么一说:“Good managers do things right (优秀的管理者会做正确的事)”,项目经理所做的是把握事先选择(计划)和事后情况(实际)两者之间的偏差,针对这些偏差对各种各样的参数做出调整,将项目的发展方向始终沿着预定的轨道不断进行修正。
然而,架构师的选择却是静态的结构,敏捷的推进方式无法适用于这些静态结构。

isHUD v0.2发布声明
isHUD v0.2发布声明
目的
作为一个多语言的Mac OS X用户,我使用系统默认的快捷键(Command+空格, Option+Command+空格)切换输入法。但是,当我按下Option+Command+空格(即选择下一个输入源)的时候,系统并不会出现输入法选择框(按Command+空格时候出现的那个列表)。当启用的Lion的全屏模式的时候,要确认当前所使用的输入法十分不便。
于是isHUD诞生了!isHUD是“input source HUD”的缩写。
有了isHUD,每当切换输入法的时候,屏幕中央就会出现一个HUD窗口,提示选中的输入法,这样,你无须移动视线就能知道所选的输入法了。
如果你想要更快捷地切换输入法,那么这篇博客也许对你有用。其中也提到了为什么要做isHUD。

OS X键盘应用技巧:一键切换输入法
工作的时候,我常常需要在多个输入法之间切来切去。
Mac默认的输入法切换是Command+空格和Option+Command+空格。虽然默认也没有什么不方便的,但是,我发现在我的键盘上有个键几乎从来没用过,那就是右侧的Option键,于是我想能不能通过这个键实现一键切换输入法呢?

OS X键盘使用技巧:自动根据应用程序切换F1~Fx功能键
Mac用户应该都知道,就像下面这张图片那样,Apple的键盘最顶上一排默认情况下是多媒体控制键,而不是传统PC上所使用的F1~Fx功能键,要使用功能键的时候需要配合Fn键。
对于原生的Mac应用来说,这并不成问题。但是如果像我这样时不时要用到终端(iTerm2)、虚拟机什么的,那么在这些环境中能无须使用Fn键就能得到F1~Fx键就会方便不少(比如vim的快捷键绑定)。当然,你可以通过“系统偏好设置”将功能键默认修改为传统的Fx键,不过这样的话,在Mac应用中调节音量,打开mission control什么的又不太方便了。
经过一番搜索,我找到了圆满解决这个问题的方法。答案就是——Palua,一款自动切换功能键行为的工具。
Palua的图标已经非常直白地解释了它是做什么用的了。下面就简单介绍一下自动切换功能键的设置方法。安装好Palua之后,就能在系统菜单栏中看到其状态指示图标了。
要让Palua根据应用程序自动切换工作模式,需要进入其偏好窗口增加一些配置。很简单,看图,一目了然!
首先,要启用“Smart Mode”。然后,在应用程序列表中添加需要的应用程序,再设置对应的功能键的默认行为即可。完成后立即会生效,把应用程序开起来试试,方便多了吧~
最后,别忘记将Palua设置为开机自动启动。
美中不足的是,Palua并不是免费工具,在App Store上的价码是$0.99,不过只要花不到1美元就能解决问题的话,对于有需要的用户来说也不是很贵啦,毕竟有了它确实很方便!

利用mock发现接口
引言
前几天,《Mock Roles, not Objects》一文的日语版《ロールをモックせよ(对角色进行模拟)》公开发表了。这是篇发表于2004年的论文,作者阵容相当豪华,他们是:Steve Freeman、Nat Pryce、Tim Mackinnon、Joe Walnes。另外,Steve Freeman和Nat Pryce还是《Growing Object-Oriented Software, Guided by Tests (Addison-Wesley 大师签名系列)》(即GOOS)的作者,《Mock Roles, not Object》可谓GOOS的思想根基。
在这篇文章中,我想就《Mock Roles, not Object》(以下略称为MRnO)所提到的使用Mock的基本思想,顺着GOOS的思路继续深入挖掘一下。 Read the rest of this entry »

为Linkstation NAS添加mldonkey
入手了一台心仪已久的MBA, 因为硬盘比较小,所以打算入一台NAS。因为用了Mac,所以想找款支持Time Machine的。比较了一下,发现Synology的DS110j是比较理想的家用机型,外形好看且功能齐全,可就是买起来不方便,所以只能选了第二方案——Baffalo的Linkstation ls-v1.5tl。后者整体上也还不错,唯一比较遗憾的是没有内建电驴的支持,也许是因为日本国内对电驴的争议吧。
但是,没关系,这种小问题是难不倒爱折腾的人们的~ 我就自己动手丰衣足食吧!
Google了一下,发现LS系列的NAS很早就有了,相关的改机方案也有许多,甚至还有专门的改机wiki。总体上有两种方案:保留原有的固件,在此基础上安装新软件;彻底改用第三方固件,和厂商说拜拜。鉴于原厂的固件对OS X Lion新采用的AFP 3.3协议支持良好,我也不是什么改机控,于是就选择了前者。虽然简单,可没想到还是折腾了一下午,期间几乎搜遍了google,就流水账地记录一番吧。
首先,就是要开启sshd服务。虽然都要使用acp_commander.jar,但在LS-VL系列上,传统的方法已经无效了,好在官网给出了详细的指南,照着做就能顺利通过ssh登录了。
登录后,安装mldonkey就可以了,原本以为这步很简单,可实际非常不顺利。我先是按照官网上给出的简单方法,尝试安装现成的预编译包。结果却始终无法启动,经过一番搜索,发现了这篇自行编译mldonkey的指南。立即动手,安装了ipkg和编译工具,配置源代码,开始编译,经过长达1个多小时的编译,总算完成了,结果一运行,出现segmentation fault,再搜索也没找到什么线索,顿时头皮发麻……
没办法,再装上gdb,用backtrace找到了出问题的地方,居然是libcrypto++的问题,又是一阵狂搜,又找到一篇博客,今天运气不是一般好啊~ 照做,运行下面这段命令进行配置和编译
$ CXXFLAGS="-DCRYPTOPP_DISABLE_ASM" ./confgiure ... $ make
又经过漫长的编译,终于启动了mlnet!
服务器启动后,接下来就好办了,打开浏览器,对设置稍作调整就完成了。






