作者: 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,其中有很多像「过」這樣的碼解不開來。
所以只能半猜半測,轉得如下內容,給大家參考。我猜這是看了
【汗如雨下.雜感】後的回應;放在這裡,希望原發信人也看得到
(我記得我的回信好像失敗)。
> 侯 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 )