
四川发生罕见的特大地震,最早得到的是从twitter上传来的消息,很多朋友纷纷表示有地震,很快有人在USGS上找到了实时的数据,虽然后来地震等级经过修正,但是数据和图片很及时的呈现给关心这次地震的人。然而国内的各个地震相关的网站几乎没有一个可以打开,中国地震局,中国地震台网中心,中国地震信息网,到目前为止中国地震信息网我仍然打不开,相比USGS,马上能感觉到巨大的差距,就算是中国地震局可以访问后,会发现除了几条消息外,得不到任何有用的信息。有人说,这次地震中第一个倒下就是这些地震信息网站。在人们最需要得到这些信息的时候,却得不到任何信息。可气的是,北京有余震的消息还是出自地震局的网站。
前些年有人说中国的地震预报达到了很高的水平,其实地震预报是非常难以预测的,而且就算是预测准确,也很难向公众告知,记得高中的时候,我这里就有过一次,消息满天飞,人心惶惶,最后不了了之,一年后,附近地区发生了5级左右的地震。所以说,地震预报只是可遇而不可求的事情。但是对于发生时和发生后,可靠可用的信息是人们及其需要的,然而越是这样的时候,越是没法得到准确的信息。不得不一次次的刷新着USGS的页面,一次次的余震袭来,让人心酸心疼。
写到这时死亡人数已经上升到8000+,而且还在快速上升中。我们这些无法直接帮助灾民的人只好内心祈祷,希望还在废墟中的人要坚强的挺住。
Twitter官方的Flash代码是不符合XHTML规则的,不但使用了<embed>而且还使用了&作为flashvar传递信息的连接符,所以多导致30多个错误。在网上搜了不少,有Twitter旧的Flash Badge更改的例子,但是没有新的带朋友更新的Badge修改的例子,研究了一番,试了很多遍之后,总算是通过的XHTML的认证。我不是这方面的专家,只能靠一次又一次的尝试来通过这个验证。
使用Twitter官方的badge生成器代码是这样的:
<div style=”width:200px;text-align:center”>
<embed src=”http://static.twitter.com/flash/twitter_timeline_badge.swf” flashvars=”user_id=2*****1&color1=0xCEFFF8&color2=0xAAE1E2&textColor1=0×4A396D&textColor2=0xBA0909&backgroundColor=0xEFE0D5&textSize=11” width=”180″ height=”400″ quality=”high” name=”twitter_timeline_badge” align=”middle” type=”application/x-shockwave-flash” allowScriptAccess=”always” type=”application/x-shockwave-flash” pluginspage=”http://www.adobe.com/go/getflashplayer”></embed><br>
<a style=”font-size: 10px; color: #0xBA0909; text-decoration: none” href=”http://static.twitter.com/icebenny”><img src=”http://static.twitter.com/images/twitter_bubble_logo.gif” border=”0″ /></a></div>
*注user_id为个人的id,中间5位用”*”代替了。其中的宽度和颜色都做了修改。
其 中红色部分是无法通过验证的,最大的问题就是<embed>和flashvars的部分问题最多。<embed>要 用<object>替代,而flashvars的值当中的”&”也是不能用的。<br>和<img>是比较 弱智的问题了,在w3c验证中根据提示改下就可以了,最后得到的代码为:
<div><object type=”application/x-shockwave-flash” data=”http://twitter.com/flash/twitter_timeline_badge.swf” width=”180″ height=”400″ >
<param name=”flashvars” value=”user_id=2*****1&color1=0xCEFFF8&color2=0xAAE1E2&textColor1=0×4A396D&textColor2=0xBA0909&backgroundColor=0xEFE0D5&textSize=11” />
<param name=”movie” value=”http://twitter.com/flash/twitter_timeline_badge.swf” /></object><br />
<center><a style=”font-size: 10px; color: #0xBA0909; text-decoration: none” href=”http://static.twitter.com/icebenny”><img src=”http://static.twitter.com/images/twitter_bubble_logo.gif” border=”0″ alt=”twitter” /></a></center></div>
<div class=”PT”></div>
要注意的是其中的淡紫色的部分和绿色的部分,要根据原始的代码进行调整。而下面的图片因为失去了居中的对应关系,我用了<center>其实也不是好的办法,还望高人指教。
这样修改后就可以通过w3c的验证了。


