亚洲AV乱码久久精品蜜桃,亚洲日本VA中文字幕久久道具,亚洲hairy多毛pics大全http://www.tkk7.com/tmpbuf/WWW World, Jack's Worldzh-cnSat, 10 May 2025 16:29:19 GMTSat, 10 May 2025 16:29:19 GMT60搞了個CGIC的系列“教程”http://www.tkk7.com/tmpbuf/archive/2007/10/25/155872.htmlJack LJack LThu, 25 Oct 2007 07:00:00 GMThttp://www.tkk7.com/tmpbuf/archive/2007/10/25/155872.htmlhttp://www.tkk7.com/tmpbuf/comments/155872.htmlhttp://www.tkk7.com/tmpbuf/archive/2007/10/25/155872.html#Feedback0http://www.tkk7.com/tmpbuf/comments/commentRss/155872.htmlhttp://www.tkk7.com/tmpbuf/services/trackbacks/155872.htmlhttp://webdn.trueself.cn/archives/107  閱讀全文

Jack L 2007-10-25 15:00 發表評論
]]>
關于使用JavaScript解析XML的問題http://www.tkk7.com/tmpbuf/archive/2007/10/01/150007.htmlJack LJack LSun, 30 Sep 2007 19:15:00 GMThttp://www.tkk7.com/tmpbuf/archive/2007/10/01/150007.htmlhttp://www.tkk7.com/tmpbuf/comments/150007.htmlhttp://www.tkk7.com/tmpbuf/archive/2007/10/01/150007.html#Feedback1http://www.tkk7.com/tmpbuf/comments/commentRss/150007.htmlhttp://www.tkk7.com/tmpbuf/services/trackbacks/150007.html 1)
首先我有一個疑惑,網上都在講如何從一個url載入一個xml文檔,然后變成一個xmlDocument,但是能不能把一個字符串轉化成一個xmlDocument呢?該如何操作呢?
2)
然后就是從網絡載入xmlDocument的話,文件名的后綴一定要是xml才行。我在FireFox里面試過,把文件名的后綴xml去掉,程序就傻了。不光是用load方法如此,用XMLHttpRequest去獲取文件也是如此。如果我使用動態服務端技術的話,比如JSP/PHP,服務端的url顯然不會是“.xml”結尾,那么我又該怎樣處理,才能使從服務端傳回來的XML格式的數據在瀏覽器里變成xmlDocument對象呢?


Jack L 2007-10-01 03:15 發表評論
]]>
強烈推薦!專業的Web開發者網絡: webdn.trueself.cnhttp://www.tkk7.com/tmpbuf/archive/2007/09/30/149718.htmlJack LJack LSat, 29 Sep 2007 17:20:00 GMThttp://www.tkk7.com/tmpbuf/archive/2007/09/30/149718.htmlhttp://www.tkk7.com/tmpbuf/comments/149718.htmlhttp://www.tkk7.com/tmpbuf/archive/2007/09/30/149718.html#Feedback0http://www.tkk7.com/tmpbuf/comments/commentRss/149718.htmlhttp://www.tkk7.com/tmpbuf/services/trackbacks/149718.html http://webdn.trueself.cn

看到這個題目,自己都很肉麻。但這是有原因的。首先聲明一下,webdn.trueself.cn只是我的個人網站而已。在注冊域名的時候,覺得trueself這個名字很好,又沒有被注冊,就買下來了。

然后開始想該放點什么東西,想來想去,決定還是做自己熟悉的技術型blog。由于自己在Web2.0方面有一些經驗,于是一拍腦袋,想出了WebDN(其含義為Web Developer Network)這個名字,作為二級域名。

搞了兩天,突然想用百度看看自己被檢索沒有,這是才發現,原來WebDN這個一級域名被注冊了。挺好的,我一點沒有眼紅。說明WebDN這個名字不錯嘛。

慢慢地,用百度搜索WebDN,我的網站出現在了第一頁,排第五。那叫一個開心啊。

不過幾天之后,也就是兩三天之前,我被惡心了。那個WebDN不知是不是做了SEO,現在用百度搜索WebDN,出現一堆文章,而文章的標題是他們的域名。想想都知道,哪有正常人把域名當作標題??我的博客正在被這樣一些垃圾文章掩沒。

想想奇怪,我一個小小的博客他們都要搞? 也許我猜錯了。不過今天我也嘗試一把SEO,看看把域名放在標題里有啥效果沒。



