2007-01-29

A boring MSDN webcast

Note: This artical is written in Chinese.


今天看了微软开发合作部的“互联网策略资深顾问”王洪超主讲的MSDN webcast《Gadget开发简述》视频。老实说,整个讲座技术含量很低,基本上是浪费我的时间。

技术含量低,可能因为这是一项较新的技术,也资料匮乏(Gadget参考是我看到过的最差的MSDN文档),且老王估计不是这方面专长,又或者是其讲座受众本身定位就是很低……

老王的口齿不清,这是先天不足,也罢了。但是,整个讲座废话连篇,演讲水准也超差,就令我对老王这个MVP甚感失望。倒是那个黄继佳配合的还算ok。也许老王本身就口才较差,专长技术……问题是这个讲座又毫无技术含量。

相比较而言,Microsoft UK的Developer & Platform Group的Deniel Moth所做的Vista:Sidebar Gadgets视频讲演,虽然也相当简单,但至少step by step的条理清楚。

BTW,指出老王的两个问题:

第一,他代码中创建xmlhttprequest的方式不好。首先应该利用IE7的native xmlhttprequest支持,而不是创建ActiveX控件XMLHTTP;其次读取xml dom直接用responseXML属性即可,读取requestText来创建XMLDOM完全是画蛇添足。

第二,他说调试困难。这说明他对Gadget的开发经验不足(当然,也拜微软糟糕的文档所赐)。因为有System.Debug.outputString方法,所以log基本没有问题。而且修改刷新也不需要关闭sidebar,只需要reload即可(虽然由于微软的bug,不能直接调用location.reload,但是可以用location.href = location.href的trick)。

2007-01-26

About OEM deployment of Vista Sidebar Gadget

Note: This artical is written in Chinese.


关于gadget的安装,目前总结有以下几种安装方式:

  1. 直接复制到用户目录下(%LOCALAPPDATA%\Microsoft\Windows Sidebar\Gadgets\),这种方式下,只有该用户可以看到该gadget。根据我的同事的试验,这种方式存在一个潜在的问题:如果安装程序请求了管理员权限,可能取得的用户目录将不是该用户的目录,而是该管理员的目录,这导致该用户无法看到该gadget。
  2. 打包成.gadget后,本地运行,会以对话框提示用户该gadget的来源和数字签名等信息,询问是否安装,这种方式的优点是,会直接安装到用户的运行列表中,而不像其他方式那样还需要用户自行加入sidebar,安装后的目录同第一种方式。
  3. 复制到共享gadget目录下(%ProgramFiles%\Windows Sidebar\Shared Gadgets),这种方式估计是微软指定的安放OEM所带gadget的方式,所有用户都可以看到gadget,但有两个缺点,一个是用户删除该gadget后,并没有真正删除该gadget,而是放入了SkipList中,该用户以后将无法看到该gadget,重新安装也没有用,只有关闭sidebar进程后修改配置文件才行但可到sidebar属性中选择“恢复Windows自带小工具”来恢复;另一个是用户没有共享gadget目录下的写权限,gadget程序的功能受到了一定限制(具体还需要更多测试)。

上述3种方式各有特点也各存在一些问题,我还会做进一步的测试,找到一个最佳方式。

1月28日更新:

可通过以下命令行指令修改权限:

icacls "%ProgramFiles%\Windows Sidebar\Shared Gadgets\MyGadget" /grant Users:(F)
icacls "%ProgramFiles%\Windows Sidebar\Shared Gadgets\MyGadget" /grant Users:(IO)(OI)(CI)(F)

注意,这需要你对MyGadget目录具有充分权限,例如使用管理员帐号操作。

2007-01-07

I just wanna commit nothing

A good article: if u don't want window to be opened, do not post "don't open me" on the window, just remove the handle of the window.

But the other example is questionable. The author suggest that disable the "commit my comments" button if the user hasn't entered any word. But it maybe make some users think comments is not allowed here. It's not like the "save" button, which should be disabled if nothing changed, there is subtle diffence which hard to express.

I understand the author don't like the popup alert dialog, so do I. A common way replace alert, is inserting the hint in red bold font below the textarea, or fadein/fadeout the messages on top of the page. The latter becomes very popular in recent web 2.0 sites.

In my opinion, popup dialog is not always evil. But the word is. "Please enter your comments" is too genteel and so boring. Let's say "Hey guy, you didn't enter anything!" with two choice: "Oops, it's a misplay..." and "I just wanna commit nothing!"