15 七 2011, 10:17上午
Uncategorized:
by

1 条指导

通过 urlRewrite 来分发域名

image

万网的服务器,不支持绑定域名到新的目录。但是支持.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
9 七 2011, 8:46上午
productivity:
by

1 条指导

笔记本一拖多屏幕方案

屏幕越多,效率越高~

想像一下,一个屏幕写代码,一个屏幕看预览,一个屏幕查文档,多么爽的感觉~

再是一般本本只提供了一个VGA口,不方便接多屏。

偶尔在淘宝上淘到这个东西,外置的USB VGA显卡

DSCF0575

这个东西,理论上可以分出六个usb2.0的接口,分别接六台显示器。

流口水了吧~~

占用了一个USB接口以后,顺手的可以分到多个显屏上~~

感觉是不是很爽~~

DSCF0570

JavaScript猥琐队列机制

JavaScript里面没有一种控制事情,或者函数调用的队列机制。

存在这样一种可能,后面的逻辑需要前面生成的对象,或者加载完成一个iframe页面才能执行后面的东西。但是队往往前提条件还没执行,后面的就已经执行了。由于网速或者其它一些不确定的原因混和在一起,加载或者执行顺序不确定。这种Bug就间歇性的出现,非常猥琐,非常难查。

image

方法一:

