John's profileballboy yes! It's me! 我的...PhotosBlogListsMore Tools Help

Blog


    November 04

    javascript的undefined

    javascript除了 if(a= =null)的判斷外
     
    另外還有undefined 即未定義
     
    if(cm.getColumnById(j).renderer==undefined)
    November 03

    EXTJS修改css

    透過firefox的firebug
    找出相對應元件的css class
    在另一個自建的css檔內定義要改寫的部分即可!
    當然了! 網頁要引入自建的css檔!
    October 16

    jdbc driver

    有時jdbc driver找不到是因為tomcat裡沒放
    June 29

    Ext中grid所使用的renderer

                        renderer: function(value,metadata,record,rowIndex, colIndex, store){
                                alert(record.get("roomName"));
                                return value;
       
                           }
    May 04

    EXTJS利用local的json grid範例(JAVA)

                <script  type="text/javascript">   
                    <%
                    boolean flag = (request.getParameter("userid") != null && request.getParameter("userid").length() > 8);
                    boolean nameflag = (request.getParameter("username") != null && request.getParameter("username").length() >= 2);
                    Transport.dao.MainDao mainlogin = new Transport.dao.MainDao();
                    TransBean[] trans = null;
                    if (flag) {
                        trans = mainlogin.getTrans(request.getParameter("userid"));
                        //System.out.println("aaa:" + JSONObject.fromObject(trans[0]).toString());
                    } else if (nameflag) {
                    //trans=mainlogin.getBankByName(request.getParameter("username"));
                    }

    %>
        Ext.onReady(function(){
            
            Ext.QuickTips.init();
            Ext.form.Field.prototype.msgTarget = 'side';

    var colModel = new Ext.grid.ColumnModel([
        new Ext.grid.RowNumberer(),
        {header: '姓名' ,dataIndex: 'NAME' },
        {header: '身份證字號' ,dataIndex: 'IDNO' },
        {header: '異動年度' ,dataIndex: 'TRS_YY' },
        {header: '異動月份' ,dataIndex: 'TRS_MM' },
        {header: '原因' ,dataIndex: 'REASON' },
        {header: '核發天數' ,dataIndex: 'DAYS' },
        {header: '處理別' ,dataIndex: 'FLAG' },
        {header: '扣款年度' ,dataIndex: 'EFFECT_YY' },
        {header: '扣款月份' ,dataIndex: 'EFFECT_MM' }
    ]);                    
     
    var sm = new Ext.grid.CheckboxSelectionModel();
    var cm = new Ext.grid.ColumnModel([
       
        new Ext.grid.RowNumberer(),
       
        sm,
       
        {header:'姓名',dataIndex:'NAME'},
        {header:'身份證字號',dataIndex:'IDNO'},
        {header:'異動年度',dataIndex:'TRS_YY'},
        {header:'異動月份',dataIndex:'TRS_MM'},
        {header:'原因',dataIndex:'REASON',editor: new Ext.form.TextField({
            allowBlank: true, 
            maxValue: 512
        })
    },
    {header:'核發天數',dataIndex:'DAYS'},
    {header:'處理別',dataIndex:'FLAG'},
    {header:'扣款年度',dataIndex:'EFFECT_YY'},
    {header:'扣款月份',dataIndex:'EFFECT_MM'}
    ]);
    cm.defaultSortable=true;
    var data = {
        'players':[
                <%if (trans.length > 0) {
                        for (int i = 0; i < trans.length; i++) {
                    %>
                        <%=JSONObject.fromObject(trans[i]).toString()%><%=(i != trans.length - 1) ? "," : ""%>
                <%}
                    }%>  
                ]
            };
           
            var ds = new Ext.data.Store({
                proxy:new Ext.data.MemoryProxy(data),
                reader:new Ext.data.JsonReader({root:'players'},[
                    {name:'DAYS'},
                    {name:'EFFECT_MM'},
                    {name:'EFFECT_YY'},
                    {name:'FLAG'},
                    {name:'IDNO'},
                    {name:'NAME'},
                    {name:'REASON'},
                    {name:'TRS_MM'},
                    {name:'TRS_YY'}
                ])
            });
            ds.load();
           
            var grid = new Ext.grid.EditorGridPanel({
                renderTo:'hello',
                cm:cm,
                ds:ds,
                sm:sm,
                title:'異動結果',
                width:740,
                autoHeight: true,
                listeners: {
                    afteredit: function(e){

                        if (e.field != 'REASON' && e.value == ''){
                            Ext.Msg.alert('Status','錯誤更新!');
                            e.record.reject();
                        }else{
                        var conn = new Ext.data.Connection();
                           conn.request({
                            url: 'http://localhost:8084/Transport/Control?action=UPDATETRANS',
                            params: {
                                TRS_MM: e.record.TRS_MM,
                                id: e.record.id,
                                field: e.field,
                                value: e.value
                            },
                            success: function(resp,opt) {
                                Ext.Msg.alert('Status','正確更新!');
                                e.commit();
                            },
                            failure: function(resp,opt) {
                                Ext.Msg.alert('Status','錯誤更新!');
                                e.reject();
                            }
                        });
                    }
                }
            },
            viewConfig: {
                forceFit:true
            }
        });

    }
    });
                </script>
    December 09

    Youtube高畫質影片


    如果發表影片者有放上較高畫質影片
    你可以在連結後面加上 &fmt=18 或 &fmt=22 便可看到高畫質(預設是一般畫質)
    如:
    http://tw.youtube.com/watch?v=StBk0f8u3v8
    http://tw.youtube.com/watch?v=StBk0f8u3v8&fmt=18

    如果你要將內嵌Embed的影片也放上高畫質
    則要在src=影片位址後面加上 &ap=%2526fmt%3D18
    以上面影片為例!
    <object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/StBk0f8u3v8&hl=en&fs=1&ap=%2526fmt%3D18
    "></param><param
    name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/StBk0f8u3v8&hl=en&fs=1&ap=%2526fmt%3D18
    " type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>
    October 19

    17ball手機版開發


    當你要用User Agent判斷來轉址~ 如17ball.net 如此手機與網站便可以用同個網址~

    基本上手機的UA都會有手機品牌的名稱~

    所以你可以用下面的方式(asp) m.asp就是手機版的頁面
    ua=Request.Servervariables("HTTP_USER_AGENT")
    ua=Lcase(ua)
    If InStr(ua,"nokia")>0 or InStr(ua,"mot-")>0 or InStr(ua,"sec-")>0 or InStr(ua,"lg-")>0 or InStr(ua,"sonyericsson")>0 or InStr(ua,"sie-")>0 or InStr(ua,"up.b")>0 or InStr(ua,"UP.Link")>0 or InStr(ua,"asus-")>0 or InStr(ua,"panasonic-")>0 or InStr(ua,"sharp")>0 then
     response.redirect("m.asp")



    通常手機的開發~ 最機車的就是各品牌手機的規格不同~ 像J2ME 不過其實WAP(XHTML)也是~

    像為了讓手機版的圖片縮小~ 通常會將圖片的地方透過程式直接輸出~

    像 <img src="mimg.asp?src=xxx" />
     
    而在mimg.asp中通常一般都是直接輸出jpg類型的圖片就可~

    但是奇怪的是Sharp的手機~ 你必須設成gif才能顯示~



    另外在Sony Ericsson的手機~
     
    你在form中的部份~
     
    <input type="hidden" name="lc" value="24.54192" />
     
    <input type="text" name="ID" value="22" />
     
    如此ID會讀不到~ 所以你要將ID欄位放在hidden的前面~
    February 07

    Webservice介紹

    XML「可擴展標示語言」(eXtensible Markup Language) 是用於標示具有結構性資訊的電子文件的標示語言,XML就是延伸標記語言,利用標籤來定義各種資料、屬性,是用來描述資料的一種標記語言。

    你是否有聽過Webservice,所謂的網路服務?網際網路的出現,使得電腦與電腦間得以傳遞資料,而其中的相關應用,如WWW、News、email等,主要是用來幫助電腦間傳遞以文字與圖形或多媒體資料的呈現,這樣子的功能已經足以提供人們在網路上閱讀新聞、查詢交通狀況資訊等活動。但是此種方式主要是以使用者為主的應用,本質上並無法協助電腦軟體間的自動訊息傳遞,而隨著網路技術不斷地精進,而企業間對於資訊系統及網路的需求日益增強,及相關網路標準的建立,使得一種可讓電腦軟體間的自動訊息傳遞、應用程式及元件間的溝通整合的應用服務因應而生,也就是Webservice網路服務。


    如果你對之前所介紹的xml還有印象,你是不是會想到xml與Webservice是不是有什麼關係呢?沒錯,我們之前提過由於XML它是個中介性語言,更是個開放的標準,同時由於它是用來描述資料的一種標記語言,因此對於強調電腦軟體間的自動訊息傳遞、應用程式及元件間的溝通整合的Webservice來說,xml扮演了一個中心的角色,因此一些與xml相關的標準如Soap、Http還有特定為Webservice建立的標準如WSDL、UDDI等也就是建構起Webservice的主要標準。

    就技術上說,Webservice就是一個可程式化的應用程式的邏輯元件,並透過標準的網際網路協定來存取,我們以.NET來實作一個簡單的範例來給大家看。


    此範例是以VB.NET所寫成的公分英寸轉換元件,原始碼在下方,大家可以另存目標下載回去參考一下,透過WSDL工具程式將它轉換為Webservice元件,之後便可在不同的平台應用執行。


    其實透過Webservice元件,不僅可在不同的平台應用執行,更可以由不同的應用程式或語言使用,所以由上述的例子我們可以發現,Webservice可以促成電腦軟體間的自動訊息傳遞、以及應用程式及元件間的溝通整合,也就是資訊整合的工作,下方為Webservice的運作方式,透過proxy來作為中介的處理。

    XML優點

    由於XML它是個中介性語言,更是個公定開放的標準,就如同目前Internet上的種種標準,Html、Tcp/Ip、WWW等,都是都是人人所遵循的標準,只要你遵照這些標準,你便能跟世界溝通,Xml當然也是,同時由於它是用來描述資料的一種標記語言,更因此有許多特別的好處。
     
    主要有以下幾個優點:
    一、資訊整合:前端的多樣化與整合與後端的整合,如下圖,前端可以不同的樣式表(Xsl or Xslt)轉換至不同的前端展示,如PC、PDA、手機、資訊家電等;後端則可整合不同作業系統與異質資料庫,如Windows SQL Server、Linux Mysql、或大型主機系統等。
     
    你可以以xml為主,再以xsl檔套用便可呈現於前端不同的瀏覽工具,至於不同作業系統與異質資料庫,則可以Xml為中介格式來進行轉換溝通。
     
    二、全球性:XML 解析器會支援 UTF-8 字集,這是一個幾乎支援世界上所有語言的字元和象形文字的 Unicode 標準,你可以使用各國的語言來編寫xml,你可以使用程式或翻譯人員來轉換內容,並更改編碼便可轉換為你想呈現的語言。
     
    三、內容與呈現分離:你可以發現到xml是將內容與呈現分離,內容部分為xml檔,而呈現的部分則以透過不同的xsl來實現,因此可想而知的,在這樣的方式下將更有利於維護更新的工作,同時在前端的呈現上更多樣性,甚至於來達到個人化的工作。

    XML概論

    XML「可擴展標示語言」(eXtensible Markup Language) 是用於標示具有結構性資訊的電子文件的標示語言,XML就是延伸標記語言,利用標籤來定義各種資料、屬性,是用來描述資料的一種標記語言。

     
    XML是根據SGML所製定而成的,XML的格式類似於HTML,XML和HTML一樣都是一種標記語言,但是您可以使用自行定義XML的標籤及文件結構,也可以由資料庫中取得資料,再用XML進行串列化 (serializing) 的工作。HTML的使用目的是排版資料,修改資料的顯示,XML的使用目的則是描述資料。

     
    下面是一個xml檔案的內容,你可以發現XML的格式類似於HTML,事實上,它們都是使用標籤的型式,而XML更可以讓你自行定義使用的標籤,但是它必須遵守一些必須的規定,才能算是一份XML文件,這是XML比HTML更嚴格的地方。

     
    <?xml version="1.0" encoding="UTF-8"?>
    <rss version="2.0" xmlns:blogChannel="http://backend.userland.com/blogChannelModule">
    <channel>
    <title>新聞-籃球</title>
    <link>http://www.bin.idv.tw/</link>
    <language>zh-tw</language>
    <lastBuildDate>Wed, 06 Feb 2008 21:25:00 GMT</lastBuildDate>
    <ttl>20</ttl>
    </channel>
    </rss>

     
    是一份形式合法的 XML 文件,它需要滿足以下要件:
      一、它包含一個或多個元素。
      二、文件中僅有一個元素稱為根元素 (Root element)或文件元素 (document element)。
      三、每個起始標籤必須有一個相對應的結尾標籤。
      四、位於根元素的每個元素,必須全部為巢狀的,也就是元素與元素間不可交叉。

     
    詳細的XML語法與條件,請參考相關的教學網站或書籍 ,會有你所需要的詳細資料。

    而你可能會有這樣的疑惑,為何要有XML的產生呢?沒錯,你問到了重點,基本上,XML除了是描述資料的語言外,最重要的是,它是個中介語言,「中介」讓你想到了什麼?當你要買賣房屋或要找人求事時會不會找仲介?或類似仲介的網站?像房屋買賣網站、人力網站。而其實XML就像是仲介一般,它會讓你的連結到四通八達的地方,關於XML的好處,我們下個單元會有更詳細的說明。
    January 19

    asp 抓中文網頁

    asp 抓中文網頁  處理亂碼問題!
     
    Function getHTTPPage(url)
        dim objXML
        set objXML=server.createobject("MSXML2.XMLHTTP")
        objXML.open "GET",url,false
        objXML.send()
        If objXML.readystate<>4 then
            exit function
        End If
        getHTTPPage=BytesToBstr(objXML.responseBody)'轉換編碼
        set objXML=nothing
        if err.number<>0 then err.Clear
    End Function

    Function BytesToBstr(body)
    dim objstream
    set objstream = Server.CreateObject("adodb.stream")
        objstream.Type = 1
        objstream.Mode =3
        objstream.Open
        objstream.Write body
        objstream.Position = 0
        objstream.Type = 2
        objstream.Charset = "UTF-8"
        '轉換編碼,否則中文會是亂碼,可設定UTF-8或Big5
        BytesToBstr = objstream.ReadText
    objstream.Close
    set objstream = nothing
    January 04

    手機上的Widgets

     

      一個提供下載的J2ME程式~

      可讓各開發者開發小工具像網路上的Widgets

      不過它是for mobile且英文的~

      http://www.widsets.com/

    December 08

    Javascript form控制方式

     
     如果你要控制form~
     或甚至網頁中有兩個form
     
     <form name="frm1" id="frm1" method="post">...</form>
     
     <form name="frm2" id="frm2" method="post">...</form>
     
     
    <script language="Javascript">
    <!--
     
      document.frm1.test.value='test';
     
      document.frm2.test.value='notest';
    -->
    </script>
    *注意: javascript要寫在form之後才能控制
     
     
    November 26

    php + IIS6 windows 2003

    上禮拜遇到要安裝php在windows~
    原來還需要設定!!
     
    1.下載 php zip 檔案。
    2.將 php zip 解壓縮放在根目錄下,c:\php。
    3.將 php5ts.dll 放在 c:\windows\system32 之下。
    4.將 c:\php\php.ini-recommended 複製在c:\windows之下,並修改檔名為 php.ini。
    5.打開 php.ini 把 extension_dir = "c:\php\ext" 與 browscap =  "c:\windows\system32\inetsrv\browscap.ini\"。
    6.在IIS的預設的網站 >主目錄>設定 新增應用程式對照 副檔名.php 指定用 C:\php\php5isapi.dll。
    7.在IIS下 > 網頁服務延伸,新增延伸名稱 php,需要檔案C:\php\php5isapi.dll。
    8.新增一個 php測試檔,放在 c:\inetpub\wwwroot 下,檔案內容
    <?php
    phpinfo();
    ?>
    9.在IIS的預設的網站下,點選 php 測試檔,按右鍵瀏灠,如果網頁內容出現 php 相關訊息即安裝成功。