Jack L 2007-09-30 01:20 發表評論
]]>
Java中的++操作http://www.tkk7.com/tmpbuf/archive/2007/09/20/146814.htmlJack LJack LThu, 20 Sep 2007 08:50:00 GMThttp://www.tkk7.com/tmpbuf/archive/2007/09/20/146814.htmlhttp://www.tkk7.com/tmpbuf/comments/146814.htmlhttp://www.tkk7.com/tmpbuf/archive/2007/09/20/146814.html#Feedback20http://www.tkk7.com/tmpbuf/comments/commentRss/146814.htmlhttp://www.tkk7.com/tmpbuf/services/trackbacks/146814.htmlhttp://webdn.trueself.cn/archives/7  閱讀全文

Jack L 2007-09-20 16:50 發表評論
]]>
JavaScript中容易犯的大小寫問題http://www.tkk7.com/tmpbuf/archive/2007/09/17/146011.htmlJack LJack LMon, 17 Sep 2007 15:35:00 GMThttp://www.tkk7.com/tmpbuf/archive/2007/09/17/146011.htmlhttp://www.tkk7.com/tmpbuf/comments/146011.htmlhttp://www.tkk7.com/tmpbuf/archive/2007/09/17/146011.html#Feedback0http://www.tkk7.com/tmpbuf/comments/commentRss/146011.htmlhttp://www.tkk7.com/tmpbuf/services/trackbacks/146011.html 在HTML可以用大寫或小寫甚至是大小寫夾雜表達的地方,在JavaScript中卻要多加留意。
比如onclick事件,在JavaScript中一定要全部用小寫
看代碼:
 1 <html>
 2 <head>
 3     <title>JSTest</title>
 4 </head>
 5 <body>
 6     <input type="button" id="btn1" value="btn1" ONClick="alert('hello, this is btn1');"></input>
 7     <input type="button" id="btn2" value="btn2"></input>
 8     <script type="text/javascript" charset="utf-8">
 9         var ele=document.getElementById("btn2");
10         ele.onclick=function(){alert('hello, this is btn2');}
11     </script>
12 </body>
13 </html>
很明顯,第6行,在HTML中引用onclick與第10行在JavaScript中引用onclick事件是不同的。
你可以把第6行"onclick"中的任何一個或若干字母寫成大寫或小寫都沒有關系,但是第10行中的onclick必須全部是小寫。



Jack L 2007-09-17 23:35 發表評論
]]>
使用CGIC實現Web文件上傳的服務端代碼http://www.tkk7.com/tmpbuf/archive/2007/08/30/141501.htmlJack LJack LThu, 30 Aug 2007 12:39:00 GMThttp://www.tkk7.com/tmpbuf/archive/2007/08/30/141501.htmlhttp://www.tkk7.com/tmpbuf/comments/141501.htmlhttp://www.tkk7.com/tmpbuf/archive/2007/08/30/141501.html#Feedback4http://www.tkk7.com/tmpbuf/comments/commentRss/141501.htmlhttp://www.tkk7.com/tmpbuf/services/trackbacks/141501.html      用C語言編寫cgi程序的話,CGIC是非常流行的庫,官方頁面及下載地址為:www.boutell.com/cgic/#obtain
      不少網站都有文件上傳的功能,本文展示如何用CGIC庫編寫文件上傳的服務端程序,最后給出一段簡單的HTML代碼,供大家測試使用。
