2009年1月30日星期五

IE7中ClearType自动关闭的问题

我的系统是Windows XP,装上了微软雅黑并打开ClearType。前些日子更新了IE7之后,很快我就发现,有很多页面(如百度空间)上的雅黑中文显示不正常,发虚,很模糊,而英文却又全是锯齿,总之没法看。

拜了Google大神,都说是IE7默认打开了ClearType导致中文发虚,可我这里的问题明明是ClearType被关了才会这样。小白太多,把Google都淹了,于是只好靠自己。在百度空间上随便找一个页面保存下来,一点一点找,总算是确定了问题所在:“FILTER: none”和“ZOOM: 1”。

有了关键字才好Google。IEBlog上有一篇《Notes on the interaction of ClearType with DXTransforms in IE7》,说是启用了filter就会强制关闭ClearType。IE 透明度失效和 zoom:1 有關?还提及,会出问题的还并不仅仅是ZOOM。

问题找到了,但在IE7内部似乎没办法解决。不过还是有一个曲线救国的法子,那就是用GDI++。GDI++是一个日本人开发的字体渲染工具,借助他可以把Linux下的FreeType2搬到Windows里边用。既然渲染引擎都被换掉,ClearType关不关也就无所谓了。

GDI++日文WIKI上找到并下载gdi0850.zipgdi0869.7z,解到同一个目录,然后用这样的命令启动IE:"gdi++.exe" "C:\Program Files\Internet Explorer\iexplore.exe"

下图中左边的窗口是ClearType被强制关闭的效果,右边是使用GDI++后的效果:

GDI++早已停止开发,但因为其是开源软件,所以有很多修改版,有点乱。有兴趣的话就去拜Google大神吧,这东西会很是需要一番折腾。

用了一段时间IE7,感觉也没有找到值得升级的理由。IE7不比IE6快,增加的功能我也不需要,问题还比IE6多。至于说标准,时至今日IE6还有20%以上市场占有率,有人敢无视?未来会有IE6被淘汰的一天,但显然不是现在。

2009年1月29日星期四

WSH中XMLHttp的怪异表现

参考如下JScript代码:

var xmlhttp = new ActiveXObject("MSXML2.XMLHTTP");
xmlhttp.onreadystatechange = function () {
 WScript.Echo(xmlhttp.readyState);
}
xmlhttp.open("GET", "http://otnth.blogspot.com/", true);
xmlhttp.send();

保存为js文件并用cscript或wscript执行,上述程序输出两次1后退出。如果把open挪到onreadystatechange前面,则只输出一次1后退出。

网上有很多人遇到移步方式下onreadystatechange只执行一次的问题,解决办法是把onreadystatechange写在open前面。但这里的问题似乎没有那么简单,感觉像是Windows Scripting Host脚本宿主未等待onreadystatechange变化就直接退出了,于是我写了如下代码求证:

var xmlhttp = new ActiveXObject("MSXML2.XMLHTTP");
xmlhttp.open("GET", "http://otnth.blogspot.com/", true);
xmlhttp.send();
while (true) {
 var n = xmlhttp.readyState;
 WScript.Echo(n);
 WScript.Sleep(100);
 if (n == 4) break;
}

这次输出了N个1后,直接跳到4。所以,WSH是单线程的?

解决问题的办法也有,即使用WScript.Shell新开一个进程运行所需代码,并通过命令行传递参数:

if (WScript.Arguments.length>0) {
 var xmlhttp = new ActiveXObject("MSXML2.XMLHTTP");
 xmlhttp.open("GET", WScript.Arguments.item(0), false);
 xmlhttp.send();
 WScript.Echo(xmlhttp.status + ' : ' + xmlhttp.statusText);
} else {
 var wsh = new ActiveXObject("WScript.Shell");
 var s = 'http://otnth.blogspot.com/';
 wsh.run('wscript ' + WScript.scriptfullname + ' "' + s + '"');
}

能用,不过看起来很不舒服。另外需要注意的是,命令行参数有长度限制,还要留意引号的问题。

好吧,就这样了。

2009年1月20日星期二

从解码Base64的宏想起

从找到那天起,一直都很爱EmEditor。轻巧快速,完善的正则表达式和多内码支持。除了编辑超大文件时的表现不如UEdit32外,我几乎找不到别的缺点。而且在没有丢失已有优点的前提下,EmEditor也有在一点点变得更好更强大,是个用起来很窝心的编辑器。

