2010年2月3日 星期三

[C] 使用 fread 讀取檔案的觀念 - 小心使用 End-of-file (EOF)

連續幾天晚睡。主要是想解決一個 bug,這是用 C 語言開發的 tools,但每次都要讀取很多筆資料時才會出現,每一次運作要將三個小時才會看到這個現象,慶幸的,還是追到了。


這個現象碩班時就碰過了,所以知道要處理,然而我碩一下才開始寫 C 語言,恰好是經驗最淺得時候寫了一些 tools ,不曉得還暗藏多少 bug 啊!未來只能繼續見招拆招 。請看看下面的例子:


程式碼


#include <stdio.h>
#include <stdlib.h>

int main()
{
        FILE * fp = stdin;
        char readbuf[4];
        int cnt = 0;
        int length = 0;

        while( !feof( fp ) )
        {
                length = fread( readbuf , 1 , 4 , fp );
                printf( "cnt:%d , data size:%d\n" , ++cnt , length );
        }
        return 0;
}


測資


# echo "123" > data
# ls -la data
rw-r--r-- 1 user group 4 2010-02-03 13:21 data


其中 4 這個數字代表 data 這個檔案的大小,雖然只 echo 三個字元,但它還會幫你多加個換行符號囉


運作結果


# gcc t.c
# ./a.out < data
cnt:1 , data size:4
cnt:2 , data size:0


看得出來嗎?那就是 read buffer size 設成跟讀取資料的大小一樣時,第一次呼叫 fread 時,雖然把資料讀完,但它依舊無法判斷到 end of file 。恰好我的實做上只使用 feof 來判斷有沒讀完資料,接著才要做事,所以就出錯了。因此,最好地作法還是要搭配變數(ex: length)紀錄讀取資料的資訊來加以判斷吧!


2010年2月2日 星期二

關於 PIXNET 痞客邦 Blog 部落格面板 CSS 寬螢幕教學


目前我用的面板,出自於 myjourney911 實作:痞客邦管理後台 > 部落格 > 樣式選擇 > 電影 > [電影樣式] 帶我去遠方


我喜歡他的配色,但由於喜歡單調,就擅自把他的圖片去掉,在加上我的 Blog 字比較多,甚至帶有程式碼,所以我就又調整它,讓他支援寬螢幕,希望喜歡的人還是用用原版的風格!因為有網友在問我,所以就順手筆記一下,以免我自己也忘光。


首先很多面板的文章內容沒有調列式( ul 或 ol ),這主要是因為部落格旁邊的選單及項目也是用 ul 或 ol ,為了美觀就把它取消,但其實是可以個別設定的,基於需求,所以我有設定它,關於這部分也可以參考以前的筆記



以下列出對這次面板修改的部分:


/*dl,dt,dd,ul,ol,li*/ { margin:0; padding:0; }

/*
ol,ul { list-style:none; }
*/

#container2 {
/*    width: 900px; */
    width: 96%;
}

#header {
    height: 50px;
/*
    height: 378px;
    background: url(http://p4.p.pixnet.net/albums/userpics/4/5/420045/4a950ae67bc00.jpg) no-repeat;
*/
}

        #banner h2 {
/*
            width: 260px;
*/
            width: 400px;
        }

    #navigation {
        top: 55px; left: 0;
/*
        top: 383px; left: 0;
*/
    }

    .box {
/*        width: 263px; */
        width: 100%;
    }

#content {
/*    width: 620px; */
    width: 78%;
}

.article-head , .inner-box ul , .inner-box ol , .box-text ul , .box-text ol { list-style:none; margin:0; padding:0; } 


剩下的就只剩調調字型大小,只是每個面板設計不一樣,或許每一次都要客製化了?此例為:


.article-content {
/* font-size: 13px; */
font-size: 16px;
margin: 0px 0px 0px;
}
#banner h1 {
position: absolute;
bottom: 10px;
right: 0px;
z-index: 500;
width: 550px;
height: 30px;
line-height: 30px;
overflow: hidden;
font-family: "simhei";
/* font-size: 18px; */
font-size: 26px;
text-align: right;
}


.title {
font-family: "simhei";
/* font-size: 18px;  */
font-size: 22px;
line-height: 20px;
margin: 0px 0px 0px;
}


2010年2月1日 星期一

[Book] 你不能不懂的統計常識


圖片來源:http://books.com.tw/


前幾天下班時,跑到圖書館撈撈寶,館內的統計相關書籍好像沒有那般生活化,不是一堆年報不然就是工程上的教學筆記。


