2009年10月20日 星期二

莫名其妙的無線網路

剛剛在更新pcscd時莫名其妙無線就打不開了
問題在於更新到一半居然將我的/etc/network/interfaces內容全砍了
只好手動把內容加回去了 :(

1. 先將wlan叫起來

sudo ifconfig wlan0 up

2. 查看wlan訊息
sudo iwconfig

3. 搜尋AP
sudo iwlist wlan0 scanning

4. 設定無線AP的SSID
sudo iwconfig wlan0 essid your_ssid

5. 連線
sudo iwconfig wlan0 key your_wep

6. 取得ip
dhclient wlan0

7. 開機啟動設定,更改/etc/network/interfaces
auto wlan0
iface wlan0 inet dhcp
wireless-essid your_ssid
wireless-key your_wep

8. 重新啟動網路
sudo /etc/init.d/networking restart

9. 安裝網路管理套件
這裡推薦WICD套件
sudo apt-get install wicd


寫到這邊網路就復活啦~~ :)

2009年10月4日 星期日

解決VDSO在scratchbox的錯誤

1.在/etc/sysctl.conf 新增

vm.vdso_enabled = 0


2.更新sysctl -p
$sudo su
$sysctl -p

隱藏文章

2009年9月28日 星期一

Ubuntu 9.04 SCIM當機

在ubuntu 9.04下,scim經常會當機

似乎是scim對目前視窗失去焦點,因此必須對視窗調整大小,

才能在重新取得焦點,這在開發軟體時是一件非常令人厭煩的事情。

1.安裝scim-bridge

$ apt-get install scim-bridge-client-gtk

2.修改 /etc/X11/xinit/xinput.d/scim
將 GTK_IM_MODULE=xim 修改為 GTK_IM_MODULE="scim-bridge"


3.重新開機

2009年8月27日 星期四

如何使用makesis

1. cd c:\symbian\carbide\workspace\\sis
2. makesis _gcce.pkg
3. 若出現Error Cannot find file : ../../../../epoc32/release/
  gcce/urel/.exe
  可修改.pkg檔,將找不到檔案的相對路徑改成絕對路徑即可

2009年8月1日 星期六

變更軟體更新伺服器

就在昨天要裝一套軟體,無意間發現軟體更新伺服器掛了,台灣地區預設是連上tw.archive.ubunut.com,只好手動換台伺服器了。

1.設定軟體更新伺服器

系統>管理>軟體原始碼>ubuntu軟體

選擇下載伺服器,也可測試自動選擇最佳的伺服器來源。

2.匯入金鑰
在執行軟體更新時若遇上
W: GPG error: http://ppa.launchpad.net jaunty Release: 由於無法取得它們的公鑰,以下簽章無法進行驗證: NO_PUBKEY 6AF0E1940624A220
可手動指定匯入公鑰
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 6AF0E1940624A220

2009年7月31日 星期五

遠端連線Postgresql

有時架站要跑得服務與資料庫是在不同機器上,這時跑服務的機器就必須透過TCP/IP來存取資料庫,而SQL通常預設只允許在本地端存取,Postgresql也不例外,因此必須透過一點小設定將遠端存取的功能打開。

1.修改pg_hba.conf

sudo vim /etc/postgresql/8.3/main/pg_hba.conf

新增一行存取規則
host all all 0.0.0.0/0 password

參數1:host表遠端存取,local表本機端存取
參數2:設定可存取的Database
參數3:設定可存取的使用者
參數4:設定可存取之網域,此設定全部網域皆可存取
參數5:trust表不需認證,password表示需要密碼

2.修改postgresql.conf
取消註解並設定為 listen_addresses ='*'
取消註解並設定為 port=5432

3.重新啟動資料庫
sudo /etc/init.d/postgresql-8.3 restart

2009年7月29日 星期三

resize inode not valid

今天莫名其妙的在開機過程中遇上filesystem error
整個系統當在那邊,只秀出小小一行resize inode not valid
只好輸入Ctrl+D後登入root,進行硬碟修復

1.硬碟修復

sudo fsck

一直按yes直到結束,再重開機就修復完成。

使用CVS@Eclipse

CVS是一個專案開發的版本控制器,它有什麼用呢?!通常一個專案由多人共同開發,成員間所修改的程式版本必須分類,避免衝突發生,也因此必須藉由CVS來統一管理版本。


為什麼獨自開發程式的我,會大費周張的去建立CVS呢!?!?