好了,工商时间结束。话说最近一次升级到EmEditor v8后发现,以前的Base64解码插件不能用了。正好现在的EmEditor借助Windows Scripting Host(WSH)提供了宏功能,于是想自己写个解码宏试试感觉。

这个宏需要做的有两件事:一、将Base64字符串解码;二、如需要,进行内码转换。

WSH的标准配备Javascript和VBScript都没有直接提供解决这两件事的函数或对象,也没有所谓标准库一说,要用JS或VBS的话就必须找现成的纯实现或自己写。当然,如果喜欢Perl、PHP、Python、Ruby等等等,WSH其实也能够支持。

这两种法子都不好。Base64肯定有成熟的纯实现,内码转换却是个很复杂的问题,UTF-8至GBK或许OK,Big5至GBK呢?但如果用Ruby一类的语言,写出来的宏就只有自己用了,普通人哪会去装个Ruby解释器?

其实,所谓的“完美”解决办法是有的,而且看起来很简洁,很清晰:

#title = "Base64Decode"
#tooltip = "Decode Selected Base64 String."

function Base64DecodeText(Base64Str, sCharset){
 var xml_dom = new ActiveXObject("MSXML2.DOMDocument");
 var tmpNode = xml_dom.createElement("tmpNode");
 tmpNode.dataType = "bin.base64";
 tmpNode.text = Base64Str;

 var ado_stream = new ActiveXObject("ADODB.Stream");
 // Default gb2312
 ado_stream.Charset = (typeof(sCharset) == "undefined") ? "gb2312" : sCharset;
 ado_stream.Type = 1; // 1=adTypeBinary 2=adTypeText
 ado_stream.Open();
 ado_stream.Write(tmpNode.nodeTypedValue);
 ado_stream.Position = 0;
 ado_stream.Type = 2; // 1=adTypeBinary 2=adTypeText
 var str = ado_stream.ReadText(-1); // -1=adReadAll
 ado_stream.Close();

 return str;
}

if (!document.selection.IsEmpty) {
 var s = document.selection.Text;
 //s = Base64DecodeText(s); // gb2312
 s = Base64DecodeText(s, "UTF-8");
 OutputBar.Clear();
 OutputBar.writeln(s);
 OutputBar.Visible = true;
 OutputBar.SetFocus();
} else {
 alert('Select First!');
}

这一小段东西至少说明了一个问题:那些所谓《YY天精通XX语言》的书,纯属胡扯。

2009年1月15日星期四

用手机接收Twitter Replies

本来Twitter只是我用来作为一个自闭宅男自言自语的地方,没事偷着乐而已。可是近来接连被人在那里抓住现行,这下问题就出来了。

先是发现,即使在Notices设置中选择Show me all @ replies,未follow对象@我的消息仍然不会显示在Home Time Line里。继而又发现,没有任何方便的法子获取replies提醒,没email,没im,当然更不会有短信。

要知道,我更新Twitter都是通过叽歪同步的方式,难道我得三不五时用浏览器去访问Twitter @Replies Tab才成?好吧,于是开始折腾。

在经过艰苦卓绝的探索,克服了一系列难关之后,我终于实现了用手机接收Twitter Replies提醒短信的终极目标,完成了一次互联网上的二万五千里长征。

好吧,我不贫了,下面就说具体过程。

据说,过去叽歪和饭否等国内网站,都提供手机短信下行提醒服务。只要想办法弄到Twitter Replies的RSS,通过Feedlr一类的服务广播到帐户A,再用帐户B绑定手机并关注帐户A,就可以达到目的。

只是现在日子不好过,饭否直接取消了短信下行服务,叽歪没取消,可是怎么设置都收不到。还好叽歪支持飞信,通过用帐户B绑定飞信的办法,仍然可以达成目的。

先去叽歪注册两个帐户,Xo和XoJwBot。用Xo绑定飞信帐户,设置获取提醒方式为飞信,并关注XoJwBot,叽歪上的设置就弄好了。如果注重隐私问题,可以将两个帐户都设置为不公开。

然后是想办法获得Twitter Replies RSS。@Replies Tab页最下面有提供RSS连接,可是这个地址需要Auth,所以得这么用:http://[ttUser]:[ttPw]@twitter.com/statuses/replies.rss

