2010年9月5日
#
最近看一些代碼時,邊看邊改代碼,發現getJSON這個方法沒法正常使用。
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
究其原因,發現url里有個callback,這里使用的是JSONP,一種跨域技術。
網上搜了下JSONP,多數都是在講如何使用,而沒有說明為什么它能跨域,且沒有說明url服務器端的代碼時如何生成的。
這方面,上面的文章里有比較詳細的描述。
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代碼會有如上的操作,代碼不難,很容易理解,也就是加了一個script標簽。
而服務器端會返回
callbackFunction( { "x": 10, "y": 15} );
這樣的數據。
這其實是一段javascript代碼,
callbackFunction是方法名,{ "x": 10, "y": 15}是參數。客戶端代碼里必須要有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 }
之后客戶端會調用
callbackFunction。
使用JQuery的getJSON方法后,callback部分會變成如下形式。
callback=jQuery1710461701650187642_1326201333794&_=1326201356534
callbackFunction自然就是jQuery1710461701650187642_1326201333794部分了。
返回來的數據也會是
jQuery1710461701650187642_1326201333794( { "x": 10, "y": 15} ) 這種形式。
最后JQuery會調用匿名函數function(data),data即為json數據。
JQuery已經將客戶端部分實現了,服務器端也得遵循同樣的規則才能實現跨域。
*這里有一點,JQuery如何將匿名函數換名字的?有哪位大俠知道的,請用簡單的語言講解下。
記錄一個小問題。
在Win7系統上裝一個軟件時失敗,提示2個DLL沒有注冊成功。
于是準備手動注冊。
運行
cd C:\WINDOWS\system32\
regsvr32 xxx.dll
后出現如下錯誤:
The module "xxx.dll" was loaded but the call to DllRegisterServer failed with error code 0x80004005.
網上搜索一番后,找到如下地址
http://forums.cnet.com/7723-12546_102-237219.html
其中有條說run as administrator,這是權限問題,不過我登陸的就是管理員賬號,應該不存在這樣的問題。
抱著姑且一試的想法,寫了個cmd文件,右鍵run as administrator后,居然真的注冊成功了!
看來Win7系統真的很安全,就算是管理員,也得來個run as administrator后才能做一些事,是在向sudo學習么?
最近試著用html5在頁面加載mp3文件。在chrome下測試通過了,偶然的用firefox4打開,居然沒法用……
懷疑哪里寫錯了,可audio標簽也就幾個屬性而已。
幾經搜索,最后發現的真相讓我很崩潰……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/
看了這個表之后,雖然很多瀏覽器都支持html5,但如果你想播放一個文件,任何一種格式都不能讓所有瀏覽器正常播放。
哈哈哈,html5定義了媒體標簽,但沒規定媒體的默認編碼格式,導致各瀏覽器各自為政。
真是不方便……
GD畫圖時通常顯示文字是用imagettftext方法,但它的參數必須是UTF-8編碼的。
此時得注意php文件的編碼
1.如果是UTF-8的,直接傳硬編碼字符串就可正常顯示
2.如果是gb2312或其它的,則必須進行轉換 mb_convert_encoding($str, 'UTF-8')
另外,還有一種情況,JIS-mapped Japanese Font Support被開啟時,imagettftext就必須傳SJIS編碼,傳UTF-8反而會亂碼。
此時必須將其轉碼后傳入,mb_convert_encoding($sStr,"SJIS", "UTF-8")。
以上。
在次提供TurboC3.0英文版下載。
TCPP.rar
上網須謹慎,下載請殺毒。
TC3.0窗口模式,邊框有中文亂碼。全屏就沒有。
原因是當前的code page是中文的936,可以在cmd中用chcp命令查看。
利用命令 chcp 437 改為老美的,就可以了。
具體操作
啟動TCPP.exe->File->DOS Shell->chcp 437->exit
回到TCPP后就沒亂碼了。
但這個方法治標不治本,每次啟動TCPP仍是亂碼。
另一種方法
在TCPP窗口的左上角單擊,出現菜單(包含最大化,最小化,屬性等),在默認選項的第一個頁面“選項”里Default code page選擇437 (OEM United Status)。因為我目前使用的是英文系統,不知道中文系統中是否有該項。如果沒有該項,請自行尋找方法讓它有。
之后,一切OK,至少我OK了……
中鐵快運 跨省 4.3元/KG
一般3天到,但有時貨運量大,無法確定到貨時間
上午10:30電話過去,說下午2點后才能來取貨,我說下午不在,比較緊急,實際上取貨師傅11點多就到了
來取貨的人有2人,開的是面包車,能一次運走較多貨物
貨物較散時會收15元包裝費。
一般人不支持貨到付款,只有大客戶才支持。
先交費,多退少補(一般會多收),發票不當場發,之后會聯系你或郵寄給送貨地址(具體不詳)。
我是當天要離開,沒法將發票給我,他們說會將發票和多的錢放到包裝的貨物里。
順豐快遞 跨省 1KG內20元,超過部分12元/KG
到貨很快,合肥到杭州一天內能送到。
來取貨的只有1人,開電動車,貨物較多時無法一次取完。
支持貨到付款,無包裝費。
客服說1小時內到,通常半小時左右會有取貨人來電話聯系,之后看情況,有時候半小時能到,有時候很拖。
已經有人做了介紹
http://www.hzlzh.com/sina-app-engine-beta/
對我這種平時寫點小應用自娛自樂的個人開發者來說,最重要的變化就是SAE不再免費了
1RMB=50云豆
SAE進入beta后發放給內測開發者5000云豆,我去帳號里查看時剩下4945,感覺用得有些快
平時也沒寫多少東西,也就10多個php頁面,以后還是側重玩GAE吧……
雖然SAE相比GAE規模不大,但也有些不錯的地方
譬如cron,同樣的5min間隔執行的東西,SAE比GAE更準些
譬如客戶端,雖然SAE沒法在本地執行代碼,但能從服務器下載應用的最新代碼很不錯
之前GAE寫的東西,有些是在公司電腦里寫的,有些是在家里寫的,現在都不知道家中電腦里的代碼是不是最新的了
SAE進入beta后,能在線查看修改代碼,使用的編輯器是ecoder,
http://ecoder.quintalinda.com/
SAE很多其他功能還沒用到,就不多做評價了
以下說點胡話吧
國內整體環境有些急功近利,運營1年多了,沒任何收入,SAE也是國內第一個吃螃蟹的,能否盈利也不清楚,投資者沉不住氣,SAE團隊大概也是頂不住上層的壓力,迫不得已開始收費計劃。
總感覺SAE還沒成熟到能收費的階段,因為SAE上的應用并不多,我只見到10多個而已
應用能減少建站難度。應用少會限制SAE的用途,SAE面向的群體是什么呢,現在能干什么呢?個人的話,租php空間來干嘛,主要是搭博客,建論壇,搞CMS;想創業的,大概不會選SAE,因為限制太多,不如租主機,自由度更高;企業的話,注重的是穩定,現在還不會嘗試新出來的SAE
開發SAE開源項目,SAE會獎勵云豆。應用不多這點也能靠收費來激發開發者多發開些SAE開源項目來彌補,不知效果會如何
現在還真不知道SAE會發展得如何……
預計近期SAE應該會開發注冊吧,新帳號里應該會有一些云豆,給開發者試用,然后期待這些新鮮血液帶來更多付費用戶和SAE開源項目,希望SAE能發展下去