MobileMe试用之旅-页面技术篇

这是断断续续的一点笔记,仅供参考。没有系统思考,而且也虎头蛇尾了,请见谅。

MobileMe的HTML很干净,但是并非遵循渐进式增强的原则,没有保证所有的标签都基于语义来选择。在登陆页面的地方,发现它们使用了Webkit支持的css transition属性,所以像input field高亮的过程有渐量的过程,非常优雅。它的登陆表单的提交按钮是个link,使用onclick事件提交,这似乎并非是很好的设计。

首页的细节:使用Javascript回写了浏览器类型和平台类型到body上面,更加精确的实现因不同平台而异的css样式,而且这样css rule的可读性要好于trick。现在一个严重的问题就是Safari和Firefox的不同版本有的时候也有bug,而且它们又不像IE6/7有相对可靠的css trick来实现区分,所以apple的做法还是很实用的。apple的设计实际上也是基于像素的,在增大浏览器字体以后却依然没有影响布局,这主要依赖于目前比较先进的浏览器都基于比例进行放大,使用px依然可以保证完美的放大渲染。IE的低版本当然没有这么智能,但是谁在乎呢?在乎的人都转现代浏览器了。

me.com登陆以后进入的是邮箱,界面非常清爽,左上角是产品的切换,中间是邮箱的操作,右侧是搜索和退出,这样的对齐很清晰。但是作为邮件产品的功能按钮设计在中间是否操作起来不是很方便呢?按钮都是使用了复杂的html结构来实现,是以切图和显示效果为驱动的,阴影和圆角都是基于图片,这样可能是为了兼容windows平台而考虑。这样的实现在大型互联网应用中非常常见,因为兼容性往往是使用人数众多的应用的一个重点。Apple所做的css sprites是比较震撼的,其中3个sprites非常之复杂,它们明显的减少了image的请求次数。如此规模的使用sprites,在布局里面以px为单位就容易理解了,因为如果不使用px而是使用相对单位如%或者em,那么在缩放的时候经常会破坏你精心制作的sprites。

修改产品设置,下拉菜单和mac里面的渲染效果很一致,弹出的下拉菜单三面有阴影,4个圆角,一共使用了8个元素通过绝对定位来实现。这样在IE里面很有可能出现奇数高度的下拉框绝对定位产生1像素偏差的bug,苹果应该是通过js修正了。菜单本身使用UL,还是靠谱的。

产品修改的面板也和Mac的非常一致,是一个模态窗,使用Tab切换选项。效果和OSX的面板非常一致。不过有一个细节需要注意:OSX的配置面板有一个非常帮的交互设计,那就是面板的大小会根据内容的多少进行剪裁,然后实现动态的改变大小,这个对形成视觉对齐非常有意义,我一直认为这是一个非常优雅的解决方案(比windos的那种选项卡设计好了很多)。可是在Web上MobileMe的这个模态窗是固定大小的,切换内容比较小的Tab时它并不会缩小。

Mail设置提供的功能不多,但是很贴心,比如它可以选择字典的语言(8种欧洲语言,纠错使用)。是否默认显示Bcc域这个设计也很体现Mail的商务特性(因为一些人的职责就是成天Bcc,所以他们肯定喜欢这个设置)。

这两天试用下来发现MobileMe的页面还是有不少小bug的,Firefox下没有Safari完美,无可厚非,不过这样的一个产品,走的越远,它维持与操作系统上面原生软件的体验一致所付出的代价就会越高。不知道SproutCore能不能走的更好。失去兴趣进一步研究了,Apple比较尊重先进的Web特性的实现,也绕过了过多的肮脏patch,基本上都用了比较优雅的方案解决,可是它不支持IE的这个决定风险还是很大的。可是我喜欢这样,让浏览器成为Webkit和Geoko的天下,让那些微软操作系统早点走出历史舞台吧。

改变Mac的分区表格式

给我的Macbook pro换了一个320G的硬盘,深感给MB433换硬盘真是很麻烦,因为要拆掉上盖还有固定硬盘的六角螺丝。换掉硬盘恢复系统的时候脑残了一次,选择分区表格式的时候误选了Apple Partition格式。其实Leopard支持3种分区格式:

  1. GUID:这个是为了解决Mbr分区表无法处理现在的2T+硬盘而出现的标准分区表格式,它是Intel发布的EFI规范中的一部分。GNU的Parted很早就支持了GUID分区格式。Intel平台的苹果默认使用的是EFI,所以就搭配使用了GUID分区格式(GPT)。Leopard+Intel Mac就应该使用这个分区格式。
  2. Apple partition:苹果的PowerPC平台的Mac用的不是BIOS,默认使用的就是Apple partition,它可以很好的和GUID共存(不过不是GUID,而是内嵌了一个GUID),所以Leopard依然可以使用Apple partition启动。但是只推荐PowerPC平台的Mac使用。
  3. MBR:这个是BIOS规范的一部分,是PC使用最广泛的分区格式。我不确定Mac可以使用MBR启动……应该是需要Patch loader的。