//upload.c
#include<stdio.h>
#include
<string.h>
#include
<unistd.h>
#include
<fcntl.h>
#include
<sys/stat.h>
#include
"cgic.h"
#define BufferLen 1024
int cgiMain(void){
    cgiFilePtr file;
    
int    targetFile;
    mode_t    mode;
    
char name[128];
    
char fileNameOnServer[64];
    
char contentType[1024];
    
char buffer[BufferLen];
    
char *tmpStr=NULL;
    
int size;
    
int got,t;
    cgiHeaderContentType(
"text/html");
    
//取得html頁面中file元素的值,應該是文件在客戶機上的路徑名
    if (cgiFormFileName("file", name, sizeof(name)) !=cgiFormSuccess) {
        fprintf(stderr,
"could not retrieve filename\n");
        
goto FAIL;
    } 
    cgiFormFileSize(
"file"&size);
    //取得文件類型,不過本例中并未使用
    cgiFormFileContentType("file", contentType, sizeof(contentType));
   
//目前文件存在于系統臨時文件夾中,通常為/tmp,通過該命令打開臨時文件。臨時文件的名字與用戶文件的名字不同,所以不能通過路徑/tmp/userfilename的方式獲得文件
    if (cgiFormFileOpen("file"&file) != cgiFormSuccess) {
        fprintf(stderr,
"could not open the file\n");
        
goto FAIL;
    }
    t
=-1;
    
//從路徑名解析出用戶文件名
    while(1){
        tmpStr
=strstr(name+t+1,"\\");
        
if(NULL==tmpStr)
            tmpStr
=strstr(name+t+1,"/");//if "\\" is not path separator, try "/"
        if(NULL!=tmpStr)
            t
=(int)(tmpStr-name);
        
else
            
break;
    }
    strcpy(fileNameOnServer,name
+t+1);
    mode
=S_IRWXU|S_IRGRP|S_IROTH;    
    
//在當前目錄下建立新的文件,第一個參數實際上是路徑名,此處的含義是在cgi程序所在的目錄(當前目錄))建立新文件    
    targetFile=open(fileNameOnServer,O_RDWR|O_CREAT|O_TRUNC|O_APPEND,mode);
    
if(targetFile<0){
        fprintf(stderr,
"could not create the new file,%s\n",fileNameOnServer);
        
goto    FAIL;
    }
   
//從系統臨時文件中讀出文件內容,并放到剛創建的目標文件中
    while (cgiFormFileRead(file, buffer, BufferLen, &got) ==cgiFormSuccess){
        
if(got>0)
            write(targetFile,buffer,got);    
    }
    cgiFormFileClose(file);
    close(targetFile);
    
goto    END;
FAIL:
    fprintf(stderr,
"Failed to upload");
    
return 1;
END:    
    printf(
"File \"%s\" has been uploaded",fileNameOnServer);
    
return 0;
}
      假設該文件存儲為upload.c,則使用如下命令編輯:
gcc -Wall upload.c cgic.c -o upload.cgi
      編譯完成后把upload.cgi復制到你部署cgi程序的目錄(通常命名為cgi-bin)。
      正式部署時,請務必修改用open創建新文件那一行代碼。把open的第一個參數設置為目標文件在服務器上存儲的絕對路徑,或者相對于cgi程序的相對路徑。本例中,出于簡單考慮,在cgi程序所在目錄下創建新文件。


      測試用HTML代碼: upload.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd"
>
<html>
<head>
    
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    
<title>Test Upload</title>
    
<meta name="author" content="Jack">
    
<!-- Date: 2007-08-30 -->
</head>
<body>
<form action="cgi-bin/upload.cgi" method="post" enctype="multipart/form-data" target="_blank">
    
<input type="file" name="file" value="" />
    
<input type="submit" name="submit" value="OK">
</form>
</body>
</html>
      最后的文件目錄結構為
      /MyWebRoot
      |---/upload.html
      |---/cgi-bin
      |------/upload.cgi

      當然,你必須配置能夠cgi-bin,并且程序要有權限在cgi-bin目錄下創建文件(因為此例把文件上傳到cgi-bin目錄下)。


      那么如何控制上傳文件的大小呢?因為你有時會不允許用戶上傳太大的文件。
      通過分析cgic.c的源代碼,我們發現它定義了一個變量cgiContentLength,表示請求的長度。但我們需要首先判斷這是一個上傳文件的請求,然后才能根據cgiContentLength來檢查用戶是否要上傳一個太大的文件。
      cgic.c的main函數中進行了一系列if-else判斷來檢查請求的類型,首先確定這是一個post請求,然后確定數據的編碼方式為 "multipart/form-data",這個判斷通過之后,就要開始準備接收數據了。所以我們要在接收數據開始之前使用 cgiContentLength判斷大小,如果超過標準,就立即返回,不允許繼續操作。
      下面貼出修改后代碼片段(直接修改cgic.c的源代碼即可):
else if (cgiStrEqNc(cgiContentType, "multipart/form-data")) {
#ifdef CGICDEBUG
            CGICDEBUGSTART
            fprintf(dout, 
"Calling PostMultipartInput\n");
            CGICDEBUGEND    
#endif /* CGICDEBUG */
            
//我的代碼
            
//UpSize:文件長度上限值,以byte為單位,UpSize是一個int變量,因為cgiContentLength的類型為int
            if(cgiContentLength>UpSize){ 
                cgiHeaderContentType(
"text/html");
                printf("File too large!\n");
                cgiFreeResources();
                
return -1;
            }
            
//我的代碼結束
            if (cgiParsePostMultipartInput() != cgiParseSuccess) {
#ifdef CGICDEBUG
                CGICDEBUGSTART
                fprintf(dout, 
"PostMultipartInput failed\n");
                CGICDEBUGEND    
#endif /* CGICDEBUG */
                cgiFreeResources();
                
return -1;
            }    
#ifdef CGICDEBUG
            CGICDEBUGSTART
            fprintf(dout, 
"PostMultipartInput succeeded\n");
            CGICDEBUGEND    
#endif /* CGICDEBUG */
        }
    }
      變量UpSize表示文件大小的上限。在cgic.c的main中找到相關代碼,并修改成上面這樣即可。你可以在cgic.c中定義UpSize,也可以在剛才完成的upload.c中定義,然后在cgic.c中用extern方式引用。