我習慣在圖中的書中找書,而不是在網頁上找書,偶爾可以發現一些沒有在計畫中的書名,順手拿起來,就像在爬山時,無意間碰到的朋友,有緣就停下來說說話,要不望著他的身影離去,也有一番味道。


說說其他的,今天我又借了五本書,我想我可能看不完它們吧!但又何妨?與其待在圖書館,不如換到我家作客吧。我借的也都是老書,至少不會影響到其他人囉。


忘了一提,上面那張圖的書我看完了,比起上一本書來說,我覺得比較像切入數學了,之前看的那本比較像個故事大餅,可以從中得到偉大的統計學者,解決問題的故事,但看不到數學式子,而這本書也算是故事型的,但書後有些數學式子,像一些經典問題:


假設一個班上有 50 人,我猜班上有兩位生日同一天,那你敢不敢跟我打賭呢?


這題一開始我也容易陷入迷失,看了書後的解法,我才想到,有時候思索問題解法時,別忘了轉個方向再繼續囉!這題的解法:( 1 - "50 個人的生日都不一樣的機率" ),答案約 97%


至於這本書適合誰看呢?作者好像是定位給上過高中課程的人看,恰恰好我有符合啦,最近想先看看統計相關的故事書,等到真的很有興趣時,我在重新來學學數學吧!


2010年1月23日 星期六

Google Maps with Street View - 台灣街景

GoogleStreetView
原始連結


看來是非常認真的鄉民,跟在 Google Street View 拍攝的車子後面比了 Y 啦!不過這也代表 Google Maps 服務越來越深入台灣了!原先只有台北市,現在許多地方也慢慢補上囉


未來能應用的角度將越來越豐富,例如統整小吃位置等,甚至只需看著 Street View 上的招牌打電話聯絡!未來若 3G 或 WiMax 上網費率能夠越來越平民化,那生活就會越來越便利囉!


2010年1月22日 星期五

成長營








為了避免厲害的 Search Engine,只好偷偷地更名啦。成長營這種東西,高一參加過一次,若沒記錯應該也是寒假的時段,恰好跟這次稍稍地呼應。當時是辦來讓高中同學相互認識,甚至在男女分班的情況下,還有機會跟女生跳舞,沒記錯的話,就是那首呢喃。


這次的成長營,讓我收穫良多,盡管還是沒有接觸到太多太廣的人面,但透過活動,甚至吃飯的時候閒聊,我發現有許多地方還待發展的部分。記得有不少故事是那般地道述,想要成功就得在各個單位待一下,但如果已在某單位獲得不錯的成果或戰績時,又有多少人肯放下身段下放到其他單位呢?


很巧地在一次晚餐的聚會中,碰到從事產業業務相關的工作者,我很感興趣地是要甚麼樣的背景才適合,畢竟那不像是現在大專院校的各大系名,並沒有明確的資格定義,究竟要怎樣挑選負責的人才呢?盡管這個疑問並未解決,但似乎也不必急著解決,就像各大公司的業務,不就肯做就行了?


另外,在結訓前一晚的創意競賽中,恰好整隊就只有我跟同事是從事技術研究的部分,我發現自己經驗太窄,不像業務部門那樣輕鬆地拉廣眼界,每次思考一些東西時,完全地想要控制實作性,所以提出的架構是完全可以實作的,甚至已經變成整合型服務,更讓我想起填寫工作計畫書時,往往填寫的部分早已知道怎樣做了!那這樣未來又怎樣能跳得更遠呢?在這樣思考模式中,很容易就安靜,不想多說,因為想不到了?或許更因為技術的背景局限自己呢?這的確需要保留更多的赤子之心,多看看,多做夢啊。比較好玩的,不曉得是不是陽盛陰衰,還是裡頭太多當完兵?一堆題目都充滿 18 禁的話題,甚至一直圍繞在「抓猴」的話題,囧


說到這也會讓我感受到我們這組異性的相處還滿自然的,可能是其他人本來就認識,或是熟女、已婚了吧?當某個男生講出兩性話題時,有位女性夥伴會直接回他「低級!」,可能對我求學環境幾乎是男女分班的,突然間感到這樣的互動是多麼地自然,有點享受在這樣的氣氛中,實在太難得了!除此之外,原先打算跟同事住在一間晚上可以聊聊天,但不預期地就是被分開,想去問換房間的事,還被工作人員誤會說要睡在同一張床,真是給他誇張了點,最後則是因為對方的手機未開機,就只好享受這意外的安排吧!


未來啊?我的目標尚未明確,或許我待的單位就是會一直如此地下去,希望自己能夠更快地適應這種模式吧,是拓荒者,更是敢死隊啊。