2010 年 03 月

浏览模式: 标准 | 列表 | 图文
Javascript:不要将属性写在prototype里

Javascript:不要将属性写在prototype里

没有仔细研究过,但觉得得这就象PHP的类(Class)的复制和引用的关系。好象差不多。

原文来自:http://www.beiju123.cn/blog/?p=304

年前,某次分享会上听玉伯偶然说了这句话,当时糊里糊涂,不明所以,偶然有一天我做一个东西,发现某个对象的实例之间竟然会互相操作了定义在 prototype里的属性,于是我验证了下:

var objA=function(){

}
objA.prototype={
name:{},
setName:function(str){
this.name=str;
},
getName:function(){
return this.name;
}
}
var a=new objA();

var b=new objA();
//a.name={firstname:"孙",fathername:"信宇"};//undefined
a.name.firstname="孙";//弹出sun
alert(b.name.firstname);

在这个例子里,当我修改实例a的name属性的时候,实例b的name属性页跟着变了,而且说明他们引用了同一份对象.

如果name属性是值类型,例如字符串,就不会与这种问题了,那是因为字符串每次被操作都返回新实例,当然反映不出冲突来了.
那为什么会出现这种冲突呢?
专业术语我不太会讲,但是prototype这种原型继承的好处其实就是节省程序运行空间,当你从objA实例化两个实例:a和b时,并不会创建两份属性 和方法,而是把他们都指向一份属性和方法,所以prototype里的所有的东西都被所有的实例共享,实例中保存的只是一个json索引.
正因为如此,如果整个改变name的值的话,让他指向别的对象,这样就不会互相影响了,而且对于值类型来说,本质就是每次操作都会返回新的实例,所以不会 出现冲突.
对于这种冲突来说,最好的解决办法就是将属性从prototype里移出来,写在构造函数里:

var objA=function(){
this.name={}
}
objA.prototype={
setName:function(str){
this.name=str;
},
getName:function(){
return this.name;
}
}

这样再试一次就会发现,每次创建实例都会创建一个新的name属性对象,而不是指向同一个对象;
也可以在prototype理的init方法里用this.name={}来初始化配置参数,属性等内容,反正就是不能写在prototype里面.但是 可以在函数里初始化定义.

还有一点要注意:我个人认为,js里所有的东西都是对象,包括值类型,他们之所以表现出非引用类型的性质,是因为每次对这些对象操作都会返回新的实 例,这只是一种假象,事实上可以说,js里所有的东西都是引用类型,只是值类型在被操作时引用总是被改变,表面上来看就是非引用类型了.

--EOF--

即使是上面的情况,我还是认为可以看看

http://lifesinger.org/blog/2009/01/javascript-run-mechanism/

http://www.cnblogs.com/rainman/archive/2009/04/28/1445687.html

带动画的GIF图片在IE中不能正常工作

这个问题,怎么说呢,先把症状重复一遍吧:IE显示了图片,但是动画却不能播放。而在FirFox中却能正常的工作。
一直以来,我都以为是浏览器的关系。没有设定好而导致这种情况发生,比如一些在IE核心上开发的浏览器(maxthon)等,都可以把GIF动画关闭的。所以我也就没有仔细研究过。

来看看这个:
IE和FirFox在很多地方都有着或多或少的不同,这导致在开发时需要考虑很多的特殊情况。在最近的项目中居然发现带动画的GIF图片在页面Load之 后再以脚本控制的方式展现时,动画不能表现出来。在我的项目中,需要在点击一个按钮后来显示一个动态的Loading图片以此表示程序正在进行后台处理。 这是通过一段jQuery代码来实现的:

<font size="3" face="Calibri"><script language="javascript" type="text/javascript">function showMessage() {
......
$("div#Processing").show();
......
}</script>
<div id="Processing" style="display: none">
<center>
<img src="placeOrder_processing.gif" />
</center>
</div></font>

E显示了图片,但是动画却不能播放。而在FirFox中却能正常的工作。当你将整个DIV加入到DOM中时,这个DIV是隐藏的,不可见的。但是当你将其 属性设置为可见时,动画却不能被正常播放。如果将带动画的GIF图片直接以可见的形式加入到DOM中,它是可以正确的现实并播放动画的。那么,可以这样更 改代码:

