2011/06/11

Powerful Web Development & Debug Tool: Aptana & Firebug

1. Aptana

Aptana是一個免費、功能強大、open-source的網頁開發工具,它是基於eclipse的一套IDE軟體。不論是用來編寫HTML, CSS, JavaScript, PHP, Ruby on Rails, Django都有原生支援。以下是他的特點:

Code Assist:

它可以用來幫你檢查程式錯誤,並且給你建議該如何解決,這就像原本的eclipse對Java的錯誤建議一樣好用。而且在你寫程式時,它還會列出支援的瀏覽器,讓你不再為跨瀏覽器支援度苦惱。

code assist

Aptana Code Assist 自動列出html tag

Auto Complete (Intellisense):

這是我最主要使用Aptana的原因之一,它可以自動幫我們填上function的名稱、檔案名稱,懶人必備!

aptana

Aptana Auto Complete (Intellisense) 增加web開發速度

版控軟體Git:

讓你可以跟你的夥伴多方工作,這也是現代軟體開發必須的功能。

git

Aptana與Git的整合

ftp上傳工具:

寫完程式還要另外開ftp clinet上傳程式嗎?Aptana也有內建了!而且他還支援SFTP, FTPS等加密傳輸。

ftp

Aptana 以內建ftp client

Aptana與jQuery的Auto Complete (Intellisense)

如果你的程式不只是用標準的html tag、javascript function,而是需要3rd party的libraty如jQuery的支援,這時候如果還想要支援Auto Complete (Intellisense)功能,則需要再專案加入.sdocml檔案。可以到appcelerator找到完整的.sdocml列表,比如我們要的jQuery則可以下載jquery.1.4.2.sdocml。把它加入專案個根目錄即可。

aptana (2)

在Aptana加入jquery.1.4.2.sdocml

這時候我們再寫jQuery時就可以看到效果了。function的說明、範例一應俱全!

aptana (1)

Aptana對jQuery的Auto Complete (Intellisense)效果

2. Firebug

Firebug真是網頁設計師的好朋友,它可以動態的執行javascript,讓開發者可以很容易知道各function、變數的情況。我們就以jQuery為例來說明:

比如有一個table長這樣:

2011-06-11_174829

Table範例

我們在使用jQuery的selector想要抓出最右邊的column,也就是host id。使用jQuery的語法:

$('#host_list_area tr').find('td[name="hostId"]');

這時候就可以抓顯示出到底這個selector可不可以抓到你想要的element。如下圖,我們可以看到回傳了3個td元素。

aptana (3)

Firebug主控台可以下javascript指令

把滑鼠移到其中一個td,網頁上就會顯示出相對應被選到的元素,實在太方便了。

aptana (4)

被選取的元素

如果我們想要看其中一個td的html碼,就上其上按一下滑鼠左鍵,就會跳到HTML頁面:

aptana (5)       

Firebug HTML頁面: 選擇到的td的html

即使這個html是我使用jQuery動態產生的,一樣可以顯示的出來喔。眼見為憑總是比虛無飄渺的程式碼容易debug!

PS:如果還有其他好用的網頁開發、debug的工具,也請讀者留言告知喔!

2011/05/21

libvirt指令同步、非同步問題

簡介:libvirt是一個對各品牌hypervisor(如Xen、VMWare、KVM等)抽象化的wrapper,比如xen可以透過xm指令來操作hypervisor,但是一旦底層hypervisor從xen改變成其他品牌(如:KVM),那xm指令就不再適用,所以使用libvirt就可以達到抽象畫的目的。

rhel5-virt

libvirt提供一套介面操作各種hypervisor ()

如果我們透過直接使用virsh(libvirt的shell)分成2個視窗執行create/destroy和list的結果,認為virsh command是使用同步執行的方式,也就是動作執行完畢才會返回。

我們先執行create後,馬上執行list,發現create domain-U的結束時間,還比list晚1秒鐘,因使可以推論create時會建立好vm後,就可以讓list去取得列表,但create domain-U後可能還會做一些其他事情,所以回來的時間稍微比list晚一點。因此,可以判斷virsh command應該是同步執行完後才返回。

