chaosuper85

C++博客 首页 新随笔 联系 聚合 管理
  118 Posts :: 0 Stories :: 3 Comments :: 0 Trackbacks

#

本文介绍了vi (vim)的基本使用方法,但对于普通用户来说基本上够了!

vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本的文本编辑器,学会它后,您将在Linux的世界里畅行无阻。

1、vi的基本概念
  基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:

1) 命令行模式command mode)

  控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。

2) 插入模式(Insert mode)

  只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。

3) 底行模式(last line mode)

  将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。

不过一般我们在使用时把vi简化成两个模式,就是将底行模式(last line mode)也算入命令行模式command mode)。

2、vi的基本操作
a) 进入vi

  在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面:

   $ vi myfile


  不过有一点要特别注意,就是您进入vi之后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insert mode)」才能够输入文字。初次使用vi的人都会想先用上下左右键移动光标,结果电脑一直哔哔叫,把自己气个半死,所以进入vi后,先不要乱动,转换到「插入模式(Insert mode)」再说吧!

b) 切换至插入模式(Insert mode)编辑文件

  在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。

c) Insert 的切换

  您目前处于「插入模式(Insert mode)」,您就只能一直输入文字,如果您发现输错了字!想用光标键往回移动,将该字删除,就要先按一下「ESC」键转到「命令行模式(command mode)」再删除文字。

d) 退出vi及保存文件

  在「命令行模式(command mode)」下,按一下「:」冒号键进入「Last line mode」,例如:

: w filename (输入 「w filename」将文章以指定的文件名filename保存)

: wq (输入「wq」,存盘并退出vi)

: q! (输入q!, 不存盘强制退出vi)


3、命令行模式(command mode)功能键
1). 插入模式

  按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;

  按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;

  按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。

2). 从插入模式切换为命令行模式

  按「ESC」键。

3). 移动光标

  vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。

  按「ctrl」+「b」:屏幕往“后”移动一页。

  按「ctrl」+「f」:屏幕往“前”移动一页。

  按「ctrl」+「u」:屏幕往“后”移动半页。

  按「ctrl」+「d」:屏幕往“前”移动半页。

  按数字「0」:移到文章的开头。

  按「G」:移动到文章的最后。

  按「$」:移动到光标所在行的“行尾”。

  按「^」:移动到光标所在行的“行首”

  按「w」:光标跳到下个字的开头

  按「e」:光标跳到下个字的字尾

  按「b」:光标回到上个字的开头

  按「#l」:光标移到该行的第#个位置,如:5l,56l。

4). 删除文字

  「x」:每按一次,删除光标所在位置的“后面”一个字符。

  「#x」:例如,「6x」表示删除光标所在位置的“后面”6个字符。

  「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符。

  「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符。

  「dd」:删除光标所在行。

  「#dd」:从光标所在行开始删除#行

5). 复制

  「yw」:将光标所在之处到字尾的字符复制到缓冲区中。

  「#yw」:复制#个字到缓冲区

  「yy」:复制光标所在行到缓冲区。

  「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。

  「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。

6). 替换

  「r」:替换光标所在处的字符。

  「R」:替换光标所到之处的字符,直到按下「ESC」键为止。

7). 回复上一次操作

  「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复。

8). 更改

  「cw」:更改光标所在处的字到字尾处

  「c#w」:例如,「c3w」表示更改3个字

9). 跳至指定的行

  「ctrl」+「g」列出光标所在行的行号。

  「#G」:例如,「15G」,表示移动光标至文章的第15行行首。

4、Last line mode下命令简介
  在使用「last line mode」之前,请记住先按「ESC」键确定您已经处于「command mode」下后,再按「:」冒号即可进入「last line mode」。

A) 列出行号

 「set nu」:输入「set nu」后,会在文件中的每一行前面列出行号。

B) 跳到文件中的某一行

 「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。

C) 查找字符

 「/关键字」:先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。

 「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。

D) 保存文件

 「w」:在冒号输入字母「w」就可以将文件保存起来。

E) 离开vi

 「q」:按「q」就是退出,如果无法离开vi,可以在「q」后跟一个「!」强制离开vi。

 「qw」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。

5、vi命令列表
1、下表列出命令模式下的一些键的功能:

h
左移光标一个字符

l
右移光标一个字符

k
光标上移一行

j
光标下移一行

^
光标移动至行首

0
数字“0”,光标移至文章的开头

G
光标移至文章的最后

$
光标移动至行尾

Ctrl+f
向前翻屏

Ctrl+b
向后翻屏

Ctrl+d
向前翻半屏

Ctrl+u
向后翻半屏

i
在光标位置前插入字符

a
在光标所在位置的后一个字符开始增加

o
插入新的一行,从行首开始输入

ESC
从输入状态退至命令状态

x
删除光标后面的字符

#x
删除光标后的#个字符

X
(大写X),删除光标前面的字符

#X
删除光标前面的#个字符

dd
删除光标所在的行

#dd
删除从光标所在行数的#行

yw
复制光标所在位置的一个字

#yw
复制光标所在位置的#个字

yy
复制光标所在位置的一行

#yy
复制从光标所在行数的#行

p
粘贴

u
取消操作

cw
更改光标所在位置的一个字

#cw
更改光标所在位置的#个字


2、下表列出行命令模式下的一些指令
w filename
储存正在编辑的文件为filename

wq filename
储存正在编辑的文件为filename,并退出vi

q!
放弃所有修改,退出vi

set nu
显示行号

/或?
查找,在/后输入要查找的内容

n
与/或?一起使用,如果查找的内容不是想要找的关键字,按n或向后(与/联用)或向前(与?联用)继续查找,直到找到为止。

posted @ 2009-08-03 14:16 chaosuper 阅读(88) | 评论 (0)编辑 收藏

 

1. 以下三条输出语句分别输出什么?
char str1[] = "abc";
char str2[] = "abc";
const char str3[] = "abc";
const char str4[] = "abc";
const char* str5 = "abc";
const char* str6 = "abc";
cout << boolalpha << ( str1==str2 ) << endl; //
输出什么?
cout << boolalpha << ( str3==str4 ) << endl; //
输出什么?
cout << boolalpha << ( str5==str6 ) << endl; //
输出什么?

答:分别输出false,false,truestr1str2都是字符数组,每个都有其自己的存储区,它们的值则是各存储区首地址,不等;str3str4同上,只是按const语义,它们所指向的数据区不能修改。str5str6并非数组而是字符指针,并不分配存储区,其后的“abc”以常量形式存于静态数据区,而它们自己仅是指向该区首地址的指针,相等。

2. 以下代码中的两个sizeof用法有问题吗?
void UpperCase( char str[] ) //
str 中的小写字母转换成大写字母
{
for( size_t i=0; i<sizeof(str)/sizeof(str[0]); ++i )
if( 'a'<=str[i] && str[i]<='z' )
str[i] -= ('a'-'A' );
}
char str[] = "aBcDe";
cout << "str
字符长度为: " << sizeof(str)/sizeof(str[0]) << endl;
UpperCase( str );
cout << str << endl;

答:函数内的sizeof有问题。根据语法,sizeof如用于数组,只能测出静态数组的大小,无法检测动态分配的或外部数组大小。函数外的str是一个静态定义的数组,因此其大小为6,函数内的str实际只是一个指向字符串的指针,没有任何额外的与数组相关的信息,因此sizeof作用于上只将其当指针看,一个指针为4个字节,因此返回4

3. C++内建型别 A B,在哪几种情况下B能隐式转化为A
答:
a. class B : public A { ……} // B
公有继承自A,可以是间接继承的
b. class B { operator A( ); } // B
实现了隐式转化为A的转化
c. class A { A( const B& ); } // A
实现了non-explicit的参数为B(可以有其他带默认值的参数)构造函数
d. A& operator= ( const A& ); //
赋值操作,虽不是正宗的隐式类型转换,但也可以勉强算一个

4. 以下代码有什么问题?
struct Test
{
Test( int ) {}
Test() {}
void fun() {}
};
void main( void )
{
Test a(1);
a.fun();
Test b();
b.fun();
}

答:变量b定义出错。按默认构造函数定义对象,不需要加括号。

5. 以下代码有什么问题?
cout << (true?1:"1") << endl;
答:三元表达式:”问号后面的两个操作数必须为同一类型。

6. 以下代码能够编译通过吗,为什么?
unsigned int const size1 = 2;
char str1[ size1 ];
unsigned int temp = 0;
cin >> temp;
unsigned int const size2 = temp;
char str2[ size2 ];
答:str2定义出错,size2非编译器期间常量,而数组定义要求长度必须为编译期常量。

