1. 軟件版本階段說明
* Alpha版: 此版本表示該軟件在此階段主要是以實現軟件功能為主,通常只在軟件開發者內部交流,一般而言,該版本軟件的Bug較多,需要繼續修改。
* Beta版: 該版本相對于α版已有了很大的改進,消除了嚴重的錯誤,但還是存在著一些缺陷,需要經過多次測試來進一步消除,此版本主要的修改對像是軟件的UI。
* RC版: 該版本已經相當成熟了,基本上不存在導致錯誤的BUG,與即將發行的正式版相差無幾。
* Release版: 該版本意味“最終版本”,在前面版本的一系列測試版之后,終歸會有一個正式版本,是最終交付用戶使用的一個版本。該版本有時也稱為標準版。一般情況下,Release不會以單詞形式出現在軟件封面上,取而代之的是符號(R)。
2. 版本命名規范
軟件版本號由四部分組成,
第一個1為主版本號,第二個1為子版本號,第三個1為階段版本號,第四部分為日期版本號加希臘字母版本號,
希臘字母版本號共有5種,分別為:base、alpha、beta、RC、release。
例如:1.1.1.051021_beta。
3. 版本號定修改規則
* 主版本號(1):當功能模塊有較大的變動,比如增加多個模塊或者整體架構發生變化。此版本號由項目決定是否修改。
* 子版本號(1):當功能有一定的增加或變化,比如增加了對權限控制、增加自定義視圖等功能。此版本號由項目決定是否修改。
* 階段版本號(1):一般是 Bug 修復或是一些小的變動,要經常發布修訂版,時間間隔不限,修復一個嚴重的bug即可發布一個修訂版。此版本號由項目經理決定是否修改。
* 日期版本號(051021):用于記錄修改項目的當前日期,每天對項目的修改都需要更改日期版本號。此版本號由開發人員決定是否修改。
* 希臘字母版本號(beta):此版本號用于標注當前版本的軟件處于哪個開發階段,當軟件進入到另一個階段時需要修改此版本號。此版本號由項目決定是否修改。
4. 文件命名規范
文件名稱由四部分組成:
第一部分為項目名稱,第二部分為文件的描述,第三部分為當前軟件的版本號,第四部分為文件階段標識加文件后綴,
例如:項目外包平臺測試報告1.1.1.051021_beta_b.xls,此文件為項目外包平臺的測試報告文檔,版本號為:1.1.1.051021_beta。
如果是同一版本同一階段的文件修改過兩次以上,則在階段標識后面加以數字標識,每次修改數字加1,
項目外包平臺測試報告1.1.1.051021_beta_b1.xls。
當有多人同時提交同一份文件時,可以在階段標識的后面加入人名或縮寫來區別,
例如:項目外包平臺測試報告 1.1.1.051021_beta_b_LiuQi.xls。
當此文件再次提交時也可以在人名或人名縮寫的后面加入序號來區別,
例如:項目外包平臺測試報告1.1.1.051021_beta_b_LiuQi2.xls。
5. 版本號的階段標識
軟件的每個版本中包括11個階段,詳細階段描述如下:
階段名稱 階段標識
需求控制 a
設計階段 b
編碼階段 c
單元測試 d
單元測試修改 e
集成測試 f
集成測試修改 g
系統測試 h
系統測試修改 i
驗收測試 j
驗收測試修改 k
VC2005中
首先打開 C/C++-輸出文件-匯編輸出-Assembly,Machine code, and source
然后打開 鏈接器-調試-生成映射文件
“非法操作”對話框出現時,記錄下產生崩潰的地址
在Map文件 Rva+Base 中找到與崩潰地址最接近但是小于它的地址
那個地址的所對應的函數,基本就是崩潰代碼的入口函數
記錄下崩潰代碼入口函數的名稱和地址
在COD文件中,查找入口函數起始位置,
實際代碼偏移地址 = 崩潰代碼地址 - 入口函數地址
在入口函數地址開始位置,偏移實際代碼偏移地址后。就可以定位到出錯的代碼行了
經驗證。此方法有效。哈哈。又學會了一招
文本文件有一個并非必須使用的文件結束符0x26,但行結束符是必須遵守的\t\n或者\0x0d\0x0a,否則就不為文本文件.
一個碎了一塊玻璃的房子,如果沒有及時修補,很快其他的玻璃也會被打碎。
一段使用了全局變量和硬編碼的代碼,很快會充斥大量的全局變量和硬編碼。
終于把UI的事件處理完全的使用了腳本來處理了,現在變成了UI屬性信息由XML文件控制,UI邏輯由腳本來控制
終于不關程序的事了,程序只需要注冊些UI所需要的API,就完全搞定,爽啊。
體系是在組件庫中設定Script模型,然后在UIBase中實例一個腳本模型,并設置三種事件處理模型
第一種綁定靜態函數回調
第二種接口腳本回調
第三種事件腳本回調
外部在啟動前,注冊相應腳本所需API進入程序,當某個UI事件被觸發時,分派器根據當前腳本模型決定尋找接口腳本還是尋找事件腳本
如果找不到相關處理方法,再尋找靜態回調。
同一程序中支持多個腳本模型實例.
腳本模型提供下列接口
設置腳本內變量值
得到腳本內變量值
執行腳本內某函數
注冊程序某函數到腳本中
---靜態函數
---成員函數
測試以完全通過,以后再發現問題就繼續寫咯
04年~08年高校錄取計劃一覽:
2004年:錄取420萬人
2005年:錄取504萬人
2006年:錄取530萬人
2007年,錄取567萬人
2008年,計劃錄取599萬人,考生1050萬。
現狀:
2007年尚有70萬-80萬大學生未能就業(04年錄取生)
今中國高校畢業生將達到創紀錄的559萬人(05年錄取生)
因此2008年實際需要就業的大學生將超過600萬人(04~05級大學錄取生)
這么多年的教育改革,確實使我們的教育普及率達到了一個前所未有的高度.
但教育體制的落后使學生們在學校根本無法接受到與社會合拍的培育.
為廣大苦讀的欣欣學子們嘆息,未來之路看來并不平坦啊!
隨著項目在VC2005下的逐步穩定,現在也徹底的更換到了VC2005
了
之前在寫UI管理器時,,由于時間不夠,只得將事件回調暫時以直接注冊函數地址的形式注冊進
UI管理器,看起來極度不爽,所以最近又回到了原來的問題,框架是否需要加入腳本支持,如
需要,是哪一部份需要,以現在的情況來看,UI體系是唯一需要腳本支持的,但是也曾徘徊過
究竟是將操作類注冊進腳本,還是在程序內部封裝API,再注冊API進入腳本,現在也是決定了
實際的邏輯信息是不應該由腳本來進行控制的,而腳本確可以控制邏輯與邏輯之間的持續和關系
所以決定今天寫出一個腳本體系用來真正完善UI體系。腳本的話,,,暫定也使用Lua吧,主要是
它比較小。。。一切。也都要等于寫完才知道
今天花了半天時間,將開發環境更換為了VC2005,不容易啊。。終于可以看迭代器了
記下一些移植中解決的問題
Log4cplus1.0.2 要在vs2005上編譯需要將include中的stringhelper.h的118行左右添加如下代碼:
typedef std::output_iterator_tag iterator_category;
并且將128行左右的__value改名,例如改成__rvalue
hash_map
從std 換到了 stdext
VC++ 2005中fstream對象無法訪問中午路徑下的文件
在用ifstream和ofstream打開文件前設置全局locale為本地環境,打開文件后再設置回去。
ofstream writefile;
string filename=("d:\我的文檔\測試.txt");
locale loc = locale::global(locale("")); //要打開的文件路徑包含中文,設置全局locale為本地環境
writefile.open(filename.c_str(),ios::out); //打開文件
locale::global(loc);//恢復全局locale
用locale對象的name方法可以看到,通過locale("")構造出的locale對象的
name為"Chinese_People's Republic of
China.936",而原始的locale對象的name為"C",也就是缺省的ANSI_C公約。
注意:如果使用locale loc =
locale::global(locale(""))設置全局locale后沒有用
locale::global(loc)恢復的話,那么在程序后面的cout語句就不能輸出中午了,雖然這時候操作中文文件沒有問題,但是這也是很容易讓
人掉入陷阱的地方,應該值得注意。