通过 urlRewrite 来分发域名
万网的服务器,不支持绑定域名到新的目录。但是支持.htaccess,可以曲线通过urlRewrite来实现软路由分发域名。
这样的,我有五个域名分发到五个不同的目录下
这样就实现了一个域名的转向到新目录。
这个urlRewrite分成三句
RewriteEngine On : 打开urlRewrite
RewriteCond : 触发的条件
RewriteRule : 域名重写规则
这个里面用了,RewriteCond来判断域名是x2visual.com的情况下来重写url.(这个里面是用正则来匹配的)
RewriteRule (.*) /x2visual/$1
这一句是重写规则,前面是输出,后面是捕获。实际上就是去掉了域名路径中的/x2visual/这个值。
其它四个域名重复上面规则,实现软路由。
代码如下:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^x2visual\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.x2visual\.com$
RewriteCond %{REQUEST_URI} !^/x2visual/
RewriteRule (.*) /x2visual/$1
笔记本一拖多屏幕方案
屏幕越多,效率越高~
想像一下,一个屏幕写代码,一个屏幕看预览,一个屏幕查文档,多么爽的感觉~
再是一般本本只提供了一个VGA口,不方便接多屏。
偶尔在淘宝上淘到这个东西,外置的USB VGA显卡
这个东西,理论上可以分出六个usb2.0的接口,分别接六台显示器。
流口水了吧~~
占用了一个USB接口以后,顺手的可以分到多个显屏上~~
感觉是不是很爽~~
JavaScript猥琐队列机制
JavaScript里面没有一种控制事情,或者函数调用的队列机制。
存在这样一种可能,后面的逻辑需要前面生成的对象,或者加载完成一个iframe页面才能执行后面的东西。但是队往往前提条件还没执行,后面的就已经执行了。由于网速或者其它一些不确定的原因混和在一起,加载或者执行顺序不确定。这种Bug就间歇性的出现,非常猥琐,非常难查。
方法一:
(function(){
if(...){
} else {
setTimeout(arguments.callee, 350);
}
})()
方法二:
(function(){
try {
...
} catch(e){
console.info() && console.info("ManualEditor && CustomerEditor has a Bug");
setTimeout(arguments.callee, 500);
}
})()
我想了这两种办法,来确认先行条件已经具备。才执行后面的函数。
当然,这只是应急的方法,还有待完善。待我Code Review一下YUI 的async-queue
自定义事件(Custom Event) 一
这个东西早在YUI,jquery初始的版本里面已经包括了。
但是在Nodejs把它用得炉火纯青。
开始分析:事件机制是一套类似于这样的流程:
Event —-> Handler
在起初的应用,我们似乎已经习惯了原生的那些事件源。但是,当一个程序越来越复杂的时候,事件驱动成了一个项目设计流程中必不可少词眼的时候,这些原生的事件显得是如些的骨感,我们要让她丰满一些~~
幸运的是,js的原生机制中有这样一个方法
Arguments —-> Function
是不是太熟悉,以至忘了她的存在。这样一眼看上去,和事件的触发机制如此的相像,抛出一个argument和function绑定,然后执行就完美的模仿了Event的机制,但是更重要的是—-我们可以随意的定义事件源。
NodeJS的customer event设计了这样一套机制
在一个我们将要操作元素上,绑定了一个_Events属性。在这个属性里存储key/value的字量面对象,这个字面量对象可以是一对一,多对一,多对多都是个可以。
这就实现了我们在自定义事件中的第一个逻辑:自定义事件的绑定
这个里面已经有了Object,Event(对应key),Handler(对应Value),很好的定义了自定义事情与回调函数的对应绑定关系。
这就是: EventEmitter.prototype.addListener所做的工作.维系一个自定义事件和回调函数的对应表。
然后就需要考虑怎么来触发自定义事件
我们来看 EventEmitter.prototype.emit
它是这样处理的,如果直接传入回调函数,根据其数量的不同分别用 Call 来绑定。对于传入的数组循环一下再绑定。
OK: 如此简单的代码就完成了一整套自定义事件
华丽的分割线:
___________________________________________________________________________________________
把arguments由Like-Array转变成真正的Array过程中,大量使用了Array.prototype.slice.call()这个方法,这个方法的输出很有意思
(function(){
console.info(arguments);
console.info(arguments.length);
console.info(typeof(arguments));
console.info(typeof([]));
console.info(arguments.constructor);
console.info([].constructor);
console.info(Array.prototype.slice.call(arguments,1));
})("a","b","c","d")
输出结果是:
很有意思吧~
下一节带来,大量Custom Event的应用