7. 以下反向遍历array数组的方法有什么错误?
vector array;
array.push_back( 1 );
array.push_back( 2 );
array.push_back( 3 );
for( vector::size_type i=array.size()-1; i>=0; --i ) //
反向遍历array数组
{
cout << array[i] << endl;
}

答:首先数组定义有误,应加上类型参数:vector<int> array。其次vector::size_type被定义为unsigned int,即无符号数,这样做为循环变量的i0时再减1就会变成最大的整数,导致循环失去控制。

8. 以下代码中的输出语句输出0吗,为什么?
struct CLS
{
int m_i;
CLS( int i ) : m_i(i) {}
CLS()
{
CLS(0);
}
};
CLS obj;
cout << obj.m_i << endl;

答:不能。在默认构造函数内部再调用带参的构造函数属用户行为而非编译器行为,亦即仅执行函数调用,而不会执行其后的初始化表达式。只有在生成对象时,初始化表达式才会随相应的构造函数一起调用。

9. C++中的空类,默认产生哪些类成员函数?
答:
class Empty
{
public:
Empty(); //
缺省构造函数
Empty( const Empty& ); //
拷贝构造函数
~Empty(); //
析构函数
Empty& operator=( const Empty& ); //
赋值运算符
Empty* operator&(); //
取址运算符
const Empty* operator&() const; //
取址运算符 const
};


10.
以下两条输出语句分别输出什么?
float a = 1.0f;
cout << (int)a << endl;
cout << (int&)a << endl;
cout << boolalpha << ( (int)a == (int&)a ) << endl; //
输出什么?
float b = 0.0f;
cout << (int)b << endl;
cout << (int&)b << endl;
cout << boolalpha << ( (int)b == (int&)b ) << endl; //
输出什么?

答:分别输出falsetrue。注意转换的应用。(int)a实际上是以浮点数a为参数构造了一个整型数,该整数的值是1(int&)a则是告诉编译器将a当作整数看(并没有做任何实质上的转换)。因为1以整数形式存放和以浮点形式存放其内存数据是不一样的,因此两者不等。对b的两种转换意义同上,但是0的整数形式和浮点形式其内存数据是一样的,因此在这种特殊情形下,两者相等(仅仅在数值意义上)。
注意,程序的输出会显示(int&)a=1065353216,这个值是怎么来的呢?前面已经说了,1以浮点数形式存放在内存中,按ieee754规定,其内容为0x0000803F(已考虑字节反序)。这也就是a这个变量所占据的内存单元的值。当(int&)a出现时,它相当于告诉它的上下文:把这块地址当做整数看待!不要管它原来是什么。这样,内容0x0000803F按整数解释,其值正好就是1065353216(十进制数)。
通过查看汇编代码可以证实“(int)a相当于重新构造了一个值等于a的整型数之说,而(int&)的作用则仅仅是表达了一个类型信息,意义在于为cout<<==选择正确的重载版本。

11. 以下代码有什么问题?
typedef vector IntArray;
IntArray array;
array.push_back( 1 );
array.push_back( 2 );
array.push_back( 2 );
array.push_back( 3 );
//
删除array数组中所有的2
for( IntArray::iterator itor=array.begin(); itor!=array.end(); ++itor )
{
if( 2 == *itor ) array.erase( itor );
}

答:同样有缺少类型参数的问题。另外,每次调用“array.erase( itor );”,被删除元素之后的内容会自动往前移,导致迭代漏项,应在删除一项后使itor--,使之从已经前移的下一个元素起继续遍历。

12.
写一个函数,完成内存之间的拷贝。[考虑问题是否全面]
答:
void* mymemcpy( void *dest, const void *src, size_t count )
{
char* pdest = static_cast<char*>( dest );
const char* psrc = static_cast<const char*>( src );
if( pdest>psrc && pdest<psrc+cout )
能考虑到这种情况就行了
{
for( size_t i=count-1; i!=-1; --i )
pdest[i] = psrc[i];
}
else
{
for( size_t i=0; i<count; ++i )
pdest[i] = psrc[i];
}
return dest;
}

 

posted @ 2009-08-03 12:14 chaosuper 阅读(94) | 评论 (0)编辑 收藏

导读:习惯的力量是惊人的。习惯能载着你走向成功,也能驮着你滑向失败。如何选择,完全取决于你自己。

1.习惯的力量:35岁以前养成好习惯

你想成功吗?那就及早培养有利于成功的好习惯。

习惯的力量是惊人的,35岁以前养成的习惯决定着你是否成功。

有这样一个寓言故事:

一位没有继承人的富豪死后将自己的一大笔遗产赠送给远房的一位亲戚,这位亲戚是一个常年靠乞讨为生的乞丐。这名接受遗产的乞丐立即身

价一变,成了百万富翁。新闻记者便来采访这名幸运的乞丐:"你继承了遗产之后,你想做的第一件事是什么?"乞丐回答说:"我要买一只好一点

的碗和一根结实的木棍,这样我以后出去讨饭时方便一些。"

可见,习惯对我们有着绝大的影响,因为它是一贯的,在不知不觉中,经年累月地影响着我们的行为,影响着我们的效率,左右着我们的成败

一个人一天的行为中,大约只有5%是属于非习惯性的,而剩下的95%的行为都是习惯性的。即便是打破常规的创新,最终可以演变成为习惯性的

创新。

根据行为心理学的研究结果:3周以上的重复会形成习惯;3个月以上的重复会形成稳定的习惯,即同一个动作,重复3周就会变成习惯性动作,

形成稳定的习惯。

亚里士多德说:"人的行为总是一再重复。因此,卓越不是单一的举动,而是习惯。""人的行为总是一再重复。因此,卓越不是单一的举动,而

是习惯。"所以,在实现成功的过程中,除了要不断激发自己的成功欲望,要有信心、有热情、有意志、有毅力等之外,还应该搭上习惯这一成

功的快车,实现自己的目标。

有个动物学家做了一个实验:他将一群跳蚤放入实验用的大量杯里,上面盖上一片透明的玻璃。跳蚤习性爱跳,于是很多跳蚤都撞上了盖上的玻

璃,不断地发叮叮冬冬的声音。过了一阵子,动物学家将玻璃片拿开,发现竟然所有跳蚤依然在跳,只是都已经将跳的高度保持在接近玻璃即

止,以避免撞到头。结果竟然没有一只跳蚤能跳出来--依它们的能力不是跳不出来,只是它们已经适应了环境。

后来,那位动物学家就在量杯下放了一个酒精灯并且点燃了火。不到五分钟,量杯烧热了,所有跳蚤自然发挥求生的本能,每只跳蚤再也不管

头是否会撞痛(因为它们以为还有玻璃罩),全部都跳出量杯以外。这个试验证明,跳蚤会为了适应环境,不愿改变习性,宁愿降低才能、封闭

潜能去适应。

我想,人类之于环境也是如此。人类在适应外界大环境中,又创造出适合于自己的小环境,然后用习惯把自己困在自己所创造的环境中。所以

,习惯决定着你的活动空间的大小,也决定着你的成败。养成好习惯对于你的成功非常重要。

心理学巨匠威廉·詹姆士说:"播下一个行动,收获一种习惯;播下一种习惯,收获一种性格;播下一种性格,收获一种命运。"

2.35岁以前成功必备的9大习惯

好习惯会使成功不期而至。我认为下面9个好习惯是成功必备的:

(1)积极思维的好习惯

有位秀才第三次进京赶考,住在一个经常住的店里。考试前两天他做了三个梦:第一个梦是梦到自己在墙上种白菜,第二个梦是下雨天,他戴了

斗笠还打着伞,第三个梦是梦到跟心爱的表妹脱光了衣服躺在一起,但是背靠着背。临考之际做此梦,似乎有些深意,秀才第二天去找算命的

解梦。算命的一听,连拍大腿说:"你还是回家吧。你想想,高墙上种菜不是白费劲吗?戴斗笠打雨伞不是多此一举吗?跟表妹脱光了衣服躺在

一张床上,却背靠背,不是没戏吗?"秀才一听,心灰意冷,回店收拾包裹准备回家。店老板非常奇怪,问:"不是明天才考试吗?今天怎么就打

道回府了?"秀才如此这般说了一番,店老板乐了:"唉,我也会解梦的。我倒觉得,你这次一定能考中。你想想,墙上种菜不是高种吗?戴斗笠

