2012年9月11日 星期二

新竹租屋

0 意見
最近因為工作緣故,必須在園區一帶找房子,先上數字租屋網物色了幾間貌似不錯的套房並打電話約好後就北上去了。

第一個約的是仲介,一碰面就直接問說他是不是我約的第一個,然後就開始說仲介最討厭當客人第一個看房子約的人,因為不懂行情blah blah blah....接著有聊到(抱怨?)一些近期他帶的客戶.... = =||

在高翠路一帶看了幾間後大致上有底了,拿出整理好的名單準備call下一個約的人時,在旁邊的仲介問說我是不是約了不少仲介的人,把名單給他確認後,果然.....剩下全部的仲介也都是他們公司的人員,突然覺得我應該是會變成一隻肥羊任人宰割無誤了 = =||

中午時段想說先不要打擾下一位仲介順便騎著租來的機車逛一下園區,本來在google maps上看了一下以為園區應該是蠻大的,但一晃才發現其實也還好,看來是想太多了!!

和下一位仲介在金山十一街的全家碰面後又看了幾間套房後,上午的仲介突然打來說早上中意的幾間有其他人也有頗高的意願,看我要不要早一點決定,先把房間訂下來....果然,要開始被宰了XDD

不過因為實在是不想在租套房這件事上著墨太久,要求仲介再帶我回上午看的套房感受一下氛圍後就直接下訂了!!

付訂後,到民有街一帶下營長輩開的洗衣店拜訪一下,盛情難卻啊XD,閒聊了許久後就出發踏上回程了

最後整理一下找房子的心得。

優點:仲介其實大多經驗豐富,帶沒幾間後應該就可以找到喜歡的房子了,還頗專業的!!

缺點....首先,仲介在帶的時候會發現,一開始網頁上看的房子可能被租走了,也常常房間規格差不多,但是價位不會是網頁上那麼優惠就是了...這部分我就不確定仲介是不是有藏一些名單起來,先帶客人看一些乏人問津的房子。再來就是如同我前述的狀況一樣,不知道是不是真的這麼巧,馬上又有其他人看上我喜歡的房子,必須馬上決定是不是要下訂....自行應變囉~~!




2011年7月30日 星期六

lab出遊

0 意見
熬過了星期四一陣狂風暴雨後,終於等到了星期五的lab出遊了... 早上吃完早餐就趕緊到後站集合出發了!!

左營站下車後,在炎熱的太陽底下緩緩走到了今天的第一站-左營自助新村,什麼都還沒做就已經滿身汗了= =||| 整個眷村裡佈滿了有趣的塗鴉,也在裡面看到了一些小時候的玩具,超懷念的XDD


大家走走逛逛拍拍照後就前往高捷美麗島站找老師和嘉文集合了

到了西子灣站,租完腳踏車準備前往英國領事館覓食時,學弟突然被一個騎機車晃神的婦人直接撞倒,還好當時婦人時速應該只有10~20km/h左右,學弟腳側多了一些破皮的傷口,沒有骨折的症狀.... 最後是當場合解,希望學弟回家後傷口沒有變嚴重...

到了領事館後,點完餐等上菜時果然被老師抓去問星期四的highlight 囧,嗯.... 還有很長的路要走....

用完午餐後大家在領事館裡外散步留影。
其實領事館外面的景觀蠻不錯的,只是館內的東西感覺少了點... 香料完全被密封起來,只能看文字介紹卻不能聞聞味道如何真的還蠻可惜的。逛沒多久後就開始飄雨了 囧,大家趕緊再回到停放腳踏車的廟庭下躲雨,一陣短暫暴雨後,大夥出發前往駁二特區!!!

到達駁二特區後,大家對於要看好漢玩字節or鬼屋的科學沒有初步的共識,於是就決定先到一旁邊免費的吉它展場內打架,讓最後打贏的人決定!!!沒有啦.... 是先進去看看後再決定XDD。吉它展裡開放的試彈區裡的吉它都斷了至少一根以上的弦,讓手癢的阿葉沒辦法為大家表演一曲著實可惜啊,不過大家卻在另一個放置一堆奇怪假髮和吉它的拍照區玩瘋了XD,在老師的淫威之下,每個人都被迫留下一張駭人的假髮配戴照....老師說要把lab網頁裡的個人照改成這些照片不知道是真的還假的..... 天啊....= =|||

