Archive for 三月, 2009

一直要忙到四月底

Posted by 机器人 on 30th 三月 2009 in mylife

发现自己又有很多天没有写日记的,技术日记就更少了,前段时间看了两本书,一直没有抽出时间来和大家分享,等有时间了再一一和大家分享里面的精髓。
本来这个两个月没什么特殊时,按任务进程来看,四月底上购物频道,但现在摆在我们面前有几个问题,很需要马上解决。
1.老系统的代码写的太乱,很多功能已经删减,冗余代码多。
2.系统响应时间比较慢,需要从前端和后端来做优化。其实后端也没什么可优化的了,主要就是前端的,前端组件太多,第一次访问的体验很不好。
所以需要对系统进行重构和相应的优化。
虽然上面的问题很需要马上解决,但在项目进程中,没有安排系统的重构和系统优化。

今天下午开会就讨论了这个问题,这两件事应该怎么安排。
我当然提了下我的建议,现在的老系统很乱,很难维护,所以很需要马上对系统进行重构,然后基于新系统进行购物频道的开发,但这样可能会影响我们的进度,总监吴博士比较犹豫,然后提了我的建议:系统重构是肯定要做的,现在只是时间的问题,如果现在新的频道马上做的话,也只能基于老系统开发,会受到老系统很多不不合理约束,等频道先上线了,再做系统重构的话,那么要重构时,又要将刚上的频道包括在内,所以到时候又会重新架构该频道,这样会增加重构的工作量,和相应的难度,如果先做重构的话,可能时间会紧点,但一点新系统建立起来,那么再扩展新的频道将会变的相当容易,所以我建议不能为赶进度,而不顾系统的维护成本和开发代价,但又为了不让预定的工期延误太久,所以需要抓紧点,那怕加班也没关系,也要先把系统重构起来。当然后来都同事我的建议。

本来系统重构去年就开始提,但一直有任务干扰,迟迟没有作出决定,这次又差不多和以前一样,总感觉到没有一个相当空闲的时间段来完成这事,如果还和以前一样,我感觉重构的事儿可能又不知道要拖到什么时候,当然这最终的受害者是谁?大家可能也都能猜出来。

所以得连续加班,直到月底项目时间赶出来。
机器人 2009-03-30 23:29 于 北京

服了,居然中毒了!

Posted by 机器人 on 22nd 三月 2009 in mylife

今天打开电脑,进入XP,发现任务样居然打不开,居然中毒了!!
还好最后找到了解决的办法。
运行如下命令。

for %%1 in (%windir%\system32\*.dll) do regsvr32 /s %%1
for %%2 in (%windir%\system32\*.ocx) do regsvr32 /s %%2

重启OK。

机器人 2009-03-22 11:19 于 北京

收藏:Viewport Dimensions in Javascript

Posted by 机器人 on 20th 三月 2009 in php/javascript
var Client = {
  viewportWidth: function() {
    return self.innerWidth || (document.documentElement.clientWidth || document.body.clientWidth);
  },
 
  viewportHeight: function() {
    return self.innerHeight || (document.documentElement.clientHeight || document.body.clientHeight);
  },
 
  viewportSize: function() {
    return { width: this.viewportWidth(), height: this.viewportHeight() };
  }
};

引用:http://andrewdupont.net/2006/09/09/viewport-dimensions-in-javascript/
机器人 2009-03-20 13:20 于 北京

apache之mod_expires

Posted by 机器人 on 19th 三月 2009 in php/javascript

前面提前过yahoo前端工程师提出的14条网站性能优化的建议,第四条是通过mod-deflate模块来对网站内容进行压缩,从而减少页面大小。
其中第三条也提到了这里的mod_expires,就是通过延长页面组件的有效期来加速网页的加载。

因为浏览器在第一天打开了一个网站后,会对里面的图片、脚本等组件进行缓存,所以每次在第一次打开一个网站的时候,明显感觉到速度很慢,但第二次再浏览时,打开速度就会快很多,这就是因为第一次用户访问网站时,由于缓存过期,所以过期的组件需要从服务器上重新下载,那么第二次再打开相同的页面时,由于第一次已经下载过了这些组件,所以这次就直接从缓存里读取,而不需要从浏览器重新下载。
但默认的浏览器缓存时间是很短的,在浏览器关闭时,缓存就是失效,就是意味着,如果刚浏览的网页,在浏览器关闭后,再次浏览,又会重新下载所有的资源。但我们知道,这期间这些资源似乎都没有任何变化。所以在一段时间里,我们是没有必要再去下载这些资源的。
所以我们可能通过延长组件的过期时间来实现这样的要求。

纵观几天闻名网站,都对网站的过期时间进行了延长。

可以使用apache的mod_expires模块来实现这些模块。
编译模块时加上

--enable-expires

然后在配置文件中开启缓存功能。

 ExpiresActive On

延长图片、样式、脚本的过期时间

<filesmatch "\.(gif|jpg|js|css)$">
ExpiresDefault "access plus 10 years"
</filesmatch>

时间可以以年、月、周、小时、分钟、秒为单位来设置。

如果对于一个脚本的有效期延长10年,如果这期间用户不清除缓存,就意味着我们对脚本的所有修改都不会体现到用户。用户浏览页面时,还是使用先前缓存里的脚本。如果要让用户使用最新的脚本,就需要更改文件的链接地址。

所以为了每一次文件更新时,让用户重新下载最新的资源,我们可以将这些资源以版本号的形式来命名。如q_3.2.1.js.每次对其进行更新时,并更新相应的版本号。这样就可能解决用户既然下载最新资源的问题。如果资源不更改,用户还是从缓存读取资源。
嵌入版本号不仅能改变文件命,还能在高度时更容易的找到准确的源代码文件。

机器人 2009-03-19 0:06 于 北京

收藏:js绝对尺寸

Posted by 机器人 on 18th 三月 2009 in php/javascript
function getAbsHeight(ob){return ob.offsetHeight;}
function getAbsWidth(ob){return ob.offsetWidth;}
function getAbsLeft(ob){
	var s_el=0;el=ob;
	while(el){
		s_el=s_el+el.offsetLeft;
		el=el.offsetParent;
	};
	return s_el;
}
function getAbsTop(ob){
	var s_el=0;
	el=ob;
	while(el){
		s_el=s_el+el.offsetTop;
		el=el.offsetParent;
	};
	return s_el;
}

php,判断字符编码的又一种方法

Posted by 机器人 on 5th 三月 2009 in php/javascript

php怎么将字符转换成特定编码 中谈了几种判断一个字符是否是某一编码,当然这样判断的目的是为了将未知编码通过

 iconv()

转换成特定编码。
代码如下:

function isValidUtf8(&$str) {
	$out = iconv('UTF-8','UTF-8',$str);
	return $out == $str ? 1 : 0;
}

机器人 2009-03-05 13:52 于 北京 (今天感冒,请了一天假,在家休息)