打伞不是双保险吗?跟你表妹脱光了背靠背躺在床上,不是说明你翻身的时候就要到了吗?"秀才一听,更有道理,于是精神振奋地参加考试,

居然中了个探花。

可见,事物本身并不影响人,人们只受到自己对事物看法的影响,人必须改变被动的思维习惯,养成积极的思维习惯。

怎样才算养成了积极思维的习惯呢?当你在实现目标的过程中,面对具体的工作和任务时,你的大脑里去掉了"不可能"三个字,而代之以"我怎

样才能"时,可以说你就养成了积极思维的习惯了。

(2)高效工作的好习惯

一个人成功的欲望再强烈,也会被不利于成功的习惯所撕碎,而溶入平庸的日常生活中。所以说,思想决定行为,行为形成习惯,习惯决定性

格,性格决定命运。你要想成功,就一定要养成高效率的工作习惯。

确定你的工作习惯是否有效率,是否有利于成功,我觉得可以用这个标准来检验:即在检省自己工作的时候,你是否为未完成工作而感到忧虑,

即有焦灼感。如果你应该做的事情而没有做,或做而未做完,并经常为此而感到焦灼,那就证明你需要改变工作习惯,找到并养成一种高效率

的工作习惯。

高效工作从办公室开始:

1)了解你每天的精力充沛期。通常人们在早晨9点左右工作效率最高,可以把最困难的工作放到这时来完成。

2)每天集中一、两个小时来处理手头紧急的工作,不接电话、不开会、不受打扰。这样可以事半功倍。

3)立刻回复重要的邮件,将不重要的丢弃。若任它们积累成堆,反而更费时间。

4)做个任务清单,将所有的项目和约定记在效率手册中。手头一定要带着效率手册以帮助自己按计划行事。一个人一天的行为中,大约只有5%

是属于非习惯性的,而剩下的95%的行为都是习惯性的。

5)学会高效地利用零碎时间,用来读点东西或是构思一个文件,不要发呆或做白日梦。

6)减少回电话的时间。如果你需要传递的只是一个信息,不妨发个手机短信。

7)对可能打来的电话做到心中有数,这样在你接到所期待的电话后便可迅速找到所需要的各种材料,不必当时乱翻乱找。

8)学习上网高效搜寻的技能,以节省上网查询的时间。把你经常要浏览的网站收集起来以便随时找到。

9)用国际互联网简化商业旅行的安排。多数饭店和航线可以网上查询和预订。

10)只要情况允许就可委派别人分担工作。事必躬亲会使自己疲惫不堪,而且永远也做不完。不妨请同事帮忙,或让助手更努力地投入。

11)做灵活的日程安排,当你需要时便可以忙中偷闲。例如,在中午加班,然后早一小时离开办公室去健身,或是每天工作10个小时,然后用星

期五来赴约会、看医生。

12)在离开办公室之前开列次日工作的清单,这样第二天早晨一来便可以全力以赴。

计划习惯,就等于计划成功。

凡事制定计划有个名叫约翰·戈达德的美国人,当他15岁的时候,就把自己一生要做的事情列了一份清单,被称做"生命清单"。在这份排列有

序的清单中,他给自己所要攻克的127个具体目标。比如,探索尼罗河、攀登喜马拉雅山、读完莎士比亚的著作、写一本书等。在44年后,他以

超人的毅力和非凡的勇气,在与命运的艰苦抗争中,终于按计划,一步一步地实现了106个目标,成为一名卓有成就的电影制片人、作家和演说

家。

中国有句老话:"吃不穷,喝不穷,没有计划就受穷。"尽量按照自己的目标,有计划地做事,这样可以提高工作效率,快速实现目标。

(3)养成锻炼身体的好习惯

增强保健意识

计划习惯,就等于计划成功。如果你想成就一番事业,你就必须有一个健康的身体;要想身体健康,首先要有保健意识。

我认识一个大学教师,身体一直很健康。早些时候,我们经常在一起玩。在谈及各人身体状况时,他说肾部偶尔有轻微不适的感觉。我们曾劝

他去医院检查一下,但他自恃身体健康,不以为意。直至后来感觉比较疼痛,其爱人才强迫他去检查。诊断结果是晚期肾癌。虽经手术化疗的

等治疗措施,但终未能保住生命,死时才39岁。此前,他曾因学校分房、评职称不如意,心情一直抑郁,他的病和情绪有关,但如果他保健意

识强,及早去检查,完全有可以进行预防,消患于未萌。保健意识差,让他付出了生命的代价。

如何落实保健意识呢?一是要有生命第一、健康第一的意识,有了这种意识,你就会善待自己的身体、自己的心理,而不会随意糟踏自己的身

体。二是要注意掌握一些相关的知识。三是要使自己有一个对身体应变机制:定期去医院做身体检查;身体觉得有不适的地方,应及早去医院检

查;在有条件的情况下,可以请一个保健医生,给自己的健康提出忠告。

▲有计划地锻炼身体

锻炼身体的重要性已经越来越多地为人们所接受,但我感觉很多人只停留在重视的意识阶段,而缺乏相应的行动。我认为锻炼既要针对特定工

作姿势所能引发的相应疾病有目的地进行,以防止和治疗相应的疾病,更要把锻炼当作一种乐趣,养成锻炼的习惯。

因为工作需要,我经常与客户打交道,并因处理突发事情四处奔忙,这在一定程度起到了锻炼身体的作用,同时,我还每周坚持游泳一到两次

,以保证有足够的精力去做工作,去享受生活。

身体锻炼,就像努力争取成功一样,贵在坚持。

除上述两点以,注意饮食结构,合理膳食,以及注意养成好的卫生习惯等,都是养成健康习惯的组成部分。

总之,健康是"革命"的本钱,是成功的保证。健康成就自己。

(4)不断学习的好习惯"万般皆下品,唯有读书高"的年代已经过去了,但是养成读书的好习惯则永远不会过时。

哈利·杜鲁门是美国历史上著名的总统。他没有读过大学,曾经营农场,后来经营一间布店,经历过多次失败,当他最终担任政府职务时,已

年过五旬。但他有一个好习惯,就是不断地阅读。多年的阅读,使杜鲁门的知识非常渊博。他一卷一卷地读了《大不列颠百科全书》以及所有

查理斯·狄更斯和维克多·雨果的小说。此外,他还读过威廉·莎士比亚的所有戏剧和十四行诗等。

杜鲁门的广泛阅读和由此得到的丰富知识,使他能带领美国顺利度过第二次世界大战的结束时期,并使这个国家很快进入战后繁荣。他懂得读

书是成为一流领导人的基础。读书还使他在面对各种有争议的、棘手的问题时,能迅速做出正确的决定。例如,在20世纪50年代他顶住压力把

人们敬爱的战争英雄道格拉斯·麦克阿瑟将军解职。

他的信条是:"不是所有的读书人都是一名领袖,然而每一位领袖必须是读书人。"

美国前任总统克林顿说:在19世纪获得一小块土地,就是起家的本钱;而21世纪,人们最指望得到的赠品,再也不是土地,而联邦政府的奖学金

。因为他们知道,掌握知识就是掌握了一把开启未来大门的钥匙。"

每一个成功者都是有着良好阅读习惯的人。世界500家大企业的CEO至少每个星期要翻阅大概30份杂志或图书资讯,一个月可以翻阅100多本杂志

,一年要翻阅1000本以上。

世界500家大企业的CEO至少每个星期要翻阅大概30份杂志或图书资讯,一个月可以翻阅100多本杂志,一年要翻阅1000本以上。如果你每天读15

分钟,你就有可能在一个月之内读完一本书。一年你就至少读过12本书了,10年之后,你会读过总共120本书!想想看,每天只需要抽出15分钟

时间,你就可以轻易地读完120本书,它可以帮助你在生活的各方面变得更加富有。如果你每天花双倍的时间,也就是半个小时的话,一年就能

读25本书--10年就是250本!

我觉得,每一个想在35岁以前成功的人,每个月至少要读一本书,两本杂志。

(5)谦虚的好习惯

一个人没有理由不谦虚。相对于人类的知识来讲,任何博学者都只能是不及格。

著名科学家法拉第晚年,国家准备授予他爵位,以表彰他在物理、化学方面的杰出贡献,但被他拒绝了。法拉第退休之后,仍然常去实验室做

一些杂事。一天,一位年轻人来实验室做实验。他对正在扫地的法拉第说道:"干这活,他们给你的钱一定不少吧?"老人笑笑,说道:"再多一点

