/********************************************\
|????歡迎轉載, 但請保留作者姓名和原文鏈接, 祝您進步并共勉!???? |
\********************************************/
讀VC++內幕之體悟 - 08
作者: Jerry Cat
時間: 2006/07/22
鏈接:
http://m.shnenglu.com/jerysun0818/archive/2006/07/22/10347.html
8.?? 安裝ActiveX控件的步驟:先把控件的動態連接庫文件以及相關的文件如幫助文件help和許可文件LIC拷貝到硬盤上,最好放在系統目錄下;然后在Windows的注冊表中進行登記注冊;最后在用到該控件的每一個項目中安裝該控件。
posted @
2006-07-22 19:40 Jerry Cat 閱讀(606) |
評論 (2) |
編輯 收藏
/********************************************\
|????歡迎轉載, 但請保留作者姓名和原文鏈接, 祝您進步并共勉!???? |
\********************************************/
用最簡潔的代碼寫出一個整數的階乘
作者: Jerry Cat
時間: 2006/07/21
鏈接:
http://m.shnenglu.com/jerysun0818/archive/2006/07/21/10283.html
int fun(int s)
{
??? if (s == 1) return 1;
??? return s * fun(s-1);
}
posted @
2006-07-21 02:58 Jerry Cat 閱讀(671) |
評論 (3) |
編輯 收藏
[轉]在XP Home?上裝Rose
??? 我在筆記本上安裝Rational Rose 2003時,系統提示:操作系統不支持安裝。我筆記本用的是Windows XP home版操作系統。我去Rational官方網站上查找發現Rational Rose 2003 不支持XP home版操作系統。經過一番研究,給出了如下解決方案:
安裝時讓Rational Rose 2003不對操作系統版本進行檢測。
步驟如下:
1、去
http://www.newhua.com/cfan/200510/orca.rar
下載Microsoft Orca,Orca數據庫編輯器是 Windows Installer SDK 中提供的表編輯工具,可以用于編輯 .msi 文件。(也可以去
http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en
下載)
2、雙擊\bin 文件夾中的 Orca.msi 文件,安裝 Orca 編輯器。
3、用Orca打開Setup/rose.msi,查找"xph",會定位到該行:
(VersionNT AND (NOT RSWINXPHOME))OR (DISABLE_PLATFORM_BLOCKS = 1)|You are attempting to install on an...
4、用Table/drop row刪除該行,保存該文件,退出
5、安裝Rational Rose 2003,成功!
posted @
2006-07-20 17:57 Jerry Cat 閱讀(855) |
評論 (3) |
編輯 收藏
/********************************************\
|????歡迎轉載, 但請保留作者姓名和原文鏈接, 祝您進步并共勉!???? |
\********************************************/
讀VC++內幕之體悟 - 07
作者: Jerry Cat
時間: 2006/07/19
鏈接:
http://m.shnenglu.com/jerysun0818/archive/2006/07/19/10202.html
7.?? 通常一個或多個ActiveX控件會保存在一個擴展名為OCX的動態連接庫中,包容器程序根據Windows注冊表,利用復雜的COM技術在需要的時候裝入該動態連接庫。顯然,如果要發布一個利用ActiveX控件建立起來的程序,那么就必須包含相應的OCX文件,而且還得提供一個合適的安裝程序。
posted @
2006-07-19 02:04 Jerry Cat 閱讀(363) |
評論 (0) |
編輯 收藏
定風波
蘇軾
三月七日沙湖道中遇雨。雨具先去,同行皆狼狽,余獨不覺。已而遂晴,故作此。
莫聽穿林打葉聲,
何妨吟嘯且徐行。
竹杖芒鞋輕勝馬,誰怕?
一蓑煙雨任平生。
料峭春風吹酒醒,
微冷,山頭斜照卻相迎。
回首向來蕭瑟處,歸去,
也無風雨也無晴。
【詩文賞讀】此詞作于宋神宗元豐五年(1082),貶謫黃州后的第三年。寫眼前景,寓心中事;因自然現象,談人生哲理。屬于即景生情,而非因情造景。作者自有這種情懷,遇事便觸發了。《東坡志林》中說:“黃州東南三十里為沙湖,亦曰螺師店,予買田其間,因往相田。”途中遇雨,便寫出這樣一首于簡樸中見深意,尋常處生波瀾的詞來。
???
?? 首句“莫聽穿林打葉聲”,只“莫聽”二字便見性情。雨點穿林打葉,發出聲響,是客觀存在,說“莫聽”就有外物不足縈懷之意。那么便怎樣?“何妨吟嘯且徐行”,是前一句的延伸。在雨中照常舒徐行步,呼應小序“同行皆狼狽,余獨不覺”,又引出下文“誰怕”即不怕來。徐行而又吟嘯,是加倍寫;“何妨”二字逗出一點俏皮,更增加挑戰色彩。首兩句是全篇主腦,以下詞情都是從此生發。
?? “竹杖芒鞋輕勝馬”。先說竹杖芒鞋與馬。前者是步行所用,屬于閑人的。作者在兩年后離開黃州量移汝州,途經廬山,有《初入廬山》詩云:“芒鞋青竹杖,自掛百錢游;可怪深山里,人人識故侯。”用到竹杖芒鞋,即他所謂“我是世間閑客此閑行”(《南歌子》)者。而馬。則是官員或忙人的坐騎,即俗所謂“行人路上馬蹄忙”者。兩者都從“行”字引出,因而具有可比性。前者勝過后者在何處?其中道理,用一個“輕”點明,耐人咀嚼。竹杖芒鞋誠然是輕的,輕巧,輕便,然而在雨中行路用它,拖泥帶水的,比起騎馬的便捷來又差遠了。那么,這“輕”字必然另有含義,分明是有“無官一身輕”的意思。
?? 何以見得?封建士大夫總有這么一項信條,是達則兼濟天下,窮則獨善其身。蘇軾因反對新法,于元豐二年被人從他的詩中尋章摘句,硬說成是“謗訕朝政及中外臣僚”,于知湖州任上逮捕送御史臺獄;羈押四月余,得免一死,謫任黃州團練副使,本州安置。元豐三年到黃州后,答李之儀書云:“得罪以來,深自閉塞,扁舟草屨,放浪山水間,與樵漁雜處,往往為醉人所推罵,輒自喜漸不為人識。”被人推搡漫罵,不識得他是個官,卻以為這是可喜事;《初入廬山》詩的“可怪深山里,人人識故侯”,則是從另一方面表達同樣的意思。這種心理是奇特的,也可見他對于做官表示厭煩與畏懼。“官”的對面是“隱”,由此引出一句“一蓑煙雨任平生”來,是這條思路的自然發展。?
?? 關于“一蓑煙雨任平生”,流行有這樣一種解釋:“披著蓑衣在風雨里過一輩子,也處之泰然(這表示能夠頂得住辛苦的生活)。”(胡云翼《宋詞選》)從積極處體會詞意,但似乎沒有真正觸及蘇軾思想的實際。這里的“一蓑煙雨”,我以為不是寫眼前景,而是說的心中事。試想此時“雨具先去,同行皆狼狽”了,哪還有蓑衣可披?“煙雨”也不是寫的沙湖道中雨,乃是江湖上煙波浩渺、風片雨絲的景象。蘇軾是想著退隱于江湖!他寫這首《定風波》在三月,到九月作《臨江仙》詞,又有“小舟從此逝,江海寄馀生”之句,使得負責管束他的黃州知州徐君猷聽到后大吃一驚,以為這個罪官逃走了;結合答李之儀書中所述的“扁舟草屨,放浪山水間,與樵漁雜處”而自覺可喜,他是這一種心事,在黃州的頭兩三年里一而再、再而三的表白出來,用語雖或不同,卻可以彼此互證,“一蓑煙雨任平生”之為歸隱的含義,也是可以了然的。?
?? 下片到“山頭斜照卻相迎”三句,是寫實。不過說“斜照相迎”,也透露著喜悅的情緒。詞序說:“已而遂晴,故作此。”七個字閑閑寫下,卻是點晴之筆。沒有這個“已而遂晴”,這首詞他是不一定要寫的。寫晴,仍牽帶著原先的風雨。他對于這一路上的雨而復晴,引出了怎樣的感觸來呢????
?? 這就是接下去的幾句:“回首向來蕭瑟處,歸去,也無風雨也無晴。”“蕭瑟,風雨聲。”“夜雨何時聽蕭瑟”,是蘇軾的名句。天已晴了,回顧來程中所經風雨,自有一番感觸。自然界陰晴圓缺的循環,早已慣見;宦途中風雨的襲來,卻很難料定何時能有轉圜,必定有雨過天青的遭際嗎?既然如此,則如黃庭堅所說的,“病人多夢醫,囚人多夢赦”(《謫居黔南十首》),遭受風吹雨打的人那是要望晴的吧,蘇軾于此想得更深,他說無風雨更好。無風雨,則盼晴、喜晴的心事也不需有了,這便是“也無風雨也無晴”的真諦。如何得到政治上“也無風雨也無晴”的境界?是“歸去”!這個詞匯從陶淵明的“歸來去兮”取來,照應上文“一蓑煙雨任平生”。在江湖上,即使是煙雨迷蒙,也比宦途的風雨好多了。
posted @
2006-07-15 19:55 Jerry Cat 閱讀(435) |
評論 (1) |
編輯 收藏
[轉]不要輕言升級
大致想了一下,從進入此行業開始到今天,聽得最多的也許就是“升級”這兩個字了。也參與或經歷了一些稀里糊涂的升級、明明白白的升級、有頭無尾的升級...... 在不斷的升級磨練中知道了一些事情,明白了一些道理。
小小的總結了一下:
1、若非必要,不要輕言升級
很多時候,我們是用一種復雜的心態去看待前任遺留的代碼的,有人自私的一面。我剛參加工作的時候,總以為別人的代碼是垃圾,自己寫出來的才算優美,通常是拿到代碼就重構,然后一通大改,然后用勤奮來應付流言,為此吃了不少的苦頭。當然得承認,經歷了這些之后,對別人的、自己的代碼都會有很深的認識,尤其是架構方面的。但極具諷刺意味的是,若干月或若干年之后,我重新對比閱讀當時的代碼,會發現自己的還不如別人的,尤其是涉及到業務方面的代碼。其實原因很簡單:其一是前任的代碼基本上都經過了運行檢驗的,出錯也只是BUG而已,不會涉及到業務邏輯方面的問題;其二是大部分重構的時間相對會比較緊,由不得你去列計劃,忙中出錯而導致業務邏輯重構不好的話,后果是嚴重的。而這對每個程序員來說都是一個必須經歷的過程,時間長短因人而異。我也在極力盡一個厚道人的本份,對新來的人講述自己的痛苦經歷,灌輸一個道理:不管前任的代碼如何垃圾--事實上的垃圾也好,假想中的垃圾也罷,若非必要,不要輕言升級。通俗點講,只要湊合能用,就不要去招惹它。
2、升級?你準備好了嗎?
各種編譯器是為新軟件構架準備的,而不是為升級準備的。這是我的觀點。盡管這個觀點遭到很多人的反駁,我依然堅信。
為什么?很多人這么問過我,而且列出了一大堆的理由,最有力的就是:編譯器生產商就號稱向下兼容的哦。坦率的講,我也說不出所以然。的確他們是這樣說的,而且看起來確實也是這么做的。我們給客戶做項目,也動不動就說免費升級,而且作為必不可少的一條寫到了方案書、標書中去了,但實際上~~,好像我還沒有為此而給客戶升級過:-)
來回顧一下硬件歷史,從386到現在的超線程,每次我們“升級”電腦,有幾個能夠真正做到升級?到頭來還不是一換了事?
軟件系統也差不多,至少我經歷過的是差不多的。也許有朋友成功過--徹底的成功過。可惜我很不幸,從來就沒有這個感覺~
當我把代碼從EVC3.0向4.0向.NET 遷移的時候,是多么的躊躇滿志,多么的意氣風發。全然不把前任的話當一回事:“你準備好了嗎?” 終于,在經歷了一次又一次的類型、地址錯誤之后,我發現,前任比我聰明;我發現,重寫比修改來得更簡單;我又發現,老板根本就沒有給我重寫的時間;我還發現,離我被趕出公司的時間不遠了;于是我開始恨微軟、恨比爾蓋茨、恨老板、恨客戶、恨我自己當初為什么選擇這一行......出來混的,哪能不挨刀,鍵盤鼠標一扔,睡覺去。第二天開始有人出來說,某某某整個一混子,做不出來東東,拉到,難道你說我行我就行,你說我不行我就不行啊,我自己清楚得很。工資是不指望漲了,留也好,走也罷,項目組有的是人,接手的人兒啊,“你準備好了嗎?”
后來接觸了其他公司的編譯器,同樣如此。
現在別人問我:VC6的工程升級到2003、2005怎么升?我會說:別升級,把VC6的改成動態庫,或者啥也不改,就是個EXE,直接調。需要新的功能模塊,再用新的編譯器去寫。去它的風格不統一、去它的邏輯不嚴謹,省時間省力氣的活不干,誰愛升級誰升去,我寧愿出去曬太陽。
3、寫代碼為升級作準備
難道不升級、難道就躲避?當然不行。客戶新需求、市場新動向,逼著我們必須正視這個問題。動態庫是一個好辦法,但有時候不夠用。所以才有程序架構考慮、才有代碼重用考慮。設計的時候,要盡量考慮擴充、升級的問題,有的人喜歡用組件,有的人喜歡用接口。不管怎樣,代碼重用是離程序員最近的,也是最現實的,什么封裝、繼承、耦合......這些專業名詞俺看不懂,我只是極力建議寫導出函數、公用函數、基礎類的,都應該遵循一個潛規則:系統參數,盡量采用局部獨立的原則,把你的函數整塊拷貝出去,換個類名;或者把你的類整個拷貝出去,改動的地方不超過5處就能用的,你YES,否則就NO。曾經見過一個牛人的框架,換了三個不同的系統改幾個定義都能套上去跑得很歡,真正的流水式產品,實在是高,受益匪淺啊。
其實我們平時稍微注意一下也可以做到的,只是沒有養成這樣的習慣而已。至于整體構架則是仁者見仁、智者見智了,這個需要不斷的學習和經驗積累,而且好壞也沒有統一的評判。就拿看得見的來說吧,我一直不喜歡代碼寫得N長的程序員,這是心病,一句就能搞定的,干嗎寫三句?說到這里,順便BS一下不寫注釋的,你以為人家都有時間去琢磨你的代碼和意圖啊。
4、升級項目就是新項目
別不同意。建議你按新項目來,風險、資源、進度、成本、文檔都理一理,做好規劃,該調配的調配,該安排的安排,該溝通的溝通,別到時候手忙腳亂的,又不是你一個人的項目,犯不著你一個人著急,要急也要大家一起急。做事情就不要這樣了,自己累點,把事情都考慮好,列出可能的風險和規避對策、把你手下的人員編號再對一遍,哪個最近在泡MM、那個最近比較躁、那個在鬧工資、哪個準備開溜...... 這些都直接關系到項目是否成功,還有老板的爸爸最近怎么樣,二奶秘書是不是精神旺盛......這些間接關系到項目是否成功,然后的然后,就再問一下自己:必須升級嗎?準備好了嗎?如果你發現原來的代碼50%都移植不成,奉勸你另外設計開發一個替代項目,別跟前任過不去,把他的東西改得亂七八糟的,好好保存就行了。重新開發一個,新項目哦,完成了,找老板,看看,前面的老系統也可以賣,新的你還可以賣得更貴一點,產品線也豐富了,用戶群也多了,這樣多好,給我加薪吧。
posted @
2006-07-15 05:25 Jerry Cat 閱讀(336) |
評論 (0) |
編輯 收藏
/********************************************\
|????歡迎轉載, 但請保留作者姓名和原文鏈接, 祝您進步并共勉!???? |
\********************************************/
引以為戒
作者: Jerry Cat
時間: 2006/07/15
鏈接:
http://m.shnenglu.com/jerysun0818/archive/2006/07/15/9931.html
想用IPicture實現不同圖形文件的讀取操作,結果OleLoadPicture函數老是出錯,最后down了一個例程居然能用,然后把人家的代碼拷貝過來加以改動,我的程序也能運行了,郁悶。
其實兩個程序差別就在文件讀取的那一塊,我用的是STL的fstream,他用的是CreateFile,經過反復調試才發現是因為我在打開文件的時候沒有加上ios::binary,結果read函數得不到正確的結果
%$&@#$
@
幾個小時就這樣被耽誤了, 以我為戒!
研究后結論: 不僅僅是讀文件存在這樣的問題。寫文件如果不是二進制的話,也會出問題的哦。你可以讀取一個exe的內容,然后write到一個新的空文件。如果不用二進制寫入,會多出不少字節呢。 原因是0d0a惹的禍。 哈哈:)
而且不僅僅是0D0A,小于0x20的字符都稱為控制字符,在文本方式下其行為由實現定義。
posted @
2006-07-15 05:17 Jerry Cat 閱讀(488) |
評論 (1) |
編輯 收藏
[轉]條件編譯命令
一般情況下,源程序中所有的語句都參加編譯,但有時也希望根據一定的條件去編譯源文件的不同
部分,這就是“條件編譯”。條件編譯使得同一源程序在不同的編譯條件下得到不同的目標代碼。
?常用的幾種形式:
(1) #ifdef<標識符>
???????????????? <程序段1>
????? [#else
???????????????? <程序段2>]
????? #endif
(2)? #ifndef<標識符>
???????????????? <程序段1>
???? [#else
???????????????? <程序段2>]
???? #endif
(3)??? #if<表達式1>
????????????? <程序段1>
?????? [#elif<表達式2>
????????????? <程序段2>
???????????????? …… ]
?????? [#else
????????????? <程序段n>]
?????? #endif
posted @
2006-07-15 02:53 Jerry Cat 閱讀(454) |
評論 (0) |
編輯 收藏
0941、0951開頭電話騙錢真相
??? 一不知名的朋友NIKEE發來了他的解釋,我覺得他分析的很有道理,與大家共享。
??? NIKEE的解釋是:
??? 在GSM網絡中,當電話接入或呼出一個通話連接時,它需要與基站的交換機傳遞被叫或主叫號碼,其格式為+[國家碼][地區碼][本地號碼]。但是,在某些情況下,國家碼是不被顯示的,同時,手機可能還會在[地區碼][本地號碼]的前面加上本地的長途接入號碼(如“0”或“9”),而所有這一切的規則都取決于手機SIM卡里的相關設置。????
??? 但不同手機和網絡在顯示時,顯示的內容都可以有所縮減。例如,將國家(地區)號碼縮減掉。中國移動手機接到來自臺灣聲訊臺“+886941*******”(后面一般7或8位)的電話。如果卡片中定義的規則自動刪除了“+886”,并補上一個“0”,來電號碼就變成了0941*******。這時機主乍一看,自然會以為是甘肅來的電話!?
??? 實際回撥時,回撥的并不是甘肅的“0941*******”,而是臺灣的“+886941*******”。當然是國際電話,而且是聲訊臺電話。而國內運營商只是在網關接口處接收對方(臺灣中華電信)提供的話費單,然后再向用戶收費。所以用戶要支付高額費用。????
??? 此外,如果是按照短信中的0941*******號碼打過去,是不可能打到臺灣的,但如果短信的發送號碼是這個,那么直接回撥時則會打到臺灣了!?????
??? 注:理論上講,當非本國電話打來時,國家碼是應該被保留顯示的。但是,不知為何,在很多情況下,該號碼卻被錯誤地“改造”成了本地號碼,這種情況不僅存在于臺灣來電,其他國家電話也有可能。但回撥會回撥到國外。
??? 解決辦法:
??? 從個人角度講,為防意外,一般不熟悉的號碼就不要回撥了,可以考慮限制國際電話功能。
??? 從運營商角度,是否國際號碼應該顯示國家(或地區)代碼?
??? 是否可以對部分業務進行限制或對部分轉移資費不予以承認?
??? (因為事實上,希望在中國境內撥打國外聲訊電話的可能性不大)
??? 不管怎么說,運營商都應該拿出一個解決辦法來,難道你可以坐視用戶的錢被國際詐騙者騙不管嗎?中國電信就坐視背上詐騙的惡名,不采取相應的行動嗎??
??? 注:聯通CDMA網絡使用的是本地號碼,不可能被騙。聯通電話如果不交1000元押金,默認未開通國際服務。
??? 感謝NIKEE,感謝博客。
posted @
2006-07-13 20:55 Jerry Cat 閱讀(559) |
評論 (0) |
編輯 收藏
/********************************************\
|????歡迎轉載, 但請保留作者姓名和原文鏈接, 祝您進步并共勉!???? |
\********************************************/
讀VC++內幕之體悟 - 06
作者: Jerry Cat
時間: 2006/07/13
鏈接: http://m.shnenglu.com/jerysun0818/archive/2006/07/13/9780.html
6.?? 實際上,ActiveX控件可能沒有窗口。調用Create時會先載入控件代碼,并發一個實地激活命令,然后ActiveX控件再建立它自己的窗口,不過客戶程序最好不要直接使用該控件的hWnd句柄。
posted @
2006-07-13 01:00 Jerry Cat 閱讀(489) |
評論 (0) |
編輯 收藏