May
3rd,
2004
在程式語言之中,C++一直是我最熟悉的語言之一,也由於之前在五專時代曾經寫過物件導向SCSI驅動程式的經驗,讓我的C的程式語言能力有一定的水準。不過自從上了大學之後,就一路忙著學習著Linux的架設與網頁程式(PHP,ASP,ZOPE…等)其實C++已經忘記的差不多。所以最近去幾家公司面試的時候也著實讓我吃盡了苦頭。 由於我之前去許多家公司面試軟體研發工程師(RD)的職位,也由於我本身喜歡挑戰新的領域與事物,於是我在面試的時候,全部避開之前熟悉網站程式設計或是Linux的架設部分,而盡量選擇系統軟體程式設計師或是LINUX的程式設計師。所以去每家公司自然而然要考一些基本的C++基礎與一些程式設計的概念。或許大家看到這邊,會覺得很簡單,C++不就是基本的程式概念,有哪一些需要學習呢?但是自從我去幾家軟體公司面試以來,有一些題目還真是有點刁鑽與難懂,明明是很簡單的概念,卻往往容易疏忽而犯錯。以下就將幾題我之前去面試的題目提供出來,你又能答對幾題呢? 1. #include void main() { int i=3,j=5; if ((i=3)||(j=6)){ cout <<"i="<<i<<" j="<<j;} } </td> </tr> Q: What is the output? i=?? j=?? </table> 2. #include class C1 { public: int i; C1( ){ cout <<"1--------"<<endl;} ~C1( ){ cout <<"2--------"<<endl;} }; class C2 { public: int i; C2(){ cout <<"3--------"<<endl;} ~C2( ){cout <<"4--------"<<endl; } }; int fun1( ) { static C2 aa; C1( ); cout <<"test_function--------"<<endl; } void main() { int x=0; C1 c; C2 * v; cout <<"test1--------"<<endl; *v=C2( ); **v=&C2( );** cout <<"test2--------"<<endl; fun1( ); v->i =111; cout <i<<endl; } </td> </tr> Q: What is the output? </table> 3. Static i; Global j; Q: What is difference between i,j?? and what is difference between Static and Global?? 4. string s1("test1"); string s2("test2~~~"); string & rs=s1; string * ps=&s1; cout <<"rs1="<<&rs<<" ps1="<<*ps; rs=s2; //_Label 1_ ps=&s2; //_Label 2_ cout <<"rs2="<<&rs<<" ps2="<<*ps; Q: What is the...
繼續閱讀
May
3rd,
2004
最近看到學弟的文章,講到關於抓取畫面的軟體,還有一些雪人遊戲(我想這些是大家上班的良伴~~),在此為大家整理同一款的雪人遊戲(不過有三個版本啦),順便把畫面抓了下來,給各位參考一下,有空來把壞心情打飛ㄅㄟ~~~~~~
打東東遊戲一覽表
[
正常版
](http://meph.eu.org/pinguin.swf)
_
http://meph.eu.org/pinguin.swf_
精緻版
_
http://home.pchome.com.tw/good/pink3158/yetisports1.swf
_
皆大歡喜版
_
_http://www.blueidea.com/articleimg/2004/01/1590/wow.swf
打出去要等他掉下來等好久..一個不小心就打出8971.2了唷~~~
繼續閱讀
April
29th,
2004
<照片:烏來裡春天的一朵小花>
昨天為了研討會忙了一整天,而家中的網路似乎也抗議休息過少似的,就這樣斷線了一天。自從禮拜一得知稿件沒有上ICIM研討會,為了完成老師所要求的,至少上一個研討會才能順利畢業而努力。每天就是不斷的改文章、不斷地找研討會的訊息….。覺得在學校的生活過得有點乏味,也覺得整個學生的最後生涯過的相當的痛苦,每天似乎也把剩餘的學生生涯變成一種等待、等待著離開學校、等待著到社會工作。看著日曆逐漸逼近的論文口試的日子,或許在別人眼中是緊張,但是在我的心中或許有一絲的輕鬆。
當然~很多人都跟我講,到了社會之後,絕對不會比在學校輕鬆,不論是上班的主管管教的態度、或者是加班。但是,或許在我心中對於能早點投入社會是嚮往已久的事情,能夠將自己學習的實際的到職場現實的戰場之中,感到相當的期待所致。也或許是對於現在的學生生涯有點煩悶所致,身為天秤座的我,對於現在日復一日的生活,有點厭倦了~~更討厭被限制著自由的感受…
不過最近看到幾篇網路文章,覺得還不錯~~~希望大家看了也會有相同的感覺~~
>
> **生命中沒有過渡**
>
>
>
> 和一位留德的老師談起老師在德國的留學生活。
老師:「在德國,因為學制還有一些適應的問題,有些人一待就會待上十年才拿
到博士學位。」
我說:「哇!那好久哦。」對於才二十歲的我而言,十年,不就是生命的一半嗎
?
老師笑了笑:「你為什麼會覺得那很『久』呢?」
我說:「等拿到學位回國教書或工作,都已經三、四十歲了呢!」
老師:「就算他不去德國,有一天,他還是會變成『三、四十歲』,不是嗎?」
「是的。」我答道。
老師:「你想透了我這個問題的涵義了嗎?」
我不解的看著老師。
「生命沒有過渡、不能等待,在德國的那十年,也是他生命的一部分啊!」老師
語重心長的說。
「啊!我了解了!」
那一段談話,對我的影響很大,提供了我一個很重要的生活哲學與價值觀。
前一陣子工作很忙,學弟問我:「你要忙到什麼時候呢?」
「我應該要忙到什麼時候?或者說到什麼時候我才該不忙呢?」我反問。
「忙碌也是我生活的一部分,重點應在於,我喜不喜歡這樣的『忙碌』。
如果我喜歡,我的忙碌就應該持續下去,不是嗎?」我補充著。
對我而言,忙碌不是生命的「過渡階段」,而是我最珍貴的生命的一部分。
很多人常會抱怨:「工作太忙,等這陣子忙完後,我一定要如何如何...」
於是一個本屬於生命一部分的珍貴片段,就被定義成一種過渡與等待。
「等著吧!挨著吧!我得咬著牙渡過這個過渡時期!」當這樣的想法浮現,我們
的生命就因此遺落了一部分。
「生命沒有過渡、不能等待。」這時,老師的話就會清晰的浮現在我的耳邊。
所以,我總是很努力的讓自己喜歡自己每一個生命階段,每一個生命過程,因為
那些過程的本身就是生命,不能重來的生命。
繼續閱讀
April
27th,
2004
Vector是STL容器裡面最簡單的一個,但是在資料結構裡面也鮮少有提到,但是在STL裡面卻時常利用這個資料結構。在這裡擺上我今天學習Vector的一些重點,讓大家分享一下。 **引用STLPORT版本 **:stlport4.0在bcb5.5上實做 **引用函示庫 **** **:位置: _您安裝STLPORT的位置stlportvector_ **實際運作函示庫 **:位置: 您安裝STLPORT的位置stlportstl_vector.h Vector是一個線性空間,但是為一個可以變動大小的線性空間,在宣告之後整個空間就像陣列(array)一樣為一個連續的線性空間,亦可以在上面進行類似Array的操作(比如說直接給值 a[i]=5 ; 或是直接顯示值 a[i]),而且Vector還可以隨意插入任何一個位置之中,並且使之後的元素均往後退一個(這個在array之中倒是需要實做上去加強的功能),並且最重要的是在Vector之中,他的位置是可以變動大小的。也就是若你一開始宣告的Vector大小為5,但是當你插入第6個元素的時候,整個Vector會自動變更大小到現在的兩倍(10個)。針對這個功能,所以Vector在使用上變的相當的方便,加上STL中泛型的設計概念使得Vector變得更強大,能解決的問題也就更多。整理Vector的特點如下: Vector特點 線性空間 與陣列操作相同 可以任意插入在任何位置 若是空間不足,將會自動擴大兩倍的空間 在今天的學習筆記之中,我附上一個自己的範例程式碼,方便各位如果要測試程式的時候一個參考依據: #include #include #include using namespace std; int main() { int i; vector iv(2,9); cout «“iv[1]=”«iv[0]; cout «“iv[2]=”«iv[1]«endl; cout «“size=”«iv.size()«endl; cout «“capacity=”«iv.capacity()«endl; cout «”—————————————–”«endl; iv.push_back(1); cout <<"iv[3]="<<iv[1]<<endl; cout <<"size="<<iv.size()<<endl; cout <<"capacity="<<iv.capacity()<<endl; cout <<"-----------------------------------------"<<endl; iv.push_back(2); cout <<"iv[4]="<<iv[1]<<endl; cout <<"size="<<iv.size()<<endl; cout <<"capacity="<<iv.capacity()<<endl; cout <<"-----------------------------------------"<<endl; iv.push_back(3); cout <<"iv[5]="<<iv[1]<<endl; cout <<"size="<<iv.size()<<endl; cout <<"capacity="<<iv.capacity()<<endl; cout <<"-----------------------------------------"<<endl; iv.push_back(4); cout <<"iv[6]="<<iv[1]<<endl; cout <<"size="<<iv.size()<<endl; cout <<"capacity="<<iv.capacity()<<endl; cout <<"-----------------------------------------"<<endl; for (i=0;i<iv.size();++i) cout <<iv[i]<<"--"; cout <<endl; iv.push_back(); iv.push_back(); cout <<"size="<<iv.size()<<endl; cout <<"capacity="<<iv.capacity()<<endl; for (i=0;i<iv.size();++i) cout <<iv[i]<<"--"; cout <<endl; vector::iterator ivite= find(iv.begin(), iv.end(),1); if (ivite) {iv.erase(ivite);} cout <<"-----------------------------------------"<<endl; cout <<"size="<<iv.size()<<endl; cout <<"capacity="<<iv.capacity()<<endl; cout <<*ivite; for (i=0;i<iv.size();++i) cout <<iv[i]<<"--"; cout <<endl; ivite= find(iv.begin(), iv.end(),2); if (ivite) {iv.insert(ivite,3,7);} cout <<"-----------------------------------------"<<endl; cout <<"size="<<iv.size()<<endl; cout <<"capacity="<<iv.capacity()<<endl; for (i=0;i<iv.size();++i) cout <<iv[i]<<"--"; cout <<endl; ivite= find(iv.begin(), iv.end(),7); cout <<iv.begin()<<"**"<<endl; cout <<ivite<<"=="; ivite= find(ivite, iv.end(),7); cout <<ivite<<"=="; iv.clear2();...
繼續閱讀
April
26th,
2004
最近許多BLOG都有這樣大串連的活動,就是讓你拿起手邊的書,將他第23頁打開,找到第五段話,寫在BLOG上面跟大家分享。我一開始看到這個活動的時候,起先也覺得只是一個大家一窩蜂的活動,但是隨著每個人拿起手邊的書寫下相關句子與心得的時候,閱讀的人也正在吸收著相同的知識,可能是很少的話語,卻能讓看的人有不同的吸收。
而活動詳細內容如下:
>
> 第二十三頁的遊戲:
一、找一本離妳最近的書。
二、翻到第二十三頁。
三、找到第五個句子(sentence)。
四、發表到妳的網誌、新聞台或是個人版,並附上這份說明。
(以上來自[微風夕語](http://bone.twbbs.org.tw/index.php)的〈[第二十三頁的遊戲:王惠玲‧她從海上來。](http://bone.twbbs.org.tw/Misc/1082472614.php)〉)
而我翻到手邊的書(11又1/2逆向管理)之中內容如下:
辛特-格吉說:『形成新發現的因素之一,乃是和別人觀察同樣的東西,但有不同的思考』
這句話主要是在講『識相曾似』(Vu ja De):「新角度看舊事物」的一種方式,這一段話主要是講到說,在企業經營時,隨著太多所謂的典範或是成規,反而使得管理者跳不出思考的框架,無法有創新的思維。如果無法跳出新的框架,不妨學習『識相曾似』將就的成規試著用新的觀點去觀察,或許創新也是這樣而來~
跟大家分享一下~~~~希望也能看見各位的~
繼續閱讀
April
21st,
2004
緣起
STL(
Standard Template Library)與泛行程式設計是一個設計程式的概念,將資料容器與演算法加以分開的一個設計程序,不僅僅可以簡化整個設計流程,更可以使程式模組設計好之後,可以獲得更廣泛的應用空間。這麼好的設計方式,其實已經行之有年,記得前幾天去某些科技公司面試的時候,他們不斷的詢問我問知不知道『侯捷』有沒有修過他的課程,後來才知道原來侯捷算是國內的MFC與STL的大師,只要有修過他開的課程,基本上的程式設計能力就有一定的能力。於是我修了STL與泛型程式設計。
在修的過程中,與我之前去接CASE的概念完全不同,雖然我已經相當的熟練物件導向的設計方式,與一些簡單的Template概念,但是卻沒有繼續的研讀一些軟體設計的方法論。所以聽到這些概念的時候,其實整個人是很感動的,在修了幾次的課程之後,於是開始回去架設可以執行STL的執行平台。
所以這篇文章主要是一個架設起可以執行STL的平台,裡面包括(1).STL架設在BCB5.0上的步驟(詳細請參照該篇文章),(2).利用UltraEdit建立一個可以Compiler的空間
架設STL的執行平台
雖然STL的設計概念非常的好,但是若你想要執行實做在你手邊有的IDE介面似乎是沒有的,所以我找了一些現有的一些資料裡面。關於STL的開發函示庫中,裡面以SGI的STL算是不錯,而侯捷老師開關於這些課程,也都是再追蹤SGI的STL裡面的源碼(source
code)。當你無法直接使用這些函示庫的時候,可以使用STLPORT這個網站所提供的套件去將STL移植到你常使用的IDE介面(比如說VC++,BCB,BC++….)但是有那麼簡單嗎?如果能像STLPORT裡面所提的Have
Fun!那也就好了~~我在GCC上面一直無法PORT成功。所以察看侯捷所寫的『STL源碼剖析』後面有位作者孟岩所寫的文章,是關於使用STLPORT在BCB與VC++上。
根據所以以下的操作先根據這樣的步驟,下載好BCB的compiler,並且可以去這裡下載STLPORT4.0的版本,依照該上面提到關於BCB5的部分,即可架設完整,裡面可能會遇到的是,MAKE的時候若是MAKE的時候,出現了Page
Table 的Size不夠大,即可修改 Makefile將第16行中的
LINK = tlib /P128 ===> LINK = tlib /P256 即可。
使用UltraEdit去建立編輯,執行平台
但是全部的編輯完成後,其實相當的麻煩,也就是每次編輯的時候需要透過DOS模式下COMMAND的方式去編輯軟體。UltraEdit是一個大家常用來撰寫原始碼、或是做些簡單的文書處理用的軟體。但是其實他可以搭配著Compiler去直接當成一個有簡單的IDE介面的CODE軟體。只要你WINDOW的目錄設定好(PATH裡面有包含到COMPILER的執行檔,可直接在COMMAND
LINE測試一次,即可知道)就可以利用UltraEdit去編譯程式。方法如下(以下說明針對英文版,中文請將相關位置找到即可):
首先先到 [Advanced]—>[Tool Configuration],即可看到一個編輯畫面如下:
先設定Compiler的部分:
根據這個畫面,將[Command Line]填入:” bcc32 %F”
指的就是可以利用bcc32 這個compiler去編譯這個檔案。而將[Working
Directory]設定到 “%P”
也就是編譯出來的中間檔放在該目錄之下。[Menu Item Name]裡面就是該TOOL的名稱,就隨便你填入你想要的名稱即可。並且記得將
[Show DOS Box]與 [Capture Output]兩個選項打勾,即可將這個操作的輸出結果抓取到另外一個檔案。
設定好之後,在主畫面中的[Advanced]下就會出現一個新的選項(快速鍵是
Shift+CTL+某個數字鍵),可拿著某個STL程式作一個簡單的測試。
接著設定執行程式的部分:
一樣到剛才那個畫面根據這個畫面,將[Command Line]填入:”%P%N.exe”
指的就是可以利用執行這個檔案編譯好的執行檔。而將[Working
Directory]也設定 “%P” 。[Menu Item Name]裡面就是該TOOL的名稱,一樣你填入你想要的名稱即可。記得也需要將並且記得將
[Show DOS Box]與 [Capture Output]兩個選項打勾,才能由畫面看到您的執行結果。
若要測試這樣的程式是否成功,可以利用UltraEdit開啟該CPP檔案,按下(CTL+Shift+0)『假設你設定COMPILER是第一個),就會出現一個編譯畫面,並且會出現一個新的編輯文字方塊,裡面出現相關的錯誤訊息或是正確訊息。要執行的話按下(CTL+Shift+1),就會看到其相關的執行結果在另外一個編輯文字的檔案之中。
繼續閱讀