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

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 閱讀(2049) | 評論 (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 閱讀(2395) | 評論 (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 閱讀(1990) | 評論 (2)編輯 收藏

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

試過以下一些方法:

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

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

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

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

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

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

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

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

posted @ 2009-01-04 11:04 Fox 閱讀(14823) | 評論 (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 閱讀(2053) | 評論 (4)編輯 收藏

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

……

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

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

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

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

閱讀全文

posted @ 2008-11-19 23:37 Fox 閱讀(2015) | 評論 (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 閱讀(1948) | 評論 (3)編輯 收藏

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

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

posted @ 2008-11-10 11:17 Fox 閱讀(927) | 評論 (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 閱讀(2646) | 評論 (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 閱讀(2143) | 評論 (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>
            亚洲国产精品成人精品| 久久国产精品高清| 亚洲福利专区| 欧美国产丝袜视频| 一本大道久久精品懂色aⅴ| 欧美成人影音| 欧美激情1区2区3区| 亚洲美女黄网| 亚洲视屏在线播放| 国产丝袜美腿一区二区三区| 久久婷婷综合激情| 免费影视亚洲| 午夜精品免费| 久久久久久一区| 亚洲精品一区在线观看| 一本色道久久综合亚洲精品按摩 | 免费成人黄色| 亚洲视频国产视频| 欧美一区二区三区电影在线观看| 精品盗摄一区二区三区| 亚洲片区在线| 国产精品国产三级国产普通话99| 久久精品国产清高在天天线| 欧美jjzz| 欧美影院视频| 欧美精品v日韩精品v国产精品| 亚洲欧美亚洲| 欧美成人蜜桃| 久久精品日产第一区二区三区| 女女同性女同一区二区三区91| 一区二区三区四区五区在线| 在线亚洲伦理| 亚洲激情在线观看视频免费| 亚洲视频在线观看视频| 亚洲二区视频| 亚欧美中日韩视频| 在线一区二区三区四区| 久久久99国产精品免费| 亚洲欧美激情四射在线日 | 美玉足脚交一区二区三区图片| 国产精品99久久久久久人| 久久久久se| 午夜精品在线看| 欧美精品 国产精品| 久久精品国产第一区二区三区| 欧美另类videos死尸| 欧美jizzhd精品欧美巨大免费| 国产精品一二三| 亚洲免费av电影| 亚洲精品自在久久| 狂野欧美性猛交xxxx巴西| 欧美呦呦网站| 国产精品日韩欧美| 一区二区三欧美| 99视频在线观看一区三区| 久久综合狠狠综合久久激情| 久久久久五月天| 国产一区二区三区的电影| 亚洲新中文字幕| 亚洲资源av| 国产精品久久久久av免费| 9国产精品视频| 亚洲神马久久| 国产精品久久久久久久久免费樱桃 | 国产精品高清免费在线观看| 日韩午夜电影在线观看| 夜夜嗨av一区二区三区中文字幕 | 国产精品激情| 亚洲一级在线观看| 亚洲欧美清纯在线制服| 国产精品男女猛烈高潮激情| 中日韩在线视频| 欧美一级片在线播放| 国产女主播一区二区| 欧美影院一区| 老司机凹凸av亚洲导航| 亚洲国产精品va在线看黑人| 免费不卡视频| 99精品国产热久久91蜜凸| 亚洲一区制服诱惑| 国产乱码精品1区2区3区| 午夜久久久久久| 欧美不卡一区| 制服丝袜激情欧洲亚洲| 国产精品麻豆va在线播放| 亚洲欧美综合v| 欧美mv日韩mv亚洲| 在线综合+亚洲+欧美中文字幕| 国产精品大片| 久久都是精品| 亚洲精品一区在线观看香蕉| 午夜精品久久久| 伊人久久大香线蕉综合热线| 欧美黄色小视频| 亚洲欧美成人一区二区在线电影 | 亚洲午夜日本在线观看| 国产精品亚洲综合天堂夜夜| 久久久久久精| 一区二区电影免费在线观看| 久久精品亚洲一区二区三区浴池| 亚洲黄色三级| 国产精品亚洲产品| 欧美成年人视频| 亚洲女人天堂成人av在线| 欧美大片一区二区三区| 亚洲女同精品视频| 最新日韩中文字幕| 国产三级欧美三级| 欧美区在线播放| 久久久精品国产免大香伊| 日韩视频免费观看高清在线视频 | 日韩视频不卡| 国内成人精品视频| 国产精品海角社区在线观看| 美女精品在线观看| 欧美在线视频观看| 一区二区三区精品国产| 亚洲第一福利视频| 久久久久久高潮国产精品视| 宅男噜噜噜66一区二区| 亚洲国产精品高清久久久| 国产麻豆成人精品| 欧美日韩在线视频观看| 欧美aa国产视频| 久久久久一本一区二区青青蜜月| 宅男66日本亚洲欧美视频| 亚洲国产高清一区| 美女主播一区| 久久亚洲欧美| 久久久久久久高潮| 欧美在线关看| 欧美一区二区在线免费观看| 亚洲夜间福利| 亚洲你懂的在线视频| 中文av一区特黄| 在线亚洲一区二区| 一区二区三区视频在线观看| 亚洲精品网站在线播放gif| 一区精品久久| 亚洲第一在线视频| 亚洲福利av| 亚洲欧洲综合| 亚洲国产综合在线| 亚洲精品国产拍免费91在线| 最近中文字幕日韩精品 | 中国成人亚色综合网站| 99re8这里有精品热视频免费| 亚洲黄色视屏| 在线亚洲美日韩| 亚洲在线成人精品| 亚洲欧美日韩爽爽影院| 午夜精品久久久久久久久久久久 | 亚洲电影毛片| 亚洲国产精品精华液2区45| 亚洲黄色成人| 一本色道久久| 午夜欧美电影在线观看| 欧美在线一区二区| 免费观看久久久4p| 亚洲黄色有码视频| 日韩视频一区二区三区在线播放免费观看| 91久久久久久久久| 在线亚洲伦理| 欧美在线影院在线视频| 猫咪成人在线观看| 欧美色道久久88综合亚洲精品| 国产精品国产a| 精品不卡在线| 亚洲深爱激情| 久久午夜精品一区二区| 亚洲国产精品123| 亚洲视频精品| 久久视频一区| 国产精品久久久久国产a级| 黄色在线一区| 一二三区精品| 老牛嫩草一区二区三区日本| 亚洲美女毛片| 久久久99久久精品女同性| 欧美日韩成人综合天天影院| 国产日韩在线播放| 99re热这里只有精品视频| 欧美在线播放一区| 亚洲精品日韩一| 欧美在线观看你懂的| 欧美日韩精品一区二区天天拍小说 | 中文无字幕一区二区三区| 欧美一区二区三区免费观看| 男同欧美伦乱| 韩日精品中文字幕| 亚洲一区二区三区视频播放| 美女脱光内衣内裤视频久久影院 | 亚洲国产精品一区二区第四页av| 一区二区三区精品| 免费不卡亚洲欧美| 狠狠色狠狠色综合日日91app| 一区二区三区久久| 欧美成年网站| 久久精品免费播放| 国产日韩精品久久久|