(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

6 七 2011, 9:06上午
javascript:
by

2 点高见,马上去办~~

自定义事件(Custom Event) 一

这个东西早在YUI,jquery初始的版本里面已经包括了。

但是在Nodejs把它用得炉火纯青。

开始分析:事件机制是一套类似于这样的流程:

Event —-> Handler


在起初的应用,我们似乎已经习惯了原生的那些事件源。但是,当一个程序越来越复杂的时候,事件驱动成了一个项目设计流程中必不可少词眼的时候,这些原生的事件显得是如些的骨感,我们要让她丰满一些~~

幸运的是,js的原生机制中有这样一个方法

Arguments —-> Function


是不是太熟悉,以至忘了她的存在。这样一眼看上去,和事件的触发机制如此的相像,抛出一个argument和function绑定,然后执行就完美的模仿了Event的机制,但是更重要的是—-我们可以随意的定义事件源。

 

NodeJS的customer event设计了这样一套机制

Image(1)[4]

在一个我们将要操作元素上,绑定了一个_Events属性。在这个属性里存储key/value的字量面对象,这个字面量对象可以是一对一,多对一,多对多都是个可以。

这就实现了我们在自定义事件中的第一个逻辑:自定义事件的绑定

这个里面已经有了Object,Event(对应key),Handler(对应Value),很好的定义了自定义事情与回调函数的对应绑定关系。

这就是: EventEmitter.prototype.addListener所做的工作.维系一个自定义事件和回调函数的对应表。

然后就需要考虑怎么来触发自定义事件

我们来看 EventEmitter.prototype.emit

Image(2)

它是这样处理的,如果直接传入回调函数,根据其数量的不同分别用 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")

输出结果是:

Image(3)

很有意思吧~

下一节带来,大量Custom Event的应用

16 四 2011, 10:15上午
javascript:
by

发表点儿看法吧

CNodejs聚会之nodejs初探(一)

 

image

今天nodejs在betacafe举行活动。

早就久闻其大名—-这玩意所渲染的和nosql的东西结合起来前后端通吃,统一逻辑一套代码前后端都可以跑的概念,让人口水真流啊。哈哈,真的那样的话多省事儿,可以少跟很多人打交道,直接去取key/value形式的数据然后我们直接实现展现就可以了,流程可以流畅起来~~YYYY~~,继续YY,嘿嘿。

 

下面是我的笔记。

 

首先,代替后端直接用事件驱动的脚本来写后端逻辑可以由抽象变得形象一些。容易理解,开发难度降低。

 

性能方面的优势。

  • 单线程(single-thread)
  • 非阻塞式IO(non-blocking)
  • V8(runtime)

 

  单线程:

    • 单线程:多个请求占用一个线程
    • 多线程:一个请求占用一个线程

image

Nginx(单线程)vs Apache(多线程)

单线程占用更少的内存让系统有更好的性能。但是同时要认识到,这个问题单线程的可靠性差,一个请求异常了一个线程全挂。这里就需要考虑一 下实时性的系统就不能用nodejs来玩了吧?

 

非阻塞:

    • 非阻塞:事件状态保留,等到事件响应以后再执行事件上绑定逻辑。同时执行一下个监听事件。
    • 阻塞:事件状态不保留,等到事件响应以后再执行事件上绑定逻辑。下一个监听事件被中断。

image

Nginx(非阻塞)vs Apache(阻塞)

非阻塞会带来了那些问题呢?这个我还在想.

 

V8:

google大神的东西,把动态脚本的执行效率提升到一个新的高度。这样才有nodejs,commonjs这种东西的产生,让js可以脱离浏览器实现更多的东西。

 

回来做了下功课把nodejs装得玩了玩。

  1. wget,下taz文件。
  2. tar xzf解压下文件。
  3. 我的EC2 instance上没装openssl,直接 ./configure –without ssl
    image
  4. 然后就make,这个时间之长让人发指,花了我25分钟。后来我在nodejs群里面请教了一下前辈。原来nodejs在编译的时候要把v8引擎也要编译一次。
    image
  5. make install安装,一排排的.py刷屏~
    image
  6. 接下来就可以写自己的nodejs程序了
    image

 

ps:

电信从业者 @flyinweb 分享了"一个基于物联网的实时监控项目实践""

他们这个项目用

  • socket.io
  • connection pool
  • bayeux implement
  • multi-node
  • websocket client
  • node-mysql
  • log4js-node

这些开源组件集成起来了,讲了很多干货。

这玩意对我感触很大,我们太多工作花在自己造轮子上了,自已写底层框架,写具体逻辑。这点要向传统软件业的前辈们学习,多做集成少开发。当然 web app在国内刚刚火起来,能给我们做集成的框架,中间件太少了,这也是一个矛盾~~

总之,好多新东西要学习啦,加油~~~

14 四 2011, 7:02下午
mozilla
by

发表点儿看法吧

Del.icio.us插件和Firefox4兼容性的问题

Firefox 4用得很顺手了,速度很快很方便。但有一芥蒂总在心怀。Del.icio.us这个神器在FF4中还是不能兼容,与期等待他们团队的更新版本,不如自己暴力来改吧,猥琐的人生从来不走平常路。

 

地址栏,输入about:support ->打开所在文件夹

Image[4]

在打开的目录下,寻找这个子目录"extensions\{2fa4ed95-0317-4c6a-a74c-5f3e3912c1f9}"

改配置文件install.rdf

Image(1)

就是这个,把maxVersion改成4.0就搞定了~

image

很perfect的回来了~~~

over

  PS:2011年的mozilla的开发者大会,就要在5.10号开了。期待ing,最近玩jetpack玩得很hight啊~

14 十二 2010, 5:53下午
tools
by

2 点高见,马上去办~~

Evernote 4来了~

1,经过重新设计,代码完全重写.提供了优异的用户体验.
2,速度有极大的提高.5倍于原来的加载速度并减少了一半的内存.
3,更加直观的界面
    .更省空间的布局
    .更加及时响应的界面
    .更容易创建笔记
    .改变了SearchBar的位置,放在列表上面,更加直观.
    .更多交互方式,Evernote4支持多点操作和更多的快捷键.
4,对剪贴的支持更加友好
5,改善了笔记编辑的特性
6,为打印提供了很多的选项
7,对window7做了优化,支持Jump list和地点标记

  • 我在说

  • 我在看

  • 新文章

  • 文章归档