用YQL帮助显示Twitter消息

我们经常看到一些Blog或者内容发布站点会将自己的Twitter消息显示在网站的某个位置(比如边栏),这些功能大多都是由后台程序(如PHP)来完成,若没有个人可管理的服务器或者不支持运行后台程序将无法使用;使用JavaScript版的则需要浏览器端能正常访问Twitter数据源,但由于某些网络原因也无法实现。

今天自己动手写了一个基于YQL和JavaScript的简单脚本,可以帮助人们实现显示个人Twitter消息的需求,本页面边栏的“Tweets”就是使用它来实现的。所以只要你的站点可以运行JavaScript,并且能访问YAHOO! API ;那么就放心地将下面的代码嵌入到你想在自己站点上显示Twitter 的地方吧,如下:

<script type=”text/javascript” src=”http://swayweb.com/labs/twitter_timeline.js”>id:swaydeng,limit:5,style:false</script>

其中’swaydeng’替换成你的TwitterId,limit代表你打算显示twitter的条数(小于等于20),style表示嵌入的twitter消息框是否需要加入CSS样式,目前是false。

就是这么简单,欢迎使用。

1px Dotted Border Bug In Chrome3.0

这是一个关于浏览器对CSS属性border的解析问题。在IE6下,当把边框(border-width)设置为1像素并且边框样式(border-style)设置为dotted时,IE6通常会渲染成虚线(dashed)而不是我们想要的点线(dotted),这就是古老的1px Dotted Border Bug In Internet Explorer 6,好消息是在IE6以后的版本里修复了这个bug。

然而最近做测试时发现,以上提到的IE6的bug很不幸地转移到了Chrome上,具体现象是:在Chrome3.0下,当把边框(border-width)设置为1像素并且边框样式(border-style)设置为dotted时,无论长短,线段中部都会有一段实线,只有当border-width大于1px时才正常,很奇怪;补充一点,同样使用WebKit引擎的Safari3.2并不存在这个错误。

本人的测试环境:操作系统是WinXp Pro,屏幕分辨率是1280×800,浏览器是Chrome3.0.195.33。我在想,这难道是Chrome的一个渲染bug?模仿IE,先称此bug为1px Dotted Border Bug In Chrome3。

测试页面(Test Page)

Notepad++目录插件:Explorer plugin

除了Windows自带的文本编辑器notepad,我还用UltraEdit、Notepad++、Editplus,UltraEdit业界口碑很好,但由于中文用户需要处理较多编码问题,我个人觉得UltraEdit对编码处理并不是很方便;Editplus运行飞快,尤其对一些超大文本的处理比Notepad++强很多,而且其“目录窗口”对于管理复杂结构文件目录很有用,但是在符号配对方面,其仅仅支持括号配对而不支持标签配对,这对于经常编辑XML、HTML文档的人员很不利(当然也有强人不需要);Notepad++是我最喜欢的编辑器,除了其官方介绍的等等优点以外,我个人很喜欢其标签配对功能、灵活的编码选择和硬朗的外观,虽然处理超大文本常常假死,但我可以勉强用以上提到的Editplus替代,唯一让我遗憾的是Notepad++没有类似Editplus和UltraEdit都具备的“目录窗口”。今天,对于我,以上问题不再是问题了,Notepad++是支持插件的,一款插件帮我解决了难题,它就是Explorer plugin,它让我们的Notepad++也拥有“目录窗口”,变得更加完美。

现在Explorer plugin的最新版本是Version1.8.2,下载后解压可得到文件Explorer.dll,将其放在 “Notepad++安装目录/plugins”下,重启Notepad++会发现工具栏多了一个叫Explorer的按钮,点击之,即可看到期待已久的“目录窗口”。

对input 使用focus()函数(兼容Firefox和IE)

我们有时会有这样的需求:当页面加载完成后自动将光标定位到某个输入框上,起到引导和方便用户之功效,如谷歌首页、Gmail登陆界面等;原理较简单,通常可以用一段Javascript略微控制,如

...
window.onload = function(){
   document.getElementById('term').focus(); //假设页面中需要赋予焦点的input的id为'term';
 }
...

以上代码可以解决input框初始值为空的情况,假如初始值不为空,如我们引导用户输入一个网址,使初始值为’http://’,这时HTML可能是这样:

