2008 年 04 月

浏览模式: 标准 | 列表 | 图文
春雷

春雷

春天到了,春雷也响了

今天雨好大,可是昨天晚上的手机报上却说“夜里到明天白天晴转多云”,出门就没有带伞,结果……刚出门没多久就开始飘小雨了,到单位的时候雨下的好大。

还好,N个月前带了把伞到单位里,可以让我在回家的时候撑着它。这把伞陪着我有5年多了,当初在城隍庙看着这把伞特别大,就买了下来。至今仍然在使用,性价比超高啊。

天气预报说,浦淮江淮一带将有连续的降雨,看不到明天的太阳喽。

ThinkPHP的官方服务器遭受攻击

ThinkPHP的官方服务器遭受攻击

ThinkPHP的官方服务器受到了攻击,数据全部丢失。在等待服务器恢复的期间,听说服务器还是拖了时间才开始安装和配置啥的。

其实,个人而言,我是不太相信是受到了攻击。以前托管的时候,由于机房搬迁,而他们的管理人员机器都不关就直接换机柜什么的,导致我的硬盘在读写的时候断电,分区表完全破坏。足足停了两个多月。

也正是那两个多月,团队进行的项目受到了一定的打击,也就是俗话说的:心都哇凉哇凉的。

自此,团队一蹶不振。

当然希望TP不是因为这个原因。唉……合租的服务器,终究还是不放心啊。可惜TP没有营利性的运作,仍然是以个人名义在运作。不可避免的会与自己的经济能力挂勾吧。其实,买一台1U服务器,托管1年。大概费用是15000左右(应该算是比较高的了),假设每年托管费用5000,托管3年的话。共计2W,平均每年6K,相信应该还是可以承受的(当然,如果有人赞助部分应该会更好,不过最好还是通过有偿技术支持等来换取部分贊助,也避免欠人情啥的)。

看TP的未来发展吧。拭目以待

婴儿床到位,黑黑

婴儿床到位,黑黑

4月4日的时候,也就是清明节了,婴儿床到位。然而,仅仅是一个箱子,根本就没有安装。

不得已的情况下,老婆电话他们,说好4月6日上门安装。

6日下午,当俺正在上课的时候,老婆发消息给我说安装人员来了。

急匆匆的赶回时,婴儿床已经快装好了。

如今,它已经安静的在小房间呆着了,就在等待它的新主人入住。

期待

清明……

清明……

清明时节雨纷纷,

路上行人欲断魂;

借问酒家何处有,

牧童遥指杏花村。

今年清明没有回老家,就在上海过了。

借一首老诗怀念一下

IE和Firefox下event乱谈

IE和Firefox下event乱谈

  如果在使用javascript的时候涉及到event处理,就需要知道event在不同的浏览器中的差异,因为javascript的事件模型有三种,它们分别是NN4、IE4+和W3C/Safari;这也造成了在不同的浏览器中处理event的差异,这里结合一些零碎的代码来说明如何做到event在IE4+和Firefox下的正常工作。首先看如下代码:
function doEventThing(eventTag){
var event = eventTag||window.event;
var currentKey = event.charCode||event.keyCode;
var eventSource =window.event.srcElement||eventTag.target;
}

  这段代码主要是为了处理键盘事件的,在IE中event作为window对象的一个属性可以直接使用,但是在Firefox中却使用了W3C的模型,它是通过传参的方法来传播事件的,也就是说你需要为你的函数提供一个事件响应的接口,在上述函数中,
eventTag扮演的就是这个角色。
  var event = eventTag||window.event;
  这段代码可以根据浏览器的不同来得到正确的event,并在程序中使用,如果在IE4+下面使用这段代码,因为eventTag为null可以保证event = window.event,但是如果在Firefox下运行的话则因为手工的给定了eventTag所以var event = eventTag。根据对这一段代码的分析我们也不难看出可以对doEventThing方法进行如下的改造(因为javascript允许我们在定义function的时候不明确指出参数的数量):
function doEventThing(){
var event = arguments[0]||window.event;
//other code
}

  在Firefox下arguments[0]在特定的场合(没有显式的指定function参数数量的时候)被做为传播事件的参数来使用…………
  至于var currentKey = event.charCode||event.keyCode;也是不同的浏览器所致,在IE4+下面记录键盘的是keyCode,但是在Firefox下的却是charCode,为此我们需要处理他们的差异。
  还有一个差异就是事件源的获取:通过语句
  var eventSource = window.event.srcElement||eventTag.target;
  我们也看到了IE与W3C的不同。
  经过上面的包装,我们基本上可以在IE4+和Firefox下面顺利的使用事件机制了,当然如果为了通用性可以对这种差异进封装来形成自己的Event对象在程序中误差别的使用事件对象,这里就不在介绍了。

  接下来分析事件的绑定:大概分为如下5种
  1、绑定到元素,这也是比较常见的一种比如:
  <input type="button" onclick="doEventThing(event)">
,这样我们就把doEventThing绑定到了该button对象上,点击此按钮事件就被触发。
  2、绑定事件到对象:这也是比较常见的一种,特别是在IE4+下面:
  document.getElementById("divid").onclick = doEventThing;
  3、使用<script for>进行事件的绑定,这只在IE4+下有用(为buttong1绑定事件,逻辑在script块中书写event来指定怎么触发事件):
<script event="onclick" for="button1">
 // script statements here
</script>

4、使用 IE5/Windows 的 attachEvent() 方法
5、使用 W3C DOM 的 addEventListener() 方法
  addEventListener("eventType",listenerReference,captureFlag);
  第三个参数则是一个 Boolean 值,指明该结点是否以DOM中所谓的捕捉模式来侦听事件。对于一个典型的事件侦听器来说,第三个参数应该为false(假)。

prototype在绑定事件的时候兼容IE和W3C的时候做的处理如下:
_observeAndCache: function(element, name, observer, useCapture) {
if (!this.observers) this.observers = [];
if (element.addEventListener) {//W3C DOM
this.observers.push([element, name, observer, useCapture]);
element.addEventListener(name, observer, useCapture);
} else if (element.attachEvent) {//IE5/Windows
this.observers.push([element, name, observer, useCapture]);
element.attachEvent(’on’ + name, observer);
}
}

撇开this.observers.pust([element,name,observer,useCapture])不谈,我们对4、5所说的事件绑定就很清楚了。我们知道prototype的此方法的useCapture在IE下没有作用,只对W3C的事件处理机制起作用。
纪念哥哥

纪念哥哥

昨天是哥哥离开我们5周年的日子,也是愚人节,所以,没有在昨天写下纪念之词。

哥哥走的时候,一直以为消息是假的,毕竟愚人节嘛,什么事情都有可能发生,然而,他的离去却并非愚人。唐唐最后还是参加了哥哥的葬礼。

当爱已成往事,风继续吹。80年代后的人或许永远不会理解为什么我们这代人会迷上哥哥、BEYOND、校长、歌神这些人,在那消息闭塞的年代里,他们的歌带着我们走过了一年又一年。

如今,这快餐时代,新的明星歌星不断的上上下下,进进出出,谁又能够象以前的老艺人一样,存在我们的心里几十年呢?

再次怀念一下。

PS:由于PHP上传功能有限,传了一个缩减版的《当爱已经往事》……

VI键位表

从群里面挖来的宝哦,linux用户应该是必备的吧。最起码,是省得翻手册了