接着去Feedlr注册。但在创建广播的时候Feedlr会告诉你,如上地址非法。咋办?如果不想让全世界都知道你的Twitter密码的话,就不要考虑FeedSky一类的法子了,用Yahoo Pipes吧。

Yahoo Pipes用起来不算难,或者说,不算太难。我们还可以顺便在Pipe里把原始RSS中“@User”的部分删掉,以免广播到叽歪时出问题。

最后将Yahoo Pipes输出的RSS用Feedlr广播到叽歪帐户XoJwBot,整个过程就完成了。只要飞信不取消Client离线就发短信的功能,可以干的事还蛮多的,希望这篇东西流传别太广吧。

就为了这么点破事儿,数数注册了几个帐户:一个Twitter、一个Yahoo、一个Feedlr、两个叽歪、一个飞信,还有两个email,还有一部手机和一张中移动的SIM卡……

Update:

出问题乐,收不到短信……

经过排查,问题出在叽歪至飞信的环节。即使我打开了飞信客户端,仍然收不到叽歪发来的信息,从飞信客户端发送更新至叽歪也没反应,看来是叽歪的飞信机器人当掉了。

这么不靠谱,残念……

2009年1月11日星期日

Tips of Chrome

目录

最近一直在用Google Chrome,下面就是我遇到的一些问题及解决方式。这一篇应该会持续更新吧……

如何获知Chrome的更新信息?

Chrome的更新信息都可以在Google Chrome Releases Blog上看到。

有时一些微小更新并不会导致版本号变化,如修正了Hotmail和Yahoo! Mail问题之后的Chrome仍然是1.0.154.46版。如果想及时了解Chrome的更新信息,就订阅吧。

如何下载Chrome的离线安装包?

从Google Chrome主页上只能下载到在线安装包,需要一次部署到多台计算机,或是想制作绿化版Chrome,就会有些麻烦。其实Google是有提供离线安装包的,地址如下:

http://dl.google.com/chrome/install/154.46/chrome_installer.exe

这是当前stable版本的下载地址,154.46是版本号后两位。上哪去知道这两个数字呢?Google Chrome Releases Blog

如何制作可移动版(绿化)Chrome?

将安装文件下载回来,用7-Zip解压缩。Chrome-bin改名成Chrome搬到目的目录。将其中X.X.XXX.X(版本号)子目录下的文件都搬到上级目录,Locales目录下除了en_US和zh_CN都可以删掉。

右键点击chrome.exe,创建快捷方式。再右键选中刚才建立的快捷方式,选属性,在“目标”栏最后添加“--user-data-dir=Profile”就可以了。

如果要把Chrome装U盘里,则建立一个名为Chrome.bat的批处理文件,打开并写入“start chrome.exe --user-data-dir=Profile”。

如何获得未发布的最新版本?

Night Build,或者叫Latest Trunk Build,可以到这里(需翻墙)下载针对Windows编译的最新版本。Chrome有什么新特性肯定会最先在这里出现,但Bug也是,所以最好还是别用。

如何使用用户脚本(Greasemonkey)?

该功能只有v2.0以后才支持,在将相关选项做进UI以前,可以通过在启动参数中添加“--enable-user-scripts”打开该功能。

至于用户脚本的存放位置,2.0.156.1及之前的版本必须放到“C:\scripts”目录下,后续版本可以放在Profile目录的“User Scripts”子目录里。

播放Flash很卡怎么办?

真正解决问题,那得靠Adobe和Google,用户能做的除了等,其实也没多少。

短期内,个人建议是不用Chrome看Flash,有需要时单独开一个IE窗口来处理。删掉系统目录(system32)和plugins下的NPSWF32.dll文件,打开Chrome目录中的chrome_plugins_file.xml并删除Flash相关段落,这样至少可以保证Chrome流畅运行。

在v2.0正式发布以后,通过用户脚本应该也可以解决一部分问题。但考虑到用户脚本的运行机制,具体效果怎么样,还是要等到时候看。我有在v2.0预测试版中尝试过,发现对embed和object标签设置display:none都没作用,就懒得继续折腾了。

如何过滤广告内容?

Google就是一个很大的广告商,对广告过滤不积极很正常,所以Chrome未来也未必会加入官方的广告过滤功能。使用用户脚本进行过滤并非不可能,但是会很麻烦。想要简单方便的广告过滤,恐怕要等Chrome正式加入第三方插件机制以后了。

