Thursday, January 3, 2008

四個月打工感想

原本打算打工到上個月,短暫休息之後準備當兵去。沒想到主管希望我十二月份如果有時間在過來支援,所以十二月份有時間我也是過來打工。回想這四個月來自己到底做了些什麼、有什麼成長?除了多賺幾萬塊之外,應該還有一些更有價值的經驗。這問題思考了很久,因為我打算用這篇當作我給 開哥(我又挪抬了XD)的期末報告。

最主要完成了幾項工作1.網頁 2.File System 3.BackUp System不過第三項直接找到現成的工具所以這工作沒有花很多時間,所以這四個月最主要是在從事前兩項工作。

網頁前前後後大概花了一個半月的時間。需要截圖、改圖以及找尋合適的顏色、參考樣式進而設計出合適的網站外觀等,其實網頁設計需要比較多的美術天份以及藝術家的感覺,所以雖然說接觸"資訊"好長一段時間,但是要設計出既專業又有美感的網頁真的很有難度。不過秉持CMMI中永續改善的精神我相信有一天呈現出來的網站一定可以讓大家眼睛為之一亮,而且接下來網站就是開哥要接手了,相信開哥神手一定能讓網站有畫龍點睛之妙阿。

四個月的時間其實真正花時間的是File System。公司機器需要能支援USB隨身碟,當user需要更新程式或是機器資料時,可透過USB直接更新,這樣一來不需在透過公司的工程師或是再把機器送回公司等麻煩的步驟,方可減少彼此的人力成本。目前檔案系統目前有制訂幾種格式ex. FAT16、FAT32、NTFS等,為了讓USB可支援電腦也可支援公司機器,所以我們需要遵循這樣的格式撰寫出能對USB進行讀寫的程式掛在公司的機器上,這樣一來可將欲更新的檔案放在隨身碟裡,透過隨身碟直接進行更新。

花了一段時間大概知道FAT16、FAT32的架構與規範。一顆隨身碟裡大至分為幾個部分保留區、FAT區、目錄區、資料區:

保留區:存放一些隨身碟的基本資訊,例如隨身碟屬於什麼格式、一個cluster有幾個sector等。
FAT區:存放著檔案區塊的"指標",一個檔案都是存放在數個cluster中,FAT區就是這些cluster的指標。每個位置會存放著下個位置的指標到最後以FF做結尾,舉例來說有個檔案存放在cluster2、3、4中,FAT區中2的位置就會放3、3的位置就會放4、4的位置就放FF。
目錄區:存放著檔案的名稱、建立日期、修改日期、大小、FAT/cluster位置等。名稱又分為兩種長檔名/短檔名(八個字的檔案名稱加上三個字的副檔名)。
資料區:存放著檔案的資料。每個cluster有幾個sector,而存放檔案最小單位是cluster,因此,有可能因此造成空間的浪費。

一個儲存設備大致就分成這樣。利用這樣的基本原理,需要撰寫讀/寫/搜尋/更名/刪除等功能,而搜尋功能又因機器的需要需要分為幾種不相同功能的搜尋。

如要讀取檔案需到目錄區找尋檔案名稱,找到之後再把FAT的初始位置找出來,進而將整個檔案的FAT位置都找出來,透過FAT找到cluster的位置,方能把整個檔案讀出來。

寫檔案較為複雜,需將整個目錄區進行掃瞄,確定沒有重複檔名之後在進行寫檔動作,為了避免檔案名稱及位置寫入之後檔案內容沒有寫成功,造成檔案佔用了空間卻無法開啟的情況,需先確認有足夠的空間可將檔案寫入,檔案寫到資料區後在將FAT位置及目錄寫入隨身碟中。

讀、寫流程大致如上。雖然程式目前可正常運作,但程式總共分兩個檔案每個檔案有兩千多行程式碼@@。我想是功力不足,在寫的時候沒有仔細思考過,可再將一些程式碼拉出來轉成函式、副程式,不但方便維護也更容易閱讀。另外一部份,是命名問題,當初沒跟主管對於程式的變數命名進行討論,導致主管要修改這程式的時候有點不知如何下手,很多變數命名也沒什麼特殊意義,這樣導致全世界除了我以外沒人可親近這支程式XD,不過我很負責任的跟主管說如果需要我的時候儘管call我。

寫程式不難,但要寫出一支好程式就要看自己功力跟能力了。希望有了這次的經驗,之後有機會寫程式能寫的更好。感謝金爺、開哥給我這樣的機會。小的真的....感激不盡。

 

Technorati 的標籤:,,