星球

網站公告

社群伺服器正進行搬移作業中,部份已完成;目前仍缺硬體資源,請參考討論區站務公告及主機近況公告。若有不便之處敬請見諒。
RSS | RDF | ATOM

GCC 的 nested function 與 trampoline

2010/7/29 17:54:00 | Jserv's blog
GCC 提供特有的 C 語言 extension,允許像 Pascal 一般,定義 nested function,詳情可參考 GCC 手冊 [Nested Functions],注意,由於程式語言設計的一致性考量,此機制不在 GNU C++ 支援。nested function 的形式很明顯,就是在定義於另一個函式內部的函式,以下引用 GCC 手冊的範例: 由上可見,函式 bar() 的程式碼實做中有個 nested functon -- accss(),後者可存取到前者的變數 offset,符合 lexical scoping 的規範。乍看 nested function 只是一種語法上的 syntax sugar?非也,事實上,可在 nested funtion 的 scope...

爸,我想寫軟體程式

2010/7/26 21:06:00 | Jserv's blog
之前身體狀況不佳,回苗栗老家休息一段時間,除了家務事外,談了台灣的資訊產業,本應興致勃勃,但家母道出的一席話後,頓時陷入無議無論的噤聲:「寫程式這麼累,就別做了吧」。捫心自問,從業數年,除了偶爾聽聞他人基於禮貌給予的讚揚外,的確是一事無成的狀態,儘管我的工作內容之一,就是說服他人採用敝單位的資訊系統,但我卻沒辦法說服家人,同意我繼續寫程式。 因緣際會,能在國小三、四年級時,就動手寫電腦程式,其動機僅是怕放在客廳的 80386 個人電腦受潮而無法再開機 (靠海的通霄,常吹濕氣頗重的南風,電腦購入不消四年,扣除硬碟的週邊,幾乎都更換過)。至今回憶,那 MS-DOS 命令列提示與 BASIC 直譯器的畫面,仍是最美麗的景緻之一,得以透過螢光幕,瞥見當時工藝的極致,何其幸運?直到高中畢業前夕,從未想過以資訊技術作為己志,畢竟僅是興趣,雖然中學時代,頗受 Bill Gates 的激勵,但家人總冷冷地說,軟體隨便 copy 就拿走了,怎麼賣錢?而且,將興趣轉換為工作,註定要大打折扣的。中學時,自小即相當照顧我的姑姑,因急性白血症病逝,走的那日正是 [六月六日斷腸時],對此,下了心願要考醫科,試著為醫療科技貢獻一份力量... 但最後,我的意志動搖,雖然成績不惡的我,分數能考上醫科,但始終沒有就讀的勇氣。在通霄國小就學時期,有幸作為知名雕塑家朱銘的學弟,在台灣最有藝術氣息的小學,觀賞著這些由朱銘捐贈的大作,無論是太極系統,抑或人間造型,都反映從自然生命中所領悟出的創作態度,一股自由無拘束的壯闊氣概,最愛徜徉在虎頭山腰,靜靜凝視雕塑與遠方的鐵路,那時,曾不只一次的幻想自己是融合藝術與工程的土木技師。小時過年跟隨母親回娘家,常見到抱著厚重設計圖、不時潛心作設計的舅舅,雖不甚理解土木工程,但那娟麗的字跡穿越著密密麻麻的線條,深深吸引著我,後來我才知道,北二高有一大段工程就是出於舅舅之手,曾有一度想追隨任教於台大土木系的舅舅,用雙手牽起人與人的關聯。 可惜,浪漫的幻想,總是極易戳破,高一的工藝課,無論如何嘗試,就是無法徒手繪出筆直的線條,而三視圖總是充滿瑕疵,「我可能不是作土木建築的料」,默默地承認這個事實。高二選擇第三類組後,則在生物解剖課,徹底粉碎擔任醫療人員的念頭。我還記得,暑假為了提高膽量,逼迫自己切魚的往事,只見雙手的血跡與淚水融為一體,「我真的不是唸醫科的料」,再次接受了真相。當這些選擇一一從志願表刪去時,「資訊工程系」這個倒數第二個選項就浮現了 (最後一個志願是電機系,因為與家父賭氣,不想唸電子電機科系),在沒有選擇餘地的情況下,懵懵懂懂做出選擇。記得三年前應邀去中正大學演講時,資訊系的老師說:「這裡的學生不像你很早就決定自己的志業,請你就業界從業人員的角度,跟學生分享經驗...」,真不知該如何回應,老實說,我的處境跟該校的學生沒太大的分野,也是先考進資訊工程學系,才開始規劃人生的,只是遇到貴人的時間早了些,挑了些較易有成效的項目來作。 魯迅說過:「哪裡有天才,我是把別人喝咖啡的工夫都用在了工作上了」,堅信此道的我,每每保持同樣是魯迅的名言,人生的旅途上遲緩地踏出步伐:「人類總不會寂寞,以為生命是進步的,是天生的」,雖然,至今仍打零工度日,有什麼立場說自己在實踐志業呢?記得 Romain Rolland 說過: 「一個人的性格決定他的際遇。如果你喜歡保持你的性格,那麼,你就無權拒絕你的際遇」 大概是當初太短視,唯有在跌跌撞撞幾年後,才能體會這句話。決定離開成功大學時 (家中永遠都有重考唸醫科或其他科系的聲音,也因此,沒能把資訊系唸完,可能也是註定的事),找當時的導師蘇文鈺教授談過,老師說,只要想清楚, 自己做了選擇, 就不要後悔, 還要注意身體健康。事隔多年,老師來信提到: 「也許你不相信,我時常跟現在的學生提到你,一年至少一次, 我回憶起你的程式功力與執著,當然還有比賽前被送進醫院那件事,我一直相信走自己的路與願意走人煙稀少的路的人,成就的機會比較大」 這番話,讓我在讀信的當下,控制不住情緒,就在辦公室啜泣起來,是想到這幾年受到的委屈與不平的待遇,無論肇因於學歷、經歷,或者所謂的「大環境」... 只能怪說自己太叛逆,又狂妄地想做些改變現狀的事,這包含在台灣繼續寫作軟體。 「寫作對於我而言,是在漫長旅程上有一個溫暖的春夢做著,路寬夢窄,並且一直大夢未醒。一個人在世上,總得找一個屬於自己的夢做著,不然,這黑夜就顯得太長。」 這是大陸作家馮傑的話語,用來描寫此刻我的心境,也相當契合,儘管兩者所謂的「寫作」,還要視真實的「讀者」而定。作家馮傑用「文字還願」,寫作給一塊無言的土地,對那些逝去的親人;愚昧的我用「程式碼許願」,寫給這塊立足的土地,對那些相信臺灣軟體發展機會的人。就這個角度來說,我的寫作才剛開始。不期望能在商業行為之外,說服任何人,只願能堅持下去。「爸,我想寫軟體程式」這句,語出於升國小四年級的暑假,當時家父指向書櫃裡頭的技術書籍,而,近二十年後,抱著滿滿電腦資訊圖書的我,又說了一聲。...