如果现在就要广告过滤的功能,也可以通过安装第三方程序的方式来实现,实际上在各家浏览器提供自己的广告过滤解决方案之前,就早已有这样的程序存在了。

目前Windows平台上的广告过滤程序所采用的技术大概也就两种,即Winsock和Proxy。前一种的典型代表是Ad Muncher,而后一种则有ProxomitronPrivoxy等。

采用Winsock技术的广告过滤软件不需要对浏览器进行设置,而且这类软件大多是为普通用户开发,易用性方面会更好些。而Proxy类的广告过滤软件其实就是架设在本机的代理服务器,这类软件的功能通常都更为强大,但也更复杂。

我个人用的是Privoxy,因为配置代码看起来比Proxomitron要直观些。而且翻墙需要Tor,Proxomitron又不支持Socks4a的代理,虽然两个可以串起来用。

如果不懂正则表达式、英文比我还烂,就用Ad Muncher吧。

如何修改书签图标?

如Post to Delicious一类的书签,由于其内容只是一段Javascript脚本,通常情况下只会显示为一个蛮难看的图标。想改也不是不成,就是有点麻烦。

(不好意思我懒得截图了,如果看不明白下面这些说的是什么,就别折腾了的好。)

以下内容适用于v1.0.154.42,后续版本或许会有变化。

首先用Chrome访问目的网站,如delicious.com。待页面加载完成,并正确显示了Delicious的图标后,关闭Chrome。

用文本编辑器打开“Profile\Default\Bookmarks”,这里就是Chrome保存书签的地方。文件格式应该是Javascript吧,不过没有可以指定icon的地方。找到想要修改icon的书签,记下url。

Chrome中很多数据,例如Cookies等,都是以Sqlite格式保存的,而历史纪录则是在“Profile\Default\History”文件中。去下载一个SQLite Database Browser,用该程序打开History数据库文件。

点“Browse Data”选项卡,在Table下拉菜单中选中urls表。这里稍微解释一下数据结构,url和title字段不需要多说,favicon_id字段就是用来确定该url用哪一个编号的icon来显示。若favicon_id为0,则使用默认图标。

点包含了表名称的下拉菜单后面的放大镜,字段选url,运算符选contains,在下面的文本框内输入delicious,点Search。窗口下部的列表框这时会显示出url字段中包含delicious的所有纪录,记住纪录的id,例如165,关闭该窗口。

在数据浏览窗口里往下拉,找到第165条纪录。该纪录的favicon_id只要不为0,那就是我们需要的数字了,比如13,记下来。(SQLite Database Browser每次只载入1000条纪录,如果你的历史纪录很多,可能会需要先翻页。)

点New Record(我这里遇到了点问题,不能新建纪录的话,随便把一条不重要的改掉也可以。),将url改为Bookmarks文件中找来的地址,例如:

javascript:(function(){location.href='http://delicious.com/save?url='+encodeURIComponent(window.location.href)+'&title='+encodeURIComponent(document.title)+'&v=5&jump=yes'})()

title随意,Post to Delicious好了,其余的都可以照猫画虎,只要把favicon_id改为刚才找到的13。

保存数据库并关闭,去Chrome里看看吧。

如何查看缓存文件?

直到2.0版Chrome也没有内建缓存查看功能(其实有一个about:cache,可Geek过头了),需要借助第三方程序如ChromeCacheView

2009年1月10日星期六

Chrome 2.0 预测试版发布

1.0正式版发布没多久,2.0 Pre-Beta版就来了。2.0.156.1版下载地址

新闻提到的新功能:

自动完成:
似乎不是谷歌输入框里的那种,倒是有根据历史纪录提示URL的功能,可我也不确定是不是新加的功能。比如访问过我的blog,打个“幺”会提示出访问过的所有Title包括“幺”的地址。
页面缩放:
Ctrl+“+”放大,Ctrl+“-”缩小,Ctrl+“0”还原,还不错,不过只能通过键盘操作。
自动滚动:
按鼠标中建,也就是滚轮,上下左右移动就行,没什么用。
简易切换配置文件:
命令行参数--user-data-dir=PATH的菜单版。
支持Greasemonkey脚本:
早就说要加上的功能,说不定Chrome以后的插件指的就是用户脚本了(跟Opera一样),也是驱使我尝鲜的原因。

