2010年5月24日 星期一

Moving in input box with javascript

image

我們想在網頁上藉由一系列按鍵在表單上移動,就像上圖所示,下面的素材可以幫助我們完成所需要的功能

Tab Key Emulation
模擬使用者按下tab按鍵,指定在表單內哪些元件移動。

INPUT FIELDS: Cursor Position Control Example
取得游標停留在字元哪個位置。

Setting Cursor Position in a Textbox or TextArea with Javascript
設定游標停留在字元哪個位置。

鍵盤事件:基本測試
取得鍵盤按鍵的key code。

2010年5月20日 星期四

Get interface ip in linux kernel

在userspace的ioctl是不能使用的。在這邊以取得"br0"為範例。

struct net_device *br0_dev;
struct in_device *br0_in_dev;

br0_dev = dev_get_by_name(&init_net,"br0");
br0_in_dev = in_dev_get(br0_dev);

printk(KERN_INFO br0 ip:"NIPQUAD_FMT"\n" ,NIPQUAD(br0_in_dev->ifa_list->ifa_address));

NIPQUAD的話要參考前一篇ip轉換為字串的說明。

參考資料:
[1] 利用net_device取本机ip地址+网络设备的IP地址结构

2010年5月19日 星期三

Print ip string in kernel

平常我們在linux下撰寫app的時候,可以使用inet_ntoa()之類的語法來將32bit的binary轉換成可讀的ip字串。但是在kernel環境下,沒有inet_ntoa之類的方法可以利用,但是我們可以利用簡單的形式作一下轉換。

這個範例利用define減少撰寫程式碼,當然你可以把它包成function。

addr是32bits類型,例如__be32。

先定義addr取哪些變數出來。

#define NIPQUAD(addr) \
        ((unsigned char *)&addr)[0], \
        ((unsigned char *)&addr)[1], \
        ((unsigned char *)&addr)[2], \
        ((unsigned char *)&addr)[3]

定義印出的ip格式。

#define NIPQUAD_FMT "%u.%u.%u.%u".

最後印出ip至console上。

printk("my address is " NIPQUAD_FMT "\n", NIPQUAD(ic_myaddr));

參考資料:
[1] Re: Is there any function similar to inet_ntoa() in Kernel or NetFilter

2010年5月7日 星期五

javascript檢查數字

這邊想要做的是用javascript檢查來源字串是否是數字,最常用的是isNaN()作為檢查。但是isNaN()對於空字串是無法檢測出來的。JavaScript 空白を0として合計金額を計算這篇文章說到了可以利用"!"這個運算符號檢查出空字串。

但是呢,我發現空白字串,例如"   "這樣子是無法被"!"檢測出來的。轉個彎來說,要解決的個問題,可以利用trim()這個方法消除空白字串成為空字串,然後再利用"!"檢查出來就OK了。

[2010.5.17 updated]

trim()在IE系列中並不支援。請使用下列語法來達到trim()的效果。

if (!('trim' in String.prototype)) {  
    String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g,""); };   
}

參考自Internet Explorer 6: No String.trim() support