support my English blog: http://www.phacai.com/how-to-implement-file-upload-with-cgic


Jack L 2007-08-30 20:39 發表評論
]]>
GWT1.4中,PopupPanel的顯示與布局http://www.tkk7.com/tmpbuf/archive/2007/08/29/140999.htmlJack LJack LWed, 29 Aug 2007 09:51:00 GMThttp://www.tkk7.com/tmpbuf/archive/2007/08/29/140999.htmlhttp://www.tkk7.com/tmpbuf/comments/140999.htmlhttp://www.tkk7.com/tmpbuf/archive/2007/08/29/140999.html#Feedback1http://www.tkk7.com/tmpbuf/comments/commentRss/140999.htmlhttp://www.tkk7.com/tmpbuf/services/trackbacks/140999.html        在老版GWT中,PopupPanel有兩個構造函數:
            public PopupPanel();
            public PopupPanel(boolean autoHide);
        實例化我們的PopupPanel之后,可以設置顯示的位置,然后調用show()顯示。但是這樣只能得到一個模態(modal)Panel,只要它處于可見(isVisible()返回true)狀態,我們的頁面就不能進行任何操作(除了已經運行起來的JS代碼,像發送Ajax請求這樣的后臺操作),相當與整個Web應用因為顯示該Panel而進入了暫停狀態。
        由于PopupPanel可以根據位置參數出現在頁面任何地方,所以很適合于實現諸如頁面角落上的提示框(比如在頁面右上角顯示“loading...”)等類似的小功能。但是這樣的提示框不能暫停瀏覽器的運行,所以應該是一個非模態(non-modal)的Panel。于是我們通過一種方式來繞過沒有適當構造函數的限制:
        使用RootPanel.get().add(myPanel);來取代myPanel.show();
        這樣就得到了一個非模態的Panel。

        在新的GWT1.4中,PopupPanel有三個構造函數:
            public PopupPanel();
            public PopupPanel(boolean autoHide);
            public PopupPanel(boolean autoHide, boolean modal);
        我們看到,我們可以通過構造函數指定是否需要一個模態Panel。如果我們使用第三個構造函數,而且把第二個參數設置為false的話,當我們對該PopupPanel實例調用show()方法的時候,就會得到一個非模態的Panel。
        但是,如果我們還要用RootPanel.get().add(myPanel)的話,瀏覽器將忽略我們設置的寬度,和彈出位置等信息,把myPanel添加到頁面最下方一個元素的下面,而且其寬度與瀏覽器客戶區的寬度相同。總之,絕不是你想要的結果。

        下面給出一個在頁面右上角實現消息提示框的方法。
 1 private final PopupPanel infoB=new PopupPanel(false,false);//no auto-hide, non-modal popup
 2 public void infoBoard(String info){
 3          if(infoB!=null)
 4              infoB.hide();    
 5          Label lb=new Label(info);
 6          infoB.setWidget(lb);
 7          infoB.show();
 8          int width=infoB.getOffsetWidth();
 9          infoB.hide();
10         int clientWidth=Window.getClientWidth();
11         infoB.setPopupPosition(clientWidth-width, 0);
12         infoB.show();
13 }
        基本思路是,先設置要顯示的消息(info),然后因為是在右上角顯示,所以要取得消息框的寬度(width),并取得瀏覽器客戶區的寬度(clientWidth),計算(clientWidth-width)就得到了消息框的x坐標(準確地說是左上角那一點的x坐標)。
        7~9的代碼好像很奇怪,但只有這樣才能取得消息框的寬度。當PopupPanel處于不可見狀態時,調用getOffsetWidth()必將返回0。因為瀏覽器不知道寬度。原因如下:
        你的PopupPanel可能會被CSS修飾,可能通過百分比設置了寬度,也可能設置了邊框等屬性,所以無法得知到底占用了多少個像素的寬度。只有處于可見狀態時才能得到其寬度。