為磁碟分區產生新的uuid

2010/7/26 19:50:50 | 手把手玩Ubuntu
由於使用DRBL企鵝龍直接用複製分區,他並不會產生新的uuid,在mount時電腦有兩個同樣的uuid導至兩個相同的uuid都會掛載上去。所以就需要修改複製分區的uuid,這樣掛載時就不會有問題了。

想看uuid是如何產生的可以到A Universally Unique IDentifier (UUID) URN...



請按標題讀更多:)

有趣的跨國TSCC網路欣賞會

2010/7/19 8:00:00 | 魔法設計的藝術
我是一個TSCC(Terminator: The Sarah Connor Chronicles 終結者外傳莎拉康納戰記)的粉絲,雖然TSCC的第三季被美國Fox電視台腰斬了,但是TSCC的粉絲們仍然不放棄一直在努力推動讓TSCC第三季回來的計畫,所以有 個網站叫做SAVETSCC(ps有時主機會停機休息,如果沒有看到網頁請隔一段時間再去),這個社群很有趣很好玩,美國時間每星期六晚上(台灣時間星期日早上10:00多),有個影集欣賞會,進度是每個禮拜看一集,不分那一國,約好的時間到,大家就會一起把特定的那一集放進光碟機按下play,一邊用網路聊天室聊,一邊看。我不常參加全程,今天早上有特別早起,從頭參與到尾就一堆科幻片宅宅的歡樂時間,聊劇情、玩經典名句、聊TSCC最新的狀況等等。由於我是用Ubuntu Studio Linux,所以剛好就可以把視窗設成半透明,邊聊邊看影片很方便,GNU/