事出必有因!!就在昨天我在迷迷糊糊的狀態下,不小心把舊版的程式碼覆蓋過去了 (頓時心中的os:#$%@#%!$@# ),為了避免同樣的窘況,還是該好好學一下這套工具


1. 安装 cvs

$ sudo apt-get install cvs

2. 安装 cvsd
  
$ sudo apt-get install cvsd

3. 建立專案集工作區
$ sudo mkdir /var/lib/cvsd/myrepos

4. 初始化工作區
$ sudo cvs -d /var/lib/cvsd/myrepos init

5. 設定cvsd的專案集使用者認証方式。
$ sudo gedit /var/lib/cvsd/myrepos/CVSROOT/config

  加入以下設定
SystemAuth=no
PamAuth=no
LockDir=/tmp/myrepos
*注意這裡的/tmp/myrepos是只相對於RootJail的路徑。

6. 新增LockDir
$ sudo mkdir /var/lib/cvsd/tmp/myrepos

7. 新增CVS帳號
$ sudo cvsd-passwd /var/lib/cvsd/myrepos cvsuser

8. 編輯cvsd設定檔
$sudo gedit /etc/cvsd/cvsd.conf
RootJail /var/lib/cvsd
Repos /myrepos
Listen 192.168.2.2 2401

  注意Listen預設值是 Listen * 2401,但若用預設值似乎無法bind位址,所以位址
必須指定明確的ip址。

9. 設定目錄權限
$ sudo chown cvsd:cvsd /var/lib/cvsd -R

10.重新啟動cvsd
$sudo /etc/init.d/cvsd restart

11.將專案放置/var/lib/cvsd/myrepos

這樣就可以用你的開發工具連上cvs作備份或版本管理了 :)

12.測試CVS連線
$cvs -d :pserver:cvsuser@localhost:/myrepos login
$cvs -d :pserver:cvsuser@localhost:/myrepos checkout


13.新增CVS專案@Eclipse
"File->New->Project"選擇"Projects form CVS",點選Next

13.選擇CVS儲藏庫
選擇"Create a new repository location",點選Next

14.設定CVS伺服器
Host:192.168.2.2
Repository path:/myrepos
user:cvsuser
pasword:密碼
connection type:pserver

15.選擇遠端專案
選擇"use an existing module",選則要開發的專案。

16.設定本地端專案名稱
選擇"checkout as project in the workspace"
project name:本地端專案名稱

點選下一步直到完成。

17.專案提交/更新
提交專案:"專案按右鍵->Team->commit"
更新專案:"專案按右鍵->Team->update"

ubuntu 9.04安裝FlashPlugin

ubuntu 9.04版似乎已經將FlashPlugin加入軟體頻道,以後要看youtube再也不是難事

1.安裝flashplugin

sudo apt-get install flashplugin-installer


2.安裝flashblock
sudo apt-get install flashblock

因為Firefox上若開過多的flash會莫名其妙使得Loading飆升,所以只好暫時將flash擋下來,直到使用者按下play才將flash載入。

消失的chkconfig

一般Liunx distros都有chkconfig,這個指令可拿來查看/設定服務再開機時是否自動啟動,很不幸的ubuntu下似乎沒這個指令,沒關係還有另一套軟體sysv-rc-conf跟chkconfig有一樣功用。

1.安裝sysv-rc-config

sudo apt-get install sysv-rc-config

2.查看/設定全部服務狀態
sudo sysv-rc-config


3.設定服務狀態
sysv-rc-conf --list
sysv-rc-conf --list|grep ssh
sysv-rc-conf --level 5 ssh on

2009年7月27日 星期一

Firefox加速密技

  用了Ubuntu那麼久總覺得Firefox的效率不甚理想,相較於Windows版的可說是天差地別,直到最近無意間翻到一篇改善效率的文章,主要方法就是將存取頻繁Cache移到RamDisk上。

方法一
1建立Ramdisk
  例如要放在/tmp/cache,大小128MB。可編輯/etc/fstab,加上

tmpfs /tmp/cache tmpfs size=128M 0 0

掛載快取磁區
sudo mkdir /tmp/cache
sudo mount -a
2.設定FireFox的cache資料夾
  在Firefox網址列中輸入
about:config
右鍵>新增>字串,名稱輸入browser.cache.disk.parent_directory,內容輸入快取的放置位置/tmp/cache

方法二
  在Ubuntu中有內建快取磁區/dev/shm,這個磁區是系統內建的而且可動態的調整大小所以不必考慮容量問題,想要看系統中有無這個磁區,可以輸入mount|grep /dev/shm即可得知。若有內建快取磁區,只要在Firefox中只要將快取位置設為/dev/shm即可。

2009年7月24日 星期五

解決MP3 TAG亂碼

  在Linux下通常使用的編碼通常是UTF-8,所以若mp3 tag編碼是big5就會發生亂碼,在這裡有一個好用的軟體Easy TAG能夠處理這種惱人的狀況。


1.安裝Easy TAG

sudo apt-get install easytag
2.掃描mp3
 打開EasyTAG選擇所要得資料夾,EasyTAG會自動掃描所有的MP3檔。

