手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表2024年11月的文章

生日一天

一天中所拍摄的照片。。

大小: 52.52 K
尺寸: 500 x 375
浏览: 2288 次
点击打开新窗口浏览全图

大小: 56.91 K
尺寸: 500 x 375
浏览: 2546 次
点击打开新窗口浏览全图

大小: 38.2 K
尺寸: 282 x 376
浏览: 2268 次
点击打开新窗口浏览全图

大小: 56.01 K
尺寸: 500 x 375
浏览: 2337 次
点击打开新窗口浏览全图

大小: 55.53 K
尺寸: 500 x 375
浏览: 2482 次
点击打开新窗口浏览全图

更多相册请点击:http://picasaweb.google.com/xiaoyy2008/20090620#

Tags: 生日, 肖佑阳

征求意见:关于phped的虚拟空格

phped是一款PHP IDE,用下来感觉还不错
但是有一个功能是我最受不了的
就是虚拟空格。。。

鼠标点到哪里,就可以直接在哪里进行输入。
对于页面的控制不太好。不知道哪里可以关掉

顺便,再请各位看到本文推荐一款IDE
1、项目管理方便点
2、没有虚拟空格
3、在项目中可以指定单个文件编码
4、对于类或者函数的提示速度要快,要完善
5、对于单例化的class或者工厂模式的CLASS要能够进行提示

这么多,应该是每个用IDE的人都想解决的问题吧?
不知道有没有哪个IDE能够提供。。。

常用JS代码

两个常用的JS代码

Utf8
  1. /** 
  2. * 
  3. *  UTF-8 data encode / decode 
  4. *  http://www.webtoolkit.info/ 
  5. * 
  6. **/  
  7.    
  8. var Utf8 = {  
  9.    
  10.     // public method for url encoding  
  11.     encode : function (string) {  
  12.         string = string.replace(/\r\n/g,"\n");  
  13.         var utftext = "";  
  14.    
  15.         for (var n = 0; n < string.length; n++) {  
  16.    
  17.             var c = string.charCodeAt(n);  
  18.    
  19.             if (c < 128) {  
  20.                 utftext += String.fromCharCode(c);  
  21.             }  
  22.             else if((c > 127) && (c < 2048)) {  
  23.                 utftext += String.fromCharCode((c >> 6) | 192);  
  24.                 utftext += String.fromCharCode((c & 63) | 128);  
  25.             }  
  26.             else {  
  27.                 utftext += String.fromCharCode((c >> 12) | 224);  
  28.                 utftext += String.fromCharCode(((c >> 6) & 63) | 128);  
  29.                 utftext += String.fromCharCode((c & 63) | 128);  
  30.             }  
  31.    
  32.         }  
  33.    
  34.         return utftext;  
  35.     },  
  36.    
  37.     // public method for url decoding  
  38.     decode : function (utftext) {  
  39.         var string = "";  
  40.         var i = 0;  
  41.         var c = c1 = c2 = 0;  
  42.    
  43.         while ( i < utftext.length ) {  
  44.    
  45.             c = utftext.charCodeAt(i);  
  46.    
  47.             if (c < 128) {  
  48.                 string += String.fromCharCode(c);  
  49.                 i++;  
  50.             }  
  51.             else if((c > 191) && (c < 224)) {  
  52.                 c2 = utftext.charCodeAt(i+1);  
  53.                 string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));  
  54.                 i += 2;  
  55.             }  
  56.             else {  
  57.                 c2 = utftext.charCodeAt(i+1);  
  58.                 c3 = utftext.charCodeAt(i+2);  
  59.                 string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));  
  60.                 i += 3;  
  61.             }  
  62.    
  63.         }  
  64.    
  65.         return string;  
  66.     }  
  67.    
  68. }  