,我也用得着呀。""那你叫什么名字?老头?""迈克尔·法拉第。"老人淡淡地回答道。年轻人惊呼起来:"哦,天哪!您就是伟大的法拉第先生

!""不",法拉第纠正说,"我是平凡的法拉第。"

谦虚不仅是一种美德,更是是一种人生的智慧,是一种通过贬低自己来保护自己的计谋。

(6)自制的好习惯

任何一个成功者都有着非凡的自制力。

三国时期,蜀相诸葛亮亲自率领蜀国大军北伐曹魏,魏国大将司马懿采取了闭城休战、不予理睬的态度对付诸葛亮。他认为,蜀军远道来袭,

后援补给必定不足,只要拖延时日,消耗蜀军的实力,一定能抓住良机,战胜敌人。

诸葛亮深知司马懿沉默战术的利害,几次派兵到城下骂阵,企图激怒魏兵,引诱司马懿出城决战,但司马懿一直按兵不动。诸葛亮于是用激将

法,派人给司马懿送来一件女人衣裳,并修书一封说:"仲达不敢出战,跟妇女有什么两样。你若是个知耻的男儿,就出来和蜀军交战,若不然

,你就穿上这件女人的衣服。""士可杀不可辱。"这封充满侮辱轻视的信,虽然激怒了司马懿,但并没使老谋深算的司马懿改变主意,他强压怒

火稳住军心,耐心等待。

相持了数月,诸葛亮不幸病逝军中,蜀军群龙无首,悄悄退兵,司马懿不战而胜。

抑制不住情绪的人,往往伤人又伤己如果司马懿不能忍耐一时之气,出城应战,那么或许历史将会重写。

现代社会,人们面临的诱惑越来越多,如果人们缺乏自制力,那么就会被诱惑牵着鼻子走,偏离成功的轨道。

(7)幽默的好习惯

有人说,男人需要幽默,就像女人需要一个漂亮的脸蛋一样重要。

男人需要幽默,就像女人需要一个漂亮的脸蛋一样重要。美国第16任总统林肯长相丑陋,但他从不忌讳这一点,相反,他常常诙谐地拿自己的

长相开玩笑。在竞选总统时,他的对手攻击他两面三刀,搞阴谋诡计。林肯听了指着自己的脸说:"让公众来评判吧。如果我还有另一张脸的话

,我会用现在这一张吗?"还有一次,一个反对林肯的议员走到林肯跟前挖苦地问:"听说总统您是一位成功的自我设计者?""不错,先生。"林

肯点点头说,"不过我不明白,一个成功的设计者,怎么会把自己设计成这副模样?"林肯就是这种幽默的方法,多次成功地化解了可能出现的

尴尬和难堪场面。

没有幽默的男人不一定就差,但懂得幽默的男人一定是一个优秀的人,懂得幽默的女人更是珍稀动物。

(8)微笑的好习惯

微笑是大度、从容的表现,也是交往的通行证。

举世闻名的希尔顿大酒店,其创建人希尔顿在创业之初,经过多年探索,最终发现了一条简单、易行、不花本钱的经营秘诀--微笑。从此,他

要求所有员工:无论饭店本身遭遇到什么困难,希尔顿饭店服务员脸上的微笑永远是属于顾客的阳光。这束"阳光"最终使希尔顿饭店赢得了全世

界一致好评。

在欧美发达国家,人们见面都要点头微笑,使人们相互之间感到很温暖。而在中国,如果你在大街上向一个女士微笑,那么你可能被说成"有病

"。向西方人学习,让我们致以相互的微笑吧。

从古至今,敬业是所有成功人士最重要的品质之一。

(9)敬业、乐业的好习惯

敬业是对渴望成功的人对待工作的基本要求,一个不敬业的人很难在他所从事的工作中做出成绩。

美国标准石油公司有一个叫阿基勃特的小职员,开始并没有引起人们的特别注意。他的敬业精神特别强,处处注意维护和宣传企业的声誉。在

远行住旅馆时总不忘记在自己签名的下方写上"每桶四美元的标准石油"字样,在给亲友写信时,甚至在打收条时也不例外,签名后总不忘记写

那几个字。为此,同事们都叫他"每桶四美元"。这事被公司的董事长洛克菲勒知道了,他邀请阿基勃特共进晚餐,并号召公司职员向他学习。

后来,阿基勃特成为标准石油公司的第二任董事长。

 
 
 
 
坏习惯使成功寸步难行。

与建立良好习惯相应的,是克服不良习惯。不破不立,不改掉不良习惯,好习惯是难以建立起来的。

古希腊的佛里几亚国王葛第士以非常奇妙的方法,在战车的轭打了一串结。他预言:谁能打开这个结,就可以征服亚洲。一直到公元前334年还

没有一个人能将绳结打开。这时。亚历山大率军入侵小亚细亚,他来到葛第士绳结前,不加考虑便拔剑砍断了它。后来,他果然一举占领了比

希腊大50倍的波斯帝国。

一个孩子在山里割草,不小心被毒蛇咬伤了脚。孩子疼痛难忍,而医院在远处的小镇上。孩子毫不犹豫地用镰刀割断受伤的脚趾,然后忍着巨

痛艰难地走到医院。虽然缺少了一个脚趾,但这个孩子以短暂的疼痛保住了自己的生命。

改掉坏习惯,就应该有亚历山大的气概,就应有那个小孩的果断和勇敢,彻底改掉坏习惯,让好习惯引领自己走向成功。

以下这9大恶习是你必须戒除的:

1)经常性迟到。你上班或开会经常迟到吗?迟到是造成使老板和同事反感的种子,它传达出的信息:你是一个只考虑自己、缺乏合作精神的人。

2)拖延。虽然你最终完成了工作,但拖后腿使你显得不胜任。为什么会产生延误呢?如果是因为缺少兴趣,你就应该考虑一下你的择业;如果

是因为过度追求尽善尽美,这毫无疑问会增多你在工作中的延误。社会心理学专家说:很多爱拖延的人都很害怕冒险和出错,对失败的恐惧使他

们无从下手。

3)怨天尤人。这几乎是失败者共同的标签。一个想要成功的人在遇到挫折时,应该冷静地对待自己所面临的问题,分析失败的原因,进而找到

解决问题的突破口。

4)一味取悦他人。一个真正称职的员工应该对本职工作内存在的问题向上级说明并提出相应的解决办法,而不应该只是附和上级的决定。对于

管理者,应该有严明的奖惩方式,而不应该做"好好先生",这样做虽然暂时取悦了少数人,却会失去大多数人的支持。

5)传播流言。每个人都可能会被别人评论,也会去评论他人,但如果津津乐道的是关于某人的流言蜚语,这种议论最好停止。世上没有不透风

的墙,你今天传播的流言,早晚会被当事人知道,又何必去搬石头砸自己的脚?所以,流言止于智者。

6)对他人求全责备、尖酸刻薄。每个人在工作中都可能有失误。当工作中出现问题时,应该协助去解决,而不应该一味求全责备。特别是在自

己无法做到的情况下,让自己的下属或别人去达到这些要求,很容易使人产生反感。长此以往,这种人在公司没有任何威信而言。

7)出尔反尔。已经确定下来的事情,却经常做变更,就会让你的下属或协助员工无从下手。你做出的承诺,如果无法兑现,会在大家面前失去

信用。这样的人,难以担当重任。

8)傲慢无礼。这样做并不能显得你高人一头,相反会引起别人的反感。因为,任何人都不会容忍别人瞧不起自己。傲慢无礼的人难以交到好的

朋友。人脉就是财脉,年轻时养成这种习惯的人,相信你很难取得成功。

9)随大流。人们可以随大流,但不可以无主见。如果你习惯性地随大流,那你就有可能形成思维定势,没有自己的主见,或者既便有,也不敢

表达自己的主见,而没有主见的人是不会成功的。( 世界经理人)

没能发财的十大原因

1、不明白财富的定义;不明白成功的镜像规律。

汗,还真不知道什么叫财富。再怯怯地问一声:啥叫镜像啊?

2、没有致富的心态与观念

承认自己没有,比如有致富心态的,看到一个铺面门庭若市,他会想到那里到底卖什么东西这么吸引人,回去自己也捣鼓点卖。而我只是想挤

进去买点便宜货。

3、没有理财与致富的规划

又一条没有。从来没为自己做过规划,划了也坚持不了三个月。

4、理财方式与训练方式不恰当

来论坛之后才学着理财。方法正在学习中。

5、大多数人没有投资在高报酬的领域中

