Showing posts with label 打工. Show all posts
Showing posts with label 打工. Show all posts

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 的標籤:,,

Thursday, November 29, 2007

使用VB.NET的TableAdapter

開始打工之後,作什麼事情有稍微謹慎一點,所以當要使用到什麼軟體時都會想到會不會有版權問題,網路上找的免費軟體又怕有安全問題,我想就只有自己寫的最好。因為公司這邊似乎沒有Access軟體,所以有需要編輯到資料庫時,就變的有點棘手,網路上有找到一款mdb viwer plus不過用起來不是那麼上手,再這樣的情況下,與其再花時間找下去,不如我直接寫一個小程式可以進行資料庫的新增、刪除以及更新。在學校寫程式總是抱著只要能寫出來就好,但經過這幾個月來職業場上的洗禮,讓我會考慮到執行效率、所用的資源等問題,所以在寫這支程式之前,我給自己"能用越少程式碼越好,多利用現有的資源,避免浪費太多資源"這樣的期許。程式大概的功能如下:

透過datagridview、textbox、button進行資料的新增、刪除、更新

一開始就面臨了最大的問題要怎麼把資料新增進去(我不想再寫新增連線 開啟連線 執行 關閉連線這種code,希望透過visual studio 2005自己產的的物件加以利用),好不容易找到TableAdapter這個物件,msdn上有稍微介紹這個物件,是vs2005才有的新功能,雖然msdn上寫了很多,但msdn的特色不就是非常難懂他想表達的東西,他說的跟我試的總是有一點出入。

當資料庫連線建立之後TableAdapter會自動產生出來,且會自動把select、insert、update、delete等SQL語法建立起來,如果當程式對於datatable裡面的資料進行變動時,再呼叫TableAdapter.insert()、TableAdapter.update()...便可將資料回存到資料庫。

tableadapter1

TableAdaptert產生之後,相對應的SQL語法也一併產生

但是,總是會發生一些無法預期的錯誤,google大神說這樣就可以更新資料庫,可是我的資料庫卻永遠都沒辦法更新。只要把畫面關掉,新增進去的值就消失了,當時我的程式碼是這樣的:

tab1Adapter.insert(XX,XX)'將資料insert到datatable中
tab1Adapter.updata(XXX.tb1)'再將datatable更新到資料庫中
(msdn寫說update可以把datatable作的任何改變回存到資料庫中,所以我又下了update)

可是這個方法總是失敗,後來在請教google大神,發現tableadapter會將資料更新到\bin\Debug的資料庫,而不是當初會新增到project的資料庫,從某個角度看來它是很貼心,因為這樣之後給user用的時候的時候就是那個資料庫。因為這樣網路上很多文章都反應資料庫沒有更新,或許是一直去看原本匯進去的那個資料庫,這應該算是vs2005的一點小bug,發現了這個沒有說的秘密之後,我嘗試把update拿掉,沒想到就可以運作了。推論上段錯誤的程式碼,可能是我作insert之後雖然有新增加一筆資料,可是又作update又把沒有新一筆資料的datatable回存回去,導致資料庫都沒有改變,所以程式一關,資料就不見了(真正的原因有時間應該還要再try看看)。後來就一路順暢的把程式完成,寫法歸納如下:

新增-> tab1Adapter.insert()
修改-> tab1Adapter.update()
刪除-> tab1Adapter.delete()

tableadapter2

程式完成畫面

 

Thursday, August 16, 2007

打工新生活

還有將近半年的時間
才能進國軍塑身中心
因緣際會下
來到目前的地方打工
目前被授與的工作有以下幾項
1.建置公司網頁
2.建置公司備份系統
3.協助建立公司產品所需之類別庫

三大工作目標
目前第一項以有初步的雛型
如右圖所示
等待網頁所需資料蒐集完成
再利用一點十間應可把第一項工作完成
第二項工作目前也以處於測試階段
原本是希望自行開發
但在網路上找到一個蠻適用的軟體-資料備份精靈2007
免費.功能應有盡有.操作介面簡單
如有需要的朋友可以參考看看
較有挑戰性的是第三項工作
公司產品執行環境是機器
所以平常寫程式覺得理所當然的method都不能直接取用
公司產品所需的功能皆是自己建立的
但因人力有限
有些部分較不完整
因此希望利用這段時間
加強類別庫的建立與維護
因目前這部分也尚未開始動工
等開始動工之後再跟大家說書