<font size="3" face="Calibri"><script language="javascript" type="text/javascript">
function showMessage() {

$("div#Processing").show();
var imgSrc = '<%=ResolveUrl("~/Images/Checkout/placeOrder_processing.gif") %>';
$("td#imgSection").append("<img src='" + imgSrc + "'/>");

}
</script></font>

这样,在可见的内容中将Img加入到DOM中就可以解决这个问题了。
--EOF--
贴出这个案例地址是在:http://www.cnblogs.com/zlgcool/archive/2010/03/15/1686507.html,真的很意外的例子,所以就记录下来了

听说,宗庆后提议应禁止学生用电脑写作业

听说,宗庆后提议应禁止学生用电脑写作业

在cnbeta上看到这个新闻,心里还是觉得挺有必要,自从电脑普及后,提笔忘字的情况越来越多了。不过,象我这种打五笔的还要好一点,那些打拼音的,估计就惨了。事实上也是如此,经常看到某个字很象啥啥,然后就越看越不象。郁闷的。。。

小孩子正在一个学习阶段,所以我觉得还是有必要一定要手写,毕竟我可不想以后的小孩写出去的文章错别字连篇,甚至于连自己名字都写不来吧。我也不求小孩的字象书法家一样,但最起码要端端正正的吧?端正写字,正直做人,还是有必要的。

以下是Cnbeta上的内容,来源网址是 http://www.cnbeta.com/articles/106181.htm:

随着信息化社会的来临和电脑的普及运用,目前大部分中小学校、高等院校都不重视学生的书写训练,只有部分学校在美术课中开设了书法课。若 不及时在学校教育 中加强对学生的书写训练,不仅会造成国人书写不美观,还有可能造成汉字书写这一传统文化的断代、丢失。为此,全国人大代表、杭州娃哈哈集团有限公司董事长 兼总经理宗庆后建议在学校教育中加强对学生的书写训练。

宗庆后建议,在学校教育中开设专门的书写训练必修课,并严格规定训练课时,要对学生的书写水平进行考核,不上足规定课时,不达到一定水平不能毕 业。

宗庆后认为,电脑的普遍使用确实给学校教育的教与学都带来了很大方便,但弊端也显而易见,最突出的表现就是学生的书写能力严重退化。宗庆后建议学生的作业 一律用手写,不能用电脑,学校强制执行。

宗庆后还建议教育部门将书写水平纳入教育质量考核体系,首先对教师实行考核,如果达不到相关标准不能上课;对学校的书写教育总体状况进行考核,作为学校评 级的依据之一。
--EOF--
书写水平,我就不讲究啥了,小孩子的字也写不到哪里去,但老师的字也还是要讲究一下的,连字都写不好,怎么教书育人,再说了,练点字也不难,怎么就写不好呢?当一名老师,天天要写字,居然都练不好,怎么相信你能教育孩子。

功耗仅5W的国内第一台插座式计算机BTplug

功耗仅5W的国内第一台插座式计算机BTplug

刚看到这个新闻的时候,我还以为龙芯又出了新产品了。却不料真的是这样。。。听说国外也有类似产品。后来去文章内容里的网站看了一下。再搜索了一下,发现还是需要将近600元。所以一下子不知道觉得是否有意义了。反正我贴出来,随便大家看吧。

内容如下:

本来是打算配一台超低功耗PC机,用于做临时WebService。在网上查来查去,怎么配 都不满意,功耗始终很难突破50W大关。在翻阅了大半低功耗PC资料后,终于发现了一国外产品Sheevaplug,据说功耗只有区区5W不到。正当我兴奋不已时,却发现,这款产品是用的ARM架构。不过,我不死心,跟着这条线一路查下去,无意中被我看到了BTplug这款产品。

一开始,我还以为BTplug就是Sheevaplug被国人拿来简单包装的产品。不过再深 入了解后,我才知道,BTplug其实就是实实在在的国产货。其性能和Sheevaplug有过之而无不及。一样的超低功耗,一样的强大配置。最值得一提 的是这款产品可以支持Sheevaplug所不能支持的XP系统。

