Yok

苦海无涯,回头是岸啊

2009年5月23日

js动态代理

最近公司的产品陆续跟其他网站有合作,麻烦的是每个网站都有个性化的需求,有的需要自己的logo,有的需要定制的广告。

例如默认我们显示的是Google广告 http://www.wangchao.net.cn/bbsdetail_1950471.html

但是此站需要专门显示旅游类广告 http://www.wangchao.net.cn/bbsdetail_1950471.html

产品的UI相当复杂,hard code 当然是不能接受的。此时我很怀念我当年在.net用的Windsor,于是马上弄了个动态代理出来(对动态语言来说是小菜一碟),让我能给特定的宿主网站通过添加额外的js文件注入自己定制的代码

 

 

(function(){
    
var interceptors = {};
    $.intercept 
= function(name, func){
        
var parts = name.split('.');
        
var owner = window;
        
for (var i = 0; i < parts.length - 1; i++){
            owner 
= owner[parts[i]];
            
if (!owner) break;
        }
        
if (owner){
            
var funcName = parts[parts.length - 1];
            
var target = owner[funcName];
        }
        
if (!(owner && target)){
            interceptors[name] 
= func;
            
return;
        }
        owner[funcName] 
= function(){
            
this.__invocation__ = target;
            func.apply(
this, arguments)
        }
    }
    
    $._ 
= function(name, func, scope, args){
        
var interceptor = interceptors[name];
        
if (interceptor){
            scope 
= scope || window;
            scope.__invocation__ 
= func;
            
return interceptor.apply(scope, args || []);
        }
        
else {
            
return func.apply(scope, args || []);
        }
    }
})()

 

 要拦截函数很简单,以被拦截的函数名和用于拦截的函数为参数

$.intercept = function('objectName.methodName'function(){
//do something
//
and invoke the original method if needed
    this.__invocation();
})

 

当然现实中我的代码里的函数几乎都是私有或匿名的(这是避免命名冲突的最佳实践),并且我通常只想修改其中的一两行代码。于是我再写多了个方法,实现实时包装和调用。

原本是这样

$('#clickMe2').click(function(){
     alert(
'这是匿名函数,休想跨作用域追捕');
     alert($('#content').text());
});

 

 改成这样,就可以照样用 intercept() 插一脚了,虽然原来的代码也需要修改,但是至少它不包含自定义的逻辑

$('#clickMe2').click(function(){
    $._(
'fuck_them_up'function(){
        alert(
'这是匿名函数,休想跨作用域追捕');
        alert($(
'#content').text());
    });
});

 

Demo,看看点intercept me之前和之后点 click me 会有什么不同?

function fuckThemUp(s){
    alert(s);
}
$(
'#clickMe').click(function(){
    fuckThemUp($(
'#content').text());
});
$(
'#interceptMe').click(function(){
    $.intercept(
'fuckThemUp'function(s){
        alert(
'河蟹来了!');
        s 
= s.replace(/修脚刀/'水果刀');
        s 
= s.replace(/特殊服务/'异性洗浴服务');
        s 
= s.replace(/按倒/'推坐');
        
this.__invocation__(s);
    });
});
$(
'#clickMe2').click(function(){
    $._(
'fuck_them_up'function(){
        alert(
'这是匿名函数,休想跨作用域追捕');
    });
});
$(
'#interceptMe2').click(function(){
    $.intercept(
'fuck_them_up'function(s){
        alert(
'还不抓到你?');
    });
});

 

 2009年5月10日,湖北巴东县野三关镇政府招商协调办公室主任邓贵大、黄德智等人在镇雄风宾馆梦幻城消费,要求女服务员(邓玉娇)提供“特殊服务”, 拿出一叠钱炫耀并朝头、肩部搧击,还两次将按倒在沙发上。邓玉娇用修脚刀将对方两人刺伤,邓贵大被刺伤喉部,经抢救无效死亡。

       匿名函数的拦截:

posted @ 2009-05-23 00:06 Yok 阅读(1712) 评论(5) 编辑

2008年7月29日

Hammett joined Microsoft

在ASP.NET MVC开发期间,Hammett已经是这个项目的顾问。在Scott的怂恿下,他最近加入了m$,作为MEF (Managed Extensibility Framework) team的项目经理。同时他也得到了特许,可以继续开发Caslte。

Hammett一直在他的Blog上批评webform,并且他声明不会因为加入m$而改变态度,这事表明了m$在技术方向上正朝多元化的方向发展。 而Hammett的作品也不会因为“非官方”,“开源”等原罪得不到.NET社区的接受。这对m$和开源社区来说都是一件好事情。

 http://hammett.castleproject.org/?p=312

posted @ 2008-07-29 12:11 Yok 阅读(712) 评论(2) 编辑

2008年5月30日

鼻炎无端端好了