3.設定讀取編碼
 進入"設定>偏好設定>ID3標籤設定>讀取ID3標籤所用的字元集"設定為BIG5。

3.變更編碼
 選擇所要變更的MP3,按下存檔即可完成轉碼。

2009年7月23日 星期四

VirtualBox設定NAT Forwar

VirtualBox內建的管理視窗,在網路設定方面還頗陽春的,只有簡單幾個選項NAT Bridge Host等選項,如果想在虛擬作業系統中開Service,這麼陽春的選項實在令人頭痛,請教google大神,原來VirtualBox有隱藏密技,不過這密技似乎只能靠指令完成。


$VBoxManage setextradata winxp "VBoxInternal/Devices/pcnet/0/LUN#0/Config/BT/Protocol" TCP

$VBoxManage setextradata winxp "VBoxInternal/Devices/pcnet/0/LUN#0/Config/BT/GuestPort" 3661

$VBoxManage setextradata winxp "VBoxInternal/Devices/pcnet/0/LUN#0/Config/BT/HostPort" 3661


在這裡winxp是要開個虛擬os的名稱,而BT則是要開的PORT名稱可自訂。

2009年7月21日 星期二

ubuntu 9.04安裝skype

skype對Linux的User真的是滿友善的,支援滿多Linux版本
當然Ubuntu也不例外,只要到skype官網就能找到相對應版本


1.安裝libqt4-gui

sudo apt-get install libqt4-gui

2.安裝skype
sudo dpkg -i skype-debian_2.0.0.72-1_i386.deb


3.設定skype

 若登入後發現skype無聲,可到"選項>音效裝置>聲音進來/出去/鈴響"選擇"HDA Intel(hw:Intel,0)",注意這個設定依據各個硬體不同而有所不同。

2009年7月20日 星期一

在postgresql建立auto-increment

在資料庫中常用的一個欄位就是auto-increment,這個欄位的資料通常是不可重複的,可以用來作商品或會員名單的流水號,很可惜的是postgresql沒有這個屬性的欄位。但雖然預設沒有這個欄位,但其實可以透過手動的方式建立這一流水號。


1.建立sequence


CREATE SEQUENCE myserial INCREMENT 1 MINVALUE 10000 MAXVALUE 99999 CACHE 1 CYCLE;


2.建立流水號欄位
CREATE TABLE profile
(
id regclass NOT NULL DEFAULT nextval(('myserial'::text)::regclass),
"name" character(8) NOT NULL,
CONSTRAINT pmky PRIMARY KEY (id)
);


2009年7月19日 星期日

install postgresql in ubuntu

這次實驗室專題需要使用資料庫,本來決定使用MySql,不幸的是根據MySql授權如果搭配硬體出售必須付費,所以只好選擇了較不熟悉的Postgresql來使用,在這裡順便安裝postgresql的圖形管理工具pgadmin3。


1.安裝postgresql與管理工具

sudo apt-get install postgresql
sudo apt-get install pgadmin3


2.啟動sql
sudo /etc/init.d/postgresql-8.3 restart


3.設定postgres本機密碼
sudo passwd postgres


4.設定postgres連線密碼
注意!!這裡必須先將使用者身份轉為postgres
su postgres
psql postgres
postgres=# alter user postgres with password '密碼';


5.重新啟動sql
sudo /etc/init.d/postgresql-8.3 restart


6.新增/刪除使用者
新增使用者:

su postgres
createuser 使用者名稱 -P (-P)加上密碼
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n

刪除使用者:
dropuser 使用者名稱


7.新增/刪除資料庫

createdb 資料庫名稱
dropdb 資料庫名稱


步驟到此資料庫設定完成
接下來就可以使用pgadmin3登入資料庫。

2009年6月20日 星期六

錯誤代碼KERN-EXEC 3

發生錯誤代碼KERN-EXEC 3,通常是存取非法的記憶體位址

例如使用一個指向NULL的指標


TInt CRingContainer::CountComponentControls() const
{
return 3;
// return number of controls inside this container
}

CCoeControl* CRingContainer::ComponentControl(TInt aIndex) const
{
switch ( aIndex )
{
case 0:
return iLabel;
case 1:
return iToDoLabel;
default:
return NULL;
}
}


若定義CountComponentControls()函數

則創建Container時會呼叫ComponentControl()函數,將控制項顯示出來。

如果return NULL的話,並不是一個合法存取位址

因此出現錯誤代碼KERN-EXEC 3。

錯誤代碼CONE 15

昨天莫名其妙被錯誤代碼CONE 15重擊

查了一下錯誤代碼列表

很明顯Resource File沒讀進去

Google一下發現,原來必須給Resource File一組4byte的辨識代碼