Update,发现两个bug,问题还都不小:

  • 中文输入法不能实现光标跟随,起码搜狗拼音不行。
  • HTTPS访问Reader,提示“您到www.google.com的连接未加密”,新浪等BSP的图片无法显示。

其实我以前没留意,1.0.154.42同样提示连接未加密,但看图是没问题的。为了验证,我又找来了latest trunk build(需翻墙),版本号是2.0.157.0(7878)。这次提示信息是对了,但新浪等BSP的图片还是无法显示。

HTTPS页面引用的元素也发送了Referer?或许跟新实现的HTTP协议代码有关吧。反正这个问题不修正,新版Chrome就没法用……

Flash支持似乎有变好一点,不过因为上面提到的两个问题,我也没动力继续试下去了。其实只要支持用户脚本,实现一个类似Flash Block之类的东西也不困难。


当前版本启用用户脚本功能,需要手动添加命令行参数。修改Chrome的快捷方式,在“目标”栏最后添加“ --enable-user-scripts”即可。

用户脚本放哪,我是翻墙跑到Chromium开发者站才知道的。当前版本得放到“C:\scripts”,以后可以放在Profile目录的“User Scripts”子目录里。

正好前几天才念叨,Google Reader不能显示Feed自定义Icon,找来Google Reader: Show Feed Favicons,效果如下:

2009年1月6日星期二

选个Feed来订阅

有一点点矛盾,写Blog的人可能不会喜欢Feed Cache这东西,但读者肯定喜欢。比如我在订阅Feed的时候,一般都会选Cache量最大的地址订阅。

怎么样判断哪个地址的Cache量最大呢?都订阅上然后手工去翻,或者借助服务提供商的API,如果有的话。Google Reader是有的,Bloglines和NewsGator不太清楚,应该也有吧。

我写了一个Google Reader API检查Cache量的小东西,附在文末。在文本框中填入Feed URL,点后面的按钮就可以了,结果会以表格的样式显示在文本框下面。为了图方便,代码用了同步模式获取数据,如果老半天没反应就手动刷新一下页面再试。

Google Reader API目前还没有正式发布,需要先验证,而且还没JSON版本,所以会遇到著名的跨域问题。IE6用户在菜单上选工具、Internet选项,在安全页中点自定义级别,找到其他项下的“通过域访问数据资源”,选提示,确定。这样脚本运行时会出现提示,授权即可。

直接使用IE6的话,先访问Google Reader并登陆,然后在同一个窗口打开本页就可以正常使用了。Maxthon之类的浏览器就随便了,只要登陆过,在新开的选项卡里也可以正常使用。

代码只在IE6中测试过,不好意思。

以下是一些BSP提供的不同Feed地址,列表应该会慢慢增加的吧。其实只要BSP做好转向,啥事都没了。

新浪
http://blog.sina.com.cn/rss/BLOGID.xml
http://blog.sina.com.cn/rss/BLOGNAME.xml
http://blog.sina.com.cn/myblog/index_rss.php?uid=BLOGID
Blogger
http://www.blogger.com/feeds/BLOGID/posts/default
http://BLOGNAME.blogspot.com/feeds/posts/default
http://BLOGNAME.blogspot.com/atom.xml
http://BLOGNAME.blogspot.com/rss.xml
歪酷
http://rss.yculblog.com/BLOGNAME.xml
http://rss.ycool.com/blog/BLOGNAME.xml
BlogCN
http://BLOGNAME.blogcn.com/rss.xml
[404]http://www.blogcn.com/rss.asp?blog=BLOGNAME

2009年1月4日星期日

又到春运时

今年春运计划从1月11号开始,而北京更是根据客流量情况,提前10天进入春运。

每年一到这个时候,售票处、火车站、飞机场都是兵荒马乱的地方。排一、两小时甚至更长时间的队,只是为了问上一句话,而得到的答案很可能却是:“没票了”。那么多那么多人的脸上,除了焦急就是疲惫,一点都看不到回家的喜悦。

小时候的我也曾相当传统,认为回家是天大的事,所以会想尽办法提前动身,或者咬着牙买全价机票。不过人总是会长大的,会有第一次、第二次和更多次。然后我也开始疑惑,为了那一顿饭,值得么?

时至今日,我也没有一个确定的答案。尤其是想到那冗长的队伍,拥挤的人群,污浊的空气,我就会愈加动摇。可是当我坐在家里,想到“家”这个字所代表的这些那些时,我又会觉得,大概是值得吧。