十几年来一直受鼻炎困扰,往死里塞,长期缺氧,身体状况一直都很差。但是最近竟然无缘无故的好了
不过最近的生活确实有变化,一是换了公司,离家有20分钟路,有时我还会跑着上下班,运动量大了。
二是鼻炎消失之前,感冒了一场,并且到最后还整个脸肿了(以前从没试过),很痛,鼻涕还带血,吃了不少感冒和消炎药。
以前为这个问题看了不少医生,吃了不少药,看的医生老少分成两派:老的都说我是体质不好,多锻炼就行了;年轻的都说我是严重的鼻甲肥大和鼻中隔偏曲,一定得做部分鼻甲切除手术。看来还是老医生比较有水平。虽然病愈的原因不明,但是这两样是肯定对鼻炎患者有好处的:多做运动;少用收缩鼻粘膜血管的药

posted @ 2008-05-30 14:46 Yok 阅读(466) 评论(4) 编辑

2008年3月18日

罚抄100遍

我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了,我再也不让小猫爬出去了

test:

 

http://www.freeoz.org/forum/forum-101-1.html

posted @ 2008-03-18 09:16 Yok 阅读(192) 评论(2) 编辑

2007年10月9日

Castle Team宣布Castle将与ASP.NET MVC整合

MS宣布推出ASP.NET MVC Framework:http://www.cnblogs.com/Dah/archive/2007/10/08/916958.html  

看了看上面的特性,概念几乎是全抄Castle的,见惯不怪了,nant / msbuild, nunit / mstest…… 无论如何,这对开发人员来说会是好事,ms必然能创造出更好的开发环境。

ASP.NET MVC还会使用aspx,但是它没有viewstate,没有postback,所以它在这里只是个模板引擎,并不那么邪恶。而且ms还开放了接口,能让Castle这样的第三方产品结合进来。Castle Team也表态,MS的MVC推出后,Castle部分的项目将会与其整合:

To The .Net Community,

You are probably wondering how the recently announced Microsoft MVC project will compete with Castle's MonoRail.

We think that any attempt to offer more productive tools, better testability and better separation of concerns is valuable, no matter who is the author. We are certainly pleased to see that Microsoft is delivering something that allows a more agile and productive type of web software development.

We also believe that MonoRail has been providing the same thing for the past two and half years, and will continue to do so. We're grateful that MS has chosen to offer integration points for Monorail and the Castle stack and as soon as it's available we will be working to integrate it with the rest of our projects.

Is MS' MVC better? Worse? Only once we have used both will we be able to tell.

Yours sincerely,

The Castle Project PMC

posted @ 2007-10-09 11:07 Yok 阅读(1858) 评论(12) 编辑

2007年9月28日

邪恶的webform

摘要: 你们真的以为webform易学易用? 阅读全文

posted @ 2007-09-28 16:06 Yok 阅读(4959) 评论(95) 编辑

2007年9月14日

MonoRail FAQ

摘要: MonoRail的文档已经比较全面,我再写教程似乎是重复劳动了。所以这里以FAQ的形式把我的心得分享出来

阅读全文

posted @ 2007-09-14 15:49 Yok 阅读(2959) 评论(15) 编辑

2007年9月11日

MonoRail资源汇总

摘要: 不知不觉已经用了两年多MonoRail了。当时是叶子(现在已经出国留学,研究工控技术和游戏外挂去了)介绍我用的,用上了就彻底抛弃webform并且鄙视之,其他用MonoRail的同事或朋友也有类似的感想。除非你对OOP / XHTML / Javacsript 深恶痛绝或者没有能力去学习这些基础知识,只要你熟悉了MonoRail,都会想跟webform划清界线的。大概是两年前的这个时候,我花了一个...阅读全文

posted @ 2007-09-11 21:49 Yok 阅读(3322) 评论(16) 编辑

2007年6月7日

招.net and/or javascript程序员(广州)

摘要: 我们使用castle和nhibernate进行互联网开发。现在需要招聘若干.net或web ui程序员。.net程序员要求: 熟悉.net framework 熟悉面向对象概念 懂javascript及xhtml web ui程序员要求: 熟悉javascript,xhtml,css,actionscript等 对服务端和客户端开发都感兴趣的,或者担心搞javascript没发展前途的,可以两边都...阅读全文

posted @ 2007-06-07 14:29 Yok 阅读(743) 评论(3) 编辑

2007年5月6日

javascript版贪食蛇

摘要: 先用鼠标点一下游戏区域方向键就不会导致滚动条滚了, 还不知在ff怎么解决这个问题. ie的速度比ff慢好多啊...阅读全文

posted @ 2007-05-06 00:47 Yok 阅读(3047) 评论(23) 编辑

<2012年2月>
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910

导航

统计

公告

不玩了不玩了不玩了不玩了不玩了不玩了不玩了不玩了
昵称:Yok
园龄:7年4个月
粉丝:4
关注:0

搜索

 
 

常用链接

我的标签

随笔分类

随笔档案

相册

Friend Links

积分与排名

最新评论

阅读排行榜

评论排行榜

推荐排行榜