《设计与生存》读书笔记

题注:本书的标题全名为《设计与生存————一位IT设计管理人员20年的经历与感悟》

很久以前就看到团队藏书里面有一本书叫《设计与生存》,2006年出版,时隔今日已5年,在半年就技术升级的IT世界,已经算是老龄了,所以给我最初的映像是装帧土气、历史久远,“历史久远”绝对不是褒义。不过副标题“一位IT设计管理人员20年的经历与感悟”却是引起了我的注意,人生能有几个二十年呢?于是我拿起这本其貌不扬的书快速地浏览了一下,顿时就被吸引了。看完第一章就对作者马宁伟先生的奋进、执着和思考由衷的敬佩。我立马想到新浪微博上找这个作者,可惜看到的是马先生因为肝癌已经离我们远去,我根据网上的资料推测应该是2011年初。在此以表达对马宁伟先生的缅怀。马先生的简介http://baike.baidu.com/view/1885686.htm
Continue reading

Ubuntu上的包管理:dpkg,apt和aptitude

简述

最开始的时候,Linux上的软件以源代码的方式发布,用户下载源代码包(通常打包为.tar.gz),然后自行编译。

dpkg是Debian软件包管理器的基础,它被伊恩·默多克创建于1993年。dpkg与RPM十分相似,同样被用于安装、卸载和供给和.deb软件包相关的信息。

dpkg本身是一个底层的工具,本身并不能从远程包仓库下载包以及处理包的依赖的关系,基于dpkg的上层工具,如APT,则用于从远程获取软件包以及处理复杂的软件包关系
Continue reading

XMPP中资源/Resource的解释和JID

因为之前写过《使用PyXMPP向GTalk发送消息》一文,最近被一个研究XMPP协议的学妹问到XMPP协议中的资源(Resource)的意思。其实我开始也是一知半解,而且学妹挺诚心的样子,就仔细看了看XMPP协议的文档,这里也感谢这位学妹提供的XMPP协议(RFC3920)的中文版英文版,其实我以前写用pyxmpp的时候也没有仔细看XMPP协议的。

不看不知道,一看吓一跳,原来所谓的Resource和我一直很欣赏的Google Talk的多客户端同时在线的功能有关系,Google Talk就是基于XMPP协议的。
Continue reading

Eclipse JFace Binding/绑定 (3)

前文Eclipse JFace Binding/绑定 (1)”Eclipse JFace Binding/绑定 (2)”分别讲述了JavaBean API的事件机制和Eclipse JFace Binding的SWT控件属性和JavaBean属性的绑定。本文是本系列的最后一篇,讲述JFace中TableViewer、TreeViewer和ListViewer的绑定,由于TableViewer比较有代表性,因此使用TableViewer作为示例。

为什么需要WritableList、WritableSet和WritableMap

在做任何事情之前,先要提出一个为什么,“当你保持一颗好奇的心,当你愿意去问“为什么”,而不是一味得不假思索得接受,你便能够从一件事物的不同角度去审度,你就站得更高,看得更远”——这是 《Sandra Lee: 人生很短,做自己喜欢的事 》中的一句话,我很喜欢。

提出这个问题,潜台词肯定是为什么不能直接用List、Set、Map呢?原因在于集合对象不同于普通对象,集合对象包括了一组对象,这组对象本身的属性改变需要监听自然不必说,对象的添加、删除也是需要监听的,因此Java Collection API中的List、Set和Map就不够用了,更何况几何对象中所包括的那一组对象还必须封装到一个WritableValue对象中,不然元素和GUI的绑定又得失效了。
Continue reading

Eclipse JFace Binding/绑定 (2)

前文《Eclipse JFace Binding/绑定 (1)》介绍了JavaBean的事件机制,Eclipse的绑定利用了这种机制,(据说Eclipse Binding的下一个目标是Pojo对象的双向绑定,利用asm这样的字节码操作库)。

绑定针对对象实例而不是类型

在深入之前,需要明确的是,在Java中绑定永远是针对对象实例的绑定,而不是针对对象类型的绑定。也就是说下面的代码会使model之前注册的监听器失效。 Continue reading

Eclipse JFace Binding/绑定 (1)

binding这个词挺有意思的,中文意译为“绑定”,音译也可以是”绑定“,但是“绑定”这个词看起来又不是像“巴士”这样的词一样属于外来词。我深深地感觉第一个把binding翻译成“绑定”的人当时一定感觉很好。

为什么需要“绑定”

在MVC架构中,View(GUI)上的控件的值来源于Model,用户在View上的操作也需要更新到Model。由于桌面应用程序的实时响应特性,后台服务(如数字校验、根据单价和数量计算总价)对Model的更新也需要实时通过View反馈给用户。
Continue reading

一步一步实现GEF – 9

很长一段时间没有继续写了,很多东西都快忘记了,赶紧捡起来

让你的GEF图元可以拖动和缩放

拖动算是最简单的用户交互吧,不过麻雀虽小,肝胆俱全,不理解其原理和设计思路,很难谈得上去应用,但是要理解这一整套交互模型又有相当的难度,本文虽重在实践,这里也略做介绍。后文中所述图元指EditPart对象实例。
Continue reading