...

...

如果再试图用上面的Javascript代码来赋予焦点,会发现在Firefox下光标停在input框内文字的末尾,而在IE6下却停在了input框内文字的开头处,通常,Firefox的执行结果使我们所希望的。要想让IE6得到像Firefox一样的结果,以下是我的解决办法:

...
   window.onload = function(){
     var term = document.getElementById('term');
     term.focus();
     term.value = term.value;     //关键就是多加了这一句;
   }
...

跨浏览器Ext版网页漂浮广告JavaScript函数

今天浙大门户系统提出一个需求,用户登录后希望网页上可以漂浮一个小图片,提醒同学可以做在线咨询,我一听,这不就是本人最讨厌的网页广告吗,可没办法,人家给钱,你就是奴才。
在网上一搜,这类脚本铺天盖地,基本是一样的,纯JS写成,拷过来一用,静态页面时IE和Firefox都正常,改成JSP后在IE下还好,Firefox下就不行了,该飘的东西一动不动,改了半天没改出来,想想咱们门户每次加载都带上了Ext库,咱们也别浪费了,我就用Ext写了个跨浏览器的漂浮JavaScript函数,在JSP下通过IE、Firefox及Safari测试,Chrome应该也没问题。函数源码如下:

function floatInfo(id, distance, per){
   var flagH = 0;
   var flagW = 0;
   var distance4L = distance;
   var avaiH = document.body.clientHeight - id.getHeight();
   var avaiW = document.body.clientWidth - id.getWidth();
   var task = {run: function(){
                        id.setTop(id.getTop() + distance);
                        flagH += distance;
                        if(flagH >= avaiH || flagH <= (-avaiH)) {
                                distance = (-distance);
                                flagH = 0;
                        }
                       id.setLeft(id.getLeft() + distance4L);
                       flagW += distance4L;
                       if(flagW >= avaiW || flagW <= (-avaiW)) {
                       distance4L = (-distance4L);
                       flagW = 0;
                       }
                   },
                  interval: per
                }
  Ext.TaskMgr.start(task);
}

传入参数id代表网页上要漂浮元素的id;distance是数字,代表一次移动多少像素;per也是数字,代表多长时间移动一次,其中1000代表1秒,数字越小移动越快。使用方式如下:

<script type="text/javascript">
   Ext.onReady(function(){
      var id = Ext.get('float_dis');
      floatInfo(id,10,300);
   })
</script>

虽然用Ext写这种东西是有点杀鸡焉用牛刀的味道,但谁叫本人对跨浏览器的脚本编程这么差呢。

5招轻松提高网站访问速度

.        一些著名博客站点(如月光博客)由于拥有独立服务器托管和良好带宽,页面访问迅速极快,而小博客往往是花小钱租借空间,访问并不理想。曾经我也发誓等哪天有钱了也给自己的空间升升级,可想到雅虎兴起、杨致远成名后还在用电话线上网的故事,本人决定将页面优化进行到底。这里分享几点页面优化的心得。

.        一次Web访问概括起来讲就是“前台-后台-前台”,用户通过浏览器向服务器发送HTTP请求,服务器接收到请求后调用后台程序运行计算并向浏览器回送浏览器可识别可解释内容(如HTML、脚本文件、CSS、图像、Flash动画、视频和音频等),最后又重新通过浏览器将这一切呈现给我们,因此,要改变访问速度,就可以在这个过程中“动手脚”。

1.    网页尽量少包含图片(这招实用易操作);这有两个方面,一个是用于装饰网站的基本图片,另一个是文章中用户做插图的图片。曾经用本人的网站做过测试:将网站首页保存到本地,当文章包含几张普通插图时有680K,而去掉图片后只剩下120多K。图片是消耗网站加载速度的一大原因。

2.   减少HTTP请求次数;刚刚我们粗略分析了一次Web访问的全过程(“前台-后台-前台”),经研究,一次HTTP请求中只用了10%~20%的时间来接收和渲染页面,而有80% ~ 90%的时间用在发出请求上,因此减少HTTP请求是节约时间的有效手段。通常可以通过合并文件来减少,假设一个网站包含1个HTML文件、2个Javascript文件、2个CSS文件以及零碎的11个小图片文件,1+2+2+11=16,也就是说需要发送16次HTTP请求,而如果我们将2个Javascript文件合并在一起,CSS文件及图片文件也用相同方法合并,这时请求数减少到 1+1+1+1=4(次)。如果加载的文件更多,这样改进的效果将更加明显。