刚刚从Webleon那里看到,Google reader提供了Google Reader Notes的功能,虽然很小但是却很有用。之前我都是用Del.icio.us来分享书签的,因为Google reader的分享功能只能在Reader里面用,对于之外的网站没办法使用。但是Notes似乎改变了这些,支持从浏览器地址直接收录书签的功能,而且我的Rss Feed使用的是Feedsky的合并功能,但是Feedsky只能合并一个,del.icio.us中收录的东西一直没有办法收录进来,有了这个小button似乎就都没有问题了。
昨天写道关于不支持Rss输入的网站,可以自制Rss的部分,但是Ponyfish的功能实在是太弱了,只能通过URL的辨别来生成Rss,如果对于URL不规则的网站就没有办法了。在昨天提到的介绍文章里面提到了一个网站,Feed43,进去试了试,发现很好但是很难用。Feed43抓取的不只是post的URL,而是整个页面的html代码,然后通过里面的规则过滤,得到输出的函数,再生成的Feed的。虽然复杂,但是却更加容易自定义,这里仅对本blog进行测试。
点击Create your own feed后,系统自动分配你个feed生成页面和feed地址,第一步输入源页面地址。还可以输入字符编码,可惜不支持GB的中文编码,默认的示UTF-8的。reload之后,Feed43抓取整个页面的html,接着就要定义规则了,这个需要你有点html代码的知识。看下抓取的代码,可以发现每个post其实是有规律的,哪怕是使用最笨拙的表格套表格形式的html,也是有规律的。对于我的blog而言,一段post的代码一般是这样的:
<div class=”PostHead”>
<h1><a title=”Permanent Link to [文章标题]” href=”[文章链接]” rel=”bookmark”>[文章标题]</a></h1>
<ul>
<li class=”PostAuthor”>[作者]</li>
<li class=”PostCateg”>Filed under: <a href=”[分类链接]” title=”View all posts in [文章分类]” rel=”category”>[文章分类]</a></li>
</ul>
</div>
<small class=”PostTime”><strong>Saturday</strong><br />[文章发布时间]</small>
<div class=”PostContent”>
[文章内容]
</div>
<div class=”PostDet”>
<ul><li class=”PostCom”><a href=”[评论链接]” title=”Comment on [文章内容]“>[评论数量]</a></li></ul></div>
</div>
之后我们需要定义要提取的部分,Feed43提供两个可用的函数{*}通配符和{%}提取函数,把不需要的部分用{*}替换的,把需要导出的部分用{%}代替,然后进行过滤。但是为了每个函数都可以调用,{}前后都必须有字段才能过滤。比如上面这段,因为支取文章链接、文章标题和文章内容三段,就可以用用这个规则:
<div class=”PostHead”>{*}href=”{%}” rel=”bookmark”>{%}</a>{*}<div class=”PostContent”>{%}</div>
提取后得到三个结果:
{%1} = [文章链接]
{%2} = [文章标题]
{%3} = [文章内容]
接下来要定义输出的feed了,标题链接和简介都比较容易,主要是Rss item这段需要把上面的结果放到里面,特别是文章内容模版这个部分,有的时候抓取可能忽略了部分html代码段,这内容模版里面需要补上。好在这个blog还是比较规则的,不需要补什么,只要把{%3}放在里面就可以了。
最后就得到了feed。Feed43有多个方案,免费方案里规定每隔6个小时抓取一次源页面,而且源页面的大小不能超过100KB,所以有可能抓取不成。如果注册,还可以对已经生成feed进行管理。
不过,这真是件累人的事。
虽然Rss Day已经过去了,但是Rss这个话题还没有结束。相当多的人还不了解Rss是什么,怎么使用,能带来多少好处,节约多少时间,更别说玩转Rss了。相当多的人还只是停留在看门户网站的阶段,认为blog还只是日记本的阶段。说blog是媒体或许现在还不成气候(至少中文环境里),但是blog却在Rss推广上起到了相当大的作用。只是对于普通用户的Rss门槛还在,对于高墙内的我们来说Rss变成了相当难绕的坎。今天在尝试一个新的离线Rss阅读器的时候,还真是折腾了好久。好在互联网已经不是中心化的传播工具了,有各种各样的工具帮助我们使用这些广泛存在的Rss了。
1)不支持Rss输出的网站

