•     Q群上有牛人指导看看《重构——改善既有代码的设计》这本书,介绍说“软件工程领域的超级经典巨著,与另一巨著《设计模式》并称"软工双雄",全美销量超过100000册,亚马逊书店五星书。在本书中,作者Martin Fowler充分展示了何处可能需要重构,以及如何将不好的设计改造为良好的设计。”

        很早以前就听说过《设计模式:可复用面向对象软件的基础》这本书,想买来看,一直没时间,希望下学期能如愿以偿。现留个记号,免得日后忘记...

  • 一本关于ajax新手的怪书

    日期:2006-08-01 | 分类:

        这本书早上看到的,叫《AJAX——新手快车道》。时间紧迫,粗略浏览一番,正如书上所说,前半部分是害人的,代码乱七八糟,还IE ONLY。不过,后半部杀出一个ajax大法师(竟有这样的书,汗),情况才得以好转。不但将前面的代码来一个大重构,还道出一些开发应注意的细节,这部分还相当不错(对新手来说,me to)。全书虽只写了一个RSS阅读器,但ajax的很多基本功都使用到了,有时间一定要细读...

  • 发现保藏啦 YUI examples

    日期:2006-07-31 | 分类:

       在网上苦苦寻觅YUI(Yahoo! UI Library)的例子,终不得果,只有些许蛛丝马迹。一是linux公社的一篇 [分享]已经投入使用的Toolkit ,列了一段yahoo新首页图片框所使用的代码。为什么不去看看yahoo怎么用呢?可能因为它太大了,暂时不想或不愿去看,功夫未到加呀...

    二是geeklog2的一个更新log,包含两个js文件,在docs文档和build目录里都没有这两个文件。第一个文件比较有用,定义几个PhotoBox(图片框)的方法,拥有折叠,展开等效果。再查查yahoo的网站,也不见有这些介绍。奇了,难道是收藏品?

        再找,功夫不服有心人啊,原理宝藏就在脚下,在YUI的example的一些js目录下。一直都在看那几个例子的源代码,却没有发现那些js,汗!autocomplete,calendar,container,dragdrop,slidertreeview目录下都有例子的js文件,实在太感谢yahoo了,马上去研究......

  • 细心 细心 再细心 !

    日期:2006-07-31 | 分类:

    一时大意,被几个HTML代码折腾了一个下午...

    下面是我一个弹出框的小代码:

    <div id="report">
     <div class="hd" id="report_header">请输入举报内容</div>
     <div class="bd">
      <form name="reportForm" method="POST" action="?controller=Report&action=create">
       <p>举报内容:</p>
       <textarea name="body" id="report_body" cols="40" rows="8" ></textarea>
       <input type="hidden" name="item_id" id="item_id" value="">
      </form>
     </div>
    </div>

        原本我想当输入为空时,将header改为 '你输入的举报内容为空,请输入举报内容'。于是有了以下代码:

    var handleSubmit = function() {
     if(document.getElementById("report_body").value == '') {
     document.getElementById("report_header").value ='你输入的举报内容为空,请输入举报内容';
     return false;
     }
     this.submit();
    }

    但怎么试也没成功,用YUI的setHeader却可以,暂时敷衍了事...

        很久很久以后(故事发生在昨天),下午由于要加一段清空提示的代码,才发现这个问题:头部内容还是无法更改,查Module.js的代码,查文档都没有发现有价值的地方。最终还是仔细检查上面两段代码,才发现一个十分可笑的地方。见红色的value,那可不是输入框啊,晕!改为innerHTML后一切如我所愿...

  • YAHOO.util.Dom.setStyle 无法生效

    日期:2006-07-30 | 分类:

    再次耗费一个小时,发现YAHOO.util.Dom.setStyle无论如何都无法在我的代码中生效

    YAHOO.util.Dom.setStyle= ("div", "width", "100px");

    YAHOO.util.Dom.setStyle= ("div", "display", "none");

    YAHOO.util.Dom.setStyle= ("item", "display", "none");

    YAHOO.util.Dom.setStyle= ("div", "background-color", "red");

    ................................

    在网上看到别人这样写

    YAHOO.util.Dom.setStyle(["div1","div2","div3"], "color","red");

    YAHOO.util.Dom.setStyle(objDiv, 'height',t);

    YUI里的代码这样写

    DOM.setStyle(del, "visibility", "");

    DOM.setStyle(lel, "visibility", "hidden");

     我就是无法成功...

    可怜我现在的 toggle() 要写成这样了

    function toggle(obj) {
     var el = document.getElementById(obj);
     if ( YAHOO.util.Dom.getStyle(obj,'visibility') != 'hidden' ) {
      el.style.visibility='hidden';
     }
     else {
      el.style.visibility = 'visible';
     }
    }

  •     小小的一个代码框,竟耗时2.x小时,只怪自己技术不好...

    同时,blogbus也要负相应的责任,因为他的编辑框太差...

    下面为代码框测试:

        小小的一个代码框,竟耗时2.x小时,只怪自己技术不好...

    同时,blogbus也要负相应的责任,因为他的编辑框太差...

  •     早上用了dustindiaz的toggle() ,发现el.style.display 的取值不正常....

    原来除了内联的css外,不能直接这样取值,IE下可以用currentStyle顶替,firefox下就要通过document.defaultView.getComputedStyle(xxxl).getPropertyValue(xxx) 来取值,十分不方便,上网傻找了一通,无果....

        很幸运的是,YUI的DOM里面就内置了一个getStyle函数,可以直接取当前css的值。部分代码如下:

    if (property == 'opacity' && el.filters) {// IE opacity
        value = 1;
        try {
           value = el.filters.item('DXImageTransform.Microsoft.Alpha').opacity / 100;
        } catch(e) {
           try {
              value = el.filters.item('alpha').opacity / 100;
           } catch(e) {}
        }
     } else if (el.style[camel]) { // camelCase for valid styles
        value = el.style[camel];
     }
     else if (isIE && el.currentStyle && el.currentStyle[camel]) { // camelCase for currentStyle; isIE to workaround broken Opera 9 currentStyle
        value = el.currentStyle[camel];
     }
     else if ( dv && dv.getComputedStyle ) { // hyphen-case for computedStyle
        var computed = dv.getComputedStyle(el, '');
       
        if (computed && computed.getPropertyValue(hyphen)) {
           value = computed.getPropertyValue(hyphen);
        }
    }

    现在修改一下toggle() ,

    function toggle(obj) {
     var el = YAHOO.util.Dom.getStyle(obj, "visibility");
     if ( el != 'hidden' ) {
      YAHOO.util.Dom.setStyle(obj, "visibility", "hidden");
     }
     else {
      YAHOO.util.Dom.setStyle= (obj, "visibility", "visible"); }
    }

    搞定!现在效率虽然是相对差了些,不过方便易用多了^-^

    如果不喜欢YUI,还有另外一个通用函数:

    function GetCurrentStyle (obj, prop) {
    if (obj.currentStyle) {
    return obj.currentStyle[prop];
    }
    else if (window.getComputedStyle) {
    prop = prop.replace (/([A-Z])/g, "-$1");
    prop = prop.toLowerCase ();
    return window.getComputedStyle (obj, "").getPropertyValue(prop);
    }
    return null;
    }

  • 接上篇,还附一个美元$ 函数 ...来自Prototype...

    <确实厉害,不仅能取某一元素,还能去一堆的元素>

    Last but not least, a bonus function: The Prototype Dollar Function

    function $() {
    var elements = new Array();
    for (var i = 0; i < arguments.length; i++) {
    var element = arguments[i];
    if (typeof element == 'string')
    element = document.getElementById(element);
    if (arguments.length == 1)
    return element;
    elements.push(element);
    }
    return elements;
    }

    // Sample Usage:
    var obj1 = document.getElementById('element1');
    var obj2 = document.getElementById('element2');
    function alertElements() {
      var i;
      var elements = $('a','b','c',obj1,obj2,'d','e');
      for ( i=0;i

    附一句,blogbus的编辑器太差太难用了!!!

  • 今天再遇怪事 关于编码

    日期:2006-07-29 | 分类:

        一直程序都乖乖的显示中文,先前AJAX get 取得的数据乱码在php输出一个

    header('Content-Type:text/html;charset=GB2312'); 搞定。

        今天因为要输入中文数据,post后的数据死活乱码。搜索一下,原来是xmlhttp提交的数据为utf-8编码。原本打算将程序都换成utf-8算了,但是找了很久,找到的软件都不是很好。如果真的转换,还要将数据库编码都要改,改动相当大。

        没办法,唯有放弃这种方法,只将输入的utf-8转换成gb2312算了,反正需要输入中文的地方不多(项目小……^-^)。将就一下,在需要的地方来一个

    iconv("UTF-8", "GB2312", $_POST['submit']); 就行了...

  • 又遇怪事 光驱能读DVD却不能读CD

    日期:2006-07-29 | 分类:

        刚刚朋友打电话来求救,说他朋友的台式品牌机的光驱神了!能读DVD却不能读CD。第一次听到有这样的故障,一时还不能反应过来。据他说,已试了几个光盘,光驱为comble。一般品牌机不会用双光头的光驱,实在没办法,就叫他换一下数据线试试。

        也许,这光驱也快退休了...