2009年4月13日 星期一

ubuntu 8.04 64bit flash安裝

最近剛將ubuntu-8.04 32bit改灌成64bit

碰到的第一個問題就是adobe只出32bit的套件包而已

只好想別的方法了

$ wget http://queleimporta.com/downloads/flash10_en.sh

$ sudo chmod +x flash10_en.sh

$ sudo sh ./flash10_en.sh

我又可以開開心心上youtube了~~ :)

ubuntu藍芽滑鼠設定

最近買了一隻microsoft M5000的藍芽滑鼠,在linux下好像沒辦法直接抓到

必須透過一些設定才能正常使用


$ sudo apt-get install bluez-compat

將HIDD功能打開
$ sudo vi /etc/default/bluetooth

HIDD_ENABLED=1

重新啟動藍芽服務
$ sudo /etc/init.d/bluetooth restart

掃描裝置
$ sudo hcitool scan

連結裝置
$ sudo hidd --connect 00:1D:D8:94:86:CF

設定開機自動偵測
$ sudo vim /etc/bluetooth/rfcomm.conf

rfcomm0 {
bind yes;
device 00:1D:D8:94:86:CF;
channel 1;
comment “Bluetooth Mouse”
}


enjoy it!!

2009年4月6日 星期一

愛不釋手的aMSN

最近發現了一個好用的msn軟體,叫做aMSN

在這之前我都是用內建的pidgin,雖然他可以登入多種帳號(yahoo icq msn etc...)

但在msn中似乎對自訂表情符號,並沒有支援實在很不方便

google一下發現,aMSN似乎滿熱門的,就決定用它了


sudo apt-get install amsn


不過預設的外觀似乎有點醜醜的,看了就沒fu

還好這是有方法解決的~~~

先到amsn-project下載想要的skin


unzip aMSN_Futurosoft-1.1.zip

mv Futurosoft ~/.amsn/skins/


開啟aMSN選擇Account/Select Skin

usb sniffer教學

上一篇介紹完使用wireshark安裝後

這一篇要介紹使用wireshark分析usb sniffer


在linux下要擷取USB內容是相當容易的事情


sudo mount -t debugfs none_debugs /sys/kernel/debug

sudo modprobe usbmon

cat /sys/kernel/debug/usbmon/1u >> ~/temp.out


但這種方式只能擷取交握訊號,並不能對其作分析

所以我選擇使用wireshark來輔助分析

目前支援usbmon必須是libpcap-1.0.0版以上
(ubuntu 8.04只更新到libpcap-0.8)

先到http://www.tcpdump.org下載最新版本

tar -xvf libpcap-1.0.0.tar.gz

cd libpcap-1.0.0

./configure

make

sudo make install


再依照上一篇wireshark安裝教學,重新編譯一次即可

為了可以要執行時自動modprobe usbmon

做了以下修改


gedit wireshark-mnt

#!/bin/bash
sudo mount -t debugfs none_debugs /sys/kernel/debug
sudo modprobe usbmon
sudo wireshark


然後將wireshark-mnt移至/usr/sbin/


sudo mv wireshark-mnt /usr/sbin/


開啟wireshark進入capture/interfaces

就可選擇要擷取的USB裝置,如下圖


使用wireshark監控網路狀態

最近在寫linux下的網路程式,剛好就研究了一下sniffer怎麼用

我選了wireshark這套軟體,參考 wireshark

目前版本為1.0.6,安裝方法如下


tar -xvf wireshark-1.0.6.tar.bz2

mv wireshark-1.0.6 ~/opt/

cd ~/opt/wireshark-1.0.6/

./configure (要先安裝libpcap及flex)

make

sudo make install

安裝完後啟動,遇到了一個問題

wireshark: error while loading shared libraries: libwiretap.so.0: cannot open shared object file: No such file or directory

囧了~wireshark找不到libery

但在/usr/local/lib/可以發現libwritetap.so.0確實存在

不得已只好將路徑加入/etc/ld.so.conf

sudo gedit ld.so.conf

include /usr/local/lib

sudo ldconfig

sudo wineshark

大功告成,啟動畫面如下


2009年3月26日 星期四

數位影像負片處理

這學期選了一門還不錯的課,數位影像處理。

從很久以前就對這一方面還滿有興趣,但一直沒有時間去好好的瞭解

就趁著系上剛好有開這門課,當作一個學習的動力
(說沒時間是假的,明明就是愛找藉口#$%$#@)

接下來就來一個小程式,數位負片處理 :D

在開始程式之前稍微介紹一下,數位影像的概念

通常一張全彩的影像,包含了RGB共3Byte

而每一顏色使用1Byte表示之

其亮暗程度可分為0~255,0最暗255最亮

相信到這邊,都不難理解,接下來就可以進入主題『數位負片影像處理』

數位負片顧名思義就是,亮變暗而暗變亮

因此處理方式如下↓

負片值 = 255 - 原始影像
255 = 255 - 0
0 = 255 - 255
30 = 255 - 225

上述範例,不難看出最亮變成最暗,最暗變成最亮

只要將影像上的每一點,經過這樣的處理就能得到負片效果

以下就來看看實際處理後的效果

[原始影像]


[全彩負片]


雖然這個程式非常的簡單,不過至少是認識數位影像處理的第一步!!

C語言監控IO

最近在寫R232的連線程式,一開始的做法是使用timer定期去抓buffer裡的資料

但由於程式要求的資料量不大,此方法會造成cpu無謂的loading

但最近再翻GTK時,突然發現一個好用的函式如下↓


gint gdk_input_add( gint source,GdkInputCondition condition,
GdkInputFunction function, gpointer data);

這個函式可以監控IO當資料有所進出時,可執行自訂函數。

參數1: source 即為檔案描述器

參數2: condition 為要監控的模式
GDK_INPUT_READ 當檔案描述器有資料可供讀取時,則執行自訂函數
GDK_INPUT_WRITE 當檔案描述器已準備好可寫入時,則執行自訂函數

參數3: function 自訂函數名稱

參數4: 傳入自訂函式之參數

回傳值: 傳回一個標籤tag,可用此標籤移除對IO的監控如下↓
void gdk_input_remove(gint tag);

自訂函式宣告格式:
void input_callback( gpointer data,
gint source,
GdkInputCondition condition );

原先使用timer方式讀取IO,CPU的負載平均30~40%左右

使用此方法負載確只有20%,很明顯此方式可有效降低負載。 :)