到目前为止,还有相当多的网站不支持Rss输出,这点对国内的新闻网站尤甚,也包括很多想要吸引流量的,没有开放心态的网站。就跟很多论坛一样,不注册就无法阅读或者下载一样。把html转换成可用的rss工具可以帮我们制作的Rss,有兴趣的人可以从链接查看尝试,这里仅用Ponyfish为例来介绍这种方法。Ponyfish可以不用注册就使用,当然也可以注册来管理已经生成的Rss。将要生成Rss的网站地址(url)复制粘贴到生成页面,Ponyfish会自动抓取页面,在可视化的页面里面,需要点取至少两个Post(主题)的链接,以便生成抓取规则,提交后还会出现可选对话框让你来更改规则:

从上面的图可以看到,其实一般的网站发布内容的url其实都是有一定规则的,这个也就是生成Rss服务的基础,这个时候需要对url的各段参数进行修改,因为自动抓取的post数量不足以生成足够的规则,比如例子中的规则,如果使用以后只能生成2008年5月1日到9日的post的Rss,所以需要点击各个可能会变化的字段,用通配符“*”来代替,这样就可以生成一个比较稳定的Rss了。当然如果源网站发生变化,那么就需要重新生成了。也可能因为url很短或者没有规则,这个方法就无效了。那么可以尝试用其它的生成器来完成这个任务,只能祝您good luck了。
2)被墙的Rss Feed
很遗憾Feedburner无法访问,相当多优秀的blog都是使用这个最流行的Feed烧制服务,以前也有很多中文blog使用这个服务,被墙后转向了Feedsky,但是也不乏使用者。除此之外还有不少网站自身的Rss也无法访问,“墙”相当邪恶的做到了这点,这样的feed也可以用上面的方法,但是有些笨拙,可以找其它的Feed烧制网站(墙外的)来做重新烧制,我没有测试Feedsky是否可以操作,从理论上讲Feedsky也在墙内,应该无法办到。另外介绍两个网站:5z5和feedpass,至少目前这两个网站还没有被屏蔽,以后也难说,但是有一点可以确定的是越冷门的烧制网站越安全,有问题多google。
3)摘要输出和全文输出
网站经营者往往想吸引更多的流量来实现盈利,而Rss消费者却希望在自己的阅读器里看到更加完整的内容,而不用开太多的窗口。这个矛盾是一直存在的,读者只能尽力跟站方沟通要求实现全文Rss输出别无他法。但是很多blog是托管在不同的bsp的,比如不支持全文Rss输出的牛博上的韩寒,在sina上却是可以全文输出(Rss)的。还是只能说good luck吧,韩寒的两个blog上经常是不同步的。在这里,还是再一次想跟牛博说,早些支持全文Rss吧,其实这样对大家都好,从阅读器来的流量往往是坚定的用户,对这些人好些没什么坏处。
4)离线还是在线阅读器
1和2介绍的这些方法其实在在线阅读器都可以很方便的解决,所以推荐使用的还是在线阅读器,但是你的网络连接不是实时的,那么还是离线阅读器来得方便。
在线阅读器尽量选择有https的google reader和bloglines,https安全连接不但能保证你到服务器段之间的加密连接,保证你的安全,还可以绕过“墙”访问到被“墙”的内容。google reader要更好一点,而且可以阅读朋友分享的内容,但是有些人的网络连接中的问题,可能访问google有问题,那么bloglines还是不错的。
还不满意?那试试Newsgator吧,它不但有在线阅读版本,也有离线版本,更加有意思的是两个版本可以互相同步。这样就不会因为错过消息而懊恼了,唯一的不足就是在同步的时候你可能无事可做。
至于其它离线阅读器,要考虑自己的喜好了,离线的阅读器和网页还是有很多区别,可以实现更好的特效更多的功能,比如今天我为了折腾这些Feed而尝试的Time,界面漂亮很多,动态效果也好得多,这是网页无法实现的。只是这个时候面对屏蔽了的feed只能不断的自己想办法了。
关于Feed的话题还能聊好多,比如xFruits,让你实现更多的Rss应用。问题是你是否需要这些呢?对我来讲,能看到自己想看的feed就够了,花去这么多时间在弄这些Feed都是因为“墙”的存在,“墙”真是人倒退的体现。可能说到这里还有人不知道墙是什么,那就补补课吧。