2009/06/24

[Programming] IP 驗證 使用常規表示式

資料來源是這邊
function is_ip(strIP)
{
var re=/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/g
if (re.test(strIP))
{
if (RegExp.$1<256 && RegExp.$2<256 && RegExp.$3<256 && RegExp.$4<256)
return true;
}
return false;
}

做了點小修改:
var 提到最前面,const 改用大寫,function naming 改用 c style 。

[Linux][軟體] 避免 apt 升級部份套件的方法

debian 官網的說明 其實說的很清楚了,不過我還是怕自已記不住,所以寫下來比較妥當。而且,其實我的英文懶惰症一陣一陣的,所以趁現在沒有發作,把東西寫一寫也是不錯的。

Q: 如何避免 apt 雞婆的更新部份你想要裝不想要更新的套件呢?
A: 修改 /etc/apt/preferences 就好了,內容會像是:
Package: PACKAGE_NAME
Pin: PIN
Pin-Priority: PIN_PRIORITY


老大? 那個 PIN 跟 PIN PRIORITY 是什麼鳥啊?
官網有再舉例說明:
Package: sylpheed
Pin: version 0.4.99*


像這個 sylpheed ,針對 version 0.4.99* 的動作是設定它的更新優先順序為什麼,然後 apt-get upgrade 的時候,就會去比對優先順序,知道這個東西要不要更新。

所以優先順序填成下面的值,會造成不同的結果:

1001 # 永不更新,如果現存的版本比較新(優先順序比較低)還會作降級的動作
1000 # 跟 1001 一樣,不過 apt 不會作降級的動作
990 # 如果有比較高的版本用 "APT::Default-Release" 標示的會昇級
500 # 比 0.4.99 還高的版本就會昇級,不過 0.499 還是較低版本裡面的第一選擇
100 # Sylpheed 裡面有更高的版本就會不管 0.4.99 ,但如果沒有其它的版本先安裝了的話,就會先裝 0.4.99
-1 # 避免裝 0.4.99 這個版本

--
參考連結:
1. Ubuntu 的官網說明文件

2009/06/23

[Programming] 基本 C 應用 char[] to int

聽說有高手會看我的 blog ,我知道這很基本,不過我就是會搞錯,所以還是寫一下:

範例在這邊:
#include <stdio.h>

int
main()
{
char buf[] = "1234";
int *c = (int *) &buf;
printf("c = '%d'\n", *c);
printf("c = '%x'\n", ntohl(*c));
printf("%d\n", sizeof(int));
printf("%p\n", buf);
printf("%p\n", &buf[0]);

return 0;
}


1. 假設讀檔讀入的 buf 是 "1234";
2. 指定(int *) c 到 buf 的位置
3. 需要再反轉 byte order ,也需要注意 sizeof 的問題

2009/06/19

[軟體] Firefox 3.5 rc1 釋出

這邊有 firefox 3.5 未來會有的功能上的改變,包括有:

* 支援 HTML 5

  • 可以使用 audio 跟 video 標籤

  • 符合HTML5 標準離線運用網路的資源

  • 拖拉的 API (終於不用再自已搞一堆了)



* CSS 新的規格

  • CSS 2.1 裡頭提到的 :before 跟 :after

  • opacity 透明度支援 ,舊的 -moz-opacity 就不用再拿來用了。

  • text-shadow 陰影字

  • word-wrap 換行使用


不認識的一堆 selector :
:nth-child
:nth-last-child
:nth-of-type
:nth-last-of-type
:first-of-type
:last-of-type
:only-of-type


* DOM 的功能加強
* 字型下載支援
* SVG 新的功能支援 (不知道可不可以像 chrome 一樣播 SVG 動畫了)
* Javascript 也有新的功能支援 (XMLHttpRequest 支援了 progress)
...

靠,功能更新太多了,極力推薦下載啊。 (不是不想翻的關係嗎?)

載點可以點官網連結

2009/06/15

[Programming] awk 抓 cmdline

簡單事情簡單做,是程式寫作上面一個很基本的原則。所以我們常常看到在寫 shell script 的時候,會有用 awk, sed, perl, cut, xargs 這些指令出來跑龍套的時候。的確,這些指令是蠻簡單的,像在處理 cmdline 遇到要抓裡面的值的時候,我們會用這樣的手法來抓裡面的值:
$ cat /proc/cmdline
init=/etc/preinit root=/dev/mtdblock4 rootfstype=jffs2 rw mem=56M frst=n ubootver=U-Boot_10
hwaddress=eth0,00:aa:bb:cc:dd:ee console=ttyS0,115200 mtdparts=comcertonand:512k(cfg1),
$ cat /proc/cmdline | awk '{print $2}'|cud -d '=' -f 2
/dev/mtdblock4
ttyS0,115200
$ cat /proc/cmdline | awk 'NR==1{print $2}'|cud -d '=' -f 2
/dev/mtdblock4


呃…真是很爛的寫法。

其實只要一行就夠了:
awk 'BEGIN { RS=" "; FS="="; } $1 == "root" { print $2 }' /proc/cmdline

Shell 真的是蠻簡單的,不過,就是要多練習,多用用,才會顯出老手與菜鳥間的差異。

2009/06/11

[軟體] vim 用 script 方式執行指令

雖然有很多工具可以用,不過 vim 始終有許多好處讓人愛不釋手。
這個「用 script 方式執行指令」就是其中之一。

狀況:
.txt 檔案沒有 bom header ,所以 Windows 記事本開的時候會有問題 or Windows 記事本存下來的檔案有 bom 開頭,所以讀取的時候還要特別 strip 掉 ef bb bf 這樣的東西。


我們可以利用 vim 的 -s scriptfile 的功能,加上一個 script file

:set bomb
:wq!


指令稿的內容是把文檔設成 bom 的格式然後存檔退出。

利用這方式,就可以很輕鬆的應用 vim 處理多個文檔。

2009/06/05

[軟體] Skype 4.0 快速鍵

今天亂玩時才發現,原來 skype 4.0 有綁定一些快速鍵:

alt + 1 顯示聯絡人清單
alt + 2 顯示對話視窗
alt + 3 顯示對話記錄

不過綁這個要幹嘛啊? 有點搞不懂 skype 公司在想什麼。
而且沒有人知道,也沒有可以自訂的說明。

如果改用 alt + 1 直接撥給連絡人不是很好嗎?

[Windows] 好用的小工具: AutoHotKey

做為一個 Linux 的愛好者,轉移到 Windows 上面的時候,往往難以適應 Windows 調整快捷鍵的方式,所以 google 了一下,結果發現很多人愛用的 "Auto Hot key"。不多說,就來給一個範例說明如何使用 Auto Hot key 來...