Jack L 2007-08-29 17:51 發表評論
]]>
GWT 1.4 stable 上線http://www.tkk7.com/tmpbuf/archive/2007/08/29/140809.htmlJack LJack LWed, 29 Aug 2007 03:00:00 GMThttp://www.tkk7.com/tmpbuf/archive/2007/08/29/140809.htmlhttp://www.tkk7.com/tmpbuf/comments/140809.htmlhttp://www.tkk7.com/tmpbuf/archive/2007/08/29/140809.html#Feedback0http://www.tkk7.com/tmpbuf/comments/commentRss/140809.htmlhttp://www.tkk7.com/tmpbuf/services/trackbacks/140809.html1.4 RC已經升級為正式發行版了,上線時間差不多為今天的北京時間4:00 am

http://code.google.com/webtoolkit/

這是論壇里的發布通知:

http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/e691e4059b3f991e



Jack L 2007-08-29 11:00 發表評論
]]>
關于Namespace, YUI和Dojo對此問題的異同http://www.tkk7.com/tmpbuf/archive/2007/08/28/140602.htmlJack LJack LTue, 28 Aug 2007 11:10:00 GMThttp://www.tkk7.com/tmpbuf/archive/2007/08/28/140602.htmlhttp://www.tkk7.com/tmpbuf/comments/140602.htmlhttp://www.tkk7.com/tmpbuf/archive/2007/08/28/140602.html#Feedback0http://www.tkk7.com/tmpbuf/comments/commentRss/140602.htmlhttp://www.tkk7.com/tmpbuf/services/trackbacks/140602.htmlYUI和Dojo的widget都必須存在于自己的名字空間內,這些名字空間是預先建立好的。 那么,如果我們要建立自己的名字空間怎么辦呢?(產生這種需求的原因通常是,我們要管理難以管理的JavaScript代碼。)


在YUI中:

 執行

1. YAHOO.namespace ("myspace");

 然后你就擁有了YAHOO.myspace這個名字空間,可以進行類似如下的操作:

2. YAHOO.myspace.alertHello=function() {alert("Hello");}

實質上,YUI.namespace相當于建立了一個表項,準確地說是相聯數組(associative array)的一項。 我們可以用以下兩句代替上面的1、2語句

1)YAHOO["myspace"]=new function(){};

2)YAHOO["myspace"].alertHello=function(){ alert("Hello");};

而且1、2與1)、2)可以交叉組合使用。

 不管你使用哪種方式創建自己的名字空間,都有兩種方式調用alertHello

a. YAHOO["myspace"].alertHello();

b. YAHOO.myspace.alertHello();


在Dojo中:

使用方式參考:dojo_custom-namespace

Dojo.require()提供了更強大的名字空間管理工具:Dojo用module來對應名字空間的含義。 我尚為對其相關函數的原理進行深入研究,也沒有尋找等價的使用方式。

 但是,注意手冊中這句話:“First of all, you'll want to create a directory structure ...”。也就是說,Dojo的module一定要對應一個js文件。

所以dojo.require機制不是為了創建只存在于邏輯上的名字空間。 dojo.require一定會去下載相應的js文件,參考dojo 0.9的手冊: dojo-require




Jack L 2007-08-28 19:10 發表評論
]]>
主站蜘蛛池模板: 精品无码无人网站免费视频| 亚美影视免费在线观看| 国产精品久久永久免费| 亚洲另类古典武侠| 中文字幕免费在线| 亚洲国产成人91精品| 成年人免费观看视频网站| 亚洲精品人成网线在线播放va| 最新中文字幕免费视频| 精品亚洲国产成人av| 免费大片黄手机在线观看 | 香蕉高清免费永久在线视频| 亚洲av最新在线观看网址| 国产gav成人免费播放视频| 久久国产美女免费观看精品| 亚洲va无码手机在线电影| 毛片免费全部播放无码| 亚洲 欧洲 自拍 另类 校园| 亚洲人成网站看在线播放| 成人免费一区二区三区| 亚洲av鲁丝一区二区三区| 69天堂人成无码麻豆免费视频| 亚洲一区二区三区在线观看网站| 永久免费看bbb| 国产在线精品一区免费香蕉| 亚洲bt加勒比一区二区| 成人奭片免费观看| 一二三区免费视频| 亚洲日本国产精华液| 国产最新凸凹视频免费| 91免费国产视频| 亚洲成人免费网站| 四虎永久免费影院| 久久精品乱子伦免费| 成人亚洲国产va天堂| 亚洲无码在线播放| 大地资源在线观看免费高清| 国产黄在线观看免费观看不卡| 久久综合亚洲鲁鲁五月天| 免费女人18毛片a级毛片视频| 久久久久久毛片免费播放|