今年的我不需要再经历春运,或许以后也不再需要。不过还是有些我认识的和在乎的人,不会回家,或想回而回不了家。希望他们能过个不错的春节,不要,至少不要太寂寞。

2009年1月1日星期四

Feed迷思

Feed,或者叫RSS,总之就是那玩意儿,我现在的生活已经有点离不开了。每当我又不知道该做什么才好的时候,总会打开Feed阅读器看看有啥新东西了没。

我有不止一台机器,也并非完全没有用别人机器的可能,所以一开始对在线阅读器还是挺有兴趣的。不过在尝试使用了一段时间Bloglines之后,我放弃了。

实在是太慢了。Bloglines服务器在国外,本来就不快,还要再加上等待页面重绘的时间,慢得让我无法忍受。我可是至今都还在用AcdSee 2.4的人,图的就是一个爽利。

之后我遇到了国产的GreatNews离线阅读器,曾一度惊为天人。体积小巧,资源占用不多,而且还能绑定Bloglines帐户。GreatNews+Bloglines的组合,我用了很长一段时间。

然而渐渐的,我也发现了GreatNews的不少缺点。首先是与Bloglines的集成度不高,Clippings只是本地操作,无法反映到Bloglines帐户中,所谓社会化功能就更没有了。更重要的是程序本身也有不少问题。Bloglines端的Feed发生302重定向后,GreatNews中新旧地址会同时存在,不会自动删除旧地址。手动删除也不行,因为Clippings是保存在本地的,删除旧地址会一并将Clippings也删掉。最让人无法接受的是,会莫名其妙自动退出。

GreatNews是免费软件,开发者好像也只有一个,缺乏激励的情况下后续乏力也无可指责。随后我换回了FeedDemon,其时该程序已经被NewsGator收购了。

当时的FeedDemon还是共享软件,不过最近已经免费了。被收购后的FeedDemon与NewsGator配合很好,Feed订阅的双向同步都没有问题,Clippings数据在服务器端也同样有保存。一直到最近,FeedDemon都是我日常使用的首选。

不过FeedDemon也不完美就是了。相比GreatNews,FeedDemon的资源占用要大很多。另外当单一Feed在本地未读Posts达到100条时,FeedDemon将不再继续下载新数据,这和我的使用习惯不符,也觉得FeedDemon太过自作聪明。

如果说对FeedDemon还有什么不满,那就是社会化功能太弱了。通过对比不同用户的订阅进行推荐,我觉得是很棒的功能。而NewsGator这方面的表现很差,不知是中文用户太少,还是别的什么缘故,NewsGator推荐给我的Feed一个我有兴趣的都没有。

于是我只好想起来了,就导出FeedDemon的OPML,再导入Google Reader和鲜果,根据推荐新增几个订阅。一直就这么波澜不惊的将就用着,直到Google推出了自己的浏览器Chrome,让我的心思又活泛起来了。

将Chrome作为日常首选,暂时还没可能。不过Chrome真的很快,无论是启动还是加载GMail、Google Reader,都很快。而且Chrome绑定了Google Gears,只要多等一会儿,在Chrome跑使用了Gears的Reader并不太慢,虽然还是比不了FeedDemon。

要不要换?我也不知道,看看再说吧。

Update

试着用了几天Chrome加Reader的组合,发现问题还不少……

  • Chrome的Flash支持非常糟,会占用大量CPU时间甚至造成卡死。只好删掉系统和plugin目录下的npswf32.dll,不用Chrome看Flash。
  • Reader不使用Feed的自定义Icon,找特定BSP的Feed时很不方便。
  • 当抓取Feed出问题的时候,GUI上没有任何直观的提示,必须打开Feed点show details。
  • 只有Stream一种内容呈现方式,滚动条越往下拉,内存占用越大。
  • Feed和Clipping都用Tag来分类,用起来挺不方便的。我个人的解决办法是用英文Tag分类Feed,用中文Tag做Clipping。
  • Clipping时添加Tag必须手工输入,不能点选。针对英文Tag有自动完成和提示,但用中文Tag就很麻烦。
  • Share和Share with note还不就是一回事,感觉有点啰嗦。
  • FeedDemon针对某些Feed,可以显示已有多少条评论,Reader没这功能。