青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Creative Commons License
本Blog采用 知識共享署名-非商業性使用-禁止演繹 3.0 Unported許可協議 進行許可。 —— Fox <游戲人生>

游戲人生

游戲人生 != ( 人生 == 游戲 )
站點遷移至:http://www.yulefox.com。請訂閱本博的朋友將RSS修改為http://feeds.feedburner.com/yulefox
posts - 62, comments - 508, trackbacks - 0, articles - 7

本文同步自游戲人生

現在有些年輕人的心態比較浮躁,大致總結以下『四點表現』:

1. 眼高過頂;

2. 垂手過膝;

3. 期望值高;

4. 積極性低。

深層次的客觀原因大致是『四個沒有』:

1. 沒有吃過苦;

2. 沒有干過活;

3. 沒有說過話;

4. 沒有當過家。

一般都具有『四個特征』:

1. 獨生子女;

2. 畢業新人;

3. 沉默寡言;

4. 半瓶開水。

---------------------------------

1. 你想要什么?

參考:一個有影響力的人。(@李開復

2. 那是否是你想要的?

參考:你的眼光有多遠,決定了你能走多遠。(@Fox

3. 你需要做什么?

參考:高筑墻,廣積糧,緩稱王。(朱元璋)

4. 你還需要做什么?

參考:平和的心態,進取的態度,堅定的目標,不懈的努力。(@Fox

5. 你是否做到了?

參考:沒有,但我一直在努力。(@Fox

posted @ 2009-08-17 16:31 Fox 閱讀(2047) | 評論 (4)編輯 收藏

本文同步自游戲人生

-----------------------讀書-----------------------

想讀《UNIX Network Programming》很久了,只是這種愿望一直沒有特別強烈。用的筆記本換了之后強迫自己只是裝了cygwin,沒有安裝VS,平時寫些代碼就只能在cygwin下用gcc了。最近對UNIX環境編程和網絡基礎比較感興趣,于是讀這本書終于提上了議事日程,可是大多數書店都沒有這本書了。

工作之后,對于自己喜歡的書,就很少會去看電子版,覺得還是捧卷在手的感覺舒服一些,想怎么看怎么看,享受拿筆在上面寫寫畫畫的感覺。因此對于想讀但買不到的書,第一反應是等待。在翻電腦上面一些資料的時候才反應過來我已經很久沒有down過電子書了,結果就從網上down了很多想讀(豆瓣)的書,forgive me, Richard Stevens and anybody.

-----------------------動手-----------------------

之前只是在Windows下用過ACE,因為ACE提供了VS各種版本的解決方案,編譯過程比較簡單。這次放在cygwin下編譯的時候,因為環境變量設置問題,并不是非常順利,參照了源碼目錄下的ACE-INSTALL.html的描述才將問題解決。現在將過程給出來,僅供google到這里的同學參考:

友情提示:我目前對于cygwin和UNIX類系統的了解停留在知其然(還是在google之后)的水平。

1. 增加環境變量

o 修改/etc/profile文件讀寫屬性:

$ chmod 777 /etc/profile

cygwin下的環境變量可以在該文件中配置,由于該文件默認具有寫保護屬性,因此需要修改使之可寫,修改完成之后應該記得對其進行寫保護:

$ chmod 555 /etc/profile

o 打開profile文件(本人使用emacs進行編輯,讀者也可以使用vi、vim等,在此不再贅述):

$ emacs /etc/profile

o 往profile中修改和添加環境變量:

將以下五行添加到文件中,ACE_ROOT為ACE源碼目錄,本文用到的目錄是/usr/share/ace:

ACE_ROOT=/usr/share/ace
export ACE_ROOT

LD_LIBRARY_PATH=$ACE_ROOT/ace:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH

# export PATH=$ACE_ROOT/ace:$PATH

這個操作等同于在VS下修改庫文件目錄,我是直接修改了PATH變量的:

PATH=/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:$ACE_ROOT/ace:$PATH

o 執行/etc/profile

$ /etc/profile

執行修改后有可能需要重啟cygwin,可使用下面的命令查看ACE_ROOT設置是否正確:

$ echo $ACE_ROOT

2. 創建若干文件:

o 在$ACE_ROOT/ace 文件夾中創建名為 config.h 的文件,并加入以下內容后保存關閉:

#include "ace/config-cygwin32.h"

o 在$ACE_ROOT/include/makeinclude 文件夾中創建名為 platform_macros.GNU 的文件,并加入以下內容保存關閉:

include $(ACE_ROOT)/include/makeinclude/platform_cygwin32.GNU

3. 編譯ACE:

$ cd $ACE_ROOT/ace
$ make

大概會花掉十幾分鐘時間吧。

4. 測試ACE:

$ cd $ACE_ROOT/tests
$ make

大概又會花掉十幾分鐘時間吧。

接下來就可以使用perl腳本完成所有測試,我沒有使用過perl,臨時安裝了一下。

$ perl run_test.pl

這個腳本在我一位同事的機器上跑了很久(十幾分鐘 or 幾十分鐘?),不幸的是,Windows竟然拋出了一個內存讀寫錯誤,更加不幸的是,我現在沒有能力去確定。

結果周末后面的時間又花在熟悉EMacs上了,還沒有看ACE的代碼,只有下周才能看了。

-----------------------結束-----------------------

這種小學生的東西拿出來講確實是很難為情的,然而,于我現在卻又算是極大的一個收獲。真等我熟悉了其中的很多內容,又未必會再有耐心說了。所以還是記錄一下,既是鼓勵,也是督促。

晚上睡覺之前翻了一下《ACE程序員指南:網絡與系統編程的實用設計模式》,發現里面2.3節也講到了怎么安裝。

posted @ 2009-08-17 09:52 Fox 閱讀(2392) | 評論 (2)編輯 收藏

在一個稍微上規模(怎么也有幾十個類吧)的C++程序中,繼承和組合的使用比比皆是。雖然GoF提出了OOD的兩個原則,第二個謂之『優先使用對象組合,而不是繼承』,但這絕不意味著不使用繼承,正因如此,第一個原則才是『針對接口編程,而不是針對實現編程』,這兩個原則清楚的表達了軟件工程中『低耦合』的思想。

模板方法(Template Method)的意圖正是『定義一個操作中的算法的框架,而將一些步驟延遲到子類中』。

注意,這里有個關鍵詞『一些』,既然是『一些』,就意味著父類的的接口中已經實現了『一些』步驟,否則,父類便只提供了抽象接口。

這一情況是我們在編碼時時常遇到的,父類實現了部分算法中的通用行為,子類根據自己的需求可對其進行必要擴充。

class CBase
{
public:
    // Default done
    virtual void Operation(void)
    {
        ...
    }
};

class CDerive :
    public CBase
{
public:
    virtual void Operation(void)
    {
        switch( ... )
        {
        case A: ...
        case B: ...
        case c: ...
        default:
            CBase::Operation();
        }
    }
};

因為對父類的不了解或是對子類的太了解,你以為CDerive::Operation()做了足夠多,不需要CBase::Operation(),但實際上仍然需要的情況總在發生。

換一種方式,把Operation()作為模板方法,把DoOperation()作為可擴展的接口提供給子類實現:

class CBase
{
public:
    void SetFocus(void) { ... }
    void ResetFocus(void) { ... }
    // Call by user
    void Operation(void)
    {
        SetFocus();
        DoOperation();
        ResetFocus();
    }
    // Default done
    virtual void DoOperation(void) = 0;
};

class CDerive :
    public CBase
{
public:
    virtual void DoOperation(void)
    {
        ...
    }
};

模板方法只是提供了一個簡單的封裝技巧,當然不是所有的虛接口都這么寫:)。


更多內容請移步我的個人主頁

posted @ 2009-02-11 01:46 Fox 閱讀(1987) | 評論 (2)編輯 收藏

VS2005下使用VC,部分斷點無效,顯示『當前不會命中斷點。還沒有為該文檔加載任何符號』。

試過以下一些方法:

1、無效斷點所在的項目和啟動項目的設置:項目->屬性->配置屬性->C/C++->常規->調試信息格式,這里不能為『禁用』;

2、項目->屬性->配置屬性->鏈接器->調試->生成調試信息,這里設為『是』;

3、C/C++->優化->優化選擇『禁用』;

4、刪除解決方案下的.ncb文件;

5、工具->選項->調試->『要求源文件與原始版本完成匹配』去掉勾;

6、最后在上述設置的情況下,重新編譯整個解決方案;

7、回過頭來,發現原來是一段不會被執行到的代碼……

看來,除了VS本身會有bug,自己的代碼還是要多檢查一下。

posted @ 2009-01-04 11:04 Fox 閱讀(14820) | 評論 (26)編輯 收藏

本文最早發布于我的個人主頁

一般的RPG游戲中,玩家角色、NPC、物品、場景等一般都具有為數眾多的各種屬性,使用C++編碼時,很容易考慮設計成為大量的成員變量和相應的存取函數:

class CObject
{
public:
    long GetAttrA(void) const { return m_lAttrA; }
    void SetAttrA(long lVal) { m_lAttrA = lVal; }
    long GetAttrB(void) const { return m_lAttrB; }
    void SetAttrB(long lVal) { m_lAttrB = lVal; }
    ...
    long GetAttrN(void) const { return m_lAttrN; }
    void SetAttrN(long lVal) { m_lAttrN = lVal; }

private:
    long m_lAttrA;
    long m_lAttrB;
    ...
    long m_lAttrN;
};

乍一看,非常清晰明了。在一個稍顯復雜的項目中,想記住、甚至找到每一個屬性是非常難的,況且除了屬性,還有大量的邏輯處理,甚至是不同項目間的數據交互,比如將屬性的數據庫存取。這么做的缺點大致有這么幾點:

1. 屬性沒有明確分門別類,尤其在多人協作、多模塊編寫時,往往上面一批、下面一批,甚至有重復屬性、廢棄屬性,難于管理和把握;

2. 對于數據庫存取,需要寫單獨的存取接口,而且一旦屬性有增減、修改,存取接口要隨之修改;

3. 通過接口函數進行簡單的屬性存取面臨大量的堆棧保存,即使使用內聯或宏定義,也是治標不治本。

針對上述問題,我的思路也比較簡單:對基本類型數據進行二次封裝。

struct tagDBAttrs
{
    long lA;
    long lB;
    ...
    long lN;
};

class CObject
{
public:
    const tagDBAttrs& GetDBAttrs(void) const { return m_DBAttrs; }
    void SetDBAttrs(const tagDBAttrs& rDBAttrs)
    {
        memcpy(&m_DBAttrs, rDBAttrs, sizeof(m_DBAttrs));
    }

private:
    tagDBAttrs    m_DBAttrs;
    string        m_strA;
    CObject*      m_pObjB;
    CShape*       m_pShapeC;
    ...
};
 

之所以提到基本類型數據,主要緣于基本類型構成的結構可以通過sizeof運算符直接確定,而像類對象等組合類型,其深拷貝、賦值、操作及賦值等邏輯則較為復雜,一般無法統一處理。

以上面的tagDBAttrs為例,對于基本類型數據處理具有非常大的優勢,尤其在數據整體存取時,此外,增減基本類型屬性也比較簡單,而且不需要重寫Get/Set接口,同時方便了對屬性的分門別類處理。


此處順便談談關于開發中的一些雜的體會。

對于工作不久的同學而言,拿到一個任務有可能出現以下兩種情況:

1. 以快速開發為重,前期進展較快,在小型模塊開發中順風順水,但在面對復雜任務時,因為對前期設計重視不足,后期會不斷調整代碼,甚至在基本功能開發結束后,因為邏輯架構問題,導致bug隱患較多較深,容易陷入泥沼,痛苦掙扎;

2. 隨時隨處追求代碼結構的優美和執行效率的優化,精益求精,往往在前期設計上花費過多的心思,以達到較合理的邏輯結構,甚至拖延整個項目的開發進度,這種同學一般說來,代碼質量較高,后期bug較少。

其實,上面說的就是我自己,我剛開始工作的時候,上面給我一個編寫獨立工具的任務,當時急于表現,缺乏項目實戰經驗,為編碼而編碼,邏輯結構不注重擴展性,設計不合理,在進行到后期時,面對出現的新需求無法應對,導致最后推到重來。

后來,慢慢接受了注重前期設計的觀念,更因為自己的完美情結和代碼潔癖,不僅經常調整自己編碼中不優美的片段,甚至越俎代庖去修改其他同事的代碼,追求處處的高效,耗費大量時間精力,難以自拔。

在任何一個項目中,都有輕重主次之分,也就是所謂的『8020原則』,關于『8020原則』怎么理解都行,我的理解就是,每個項目中的效率瓶頸是20%的核心代碼,80%的時間和工作重心應該放到這20%的核心代碼上。放到一個小的模塊中也是這樣,應該確定工作重心,在開發進度的限制下,對核心代碼精益求精,對非效率瓶頸可以適當減少側重。

對于新人,最難的就是從整體的高度確定20%的工作重心,這主要依賴于自身素質的提高和開發經驗的積累。而對需求深入細致的分析和對邏輯精益求精的設計本身可以訓練一個人分析問題、解決問題的能力。

總結一下的話,也正是我們項目組歷來所倡導和堅持的:

1. 精益求精;

2. 細節決定成敗,態度制約能力。

posted @ 2008-12-28 02:44 Fox 閱讀(2049) | 評論 (4)編輯 收藏

不知道Singleton算不算用的最多的,平時用的時候,往往都是直接敲下面一段:

……

不是不想改,就是懶,敲多了已經不覺得這么寫多浪費時間了,按大家的說法,這樣寫至少有這么幾個缺點:

1. 必須在程序結束前手動釋放,這不僅是RP問題,如果你借了內存不主動還,說明你RP差,但被別人搞丟了(宕機)導致你還不上,說明別人RP差?所以,這還是個問題;

2. 線程同步問題,如果Singleton實例跨線程使用,上例不安全,在Initial和Release時加鎖可以解決;

3. 最大的問題:不能重用。

閱讀全文

posted @ 2008-11-19 23:37 Fox 閱讀(2012) | 評論 (4)編輯 收藏

State模式對應到C++的多態特性。

State模式適用較廣,這兒給出比較常見易懂的三種情況:

1. 當怪物在面對不同職業和特性的玩家時對應不同的AI處理和技能釋放:

CSkill* pAttackSkill;

if( pPlayer->MagicImmune() ) pAttackSkill = SomePhysicalAttackSkill;

else if( pPlayer->PhysicalImmune() ) pAttackSkill = SomeMagicAttackSkill;

...

pAttackSkill->Begin();

...

或者使用分支結構:

CSkill* pAttackSkill;

switch( pPlayer->GetOccupation() )

{

  case WARRIOR: pAttackSkill = SomeLongRangeSkill; break;

  case MAGICIAN: pAttackSkill = SomeForceSkill; break;

  case NIMROD: pAttackSkill = SomeMagicSkill; break;

...

}

pAttackSkill->Begin();

...

閱讀全文

posted @ 2008-11-19 00:57 Fox 閱讀(1946) | 評論 (3)編輯 收藏

因站點遷移。請訂閱本博的朋友將RSS修改為http://feeds.feedburner.com/yulefox

個人主頁地址:http://www.yulefox.com

posted @ 2008-11-10 11:17 Fox 閱讀(925) | 評論 (4)編輯 收藏

之所以要寫這個東西,是因為由最近發生的騰訊競業禁止案發散思維了。借機反思一下員工對企業認同的源與流

之所以要寫Google,Google是我的夢,正像我當初在一份簡歷中寫道的:

Game is my interest, so I like developing my game; Google is my life, so I love enjoying my life.

我的工作、學習、生活離不開Google:My indispensable tools: Gmail, G.cn, Code, iGoogle, Picasa, Reader, Talk, Notebook, Map, Calendar, Documents, Google Pinyin, Chrome, etc.

不煽情了,坊間流傳的最多的就是富有傳奇色彩Google的工作環境和待遇,下圖可以說明很多問題了:

閱讀全文……

posted @ 2008-11-10 00:13 Fox 閱讀(2644) | 評論 (9)編輯 收藏

現在每天的工作主要是為了滿足項目需求和進度而不停的思考、敲鍵盤。有時候也確實需要抽點時間來思考思考那些看上去用不到的一些東西,又想起了Fibonacci數

之前曾經三次寫過Fibonacci數:2007年4月的我的Fibonacci數列,2007年12月的也說說級數求和(1+2+3…N)和其他,2008年5月的動態規劃算法,但給出的都不是非常優的算法。

上次回去把同學借的《編程之美》偷過來還沒怎么看,晚上翻了一下,看到有講Fibonacci數,想起來的The Art of Computer Programming Vol.1也講過,覺得有必要對Fibonacci數做個了斷。

誠如在The Art of Computer Programming Vol.1所述,是中世紀以來歐洲最偉大的數學家,他關于al-Khwarizmi的研究催生了算法(algorithm)一詞。

閱讀全文

看到這些,我又激動了,數學之美,不正是美在這些地方嗎?我們不是要做數學家,但這并不妨礙我們站在門口向里張望……

posted @ 2008-11-06 00:34 Fox 閱讀(2140) | 評論 (2)編輯 收藏

僅列出標題
共7頁: 1 2 3 4 5 6 7 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            日韩视频在线观看| 亚洲精品网站在线播放gif| 亚洲一区视频在线| 亚洲乱码国产乱码精品精可以看 | 久久久水蜜桃av免费网站| 欧美天堂亚洲电影院在线观看| 欧美二区在线看| 欧美精品1区2区| 欧美成人情趣视频| 欧美福利一区二区三区| 欧美激情一区二区在线| 欧美日韩国产不卡在线看| 欧美无砖砖区免费| 国内精品久久久久久 | 农村妇女精品| 欧美日韩精品一区视频 | 日韩视频在线一区| 亚洲男人的天堂在线| 久久精品九九| 国产精品欧美精品| 亚洲国产精品成人精品| 欧美一区二区三区男人的天堂| 久久se精品一区精品二区| 久久久噜噜噜久久久| 欧美日本在线一区| 一区免费观看| 亚洲欧美成人| 日韩一级片网址| 米奇777超碰欧美日韩亚洲| 国产精品二区在线| 在线一区亚洲| 亚洲高清一区二| 久久国产99| 国产欧亚日韩视频| 亚洲欧美三级伦理| 日韩视频一区二区三区在线播放| 久久久久99精品国产片| 国产亚洲a∨片在线观看| 亚洲视频在线观看网站| 亚洲成色777777女色窝| 美女尤物久久精品| 91久久精品日日躁夜夜躁国产| 美女主播一区| 美女主播精品视频一二三四| 欲色影视综合吧| 亚洲国产精品第一区二区三区| 欧美亚洲一区二区三区| 黄色另类av| 欧美二区不卡| 欧美日韩理论| 香蕉成人久久| 你懂的一区二区| 亚洲一级网站| 久久久久久久久久码影片| 日韩视频在线免费| 亚洲欧美日韩精品久久久久| 99精品久久免费看蜜臀剧情介绍| 欧美日韩精品系列| 久久久噜噜噜| 欧美精品v国产精品v日韩精品| 亚洲影院免费观看| 久久亚洲图片| 亚洲欧美日韩另类| 欧美第十八页| 免费欧美电影| 亚洲福利视频三区| 国产精品美女一区二区| 亚洲精品一区二区三区99| 国产亚洲va综合人人澡精品| 99精品免费网| 最新国产乱人伦偷精品免费网站| 午夜宅男欧美| 久久国产主播精品| 国产免费一区二区三区香蕉精| 亚洲国产欧美另类丝袜| 在线观看欧美亚洲| 久久国产成人| 欧美成人激情在线| 亚洲成色精品| 欧美精品自拍偷拍动漫精品| 欧美成人在线免费观看| 亚洲精品视频在线观看网站 | 老司机一区二区三区| 国产乱码精品| 久久精品女人的天堂av| 亚洲第一精品夜夜躁人人躁| 亚洲人在线视频| 国产精品久久久久天堂| 一区二区毛片| 久久riav二区三区| 在线精品高清中文字幕| 欧美日韩亚洲一区三区| 亚洲无限av看| 精品电影在线观看| 中文高清一区| 亚洲国产欧美日韩| 国产精品久久久久久亚洲调教| 欧美一区二粉嫩精品国产一线天| 久久久www成人免费毛片麻豆| 亚洲免费av片| 在线成人小视频| 国产精品成人va在线观看| 欧美在线观看视频在线 | 欧美成人影音| 久久九九热免费视频| 亚洲在线免费视频| aa级大片欧美三级| 亚洲国产精品久久精品怡红院| 国产精品久久久久久久久久久久久久 | 一区二区三区高清不卡| 国内精品久久久久久久影视蜜臀| 欧美日韩国产成人| 欧美经典一区二区三区| 久久人人97超碰国产公开结果 | 日韩午夜三级在线| 亚洲国产精品国自产拍av秋霞| 欧美一区二区黄色| 欧美中文字幕在线播放| 亚洲欧美日韩国产一区| 亚洲国产一区二区精品专区| 韩国在线视频一区| 狠狠久久亚洲欧美| 精品1区2区3区4区| 欧美一区二区高清在线观看| 亚洲天堂久久| 香蕉av777xxx色综合一区| 久久九九免费视频| 欧美/亚洲一区| 国产精品毛片大码女人| 国产伦精品一区二区三区高清| 国产欧美精品在线| 伊大人香蕉综合8在线视| 亚洲高清资源| 午夜精品视频在线观看| 久久免费的精品国产v∧| 牛夜精品久久久久久久99黑人| 欧美.www| 篠田优中文在线播放第一区| 久久久久久国产精品一区| 欧美日韩精品一区视频 | 久热精品视频在线免费观看| 欧美mv日韩mv国产网站| 国产精品久久久久久久久免费樱桃 | 国产精品区一区二区三| 亚洲激情视频| 欧美一区二区三区在线看| 亚洲精品网站在线播放gif| 久久精品在线视频| 欧美性大战久久久久久久| 亚洲国产另类精品专区| 欧美大片一区| 久久尤物电影视频在线观看| 国产一区久久久| 久久不射2019中文字幕| 亚洲私人影吧| 国产日韩欧美二区| 久久久www成人免费毛片麻豆| 久久国产视频网| 亚洲激情成人网| 午夜在线精品偷拍| 久久精品青青大伊人av| 国内精品福利| 久久精品二区| 亚洲国产精品小视频| 亚洲区一区二| 欧美日韩国产三区| 午夜精品在线| 男人的天堂亚洲| 亚洲深夜影院| 激情欧美一区二区三区| 欧美91福利在线观看| 夜夜嗨av一区二区三区网站四季av | 欧美在线视频观看免费网站| 欧美成ee人免费视频| 日韩午夜免费| 国产美女精品视频免费观看| 麻豆freexxxx性91精品| 一区二区欧美国产| 男女av一区三区二区色多| 亚洲视频你懂的| 激情久久五月| 欧美性一区二区| 美女亚洲精品| 亚洲男人av电影| 亚洲欧洲日产国产综合网| 久久久国产91| 亚洲免费在线看| 亚洲精品在线一区二区| 国产亚洲电影| 国产精品h在线观看| 麻豆成人精品| 久久www成人_看片免费不卡| 宅男在线国产精品| 亚洲精品偷拍| 欧美aa国产视频| 久久免费高清| 久久精品一区二区三区不卡| 亚洲欧美日韩专区| 亚洲一二三四区| 亚洲最新色图|