先来看看这款产品的配置:

- 约1GHz主频的CPU,支持应用最广的x86指令集
- 512M DDR2内存
- 2个USB2.0接口,PATA硬盘接口及串口、GPIO口
- 100M快速以太网接口

BTplug的体积很小,相当于移动硬盘大小,耗电不高于5W,只需要12V1A电源供电即可。怎么样?是不是很有吸引力?

--EOF--
网址是在http://bbs.btplug.cn,唉。图片上看上去好象不错

【PS】额,居然写了这么多年才被网友评论告诉我是BTplug而不是BTblug。。。我真挫啊。

网站线上线下推广的观后感

网站线上线下推广的观后感

作为一个网站,线上线下的推广确实十分重要,否则,真的就象那个酒香也怕巷子深 了。最近,我也一直在研究SEO,也在看什么样的东西最容易被人吸引,也在看着统计程序分析的来源关键字、网购兴趣等。

今天看到的是某人写的文章,截了一断过来:

线上推广一般指网络上的推广
如:
1.行业从业人员邮件通知,所谓群发邮件.
2.行业QQ群内群发信息. ps:QQ群邮件发送方便快捷.
3.网站关键字优化等
4.同行友情连接交换
5.如果有钱的话,手机短信群发(只发同行)
6.百度贴吧,QQ搜吧,有道快贴等发送自己的信息.
7.软文
以上的全做好了,基本上也能带来一定的流量与影响力.

线下推广的方式也不少,如:
1.传统的DM单子,名片等.
2.行业杂志广告.
3.生活中的广告牌位等.
......
还有很多种方式.线上加线下走完全部基本上也有点影响力加流量了,还有个最重要的是"坚持"

目前我是做线上的推广,但尽量不想花钱,否则推广就真的成了无底洞了。也不想发垃圾邮件,那毕竟还是属于垃圾网站的做法,我需要的是网站的回头客,回头率和在线率越高,跳出率越低,才是我所希望的。

当然那是对于单位的网站来说,资讯类的网站,容易有吸引人的地方,但技术类的就不一样了。技术类的网站上的广告几乎都没有人点的(我也一样不太点别人的广告,所以也不能要求别人点我的。呵呵)。

对edong的域名备案自动检测系统感到鸡动

我的服务器托管在edong 江阴机房 ,下午突然有人和我说放在我服务器上的一个域名不能被访问了。于是联系了一下edong,结果却发现我自己的neatstudio.com也不能被访问了。

访问提示都是:该域名因为未备案而被关闭。

当然,我的网站是已经备过案的,出现这个的原因是什么呢?是因为edong在我的服务器上装了一个监测软件(是apache的so组件),当别人访问我的服务器上的域名时,如果在他们的白名单里,那么就可以被访问,如果不在,那就会提示“该域名因为未备案而被关闭”

虽然不喜欢这种行为,但,总算还是可以被我接受的。毕竟在去年11月12月的时候,那时候都是直接拔网线的,如今只是提示一下,已经是很不错的进步了(只是我不知道这玩意有多耗资源)。仔细想想,我还是能理解,要知道去年有N多IDC被吊销执照,现在这么一点提示,怎么不能被接受?呵呵

只是以后就需要事先向他们申请加入白名单才行。

NeatCN.COM 另作他用了

NeatCN.COM 另作他用了

各位朋友,neatcn.com我算是正式作为团队信息的博客来使用了。
当然我会拉着walker和hihiyou过来写一些技术博客(心情也要写写的),但我要求技术尽量是原创,如果转载优秀代码,一定要做详细注释以及转载原因。

请朋友们还重新更新一下rss的链接哦。

Google Docs 可直接做 OCR 将图片转换为可编辑文本了

Google Docs 可直接做 OCR 将图片转换为可编辑文本了