Base64
  1. /** 
  2. * 
  3. *  Base64 encode / decode 
  4. *  http://www.webtoolkit.info/ 
  5. * 
  6. **/  
  7.    
  8. var Base64 = {  
  9.    
  10.     // private property  
  11.     _keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",  
  12.    
  13.     // public method for encoding  
  14.     encode : function (input) {  
  15.         var output = "";  
  16.         var chr1, chr2, chr3, enc1, enc2, enc3, enc4;  
  17.         var i = 0;  
  18.    
  19.         input = Base64._utf8_encode(input);  
  20.    
  21.         while (i < input.length) {  
  22.    
  23.             chr1 = input.charCodeAt(i++);  
  24.             chr2 = input.charCodeAt(i++);  
  25.             chr3 = input.charCodeAt(i++);  
  26.    
  27.             enc1 = chr1 >> 2;  
  28.             enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);  
  29.             enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);  
  30.             enc4 = chr3 & 63;  
  31.    
  32.             if (isNaN(chr2)) {  
  33.                 enc3 = enc4 = 64;  
  34.             } else if (isNaN(chr3)) {  
  35.                 enc4 = 64;  
  36.             }  
  37.    
  38.             output = output +  
  39.             this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +  
  40.             this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);  
  41.    
  42.         }  
  43.    
  44.         return output;  
  45.     },  
  46.    
  47.     // public method for decoding  
  48.     decode : function (input) {  
  49.         var output = "";  
  50.         var chr1, chr2, chr3;  
  51.         var enc1, enc2, enc3, enc4;  
  52.         var i = 0;  
  53.    
  54.         input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");  
  55.    
  56.         while (i < input.length) {  
  57.    
  58.             enc1 = this._keyStr.indexOf(input.charAt(i++));  
  59.             enc2 = this._keyStr.indexOf(input.charAt(i++));  
  60.             enc3 = this._keyStr.indexOf(input.charAt(i++));  
  61.             enc4 = this._keyStr.indexOf(input.charAt(i++));  
  62.    
  63.             chr1 = (enc1 << 2) | (enc2 >> 4);  
  64.             chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);  
  65.             chr3 = ((enc3 & 3) << 6) | enc4;  
  66.    
  67.             output = output + String.fromCharCode(chr1);  
  68.    
  69.             if (enc3 != 64) {  
  70.                 output = output + String.fromCharCode(chr2);  
  71.             }  
  72.             if (enc4 != 64) {  
  73.                 output = output + String.fromCharCode(chr3);  
  74.             }  
  75.    
  76.         }  
  77.    
  78.         output = Base64._utf8_decode(output);  
  79.    
  80.         return output;  
  81.    
  82.     },  
  83.    
  84.     // private method for UTF-8 encoding  
  85.     _utf8_encode : function (string) {  
  86.         string = string.replace(/\r\n/g,"\n");  
  87.         var utftext = "";  
  88.    
  89.         for (var n = 0; n < string.length; n++) {  
  90.    
  91.             var c = string.charCodeAt(n);  
  92.    
  93.             if (c < 128) {  
  94.                 utftext += String.fromCharCode(c);  
  95.             }  
  96.             else if((c > 127) && (c < 2048)) {  
  97.                 utftext += String.fromCharCode((c >> 6) | 192);  
  98.                 utftext += String.fromCharCode((c & 63) | 128);  
  99.             }  
  100.             else {  
  101.                 utftext += String.fromCharCode((c >> 12) | 224);  
  102.                 utftext += String.fromCharCode(((c >> 6) & 63) | 128);  
  103.                 utftext += String.fromCharCode((c & 63) | 128);  
  104.             }  
  105.    
  106.         }  
  107.    
  108.         return utftext;  
  109.     },  
  110.    
  111.     // private method for UTF-8 decoding  
  112.     _utf8_decode : function (utftext) {  
  113.         var string = "";  
  114.         var i = 0;  
  115.         var c = c1 = c2 = 0;  
  116.    
  117.         while ( i < utftext.length ) {  
  118.    
  119.             c = utftext.charCodeAt(i);  
  120.    
  121.             if (c < 128) {  
  122.                 string += String.fromCharCode(c);  
  123.                 i++;  
  124.             }  
  125.             else if((c > 191) && (c < 224)) {  
  126.                 c2 = utftext.charCodeAt(i+1);  
  127.                 string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));  
  128.                 i += 2;  
  129.             }  
  130.             else {  
  131.                 c2 = utftext.charCodeAt(i+1);  
  132.                 c3 = utftext.charCodeAt(i+2);  
  133.                 string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));  
  134.                 i += 3;  
  135.             }  
  136.    
  137.         }  
  138.    
  139.         return string;  
  140.     }  
  141.    
  142. }  

这两个应该是比较常用的了。不管是在AJAX中还是在其他中,都应该是很有用的

Tags: utf8, base64

一周岁了

Tags: 肖佑阳, 一周岁, 阳历

龙芯获MIPS专利授权 将支持Android

据cnbeta报道:龙芯获MIPS专利授权 将支持Android
6月16日消息,中国自主研发的CPU龙芯近日获得了MIPS授权。MIPS Technologies周一称,中国科学院计算技术研究所(简称计算所)已经获得MIPS32与MIPS64架构的授权,技术将用于开发龙芯CPU。 龙芯之痛,卡在专利关口

