2008年3月20日 星期四

Library 編譯參數免煩惱~好用的 pkg-config!

時常在編譯程式的時候,會遇到找不到某個 Library 的 *.h 的問題,這個時候就要派出 pkg-config 來大顯神通了~

pkg-config 是一個會記住 Library 相關使用參數的好用工具,你可以利用它來取得編譯參數與其他有用的資訊。

pkg-config 通常會放在 /usr/bin/pkg-config
而設定檔通常會放在 /usr/lib/pkgconfig/*.pc

要用到某個 Library 之前就去 /usr/lib/pkgconfig 底下找找看相關的名字吧。
因為有時候 Library 的設定檔名稱後面會帶有版本號碼,不去看看的話很難猜出來到底應該指定的 Library 名稱是什麼。



假設有一個 test.c 要用到 dbus 這個 Library,這時 Makefile 可以寫成這樣:

Makefile

CFLAGS := $(shell pkg-config --cflags dbus-1)
LDFLAGS := $(shell pkg-config --libs dbus-1)


CC = gcc
LIBS=


SRCS=bluez-client.c

all:demo

demo:$(SRCS:.cpp=.o)
$(CC) $(CFLAGS) $(LDFLAGS)-o $@ $^ $(LIBS)


clean:
-rm -f demo
-rm -f *.o

簡單的透過 pkg-config --cflags dbus-1 就可以取得 dbus 的 CFLAGS,透過 --libs 參數同樣也可以取得 LDFLAGS。

如此一來以後就不用再擔心不知道 Library 要下什麼參數才能使用了~


2008年3月5日 星期三

利用 sudo 在 root 擁有的資料夾中 mkdir

使用非 root 帳號最常遇到的問題就是:沒辦法在 root 擁有的資料夾中 mkdir。

但是我又時常需要做一些測試與設定的動作,因此在此記錄一下要怎麼樣利用 sudo 在 root 擁有的資料夾中 mkdir,並安全的的轉移資料夾權限給自己。



Step 1.
切換到需要 mkdir 的資料夾底下。



Step 2.
執行
sudo mkdir [新資料夾名稱]

例如
sudo mkdir work



Setp 3.
執行
sudo chown -R $USER [新資料夾名稱]

例如
sudo chown -R $USER work



Setp 4.
完成了,ls -al 一下,就可以看到 OWNER 變成自己摟。


自訂 Console 的文字顏色

有鑑於 Fedora 的 kconsole 每次預設的 資料夾 文字顯示顏色都是深藍字,而我又喜歡用黑底的 console,最後的結果就是每次都看不清楚資料夾名稱。

因此在這裡記錄一下要怎麼修改 console 底下文字顏色的方法。



Step 1.
編輯 /etc/DIR_COLORS.xterm

找到這一段:

# Below are the color init strings for the basic file types. A color init
# string consists of one or more of the following numeric codes:
# Attribute codes:
# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
# Text color codes:
# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
# Background color codes:
# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
NORMAL 00 # global default, although everything should be something.
FILE 00 # normal file
DIR 00;34 # directory
LINK 00;36 # symbolic link
FIFO 40;33 # pipe
SOCK 00;35 # socket
BLK 40;33;01 # block device driver
CHR 40;33;01 # character device driver
ORPHAN 01;05;37;41 # orphaned syminks
MISSING 01;05;37;41 # ... and the files they point to



Step 2.
把這一行:
DIR 00;34 # directory

改成這樣:
DIR 00;34;46 # directory


之後存檔~




Setp 3.
重新開啟一個 console,這時候就會看到,所有的資料夾變成 淺藍底色 + 深藍字 了~
也可以改成其他的顏色,或修改其他項目喔!




ps.如果修改 /etc/DIR_COLORS.xterm 沒有用,那就修改這個檔案 /etc/DIR_COLORS 。
傳說中 /etc/DIR_COLORS.xterm 是給 X Window 用的,/etc/DIR_COLORS 是文字模式用的。


免密碼 sudo,保平安又免麻煩!

自從我的耍寶同事 Derek 用 root 帳號在自己的 Linux 環境底下執行了一個「迷樣的 Script」,並將環境徹底的摧毀之後,我就開始瞭解 Mark 老大說的:「不要用 root 亂搞!」是什麼意思了...

於是,跟 Mark 老大請教了要怎麼樣使用 sudo 最方便,但又可以保平安的方法~

在這裡做個記錄跟分享~




Step 1.
編輯 /etc/passwd

第一行應該長得像這樣
root:x:0:0:root:/root:/bin/bash

把第一個 x 拿掉,變成這樣
root::0:0:root:/root:/bin/bash

最後存檔離開~



Step 2.
編輯 /etc/sudoers

找到這一行:
# %wheel All=(All) NOPASSWD: All

把前面的 # 拿掉。

一樣存檔離開~



Step 3.

編輯 /etc/group

找到這一行:
wheel:x:10:root

在後面加上你想要讓他可以使用 sudo 的帳號,記得用逗號分隔,變成這樣:
wheel:x:10:root,firch

依然存檔離開~




Setp 4.
開開心心的使用不用密碼的 sudo~




ps.還是要節制的使用 sudo,否則哪天習慣成自然的把 sudo 拿來砍掉自己的系統,可不要來找我!


2007年12月22日 星期六

Gmail 地址簿(Gmail Contact Book) for Firefox + GreaseMonkey

很久以前就聽過 GreaseMonkey(中文簡稱:油猴) 的響亮名號,但因為覺得「放在使用者端的 Script(GreaseMonkey 稱之為 User Script) 離開了有安裝的電腦後,就沒有效果了」,所以一直都懶得去嘗試。

直到 2 個星期前朋友給我 Travian 這個遊戲的「輔助工具 Script」之後,才深刻的瞭解到「User Script 的價值在於當下為使用者所創造的便利性,當便利性誘因夠大時,就算到每一台電腦都需要安裝,使用者依然會接受!」

自此,我就花了 1 個星期開始研究 GreaseMonkey 的 UserScript 到底能夠給使用者如何的便利性,或者說能夠賦予 UserScript 開發者何種的能力,讓這麼多人為之瘋狂。

在我安裝了許多大家分享出來的 UserScript 後,突然想到 MARU 之前告訴我的「不使用 Gmail 的理由」,那就是「Gmail 的收件人 E-Mail 地址要用打字的,但每次都記不住別人的 E-Mail 到底怎麼拼,要打收件人變成一件很討厭的事,特別是轉寄的時候,討厭死了!」。

於是我便去 UserScript.org 搜尋有沒有類似的 UserScript 可以用,但卻只找到了一個非常「簡易」的 UserScript,因此我以這個 UserSCript 為基礎開始打造我心中的「地址簿」。

不改還好,一改才發現它為甚麼寫得如此的「簡易」,因為 Gmail 的頁面組成根本就是一堆 iframe 的大雜燴,而在一堆 iframe 裡面做跨 iframe 的 DOM 與 EventHandler 操作,真的是一件十足令人沮喪的事...

幾乎所有本來可以用的 JavaScript 直接指定事件觸發函式的方法都變得不能用,所以只能乖乖的去讀 W3C 所定義的 EventHandler 的正規作法,為自己的觀念重新做一次正規化,最後才產出了這個 UserScript:



Gmail 地址簿 (Gmail Contact Book)

這個 UserScript 為您的 Gmail 在 收件者(To)、副本(Cc)、密件副本(Bcc)輸入框旁,自動加上一本小書。

當您點擊了這本小書後,將會在下方出現一個框框,並於框框中顯示您的所有聯絡人資料,此時您只要以滑鼠點選您要寄送的聯絡人資料,右側的輸入框中將會自動為您加上此聯絡人的資料。

從此寄送 Email 就在也不是一件需要考驗您記憶力的苦差事了!

安裝網址( English with install ):
http://userscripts.org/scripts/show/16784


原始碼修改自 [GMail Contact List]:
http://userscripts.org/scripts/show/10548

Address Book icons 使用 Michael Okeh 所分享之圖片製成.
http://okeh.macthink.org



相關連結:

GreaseMonkey 官方網站:
http://www.greasespot.net/

GreaseMonkey 官方 UserScript 分享網站:
http://UserScript.org


2007年12月21日 星期五

「FIRCH 很搞圍 2.0」開張摟~


說要搬新家已經好久了,這次終於下定決心把舊文章整理過後全部搬到新家來摟~

而且 BLOGGER 的文章可以自訂發佈日期的這個功能,讓我保存下來以前文章的發文時間,雖然真的很難弄,但完成後還是滿開心的!

這次搭配 MARU 幫我設計的新名片而設計了這個新版面,走素雅風格,希望大家會喜歡摟!


2007年7月17日 星期二

郁晨的朋友們,再會了!

我親愛的朋友們,謝謝你們這一年多以來的照顧,讓我從一個毛毛頭小子進步到變成一個毛頭小子~




這一年多來有許多的歡笑、快樂、汗水與淚水,一路從 4 人小公司成長到目前的 20 人,大家所做的努力是毋庸置疑的,期間雖然有許多人員的加入與離開,但總是維持著一個大家庭和樂融融的氣氛,而我始終相信「快樂的工作氣氛是成功的根 基」,這也是大家一起努力經營的結果!


希望大家在接下來的人生道路中,依舊能夠繼續扶持,朋友是一輩子的!我打從心裡珍愛你們這群朋友!要記得我喔~


2007年1月25日 星期四

文件格式的省思


什麼樣的文件格式才是好的?

是可以清楚的表達自己的思路與流程架構的格式?

還是可以符合大家所習慣的文件切割格式,如區分程架構圖與流程圖?

這是一場 隨性 V.S. 制式 的對決!



本來我認為只要可以表達出自己的思路與流程架構,則閱讀者就可以跟隨著我的思路在圖形中看到流程,也在流程中看到架構...但這似乎是行不通的!

因為要在一個圖形中同時表現出 流程(時序) 與 架構 似乎是不可能的事,更遑論閱讀者跟隨自己的思路...好吧...一切都是幻想,你嚇不倒我的!

最後隨性的文件格式中往往隱含了一個最大的條件,就是大量的口述說明!

因為隨著思路而行的文件往往都會省略一些作者認為「不重要」的部份,但這些部份卻時常是串起一幕幕場景的重要連接點,少了這些「不重要」的部份就像相聲演出少了【逗梗】只剩【捧梗】那樣的不知所云。



然而制式化的文件又因為少了交叉的表現方式而時常出現數份文件之間無法連貫的狀況。

例 如【軟體架構圖】中出現了一個區塊需要用到 Thread 與 Semaphore,但卻看不出來有什麼理由一定要用這麼複雜的技術,直到看到了硬體架構圖而且經過系統分析師的講解後才發現:「原來是因為輸出端只有一 個而且速度很慢,但多個輸入端卻需要即時收取資料,不能等待,於是就有許多 Thread 必須爭奪輸出端的使用權」。

然而這件事在大部分情況下都不會被正式的標注在文件上,因為軟硬體架構中都只標示【架構】,而流程圖只標示【流程】...而這個部份的解釋卻不屬於任何的制式化文件內容!

到底文件是為了看起來符合格式而寫,還是為了要清楚表達自己的意思而寫?



在我試著依照制式化格式做了一份文件後,我發現制式化文件還是有其優點的。

例如有一種流程圖可以利用縱軸的多列來表示多個 Process/Thread 而橫軸表示時間序。這樣的格式讓我終於嘹解到要如何表示出多個平行處理 Thread 之間的交互行為!在畫這種圖的時候也讓我更深刻的透析自己設計的流程是否有問題,進而提昇設計的品質。

目前我最想要做到的依然是:「如何在最少的圖形/文字中表現出最清楚的流程、架構與設計思路?」,請問有沒有人可以給我答案或提示呢?


2006年11月4日 星期六

快樂才是目的地


可曾想過如何才會讓自己快樂?


賺大錢會快樂嗎?

我相信大家的答案都是「會」,但賺大錢的過程若不快樂,那又怎麼能夠期望賺到錢後會快樂呢?



工作升遷會快樂嗎?

我相信大家的答案依然是「會」,但工作時若不快樂,升遷後又怎麼可能會快樂呢?



許多人認為「有很多錢就會快樂,因此我要賺很多錢,所以我可以忍受賺錢的過程不快樂,以換取賺到錢之後的快樂。」

但是請問,多少錢才叫做【很多錢】?

我時常聽到的答案是「錢不嫌多」,而這就是為自己的貪婪找到最輕鬆的一個藉口,這也代表著這樣回答的人一輩子都會淪陷在無盡的賺錢過程中,不斷的忍受不快樂的賺錢過程,永遠也無法享受到快樂的果實。



人們經常性的忽略自己的家庭,一再的在工作與家庭中選擇工作,共同的理由都是「我必須要工作賺錢,我的家人才能得到快樂!」。

但這個理由的背後跟那些永遠都在賺錢而無法享受快樂人一樣,出發點都是「有錢才能得到快樂」,但大家都錯了!

不信的話現在就撥通電話給你的爸嗎,問問他們要的到底是你賺很多錢還是你時常陪伴著他們?

太多人到了無法挽回的時候才瞭解到這一點,但那已經太晚了!

回頭問問自己,你要的是家庭的溫暖還是無止盡的工作與金錢?




人生只有一次,我們必須學會享受過程、樂在生活,若你現在的生活不快樂,讓自己快樂起來吧!

不要害怕,跟別人不一樣並不是一種罪過!

快樂才是人生的唯一目的地!


2006年9月21日 星期四

漂浮人

漂浮著.一個人.沒有目的.沒有想法

就讓自己累到無法思考

不需擔心.你答應會乖乖


不要衣服.不要月餅 .只要你

心靈的洞無法用物品填補



從 19 號.跳躍.到 21 號的月曆竊笑著

一個漂浮在沒有時間日期的人



撕去一切的念頭

一層層的剝下.只剩赤裸裸的心

漂浮在思念的.空港