这个肯定啦,如果有谁知道投资可获得高报酬的,除了股票和传销,请你马上告诉我。

6、没有用商业手法控制支出

这个我也有。想花钱的时候就告诉自己先花了再说,不考虑控制。

7、不善于创造把握理财与致富的机会

这个我觉得我没有,总认为是机会还没来,来了我当然要抓住。

8、无创新意识不知如何决策

承认。确实不愿意创新。听了那么多关于货币基金的介绍,可我还是一门心思在储蓄,因为懒、嫌麻烦。

9、未以正确的思考方式解决问题

不承认,我一直都在我认为正确的道路上行走着。

10、没有找到一位理财与致富向导

确实没有。不过来理财生活以后又感觉向导太多了,有点晕。(阿里巴巴)

三种策略让你赚到100万

大多数年轻人的目标是100万元,而且是愈早实现愈好。但是根据网络调查显示,有七成人认为,30岁时至少应该先拥有10万元存款,但却只有

一成七的人能够办到。这就表示有相当多的年轻人,连10万元的目标都还没能达成,百万财富更是一个遥远的梦想。

于是在社会上各种致富法纷纷出笼。譬如嫁入豪门、娶个富家女、每期买彩票,这些方法似乎是最快、但也是最不切实际的。到底有没有机会

靠着自己的努力,提早赚到百万财富,答案当然是"有",这里有短、中、长期三套战略,供你参考。

2年战略:高杠杆工具才能小兵立大功

如果想两年就赚到百万财富,最可能实现梦想的途径就是利用高杠杆投资工具。虽然风险超高,但是报酬也高,想要以小搏大、倍数获利,就

要正确运用这种工具。只要你对趋势敏感,行情不论走多或是走空,都有获利机会。

高杠杆投资凭借的不是运气,而是精准判断盘势,冷静面对大盘起落,情绪绝不随着输赢起舞。但所谓"高收益高风险",想要两年就得到暴利

,等于是走着钢索赚钱,因为期货或是选择权杠杆高,当看错趋势时,几十万元很快就输光出场,是一条风险最高的求财途径。因此,先模拟

练功并严格控制投资金额,是激进主义者最重要的自保之道。

5年战略:做老板、当top sales

如果自认为用期指或是选择权赚大钱,心脏不够强、武艺不够高的话,年限不妨放宽一点,定5年战略,也就是努力创业当老板、甚至是加盟总

部的老板、或是努力成为业务高手。

什么样的创业能够5年就净赚百万元,当然是要能引领潮流或是抓住特殊机遇的创业。

程度更高段的赚钱方法则是当一群老板的老板,也就是成立加盟连锁总部,只要能够研发出独特口味、或是独特经营模式,而且能够复制标准

化程序,稳定收取加盟店上缴的权利金。

当然创业的成本高,学问也很大。如果不愿意当老板,只想继续当伙计赚大钱,不妨选择产品单价高、抽佣也高、制度完善的业务体系,只要

用对方法,就可以成为个中高手

10年战略:运用多种工具保守理财

如果自认投资手段不佳,也不适合创业当老板,或是不擅与人打交道,无法成为业务高手的话,那么便得回归正统的理财管道,将累积财富的

时间拉长至10年,积极开源、努力储蓄守成,透过定期储蓄,或是投资定存概念股,每年赚取股利,或是把钱交给专家理财,透过定期定额基

金投资,逐步累积资产。

更传统的方式是投资房地产,虽然国内房地产价格还有向下修正的空间,但只要选对地段,还是可以找到极具增值潜力的房子,不管是自住或

投资,都是一种稳健的资产累积方式。

你是属于急功近利型的兔子?还是稳扎稳打型的乌龟?其实都有适合的致富计划,但要再提醒的是,不管选择哪一种计划,想要提前致富,一

定要做足功课,懂得深入领受实践,百万财富将不是遥远梦想!(理财加油站) 
 

posted @ 2009-07-21 20:43 chaosuper 阅读(227) | 评论 (0)编辑 收藏

我们也许学习过const的使用,但是对于const的细致的技术细节却不一定掌握。const的用法在许多的教材上只是简单的介绍,在这里我们对 const进行细致的概念以及用法剖析。const 是由c++采用,并加进标准c中,但是他们的意义完全不同,在旧版本(标准前)的c中,如果想建立一个常量,必须使用预处理器:
#define PI 3.14159

此后无论在何处使用PI,都会被预处理器以3.14159替代。编译器不对PI进行类型检查,也就是说可以不受限制的建立宏并用它来替代值,如果使用不慎,很可能由预处理引入错误,这些错误往往很难发现。

我们也不能得到PI的地址(即不能向PI传递指针和引用)。
c++引入了命名常量的概念,命名常量就像变量一样,只是它的值不能改变,如果试图改变一个const 对象,编译器将会产生错误。 const 和正常变量一样有作用域,所以函数内部的const也不会影响程序的其余部分。在c++中const可以取代预处理器#define来进行值替代, const有安全的类型检查,所以不用担心会像预处理器一样引入错误。

在通常的情况下const同预处理器#define一样只是将所赋值保存入编译器的符号表中(符号表仅仅在编译时存在,在编译过程中编译器将程序中的名字与之在符号表中定义的数值作简单的替换),在使用的时候进行值替换,并不为const创建存储空间。我们将const的定义放进头文件里,这样通过包含头文件,可以把const定义单独放在一个地方并把它分配给一个编译单元,const默认为内部连接(内部连接意味着只对正在编译的文件创建存储空间,别的文件可以使用相同的标示符和全局变量,编译器不会发现冲突,外部连接意味着为所有被编译过的文件创建一片单独的存储空间,一般全局变量和函数名的外部连接通过extern声明,可以通过其他的文件访问)也就是说const仅能被它所定义过的文件访问,在定义一个const时,必须赋一个值给它,除非用extern做出说明:

extern const int a;

这表示const的定义在其他的什么地方,这里仅仅是一个声明,但是这样的做法使const使用了外部连接,也就是说上面的extern强制进行了对const的存储空间分配,这样我们就无法再用const作为常量折叠(在可能的情况下,符号常量的值会代替改名字的出现,这个替代过程叫做常量折叠)使用了,即使我们在其他地方定义了const的值,如:

extern const int a=3;

因为const的值被放入了存储单元,在编译的过程中,编译器不会去读存储单元的内容。如果我们这样做:

int b[a];

编译器就会给我们一个错误信息。

想不为const分配存储空间是不可能的,因为对于复杂的结构,例如集合,编译器不会复杂到将集合保存到它的符号表中,所以必须分配内存空间,这就意味着“这是一块不能改变的存储空间”,当然也就不能在编译期间使用它的值,因为编译器不知道存储的内容:

const int i[]={1,2,3,4};

//float f[i[2]];
//将得到错误信息,编译器提示不能在数组定义里找到一个常数表达式。

因为编译器靠移动栈指针来存储和读取数据。
也因此,由于无法避免为const分配内存,所以const的定义必须默认为内部连接,否则由于众多的const在多个文件中分配内存,就会引起错误。下面我们看一段简单有效的代码来说明const的常量折叠:

#include <iostream.h>
const int a=3;
const int b=a+1;
float *f=(float*)&b;
char c[b+3];
void main()
{
const char gc=cin.get();
const char c2=gc+3;
}

我们可以看到,a是一个编译器期间的const,b是从a中计算出来的,由于a是一个const,b的计算值来自一个常数表达式,而它自身也是一个编译器间的const,接着下面指针f取得了b的地址,所以迫使编译器给b分配了存储空间,不过即使分配了存储空间,由于编译器已经知道了b的值,所以仍然不妨碍在决定数组c的大小时使用b。

在主函数main()里,标识符gc的值在编译期间是不知道的,这也意味着需要存储空间,但是初始化要在定义点进行,而且一旦初始化,其值就不能改变,我们发现c2是由gc计算出来的,它的作用域与其他类型const的作用域是一样的,这是对#define用法的一种改进。

在c++引进常量的时候,标准c也引入了const,但是在c中const的意思和在c++中有很大不同,在c中const的意思是“一个不能改变的普通变量”,const常量总是被分配存储空间而且它的名字是全局符即const使用外部连接。于是在c中:

const int size=100;
char c[size];

得出一个错误。但是在c中可以这样写:

const int size;

因为c中的const被默认为外部连接,所以这样做是合理的。
在c语言中使用限定符const不是很有用,如果希望在常数表达式里(必须在编译期间被求值)使用一个已命名的值,必须使用预处理器#define。

