Home | Syndication | Delicious | Douban | Twitter

Archive for March, 2008

“我是你同学呀”

March 26th, 2008

下班路上接到一电话,一个不认识的手机号码,犹豫了一下不想接,可响个没完,接了吧。以下为对话过程,A是对方,B是俺自己。

A: 是 xxx 吗?

B: 是我。请问是哪位?

A: 我是你大学的同班同学 yyy 啊。

B: yyy ?(我使劲地想,就是想不起来这个名字) Hmm… 对不起,我想不起来了,我不记得我们班有你啊。

A: 不记得我了?怎么会呢?你还记不记得 cxf, cfy, wlq ?

(他们三人确实和我一个系,不过 cxf, cfy 是与我一个班,但 wlq 是另一个班的。)

B: 我当然记得了。cxf 在南京、cfy 在上海、wlq 留校了。

A: 对啊,你都记得嘛,怎么就忘了我呢?

B: 对不起,我确实没印象,可能我刚刚没听清楚,要不你再说一遍你的名字?

A: yyy

B: 不好意思,还是没印象。算了,可能是我记性不好了,你找我有什么事儿吗?

A: 也没什么事,我在西安交大读研究生,现在在北京,想约你出来见见。

(这时我心里基本有数了。我们班上共28人,其中就只有4个女生,yyy 这个名字很陌生,另外,我没听说我们班有哪个同学在西安交大读研究生的。)

B: 还是算了吧,实在想不起你的名字。

A: 你就慢慢想吧…

通话完毕。

到家后,赶紧查了一下她的电话 15999728541,搜索结果显示该号码是归属广东东莞的动感地带卡,这个地理位置正好切合该女子的口音——带广东口音的普通话。

很容易我就想到是 5460 泄露了这些资料,心里寒了一下,赶紧登录 5460,将所有资料一股脑儿删了个干净!

现在 Facebook 在美国很火,于是国内很多人和团队也跟进,xiaonei, hainei, yiqi, zhanzuo … 虽然我也很喜欢玩Facebook,但我从来就认为这种模仿 Facebook 的 SNS 服务在当下的中国是做不成功的。今天我与东莞这位“老同学”的对话就是一个小小佐证。就这种社会现状,还 SNS 呢,洗洗睡吧。

Make WinXP Leopard-like

March 22nd, 2008

去年把 Windows XP 系统风格换成 Tiger,到今天为止,用了有一阵子了,感觉还不错,不过最近发现 Leopard 似乎更好看、更酷一点,所以就又换了一下。

deviantART 中可以搜到很多 Leopard 风格。国内还有一个 Nick Zone 苹果模拟专题站,也提供 Leopard 风格主题下载,不仅如此,Nick 还很 nice 地提供一个 all-in-one 安装包,包含了常用的几个模拟软件,比如 RK Launcher, Y'z Shadow, etc. 不过我还是喜欢逐一自己来配置,步骤不变,在前文中有具体描述。

下面说一下如何让 Firefox 看起来像 Leopard 下的 Safari.

第一步,安装 Foxdie (Aqua)

安装 Foxdie (Aqua) 过程很简单,但有以下两点要注意。

1,把下面这句话加到 userContent.css 中:

@import url("userChrome.css");

在 Windows XP 中,这两个 css 文件位于 C:\Documents and Settings\[username]\Application Data\Mozilla\Firefox\Profiles\xxxxxxxx.default\chrome 中,如果这两个文件不存在,就复制该目录下的 userContent-example.cssuserChrome-example.css 来新建就好了。

2,Foxdie 不支持 Tab Mix Plus, 如果你有安装该 extension, 需要换成 Tab Mix Lite CE.

第二步,选用 Leopard subskins

打开 Firefox Add-ons (附加软件)管理器,切换至“主题”标签,右击 Foxdie 条目,选中“关于 Foxdie”就可以打开 Foxdie subskins. 在 Toolbar Buttons 和 Extreme Ways 中均选中 Leopard, 在 The Others 中选中 Bigger Font, iTunes' Scrollbar. 然后重启 Firefox.

