最近公司比較忙,趕案,較沒空寫 blog ,一點心得,歡迎交流。

 

-----------  Journal -----------

 

1.    RD = Research & Develope , 別期待 RD 會有很多時間是在 Develope , 更多時間是在 Research & Using。

 

2.    別期待工作上 Coding 人人都有好習慣 , 相對的要訓練自己 , 能和 Coding 有不好習慣的人相處 , 像是變數名稱一堆 P1, P2, ... P23 的時候 ...

 

3.    在「非草創 (不一定是大公司) 」的公司裡,Trace  ,  Debug  , 加需求 , 會是最常做的事,因產品基本上都有大概的架構出現,蠻多部份都是先基於以前有的架構繼續做改善。

 

4.   寫 Code 前,先弄清楚,接下來做的是只要「功能達到就好,細節不要求」,還是「除了功能要有,中間的變數要開出來讓別人用」,或是「所有 Coding 細節都被 team leader 規定死,不要擅做主張」。

 

5.   不要假設自己使用的 library , function , 一定會是正確無誤的 , 因這些 library , function  , 也很可能是公司內部正在研發階段的東西。

 

6.   就因為不確定使用的 library , function 是否正確無誤,所以會發展一些現象或硬體行為之「模擬程式」。

       <EX>  理想中,A 程式 (自己寫) <-----> B 硬體 (自家發展 , 或供應商提供), A 程式向 B 硬體發出一個 req 需求,B 硬體收到 req 時傳回 msg , 最後 A 將收到 msg。

                 若過程中, A 發出 req , 卻沒收到 msg , 那到底是誰的問題? A 程式 ? B 硬體 ?

       <驗證 1>  能用硬體方式顯示出 B 硬體接收到之 req 訊息、處理、傳回是較準的,但通常這種方式很麻煩,開發速度也沒比較快。

       <驗證 2>  事先寫一個 B' 軟體去模擬 B 硬體行為,中間過程溝通方式很多,如 Message Queue , socket 等等。這種模擬方式實際上就是在做 IPC ( 行程相互通訊) 。好處是開發 A 程式之速度較快,唯 B' 大多沒辦法百分之百完全模擬 B 硬體行為。

       <驗證 3> 換一個 B 硬體做 A 程式測試時,並不是件容易的事,必須事先驗證,拿來的 B 硬體是不是完全正常、沒問題的。

 

7.  大多時候,看到一段自己認為寫得很差的 code 的時候 (不論是變數命名、設計架構,還是執行效率 都很差,甚至連註解都沒有),千萬要忍住不要去改它。蠻多團隊的共識是,如果那段 code 沒有錯誤、也不是瓶頸效能時,通常不要去動。

 

-----------  Tools Note  -----------

 

1. embedded system ,會把環境架在 windows 下,用 BCB, VC 等簡便 IDE 開發,架 VMWare < Linux >,source code 在 windows 下開發完後,會有一支轉換程式轉到 linux 下,再進行編譯、燒錄。相關工具 : putty,然後有沒有 Cpp2C 這種東西我就沒再研究了。

 

2. 熟練三種技巧:search , comare , merge ,很多時候是在 Ctrl + F , F3 , Ctrl + C , Ctrl + V 。

 

3. 學會使用 socket 監看工具,監看 socket 不是只有 hacker 該會的事。

 

4. 比較兩個 Project 版本不同,用 WinMerge,可清楚知道不同的兩個版本改了哪些東西。若自己拿 v1.0.1 的開發, (假設自己開發完的叫 v1.0.my) 開發完後發現別人放了 v1.0.12,做法如下。

    <1> 開 WinMerge 比較 ( v1.0.my   , v1.0.1) ,知道自己加了哪些部份的功能 。

    <2> 開 WinMerge 比較 ( v1.0.my  ,  v1.0.12),不同的地方注意是不是自己寫的,是的話從 v1.0.my 複製貼上到 v1.0.12 (有時可能不用,大多是如此沒錯);不是的話保留它就行, 那些是中間改版的過程。

    <3> 經過上述兩個步驟,最後加完的 v1.0.12 便可以成為新版的 v1.0.13。

 

5.  永遠用批次檔寫兩個 batch 放在 windows 快捷列

    <1> taskkill /f /im   <常當機的 IDE 名稱 , 或常當機的程式名稱>   ,作用是強制關閉處理程式,如 BCB , VC , IDE   ( mscv.exe  , bds.exe)

    <2> shutdown -r -t  0  ( 真的不行的話,那就重開機吧 ...)

 

6. IDE Debug 當機時,該學會聰明,哪些方面的程式會常當機 ( 像是 watch 視窗監看的 array 太大 、COM Componment 被搞爛、socket 程式常被玩爛、HDC 更新太頻繁)?有沒有辦法強制回到 IDE 結束 Debug ?  ( 如 BCB , Ctrl + F2 )

 

7. 比較兩個文字檔不同可用 WinMerge;比較兩個二進位檔不同, 目前試用還可以接受的是 Ultra Compare ; 只是想簡單知道 "一不一樣" 的話,Windows 底下命令提示字元可研究 fc 指令。

    <ex>   fc  /b   file1   file2    ---> 二進位方式比較 file1 , file2 

 

8. binary  file search 問題。假設知道一串 unsigned char want_search[200] = {......} ,要在某個二進位檔案或某個記憶體裡,找出 want_search 前 150 bytes 完全符合之位置。這問題是現實遇到的字串搜尋問題,只是字串處理變成了二進位檔案、記憶體處理。目前沒找到類似的軟體可支援搜尋。  

 

9.  記熟 UltraEdit 快捷鍵 , Ctrl + G 做二進位定址 , Ctrl + H 切換 16 進位顯示模式。其他的功能我用不太到,因沒打算將 UE 當作是一套 source code editor ,有需要的自己再加。

 

10. 想查一個專案裡面的某個 function,不用特地再用 IDE 把該專案之 project 開啟,在 windows 專案資料夾底下,直接按 Ctrl + F 搜尋,內容填上 function name ,檔案類型先過濾 *.c*    *.h*。

 

11. 原始的 *.c   *.h  預設用 NotePad++ 來開啟是個好主意 -- 前提是如果只是想看 code 的話。

 

12. 資料夾的顯示永遠設成「詳細資料」,用眼睛找東西比較容易。目前在 windows 下我還不知道怎麼改預設 (每次都是用小圖示之類的顯示),一進去的時候就按「檢視」-> 「Shift + D」

 

13. 有空時,該學一下現在那些「安裝程式」是怎麼做的,最好是能找到  有 UI Design 介面的 script language < 這部份我還沒花時間找就是了 >,這部份通常是最後一步在做的事,所以沒必要額外開發一套 Res. 安裝程式系統。

 

暫時就這樣吧,有其他的 programmer tool 使用技巧,歡迎分享,這影響工作效率很多。

arrow
arrow
    全站熱搜

    edisonx 發表在 痞客邦 留言(3) 人氣()