在c++中可以使指针成为const,这很有用,如果以后想在程序代码中改变const这种指针的使用,编译器将给出通知,这样大大提高了安全性。在用带有const的指针时,我们有两种选择:const修饰指针指向的对象,或者const修饰指针自己指向的存储空间。

如果要使指向的对象不发生改变,则需要这样写:

const int *p;

这里p是一个指向const int 的指针,它不需要初始化,因为p可以指向任何标识符,它自己并不是一个const,但是它所指的值是不能改变的,同样的,我们可以这样写:

int const *p;

这两种方法是等同的,依据个人习惯以及编码风格不同,程序员自己决定使用哪一种形式。
如果希望使指针成为一个const必须将const标明的部分放在*右边。

int a=3;
int *const j=&a

编译器要求给它一个初始值,这个值在指针的生命期间内不变,也就是说指针始终指向a的地址,不过要改变它地址中的值是可以的:

*j+=4;

也可以是一个const指针指向一个const对象:

const int *j1=&a;
int const *j2=&a;

这样指针和对象都不能改变,这两种形式同样是等同的。在赋值的的时候需要注意,我们可以将一个非const的对象地址赋给一个const指针,但是不能将一个const对象地址赋给一个非const指针,因为这样可能通过被赋值的指针改变对象的值,当然也可以用类型的强制转换来进行const对象的赋值,但是这样做打破了const提供的安全性。

const也被用于限定函数参数和函数的返回值,如果函数参数是按值传递时,即表示变量的初值不会被函数改变,如果函数的返回值为const那么对于内部类型来说按值返回的是否是一个cosnt是无关紧要的,编译器不让它成为一个左值,因为它是一个值而不是一个变量,所以使用const是多余的,例如:

const int f(){return 1;}
void main(){int a=f();}

但是当处理用户定义类型的时候,按值返回常量就很有意义了,这时候函数的返回值不能被直接赋值也不能被修改。仅仅是非const返回值能作为一个左值使用,但是这往往失去意义,因为函数返回值在使用时通常保存为一个临时量,临时量被作为左值使用并修改后,编译器将临时量清除。结果丢失了所有的修改。
可以用const限定传递或返回一个地址(即一个指针或一个引用):

const int * const func(const int *p)
{ static int a=*p;
return &a;
}

参数内的const限定指针p指向的数据不能被改变,此后p的值被赋给静态变量a,然后将a的地址返回,这里a是一个静态变量,在函数运行结束后,它的生命期并没有结束,所以可以将它的地址返回。因为函数返回一个const int* 型,所以函数func的返回值不可以赋给一个非指向const的指针,但它同时接受一个const int * const和一个const int *指针,这是因为在函数返回时产生一个const临时指针用以存放a的地址,所以自动产生了这种原始变量不能被改变的约定,于是*右边的const只有当作左值使用时才有意义。

const同样运用于类中,但是它的意义又有所不同,我们可以创建const的数据成员,const的成员函数,甚至是const的对象,但是保持类的对象为const比较复杂,所以const对象只能调用const成员函数。

const的数据成员在类的每一个对象中分配存储,并且一旦初始化这个值在对象的生命期内是一个常量,因此在类中建立一个const数据成员时,初始化工作必须在构造函数初始化列表中。如果我们希望创建一个有编译期间的常量成员,这就需要在该常量成员的前面使用static限定符,这样所有的对象都仅有一个实例:

class X
{
static const int size=50;
int a[size];
public:
X();
};

const对象只能调用const成员函数,一个普通对象同样可以调用const成员函数,因此,const成员函数更具有一般性,但是成员函数不会默认为const。声明一个const成员函数,需要将const限定符放在函数名的后面:

void f (void ) const;

当我们运用const成员函数时,遇到需要改变数据成员,可以用mutable进行特别的指定:

class X
{
mutable int i;
public:
X();
void nochange() const;
};

void X::nochange const(){i++;}

const消除了预处理器的值替代的不良影响,并且提供了良好的类型检查形式和安全性,在可能的地方尽可能的使用const对我们的编程有很大的帮助。
posted @ 2009-07-21 18:04 chaosuper 阅读(117) | 评论 (0)编辑 收藏

一、队伍组成

销售团队

测试团队

游戏评论队伍

游戏制作人

n开发组长(always)
n资源管理 (Resource Management)
n行政管理 (Administration)
n向上負責 (Upward Management)
n专案管理 (Project Management)

游戏执行制作人

n专案管理执行 (Project Management)
nDaily 運作
nHouse Keeping
nNot full-time job position

游戏策划

n故事设计 (Story Telling)
n脚本设计 (Scripting)
n玩法设计 (Game Play Design)
n关卡设计 (Level Design)
n游戏調適 (Game Tuning)
n数值设定 (Numerical Setup)
nAI 设计 (Game AI)
n音效设定 (Sound FX Setup)
n场景设定 (Scene Setup)

游戏美术

n场景 (Terrain)
n人物 (Character)
n建模 (Models)
n材質 (Textures)
n动作 (Motion / Animation)
n特效 (FX)
n用户界面User Interface

游戏程序

n游戏程序 (Game Program)
n游戏开发工具 (Game Tools)
nLevel Editor
nScene Editor
nFX Editor
nScript Editor
n游戏Data Exporters from 3D Software
n3dsMax / Maya / Softimage
n游戏引擎开发Game Engine Development
n网络游戏服务端开发Online Game Server Development


二、游戏开发流程

n创意 (Idea)
n提案 (Proposal)
n制作 (Production)
n整合 (Integration)
n测试 (Testing)
n除錯 (Debug)
n调试 (Tuning)

游戏设计(Concept Design)

n游戏类型 (Game Types)
n游戏世界观 (Game World)
n故事 (Story)
n游戏特色 (Features)
n游戏玩法 (Game Play)
n游戏定位 (Game Product Positioning)
nTarget player
nMarketing segmentation / positioning
n风险评估 (Risk)
nSWOT (优势Strength/缺点Weakness/机会Opportunity/威胁Threat)

游戏提案 (Proposal)

n系統分析 (System Analysis)
n游戏设计文件撰写 (Game Design Document)
n传播媒介文件撰写 (Media Design Document)
n技术设计文案撰写 (Technical Design Document)
n游戏专案建立 (Game Project)
n时间表Schedule
n进程/控制Milestones / Check points
n管理Risk management
n测试计划书
n团队建立 (Team Building)

游戏开发 (Production)

美术量产制作
n(建模)Modeling
n(结构)Textures
n(动画)Animation
n(动作)Motion
n(特效)FX
n程序开发 (Coding)
n策划数值设定

游戏整和 (Integration)

n关卡串联 (Level Integration)
n数值调整 (Number Tuning)
n音效置入 (Audio)
n完成所有美术
n程旬与美术結合
n(攻略)Focus Group (说明书User Study)
n发布一些攻略截图Release some playable levels for focus group

游戏测试 (Testing)

nAlpha(α) 测试
n除錯 (Debug)
nBeta (β)测试
n数值微调
nGame play 微调
n对网络游戏而言 (MMOG)
n封閉测试 (Closed Beta)
n開放测试 (Open Beta)
n压力(极限)测试 (Critical Testing)
n网络游戏才有

关于Bug
nBug 分級 (Bug Classification)
nA Bug
nB Bug
nC Bug
nS Bug
nPrinciples
nBug 分級从严
nTester(测试对象?—) vs Debugger(调试程序)



三、游戏系统(Game Software System)

系统层System Layer - APIs

n3D Graphics API
nDirectX 9.0 SDK - Direct3D
nOpenGL 2.0
n2D API
nDirectX 9.0 SDK - DirectMedia
nWin32 GDI
nInput Device
nDirectX 9.0 SDK - DirectInput
nAudio
nDirectX 9.0 SDK - DirectSound / Direct3DSound / DirectMedia
nOpenAL
nOS API
nWin32 SDK
nMFC
nNetwork    
nDirectX 9.0 SDK - DirectPlay
nSocket library


引擎层Engine Layer

n3D Scene Management System
nScene Graph
nShaders
n2D Sprite System
nAudio System
nGamepad
nHotkey
nMouse
nTimers
nNetwork
nDDK Interface
nTerrain
nAdvanced Scene Management - Space Partition
nBSP Tree
nOctree
nCharacter System
nMotion Blending Techniques
nDynamics
nCollision Detection
nSoundFX
nUser Interface

游戏层Game Play Modula