perfect_gkey自動補上套件庫缺少的金鑰[all]

2010/7/11 17:34:31 | 手把手玩Ubuntu
常常增加套件庫來源,忘了順便加上GPG key的人有福了,此Shell Script名為perfect_gkey能把你在更新套件庫更新時,出現NO_PUBKEY訊息修正,也就是找缺少的金鑰補上就好了。



名稱:perfect_gkey
版本:0.2
說明:
自動補上套件庫缺少的金鑰

展示畫面



下載與使用perfect_gkey
1、下載檔案給需執行權限
wget...



請按標題讀更多:)

Ubuntu升級到10.04光碟機/隨身碟無法自動掛載?

2010/7/7 4:11:00 | 魔法設計的藝術
這狀況很惱人,而且還多了一台莫名其妙的軟碟機(我沒有阿),網上google了很多網頁1、2、3,忘記在哪裡找到了解法:sudo nano /etc/modprobe.d/blacklist.conf在裡面加一行blacklist floppysudo update-initramfs -u狀況就解除了,開機進gnome,automount運作回覆正常,另外,sudo nano /etc/fstab,把這幾行註解掉#/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec,utf8 0 0#/dev/scd1 /media/cdrom1 udf,iso9660 user,noauto,exec,utf8 0 0#/dev/fd0 /media/floppy0 auto

優化apt-add-repository使用方式[9.10,10.04]

2010/7/7 3:26:44 | 手把手玩Ubuntu
雖說從Ubuntu 9.10開始就能使用apt-add-repository,比以前的版本進步了很多,這功能讓你在軟體來源直接加入ppa來源(例:ppa:ubuntu-tweak-testing/ppa)自動匯入金鑰,也能在終端機上使用指令(sudo apt-add-repository...



請按標題讀更多:)

修複Ubuntu Grub2開機選單 [10.04,9.10]

2010/7/6 2:08:33 | 手把手玩Ubuntu
Ubuntu 9.10,10.04都能使用此方法修複Grub開機選單,此方法應能適用大部份的狀況。剛好不知怎麼了,我的的開機選單出現錯誤,正好驗證一下寫的是否會有問題。

請準備一片與出問題的系統相符合或高於安裝版本的Ubuntu Live CD,因為,舊的可能無法辨別新版本所使用的分割格式,Live...



請按標題讀更多:)

dissy -- 好用的 objdump 圖形前端工具

2010/7/5 23:40:00 | Jserv's blog
最近利用閒暇的時間,準備新的系列課程,目標就是嘗試體驗 "Eat Our Own Dog Food",實現資訊人多少會有的浪漫夢想:用自己撰寫的編譯器,編譯自己設計的作業系統,跑在自己設計的 CPU 與硬體上。雖然自己恰好作過前述三者,不過要連貫起來,並改成系列的課程,仍是新挑戰。這過程要涉及到許多工具程式的開發,特別是視覺化的處理,才能讓學員更快進入狀況,而 [dissy] 就是個非常優秀的 objdump 圖形前端工具。 用 objdump / readelf,可窺探 ELF 格式執行檔案的許多細節,也能靜態分析,但往往得在大量的輸出打轉,著實不方便,[dissy] 這個工具可帶來頗大的便利,直接看底下的執行時期的圖片吧: 上方視窗為 ELF 執行檔中的符號 (symbol) 列表,一旦點選進去後,會得到下方的兩個視窗:左側是反組譯的輸出 (含原始程式碼除錯訊息),右側是點選的機械碼指令的解釋。這也表示說,dissy 需要 non-stripped ELF 執行檔的輸入,否則無法符合預期的運作。另外,dissy 也能作簡單的流程分析,比方說上圖左下方的紅色箭頭,就表示有 branch (跳躍) 的動作,搭配原始程式碼的列表,一目了然編譯器與組譯器所進行的操作。...

Ubuntu 10.04的pulseaudio很容易crash

2010/7/5 1:24:00 | 魔法設計的藝術
Ubuntu 10.04 Gnome桌面的聲音系統改用pulseaudio,然而非常容易在音樂播放中突然掛掉,這非常的糟糕。google過很多網頁上提到的這件災情,似乎是在RT kernel下特別容易發生,可是不行阿,做音樂需要RT kernel,聲音有問題就免談了。好在有個網友Dave Lentz做了一個方便的套件Audiohack,還原成舊式的作法,也就是ALSA,這樣最沒問題了。