2007-10-25 22:44:25
刚好青云讲了些“007功能”,好像还挺有争议。有争议是好事,有争议才说明这些想法既不是人人皆知的常识,也不是明显没有价值的谬论,而是一个值得讨论、值得让我们换个角度看一些常见问题的机会。
文中也提到了搜索引擎,我个人倒不是很关注它们的首页怎么设计,我挺看中结果页面的设计和创新。之前我们中国雅虎的同 事搞了个非常有新意的一搜。它的创新除了亲切的手绘风格外,最重要的就是所谓的“Mashup”。我认为这是目前互联网技术发展中最重要的两个趋势之一(另一个就是类似facebook的平台化),通过一些简单(但强大)的技术手段,把各种信息资源智能地整合起来展示。到后来中国雅虎又推出了全能搜索,它融合了网页搜索、音乐搜索、图片搜索、人际关系搜索等等,算是一个Mashup的成功案例。

阅读全文
2007-10-16 21:38:02
一直试图寻找用GreaseMonkey直接访问Linux Shell命令的办法,到目前为止还没发现实现的办法,但在寻找的过程中却找到了这么个好工具:User Script Compiler。
它可以把GreaseMonkey的脚本转换成Firefox扩展,也就是.xpi文件。这就使很多不会用GreaseMonkey的非技术用户有了利用GreaseMonkey上众多脚本资源的可能,也给了GreaseMonkey的开发人员更多发布方式。
我用它把前几天写的下载yobo mp3的脚本转换成了Firefox扩展,还真成了。您可以装上试试:)
YoboDownload.xpi
而且该软件是OpenSource的,所以我花了几分钟简单地将这个页面作了翻译,放在这里:
http://www.sharkui.com/tool/script-compiler.php
按原作者的GPL协议,我的翻译版也是GPL的,如果你有时间在它的基础上再作一点点改进,那是再美妙不过的事了!OpenSource的精神不就是人人贡献一点力量么:)
再次推荐,用好GreaseMonkey(+ 这个编译器)和Firebug,会给前端开发人员打开完全不一样的一片天空。
2007-10-08 07:37:36
yobo是目前我最喜欢的歌曲在线播放分享网站。它上线之初的卖点是“音乐DNA”,也就是通过心理测试来为你自动推荐歌曲。虽然现在已经不可避免地走向“传统”特性:大而全的歌曲分类、用户小组、系统榜单等等。但总的来说还是相当优秀,除了不提供下载链接。
该脚本就是用于解决这个问题,下图是运行后的效果:

// ==UserScript==
// @name Yobo_Download
// @namespace com.yobo.www
// @description Add "Download" Link to Yobo
// @include http://www.yobo.com/*
// ==/UserScript==
var songs = []
var divs = document.getElementsByTagName('DIV');
var dc = divs.length;
for(var i=0;i<dc;i++){
if(divs[i].className == 'sp_container'){
songs.push(getSongInfo(divs[i]));
showDownloadLink(songs[songs.length-1]);
}
if(divs[i].className == 'block_submenu'){
if(divs[i].getElementsByTagName('A')[0].className='b13em_black_hblack'){
var defaultSinger = divs[i].getElementsByTagName('A')[0].innerHTML;
defaultSinger = defaultSinger.substr(0,defaultSinger.length - 2);
}
}
}
function getSongInfo(div){
var as = div.getElementsByTagName('A');
//获得歌曲名
var n = as[1].innerHTML;
//获得歌手名
var s = 'unkown';
if(as[2]){
s = as[2].title;
}else{
if(defaultSinger) s = defaultSinger;
}
//获得MP3地址
var u = as[0].getAttribute('onclick').substr(16);
u = u.substr(0,u.indexOf("'"));
if(u.toUpperCase().substr(u.length-4) != '.MP3') u+='.mp3';
return {name:n,singer:s,url:u,ele:div};
}
function showDownloadLink(song){
var link = ' <a href="'+song.url+'" singer="'+song.singer+'" song="'+song.name;
link += '" style="font-weight:bold;text-decoration:none;color:#999">Donwload</a>';
song.ele.getElementsByTagName('DIV')[0].style.width = '100px';
song.ele.getElementsByTagName('DIV')[0].innerHTML += link;
}