说老实话,我真的认为我邪恶了,我在看到这个标题的时候,我想的居然是。。。。
等你们看完我转贴我再告诉你们,愚蠢的人类啊(套用凹凸慢的经典台词)。
原文来自:谷奥——探寻谷歌的奥秘 [http://www.google.org.cn]
72a5f75fcd4a96339849216220f97ae6

Documents List Data API今天增加两个实验性功能:OCR和文档翻译。

OCR可以直接将扫描图片里的文字转换为可编辑的文字,要实现为.png、.jpg或.gif图片做OCR,只需要在上传请求中加入 “ocr=true”参数即可:

POST /feeds/default/private/full?ocr=true HTTP/1.1

OCR目前只能识别高分辨率图片,而且还并不完美,不过Google会尽力做的更好。

API里新增的Google Translate翻译功 能,可以在你上传的时候就做翻译。只要在上传请求中增加targetLanguage(目标语言)和sourceLanguag(源语言)参数即可:

POST /feeds/default/private/full/?targetLanguage=de&sourceLanguage=en HTTP/1.1

如果你忽略sourceLanguag参数,Google会尝试自动识语言,Google Translate的所有语言都支持。

Via Digital Inspiration and Google Code Data APIs Blog

--EOF--
我承认,我看到这个功能能的第一个想法是,以后,验证码的识别可以通过这个接口来完成了。。。程序都不用自己写了,人可以变得越来越蠢了。

thinksns 不再开发了?

thinksns 不再开发了?

ThinkSNS是基于ThinkPHP框架开发的一款SNS程序,原本以为还是相对不错的程序,一些小的BUG也还能够接受,但听到这个消息(不再继续开发)后,心里哇凉哇凉的。

本来我也不知道的,但是在偶尔看discuz的uchome时,发现了这个投票,投票地址为:http://u.discuz.net/home/space-1293758-do-poll-pid-2017.html,内容大致如下:

RT,大家都知道,SNS即将过去.曾经我们离开过,去年我们团队又回来了,但是我们发现现在的网络形式已经不同了。因此我们不得不再次将 THINKSNS项目再次停止开发,将精力转向微博,细心的朋友会发现我们已经在开发微博了,大家可以看77661.CN。目前进行到V0.2版本,并且此版将在下周一前提供下载。新版演示可以参考Couxing.com

看到这个投票,心里能不哇凉哇凉吗?看来以后更加不敢用这些个人作品了。除非是以公司运作的、或者开源但功能完整,BUG不多的。

因为相对于thinksns来说,我投入的精力和修改BUG也花了不少精力,当初thinksns说改用thinkphp2.0开发的时候,本来还想着激动一下,结果,干脆说不开发了。唉。。现在的百思家网站的用户中心就是采用了这个thinkSNS,改动了很多功能,不再一一列出,主要还是由于是商业网站不太适合改动,我仅说一点小小的吧,那就是博客的分类与相册的分类整合(而且还是用的另外的表,并非他原先的表结构)。

想来想去,最多到6月份左右,我想我还是会回到UCH上面吧?基于几个原因:

  1. 官方不再开发,而小BUG太多
  2. 冗余代码太多,无法细细清除
  3. theme更换的时候,必须要cleancache,否则无效(因此,在任何情况下,也只能拥有一套皮肤)
  4. 原始模版写的有点糟糕,可能是赶时间写的。。。改一个小地方,都要同时改4、5个模版
牛人:在家里也能玩真实的F1

牛人:在家里也能玩真实的F1

好羡慕啊。。。在家里玩F1。。看看

不羡慕也不行啊,对于有疑问的朋友,可以看看这个回复:

那些不明白为何上下不停摆动的人,最好把所有评论看了。
关键是显示器永远跟他的视线保持垂直,上下摆动只不过是相对于我们旁观者罢了。这样玩家只有身体感受到作用力而视觉上不会出现上下摆动的效果。
当然,假如玩家在玩的过程中不把注意力集中在显示器上的话,肯定会受到周围环境的影响而降低拟真度,不过话说回来开赛车估计没人会分散注意力吧,呵呵。
视频需要观看整台机器所以开灯,平时玩的时候把灯关掉会好很多。
不明白的人可以问,别乱喷来突显你的无知。