在畢業設計裡加入了一個遠程的服務端負載監測功能,可以遠程查看服務端的當前CPU負載、內存分配等狀況,效果圖如下:
前台用Flex實現,Flex的圖表組件很好用,坐標軸能自動根據數據來調整,不過數據綁定上好像有點問題,數據源更新了圖表卻不會自動刷新~~後台由Erlang提供數據,Erlang的OS_MON模塊可以提供系統CPU負載、內存狀況、硬碟空間使用情況等系統信息~~Erlang通過Socket主動推送JSON格式的數據給客戶端~~有興趣的話可以看看源碼:
客戶端源碼 / 服務端源碼
[ Erlang + ActionScript ] System Monitor
2009-05-12
| 張貼者:
M-OSCAR
Posted In
actionscript,
erlang,
flex,
json
|
0
意見
|
Erlang處理JSON數據~~
2009-05-09
| 張貼者:
M-OSCAR
要用Erlang處理JSON數據,先下載這個東東:
JSON and JSON-RPC for Erlang
下載解壓編譯完之後,輸出的beam文件在ebin目錄下~~
上面下載的包裡有一個rfc4627模塊,提供了JSON數據的encode、decode等方法,還可以將JSON與Erlang Record相互轉換,十分方便快捷,下面看看用法:
JSON and JSON-RPC for Erlang
下載解壓編譯完之後,輸出的beam文件在ebin目錄下~~
上面下載的包裡有一個rfc4627模塊,提供了JSON數據的encode、decode等方法,還可以將JSON與Erlang Record相互轉換,十分方便快捷,下面看看用法:
首先試試將字符串轉換為Json Object:
1> JsonBin = <<"{
1> \"username\":\"Oscar Tong\",
1> \"password\":\"123456\",
1> \"male\":true,
1> \"age\":23
1> }">>.
<<"{\n\"username\":\"Oscar Tong\",\n\"password\":\"123456\",\n\"male\":true,\n\"age\":23\n}">>
2> {ok, {obj, JsonObj}, _Rest} = rfc4627:decode(JsonBin).
{ok,{obj,[{"username",<<"Oscar Tong">>},
{"password",<<"123456">>},
{"male",true},
{"age",23}]},
[]}
再轉換為JSON格式的字符串:
3> rfc4627:encode({obj,JsonObj}).
"{\"username\":\"Oscar Tong\",\"password\":\"123456\",\"male\":true,\"age\":23}"經測試表明,JSON數據的解析與處理速度比XML要快得多,decode和encode僅耗時約40us,比xmerl模塊處理XML需要超過200us相比實在是快多了~~
ActionScript處理JSON數據~~
| 張貼者:
M-OSCAR
要用ActionScript來處理JSON數據,首先下載這東東:
as3corelib
as3corelib包裡有一個JSON類,可以將一個AS Object轉換為JSON格式的字符串,例如:
貌似輸出結果的順序有點亂了,另外JSON還有一個靜態方法decode,可以將JSON格式的字符串轉換為一個AS Object,具體自己看看包裡附帶的reference吧~~
as3corelib
as3corelib包裡有一個JSON類,可以將一個AS Object轉換為JSON格式的字符串,例如:
var obj:Object = {
username : "Oscar Tong",
password : "123456",
age : 23,
male: true,
contacts: {
mobile: "13800138000",
phone: "020-39322849",
addr: "guangdong university of technology"
}
}
var json:String = JSON.encode(obj);
trace(json);
輸出JSON格式的字符串為:
{"username":"Oscar Tong",
"age":23,
"password":"123456",
"male":true,
"contact":
{"addr":"guangdong university of technology",
"phone":"020-39322849",
"mobile":"13800138000"}
}貌似輸出結果的順序有點亂了,另外JSON還有一個靜態方法decode,可以將JSON格式的字符串轉換為一個AS Object,具體自己看看包裡附帶的reference吧~~
Posted In
actionscript
|
0
意見
|
精簡URL以減輕網站流量壓力?
| 張貼者:
M-OSCAR
這篇文章《Thinking outside the box - Filenames and Web Optimization》講述了長URL如何吃掉高流量網站大量的帶寬,以及提供了一些解決方法,值得看看~~
gen_tcp:controlling_process BADARG error ??
2009-05-07
| 張貼者:
M-OSCAR
今晚嘗試了一下在ERLANG裡將SOCKET鏈接的控制進程轉到另一個節點上去,結果得了一個{error,badarg}錯誤,代碼如下:
....
{ok, Sock} = gen_tcp:accept(Listener),
Pid = spawn(SomeOtherNode, Mod, Fun, Arg),
ok = gen_tcp:controlling_process(Sock, Pid),
....看來想用這種方式來將眾多SOCKET鏈接的壓力分擔到多個節點上是不行的 -____- |||
Erlang的進程信息過濾
2009-05-06
| 張貼者:
M-OSCAR
Erlang進程之間可以通過收發信息來通信,有時可能有一堆信息從各處無序的湧來,你只想處理其中部分信息,而將其他的保留在進程的收件箱裡遲點再管,那該怎麼搞呢?其實很簡單的,看下面代碼:
...
wait_for_reply() ->
receive
{reply, Reply} -> handle(Reply);
_Other -> wait_for_reply()
end.上述函數僅處理匹配{reply, Reply}格式的信息,其他信息因為唯一的匹配模式是一個被忽略的參數_Other,因此不會被處理而繼續留在收件箱裡~~
Erlang : head mismatch ??
2009-05-02
| 張貼者:
M-OSCAR
今天編譯代碼的時候出現了一個奇怪的問題,erlang老提示某個函數有head mismatch錯誤,但我看來看去沒發現什麼不對哇,函數的定義和調用都沒錯~~最後發現原來是因為函數放置了在兩個重名函數之間,即:
出錯前: myfun(params1) -> .... ; myfun(params2) -> .... . 這樣就會提示錯誤了: myfun(params1) -> .... ; new_fun_here(params) -> .... . myfun(params2) -> .... .把新函數放到其他地方就OK了~~粗心之過~~
訂閱:
文章 (Atom)