我当时选择了Apple partition,leopard也支持它,看似没有问题。可是一周前正巧碰到Macbook的SMC firmware update,结果升级的时候告知无法在Apple partition上面进行固件升级。我去阅读了上面的资料才知道自己犯了一个很傻的错误。我本以为有啥工具可以帮助我简单解决问题,可是查看了Apple的帮助才知道解决方法只有两种:

  1. 使用Fireware的硬盘,并且上面要有GPT分区的leopard引导,在这个外置系统上面安装SMC firmware update。
  2. 把系统备份,使用GPT分区安装系统并重新恢复。

好惨痛。

那就还是只可以用经典方法恢复系统了,我是这样做的。

  1. 安装SuperDuper! ,然后启动它把系统做一个完全镜像文件到外置硬盘(我使用的是Fireware硬盘,当然USB的也可以)。这个过程比较慢,我的200G数据的硬盘大概要6个小时,最后生成一个Your_Mac_Harddisk_Name.sparseimage。
  2. 使用Leopard安装盘启动。我的Macbook pro产生了一个小插曲,先是读不出双面的Leopard安装盘(后来发现是光驱突然不行了),不过经过10+的努力还是启动了,可惜看到了黑屏。黑屏是因为LCD灯管没有点亮造成的,我不知道什么原因,也许和我使用了Apple partition有关,或者是我的MBP的bug吧。我用一个很亮的台灯照LCD,经过背面的反光,对比度会提高很多,屏幕上的内容就可以辨认了。所以如果遇到无背光的黑屏,可以使用灯管这个Trick来解决。记得插上你的外置硬盘,启动系统以后启动磁盘工具Disk utility。
  3. 在磁盘工具选择File-open你的Your_Mac_Harddisk_Name.sparseimage。然后磁盘镜像会载入。重新分区,记得选择分区下面的哪个Options,然后选择GUID Partition table。分区完成以后选择新建的那个分区,然后选择恢复restore,将刚才载入的磁盘托到源那里,而新格式化的分区托到目标那里。然后开始恢复。这个过程大概也需要6-8个小时,正好一个晚上。
  4. 早上醒来的时候看到OK了,重新启动系统就可以运行SMC firmware update了。

教训就是为了可以升级MBP的固件,一定要使用GUID,不过像我这样犯错误的朋友应该很少吧。但是Anyway,结绳记事。SuperDuper的备份实际上是比Time Machine更适合恢复系统的,注册以后支持增量备份,基本上是Time Machine的很好替代品了(不一样的是Time Machine是个版本控制系统,给你很多快照,SuperDuper是生成最新镜像)。谢谢SuperDuper!

blog服务器迁移到linode

张磊同学推荐了linode,我已经垂涎很久了。鉴于最近很强大的GFW表现,还有哥们nicholas的服务器已经down了2个月有余,所以决定还是迁移我的服务器。因为换了VPS,所以域名指向就比较自由了。现在决定使用http://tin.zztin.com指向我的博客,而http://zz.zztin.com是我老婆的博客。下面我会想一想还可以做些什么,肯定会很有趣的。

不过比较不爽是昨天选择linode的location的时候已经没有Fremount机房了,那个机房在加州按理说会快一些。在没有做仔细调查的情况下我看了地图就选择了离纽约比较近的Neward机房(Newark, NJ, USA),完全是非理性思考,我以为美国也是大城市网络条件好一些。一天部署下来我发现这个机房的最大问题是延迟很严重,这样它就不适合做socks代理了,失去了一点优势。

今早本来想提ticket看能否换机房,搜索了一下才发现他们的论坛里面有一个测试文件的帖子,我就手动测试了一下速度,基于公司的网通网络。

  1. Fremount.linode.com 224K/s ping 230ms
  2. Dallas.linode.com 42K/s ping 255ms
  3. Atalanta.linode.com 423K/s ping 260ms
  4. Newark.linode.com 594K/s ping 280ms-300ms