[root@hyperimagestoreageweb tmp]# virsh create centos1.xml && date

Domain centos1 created from centos1.xml

Fri May 20 16:35:30 UTC 2011

[root@hyperimagestoreageweb ~]# virsh list && date

Id Name State

----------------------------------------------------

0 Domain-0 running

59 centos1 paused

Fri May 20 16:35:29 UTC 2011

但是如果我們使用Python-libvirt這個binding,就會發現有些指令如delete,在指令下去後,馬上就會返回,但是Python-libvirt卻沒有馬上做delete的動作,這是因為我們馬上做list的動作,還是可以看到預計被delete的domain-U一樣存在,所以可以判斷Python-libvirt有些動作是非同步執行,所以要獲得最新的domain-U資料,就必須使用polling反覆詢問。

Xen狀態running/blocked跳動問題

問題:在使用xen建立好一個domain-U後,使用virsh list (或xm list)指令觀察其狀態,可以發現domain-U的狀態常常在running/blocked切換。有些人可能誤以為這是底層xen的bug,但是這是正常現象。

我們可以從man看到xen定義了6個狀態(r - running 、b - blocked 、p - paused 、s - shutdown 、c - crashed 、d - dying),其中的

r - running:

The domain is currently running on a CPU

b - blocked:

The domain is blocked, and not running or runnable. This can be caused because the domain is waiting on IO (a traditional wait state) or has gone to sleep because there was nothing else for it to do.

也就是說running是系統有在執行工作,而blocked則是沒有工作可以做。我做了一個試驗,使用vnc登入domain-U,執行一個無限回圈的程式,在透過觀察後確認那台domain-U會一值處於running狀態。所以blocked和running頻繁的跳動是正常現象,這是因為OS本身的背景服務被執行時就會處於running狀態,隨後又處於blocked狀態。

2011/04/12

Python: Eclipse+Pydev環境安裝教學

前言

Python是一個功能強大、開發快速的程式語言。在業界,Python大量被使用在整合各種系統模組,而這些模組並不需要是Python撰寫的,而可以是C/C++/Java等等。在Google內部,是工程師最愛使用的語言。下面一節將會教你如何在Eclipse透過安裝Pydev撰寫Python成

Eclipse+Pydev環境安裝

0. 安裝Ecplise及JRE,請參考這篇的步驟3和4

1. 安裝Python直譯器(如:Python 3.2 Windows x86 MSI Installer)

http://www.python.org/download/

2. 安裝好後,將

C:\Python32;C:\Python32\Tools\Scripts;

加入Path變數

pydev (5)

2. 接著在Eclipse上安裝Pydev plugins

eclipse

Eclipse->Help-> install New software,填上

name: Pydev

url: http://pydev.org/updates

注意!網路上寫的網址 http://pydev.sourceforge.net/updates/ 是舊資料,已無法使用。最新網址可以到這裡查。

PS:如果要寫javascript、Jquery,可以使用aptana

name: Pydev

url: http://download.aptana.com/tools/studio/plugin/install/studio

3. 為了讓Eclipse裡的Pydev知道Python直譯器在哪,請在

Eclipse -> Window –> Pydev-> Interpreter – Python

image

新增Python直譯器的位置。

New –> Browse –> 填上C:\Python32\python.exe

image

這時候系統會自動選擇相關的模組,直接加入即可。

pydev (7)

4. 設定完成後,即可新增一個Python專案。由於是第一次使用,所以選單列不會出現Python專案的選項,先選擇Other。

pydev (8)

然後選擇Pydev Project

pydev (9)

5. 打上project name,選擇Python的版本

pydev (10)

6. 在新增的專案按右鍵,建立一個新的Pydev package。

pydev (1)

7. 為package命名

pydev (2)

8. 接著在預設的原始碼(__init__.py)打上程式碼如下:

print(‘csie-tw.blogspot.com’)

並且在檔案上按右鍵->Run as-> Python Run

pydev (3)

9. 如果再Console可以看到畫面就是成功了!

pydev (4)

10. 參考資料

http://pydev.org/manual_101_root.html

2011/04/09

免費查詢手機網內、網外的方法

1. 摘要