出來後大家決定去看好漢玩字節,於是一群人又再度風塵僕僕地走向旁邊的展場。一開始沒有導覽人員的解說完全看不懂.... 不過四散在展場的導覽員似乎是發現了我們的窘況,沒多久就上場解說了!!

逛完後時間也來到了晚上七點,由於下午的雨讓行程delay了兩小時左右,所以有人得先中離回台南了~~ 不過大部分的人還是決定逛完最後一站-瑞豐夜市。到了夜市後,人潮比原先預計的還來得多... 因此大家各自分散覓食去。和阿葉大致將夜市繞了一圈後,發現好像沒有特別吸引人的攤位,而且我們都不是高雄人= =||,也不知道那幾攤是比較值得一試的,所以就隨便吃個幾樣東西後就回去找大家會合了。

最後,大家拖著疲憊的身體踏上了回程。

出遊hightlight....

1.以後想去......可以請示一下胖白= =+
2.學弟也要全員出席VLSICAD 囧
3.跟認真的導覽員合照>///<
4.被發現了......

2010年11月13日 星期六

gcov - linux code coverage analysis tool

0 意見
gcov也是一款linux底下用來分析程式的tool,透過gcov的處理,programmer可以快速地得知每一行instruction在整個執行過程中總共執行過幾次,以便修改code來改善程式的品質

環境

作業系統: Linux OS
軟體: gcov & gcc(or g++)

前置步驟

1.編譯程式
使用gcc(or g++)編譯source code時加上-ftest-coverage -fprofile-arcs參數
[awkman@edalab ~]$ g++ -ftest-coverage -fprofile-arcs fm.cpp -o fm

2.執行程式
完整跑完編譯出來的程式後,會自動產生一.gcno .gcda檔案在當前工作目錄內

3.利用gcov產生想分析的source code的檔案
[awkman@edalab ~]$ gcov fm.cpp

4.檢視(請用習慣的editor開啟)上一步產生的分析檔
[awkman@edalab ~]$ vi fm.cpp.gcov


gcov文件內容

gcov產生的文件很簡單,就是原本的原始碼再加上在每一行的左邊都有行數和執行的次數,如果是#####代表該行instruction沒有執行過


Reference

GNU/Linux Application Programming
感謝NCKU IDEAL Lab 碩一同學暑假期間的教學

gprof - linux program profiling tool

1 意見
廢話

上星期五FM作業在同學的指導之下終於生出個形出來,帶著依然存在無數個謎樣bug的程式和NB回下營後,隨即躺平睡覺,儲備星期六要用來和作業決一死戰的HP和MP(?)

享受完寫出最快最好FM的喜悅後,我在夢裡一巴掌將自己給打醒......嗯…果然是夢沒錯= =……..,看看時間7點多,到客廳跟老姐領早餐就回到房間閉關了

改到快中午時,bug差不多都解完了,但是程式還是沒辦法在我理性斷線前跑完…..沒錯…..他就是沒辦法跑完~!@#$%^&,正當我隨手抓起桌上的筆筒準備和它拼命時,我突然想起之前IDEAL Lab的同學曾經介紹過一些tool,好像有一個linux下的tool叫gprof,正是用來profiling程式用的!!!

廢話好像太多了…….

介紹

gprof是一個可以用來檢視程式碼執行時間分佈的工具,藉由gprof產生的文件可以快速地得知程式的瓶頸到底在哪~

環境

作業系統: Linux (Windows的話可以看看cygwin有沒有下面提到的軟體@@a)
軟體: gcc(or g++), gprof

使用方法

1.編譯程式
使用gcc(or g++)編譯source code時加上-gp參數
[awkman@edalab ~]$ g++ -pg fm.cpp -o fm

2.執行程式
完整跑完編譯出來的程式後,會自動產生一個gmon.out檔案在當前工作目錄內

3.利用gprof產生適合地球生物閱讀的文件
gprof 程式名稱 gmon.out > 任意名稱
[awkman@edalab ~]$ grpof fm gmon.out > fm.gprof

4.檢視(請用習慣的editor開啟)上一步產生的分析檔(會有上下兩部分)
[awkman@edalab ~]$ vi fm.gprof 

profile 文件內容