实际看来我的推测没错,Fremount的ping最好(也不算好),而我选的Newark最快……所以先忍几天观察一下吧。

09年对基于标准的前端技术的小预测

去年我在lifesinger同学的blog上反驳他对JQuery的悲观预期,现在他也承认了JQuery的巨大成功。其实从思路上整理一下,是因为渐进式增强这个概念中的很多最佳实践都非常方便的被JQuery+JQuery UI解决了,形成了一套非常好的语义驱动的DSL,所以这两个技术爆发以后带来的就是所有开发者的关注!DHH一年多前预测HTML、CSS、Javascript的中兴,浏览器本来是关键障碍,但是随着08年末的内嵌WebKit的浏览器在掌上设备的普及,最终催生了Palm pre里面的Web OS。如果Flash没有迅速抓住机会,那么浏览器这个大一些的插件也许就会真的把基于标准的RIA技术推向真正的普及。

计算一下备份的成本

现在1.5T硬盘的价格是899(以前几日购入的价格),现在的市场价可能已经可以接近800。它格式化后容量是1.36TB(以我格式化为Mac使用的HFS+计算)。1.36TB应该等于1392GB。1GB的价格是899/1392 = 0.6458(元/GB)。目前DVD盘片,三菱的50P桶装盘片价格是95,而威宝(三菱子品牌)的价格是75,太阳锈电的盘片已经买不到了(按理说价格更高一些),这样我们可以按照居中的80元一桶基本靠谱的DVD+R盘片(50P)。我这里使用每张盘片4.25GB计算(可以刻录4.3xG,不过个人习惯是小于4.3G,而且由于文件大小不一,经常会有浪费,所以这种计算这理想个值),那么1GB的价格是80 / 4.25 / 50 = 0.3765 (元/GB)。这样计算的话两种存储方式的价格在一个数量级。

作为数据存储,以前我的习惯是重要的盘片刻两张,而且使用两种不同的盘片品牌(因为它们不同批次的衰老曲线完全不同,我遇到过很多批次的DVD盘片会在几个月后出现大量数据坏块),这样存储价格就要翻番。而硬盘存储也会遇到同样的问题,我们一般会使用Raid解决。如果使用简单的Raid 1或者JBOD则也同样是存储成本翻番,如果使用Raid5的话(3+1,利用率62%,则成本会好一些),但是加上支持Raid的设备的话Raid 5可能比翻番还要贵一些(Raid 5控制器比较贵,因为基本上只能见到硬Raid 5)。这段考虑的问题基本上不会对两者的对比产生太大影响,但是证明两者如果要相对于自己来说保证它们的可靠性要花费的成本都基本上要翻番。

但是我们这里要对比另外一个成本。使用成本。由于DVD刻录无法无人值守,所以时间成本非常高。在工作以后,我们的剩余时间很少,时间就更加宝贵。我观察到一个现象,就是我刻录的光盘大都出现在我的高中后2年(99-2000)还有大学4年与研究生的前一年半(2000-2006)中。后来刻盘的数量就直线下降了,大部分数据都留在了硬盘里面。主要就是没有那么多时间整理数据并刻盘,一般来说刻录只占准备时间的1/4,另外1/4可能在寻找刻盘的资源(如电影、软件等),2/4的时间在整理和享受这些资源,最后的1/4是刻盘的时间。但是由于把数据切分为适合刻录的容量是很费时间和精力的,而这部分又没有直接的经济价值,所以这个浪费是一定要想办法消除的。消除的最有效办法是不制造这么多数据,不去备份它们,这个我们另说。主要说是否可以不刻录,而让他们在硬盘上等待被删除或者享受后删除。大部分时间,我遇到的问题是硬盘不够用,所以我的cache就不够用,这些资源经常要被我暂时移动到光盘上,这是我刻盘的主要理由。但是不幸的是,这些盘一般也是最早被我抛弃的。