Hmm… 看起来与 Safari 很相像了,但似乎还差了点什么…

第三步,安装 Hide Menubar

没错,在 Mac 中通常是没有窗口顶部的 menubar 的,我们可以使用 Hide Menubar 来隐藏。

顺便说一句,如果想要把 Windows 资源管理器、IE 的主菜单条屏蔽掉,你需要使用一些外部工具,比如 Styler.

第四步,安装 Fission (可选)

Safari 的进度条(progress bar)和地址栏(address bar)是合在一起的,我们可以通过 Fission 来实现这个效果。

到此为止就大功告成了,下面是我的 Firefox 效果:

Firefox

顺便放一个我当前的 Windows XP 桌面整体截屏,效果还是不错滴~

ARM Introduction

March 12th, 2008

我打算写一个系列来介绍 ARM,包括概念、实现、开发、以及与现存的管理软件产品的协作使用,预计包括四到五篇文章。不知何时能写完,不管了,今天先开个头,简单绍介绍介先 :)

开始之前要说明的是,本文所介绍的 ARM 并非那个著名的、做 RISC microprocessors 的 ARM 公司,而是由 The Open Group 制定并维护的、用于监控和衡量软件性能的一套开发标准。以下是引自 ARM 官方网站上的定义:

The Application Response Measurement (ARM) standard describes a common method for integrating enterprise applications as manageable entities. The ARM standard allows users to extend their enterprise management tools directly to applications creating a comprehensive end-to-end management capability that includes measuring application availability, application performance, application usage, and end-to-end transaction response time.

当前 ARM 标准最新版本是发布于2007年6月18日的 4.1 version 1,不过因为目前商业或开源实现基本都还只支持到 4.0 version 2,所以本文后面谈论的 ARM 除非特殊标明,均指的是 4.0 version 2.

1. ARM 能解决什么问题

随着软件技术逐渐融入各行各业、工作生活中,除了功能方面的需求,人们也对系统的性能、可靠性等方面的要求也越来越高,会越发关心类似以下问题:

  • 这些 transaction 成功了吗?
  • 是什么原因导致某个 transaction 失败了?
  • 客户体验到的系统响应时间是多少?
  • 在整个交易过程中哪个部分耗时最长?
  • 系统瓶颈在哪里?
  • 如何能提高应用系统的性能?
  • … …

ARM 正是用来回答这些问题的。通过在应用系统中引入 ARM APIs,可以让这些应用程序变得可管理、可监控,再配合相应的管理端系统,就可以捕获、分析运行时数据,回答以上这些问题了。

2. ARM 是如何工作的

Application & ARM interaction
Figure 1. Application - ARM management system interaction

典型的例子是这样的。应用程序在 transaction 开始或结束时呼叫(调用)ARM,接着 agent 收集诸如状态、响应时间、transaction 之间的父子关系等各种数据,并与管理端系统通信。管理端系统会分析得到的数据,并根据用户的要求给出各种数据报表。

3. Java Bindings

包括三个 Java 包:

  • org.opengroup.arm40.transaction 是使用最多的主要包,应用程序在 transaction 开始或结束时调用相应的方法,ARM 实现将会衡量响应时间等。
  • org.opengroup.arm40.tranreport 是一个替代包,除了衡量响应时间,还能形成报告。
  • org.opengroup.arm40.metric 结合 org.opengroup.arm40.transaction 来提供对额外衡量指标的监控。

在这三个包里的都是接口。 

4. ARM 实现

一个 ARM 实现包括两个部分:

  • ARM library 包含对以上三个包中定义的接口的实现类,在运行时它会被载入用户应用中。
  • ARM agent 用来接收和处理 ARM library 发来的数据。根据不同的设计,ARM agent 的差异性会很大,可能是一个简单的 jar library,也可能是一个独立的外部程序组件。我将会在后续文章中介绍具体的 ARM 实现时说明这一区别。