NAME ADZW
#include
#include
.
.
.
RESOURCE RSS_SIGNATURE{}
.
.



查看錯誤代碼

Symbian Emulator若在你開發過程中發生kernel panic

是不會發出錯誤代碼的,若要看程式異常結束的原因

在\Epoc32\winscw\c\system\bootdata\

建立ErrRd檔(無副檔名),此後程式發生錯誤Emulator便會顯示錯誤代碼。

移除模擬器中的專案

在Symbian Emulator中會留下開發過得專案

即使在IDE中移除了專案,模擬器還是存在開發過得專案的APP檔

可從\Epoc32\release\winscw\udeb\z\system\apps\中

找到開發過得專案資料夾刪除即可。

2009年5月16日 星期六

該死的ACPI

最近ubuntu 8.04安全更新後,搞得NB不斷重開

懷疑跟更新後的acpid有關,消極的作法是只好把acpid關閉




sysv-rc-conf --list |grep acpid

acpid 1:off 3:on 4:on 5:on

sysv-rc-conf acpid --level 35 acpid off

2009年5月13日 星期三

位元平面轉換

位元平面轉換,就是指將每個像點0~7 bit抽出來

分別合成為八張二值圖,範例如下


原圖:
57 130
10 250

bit7:
0 1
0 0

bit6:
0 0
0 1

bit0:
1 0
0 0

依照上述轉換,越高位元權重越,因此越高位元的二值圖越接近原始影像

假使我們將二值影像只保留高四位元,即可形成一個兩倍壓縮的圖形

原圖


bit7 二值圖


bit6 二值圖


bit0 二值圖


兩倍壓縮影像


經過兩倍壓縮的影像,與原圖相比畫質還在可接受的範圍 :)

2009年4月13日 星期一

ubuntu下的超級終端機

最近因為在寫與serial port溝通的應用程式

所以會使用到windows超級終端機

而在linux下則有gtkterm可以取代

安裝方式非常簡單

$ sudo apt-get install gtkterm

用法都與超級終端機類似,但似乎超級終端機的功能較完整

因為gtkterm並不支援 xmodem ymodem

雖然這xmodem ymodem大部分已經被tftp取代了

不過剛好別的專案有用到,所以還是稍嫌不方便。

但是至少比minicom 三不五時出現排版錯誤來的好~ :)

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%,很明顯此方式可有效降低負載。 :)

2009年2月4日 星期三

解決 Flash Player 10 亂碼問題

最近發現Flash Player顯示出亂碼(方塊字)

解決方法如下↓

修改 /etc/fonts/conf.d/49-sansserif.conf

將sans-serif改為

文泉驛正黑體

it's so easy~ :)

2009年1月21日 星期三

謎:ubuntu能不能看youtube!?!

如果ubuntu不能看youtube,那麼我人生會黑一半

沒辦法youtube上太多白痴的影片了,常會戳中我的點 XD

那麼ubuntu到底能不能看youtube,答案是肯定的!!

只要將flash player裝起來就可了!!

作法如下:

首先到ADOBE下載flash player的套件包

Adobe金呷就甘心ㄟ~~直接提供套件包 :D

sudo dpkg -i install_flash_player_10_linux.deb

打開Firefox就可以開開心心的youtube了!!! :)

2009年1月20日 星期二

安裝中文輸入法

最近剛灌好ubuntu,大致上都沒什麼問題

唯一有問題的就是內建的中文輸入法scim

偶而無預警的當掉,常常msn聊到正開心就突然掛點了 :(

奇摩子當然好不起來,於是google一下

發現原來有另一套中文輸入軟體叫作gcin

安裝方法如下

sudo apt-get install gcin im-switch

im-switch -s gcin

sudo /etc/init.d/gdm restart 重開視窗服務,或者直接登出

系統 > 管理 > gcin輸入法設定

這樣大功告成了,改換gcin後就沒再當過了 it's great!! :)

2009年1月18日 星期日

開始ubuntu吧

最近因為買了新的筆電,再加上專題的需要

因此將多出來的桌機拿來灌Linux

雖然之前有曾經玩過Fedora

但後來因為Fedora5桌面服務太難上手因此作罷

所以這次我選了一個好上手的版本,那就是大名鼎鼎的ubuntu啦!! :)

再經過一陣漫長安裝後,進到桌面才發現原來Linux進步的腳步那麼的快

完完全全能感受到ubuntu團隊的努力

ubuntu的穩定性讓我覺得可以徹底拋棄XP擁抱Linux了 XD !!

一套幾乎不會中毒,要什麼軟體只要到

       應用程式—>添加/刪除

就幾乎垂手可得,非常方便。

所以特地開了這個BLOG分享ubuntu的使用心得

我想這也符合Linux的分享精神吧!!:-)