下面进入正题,由于前面分析的存储成本上硬盘已经不到光盘存储成本的2倍(我的计算结果是1.7倍),而硬盘会极大的缩短备份时间,所以已经完全没有必要选择使用光盘备份了(光盘目前只适合分发)。下面是一些原因:

  1. 光盘的可靠性太差,而硬盘在使用Raid后可靠性会比光盘强很多(这个待我差好资料再讨论)。
  2. 硬盘存储在5年左右后完全可以通过非常廉价的转存来实现升级,而光盘不可以(如果把几百张DVD转存到蓝光是多么的可怕?)。
  3. 硬盘的传输速率比光盘高很多,现在的硬盘在使用SATA的时候可以达到90MB/s以上,而DVD+R在16x下的速度是6分钟刻录4.7GB(也就是0.78G每分钟,合成13.312MB/s)。在使用USB接口的时候硬盘一般也可以达到40MB/s以上的速度,比DVD要快很多很多。而且由于不用切分,硬盘备份是非常简单的。
  4. 硬盘是随机读写设备,而光盘是顺序只读设备。所以硬盘可以方便的管理,删除、移动、重命名,好比写程序的时候可以实现不断的重构。而光盘则只能整张扔掉或者重写(可读写的光盘由于速度和可靠性的原因这里就不讨论了),这是最为讨厌的Bad smell
  5. 体积!1.5TB硬盘在Raid 1以后的体积一般是18cm x 18cm x 18cm。但是这些数据需要326张DVD……326张DVD的体积大概是15cm x 15cm x 58.56cm,这个是不装在盘包里面的价格,装到盘包里面体积会翻翻。那么大概是5倍的体积……
  6. 在搜索的时候,硬盘可以使用操作系统提供的搜索功能。而光盘你需要使用where is it这样的软件来管理,其麻烦程度比使用操作系统的索引查找要高上很多,主要是这会浪费掉你很多宝贵的时间。

经过分析,我决定以后放弃使用光盘存储。光盘存储只会作为暂时的数据分享和重要数据的异地备份。这样我一年就可以节省下相当可观的时间了。而且也可以给我的笔记本剩下几个光驱的钱,何乐而不为?

远程结对编程工具

同一个屋子里面分开进行Pair Programming,在熟悉以后我们就可以进行远程Pair。推荐阅读Every Day Scripting With Ruby的作者Brian Marick的这篇博客“Screen Pairing”。还有两个软件可以帮助我们做远程Pair,Mac下可以使用TeamViewer还有SubEthaEdit,还有可以参考关于协同编辑的wikipedia页面

TeamViewer的原理就是桌面共享,它可以轻松的穿越网络,而且可以免费使用。SubEthaEdit是John Resig的最爱,它还有一个在线的协作版本,原理是两个人可以协同使用的编辑器,互相可以看到修改的内容。这样的工具配合Skype这样的视频IM做远程结对就成为了可能。

1.5T硬盘到手

我的硬盘总是不够用,因为以前有集图的习惯,也有收集音乐的习惯,再加上现在高清电影的泛滥,还有吃空间的TimeMachine,所以硬盘吃紧是没办法的事情。正巧赶上硬盘再一次降价,1.5T的Seagate 7200.11系列单碟375G的硬盘只要899,所以赶快再上一块(小插曲是,老婆说这个算是生日礼物,sigh~)。配合3个月前入手的1T那块,基本解决现在的硬盘不够的问题了。

我家两块外置硬盘,一块被命名为DeepForrest (1.5T, USB),也就是现在这块。令一块被命名为BlueRay (1T, USB+1394a)。上图:

P1110155.jpg 一块儿到来的还有一个Tp-Link的WL-841N的802.11n路由器,300Mbps的无限连接,评测的数据是可以达到100Mbps也就是我家有线网的速率。

P1110157.jpg 型号是ST31500341AS,就是1500GB空间,375G单碟,4碟装,台式机硬盘。听说CC1G这个固件版本不是很好,我做外置硬盘倒是无所谓。

P1110159.jpg 现在的Seagate使用了和WD一样的反装电路板,两年以来这个技术已经普及了。

P1110162.jpg 装到盒子里面去。我使用的是WD的硬盘盒,实际上是拆机货。WD的外置盒子其实质量很好,没有访问的时候会自动断电休眠,还有个好处就是便宜。

P1110167.jpg控制芯片是目前高端盒子常见的Oxford semiconductors出的OX921S,这个盒子是三个里面最简单的,单USB。

P1110151.jpg 他们叠放在我的桌子上就是这么个效果,就是那个破音箱上面的三个发光的小家伙。这个照片是上周日的,实际上硬盘还不是1.5T的,不过意思是一样的。

现在正在迁移数据中(mv -v)。以前很喜欢玩硬件,常去Q3ACN雷神硬派玩,也经常写评测,但是现在已经没有那个闲心了。但是我依然喜欢玩硬件,我依然对它们充满好奇心。^___^

我的书柜

看到Fenng同学共享了自己的书柜的照片,我也想把我的书柜照个像放上去。