nNPC (Non-playable Characters)
n Game AI
n Path Finding
n Finite State Machine
n ...
nAvatar
nCombat System
nFX System
nScript System
nTrading System
nNumber System
n ...
nGame Dev Tools
nVisual C/C++
n.net 2003
nVisual C/C++ 6.0+ SP5
nDirectX
nCurrent 9.0c
nNuMega BoundsChecker
nIntel vTune
n3D Tools
n3dsMax/Maya/Softimage
nIn-house Tools

游戏分类

nRPG (Role playing games角色扮演)
nAVG (Adventure games冒险类)
nRTS (Real-time strategy games既时战略)
nFPS (First-person shooting games主视觉射击)
nMMORPG(多人在线角色扮演)
nSLG (战棋)
n Simulation(模拟)
nSports(运动)
nPuzzle games(解迷)
nTable games(棋牌)

posted @ 2009-07-21 13:34 chaosuper 阅读(232) | 评论 (0)编辑 收藏

Connect to the Internet
    Terminate   sudo pppoeconf
                password
                input the adsl username and password
                choose default yes to all
                sudo pon dsl-provider
QQ for linux
    Download QQ for linux Deb Package and Install, Then U can use it .

posted @ 2009-07-21 07:05 chaosuper 阅读(94) | 评论 (0)编辑 收藏

 

在C++中,库的地位是非常高的。C++之父 Bjarne Stroustrup先生多次表示了设计库来扩充功能要好过

设计更多的语法的言论。现实中,C++的库门类繁多,解决的问题也是极其广泛,库从轻量级到重量级

的都有。不少都是让人眼界大开,亦或是望而生叹的思维杰作。由于库的数量非常庞大,而且限于笔者

水平,其中很多并不了解。所以文中所提的一些库都是比较著名的大型库。

标准库

标准库中提供了C++程序的基本设施。虽然C++标准库随着C++标准折腾了许多年,直到标准的出台才正

式定型,但是在标准库的实现上却很令人欣慰得看到多种实现,并且已被实践证明为有工业级别强度的

佳作。

1、   Dinkumware C++ Library

参考站点:http://www.dinkumware.com/'>http://www.dinkumware.com/

P.J. Plauger编写的高品质的标准库。P.J. Plauger博士是Dr. Dobb's程序设计杰出奖的获得者。其编

写的库长期被Microsoft采用,并且最近Borland也取得了其OEM的license,在其C/C++的产品中采用

Dinkumware的库。

2、   RogueWave Standard C++ Library

参考站点:

http://www.roguewave.com/'>http://www.roguewave.com/'>http://www.roguewave.com/'>http://ww

w.roguewave.com/

这个库在Borland C++ Builder的早期版本中曾经被采用,后来被其他的库给替换了。笔者不推荐使用

3、SGI STL

参考站点:

http://www.roguewave.com/'>http://www.roguewave.com/'>http://www.roguewave.com/'>http://ww

w.roguewave.com/

SGI公司的C++标准模版库。

4、STLport

参考站点:http://www.stlport.org/'>http://www.stlport.org/

SGI STL库的跨平台可移植版本。

 

准标准库——Boost

Boost库是一个经过千锤百炼、可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的

发动机之一。 Boost库由C++标准委员会库工作组成员发起,在C++社区中影响甚大,其成员已近2000人

。 Boost库为我们带来了最新、最酷、最实用的技术,是不折不扣的“准”标准库。

Boost中比较有名气的有这么几个库:

Regex
正则表达式库

Spirit
LL parser framework,用C++代码直接表达EBNF

Graph
图组件和算法

Lambda
在调用的地方定义短小匿名的函数对象,很实用的functional功能

concept check
检查泛型编程中的concept

Mpl
用模板实现的元编程框架

Thread
可移植的C++多线程库

Python
把C++类和函数映射到Python之中

Pool
内存池管理

smart_ptr
5个智能指针,学习智能指针必读,一份不错的参考是来自CUJ的文章:

Smart Pointers in Boost,哦,这篇文章可以查到,CUJ是提供在线浏览的。中文版见笔者在《Dr.

Dobb's Journal软件研发杂志》第7辑上的译文。


Boost总体来说是实用价值很高,质量很高的库。并且由于其对跨平台的强调,对标准C++的强调,是编

写平台无关,现代C++的开发者必备的工具。但是Boost中也有很多是实验性质的东西,在实际的开发中

实用需要谨慎。并且很多Boost中的库功能堪称对语言功能的扩展,其构造用尽精巧的手法,不要贸然

的花费时间研读。Boost另外一面,比如Graph这样的库则是具有工业强度,结构良好,非常值得研读的

精品代码,并且也可以放心的在产品代码中多多利用。

参考站点:http://www.boost.org'>http://www.boost.org(国内镜像:

http://www.c'>http://www.c'>http://www.c'>http://www.c-view.org/tech/lib/boost/index.htm

GUI

在众多C++的库中,GUI部分的库算是比较繁荣,也比较引人注目的。在实际开发中,GUI库的选择也是

非常重要的一件事情,下面我们综述一下可选择的GUI库,各自的特点以及相关工具的支持。

1、   MFC

大名鼎鼎的微软基础类库(Microsoft Foundation Class)。大凡学过VC++的人都应该知道这个库。虽

然从技术角度讲,MFC是不大漂亮的,但是它构建于Windows API 之上,能够使程序员的工作更容易,编

程效率高,减少了大量在建立 Windows 程序时必须编写的代码,同时它还提供了所有一般 C++ 编程的

优点,例如继承和封装。MFC 编写的程序在各个版本的Windows操作系统上是可移植的,例如,在

Windows 3.1下编写的代码可以很容易地移植到 Windows NT 或 Windows 95 上。但是在最近发展以及

官方支持上日渐势微。

 

2、   QT

参考网站:http://www.trolltech.com/'>http://www.trolltech.com/

Qt是Trolltech公司的一个多平台的C++图形用户界面应用程序框架。它提供给应用程序开发者建立艺术

级的图形用户界面所需的所用功能。Qt是完全面向对象的很容易扩展,并且允许真正地组件编程。自从

1996年早些时候,Qt进入商业领域,它已经成为全世界范围内数千种成功的应用程序的基础。Qt也是流

行的Linux桌面环境KDE 的基础,同时它还支持Windows、Macintosh、Unix/X11等多种平台。

 

3、WxWindows

参考网站:http://www.wxwindows.org/'>http://www.wxwindows.org/

跨平台的GUI库。因为其类层次极像MFC,所以有文章介绍从MFC到WxWindows的代码移植以实现跨平台的

功能。通过多年的开发也是一个日趋完善的GUI库,支持同样不弱于前面两个库。并且是完全开放源代

码的。新近的C++ Builder X的GUI设计器就是基于这个库的。

4、Fox

开放源代码的GUI库。作者从自己亲身的开发经验中得出了一个理想的GUI库应该是什么样子的感受出发

,从而开始了对这个库的开发。有兴趣的可以尝试一下。

参考网站:http://www.fox'>http://www.fox-toolkit.org/

5、   WTL

基于ATL的一个库。因为使用了大量ATL的轻量级手法,模板等技术,在代码尺寸,以及速度优化方面做

得非常到位。主要面向的使用群体是开发COM轻量级供网络下载的可视化控件的开发者。

6、   GTK

参考网站:http://gtkmm.sourceforge.net/

GTK是一个大名鼎鼎的C的开源GUI库。在Linux世界中有Gnome这样的杀手应用。而GTK就是这个库的C++

封装版本。


网络通信

ACE

参考网站:

http://www.c'>http://www.c'>http://www.c'>http://www.cs.wustl.edu/~schmidt/ACE.html

C++库的代表,超重量级的网络通信开发框架。ACE自适配通信环境(Adaptive Communication

Environment)是可以自由使用、开放源代码的面向对象框架,在其中实现了许多用于并发通信软件的

核心模式。ACE提供了一组丰富的可复用C++包装外观(Wrapper Facade)和框架组件,可跨越多种平台

完成通用的通信软件任务,其中包括:事件多路分离和事件处理器分派、信号处理、服务初始化、进程

间通信、共享内存管理、消息路由、分布式服务动态(重)配置、并发执行和同步,等等。

StreamModule

参考网站:http://www.omnifarious.org/StrMod/'>http://www.omnifarious.org/StrMod/

设计用于简化编写分布式程序的库。尝试着使得编写处理异步行为的程序更容易,而不是用同步的外壳

包起异步的本质。

SimpleSocket

参考网站:http://home.hetnet.nl/~lcbokkers/simsock.htm

