还原百度MP3真实地址

纯属无聊,本来只是想写个豆瓣的插件,看到歌曲列表以后就可以在线试听或者下载,不过不能直接从搜索结果列表拿到mp3或者wma的真实地址,只能进去下载页面分析。

不过下载页面的地址的加密倒是简单,很容易就发现了URL密文和明文的对应关系,再稍微看一下JavaScript,就知道怎么还原了。还原方法如下(还是JavaScript版本的):

//48-0, 65-A, 97-a
var CHARACTERS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';

function decode(url, offset) {
    var l = url.length;
    var s = '', idx, ch;
    for (var i = 0; i < l; i++) {
        ch = url.charAt(i);
        if (/[A-Za-z0-9]/.test(ch)) {
            idx = CHARACTERS.indexOf(ch)

Fookie——在JavaScript使用Flash存储本地数据

前几个月的时候就说过在JavaScript应用中使用Flash来存储本地数据,使用这个方式有一个非常大的好处就是:不同的浏览器可以共享相同的本地数据。

现在终于抽空整理了一下以前的应用,作为一个简单的开源项目发布了。在Google Code上的地址是:http://code.google.com/p/fookie/,代码里面有可以在vs中智能提示的文档。

JavaScript类名为Fookie,提供了以下几个Public方法:

  • Fookie.init(swfUrl, options);
  • Fookie.read(key);
  • Fookie.write(key, value);
  • Fookie.remove(key);
  • Fookie.clear();

Mootools常用方法扩展(三)

继续Mootools常用方法扩展,依然还是String类的扩展。

方法:unescapseHTML

说明:这个上次忘了,和escapseHTML正好是一对儿,功能正好相反。

String.implement({
    unescapseHTML: function() {
        ///<summary>
        /// 反转义字符中的HTML代码
        ///</summary>
        ///<returns type="STRING" />
        var htmlChars = ['&~&amp;', '<~&lt;', '>~&gt;'];
        var r;
        var s = this;
        for (var i = htmlChars.length - 1; i >= 0; i--) {
            r = htmlChars[i].split('~');
            s = s.replace(new RegExp(r[1], 'g'),

AS3位图任意形变一步一步来(5)——简单Demo

示例,红颜色的是三角形的分割线。

混乱丑陋但是完整而且可以跑的测试代码(全部放在第一帧就可以了):

//

//-----------------------
var url:String = 'green.jpg';
var bd:BitmapData = null;

var px0,px1,px2,px3,py0,py1,py2,py3;
var pxa, pxb, pxc, pxd, pya, pyb, pyc, pyd;
var drct = true;
var steps = 20;
var interid;

// segments
var hs:Number = 8, vs:Number = 8;

// px: x coordinate
// py: y coordinate
var pxs:Array = new Array();
var pys:Array = new Array();
var trs:Array = new Array();
var nps:Array = new Array();

// four 

AS3位图任意形变一步一步来(4)——任意形变

转载请注明出处:http://fdream.net,作者:Fdream

放着放着就忘了,多亏army同学在后面催我,要不然还真不知道什么时候会继续弄这个。今天上午又抽空捣鼓了一下,偏移总算是弄出来了,不过渲染效率很低,中间的计算过程应该还可以继续优化的。另外,弄到这里发现还是有问题,分得较细的时候会出现裂缝……误差真可怕!

先不管这个误差,我们来看看能不能形变先。由于计算形变矩阵需要初始的坐标和新的坐标,需要两个方法来计算(貌似可以合并?):

// calculate points
// 包含x坐标和y坐标,分别存储在pxs和pys数组中
// @params:
//   w: 位图宽
//   h: 位图高
//   hs: 水平分段数
//   vs: 垂直分段数
// @return:
//   void
function CalculatePoints(w:Number, h:Number, hs:Number, vs:Number):void {
    var iw:Number

Mootools常用方法扩展(二)

继续Mootools常用方法扩展,依然还是String类的扩展。

方法:format

说明:一个非常简单的format方法,和C#里面的format类似。这个方法会用参数来依次替换字符串中用大括号{}括起来的数字,比如用第一个参数替换{0},用第二个参数替换{1}等等。

String.implement({
    format: function() {
        ///<summary>
        /// 格式化一个字符串,替换其中用大括号包含的数字及大括号,类似C#的format
        /// 如用第一个参数替换{0}
        ///</summary>
        ///<param name="values..." type="String">相关参数</param>
        ///<returns type="STRING" />
        var s = this;
        for 

Mootools常用方法扩展(一)

收集了我们团队部分常用的方法,我稍微进行了一下整理,贴出来和大家分享。

先从String的扩展开始吧,后面有一部分的扩展要依赖这里扩展的方法。为了更加清晰和详细,我会一个方法一个方法地贴出来,你完全可以把所有的方法合并在一起。

方法:startsWith

说明:这个方法可以判断字符串是不是以指定的字符串开头。

String.implement({
    startsWith: function(s) {
        ///<summary>
        /// 检查一个字符串是不是以某个字符串开头
        ///</summary>
        ///<param name="s" type="String">开始字符串</param>
        ///<returns type="BOOLEAN" />
        return (this.indexOf(s) == 0);
    }
}

简单示例:

不只是MooTools的问题,瑞星已成流氓了

昨天我说瑞星升级最新版后,导致MooTools在IE下报错的问题,仔细看了后,发现不只是报错这么简单。在更多的时候会直接导致IE Crash。不过不只是MooTools有问题,很多用户已经在论坛上反应脚本出错了,比如有这样的:“瑞星升级到2009导致浏览器世界之窗1.4用百度就自动关闭”,不过还有更严重的,比如“更新到2009 本地连接.宽带连接.音量图标都没了”,还有蓝屏一系列问题。不过目前为止还没有官方人员做出相应回答。

貌似这次瑞星是强制升级,问题一下子就凸显出来了,瑞星官方论坛上反映有问题的一堆一堆的,甚至有人非常不满,以致刷屏。

瑞星现在已经非常牛逼,已经牛逼到他的进程你根本没办法干掉,以前听说360安全卫士可以把它干掉,发现瑞星升级后已经干不掉了。就连他的菜单中也没有退出选项,你只能默默地被强奸。

既然被强奸了,那就享受好了,要更舒服点,可以这样子做:

  • 打开“开始”菜单
  • 选择“运行”
  • regsvr32

最新版瑞星和MooTools冲突了

诡异的瑞星啊,12月20号升级了一个版本,导致MooTools的脚本直接报错了。昨天发现的问题,稍微看了一下,还没什么头绪,我的这个电脑上没有装瑞星,暂时没有办法贴出具体出错现象,只是稍微描述一下状况。

初步看了一下,在安装了瑞星12月20号发布的新版本后,发现MooTools里面很多地方经过MooTools封装后的document对象变成了都变成了一个function,这是继之前发现MooTools的Event类封装有问题后发现的一个类似的问题。

由于document对象不对,首先直接导致了$()方法失效,其次是事件(Event),后来简单地把事件里面的document对象改了以后,发现在触发事件的时候会导致IE7直接Crash。

在相同的情况下,jQuery暂时没有发现类似的问题,看来应该是MooTools自己的封装和扩展有问题,当然了,瑞星又干了一件诡异的事情………

被resin折腾中

这几天在用java写一个小的web应用,应用了YUICompressor的开源代码来压缩服务器上的js和css代码,然后返回给客户端。不过我的开发方式也很诡异:自己用两台机器,一个Windows Server 2003,上面有IIS 6、Apache 2和Tomcat 6,基本上开发的时候都用这台机器,另外还有一台机器,装了个英文版的Ubuntu,上面有Apache 2.2和Resin 3,后来装上的时候才知道Resin 3本来就支持PHP了,不过据说不是很好用。

第一次在Ubuntu上装的是jdk 1.6.0.0,我的window 2003上是jdk 1.6.0.7,windows上跑的很好的jsp,编译后放到ubuntu上死活都跑步起来,抛出的异常也是莫名奇妙。后来又在windows上用1.5编译了一遍,再放上去,还是跑不起来。找人帮忙看了一下,建议我装个jdk 1.5试试。于是重新在Ubuntu上装了个jdk …