<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    李威 さぽている

    小說翻譯,日語相關(guān)轉(zhuǎn)移至http://blog.hjenglish.com/liwei

    2010年2月20日 #

    JSONP 跨域原理小解

    最近看一些代碼時(shí),邊看邊改代碼,發(fā)現(xiàn)getJSON這個(gè)方法沒法正常使用。

    1 var sURL= "http://api.xxxxxx.com/services/feeds/   
    2    xxxxxxx?format=json&callback=?";
    3 $.getJSON(sURL, function(data) {
    4 // do something with the JSON data returned
    5 }); // end get

    究其原因,發(fā)現(xiàn)url里有個(gè)callback,這里使用的是JSONP,一種跨域技術(shù)。
    網(wǎng)上搜了下JSONP,多數(shù)都是在講如何使用,而沒有說明為什么它能跨域,且沒有說明url服務(wù)器端的代碼時(shí)如何生成的。
    http://www.west-wind.com/weblog/posts/2007/Jul/04/JSONP-for-crosssite-Callbacks
    這方面,上面的文章里有比較詳細(xì)的描述。

     1 function jsonp(url,callback,name, query)
     2 {                
     3     if (url.indexOf("?"> -1)
     4         url += "&jsonp=" 
     5     else
     6         url += "?jsonp=" 
     7     url += name + "&";
     8     if (query)
     9         url += encodeURIComponent(query) + "&";   
    10     url += new Date().getTime().toString(); // prevent caching        
    11     
    12     var script = document.createElement("script");        
    13     script.setAttribute("src",url);
    14     script.setAttribute("type","text/javascript");                
    15     document.body.appendChild(script);
    16 }

    客戶端的javascript代碼會(huì)有如上的操作,代碼不難,很容易理解,也就是加了一個(gè)script標(biāo)簽。

    而服務(wù)器端會(huì)返回
    callbackFunction( { "x": 10, "y": 15} );
    這樣的數(shù)據(jù)。這其實(shí)是一段javascript代碼,
    callbackFunction是方法名,
    { "x": 10, "y": 15}是參數(shù)。客戶端代碼里必須要有
    callbackFunction方法的定義。

     1 public partial class JSONP : System.Web.UI.Page
     2 {
     3     protected void Page_Load(object sender, EventArgs e)
     4     {
     5         if (!string.IsNullOrEmpty(Request.QueryString["jsonp"]) )
     6             this.JsonPCallback();
     7     }
     8 
     9     public void JsonPCallback()
    10     {
    11         string Callback = Request.QueryString["jsonp"];
    12         if (!string.IsNullOrEmpty(Callback))
    13         {
    14             // *** Do whatever you need
    15             Response.Write(Callback + "( {\"x\":10 , \"y\":100} );");
    16         }
    17 
    18         Response.End();
    19     }
    20 }

    之后客戶端會(huì)調(diào)用callbackFunction
    使用JQuery的getJSON方法后,callback部分會(huì)變成如下形式。
    callback=jQuery1710461701650187642_1326201333794&_=1326201356534
    callbackFunction自然就是
    jQuery1710461701650187642_1326201333794部分了。
    返回來的數(shù)據(jù)也會(huì)是jQuery1710461701650187642_1326201333794( { "x": 10, "y": 15} ) 這種形式。

    最后JQuery會(huì)調(diào)用匿名函數(shù)
    function(data),data即為json數(shù)據(jù)。

    JQuery已經(jīng)將客戶端部分實(shí)現(xiàn)了,服務(wù)器端也得遵循同樣的規(guī)則才能實(shí)現(xiàn)跨域。


    *這里有一點(diǎn),JQuery如何將匿名函數(shù)換名字的?有哪位大俠知道的,請(qǐng)用簡(jiǎn)單的語言講解下。

    posted @ 2012-01-10 21:30 李威 閱讀(345) | 評(píng)論 (0)編輯 收藏

    error code 0x80004005

    記錄一個(gè)小問題。
    在Win7系統(tǒng)上裝一個(gè)軟件時(shí)失敗,提示2個(gè)DLL沒有注冊(cè)成功。
    于是準(zhǔn)備手動(dòng)注冊(cè)。
    運(yùn)行
    cd C:\WINDOWS\system32\
    regsvr32 xxx.dll
    后出現(xiàn)如下錯(cuò)誤:
    The module "xxx.dll" was loaded but the call to DllRegisterServer failed with error code 0x80004005.

    網(wǎng)上搜索一番后,找到如下地址
    http://forums.cnet.com/7723-12546_102-237219.html
    其中有條說run as administrator,這是權(quán)限問題,不過我登陸的就是管理員賬號(hào),應(yīng)該不存在這樣的問題。

    抱著姑且一試的想法,寫了個(gè)cmd文件,右鍵run as administrator后,居然真的注冊(cè)成功了!

    看來Win7系統(tǒng)真的很安全,就算是管理員,也得來個(gè)run as administrator后才能做一些事,是在向sudo學(xué)習(xí)么?

    posted @ 2011-12-06 21:13 李威 閱讀(360) | 評(píng)論 (0)編輯 收藏

    HTML5的audio標(biāo)簽很坑爹!

    最近試著用html5在頁面加載mp3文件。在chrome下測(cè)試通過了,偶然的用firefox4打開,居然沒法用……
    懷疑哪里寫錯(cuò)了,可audio標(biāo)簽也就幾個(gè)屬性而已。

    幾經(jīng)搜索,最后發(fā)現(xiàn)的真相讓我很崩潰……firefox的audio不支持播放mp3。

    Codec support in modern desktop browsers
    Browser Ogg Vorbis MP3 WAV
    FireFox 3.6+ ?
    ?
    Safari 5+
    ? ?
    Chrome 6 ? ?
    Opera 10.5+ ?
    ?
    Internet Explorer 9 (beta)
    ? ?
    出自 http://html5doctor.com/native-audio-in-the-browser/

    看了這個(gè)表之后,雖然很多瀏覽器都支持html5,但如果你想播放一個(gè)文件,任何一種格式都不能讓所有瀏覽器正常播放。
    哈哈哈,html5定義了媒體標(biāo)簽,但沒規(guī)定媒體的默認(rèn)編碼格式,導(dǎo)致各瀏覽器各自為政。
    真是不方便……

    posted @ 2011-06-11 22:30 李威 閱讀(270) | 評(píng)論 (0)編輯 收藏

    PHP GD畫圖時(shí)出現(xiàn)的文字亂碼問題

    GD畫圖時(shí)通常顯示文字是用imagettftext方法,但它的參數(shù)必須是UTF-8編碼的。
    此時(shí)得注意php文件的編碼
    1.如果是UTF-8的,直接傳硬編碼字符串就可正常顯示
    2.如果是gb2312或其它的,則必須進(jìn)行轉(zhuǎn)換 mb_convert_encoding($str, 'UTF-8')

    另外,還有一種情況,JIS-mapped Japanese Font Support被開啟時(shí),imagettftext就必須傳SJIS編碼,傳UTF-8反而會(huì)亂碼。
    此時(shí)必須將其轉(zhuǎn)碼后傳入,mb_convert_encoding($sStr,"SJIS", "UTF-8")。

    以上。

    posted @ 2011-03-31 15:46 李威 閱讀(1051) | 評(píng)論 (0)編輯 收藏

    TurboC3.0英文版中界面邊框?yàn)閬y碼問題的解決發(fā)法

    在次提供TurboC3.0英文版下載。

    TCPP.rar
    上網(wǎng)須謹(jǐn)慎,下載請(qǐng)殺毒。

    TC3.0窗口模式,邊框有中文亂碼。全屏就沒有。
    原因是當(dāng)前的code page是中文的936,可以在cmd中用chcp命令查看。
    利用命令 chcp 437 改為老美的,就可以了。
    具體操作
    啟動(dòng)TCPP.exe->File->DOS Shell->chcp 437->exit
    回到TCPP后就沒亂碼了。
    但這個(gè)方法治標(biāo)不治本,每次啟動(dòng)TCPP仍是亂碼。

    另一種方法
    在TCPP窗口的左上角單擊,出現(xiàn)菜單(包含最大化,最小化,屬性等),在默認(rèn)選項(xiàng)的第一個(gè)頁面“選項(xiàng)”里Default code page選擇437 (OEM United Status)。因?yàn)槲夷壳笆褂玫氖怯⑽南到y(tǒng),不知道中文系統(tǒng)中是否有該項(xiàng)。如果沒有該項(xiàng),請(qǐng)自行尋找方法讓它有。
    之后,一切OK,至少我OK了……

    posted @ 2011-01-26 19:26 李威 閱讀(708) | 評(píng)論 (0)編輯 收藏

    運(yùn)行李

    中鐵快運(yùn) 跨省 4.3元/KG
    一般3天到,但有時(shí)貨運(yùn)量大,無法確定到貨時(shí)間
    上午10:30電話過去,說下午2點(diǎn)后才能來取貨,我說下午不在,比較緊急,實(shí)際上取貨師傅11點(diǎn)多就到了
    來取貨的人有2人,開的是面包車,能一次運(yùn)走較多貨物
    貨物較散時(shí)會(huì)收15元包裝費(fèi)。
    一般人不支持貨到付款,只有大客戶才支持。
    先交費(fèi),多退少補(bǔ)(一般會(huì)多收),發(fā)票不當(dāng)場(chǎng)發(fā),之后會(huì)聯(lián)系你或郵寄給送貨地址(具體不詳)。
    我是當(dāng)天要離開,沒法將發(fā)票給我,他們說會(huì)將發(fā)票和多的錢放到包裝的貨物里。


    順豐快遞 跨省 1KG內(nèi)20元,超過部分12元/KG
    到貨很快,合肥到杭州一天內(nèi)能送到。
    來取貨的只有1人,開電動(dòng)車,貨物較多時(shí)無法一次取完。
    支持貨到付款,無包裝費(fèi)。
    客服說1小時(shí)內(nèi)到,通常半小時(shí)左右會(huì)有取貨人來電話聯(lián)系,之后看情況,有時(shí)候半小時(shí)能到,有時(shí)候很拖。

    posted @ 2011-01-15 11:31 李威 閱讀(145) | 評(píng)論 (0)編輯 收藏

    Sina App Enginge Beta

    已經(jīng)有人做了介紹
    http://www.hzlzh.com/sina-app-engine-beta/

    對(duì)我這種平時(shí)寫點(diǎn)小應(yīng)用自?shī)首詷返膫€(gè)人開發(fā)者來說,最重要的變化就是SAE不再免費(fèi)了
    1RMB=50云豆
    SAE進(jìn)入beta后發(fā)放給內(nèi)測(cè)開發(fā)者5000云豆,我去帳號(hào)里查看時(shí)剩下4945,感覺用得有些快
    平時(shí)也沒寫多少東西,也就10多個(gè)php頁面,以后還是側(cè)重玩GAE吧……

    雖然SAE相比GAE規(guī)模不大,但也有些不錯(cuò)的地方
    譬如cron,同樣的5min間隔執(zhí)行的東西,SAE比GAE更準(zhǔn)些
    譬如客戶端,雖然SAE沒法在本地執(zhí)行代碼,但能從服務(wù)器下載應(yīng)用的最新代碼很不錯(cuò)
    之前GAE寫的東西,有些是在公司電腦里寫的,有些是在家里寫的,現(xiàn)在都不知道家中電腦里的代碼是不是最新的了
    SAE進(jìn)入beta后,能在線查看修改代碼,使用的編輯器是ecoder,http://ecoder.quintalinda.com/

    SAE很多其他功能還沒用到,就不多做評(píng)價(jià)了

    以下說點(diǎn)胡話吧
    國(guó)內(nèi)整體環(huán)境有些急功近利,運(yùn)營(yíng)1年多了,沒任何收入,SAE也是國(guó)內(nèi)第一個(gè)吃螃蟹的,能否盈利也不清楚,投資者沉不住氣,SAE團(tuán)隊(duì)大概也是頂不住上層的壓力,迫不得已開始收費(fèi)計(jì)劃。

    總感覺SAE還沒成熟到能收費(fèi)的階段,因?yàn)镾AE上的應(yīng)用并不多,我只見到10多個(gè)而已
    應(yīng)用能減少建站難度。應(yīng)用少會(huì)限制SAE的用途,SAE面向的群體是什么呢,現(xiàn)在能干什么呢?個(gè)人的話,租php空間來干嘛,主要是搭博客,建論壇,搞CMS;想創(chuàng)業(yè)的,大概不會(huì)選SAE,因?yàn)橄拗铺啵蝗缱庵鳈C(jī),自由度更高;企業(yè)的話,注重的是穩(wěn)定,現(xiàn)在還不會(huì)嘗試新出來的SAE
    開發(fā)SAE開源項(xiàng)目,SAE會(huì)獎(jiǎng)勵(lì)云豆。應(yīng)用不多這點(diǎn)也能靠收費(fèi)來激發(fā)開發(fā)者多發(fā)開些SAE開源項(xiàng)目來彌補(bǔ),不知效果會(huì)如何

    現(xiàn)在還真不知道SAE會(huì)發(fā)展得如何……

    預(yù)計(jì)近期SAE應(yīng)該會(huì)開發(fā)注冊(cè)吧,新帳號(hào)里應(yīng)該會(huì)有一些云豆,給開發(fā)者試用,然后期待這些新鮮血液帶來更多付費(fèi)用戶和SAE開源項(xiàng)目,希望SAE能發(fā)展下去

    posted @ 2010-09-05 12:28 李威 閱讀(209) | 評(píng)論 (0)編輯 收藏

    笑話一則(其中的我不是博主)

    我出差的時(shí)候(是指在日本)
     張X(日本那邊的人)說:“這個(gè)叫李X的代碼寫得真爛啊。”
    我:“他是我室友。”過了一會(huì)
    張X:“這個(gè)叫唐XX的寫得更爛。”
    我:“這個(gè)是我前室友。”再過了一會(huì)
    張X很無奈地問我:“這個(gè)叫鄭X一定是你的前前室友吧?”
    我。。。

    posted @ 2010-08-26 22:43 李威 閱讀(148) | 評(píng)論 (0)編輯 收藏

    如何破掉防盜鏈機(jī)制

    今天遇到一個(gè)問題,寫了一個(gè)頁面,抓取其他某站點(diǎn)的內(nèi)容,然后重組成新的頁面,主要是一個(gè)圖片的展示(gallery)。

    但是該站點(diǎn)做了防盜鏈,圖片無法顯示,403.

    這種盜鏈主要是靠Referer來實(shí)現(xiàn)的,也就是說更改了Referer就能顯示圖片,但Referer不是在頁面編碼能解決的。

    Referer是瀏覽器發(fā)出的,只能更改瀏覽器才能更改Referer。

    firefox有一個(gè)插件refcontrol,可以做到這一點(diǎn),不過不是我要說的

    繼續(xù)研究,該站提供一種embed功能,供其他頁面調(diào)用,此時(shí)就能允許其他站點(diǎn)直接顯示圖片。
    一般網(wǎng)站是不提供這種功能的,所以下面方法并不是所有網(wǎng)站適用的。

    通過對(duì)比header內(nèi)容,最終知道是它在cookie里設(shè)定了一個(gè)字段,以此來判別。

    那么,只要我設(shè)定該值即可。
    兩種方法
    1.服務(wù)器端設(shè)定set-cookie,試驗(yàn)證明,此法不可行,主要是domain無法更改到對(duì)應(yīng)站點(diǎn)的domain下
    2.客戶端用javascript設(shè)定document.cookie。仍不行……,原因不明,大概也是無法改domain吧

    這下只剩最后一招了,在我的頁面里直接調(diào)用embed頁面,讓它替我設(shè)cookie,如何調(diào)用呢?
    首先想到用frame,試了下,frame和圖片幾乎同時(shí)發(fā)出request,這樣cookie還沒設(shè)定,請(qǐng)求圖片肯定403.
    又想到onload,呃,是在body完了后才調(diào)用,肯定不行
    后來看到,html的head里的文件先下載完畢后,再請(qǐng)求圖片。這點(diǎn)我以前也提到過,javascript代碼的執(zhí)行順序 
    head里主要有2種文件調(diào)用,js和css。
    這里就不是什么正規(guī)寫法了,因?yàn)閑mbed頁面既不是js文件,也不是css文件,但瀏覽器是不會(huì)管這個(gè)的,直接調(diào)用。
    一般也不會(huì)這么用……旁門左道
    先用了js這種,在src里寫上embed頁面地址,可以顯示圖片,但有個(gè)javascript錯(cuò)誤。
    接著改進(jìn),用css的,會(huì)發(fā)現(xiàn)最終調(diào)用了兩次,一次是在開始,還有一次是在所有其他head文件全下載完之后
    有些小影響,但問題不大。

    時(shí)間比較晚,就懶得加上試驗(yàn)代碼,OK,就這樣,完工。

    posted @ 2010-08-10 00:19 李威 閱讀(842) | 評(píng)論 (0)編輯 收藏

    javascript兩則思考

    1.
    http://www.jsforest.org/2010/07/29/js-this指向的小測(cè)試/


    這個(gè)說是在考this的指向,實(shí)際上是在考變量的作用域。
    先說其中第二題。o是一個(gè)對(duì)象,doIt是它的方法,那么doIt的this自然指向o
    第二題結(jié)果為10無懸念。

    再來看第一題,在doIt的內(nèi)部加入了一個(gè)setTimeout方法,setTimeout又調(diào)用了一個(gè)匿名方法。
    在javascript中,函數(shù)(或方法)也是對(duì)象,那么匿名方法中的this應(yīng)該指向doIt,結(jié)果為20.

    實(shí)際上將代碼跑了下,第一題結(jié)果為5.哪里錯(cuò)了?

    問題出在setTimeout。
    window.setTimeout(code, delay)
    
    When code is executed, it is executed in the context of the Window object. If code is a function, the Window object is the value of the this keyword. If code is a string, it is evaluated in the global scope with the Window object as the only object on the scope chain. This is true even if the call to setTimeout( ) occurred within a function with a longer scope chain.

    這段話說明了setTimeout不管在哪里執(zhí)行,其作用域都是在Window下,this一直指向Window。
    第一題的x=5是全局變量,Window作用域下的。

    這題說是在考this的指向,原來最終考的是個(gè)setTimeout的問題……被耍了



    2.
    http://www.css88.com/archives/2429

    看到這個(gè)問題,首先注意到的是第一個(gè)用了===,第二個(gè)沒有,而javascript是個(gè)弱類型語言,使用provisionalTable[item]取值沒判斷類型。
    然后,試著找了Object中判斷值是否存在的方法,譬如provisionalTable.item ,in等都沒判斷類型。
    想法一,重載[]方法,不過,這個(gè)怎么重載?又不是個(gè)function
    想法二,數(shù)字是利用toString()轉(zhuǎn)成字符串的,那么重載Number.prototype.toString=function(){return this;}; 6=='6'返回false了,但provisionalTable[item]取值還是一樣
    想法三,provisionalTable同時(shí)存在6和'6'時(shí),provisionalTable[item]能區(qū)分這兩者,那么在provisionalTable中加入一個(gè)設(shè)為true時(shí),將另一個(gè)也加入,并設(shè)為false。但這樣會(huì)有效率問題,事實(shí)上,acsu提出的方法里僅僅加了個(gè)typeof方法,就將效率損失殆盡。
    突然想到,這個(gè)問題不是找解決方法,而是找最優(yōu)方法
    嗯,作罷,效率問題不是我等小民該考慮的,這個(gè)必須從根本上重構(gòu)javascript才行

    不過思考下,還是能學(xué)到很多東西的

    posted @ 2010-08-05 22:07 李威 閱讀(152) | 評(píng)論 (0)編輯 收藏

    如何讓博客支持PubSubHubbub

    http://code.google.com/p/pubsubhubbub/ 
    pubsubhubbub是google開發(fā)的一種Atom和RSS增強(qiáng)協(xié)議,能夠接近實(shí)時(shí)發(fā)布信息。
    也就是說,如果blogjava支持了pubsubhubbub,我在這里發(fā)布了博客,你就可以在你的閱讀器里很快看到我的文章。
    現(xiàn)在只有部分博客服務(wù)商提供了pubsubhubbub功能,譬如WordPress,F(xiàn)riendFeed,livedoor等。

    pubsubhubbub的原理很簡(jiǎn)單。它由3部分組成,pub,sub,hub(最后的bub不是的,hubbub是騷動(dòng)的意思)。
    pub可以看成是博客,sub是閱讀器,而hub是一個(gè)中轉(zhuǎn)站。通常是由sub向pub請(qǐng)求內(nèi)容,而pubsubhubbub是由sub想hub請(qǐng)求,hub再向pub請(qǐng)求,多一層hub的作用是降低pub的壓力。hub收到pub的更新后,會(huì)向sub發(fā)布最新的內(nèi)容。
    因?yàn)椴皇莗ub直接向sub發(fā)布,所以這里說的“接近”實(shí)時(shí)發(fā)布信息。

    那么如何讓博客支持pubsubhubbub呢?只需要建立一個(gè)hub服務(wù)器,然后在生產(chǎn)rss時(shí)加入
    <atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/>
    http://pubsubhubbub.appspot.com就是hub服務(wù)器的地址。
    <?xml version="1.0"?>
    <rss xmlns:atom="http://www.w3.org/2005/Atom">
      
    <channel>
        
    <atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/>
        
      
    </channel>
    </rss>
    因此判斷博客是否正常pubsubhubbub,也很簡(jiǎn)單,查看http://www.tkk7.com/liwei/rss的代碼即可,沒有hub的影子。
    再看一個(gè)支持的例子 http://rasjacobson.wordpress.com/feed/ ,里面有一句 <atom:link rel='hub' /> ,這個(gè)是支持的。

    具體的hub實(shí)現(xiàn)請(qǐng)查看
    http://code.google.com/p/pubsubhubbub/wiki/Hubs
    我這里只是個(gè)人玩玩而已,沒實(shí)力自己搭hub服務(wù)器。不過可以借助他人提供的hub服務(wù)器,譬如剛才appspot的。

    知道了原理,接下來就好辦。
    因?yàn)橐拇a才能修改生產(chǎn)的RSS,所以blogjava這種博客服務(wù)商不提供pubsubhubbub功能的話,我們這些用戶是無能為力的。

    但自建的獨(dú)立博客是能簡(jiǎn)單支持。等咱啥時(shí)候有閑錢了,再去做吧……

    posted @ 2010-08-01 01:35 李威 閱讀(299) | 評(píng)論 (0)編輯 收藏

    GAE發(fā)布時(shí)出現(xiàn)的SSL問題

    deploy時(shí)會(huì)出現(xiàn)如下信息

    WARNING appengine_rpc.py:399 ssl module not found. 
    Without the ssl module, the identity of the remote host cannot be verified, and 
    connections may NOT be secure. To fix 
    this, please install the ssl module from 
    http:
    //pypi.python.org/pypi/ssl . 
    To learn more, see http://code.google.com/appengine/kb/general.html#rpcssl 

    當(dāng)打開上面的頁面時(shí)會(huì)自動(dòng)轉(zhuǎn)到 http://code.google.com/intl/zh-CN/appengine/kb/general.html#rpcssl ,在這里看不到任何幫助,因?yàn)間oogle還沒將這段幫助信息翻譯成中文Orz,可以到 http://code.google.com/intl/en/appengine/kb/general.html#rpcssl 查看。這里說明在用python appcfg.py update 命令時(shí)添加 --insecure 后就不會(huì)有問題。但我用GAE Launcher也無法修改命令。再讓我回到?jīng)]有Launcher,直接用命令行的時(shí)代,還真難適應(yīng)。作罷。

    我試著安裝了ssl 模塊,但無法編譯。網(wǎng)上找到了這個(gè)頁面,http://canofy.javaeye.com/blog/651968 ,該同學(xué)和我遇到了同樣的問題,并且裝了cygwin。
    貌似之后還有其他問題。不談。

    今天,我突然發(fā)現(xiàn),deploy時(shí)出現(xiàn)的ssl信息,完全可以忽視,對(duì),可以忽視 ,之后仍會(huì)update成功的。
    通常出現(xiàn)上述ssl提示后,console會(huì)沒有任何顯示,此時(shí)不要關(guān)閉console,再次deploy時(shí)會(huì)出現(xiàn)如下信息
    Error 409--- begin server output ---
    Another transaction by user xxxxxx is already in progress 
    for this app and major version. That user can undo the transaction with appcfg.py's "rollback" command.
    --- end server output ---
    這表明之前的update仍在進(jìn)行。請(qǐng)安心等待……

    最后,好嘛,一個(gè)不是問題的問題,花了我不少時(shí)間……

    posted @ 2010-05-08 12:25 李威 閱讀(749) | 評(píng)論 (1)編輯 收藏

    javascript代碼的執(zhí)行順序

    這個(gè)不弄明白,代碼出問題了也不難以解決。
    《learning Jquery 1.3》p15有一句  JavaScript code is generally run as soon as it is encountered in the browser
    也就是說,瀏覽器遇到一個(gè)語句就立刻解析。貌似這個(gè)問題很快就解決了。

    但javascript的寫法相當(dāng)多,譬如網(wǎng)上很多人討論的$(document).ready(和<body onload= 執(zhí)行先后問題
    在p16中,提到onload    to run after the page is completely loaded.即onload在頁面完全加載完之后執(zhí)行
    ready是firing once the DOM is loaded—without waiting for images 。ready在DOM加載完,圖片未加載時(shí)執(zhí)行。
    也即ready在onload之前調(diào)用。

    這里就涉及html頁面的加載順序問題。網(wǎng)上搜到2篇相關(guān)文章。
    瀏覽器做了什么?
    http://www.cnblogs.com/guilipan/archive/2010/01/06/1640145.html
    Javascript在頁面加載時(shí)的執(zhí)行順序
    http://dancewithnet.com/2007/03/22/order-of-execution-of-javascript-on-web/

    看完之后,比之前明白了些,但具體的關(guān)系還是沒能理解。
    一個(gè)html頁面包括head和body兩個(gè)部分,head部會(huì)調(diào)用外部CSS和JS文件,body部會(huì)調(diào)用圖片,音視頻等內(nèi)容。
    下載順序是html ->CSS JS ->圖片等。
    解析順序是html(內(nèi)部是按序執(zhí)行head->body)->DOM生成 ->ready執(zhí)行 ->圖片下載 ->body.onload

    將以上兩者結(jié)合,html ->head(CSS JS) ->body->DOM生成 ->ready執(zhí)行 ->圖片下載 ->body.onload
    其中head和body部都可能包含js,按代碼順序執(zhí)行。
    這里就有一個(gè)疑問,瀏覽器會(huì)等待JS等文件下載完后,并順序執(zhí)行該JS后再繼續(xù)執(zhí)行之后的html代碼么?
    按想應(yīng)該不會(huì),不然JS文件過大,會(huì)影響html頁面渲染的速度,兩者應(yīng)該是異步的。
    但這個(gè)異步就會(huì)將之前總結(jié)的順序攪亂。譬如onload都執(zhí)行完了,包含ready的JS還沒下完,此時(shí)會(huì)發(fā)生什么?
    這里說得有問題,JS未下載完,onload是不會(huì)執(zhí)行的。
    有待繼續(xù)總結(jié)……

    posted @ 2010-03-11 00:18 李威 閱讀(470) | 評(píng)論 (0)編輯 收藏

    迷茫和悲哀

    [zz]30歲軟件工程師的迷茫和悲哀

    http://bbs2.ustc.edu.cn/cgi/bbstcon?board=Job&file=M.1267231721.A

    文章很長(zhǎng),就不轉(zhuǎn)載了。
    其中有一段
    ---------------------------------------------------------
    35歲左右還在從事軟硬件開發(fā)工作的仍有一大堆,分析這些仍然從事開發(fā)的朋友,
    基本上都有以下特點(diǎn):
    1癡迷工作或者癡迷電腦,晚上八點(diǎn)到十二點(diǎn)的這段時(shí)間,基本上是在電腦桌或工作臺(tái)前
    渡過的。
    2不喜歡與人交住,朋友很少,常聯(lián)系的人不超過五個(gè)。
    3與朋友交往時(shí)談工作多,但一般不主動(dòng)談錢。
    4體型偏胖或偏廋,不在正常區(qū)間。
    5無未來計(jì)劃,對(duì)五年后自已生活怎么樣、從事什么工作說不清楚。
    6儉省,從不亂花錢。
    ---------------------------------------------------------
    和我很相似……嗯,我也確實(shí)想繼續(xù)做開發(fā),但人要生活,不可能一輩子這樣
    迷茫和悲哀吧

    posted @ 2010-02-28 15:26 李威 閱讀(196) | 評(píng)論 (0)編輯 收藏

    heroku安裝問題

    試用了下heroku,結(jié)果安裝時(shí)就出問題了
    windows環(huán)境,按照http://docs.heroku.com/windows 裝了msysgit1.8.6 one click ruby installer

    D:\Ruby>gem install heroku
    ERROR:  While executing gem ... (Gem::RemoteFetcher::FetchError)
        timed out (http://gems.rubyforge.org/gems/json_pure-1.2.0.gem)

    大概是網(wǎng)絡(luò)不行,于是下載后本地安裝

    D:\Ruby>gem install "C:\Documents and Settings\wli\My Documents\Downloa
    ds\heroku-1.8.0.gem"
    ERROR:  While executing gem ... (URI::InvalidURIError)
        bad URI(is not URI?): C:/Documents and Settings/wli/My Documents/Do
    wnloads/heroku-1.8.0.gem

    不行
    D:\Ruby>gem install C:\Documents and Settings\wli\My Documents\Download
    s\heroku-1.8.0.gem
    ERROR:  could not find gem C:\Documents locally or in a repository
    ERROR:  could not find gem and locally or in a repository
    ERROR:  While executing gem ... (RegexpError)
        Invalid escape character syntax: /\ASettings\wli\My\Z/

    還是不行,猜測(cè)是路徑空格的問題
    D:\Ruby>gem install E:/json_pure-1.2.0.gem
    Successfully installed json_pure-1.2.0
    1 gem installed
    Installing ri documentation for json_pure-1.2.0...
    Installing RDoc documentation for json_pure-1.2.0...

    OK,成功
    如此
    D:\Ruby>gem install E:/heroku-1.8.0.gem
    Successfully installed heroku-1.8.0
    1 gem installed
    Installing ri documentation for heroku-1.8.0...
    Installing RDoc documentation for heroku-1.8.0...

    posted @ 2010-02-20 12:50 李威 閱讀(696) | 評(píng)論 (0)編輯 收藏

    主站蜘蛛池模板: 国产国产人免费视频成69大陆| 亚洲欧美日韩综合久久久| 成人毛片免费在线观看| A级毛片高清免费视频在线播放| 国产亚洲综合视频| 亚洲欧洲日韩国产| 亚洲AV无码专区国产乱码4SE| 国产又长又粗又爽免费视频| 希望影院高清免费观看视频| 你好老叔电影观看免费| 特级毛片爽www免费版| 亚洲乱亚洲乱妇无码| 亚洲精品人成电影网| 亚洲一区综合在线播放| 曰韩亚洲av人人夜夜澡人人爽 | 亚洲精品无码久久久久sm| 日韩免费观看视频| 久久精品免费一区二区喷潮| 99在线观看精品免费99| 一区二区三区无码视频免费福利| 日韩在线一区二区三区免费视频 | 成人一a毛片免费视频| 57pao一国产成永久免费| 精品国产麻豆免费人成网站| 久久精品成人免费国产片小草| 一级毛片a免费播放王色电影 | 永久黄色免费网站| 久久精品一本到99热免费| 男人进去女人爽免费视频国产| 国产性生大片免费观看性| 中文字幕在线视频免费观看| 九一在线完整视频免费观看| 日本永久免费a∨在线视频| 全部在线播放免费毛片| 国产亚洲精彩视频| 香港一级毛片免费看| 色婷婷精品免费视频| 污视频网站在线免费看| 四虎成人精品国产永久免费无码| 日本激情猛烈在线看免费观看| CAOPORM国产精品视频免费|