知名IT杂志《PC World》撰文称:“龙芯的支持者希望终有一天这款产品能渗透外国市场,但现在使用该芯片的设备在中国也寥寥无几,龙芯的MIPS核心使得它与英特尔AMD的X86结构PC不兼容。”龙芯使用MIPS架构,既是无奈,更是被迫。

在中国自力更生研发CPU的过程中,曾使用用“MIPS-like”的词汇来形容龙芯(修改版本的MIPS),此举招致MIPS Technologies的不满,因而一直未获授权。这几年来,计算所不断与MIPS Technologies谈判,希望获得技术授权,但一直未果。无奈之下,计算所只好退而求其次,与意法半导体合作,因为它拥有MIPS授权。以龙芯为核 心的CPU也在意法半导体的网页有所介绍,其名字为更商业化的“Loongson”。龙芯难产,卡在专利一关。

龙芯将支持Android 年底推新款低价CPU

中国科学院计算技术研究所“龙芯1号”研制组组长胡伟武说,尽管这几年龙芯推出了新品,但一直不准在上面贴上‘MIPS-compatible’标签。现 在问题终于解决了。他还表示,研究所正在对一些芯片做兼容性测试。获得MIPS授权是一个大进步,它意味着龙芯可以支持Google的Android平 台。胡伟武表示:“无论是否推出装有龙芯CPU与Android的设备,计算所都将与寻找一些商业伙伴,努力将芯片植入它们的产品中。”

MIPS Technologies公司亚太区的副总Mark Pittman说:“在我们看来,授权将缩短龙芯进入市场化的时间。”因为计算所再也不用通过意法半导体来设计芯片了。

据计算所介绍,龙芯将同时进入高端与低端产品线,设计完全其于第一款高端芯片——4核心龙芯3代,它也是第一款多核龙芯。今年晚些时候,计算所还将推出低端的龙芯,即1GHz的Godson 2g。

附:
MIPS Technologies是一家设计制造高性能、高档次及嵌入式32位和64位处理器的厂商,在RISC处理器方面占有重要地位。1984年,MIPS计算机公司成立。1992年,SGI收购了MIPS计算机公司。


有人说,龙芯买授权花了N多钱,还有人对龙芯购买授权很不理解,为此,龙芯论坛超版九门提督这样说:

要说明白龙芯为什么拿MIPS授权要回答一下几个问题:
1、龙芯为什么要选择MIPS指令集而不是x86指令集?
2、龙芯为什么是现在才取得授权而不是8年前?
3、现在MIPS授权对龙芯发展有什么帮助?


一、现在回答第一个问题,龙芯为什么要选择MIPS指令集而不是x86指令集?
     大家应该都知道,计算所准备研制龙芯是2000年左右的事,20015月正式开始研制,第一个要解决的问题就是选择什么架构什么指令集,当然龙芯选择了RISC架构,而不是CISC架构。架构的事我们不谈(如果将来有人由于架构的关系说龙芯是冒牌货,没有技术含量,忽悠纳税人的钱,就如现在的情况,那我们再谈,当然架构也是广义指令集)。
       确定了架构开始确定使用何种指令集,两条路:一、自己开发指令集;二、采用已有指令集。