上半部Example:
Each sample counts as 0.01 seconds.
  %   cumulative   self              self     total           
 time   seconds   seconds    calls  ms/call  ms/call  name    
 33.34      0.02     0.02     7208     0.00     0.00  open
 16.67      0.03     0.01      244     0.04     0.12  offtime
 16.67      0.04     0.01        8     1.25     1.25  memccpy
 16.67      0.05     0.01        7     1.43     1.43  write
 16.67      0.06     0.01                             mcount
  0.00      0.06     0.00      236     0.00     0.00  tzset
  0.00      0.06     0.00      192     0.00     0.00  tolower
  0.00      0.06     0.00       47     0.00     0.00  strlen
  0.00      0.06     0.00       45     0.00     0.00  strchr
  0.00      0.06     0.00        1     0.00    50.00  main
  0.00      0.06     0.00        1     0.00     0.00  memcpy
  0.00      0.06     0.00        1     0.00    10.11  print
  0.00      0.06     0.00        1     0.00     0.00  profil
  0.00      0.06     0.00        1     0.00    50.00  report
欄位說明(以紅色行為例):
% time : memccpy()執行時間佔所有runtime的比例
cumulative seconds: 累計執行時間(table中所有在memccpy()上方function 的執行時間也會加入計總,如open()和offtime())
self seconds: 執行過程中,memccpy()的執行時間
calls: 執行過程中,memccpy()被呼叫的次數
self ms/call: 每次被呼叫時 平均花費了多少milliseconds執行memccpy() function
total ms/call: 每次被呼叫時,平均花費了多milliseconds執行memccpy()和memccpy()中呼叫的routine
name: function 名稱

下半部Example:
index % time    self  children    called     name
                                                 <spontaneous>
[1]    100.0    0.00    0.05                 start [1]
                0.00    0.05       1/1           main [2]
                0.00    0.00       1/2           on_exit [28]
                0.00    0.00       1/1           exit [59]
-----------------------------------------------
                0.00    0.05       1/1           start [1]
[2]    100.0    0.00    0.05       1         main [2]
                0.00    0.05       1/1           report [3]
-----------------------------------------------
                0.00    0.05       1/1           main [2]
[3]    100.0    0.00    0.05       1         report [3]
                0.00    0.03       8/8           timelocal [6]
                0.00    0.01       1/1           print [9]
                0.00    0.01       9/9           fgets [12]
                0.00    0.00      12/34          strncmp <cycle 1> [40]
                0.00    0.00       8/8           lookup [20]
                0.00    0.00       1/1           fopen [21]
                0.00    0.00       8/8           chewtime [24]
                0.00    0.00       8/16          skipspace [44]
-----------------------------------------------
[4]     59.8    0.01        0.02       8+472     <cycle 2 as a whole>    [4]
                0.01        0.02     244+260         offtime <cycle 2> [7]
                0.00        0.00     236+1           tzset <cycle 2> [26]
-----------------------------------------------

primary line(第一個欄位有出現[數字]的那幾行,這裡拿紅色行為例):
欄位說明
index: report()的index
% time: report()執行時間在所有runtime所佔的比例(包含report()中呼叫的subroutine的執行時間)
self: 同上一個table的self seconds
children: report()中呼叫的subroutine的執行時間
called: report()被呼叫的次數,如果是遞迴呼叫,會有兩個數字,第一個數字表示非遞迴呼叫的次數,第二個數字表示遞迴呼叫的次數(如藍色行)

caller line(dash line到primary line之間,此例中以綠色行為例):
欄位說明
self: 呼叫report()所花費的執行時間(不含report()中又去呼叫其它subroutine的執行時間)
children: report()呼叫其它subroutine的執行時間
self + children的總合等於report()被main()呼叫後的實際執行時間
called: 兩個數字,第一個代表report()被main()呼叫的次數,第二個數字代表被所有caller functions(程式可能也會有其它function呼叫report())呼叫的次數
name: function 名稱

subroutine line(灰色行):
欄位說明
self: 被report()呼叫後的執行時間(不含執行其它subroutine的時間)
children: 被report()呼叫後,執行其它subroutine的時間
self + children的時間等於此subroutine被report()呼叫後的執行時間
called: 兩個數字,第一個數字代表在report()是被main()呼叫的狀況之下,此function被report()呼叫的次數,第二個數字代表整個程式的執行過程中,被report()呼叫的次數(不限定report()必須被main() 呼叫)

分析範例

上面可能寫的有些模糊,以下拿個例子來說明一下
-----------------------------------------------
                0.00    0.05       1/1           main [2]