这几年买书也上万了,当然不都是计算机的书,还有很多闲书 P1110170.jpg

经典的技术书籍占了我的书柜的绝大部分区域。还有一些漫画书,大都是大学时代留下来的。 P1110173.jpg

一些放不下的书就随手放在转角的书柜里。 P1110171.jpg

为书花钱大都值得,不过技术书容易过时,处理的时候又舍不得。即使是好书,它也会对你的移动性产生不良的影响,搬家的时候这些东西可是太沉了。

招聘美工的一个评语

我们招聘美工的过程中,有一道题:“一个UI的Hifi prototype,客户感觉系统有些压抑,希望修改一下这个设计”。前面两个面试者我们都让他当场做,可是结果不理想,主要原因是他们不习惯Mac下的Photoshop或者Fireworks。所以第三个面试的时候,我们让她回家试试。结果让我很失望,主要原因是美工的思路不对。她修改了不少细节,修改了几个按钮的设计,加上了水晶的反光,修改了Tab设计,加上了玻璃的风格,可是她无视了对比度过低造成的界面太灰的问题,也无视了排版的一些基本的禁忌(比如一致性)。

我非常认同的一句话是对于美工的日常设计90%都是排版工作。那么我列出我对这个作业的考察点:

  1. 排版调整:突出表现系统的信息架构,起到视觉焦点引导的作用。
  2. 颜色搭配:视觉的调整,改变对系统的整体印象,引导用户使用系统的情绪(紧张、放松、严肃)
  3. 细节调整:也起视觉焦点的引导的作用,帮助用户按照我们的交互设计使用系统。影响用户的潜意识,提升用户对系统质量的认同。

它们的优先级是60%,30%,10%,也就是说排版和颜色最为重要。

这不是一个系统的想法,并不适用于美工的日常工作,我主要强调做这样事情的一个思路,美工需要用自己的工具来引导客户。

重构我的blog

代码重构(Code Refactoring)是一个编程的术语:在保留原有的功能的情况下改变计算机程序代码让其容易被修改为适应变化、增加可读性或者简化结构。这个实践对于产生高质量程序非常重要,而且这种想法不仅限于编程概念,也完全可以用在生活上。我的blog里面也会经常用到这个词(重构我人生),所以今天我决定就把生活的记录工具blog给重构一下

对于程序员朋友,这里插播一个问题,我发现中文的wikipedia对于代码重构(Code Refactoring)的定义非常的不准确,摘抄如下:

代码重构指对软件代码做任何更动以增加可读性或者简化结构而不影响输出结果。软件重构需要借助工具完成,重构工具能够修改代码同时修改所有引用该代码的地方。在极限编程的方法学中,重构需要单元测试来支持。

为什么呢?因为martin folwer使用的定义和英文wikipedia这个一致:

Code refactoring is the process of changing a computer program’s code to make it amenable to change, improve its readability, or simplify its structure, while preserving its existing functionality.

中文解释里面所说的重构需要借助工具完成支持纯属放屁。而且遗忘了重构的一个目的是为了让代码易于维护那么就没有说明重构的经济意义。所以,大家看看我上面那个翻译如何?一起修改一下我去修改一下wikipedia的条目。

回到我要说的blog重构的话题。我现在的blog使用的是Wordpress,但是再往前推我还在Live SpaceBlogJava写Blog。但是那个时候没有使用Tag来管理blog post,所以都使用了很复杂的分类(Directory),再后来我把Live Space的blog通过MSN Space mover迁移到了现在你阅读的这里,所以那些目录也就都被迁移过来了。

