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=0x4A396D&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=”movie” value=”http://twitter.com/flash/twitter_timeline_badge.swf” />

<param name=”flashvars” value=”user_id=2*****1&amp;color1=0xCEFFF8&amp;color2=0xAAE1E2&amp;textColor1=0x4A396D&amp;textColor2=0xBA0909&amp;backgroundColor=0xEFE0D5&amp;textSize=11” />

</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的验证了。

使用Feed43制作Rss Feed

五月 4th, 2008 | Posted by Benny Wen in 长篇小论 - (1 Comments)

昨天写道关于不支持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那道坎

五月 3rd, 2008 | Posted by Benny Wen in 长篇小论 - (0 Comments)

虽然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也在墙内,应该无法办到。另外介绍两个网站:5z5feedpass,至少目前这两个网站还没有被屏蔽,以后也难说,但是有一点可以确定的是越冷门的烧制网站越安全,有问题多google

3)摘要输出和全文输出

网站经营者往往想吸引更多的流量来实现盈利,而Rss消费者却希望在自己的阅读器里看到更加完整的内容,而不用开太多的窗口。这个矛盾是一直存在的,读者只能尽力跟站方沟通要求实现全文Rss输出别无他法。但是很多blog是托管在不同的bsp的,比如不支持全文Rss输出的牛博上的韩寒,在sina上却是可以全文输出(Rss)的。还是只能说good luck吧,韩寒的两个blog上经常是不同步的。在这里,还是再一次想跟牛博说,早些支持全文Rss吧,其实这样对大家都好,从阅读器来的流量往往是坚定的用户,对这些人好些没什么坏处。

4)离线还是在线阅读器

1和2介绍的这些方法其实在在线阅读器都可以很方便的解决,所以推荐使用的还是在线阅读器,但是你的网络连接不是实时的,那么还是离线阅读器来得方便。

在线阅读器尽量选择有https的google readerbloglines,https安全连接不但能保证你到服务器段之间的加密连接,保证你的安全,还可以绕过“墙”访问到被“墙”的内容。google reader要更好一点,而且可以阅读朋友分享的内容,但是有些人的网络连接中的问题,可能访问google有问题,那么bloglines还是不错的。

还不满意?那试试Newsgator吧,它不但有在线阅读版本,也有离线版本,更加有意思的是两个版本可以互相同步。这样就不会因为错过消息而懊恼了,唯一的不足就是在同步的时候你可能无事可做。

至于其它离线阅读器,要考虑自己的喜好了,离线的阅读器和网页还是有很多区别,可以实现更好的特效更多的功能,比如今天我为了折腾这些Feed而尝试的Time,界面漂亮很多,动态效果也好得多,这是网页无法实现的。只是这个时候面对屏蔽了的feed只能不断的自己想办法了。

关于Feed的话题还能聊好多,比如xFruits,让你实现更多的Rss应用。问题是你是否需要这些呢?对我来讲,能看到自己想看的feed就够了,花去这么多时间在弄这些Feed都是因为“墙”的存在,“墙”真是人倒退的体现。可能说到这里还有人不知道墙是什么,那就补补课吧。

免费的收费软件

三月 24th, 2008 | Posted by Benny Wen in 长篇小论 - (0 Comments)

从操作系统到应用软件,可能完全使用合法软件的中国人并不多,一套软件的价格对于中国人来说还是太贵,动则几十甚至上百美金的;二来,版权意识并不浓厚,窃书不是偷书的念头总在闪来闪去。对于用户而言,盗版软件不只是功能和服务的残缺,而且也为病毒和木马作者留下了很多后门,给电脑留下隐患。虽然有很多免费软件存在,但是往往功能和兼容性的局限(如果不是兼容性,可能我只用Mac就够了),让人总是有些犹豫。现实如此,我想也没有必要苛求使用盗版软件的人,(我自己也有相当多的cracked软件在运行着),尽力而已吧。

最近发现个网站Giveaway of the day相当有意思,通过这个网站,每天都会提供一些软件 下载,并且是得到软件作者的授权,合法的下载,安装,使用。因为一直没有实践,所以留到今天实际使用过才介绍。通过该网站下载的软件压缩包里面包含着一个activeate程序,安装前,这个程序会通过网络连接到网站得到授权,因为这些软件都只提供24小时的激活限制,就是说在指定时间里激活并安装软件,就可以合法的免费的得到这个软件。网站在显眼的位置显示着时间限制,过了这村就没这个店了。对于软件作者来说,这个方法其实比那些试用版好得多,多数如我一样使用试用软件的穷人用户,在快到期的时候往往会想尽方法去找破解或者替代品,如果一个软件实在是好用,真是留之无用,弃之可惜(坏念头闪现);而对用版权意识和支付能力的人来说,可能都不会考虑太多直接就购买正版了。留在用户电脑里的软件比被删掉的效果要好得多。

唯一让人抓狂的是那24小时的限制,错过了好软件真是郁闷。最好的方法还是订阅他们的RSS,每天的更新都看得到。或者,像我这样,在你的网站上也挂起他们的ticker:
Giveaway of the Day

对与中国用户来说的好事是,我们时区的位置相当好,白天的时候,基本都是还剩很多激活时间。

Tear Down this Wall

三月 21st, 2008 | Posted by Benny Wen in 长篇小论 - (0 Comments)

远在大洋彼岸的服务器反而没有让我感到安全,这些天来始终没有在这里对高原上的事情发出什么声音,只是在Facebook那个自卑又自负的组里面说了两句,然后悻悻然退组,因为不管如何努力,也无奈于那道看不见的墙。

不知道还会存在多久,一次次心怀希望,一次次失望,没有自尊的人永远也无法坦然面对,是的,他们污蔑了我们,他们造谣了,可是它却把我们和他们割裂开来,哪怕是自己人的抗争都觉得无力。是啊,这样一个自卑的民族怎么可能接受这些刺激呢,每想到这的时候,不免叹气,难道我们真的就走不出去了么?难道我们重要孤独一世么?虽然我始终于乐观,却不能免去自己丝丝担忧。

烟雾散去的时候,那些声音又一次出现了,是的,和久远的过去一样,没有丝毫改变,还是那些陈腐的,无力的,遮遮掩掩的欲说还休。又能怎样呢?孩童时听了多少遍的狼来的寓言告诉我们,狼也许真的来了,只是我们无法相信。数十年来的谎言已经让我们无法真切的,简单的信任。好吧姑且相信吧,可是他们呢?那个组里面的一个同学说,他们并没有我们想象的那样的好,那又怎样?人还是单纯点好,信仰一些东西比怀疑一些东西好,哪怕信仰的东西并不一定是对的。只有自己能够做出判断,只有不受干扰的去思考的时候,才是重要的,至于他们怎么说怎么想,真的重要么?况且,就算费劲力气去解释的时候,却发现自己败在了放羊孩子的前面,而狼早已经得到了它们想得到的东西。你说,我们应该去怪放羊孩子好呢,还是去怪狼?

始终,我对那个大一统充满了畏惧,畏惧的不是大一统本身,而是把大一统作为真理似的不容质疑的过程和手段,多少次想问问周遭的人,那真的是必要的么?可是却不能表达,就像几十年前那些还信仰着恐怖的人群中微弱的质疑声,只能被无情的被愤怒吞没。历史和时间告诉我们了真相,只是我们却还生存于它的背后,让我们不能挺直摇杆去面对怀疑,只是我们就这样一直没有尊严的活着,无能为力。

算了,再想下去也是自寻烦恼,何苦呢?

心中默念,Tear Down this Wall