[3]    100.0    0.00    0.05       1         report [3]
                0.00    0.03       8/8           timelocal [6]
                0.00    0.01       1/1           print [9]
                0.00    0.01       9/9           fgets [12]
                0.00    0.00      12/34          strncmp  [40]
                0.00    0.00       8/8           lookup [20]
                0.00    0.00       1/1           fopen [21]
                0.00    0.00       8/8           chewtime [24]
                0.00    0.00       8/16          skipspace [44]
-----------------------------------------------
此block主要是顯示report()被main()呼叫後執行時間和次數的資訊

由caller line(綠色行)可以得知在整個程式執行過程中,report()總共只被main()呼叫過一次而已(因為called欄位的兩個數字都是1),main()呼叫report()後,實際在report()中(不含執行其它subroutine的時間)執行的時間為0.00(self),report()呼叫的其它subroutine的執行時間為0.05(children)

由primary line(紅色行)可以得知,report()只被main()呼叫一次(called),在report()中(不含執行其它subroutine的時間)花費的執行時間為0.00,report()中呼叫其它subroutine的執行時間為0.05

由subroutine line(灰色行)可以得知, timelocal()在整個程式執行過程,只會被report()呼叫8次(因為called欄位兩個數字都是8),timelocal()自己的執行時間(不含執行其它subroutine的時間)為0.00(self),timelocal()中呼叫其它subroutine的執行時間為0.03(children)

Reference

GNU gprof profile範例來源
GNU/Linux Application Programming
感謝NCKU IDEAL Lab碩一同學暑假期間的教學

2010年5月9日 星期日

下營玄天上帝廟廟會活動

0 意見
結束了一個禮拜的coding生活後回到了下營,雖然每個禮拜五都會回家報到,不過這次特別興奮,因為隔天就可以體驗期待已久的抬神轎@@。

回到家立刻打給老爸報備一下明天的廟會行程,不過卻得到一個悲慘的回應,老爸叫我隔天(4/17)先不要去抬,先去幫大伯處理一下電腦的問題...~!@#$%

喪氣之餘打開電視看點節目來殺殺時間...

不久後蠢豬意外地殺到家裡來,讓我嚇了一跳= =,這傢伙之前明明就跟我說要期中考不回來的...阿璋也來了之後三個人就一起出們覓食去了


入侵房間的兩名黑衣男子...














買雞排結帳的時候,順便跟老闆多要了兩個袋子要去廟裡拿些掛在神像上的餅乾... 本來想說兩個袋子應該是還好,沒想到到了廟裡開始拔餅乾的時候,發現旁邊的民眾大都只拿個幾塊就離開,還有一個小妹妹拿了沒幾塊就被媽媽制止...我開始覺得有點囧了,轉頭跟拿得眼正紅的蠢豬說:「人家小妹妹都停了,我們還要繼續拔嗎 <囧?  」,三個人一陣沉默後.....就往下一尊神像出發了..... XD

收手後就去蠢豬家坐了一整晚上~

隔天(4/17)早早起床去大伯家搞定電腦後繼續回家看球賽&補眠 = =||
下午就站在家附近的巷子看繞境的隊伍

















































































































然後晚上又去蠢豬晃了一晚XD

吃爽爽的蠢豬XD














不配合拍照的阿璋...














不知道在笑啥的我 XD















終於,4/18這天來到了!!!
早上六點半和老爸出門吃完早餐就直接去廟前集合

等待出發的眾人~














等待出發中@@a














等待出發的神轎














前面的212個陣頭和神轎出發後就換我們負責的玄天大上帝出發了!!!
沒想到一出發就塞車= =||等了一會兒後,第一批要鑽轎人潮就來了,第一次抬著神轎從一排跪拜姿勢的人群走過去感覺還蠻奇特的,有一種就算拼了也要讓眼前的群眾都能來沾沾等了三年的神明祝福的使命感。

抬壽星的轎子其實很快就累了(雖然不知道是我自己太弱雞還是真的是這樣子...),因為走沒幾步就會有一排要鑽轎的民眾出現,不習慣的人真的會有點吃不消,同行的長輩怕我第一次抬就被嚇跑,只讓我抬了一段就搶走我的工作了= =||,我還可以啊!!!!!!!!!!!

最後我就退到轎旁中央,當有要鑽轎民眾時再幫忙將轎子抬高或擺置在肩上(有時前面塞太嚴重的話,我們只能將轎子原地抬高,讓民眾自行走過轎下),就這樣一直走到中午12點到了下營農會讓下一班的人接手後,我們的任務就完成了!!!

回到家後整個累攤,喝了幾口水後就一路睡到4點了...