3.   压缩文件;将需要加载的文件如CSS、脚本经过一些专门的压缩工具压缩成较小的包,这有助于提高网页下载速度。当网页中包含较大的脚本文件时,用压缩工具可以看到惊人的压缩比。

4.   合理安排文件加载顺序;由于文件的加载顺序一般是按照其在文本中出现的先后顺序来进行的,我们将CSS文件包含在<HEAD>标签中,而Javascript文件往往放在最后加载(一般在</body>之前即可)。

5.   尽量少用<TABLE>标签构建页面布局;用<TABLE>元素构建网页布局是传统的构建方法,但不得不说这是一个落后且需要淘汰的方法,我们提倡使用<DIV>标签来规划页面布局,因为<TABLE>构建的网页需要整个TABLE包含的内容都加载后才会呈现,对于网速慢的网络浏览器容易出现白屏,给用户带来极差的体验,而用<DIV>构建的网页采用局部加载,即使网络不佳,页面也是逐步呈现而不是白屏等待。

.        以上五点是本人的一些实际操作经验,虽然网站优化还有很多学问,但做了以上5点,我相信网站一定会出现令人高兴地变化。

Google Reader学习社交网,增加Like互动功能

GoogleReader今晚如往常一样打开Google Reader准备看点东西,突然发现页面上多了些新东西,首先是页面左上方多了一个很黄很清晰的提醒:You can now search for people sharing publicly in Reader. search for some people,经了解和试用,其作用是搜索名字可以得到被搜索人通过Google Reader分享(share)的条目,当然,只有该用户的分享名单中有包含你,才可以阅读;还有一个功能,也是比较有意义的功能是Google Reader在每篇RSS下增加了一个”Like”按钮,你只需点击它或是按键盘上的L键,就可表示你“Like”这篇文章了,类似于对文章投票,文章标题下会有一行字如“24 people liked this”,当你点击这行字还能看到具体哪些网友“Like”了此文,这很容易让人联想到Digg。对了,为了避免意外,本人使用的是Google Reader 英文版,以上两个功能目前只投放到Google Reader 英文版。

昨天刚发了篇对Google表示疑惑的博客,今天总算看到了喜欢的Google。看到诸如FacebookTwitter这样的WEB2.0产品现今如此火爆,并拥有无限将来和钱景,Google大哥是应该放低姿态学习学习,虽然之前也没觉得静悄悄的Reader有什么不适,但增加这样小小的互动功能无疑会让用户在阅读之余感觉到有趣。

不足之处也有:人物关键词搜索若能升级到关键词、热点词搜索将会使此功能更加有用,同时增加一个类似于Twitter今日热点话题展示区,可以帮助阅读者获得最新rss源;最后,“Like”一词总觉得有点不到位,英语还凑合着用,要是以后翻译成中文变成“24个网友喜欢了它”感觉也太过了,个人以为英语可以用“push”(避免与digg撞衫),中文可以翻译成“24个网友觉得该文不错”。

继续饭否

这次饭否停得可真够惨,我想到三点:
1.回鹘们这一票杀伤力巨大;
2.饭否影响力越来越大;
3.上次饭否自个儿“维护网站”的帐迟早是要算的。

前几天,看到一网友jerryofwong 写道 “饭否无法访问。 有人认为:“饭否太惨了,发展到今天,除了IT内部人士,就是愤青,用户结构畸形。IT内部人士赚不到钱,愤青还会带来负利润(被封就是典型的负利润)。”
我觉得这话不厚道,把愤青推到了罪人的地步。我们现在还处于社会主义初级阶段,使用饭否不当也是正常的,况且Twitter也不是什么好鸟(虽然是鸟),在我党手下早被烤了,怪只怪饭否生错地方,不对,怪只怪王兴生错地方了。

言归正传,趁我党还没动手,快来用化了妆的Twitter吧:
http://itweet.net/web
http://twitzap.com
http://m.tweete.net/login