想要查詢手機門號是哪家電信業者的方法,除了要撥打各電信業者的付費電話57016外,還有一個可以從簡訊可以看出喔。由簡訊內文的「訊息中心」就可以看出是哪家電信喔。

2. 原理(沒興趣的讀者可跳過此節)

一般簡訊傳輸的過程如下圖:

繪圖1

所謂的簡訊服務中心(Short Message Service Center)就是簡訊傳輸時,會先經過的伺服器,它可以幫忙轉送簡訊到達接收手機。如果接收端手機沒有開機,那麼簡訊服務中心就會把資料儲存起來,等使用者開機時再傳送。以上圖為例,假設左邊的手機為中華電信的門號,它要傳給亞太電信的門號,一開始先把簡訊傳給基地台,再轉傳給簡訊中心,簡訊中心則判斷接收端是否開機,沒有的話則先儲存起來,否則在網基地台傳送,最後到達亞太門號。

由於簡訊服務中心是電信業者各自為政,彼此不會共用。所以如果發送端手機是中華電信的門號,那麼簡訊服務中心也一定是中華電信的系統。

3. 如何查詢

你可以看對方傳過來的簡訊,看簡訊內的「訊息中心」,就可以知道對方手機業者了。以下就是各家業者的「訊息中心」,如果你有發現其他「訊息中心」沒有列在上面,麻煩留言告知,我會定期更新最新資料。以下門號可能隨時更新,請到本頁查詢最新資料,感謝。

中華電信(CHT) 訊息中心

+886932400851

+886932400831

+886932400841

+886932400843

+886932400844

+886932400821

+886932400822

+886932400823

+886932400881

+886932400305

+886932400804

+886932400805

+886932000821

 

 

 

台灣大哥大訊息中心

+886935874383

+886935874443

+886935874363

+886935074443

+886935874306

+886935874384

+886935874354

+886931744032

+886931413131

+886931744010

+886931413131

+886935874434

+886935874432

+886935874443

+886935074443

+886935420394

+886935420384

+886935874259

+886935874258

+886935874307

 

 

亞太電信訊息中心

+886982194007

+886982194042

 

 

台灣3G-威寶電信(Vibo) 訊息中心

+886986442901

 

 

 

遠傳電信(Far Eastone) 訊息中心

+886931000099

+886938348404

+886938749104

+886936000088

+886938348422

+886936000091

+886936000160

+886936000161

+886936012201

+886936000090

 

 

 

中國大陸地區訊息中心

中國移動

+8613800ABC500

ABC 為長途區號,區號不足三位的在第三位補0。如上海區號為21,則ABC210

移動

+8613800769500

 

 

國外業者訊息中心

AT&T

+19078319301

 

Cingular

+12099042010 (West Coast)

+17045020600 (East Coast)

T-Mobile:

+12063130004

 

Rogers Wireless (Canada)

+17057969300

 

Fido (Microcell - Canada)

+15149931123

以上資料由藏經閣整理,歡迎引用,但請附上原文網址,以方便讀者取得最新資料:http://csie-tw.blogspot.com/2011/04/blog-post.html

57016查詢手機網內、網外的方法

各家電信業者對網內的使用者大都有優惠價格,以往可以借由手機號碼判斷相關的電信業者,但是自從「門號可攜(NP)」服務上線上,就天下大亂啦!現在,如果想知道某個手機門號是哪一家電信業者的,除了直接問對方外,現在可以以手機直播57016查詢喔!以下表格式網路上收集來的,如果有錯誤,麻煩告知。

業者

月租門號

預付卡

備註

威寶電信

免費

網內計費

預付卡收費可接受,月租型免費值得鼓勵!

台灣大哥大

網內計費

網內計費

新室話299不適用前三分鐘免費

中華電信

網內計費

網內計費

可在月租費內折抵

遠傳電信

網內計費

網內計費

大眾電信

不提供

不提供

因不可攜入或攜出,故不提供本項服務

亞太電信

網內計費

網內計費

月租費不可折抵,必須外加

Buddhism and Software Developer

In today's fast-paced society, we are often surrounded by work, goals, and external pressures. However, the wisdom found in Buddhism off...