4點起床後開始看電視殺殺時間~(還是很累啊....)

到了6點左右,第一個電話來了!!!拿帕出場!!!!不過在這時發生了一些小狀況,因為要來一起吃流水席的人(阿璋、拿帕、建文)我都約在6點....結果變成載著拿帕到鳳和帶建文,然後再去阿璋家...浪費了大家不少時間(回到伯父家時其它桌的人幾乎都吃完了.....囧)

四個人開始清桌行動,不過看來我將一切想得太完美了,四個人只清完1/3的食物.... 剩下的全浪費掉了,下次還有機會一定要拉更多人來幫忙才行Orz

茶飽飯足後四個人步行到廟前看神轎入廟,不過到的時候已經沒有好位置了,太跨張了....也才快八點而己,最後大家就決定散會了~

帶建文回省道後準備回家休息,結果沒想到唯一回家的小巷還有神轎在繞........回不了家的我只好摸摸鼻子再到廟前去看看有沒有位置可以看入廟......還好發生了這段小插曲,拆返回廟前後沒花多少時間就找到一個有不錯視野的位置!!!!!不然都沒看到入廟感覺怪怪的...

看了3個小時的入廟後,12點就拖著疲憊的身體滾蛋回家洗澡睡覺,結束了這次的活動了^ ^

感謝這次願意來捧場的朋友們~也希望這次不便來作客的朋友們,下次能有機會讓我一盡地主之誼 ~~

2010年1月17日 星期日

整理筆電

0 意見
週末花了一些時間重灌NB,第一次裝win 7發生了不少預料外的狀況...不過無傷大雅,不熟悉的系統總會需要一段陣痛期的,寫篇文章記錄一下遇到的狀況和查到的solution

1.重新安裝win 7時,如果硬碟是未分割的狀態,安裝程式會強制分割一個100MB的分割區來放置開機相關檔案,所以會變成至少要兩個分割區才能安裝win 7

solution:安裝win 7之前先用spfdisk或其它磁碟工具分割好要用來安裝win7的分割區,等到要安裝時直接指定該分割區來安裝就好了

2.製作開機選單軟體可以使用spfdisk也可以用easyBCD

3.如果遇到1.提到的狀況時,如果不小心用其它軟體設錯啓動分割區時會無法開機

solution:100MB那個磁區才是放置和開機有關的檔案,所以只要將100MB那個磁區設為啓動磁區就能正常開機了

BTW,原來是打算要裝win 7 & fedora 12的,結果不知道是不是抓錯fedora的iso檔,安裝過程需要連上網路才給裝...後來就改成灌fedora 11了...也因些筆電變成7-11機了(win 7 & fedora 11) XDD

2010年1月3日 星期日

天地小聚

0 意見
今天(其實是昨天...)終於有機會可以來個愜意的天地聚餐了,看到標題的"小"字應該就不難得知其實人數有點...少= =||,也沒辦法,年紀越大這種大家都有事要忙的狀況應該是會越來越常見才是,前幾天問阿樸說「你元旦真的不回台南嗎@@?」,阿樸:「嗯,騎回去太累了」,我:「..................................」,好吧,我投降Orz。張老二也有事不回台南,某睿則是因為我前幾天太忙了,完全忘記要通知他了,應該算是被我暗黑掉了...囧,吃飯時因此被太白念了數次,我對不起你XD

好久不見,大家又持續的成長和演化(?)了不少,嫩法儼然快成為一個專業的攝影專家了,突然又勾起當初想買單眼把玩結果卻把預算拿去矯正的往事(說好不提單眼的...),而且南師弟也說北部開始有人手一隻單眼的情況出現了,看來消費型DC的市場好像也快邁向LCD之路了,相當有趣!

阿昇依舊在研究一些刁鑽的東西XD,不過當初的工作問題現在好像是頗平穩了,持續接觸不同領域的好習慣真的是天地中的好榜樣!重點是研究完都還能整理個大綱在每次聚會中分享給大家,不像我都忘光光了...

太白也過的不錯,終於走出近期的低潮,整頓好自己準備向新目標伸出魔掌了!而且我覺得偶爾就開個課的狀況變少了XD,休養依舊持續提升,但是分享給大家的方式更棒了,不像以往強硬,good job!

從之前國高中大家天天見面,到現在上了大學偶爾相聚,彼此的情感提升到下一個境界,這種感覺真的相當的棒,不過我還是希望有機會的話,來個全員到齊吧!哈哈哈哈= =+