这个类库让编写基于socket的客户/服务器程序更加容易。

A Stream Socket API for C++

参考网站:

http://www.pcs.cnu.edu/'>http://www.pcs.cnu.edu/~dgame/sockets/socketsC++/sockets.html

又一个对Socket的封装库。

XML

Xerces

参考网站:http://xml.apache.org/xerces-c/

Xerces-C++ 是一个非常健壮的XML解析器,它提供了验证,以及SAX和DOM API。XML验证在文档类型定

义(Document Type Definition,DTD)方面有很好的支持,并且在2001年12月增加了支持W3C XML

Schema 的基本完整的开放标准。

XMLBooster

参考网站:http://www.xmlbooster.com/'>http://www.xmlbooster.com/

这个库通过产生特制的parser的办法极大的提高了XML解析的速度,并且能够产生相应的GUI程序来修改

这个parser。在DOM和SAX两大主流XML解析办法之外提供了另外一个可行的解决方案。

Pull Parser

         参考网站:

http://www.extreme.indiana.edu/xgws/xsoap/xpp/'>http://www.extreme.indiana.edu/xgws/xsoap/

xpp/

         这个库采用pull方法的parser。在每个SAX的parser底层都有一个pull的parser,这个xpp把

这层暴露出来直接给大家使用。在要充分考虑速度的时候值得尝试。

Xalan

         参考网站:http://xml.apache.org/xalan-c/

         Xalan是一个用于把XML文档转换为HTML,纯文本或者其他XML类型文档的XSLT处理器。

CMarkup

         参考网站:http://www.firstobject.com/xml.htm'>http://www.firstobject.com/xml.htm

         这是一种使用EDOM的XML解析器。在很多思路上面非常灵活实用。值得大家在DOM和SAX之外寻

求一点灵感。

libxml++

http://libxmlplusplus.sourceforge.net/

libxml++是对著名的libxml XML解析器的C++封装版本

 

科学计算

Blitz++

参考网站:http://www.oonumerics.org/blitz/'>http://www.oonumerics.org/blitz/

Blitz++ 是一个高效率的数值计算函数库,它的设计目的是希望建立一套既具像C++ 一样方便,同时又

比Fortran速度更快的数值计算环境。通常,用C++所写出的数值程序,比 Fortran慢20%左右,因此

Blitz++正是要改掉这个缺点。方法是利用C++的template技术,程序执行甚至可以比Fortran更快。

Blitz++目前仍在发展中,对于常见的SVD,FFTs,QMRES等常见的线性代数方法并不提供,不过使用者

可以很容易地利用Blitz++所提供的函数来构建。

POOMA

参考网站:

http://www.c'>http://www.c'>http://www.c'>http://www.codesourcery.com/pooma/pooma

POOMA是一个免费的高性能的C++库,用于处理并行式科学计算。POOMA的面向对象设计方便了快速的程

序开发,对并行机器进行了优化以达到最高的效率,方便在工业和研究环境中使用。

MTL

参考网站:http://www.osl.iu.edu/research/mtl/'>http://www.osl.iu.edu/research/mtl/

Matrix Template Library(MTL)是一个高性能的泛型组件库,提供了各种格式矩阵的大量线性代数方面

的功能。在某些应用使用高性能编译器的情况下,比如Intel的编译器,从产生的汇编代码可以看出其

与手写几乎没有两样的效能。

CGAL

参考网站:www.cgal.org

Computational Geometry Algorithms Library的目的是把在计算几何方面的大部分重要的解决方案和

方法以C++库的形式提供给工业和学术界的用户。

 

游戏开发

Audio/Video 3D C++ Programming Library

参考网站:

http://www.galacticasoftware.com/products/av/'>http://www.galacticasoftware.com/products/a

v/

AV3D是一个跨平台,高性能的C++库。主要的特性是提供3D图形,声效支持(SB,以及S3M),控制接口

(键盘,鼠标和遥感),XMS。

KlayGE

参考网站:http://home.g365.net/enginedev/

国内游戏开发高手自己用C++开发的游戏引擎。KlayGE是一个开放源代码、跨平台的游戏引擎,并使用

Python作脚本语言。KlayGE在LGPL协议下发行。感谢龚敏敏先生为中国游戏开发事业所做出的贡献。

OGRE

参考网站:http://www.ogre3d.org'>http://www.ogre3d.org

OGRE(面向对象的图形渲染引擎)是用C++开发的,使用灵活的面向对象3D引擎。它的目的是让开发者

能更方便和直接地开发基于3D硬件设备的应用程序或游戏。引擎中的类库对更底层的系统库(如:

Direct3D和OpenGL)的全部使用细节进行了抽象,并提供了基于现实世界对象的接口和其它类。

 

线程

C++ Threads

参考网站:http://threads.sourceforge.net/

这个库的目标是给程序员提供易于使用的类,这些类被继承以提供在Linux环境中很难看到的大量的线

程方面的功能。

ZThreads

参考网站:http://zthread.sourceforge.net/

一个先进的面向对象,跨平台的C++线程和同步库。

 

序列化

s11n

参考网站:http://s11n.net/

一个基于STL的C++库,用于序列化POD,STL容器以及用户定义的类型。

Simple XML Persistence Library

参考网站:http://sxp.sourceforge.net/

这是一个把对象序列化为XML的轻量级的C++库。

 

字符串

C++ Str Library

参考网站:http://www.utilitycode.com/str/'>http://www.utilitycode.com/str/

操作字符串和字符的库,支持Windows和支持gcc的多种平台。提供高度优化的代码,并且支持多线程环

境和Unicode,同时还有正则表达式的支持。

Common Text Transformation Library

参考网站:http://cttl.sourceforge.net/

这是一个解析和修改STL字符串的库。CTTL substring类可以用来比较,插入,替换以及用EBNF的语法

进行解析。

GRETA

参考网站:http://research.microsoft.com/projects/greta/

这是由微软研究院的研究人员开发的处理正则表达式的库。在小型匹配的情况下有非常优秀的表现。

综合

P::Classes

参考网站:http://pclasses.com/

一个高度可移植的C++应用程序框架。当前关注类型和线程安全的signal/slot机制,i/o系统包括基于

插件的网络协议透明的i/o架构,基于插件的应用程序消息日志框架,访问sql数据库的类等等。

ACDK - Artefaktur Component Development Kit

posted @ 2009-07-11 18:41 chaosuper 阅读(111) | 评论 (0)编辑 收藏

一:首先找到编译器的目录,例如C:\Program Files\Vc98\bin
二:使用CD命令改变当前目录到C:\Program Files\VC98\bin下
三:使用DOS命令cl   test.cpp 编译生成可执行文件
四:直接运行可执行文件

posted @ 2009-07-08 20:48 chaosuper 阅读(830) | 评论 (0)编辑 收藏

http://www.vim.org

www.5dlinux.com

www.linux521.com

www.linuxforum.net(国内最高水平GNU站点)、
http://www.chinaunix.net/(中国最大的Unix技术社区)
Linux伊甸园http://www.linuxeden.com/
中国Linux公社http://www.linuxfans.org/nuke/index.php

著名网站 链接:
www.GNU.org
www.Debian.org
www.tldp.org
www.Php.net
www.Apache.org
www.CPAN.org
www.Mysql.com
www.Proftpd.org
www.kde.org
www.postfix.org
www.Samba.org
www.Xfree86.org

posted @ 2009-06-26 22:50 chaosuper 阅读(68) | 评论 (0)编辑 收藏

    
     今天,暑假的实习的安排出来了,下个星期就要去湖南省测评中心去实习了.

     今天,我决定要每天坚持自己写写日记,记得我好久没写过作文了,现在都有点写不好一整篇文章了.于是我决定从今天开始,经常写写日记,谢谢技术博客,提高自己的写作能力.英文写作也是一样,虽然说我的四级,六级都有500分上,但是到现在来,真正写作和应用的水平很差劲了.

     我下载了一些学习C/C++编程语言,数据结构和算法,Windows编程和Linux编程的书籍.等着没事的时候看看,多学习,少看电影,玩游戏.做无聊的事.

     虽然下定决心不考研了,但是计算机专业和数学专业,英语知识是一直要学习的,还有其他的方方面面.不管到什么时候,都不能丢掉学习,只有学习才能让自己处在不败之地.

    
    
    
posted @ 2009-06-24 23:39 chaosuper 阅读(100) | 评论 (0)编辑 收藏

仅列出标题
共12页: First 4 5 6 7 8 9 10 11 12