要自己开发出指令集并不难,我国早期的计算机采用的就是自己开发的指令集,如果大家想知道相关的情况,可在百度输入“夏培肃”来了解,比如107计算机、银河系列计算机,在局部取得了成功,但是它们是用在专有领域,不存在和别人竞争通用市场的问题。外国科技企业再牛也不敢找中国人民解放军的麻烦不是么?
       难就难在指令集要为整个业界所接受,成为标准之一并推向世界。
       打个比方,我开发了一个名叫“小强”的指令集,研发了基于“小强”的CPU,然后呢?然后你要卖CPU啊!可是你这个CPU,市面上没有配套的操作系统,更别说应用软件!你怎么办?你要开发基于“小强”的编译器、BIOS、操作系统、应用软件……。你要把这些东西都推广出去,让别人去接受,让别人把自己现有的东西都迁移到“小强”上来——这是一个何其浩大的工程——用屁股想都知道不可能。你会发现你家除了一窝“小强”什么也没有!!!
       以上说了七八轱辘的话,我想我们大家应该有个共识:龙芯不能独创一个全新的指令集。如果还有朋友不同意这个观点,那么以下的文字对你来说都是废话,你可以不用看了。
       龙芯要选择已有的指令集,现在指令集有很多,但可供龙芯选的稍微思考一下就只剩X86MIPS了,当然还有ARM,但ARM得授权方式虽然好,却使龙芯失去了独立的研发经历,没有任何安全可言。
       要选择X86么?我们知道计算所对龙芯的定位是通用CPU,通用CPU的老大是INTEL,龙芯只要研发出来,不论性能如何,从性质上说,就是INTEL的竞争对手,何况背后还有中国政府的支持。如果我是INTEL我会很高兴计算所选择了X86指令集,我会提供给计算所不高不低的技术支持,要他研究一个不好不坏的CPU,等他壮大一点,我就掐死一点,造个舆论,骂下计算所,多要点授权费,然后再多给点授权,让龙芯的市场再大一点,然后如此这般再来一边,最后计算所痛苦的发现,原来替INTEL做嫁衣裳。
       最后李国杰和胡伟武被骂成汉奸,买办,卖国贼,白痴,最终被钉在历史的耻辱柱上。
       亲爱的你还会选择X86架构么?
       最后只剩MIPS了。MIPS的最大竞争对手是谁呢?自然是X86啊,换句话说几乎就是INTEL啊。从这个程度上说龙芯和MIPS的大目标是一致的。
       尤其重要的是,MIPS经过几十年发展,是一种优秀的精简指令集,但是MIPSSGI抛弃后就江河日下,上个世纪90年代的辉煌已经过去,现在几乎沦落到靠卖个指令集的授权吃饭,今天上了下ARMMIPS的网站,两者气象完全不同,MIPS卖了个授权给计算所,就毫不犹豫的把新闻放在公司首页,如此可见一般。
通过提供MIPS指令集授权来获取授权费,这是MIPS现在比较现实的商业模式,承认与否也是这样。
到现在为止,大家应该明白,选择MIPS指令集是龙芯最理想也最现实的选择。
好了,第一个问题,回答完了。
二、龙芯为什么是现在才取得授权而不是8年前?
       计算所的一帮学究刚开始设计龙芯的时候,估计也没有仔细考虑将来产业化的情况,毕竟当时连什么时候能设计出来都没谱。但是关于指令集的问题,是经过仔细考虑的,在设计时采用MIPS指令集,几乎所有指令都是过了保护期的,可以自由使用,虽然落后,但那是千锤百炼,经过市场检验的东西。其它没有开放的指令,通过用其他相似指令代替和与ST的合作来解决。
       网上传说计算所花了500万美元获得了mips的正式授权,此价格我还没有确认,但肯定是不菲的,500万美元合3500万人民币左右,这可不是一笔小钱!大家想想八年前MIPS心气多高啊,当时的要价绝对要比500万美元高多了,计算所哪出得起啊。龙芯刚刚开发的时候,是计算所自己的1000万人民币创新基金拿出来搞的,可没有什么国家的科研经费(你要说计算所属于国家,这钱也是国家的,哪我没话可说)。这点钱,当时的MIPS绝对看不上眼,而且MIPS当时认为中国人开发通用CPU有一种中国男足拿世界杯的感觉。
       八年以后,龙芯虽然没有多好,但他有了自己的产品线,有了明确的发展规划,有了初步的产业化成果,有了国家的国民的大力支持。
       所以,为了MIPS和龙芯的发展,龙芯拿到了授权。

三、现在MIPS授权对龙芯发展有什么帮助?
       龙芯发展了8年多,大部分指令集是MIPS的,受专利保护的指令集自己做了扩展,但是还是对MIPS指令集的软件在龙芯上的使用有很多冲突,现在好了,基于MIPS的软件都可以使用了。龙芯有了具有自主知识产权的架构,又能使用MIPS所有的指令集,现阶段来说,是最好的结果。好多朋友以为,我们采用MIPS指令集就是采用了MIPS提供的核,这根本就两回事。这种情况,一般出现在ARM的合作伙伴上。
       在国外销售不会有版权冲突,不会再仰仗ST这个第三方,以后ST就是纯粹的代工企业。将来和ST谈起来,筹码更多了。
       还有 很多很多。。。。
       就像当年没有钱拿授权现在可以一样。我希望龙芯将来强大了,直接买下MIPS公司。这才是终极解决方案——这也是我内心的深切愿望。

本文最初在yhustc的博客上看到,全部内容来自于网上

引:

1、妓者? http://yhustc.com/Blog/175.html

2、龙芯获MIPS专利授权 将支持Android    http://www.cnbeta.com/articles/86691.htm

3、关于龙芯拿MIPS授权的再一点理解  http://www.lemote.com/bbs/viewthread.php?tid=23886&extra=page%3D1

Tags: 龙芯, mips, android