开始时使用了cywin但是感觉不怎么爽,于是下了虚拟机来安装,详细的安装过程请点击这里是英文的,步骤已经很详细了,所以应该不需要翻译大家都能看懂了。 但是我按这步骤安装,还是需要问题。 在第7步之前一切顺利,但是到了第7步安装 git clone git://github.com/ry/node.git 出现问题,首先这个URL已经不再使用,正确的URL是: git clone git://github.com/joyent/node.git 但是不论怎么尝试返回的都是: github.com[0:20798.227.239]: errno=Connection timed out 非常头疼,电脑可以访问但是这样却不可以吗? 但是我尝试着使用 git clone http://github.com/joyent/node.git 就可以正常顺利安装。 第8步已经可以正确执行,不会再报错。 然后按着原谅顺序执行即可。
windows安装node.js
星期三, 三月 23rd, 2011javascript 函数备忘 – indexOf
星期三, 三月 2nd, 2011if (!Array.prototype.indexOf) { Array.prototype.indexOf = function(elt /*, from*/) { var len = this.length; var from = Number(arguments[1]) || 0; from = (from < 0) ? Math.ceil(from) : Math.floor(from); if (from < 0) from += len; for (; from < len; from++) { if (from in this && this[from] === elt) return from; } return -1; [...]
htc magic 把mp3设置为铃声
星期六, 二月 26th, 2011使用magic时会经常下载音乐,但是却不能设置为手机铃声,系统自己也没有这个功能,而第三方软件也很少。 今天偶然使用QQ 音乐 Android版本 在里面选择相应的歌曲,然后按住,弹出菜单里面就有设置为手机铃声,这下就方便了,把音乐都扫描到里面,然后一天换一曲,哈哈。
Bluehost主机开户GZIP
星期三, 二月 23rd, 2011在主机的public_html目录新建一个文件命名为php.ini,然后把代码考进去,代码如下: zlib.output_compression = On; zlib.output_compression_level = 6; 然后登陆主机,在Cpanel面板上点击Software/Services里面的PHP Config 选择php5 (Single php.ini)或者php5 (FastCGI)其中一个就行,我使用的是前者 点击Save Changes 之后就可以使用Gzip了,但是可能会发现你的主机只是HTML进行Gzip而CSS与JS没有Gzip。 可以把Wordpress的Cache插件缓存清空一下。 或者到whatsmyip检查一下是否已经生效 2011-3-3更新 最终使用这种方法只能对php进行压缩,不能对html/css/js进行压缩。 所以针对css与js还是建议使用Google Closure自己进行压缩比较方便与保险。
ie6 javascript:void(0);
星期三, 二月 16th, 2011遇到过几次这种问题,现在总结一下。 代码: <a onclick="window.location.href=’http://www.google.com’" href="javascript:void(0);">google</a> 这段代码在主流的浏览器里面都没问题,但是在IE6下就会出现不能跳转的现象。 经过一翻排查,发现绑定的事件都会执行,是由于DOM本身的冒泡事件所以会最后执行href属性内的javascript:void(0);导致的。 a标签 a标签本来就是用来进行页面跳转的标签,其运行机制是告诉浏览器URL地址并且跳转。当然,我们可以在href属中直接执行javascript。 代码: <a href="javascript:alert(‘Hello!’);">Say Hello</a> Say Hello 这里由于javascript执行了alert函数,但是其返回的是null。所以a标签没有执行任何动作。 javascript:void(0); void(arg);可以理解为永远返回null的函数,但是其参数不能为空。其参数可以为任意的表达式甚至是函数。 代码: <a href="javascript:void(name = ‘will’); alert(‘Hello ‘ + name);">Say Hello</a> Say Hello 对IE6运行的猜想 IE6会先运行DOM本身绑定的事件,如onclick;如果没有阻止冒泡,则会顺序执行href属性。而void(0);正是不需要执行任何事件,则IE6告诉浏览器不执行任何事件(覆盖之前的动作),并且终止冒泡相当于return false;于是浏览器没有执行任何动作。 这样只要在onclick事件内阻止冒泡事件即可。 经过改进的代码为: <a onclick="window.location.href=’http://www.google.com’ return false;" href="javascript:void(0);">google</a> 这样在IE6下就可以正常运行了。 其他方法 当然可以不使用javascript:void(0);而改使用#也可以避免,href属性内的#本来的意思就是锚点#name所以当不指定任何锚时自然会到页面顶端并在URL后加入Hash symbol。 这里对于锚还有一个比较特殊的用法 当href属性的值是锚点时,但是又找不到该锚点,则相当于返回null,所以可以使用##来代替javascript:void(0); 当然前提是你的页面不要有锚点的名字是#的哟~
PHPnow开启Apache SSI
星期五, 二月 11th, 2011使用PHPnow开启Apache SSI的方法: 在根目录新建.htaccess文件 在文件内加入代码如下: AddType text/html .shtml AddOutputFilter INCLUDES .shtml AddType text/html .html AddOutputFilter INCLUDES .html Options -Indexes FollowSymLinks Includes 不用重启Apache即可使用
jQuery UI组件开发
星期五, 一月 28th, 2011对于jQuery大家都非常熟悉了,也许大家也早早就认识了jQuery UI,但是因为其可用的控件非常少所以放弃了,但是jQuery UI的设计与构造却是非常不错的。 基于Widget Factory的组件模式 从1.8版本开始jQuery UI把核心分为widget与core并且widget不依赖于core。 这样来讲,所有的组件都是基于Widget Factory所构建的,并且都继承于Widget Factory。 对于开发前端组件来说,需要更多的是一种规范,这种规范是可以让多人来合作的,并且对产出的组件有统一的编码风格与相同的基础方法。 Widget Bridge 如何实现把组件(Widget)与jQuery API相关联呢? jQuery UI提供了$.widget.bridge方法。 其实如果了解设计模式的话,应该会想到Bridge Pattern 中文详解 概念:【GOF95】在提出桥梁模式的时候指出,桥梁模式的用意是"将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化"。这句话有三个关键词,也就是抽象化、实现化和脱耦。 如果细心的话,你可能会发现,$.widget.bridge的源码在处理event其实就是jQuery Plugin的编写建议。 所以jQuery UI就是规范化的jQuery Plugin组合。 详细介绍见其开发指导见 Developer Guide jQuery其实只是冰山一角,在你使用中,会发现有更多东西可以去挖掘也非常值得去深入的挖掘。
ICON练习之二
星期三, 十二月 1st, 2010继续练习中 Jun临摹的练习的图标
ICON练习
星期一, 十一月 22nd, 2010Jun临摹的练习的图标
理解jQuery $.extend与$.fn.extend
星期四, 十一月 18th, 2010这两个方法一直都觉得挺难理解的,但是今天写程序时发现这两个方法的区别就在于$.extend是作用于一个object的静态方法(static method),而$.fn.extend是在作用于prototype的一个实例方法(instance method)。 构造jQuery时会实例化一个对象 // Define a local copy of jQuery var jQuery = function( selector, context ) { // The jQuery object is actually just the init constructor ‘enhanced’ return new jQuery.fn.init( selector, context ); }, 对于$.extend相当于对jQuery Object自身进行扩展。查看源码 … } else if ( copy !== undefined ) { target[ name ] = copy; } [...]