所以多分类Category是我第一个要重构的地方。原因在于分类最早的设计是一个严格的树形结构,也就是分类是一个逐级缩小范围的概念,它适合于自上而下的查找。比较常见的就是传统电子商务网站的目录和网站的树形导航。但是这两年大家发现很多人的阅读习惯并不是这样的,尤其对于blog这样的形式。blog我们分成两种场景来分析分类的使用:

  • 搜索引擎或者链接:这种情况下用户是偶然看到了一篇他感兴趣的文章,那么他下一步会查找相关的主题,这个时候分类会是他第一个寻找的。但是,很少有用户会在乎分类的树形结构,而是对哪个具体的话题感兴趣就点进去。所以最好的方式就是话题和分类一一对应。如果你的blog的话题太多了,那么你一定不会注意到你的分类也太多了,这些噪音会影响用户探索你的blog。所以人们发明了Tag,也就是一个简短的关键词来定义你的一些话题,每个post还可以打多个标签,这个也方便了你自己,不用在给文章分类的时候抓耳挠腮。然后人们使用Tag Cloud这种方式突出你的blog的最重要的关键词(也就是统计使用频率最高的Tag配以较大的字体),它也帮助你了解自己写blog的习惯。那么对于这种场景,Tag Cloud是比Multi-Category(单篇文章多目录)更好的详细管理主题方式。
  • 订阅:平常我们在使用工具订阅blog的feeds的时候我们一般都是按照这个时间序列来阅读,我们会忽略不感兴趣的feed,然后阅读感兴趣的,那么订阅的feeds需要满足这种习惯。不过最常见的订阅方式是订阅全部,这种方式有的时候不太好。比如我们公司有个员工blog聚合服务,我没有加进去,因为我的blog有很多生活的内容,别人肯定并不想阅读那些部分。也就是说不区分主题的feeds输出会让人看到很多不感兴趣的主题。如果你使用了Tag Cloud,它可以区分主题,但是它太多了,没有人会逐个Tag Cloud订阅你的blog,人们希望有一种稍微粗略一些的方式来订阅。我发现的一种最好实践就是按工作/生活的主题区分,对于技术人员也常见技术/非技术的分开,这种分法很粗放,但是却很有效。因为如果我是生活上的朋友我就会关注你非技术的post,而相反如果我是你的同事或者社区里面的朋友,那么我会关心你的话题。所以,这种场景下的一个最佳实践就是让你的blog的分类尽量的简单,2-5个我觉得就可以了。

啰嗦了半天,其实行动很简单。我需要把现在复杂的Category转换为Tags,还有添加新的简单分类“Tech.技术”和“NoneTech.非技术”。在Wordpress里面这个很简单,因为在wordpress里面Tag和Category实际上是同样的东西,但支持不同的显示方式。在wordpress的后台的Manage->Categories下面有一个category to tag converter的链接进去选择你想要转换的Category然后转换一下就OK了。一个简单的操作以后这些Category就都不见了。那么所有的文章就都跑到Uncategoires下面了。我好需要重新做一下分类,这是个体力活……不过我使用了Wordpress的客户端来实现。

那么下一步就是重构blog的下一个话题,选择一个客户端工具来更新你的blog。我试用了ecto和MarsEdit,它们是mac下两个有名的blog客户端,它们对blog的管理功能都差不多,但是编辑方式不一样,其中ecto的编辑器是所见即所得的,而MarsEdit是一个直接写HTML源码然后预览的界面。我对HTML烂熟,所以用MarsEdit没有困难。大家可以根据自己的需求选择,它们都是需要交注册费的。试用客户端的好处就是不用忍受浏览器的崩溃,不用忍受网络闪断造成的提交失败,不用因为写post时间太久而session过期,可以方便的存在本地,可以在离线的方式下修改/添加blog post,这些功能可以帮助你频繁的写blog,而不是每次都需要准备很久来登陆->新建post。我其实已经试用了几天Ecto了,比较满意,但是Ecto的试用版不能选择取回条目的数量(不知道注册以后是否可以?),所以对于修改分类这样的任务来说MarsEdit才可以修改我全部的项目。

在整理blog post的时候,我发现我这里有很多以前留下的Twitter聚合内容,我把它们都删掉了。以前我曾经想把micro blogging(微博客)的内容也放到blog里面,可是我发现有了FriendsFeed这样的工具以后我就不需要用blog来聚合了,这样是一种明显的Bad smell-重复。冰云同学批评过我聚合Twitter,他说的很对,现在我本人也很反感聚合Twitter,有这种行为的人的blog一律退订。

上面说的这些就是今天重构的实践,之前我还做过几个实践:保持只有一个blog服务(不需要同时使用Space和blogjava),如果不满意BSP(Blog service provider),那就自己买空间架一个Wordpress。定时备份你的Blog,并且最好有工具让你的blog可以转移成中立的源文件(如SQL、XML),方便以后迁移,选择BSP也可以以这个为标准。

最后总结一下我提到的重构blog的几个实践:

  • 将复杂的Category转换为Tag,删除多余的Category,使用简单的Category,2-5个为好
  • 使用一个Blog客户端,事半功倍
  • 停止使用Twitter和Google Reader聚合生成blog post的功能,如果需要可以把它们放到你的blog的sidebar上,而不要生成到feeds里面

如果以后还有其它重构行为我还会更新这个post。今天已经好累了 -。。-