精華區beta CompBook 關於我們 聯絡資訊
作者: jjhou (jjhou) 標題: 【投我以桃 報之以李】 時間: Wed Nov 25 11:25:40 1998 【投我以桃 報之以李】 侯俊傑 jjhou@ccca.nctu.edu.tw 1998.11.25 第一次發表於 清大.楓橋驛站(140.114.87.5).電腦書訊版(CompBook) ---------------------------------------------------- ●投我以桃 報之以李 最近有一件事情,讓我很開心。 台北蕭祖台先生 email 給我,希望我在我自己的書籍的印刷方面 能有更好的管控。他說他手上的 <深入淺出 MFC> 2e/1p 有些 錯別字,而書店中的新刷書籍雖更正了錯誤,卻又形成了新的缺點: 好幾頁印刷模糊。 我看了之後,便回信致歉,並寄上一本最新的 <深入淺出 MFC> 2e/5p 表示我的歉意。這一刷已修正了我以及熱心讀者所發現的所有錯誤 (都是一些還算容易判別之錯別字,無技術上的錯誤),而且所有模糊頁次 都重製了(這也是讀者反應之功)。 蕭先生收到書後,立刻回信給我,向我指正了一個懸宕我心中已久的 疑惑(後述)。如果沒有蕭先生的指正,我不知道當我開始 動手 <深入淺出 MFC> 3e 而必須重新面對這個疑惑時,會白花多少時間 在不正確的方面上(自己看自己的碼難免有些盲點)。 蕭先生寫信給我,並未指望我會贈書給他;我贈書給蕭先生,也並未 指望他會給我什麼回餽。現在,我們都得到了意外的收穫。當然, 收穫比較大的是我啦,NT$ 860 哪值得上蕭先生的這個指正。 以下就是蕭先生的指正。 ●<深入淺出 MFC> 2e, chap3, frame7 and frame8, bug fix. 在 <深入淺出 MFC> 1e, chap3 中,我曾以 frame7 和 frame8 兩個 小小的 DOS-like 程式模擬 MFC 的 msggage mapping 和 command routing。 這程式在 VC4.0 是好的,但當我撰寫 <深入淺出 MFC> 2e,這兩個程式 怎麼就是過不了 VC4.2 和 VC5.0 的關口。當時一下子找不出 bug,自忖 這只是份模擬,設計架構和模擬結果也都交待很清楚了,只是移植有問題, 所以也就打了個馬虎眼,附上的仍是 VC40 所編譯的可執行檔。 原因出在,我為了模擬 msggage mapping 和 command routing,必須設計 一些 structures 以及 macros,那是從 MFC source afxmsg_.h 中學來的。 而為了與 MFC 儘量雷同,我連我自己的檔名也叫做 afxmsg_.h。 壞就壞在,應該 #include "afxmsg_.h" 的地方,我卻寫成 #include <afxmsg_.h>。 這在 VC40(MFC40)陰錯陽差地 OK 了,但在 VC42+(MFC42)中則因為 MFC 內部 的變化,導至 error msg C2102 : & on constant. 所以,只要把書中的 #include <afxmsg_.h> 改為 #include "afxmsg_.h", 就 OK 了。但又陰錯陽差地,由於我曾在程式中使用 CN_COMMAND 這個常數, 卻忘記在自己的 afxmsg_.h 中定義,所以一者是加上這個定義(隨便定義為 什麼常數都行,因為其實它在程式中沒有實際用途),一者是把程式中 的 CN_COMMAND 全改為 0。 整理如下: ■ <深入淺出 MFC> 第三章之 frame7 和 frame8 兩個程式,在 VC4.0 可以 work, 在 VC4.2+ 皆無法通過編譯。這是因為一些陰錯陽差的 coding 誤失。 請按以下修改,即可順利 building。此錯誤之解決,特別感謝台北蕭祖台先生。 p.173 中段 原文: { WM_COMMAND, CN_COMMAND, (WORD)id, (WORD)id, AfxSig_vv, ... } 更正: { WM_COMMAND, 0, (WORD)id, (WORD)id, AfxSig_vv, ... } p.175 上圖 更正: 圖中的 CN_COMMAND 改為 0 p.182 原文: #0061 #include <afxmsg_.h> 更正: #0061 #include "afxmsg_.h" p.185 AFXMSG_.h 原文: #0008 { WM_COMMAND, CN_COMMAND, (WORD)id, (WORD)id, AfxSig_vv, ... } 更正: #0008 { WM_COMMAND, 0, (WORD)id, (WORD)id, AfxSig_vv, ... } p.204 原文: #0070 #include <afxmsg_.h> 更正: #0070 #include "afxmsg_.h" p.208 AFXMSG_.h 原文: #0008 { WM_COMMAND, CN_COMMAND, (WORD)id, (WORD)id, AfxSig_vv, ... } 更正: #0008 { WM_COMMAND, 0, (WORD)id, (WORD)id, AfxSig_vv, ... } ●個人網站 我應該有個更有系統的方法來維繫讀者與我之間的溝通、公佈書籍 的 bug fix、個人的寫作計劃。計劃於 1999 上半年度完成個人網站。 目前實在是沒有時間,很抱歉。 <深入淺出 MFC> 在大陸出了簡體版(但竟是 1/e 的簡體版,時效有點...)。 許多大陸讀者寫信來(幸好我在 IE 中安裝了簡體版元件,看得懂)。 所以我真的是愈來愈需要一個網站了。 我想,明年學會一套工具,然後,編織網頁的日子一定很曼妙。 ●關於印刷品質 蕭先生說: > 希望您能嚴格要求出版社的校正和印刷,... 一直很努力要求這一點,事實上出版社也都願意從善如流。所以, 希望讀者看到什麼缺點,能夠主動向作者或出版社反應。 ●好話不妨大聲說 收到 Michael 讀者對於【汗如雨下.雜感】的回應。其中 有些想法大家不妨參考參照。 此外,我以為,如果要稱讚一位作者,或一家出版社,不妨大聲 說出來。我相信,受到讚美的人,下次會做得更好。我可以告訴 各位,我所認識的出版社,都在看這個版。你們的意見傳達得到。 Michael 的文字並沒有什麼隱私或不妥之處,所以我就代他登出了。 我想公開討論更有意思些。 以下是 Michael 的來信(>> 是 jjhou,> 是 Michale): >> 我們讀者是否都願意就書籍的優缺點,寫在免貼郵票的回函卡上, >> 寄給出版社,讓好的發揚,壞的改善呢?沒有,99% 的讀者懶得 >> 這麼做!罵還是要罵的,但是...動手寫...唔...有點懶耶! > 侯老師...這點我同意你的說法...有太多的人只想在網路上罵罵罷了... > 而不喜歡寫回函卡... > 不過..我希望出版商能將書籍作(譯)者的 email 或網頁公布, > 這樣讀者與作者會有較多的互動... > 而且作者能夠更直接知道讀者的需求與其著作的優缺點... >> 出版社未能在發書之前檢驗出印刷的問題,這一點,身為作者 >> 以及讀者的我,考量到出版業務的實際情況,可以諒解。 >> 如果我指出了這個缺點,而出版社卻沒有回應,那就不可原諒。 >> 再者,一如我從前所言,一本書的內容修訂,作者自己是否 >> 配合,配合度如何,也只有合作雙方心知肚明。 >> >> 松崗公司對於我所指出的缺點,都儘力做了修正,所以我必須就 >> 這一點為他們說句公道話。 > 我是蠻喜歡松崗的服務態度的...只不過是去要 <深入淺出> 第二版 > 第三刷所缺的圖...他們就用限時掛號寄來了... >> 前不久我在版上 >> 貼了一篇 <C++ 的沉迷與愛戀>,曾被網友譏為「老人」的學習方式, > 呵...侯老師...我跟你一樣都是老人的學習方式.... > 不過...也就因為這樣...我真的才更了解它在做什麼...它為什麼會這樣做 >> 回過頭說,如果什麼都從「application 的開發」角度出發, >> 眼光其實已經狹隘了。 > 畢竟系統的東西...枯燥乏味...... > 應用程式花花綠綠.... > 大家都喜歡五彩繽紛的世界嘛..... >> <Delphi 學習筆記> 作者錢達智先生,是我的好友。我們之間對於 RAD >> 有段討論,或許你想聽。 >> >> ■侯:BBS(News)上時有關於 RAD 的工具見解。我認為你很夠資格 >> 說些話。不少人對 RAD 有誤解。如果你能點醒大家 : >> >> (1) RAD 是很好的開發工具 >> (2) 使用 RAD 並不代表不需要底層紮實的基礎, >> >> 那麼誤解的人就會比較少一點,知道該怎麼做的人就會比較多一點。 > 這是真的...學了Delphi一段時間... > 發現一切都是在雲端飄浮著...好沒有安全感喲... > 因為我只會在那邊敲元件... > 幸得到...錢先生的 <Delphi學習筆記> ...著實讓我撥雲見日... > 現在我發現一點....若一本書的作者沒有挖深層內部的東西...總覺得怪怪的 > 可能是受到侯老師和錢先生的影響了...變得自己也喜歡去挖程式碼來看了 >> ■錢:過去在 DelphiChat、NEWS Group 以及我的書中,這樣的想法 >> 都不只一次宣揚過。 >> >> 其實,就我接觸過的人,不論是網路或者是學生,RAD的使用者的確 >> 是比較急功近利,也難怪會有這樣的刻板印象。 :( > 說實話...誰不想一蹴可幾呢... > 像我就想要一下子...像網路上的 四眼王蟲 一樣能幫大家解決一堆的困難... > 又會全部的程式語言...顯示自己是多麼的厲害... > 但是吃過苦頭才知道... > 按步就班才是不二法門...一次一樣就夠了...沒人是什麼都會的全才... >> 錢: >> 上週,當我列出一些步驟,應用 Delphi 的 MIDAS 那組元件, >> 就讓可以說完全不明白 DCOM 是什麼的學員實作出一個應用 >> DCOM 技術的 Application Server,寫好一組 3 Tier Client/ >> Server 程式,而且,與他們過去開發資料庫應用程式的經驗 >> 相去不遠。那時,我不免要提到 MIDAS 包裝了 DCOM 等技術, >> 然而,當我想要更進一步時,卻發現難以啟齒於 MIDAS 所蘊含 >> 的 DCOM 與 CORBA...當時,課程已近尾聲,我卻發現學員 >> 未來竟有這麼多東西要學。 > ...若是錢先生這樣的教法...看樣子...我會每次都逃課喲....呵... > 不然...就是會被我煩死了....呵 > 真想問錢先生一下...想不想出CORBA方面的中文書呀..... > 只有原文...讀起來太累了說...... > 我也想要寫什麼N-tier方面的程式....但是我知道...我沒有DCOM與CORBA > 的基礎....就想挖一些這方面的書籍來看...哪知...這類書少之又少.... > 幸好...有李維先生的Delphi 4.x實戰篇.....講了DCOM >> 『David Kruglinski 的 <Inside Visual C++> 系列與我十分有緣, >> 同時也是很值得翻譯的好書。我不排除任何可能。看機緣吧』 >> >> 現在決定不譯了(不管有沒有人來找我)。 > 那一本書...好貴喲...上次去看最新的講 VC++6.0 要一千多元.... > 若有人出中文本,一千元內就搞定了...這也是大家想請侯老師你多出一些有價值 > 的書一部份原因吧...至少...我就有這樣子想...呵... ★★ 侯:要我譯書,是為了中文譯本比較便宜?很傷心哪! ●來自 USA 這是一封來自 USA 的 email,其中有很多像「&#36807;」這樣的碼解不開來。 所以只能半猜半測,轉得如下內容,給大家參考。我猜這是看了 【汗如雨下.雜感】後的回應;放在這裡,希望原發信人也看得到 (我記得我的回信好像失敗)。 > 侯 sir,您好。看了您的一些指導學習方向的文章,非常??基?。 > 可是,在商?如??,大多數的公司都采用 RAD,如 Delphi。 > 或受到潮流影響,大量 web 節目上網, > 以求最快的速度和最大的利益,基本上雖然 > 是無可厚非的,但??就導致人才市場的不正常現象, > 許多自認為程式經驗丰富的人,其實只會拉拉控件,填填代碼, > 根本缺乏自己的思想,基礎很差。我曾經面試過不少這類的人, > 他們要求的薪金都不低。長此以往,恐怕無法提高和獨立我?在 > 世界????的地位,我深感??...希望您不只在教學方面為學生指引方向, > 也能為整個軟體提醒。 --- the end   -- ※ Origin: 楓橋驛站<bbs.cs.nthu.edu.tw> ◆ Mail: jjhou@serv2.ccca.nctu.edu.tw ※ X-Info: Mave -> ric.bbs@ptt.csie.ntu.edu.tw ※ X-Sign: 0ROABM9PHuljbFWt8dOs (99/07/09 7:05:45 )