2008年11月10日星期一

方程式

方程式或��方程,是含有未知数的等式。方程中,恒等式叫做恒等方程,例如 \left(y+2\right)^2=y^2+4y+4;矛盾式叫做矛盾方程,如 x + 1 = x。在未知�等於某特定值�,恰能使等���的值相等者���件方程,例如 x + 3 = 8,在 x = 5 �等�成立。能使方程左右两边相等的未知数的解叫做方程的解。求出方程的解或说明方程无解的这一过程叫做解方程。
 
 
方程」一�的��

方程一�出�在中�早期的���著《九章算�》中,其「卷第八」即名「方程」。卷第八(一)�:

  今有上禾三秉,中禾二秉,下禾一秉,�三十九斗;上禾二秉,中禾三秉,下禾一秉,�三十四斗;上禾一秉,中禾二秉,下禾三秉,�二十六斗。�上、中、下禾�一秉各�何?

      �曰:
      上禾一秉,九斗、四分斗之一,
      中禾一秉,四斗、四分斗之一,
      下禾一秉,二斗、四分斗之三。

    方程�曰:置上禾三秉,中禾二秉,下禾一秉,�三十九斗,於右方。中、左禾列如右方。以右行上禾遍乘中行而以直除。又乘其次,亦以直除。然以中行中禾不�者遍乘左行而以直除。左方下禾不�者,上�法,下��。�即下禾之�。求中禾,以法乘中行下�,而除下禾之�。余如中禾秉�而一,即中禾之�。求上禾亦以法乘右行下�,而除下禾、中禾之�。余如上禾秉�而一,即上禾之�。�皆如法,各得一�。

�成�代��就是�:

�在��有上等黍3捆、中等黍2捆、下等黍1捆,打出的黍共有39斗;有上等黍2捆、中等黍3捆、下等黍1捆,打出的黍共有34斗;有上等黍1捆、中等黍2捆、下等黍3捆,打出的黍共有26斗。�1捆上等黍、1捆中等黍、1捆下等黍各能打出多少斗黍?

其「方程�」用阿拉伯�字表示即�:


\begin{array}{*{20}c}
   1 & 2 & 3  \\
   2 & 3 & 2  \\
   3 & 1 & 1  \\
   {26} & {34} & {39}  \\
\end{array}

《九章算�》�用直除法即以一行首���乘另一行再��消元�解方程。

若�可打出黍的斗�分��1捆上等黍x斗、1捆中等黍y斗、1捆下等黍z斗,可列方程�如下:


\left\{
  \begin{array}{l}
    3x + 2y +  z = 39, \\ 
    2x + 3y +  z = 34, \\ 
     x + 2y + 3z = 26. \\ 
  \end{array}
\right.
 解得 
\left\{
  \begin{array}{l}
    x = 9\frac{1}{4}, \\
    y = 4\frac{1}{4}, \\
    z = 2\frac{3}{4}. \\
  \end{array}
\right.

由此可知,此�的「方程」指的是包含多�未知量的�立一次方程�,即�在的�性方程�。

到了魏��期,大��家�徵注《九章算�》�,���「方程」下的定�是:

程,�程也。群物��,各列有�,�言其�,令每行�率。二物者再程,三物者三程,皆如物�程之。�列�行,故�之方程。

��所�的「�程」指的是按不同物品的�量��列出的式子。「�」就是式中的常��。「令每行�率」,就是由一��件列一行式子,�列代表一�未知量。「如物�程之」,就是有��未知�就必�列出��等式。「方」的本�是�,���船�起�,船�拴在一起,�之方。故而列出的一系列式子�「方程」。

 解方程的原理

方程同解原理

  • 方程的两边都加上(或都减去)同一个数或同一个整式,所得方程与原方程是同解方程。
  • 方程的两边都乘以(或都除以)不等于零的同一个数,所得方程与原方程是同解方程。
 
2008-11-10

chenxu

2008年11月7日星期五

触目惊心:一个食品专业本科生的自白

想当初系主任展望我们专业的美好前景的时候曾说"中国的食品行业还是有很大发展空间的" 现在终于知道什么是"发展空间"了套用师兄的话"中国的很多东西还真不是做给人吃的"。从"阜阳大头娃娃"到现在的"三鹿事件",从苏丹红到肝炎病毒矿泉水。我们的食品安全课从来不缺素材。几乎每一天上课的时候老师都在爆料,有些是大家都知道的,有些是我们专业的黑幕。当大家还考虑是买脑白金还是纽崔莱的时候,你是否想过你今天的午饭可能就是你若干年后各种各样怪病的罪魁祸首。中国现在的食品行业根本就不是什么营养健康的问题,而是安全卫生的问题。所以我现在特别想把我们上课说的那些食品问题贴出来。也许大家会觉得:吃了这么多年了也没什么事,或者是疑神疑鬼的什么都不能吃活着也没什么乐趣。但是我想说,有害食品实际上是个概率问题,就跟抽烟一样。都知道抽烟对什么身体不好会导致这病那病,但也有些老烟民活得好好的。但是从统计数字来看,抽烟还是会挂得更快一点。ok 我开始贴吧,以下是我们系教授说的,有什么不对的牛人可以指出来。

吃鱼的话 最好吃本地产的

新鲜鱼常温下高密度运输的存活时间是8小时。跨地域运输的时间少说要3小时,鱼市早上开市至少也得卖一天吧,怎么算都无法控制在8小时之内。消费者是不会去买死鱼的。怎么办呢只能加孔雀石绿。孔雀石绿是种工业染料,还可以用来炼铜,杀菌效果很好,又便宜。但对人体有致癌作用。这个东西基本上是行业的潜规则,没办法的。所以最好吃本地的鱼,越近越好。外地的水产品还是买冰鲜的吧 。

少吃青蛙和黄鳝

少吃青蛙是因为现在农药使用得太厉害了,青蛙食量很大,体内富集的农药相应的也比其他动物多一些。体内很少有不残留的。黄鳝用避孕药催熟大家肯定都知道。上次有个厂家找到我们系主任说要一起研究"避孕药催熟的代用方法" 汗啊避孕药催熟现在俨然成为养殖工艺流程的一部分了

大排档用的肯定是潲水油,只是比例多少问题

现在物价涨的这么厉害 大排档只能在价格上有点优势听我们系的老师说基本上用的都是潲水油,而且有很完善的分销网络。有负责收的 负责运的买的负责打点检验部门的检验部门的人自己私下都说,要查都有,谁让你自己去吃的

蔬菜上的农药残留用水是泡不掉的

我妈以前老是觉得菜上有农药的话 买回来泡一泡就没事了事实上使用最广泛的有机磷农药根本就不是水溶性的 是脂溶性的 怎么可能泡一泡就没了呢~~ 有这种事,农民兄弟吃了自己的种的菜中毒的,原因是农村普遍认识,觉得喷了农药以后,下点雨,打点露水,农药就失效了,然后继续喷。导致蔬菜上农药严重超标,因为农药像油一样粘在叶片上,很难洗掉的。然后就有人在一场大雨后把昨天才喷完农药的菜,拿来自己吃或者去卖。然后中毒,去灌肠。那么怎么洗呢,有人说用盐水。我觉得效果应该不好,没听说过氯化钠能增加有机磷在水中的溶解度。教授他自己是用洗碗精,只要一点就好。可能有人会觉得洗碗精会残留在菜里,吃了不好。一滴洗碗精洗菜最后残留的真的只有痕迹量的成分,每天洗碗残留在碗上的绝对是这个的数量级。洗碗精的成分就是十二烷基磺酸钠,没有文献显示它对人体有什么毒害作用,只要你不把它当泡泡果奶喝。

贝类在海鲜中最应该少吃的

原来广州流行吃生蚝(先在也还蛮流行的)放在几十年年前,这是没有什么大问题。现在不一样了,江河湖海都受到了不同程度的污染,重金属元素是就是其中之一。什么汞啊,镍啊,铬啊。贝类大部分长在大陆架上,以水和泥沙中的浮游动植物为食。而那些重金属就全部沉在泥沙里。外加一些乱七八糟的微生物(包括病原微生物)贝类在加工过程中因为壳的缘故很难食品安全要求的温度。餐馆里大多随便颠两下就出锅了,吃了不仅可能拉肚子,搞不好吃进了不少重金属毒素。所以吃海鲜最好少吃贝类(口味上我也觉得螃蟹什么的比较好吃)

点心最好买不带奶油的,一定要吃奶油的话,就舍得点去买个用天然奶油的吧

我这里说的不是会不会长胖的问题。而是人造奶油对人身体的影。
人造奶油学名是氢化植物油。这个名字听上去蛮健康的(我妈就这么想的,只要有"植物""天然"这样的字眼她就觉得蛮健康的)其它就是反式脂肪的一种。油炸食品被诟病为垃圾食品的主要原因之一就是它。
这里我直接引用文献好了:
"研究显示反式脂肪含量高的饮食和诸如心脏动脉疾病以及动脉硬化等疾病有关联性每天摄入反式脂肪5g,心脏病的发病几率会增加25%"
美国为什么得血管病的那么多,跟他们的饮食习惯肯定有关系的。以前还没有这个概念,现在越来越多的蛋糕店以使用天然奶油为荣了。
2007年7月,纽约市规定所有的速食店,都不可以再使用反式脂肪,否则将被罚款。
国内现在出了极个别的高级品牌连锁店(不要跟我说麦波啊)如breadtalk之类,有贵的要死的天然奶油蛋糕(其实也不值那个价)其他的一律都是氢化奶油做的。所以老人过生日,别再弄两块硕大无比的奶油蛋糕给他吃。要吃的话,把奶油刮了吧~~

远离反式脂肪绝对不是不吃奶油这么简单

接着刚才的话题,反式脂肪现在已经渗透到食品的各个角落,油炸食品,蛋糕,甜甜圈,饼干几乎都是用的凡是脂肪。因为它便宜啊,而且烹调特性,又好起酥又不容易变质。于是你用我用大家用。少吃点没关系,每天坚持不懈的吃的话...呵呵呵

说到坚持不懈,现在上班族喝咖啡就挺坚持不懈的。我马上就要工作了,估计到时也差不多吧。咖啡是跟伴侣在一起的,袋装的配好了,瓶装的自己配。伴侣可以使咖啡变得细滑香浓,但很少人去探究伴侣到底使什么?是什么呢?椰丝?我在没上专业课之前也一直使这么想的。多像啊,白白的,香香的。事实上伴侣是油,去看那些小得不能再小的标签吧,成分那一栏写着"氢化植物油" 伴侣的生产过程就是把氢化植物油喷雾,小液滴在空气中被裹上一层膜,然后干燥。每天一小匙,咖啡伴侣,就是一小匙反式脂肪。还不算上你蛋糕饼干油饼里的那些。记住每天5g反式脂肪,心脏病的发病几率会增加25%哦
最后说下保健品吧

从来没见过我们系的老师逢年过节送过什么保健品的。

老师帮企业做项目,企业除了给米米之外,也送会点产品过来意思一下。做枣子的送点枣子啦,做酒的送点酒啦。但保健品场除外,就给钱,给很多钱。绝对不会弄两箱口服液给老师家送,那太讽刺了。"我还不知道你这里头是什么,你还不如直接送点鸡蛋好" 现在中国的保健品市场,基本停留在买概念的阶段。Marketing绝对比R&D来钱来得快。
随便说几个吧


脑白金

吃过的人知道,一盒里头两大瓶水 加几板胶囊。

有效成分其实只有胶囊里的褪黑素 但几百块钱就几颗丸子,消费者不会买啦。太贵了。

加上两瓶主要成分比王老吉多一味药(山楂)的"纯天然制剂"大家就觉得划得来了。

赶上优惠大酬宾,再多给你一瓶"纯天然制剂"就"物超所值"了就"过节不收礼,只收脑白金"了。

回过头看褪黑素是什么.原来是美国空中乘务人员,倒时差用的药品。没什么害处,但也没什么神奇的效果。20刀一大瓶,一百粒。每一粒可以做两粒脑白金胶囊。自己算算他的利润吧


黄金搭档

脑白金的姐妹产品,一样□□的广告。一样的铺天盖地。把一块二一瓶的维生素买到一百二。牛!

他的诉求点是:中国人磷 铜超标,再补会有副作用。黄金搭档的营养成分都经过严格搭配 所以就值这个价。

学过营养的人都知道这根本就是扯淡嘛
广告上说的那些"面色红润有光泽个子长高不生病"没错是维生素的效果,维生素是重要,要不怎么叫维生素呢。但那是缺维生素的人吃了维生素以后的由亚健康转为健康的表现。换句话说,你如果不缺,甚至是不是严重缺乏的话,是没有明显效果的。有也是心理作用。你想你心情一好了自然就面色红润有光泽了跟他nnd 黄金搭档有什么关系啊 。

还有所谓的严格搭配跟更可笑。维生素又不是激素,多吃一克会死人。水溶性的维生素,如Vc 吃多了就随尿液排除体外了(还有理论说超量服用Vc可以防癌,是据牛逼无比的泡林说的,他自己就是实践着,拿了诺贝尔奖,提出泡林不相容原理还活了90多岁,有兴趣可以google 一下)脂溶性维生素吃多了倒是会对身体不好 但那是得怎么个吃法行啊 每天用鱼肝油炒菜?


安利的纤维素 蛋白粉

安利的东西都知道海贵了。他还喜欢一套套的让你买

他说的那些纯度啊 什么的 也都是真的。老外的工艺还是没得说

但是...我们真的需要99%的蛋白粉吗?

来我们来看看他的生产流程吧

拿最常见的番茄为例。安利有很多番茄系列的产品 又是番茄红素又是果胶又纤维素

把番茄买来 皮归皮 肉归肉 皮里绝不带一点肉 肉里绝不带一丝皮

然后皮去提取番茄红素 肉去做果胶 纤维素

再然后我们就有了高纯度的几百快一瓶的 番茄红素 果胶和纤体纤维素

安利的专业营养师会"建议你一起服用,效果更佳"

于是你花几百块 让失散了多年的 果皮和果******聚在一起

我花几块钱 买个西红柿 享受跟你相差无几的服务也许口味还更好点



不喝乳饮料,基本是水兑出来的,乳饮料一定会在标签上面标出来,尽管饮料两个字可能印刷得很小

尽量吃比较干的食品 或者糖度比较高易保存的
如果含水量高 货架期又长的 不要买 全是靠防腐剂 而不是低水分活度保存的

有些产品会用复合防腐剂 就是几种联合抗腐败的 这种少吃

香精有天然来源的 也有化工合成的 建议少吃 适量也无所谓
很多香精公司直接接触香精的调香师 应用工程师普遍过早出现白头发 就是频繁接触香精的结果

不要喝除了纯鲜奶之外的任何产品 UHT的不要喝
有些奶
香──奶味香精
浓──增稠剂,淀粉或胶体

酸奶:有条件的话 注意一下标签 买配料表里没有"复原乳、奶粉"字样的

冷冻的水饺之类
首先 一定不能买散装的 很可能是混有过期的解冻的坏包的拆开来卖的
第二包装上的生产日期如果是黑色打印的 最好也不要买 要买就要买是凹凸版的
第三 解过冻的最明显的就是 粘连 皮上有白霜 最简单的区分方法是皮上没白霜 一个一个独立的是一直保持在温度要求的 汤圆碎开的裂开的就是解冻过的 丸子上有霜也是解冻过的 鱼饺由于机器问题所以最后一道工序都是手工弯的 一定要买大品牌


99%的蟹******是香精+淀粉+色素+蛋白做的

超市里散装的冷冻食品其实污染也不小的

康师傅方便面 防腐剂肯定有 但是要买原厂的就是杭州厂的 不要买其他厂的东西
看包装上的日期是黑色还是凹凸版的 如果有黑有凹凸就买凹凸的 所有包装食品都一样的啊

大桶的正广和水 你一定要跟正广和订而不是送水站 如果你能不喝桶装水更好因为桶装水的桶是反复使用的 怕消毒不够 而且要尽快喝完时间久了会有细菌


靖江的猪肉浦 大包的肯定有问题,因为猪肉的位置不好 也就是我们说的下脚料 要买就要买双鱼的独立小包装 这个肉比较好 而且一定要注意生产日期 还有这个东西添加剂不会少少吃点

百威暂时没问题 酒原是美国过来的而且要喝就喝听装和小瓶装 700cc供应外面饭店的少喝为妙所有品牌哦

但是最近朝日的原料污染不要喝了

雪花是国内的酒料但是要看厂 以前我做采购的时候不喝的

反正 同志们 我现在所有零食基本不吃 幺么就吃销售量最大的当季吃 过了季节就不吃了还有蜜饯大家不要吃了 生产过程太脏了,真的

简单的说 从我们日常来看 能做到的是尽量吃热的食物 营养损失不谈 饭菜之类从冰箱拿出来之后先热一下 冰箱里的污染通常被忽略

小店的东西尽量少吃 如果你参与过饭店卫生检查 你会非常震惊的

有些东西怀疑 要坏掉了就不要吃 尤其是肉类 因为可怕的不是微生物 而是肉类常见菌的产物:毒素,轻者腹泻 种者死亡

没持续打乙肝疫苗的tx赶紧去补 我国是乙肝大国

大家不要忽略卫生 以为拉拉肚子就没事了 对你肠道系统免疫系统的伤害是会累积的马口铁和罐头食品,一般不含防腐剂 罐头的工艺已经非常非常成熟了 杀菌后有的可以保存很多年 不考虑营养问题 可以买哦

马口铁罐装,防腐剂少,但罐头食品的营养其实是比较少了,卫生问题,只要看不鼓起,应该是没啥问题。午餐肉主要问题是亚硝盐的问题,亚硝盐有致癌作用,越少吃越好。唉,我也爱吃,只能偶尔吃吃,解馋

冷饮推荐和路雪

烟熏的东西尽量少吃 还有肠类 有些肠为了颜色好看 除了色素问题 还有硝酸盐超标问题

饭店里的海鲜问题也很多 最简单的就是福尔马林泡了 看起来新鲜肉质又好又筋道

记得无锡有三白的特产 其中的银鱼 有些饭店里吃到的颜色好看到透明 都是泡出来的


我再爆一个外面饭店红烧肉的问题
红烧肉出锅前,加入乙基麦芽酚,加热后产生有光泽的铁锈红,并且会增加红烧肉醇厚的香气...至于加热后乙基麦芽酚是否会产生有毒物质,我不了解。。。反正饭店里红烧肉烧得比我老妈烧得好吃的,我就尽量克制不吃...

果汁
货架上的 所有果汁 除了盒装的 其他的都表买
透明包装的 瓶装的 都防腐剂 而且很多
因为果汁的特殊性 见光就开始变质 所以要喝好果汁就要买利乐包装的 而且一定要买100%的 稍微好点 防腐剂肯定有 如果有条件 自己榨果汁吃 苹果生梨洗洗干净去皮去核

说到西红柿 不要买那种屁股突出来的 是打激素的
也不要买畸形的很大的原理和草莓一样

做妈妈的 不要给小孩吃果冻了

所有菜 水果 都买当季的 有句老话 水果要吃中间上市的 蔬菜要吃新鲜上市额 太早和太晚或者反季节的 最好不要买
蔬菜上有点虫不要紧 拿回来洗干净 就好了
蔬菜上有洞洞眼 多泡泡 没洞洞眼 穷炮
能买到本地人自己提着篮子的蔬菜最好 很可能是自留地里多出来的

不要吃翅尖
记得学医的老师曾经告诉我 鸡从小到大打过的激素之类不会完全代谢掉 一般会在肢体末端累积就是鸡翅尖~

冷饮能不吃就不吃
1。冷链可能有漏洞 当然大品牌的自己送货还可以
2。热量高
3。对肠胃有刺激
4。营养难说,看一下营养成分表就知道啦

还有 巧克力 不是越甜越好 是要吃纯的
在瑞士 意大利 最值钱的巧克力叫黑薄片 最差的巧克力是果仁


中国已经把全麦的概念毁掉了
国外的全麦 是真的whole wheat 面粉本身在加工的时候保留了一部分麸 磨出的面粉发暗
但是营养全面 这种产品价格也不便宜
国内很多偷换概念 所谓全麦就是普通产品加上点看得见的麸皮之类 就叫全麦了 价格也低很多

有钱的话 就买贵的。。。价格是王道

海苔要看原料来源的 哎 否则色素和淀粉填充物也很多

讲到葡萄 我来八一下吧 尽管也是听别人说的我老爸的死党 XX市环保局局长 如今退休自己承包果园了 他曾经对我说过 吃什么都不要吃葡萄 那个打的农药实在太多了.

旁友说,葡萄的确是要打很多农药的,从一开始种藤起,就要打驱虫药水啊,否则藤都要死光了.打药水的时候,他家都是用环保纸袋套牢的,以免药水和葡萄接触.有些黑心果农,为了提早让葡萄上市,就要打催熟针.要果子大,就要打膨大剂(尤其是乒乓和巨峰),一直打到上市 前几天才歇手 .

我旁友家有四亩果园,就她公公一个人在忙,所以除了驱虫外,根本来不及做那些手脚,就算是驱虫药水,在葡萄上市前一个多月就要停止打了.所以她家的葡萄都要比外面上市的慢起码大半个月,而且个子和卖相也明显有些逊色,但是好歹人吃了放心呢.
朋友说,好的葡萄,刚采下来,哪怕不放冰箱放了外面,两天也不会变质.如果码子大的葡萄摸上去皮软软的,么有光泽和弹性的,很有可能是注射了膨大剂,那个经不住放的.
有白霜的都是打过农药的。。洗完还有的。。用纸巾擦擦

葡萄,橘子最恶心,不知道要打多少的农药

蔬菜 就吃颜色深额蔬菜比如 踏库菜 叶子颜色越深越好 越排毒 不过爆难吃
有条件最好吃有机产品.
水果当中农药含量最高的: 苹果, 生梨, 桃子, 葡萄, 草莓...
水果当中农药含量较底的; 香焦, 菠罗, 弥猴桃...
绿叶蔬菜相对而言, 农药的含量都老高的.

还有一个非常值得重视大家也都知道的 控制钠摄入量 饼干之类的 尤其是苏打 不要给父母吃 里面钠太多了 钠的控制其实是个养身过程 中国人普遍钠摄入超标~

火腿就肯定有亚硝酸类 不超标就可以 这类食品要经常注意的是
第一 表多吃 少吃点可以
第二 买颜色不好看的 你要好看就表健康 要健康就表好看
第三 要买新鲜 销量好的品牌

香草精和香草粉都是化学合成,以尽量少用为好,可以买干的香草叶来用。

泡打粉是小苏打(碳酸氢钠)和硫酸铝,淀粉的混合物,其中铝对儿童大脑发育不利。

烧烤不好的原因是糖,蛋白质烧焦致癌,自己烧一样会焦。尽量不要焦,但口味肯定是略焦的好。

康师傅的老板说的表喝他们的东西,他自己都不会喝

脉动,维体等,都是功能性饮料,补充体液的,如果不运动的时候喝会增加肾脏负担,减分不加分哦!!

我以前在KFC打过工,他们用的不是我们平时见到的桶装油......是一种类似黄油一样的物质,.经过温度熔化形成的.........!!!!!!!!!!! 是棕榈油,本身熔点高,常温下是固态。但是氢化植物油最常用原料是棕榈油

露露的杏仁露和椰树的椰奶可以放心吃吃 肯定没问题的 我老早就是做这个采购的
而且只有椰树和露露 这两个牌子过关 ok 但是露露没有椰树好

蛋白粉这种东西还是不要吃得好, 早两年就听说有人吃蛋白粉吃出问题了
 
2008-11-07

chenxu

生活2008-11-7

小平和毛主席散步。
小平:猪西,四介桑最同库地是洒子四琴喽?
(主席,世界上最痛苦的是啥子事情咯?)
主席:桑班!(上班)
小平:莫友比择更库地了?!
(没有比这更苦的了)
主席深吸了一口烟,凝视前方:田田桑班.....
(天天上班)
小平继续问:"有崽同库地吗"(有再痛苦的吗)
主席二目一瞪,把烟袋一摔:"甲板!"(加班)
小平又问:"那崽崽同库滴哩?"
(那再再痛苦的呢)
主席急了,说:"白甲板!" (白加班)
 
2008-11-07

chenxu

2008年11月6日星期四

[转]Ubuntu 分区和文件系统的选择

Ubuntu 分区和文件系统的选择

Category: Ubuntu, Author: Nicky, Popularity: 50%

对新手来说转移到 Ubuntu 第一件头痛的事情就是分区,因为它和 Windows 上的分区方式有很大的不同,在分区前首先得明白两件事,第一、Linux 的分区规定,第二、Linux 的文件系统,当你确定了文件系统后就可以选择一个适合自己的分区方案分区了。

第一、Linux 的分区规定

在 Linux 中规定 IDE 设备 (PATA和SATA) 前缀为 hd,SCSI 设备前缀为 sd,如:第一个 IDE 设备名为 hda,第二个名为 hdb。每一个硬盘最多只能有 4 个主分区,在 Linux 中最多可以划分 16 个分区 (包括逻辑分区),并规定主分区和扩展分区占用 1 ~ 16 编号中的前 4 个。那么 hda1, hda2, hda3, hda4 就代表第一个 IDE 设备中的三个主分区和一个扩展分区,而 hda5 ~ hda16 就是逻辑分区咯。

提示:GRUB 的分区规定有所不同,它是以数字来表示设备和分区的编号,而且是从 0 开始的,例如 Linux 分区 hda1 和 hda6,在 GRUB 里分别用 (hd0,0) 和 (hd0,5) 来表示。

第二、Linux 的文件系统

Linux 下的文件系统种类很多,如今的 Linux 内核都能很好的支持它们,在终端下输入 ls -l /lib/modules/`uname -r`/kernel/fs 查看你的内核所支持的文件系统。虽然文件系统种类多,但推荐大家使用的还是 ext3 和 ReiserFS 这类日志式文件系统 (Journal File System),好处就是安全性高,即使突然断电也能很好的保持数据完好,而且在速度上也有一定的优势。

常见的日志式文件系统有 NTFS, ext3, ReiserFS, SGI 的 XFS, IBM 的 JFS 等,微软的 NTFS 是最早的日志式文件系统,但 Linux 不直接支持,很多流行的 Linux 发行版都把 ext3 当成默认文件系统,原因是它能很容易地从 ext2 升级,ReiserFS 就没办法,连它自己的版本升级都要将磁盘重新格式化,但 ReiserFS 处理大量小文件存储操作很有优势,产生的磁盘碎片也很少,也不会像 ext3 一样生成讨厌的 lost+fount 目录。

了解更多的 Linux 文件系统知识。

第三、分区方案

Linux 下最少得有 2 个分区,一个是 /swap 交换分区,一个是 / 根分区。但一般人喜欢把 /boot /home /usr /var 这些挂载到单独的分区。为什么喜欢把 /boot 单独分出来,是因为一些老主板不支持大硬盘,这样就可以把 /boot 单独存放在硬盘的 1024 柱面内,不过现在还有这个必要吗?把 /var 单独分出来的原因是,它下面存放了一些日志和常变动的零时文件,容易产生碎片,而 /usr 就相当于 Windows 下面的 Program files+Windows 目录。

那么 /swap 交换分区需要的大小,根据官方的说法,应该是实际内存的两倍,但从实际情况来看,不建议超过 1G,不低于 128M。

综上所述,我建议一般桌面用户选用 ReiserFS 文件系统,分区方案如下 (80G):

/swap 512M
/ 8G
/home 70G

本文仅供参考。

 
2008-11-06

chenxu

2008年11月5日星期三

[转]开源软件新时代:55个经典开源Windows工具

http://blog.czug.org/woo/kaiyuanruanjianxinshidai-55gejingdiankaiyuanwindowsgongju/blogentry_view#1193646319
 
Web服务器也占据了最大的市场份额。人们普遍相信,开放源代码软件(open-source software,简称OSS)要比专有软件系统(即声明用户不能分享或修改软件的软件系统)要更安全。这可能有两个原因:首先,由于开源软件的源代码是向所有人开放的,因此任何人都可以找出并修补它的安全漏洞;其次,开源软件的流行程度毕竟还远远比不上Microsoft公司的Windows系列软件,因此它遭受黑客攻击的机会也要相对少很多。不过随着开源软件变得越来越流行,第二种情况可能将会发生改变。

从数量上看,目前的大多数开源软件都是基于Linux系统的,Windows开源软件的开发者仍然被笼罩在Microsoft的阴影下。但Windows开源软件并不乏优秀之作,你可以访问www.opensource.org或者www.sourceforge.net这类开源软件网站,里面搜集了不少针对Windows XP的开源软件,其中当然也包括了本文涉及到的55个Windows工具。

免费的选择

在这些精彩的开源软件中,功能强大的Open Office完全能够满足人们的绝大多数办公需求;基于GNU协议的图像处理程序包Gimp足可以媲美Photoshop;所见即所得的HTML编辑器 NVU则可被看作是Dreamweaver的一个简化版;而Media Portal则是Microsoft的Windows XP Media Center Edition强有力的竞争对手。此外,本文介绍的开源软件还涉及项目管理、音频编辑、PDF转换、即时通信、FTP、加密以及系统监测等多个领域,当然也少不了Web服务器。

开源软件已经进入了成熟期,它们功能强大而且运行稳定,你甚至可以完全利用开源软件搭建你的PC应用系统,而不用花一分钱去另外购买软件。Sun、IBM、Novell、Red Hat甚至Microsoft公司都开始把他们自己的一些软件以开放源代码的形式发布出来,从而允许其他人对软件进行修改和再开发。比如,Novell公司的Hula(www.hula-project.org)就是一款免费的协作服务器,它同时还提供了e-mail客户端、日历和通讯录,目前已经拥有超过25万名用户。

软件许可

开放源代码究竟意味着什么?从根本上来看,如果一款软件被称为开源软件,那么它的软件代码应该以可阅读并理解的形式提供给公众,并能够通过编译器转换成可执行代码。在编译过后,你可以随意复制、分发并用于任何商业或私人用途而不用支付任何软件许可费用。

这一基本概念在"开放源代码定义"(Open Source Definition)一文中有更详细的阐述,你可以参看www.opensource.org/docs/definition.php。一般来说,开源软件都适用于GNU GPL条款(GNU General Public License,GNU通用公共许可证)。不过,也有一些软件自称是开源软件,但实际上并不是。比如, PGP公司(www.pgpi.org)声称其加密程序为开源软件,但实际上你只能阅读其源代码,对源代码的修改和编译分发仍然是不被允许的,因为该加密程序采用了IDEA专利算法。

保持警惕

和商业软件一样,开源软件也同样存在不安全的因素。黑客可以对某个开源软件的源代码进行修改,比如加入打开系统后门的代码,这样他就能轻易入侵你的系统。因此,你应该养成只从可信任的来源获取开源软件的良好习惯,比较值得信赖的地方就是官方发布网站。使用P2P网络下载开源软件是相当危险的行为,因为你很难确保这些软件没有被别人修改过。

除了这些注意事项之外,我们相信你一定会被这些Windows XP.开源软件所折服,它们无论是从广度、深度还是软件质量上都丝毫不逊色于常见的商业软件。

Open Office 2 Beta:Office套装软件

网址:www.openoffice.org

开发人员不久前刚刚把Open Office由1.1.4升级到2.0,这款Office套装软件同步推出了基于Windows、Linux和Mac OS的三个版本,2.0版本在文字处理、电子数据表、演示工具和数据库方面都进行了大量的改进,并引入了不少新功能。

除了界面变得更美观、对Microsoft Office文件的兼容性更好之外,Open Office 2还引入了一种新的文件格式――由OASIS 组织所提出的"Open Office XML Format",这种以XML 为主体的开放文件格式也将逐渐被其他软件所支持。Open Office 2提供了网络安装模式和用户自定义安装模式,对于需要通过网络对多台机器进行软件安装的IT管理员来说相当方便。

Open Office 2首次拥有了自己的数据库组件(HSQLDB),你可以创建并管理数据库。商业用户则会受益于改进的SQL函数和更好的LDAP数据库连接性。在文字处理方面,创建新模板变得更加方便,改进的对话框则使软件更加直观。新的宏保护机制增强了它的安全性,文字隐藏功能则可以更好地保护你的隐私。电子数据表软件支持单元格嵌套,能够处理不超过65000行的数据,与Excel表格的兼容性也得到了加强。与前一个版本一样, Open Office 2.0也包含了与Microsoft PowerPoint近似的演示程序――Impress。

无论是对于办公用户还是家庭用户,Open Office(www.openoffice.org)都是Microsoft Office套装软件的一个很好的替代品,它还提供了一些独特的功能,比如包含了一个PDF生成工具。对于家庭用户来说,Microsoft Office的价格无疑显得过于昂贵,相比之下,Open Office要划算得多。

Thunderbird 1.02:邮件客户端

网址:www.mozilla.org

Microsoft的e-mail客户端Outlook和Outlook Express由于缺少安全特性且支持活动脚本,其安全性遭到了很多人的质疑。因此不少人尝试转向其他的邮件客户端程序,Mozilla Thunderbird 就是一种选择。

Thunderbird提供了一个向导程序,能让你导入来自Outlook和Outlook Express的邮件和邮箱地址。在Thunderbird中,所有重要的功能都可以通过工具条上的按钮进行快速操作。这款邮件客户端相当易用,而且允许你轻松地更换界面主题。快速搜索功能则允许你使用发件人或邮件主题为关键字进行搜索,并且可以按多个关键字进行分组排序显示。

Thunderbird还集成了具备自学习功能的垃圾邮件过滤器和RSS阅读器。它对IMAP(Internet Message Access Protocol)的支持也很不错,并且你还可以通过安装插件的方式为Thunderbird添加更多的功能,下载插件的网址为https: //addons.mozilla.org/extensions。

Ganttproject 1.11.1:项目计划工具

网址:http://ganttproject.sourceforge.net

你可以使用这款软件来制定项目计划并跟踪项目资源。Ganttproject 能够将项目的各个组成部分分层次排列,并与相应的人员和时间期限挂钩。它使用一个条状图来显示项目的进展情况,你能从中看到每项任务的预定完成时间和实际的进度。你可以为每个项目组成员分配任务,设定任务的优先级和完成期限。Ganttproject的输出功能相当完备,不仅可以把数据保存为pdf文件和 csv电子数据表文件,还可以输出为HTML文件发布到Internet上。由于Ganttproject是一款纯Java应用程序,因此它可以运行于 Windows、Linux和Mac OS等多个平台上。

WX Musik 0.4.1:音频播放器

网址:http://musik.berlios.de

你可以利用WX Musik管理你的音乐库,还可以利用它内置的播放器来播放音乐文件。WX Musik支持Mp3、ogg、wma、aiff、wav、ape、mpc和flac等文件格式,同时还支持Internet音频流。软件同时提供了基于 Windows和Linux的版本,安装之后它会提示你创建一个音乐库,你可以指定它去扫描包含音乐文件的文件夹。你还可以导入唱片的封面,它支持 png、 gif、jpg以及bmp 格式的图片。

WX Musik在显示音乐库中的歌曲时能够同时列出不少附加信息,比如专辑名、艺术家、歌曲长度和比特率。它还能对歌曲进行分类或排序,比如你可以选择列出最近播放的50首歌曲或者10首播放频率最高的歌曲。其他有用的功能包括:ID3标签自动修改功能、支持逻辑查询符的搜索功能。WX Musik还可以用来收听网络电台,并允许你对电台列表进行定制。

NVU 1.0:HTML编辑器

网址:www.nvu.com

NVU实际上起源于Netscape,还记得那个有点笨拙的HTML编辑器Netscape Composer吗?NVU就是在它的基础上进一步开发出来的,不过,最新版本的NVU已经不是当年的那只丑小鸭,它完全能够胜任专业网页设计工作的需求。与FrontPage和Dreamweaver这类商业HTML编辑器一样,这款软件(目前支持Windows、Linux和Mac OS平台)同时提供了源代码直接编辑和"所见即所得"这两种网页设计环境。

NVU严格遵循W3C联盟的标准,其生成的HTML代码也相当紧凑,它会帮你排除错误或冗余的代码。这款编辑器提供了拼写和语法检查功能,并且允许你采用不同的主题方案对界面进行定制。你可以自行创建并保存模版,还可以利用内置的FTP客户端把页面迅速上传到Web服务器上。

Audacity 1.2.3:音频文件编辑器

网址:http://audacity.sourceforge

有了Audacity 1.2.3这款多轨音频编辑器的帮助,你可以在Windows或Linux环境下轻松地完成音频的录制、播放、编辑、导入和输出工作。在进行编辑时,点击几下鼠标就可以对选中的音乐片段进行剪切、复制或插入操作。如果你想将某个mp3文件插入到当前打开的音频文件中,可以使用Project|import audio命令进行导入。其他功能还包括:对多个音轨进行混合、应用音频特效以及改变音乐的播放速度。Audacity内置了28个音频滤镜,并且可以进行扩充,它可支持VST、Ladspa和Nyquist这三种格式的插件。ID3标签编辑器和去除噪音功能让这款软件变得更加完美。如果你想把结果保存为 mp3文件,需要另行下载并安装一个Lame DLL编码器(http://lame.sourceforge.net)并通过File| Settings|File formats|Search Library指定该编码器的路径。除了编辑功能以外,Audacity 也支持从声卡的line-in端口录制声音。

Ant Renamer 2.0.8:文件名编辑器

网址:www.antp.be

在Windows的资源管理器下更改文件名是件比较痛苦的事情,因为它缺少自动处理的功能。一旦你需要对成批文件进行改名, Windows的资源管理器就显得力不从心了。比如,你可能需要为一批mp3文件的文件名加上统一的歌手名称,或者为一批图片文件加上时期和地点,或者需要将HTML文件名都改为小写字母,这时候Ant Renamer就可以发挥作用了。

你可以用鼠标将选中的一批文件拖到程序窗口中,然后进行相关的设置。比如设定需要删除哪些字符、替换哪些字符以及添加数字编号等等。添加数字编号时它允许你指定起始编号和编号增加幅度。在字符替换模式下,你可以搜索文件名中的特定字符或数字并将其替换为其他字符或数字。你还可以根据mp3标签来修改文件名或者根据首字符的大小写情况将整个文件名统一成大写或者小写状态。

PDF-Creator 0.81:PDF程序

网址:http://sector7g.wurzel6.de/pdfcreator/index_en.htm

用于生成PDF文件的商业软件或共享软件已经相当丰富,但完全免费的软件还不太多见。在这里我们要向你推荐PDF- Creator,它可以作为Windows网络打印机或者桌面打印机安装在你的系统中。这意味着你可以在任意的Windows应用程序中输出PDF文档。在打印对话框中,你可以指定文档的名称、创建日期和作者。在Format|PDF选项下,你可以选择兼容PDF 1.2或1.4,还可以指定首选的屏幕分辨率。PDF-Creator允许你调节PDF压缩选项,从而在输出质量和文件大小之间找到一个合理的平衡点。在输出方面,你还可以将文档输出为png、jpeg、bmp、tiff、ps(Postscript)或eps (Encapsulated Postscript)格式。如果将PDF-Creator集成到Windows资源管理器的上下文菜单中,你只需按两下鼠标就可以创建一个PDF文件。

GnuPG:邮件加密工具

网址:www.gnupg.org

未经加密的邮件很容易被不怀好意的偷窥者看到。如果对带有敏感信息的邮件进行加密和签名,就可以大大提高安全性。使用GNU Privacy Guard(GnuPG)就可以对邮件进行加密,当然你的邮件客户端也要提供相应的支持,如果你使用的是Mozilla Thunderbird,可以到http://enigmail.mozdev.org去下载Enigmail插件,对于Outlook客户端,也可以找到相应的插件。
    由于使用了公钥和私钥机制,加密后的邮件具有相当高的安全级别。每个GnuPG用户都会同时拥有一对密钥。使用公钥加密过的数据只能通过相应的私钥进行解密。另一方面,通过你的私钥生成的数字签名可以通过相应的公钥进行解密以确认某封邮件确实出自你手。公钥一般由密钥服务器提供。如果你收到一封经 GnuPG加密后的邮件,你将看不到任何文字信息,而只有一串乱七八糟的数字和字母。如果你想看到邮件原文,你需要GnuPG的支持,当然你还得有用来解密的私钥。即便你使用的邮件客户端不是Thunderbird或Outlook,也不用担心,在Internet上找到对应的GnuPGP 插件并不难。比如Pegasus Mail插件 (http://community.wow.net/grt/qdgpg.html)、Eudora插件(http://eudoragpg. sourceforge.net/ver2.0/en/) 和Outlook Express插件 (http://winpt.sourceforge.net/de/down load.php)。

Gaim 1.4.0:即时通信工具

网址:http://gaim.sourceforge.net

目前,即时通信软件的种类相当繁多,比如AOL、MSN和Yahoo都提供了这类软件,但这几个即时通信软件之间的互联互通还相当不方便。除了同时安装这几个即时通信软件之外,还有什么更好的办法吗?你可以试试Gaim,它是一款支持多个IM协议的即时通信工具,并同时提供了基于Linux、BSD、 Mac OS X和Windows的版本。它能够兼容Aim、ICQ (基于Oscar协议)、MSN Messenger、Yahoo、IRC、Jabber、Gadu-Gadu、SILC、Groupwise Messenger和Zephyr等即时通信软件。你可以同时用不同的账号在多个即时通信网络中登录。这意味着你可以一边与AOL Instant Messenger上的朋友聊天,一边向Yahoo Messenger上的同事发送文件,同时还能在某个IRC频道中聊天。
    Gaim对这些即时通信网络的支持相当全面,除了一般的聊天之外,像文件传输、离开提示、键入提示等等都可以支持。此外,它还拥有不少独特的功能。最流行的要算是好友提醒功能了,当某个特定的好友离开或者脱机,它会用某种方式对你进行提醒,比如发送消息、播放声音甚至运行某个程序。

Mozilla Firefox:Web浏览器

网址:www.mozilla.org

Firefox浏览器应该是Mozilla迄今为止最成功的一个开源软件项目。从2004年11月到2005年2月,这款 Internet Explorer的替代软件已经获得了超过2500万的下载次数(仅指官方网站和镜像网站的下载次数)。如果加上其它的下载网址以及用光盘方式发放的 Firefox,这个数量可能还会翻倍。Firefox拥有不少值得称赞的易用性功能,比如支持标签式浏览窗口、具备开放的插件接口,你可以安装广告拦截器、Google搜索条以及其它大量插件。Firefox不支持Visual Basic脚本、ActiveX和BHO(Browser Helper Objects),相对来说不太容易遭受恶意HTML代码的攻击,当然你也不能完全高枕无忧。

Filezilla 2.2.12c:FTP软件包

网址:http://filezilla.sourceforge.net

Windows一直没能提供一个好用的FTP客户端。Filezilla是一款非常值得推荐的FTP客户端,尽管它的功能丰富,但却非常方便好用。它的界面采用了多窗格设计,可以同时显示本地硬盘的内容和远端服务器上的目录,此外还列出了常用的ftp命令。
    Filezilla支持断点续传(下载和上传均支持),能绕过防火墙进行文件传输,同时也支持SSL加密传输方式。你可以通过编辑它的传输任务队列来选择所要传输的文件或安排传输顺序。在站点管理器(Site Manager)中选择好一个服务器之后就可以开始上传或下载文件了。软件开发者在Filezilla中同时为你提供了一个FTP服务器,如果你使用的是 Windows NT、2000、XP或2003系统,可以将FTP服务器作为系统服务来运行。

Media Portal 0.1.1.1:多媒体系统

网址:http://mediaportal.sourceforge.net;

Media Portal提供了视频、DVD、音频播放器和电视功能。不要担心软件设置的问题,它提供了一个方便的向导程序帮助你进行各项设置,比如指定多媒体文件的存放位置、设置TV或收音机的频道等。Media Portal支持Medion、Hauppauge、Pinnacle、Twinhan、Typhoon、ATI和Terratec的多媒体卡。在把电视节目录制到硬盘时,你可以自行选择适当的编码方式。你还可以利用插件来扩充Media Portal的功能,比如为它增加e-mail客户端的功能。该程序需要运行于Windows XP Service Pack 1或2之上,还需要DirectX 9.0c以上版本和Microsoft .Net Framework 1.1的支持。

Freemind 0.8:Mindmap软件

网址:http://freemind.sourceforge.net

什么是Mindmap?它是由英国人托尼・巴赞创造的一种笔记方法,和传统的直线记录方法完全不同,它以直观形象的图示建立起各个概念之间的联系。在国内,MindMap又被称为脑图或思维导图。Freemind 是一款Java程序,它可以帮你在一些随机的内容之间建立起有机的联系。

在Freemind中,首先你需要选中一个主题,然后从几个节点开始不断丰富 Mindmap的内容。每次加入新的元素,你都可以用连线将它与原有的元素联系起来。最终的Mindmap可以用HTML文档的形式输出。该软件的帮助信息十分全面,即便你对Mindmap不太熟悉也可以按照它的提示很快掌握Mindmap概念及软件的使用。

The Gimp 2.2.4:图像编辑软件

网址:www.gimp.org

这款图像编辑软件也同时提供了基于Windows、Linux和Mac OS的版本,而且比起那些商业图像编辑软件毫不逊色。刚开始你可能需要花一些时间适应它的界面,因为Gimp 的每一个界面元素――图像窗口、工具条、调色板都以单独的浮动窗口形式呈现在桌面上。如果你是Apple或Linux用户,可以选用Gimpshop(http://plasticbugs.com/index.php?p=241),它能让Gimp看上去更接近Photoshop,不过目前Gimpshop还没有提供基于Windows的版本。Gimp支持图层操作、alpha通道、渐变曲线、柱状图和色彩调节。你还可以利用滤镜、脚本和插件来增强它的功能。

Health Monitor 2.1:系统监测工具

http://healthmonitor.sourceforge.net

系统管理员可以利用Health Monitor 去监控网络中的每一台工作站PC或者服务器,一旦出现问题,它可以用邮件或者短信息的方式通知你。你还可以自行指定让它监控哪些组件和服务,比如CPU利用率、剩余硬盘空间、可用内存数量等。文件夹或者文件的变动也会被记录在案,所有的监测结果会被保存在一个log文件中。

插文1 :开源软件的来源

搜索开源软件并不像你想象的那么容易,因为很多下载网站并没有把免费软件和开源软件区分开来,而是把它们统称为"免费软件"。如果你想找到纯正的开源软件,那么Sourceforge.net 网站无疑是最值得去的地方。如果你是程序开发人员,可以花39美元注册(每年),注册之后就可以访问到与软件项目有关的更多的信息,你会在邮件中收到某个项目的子域名URL,一般的形式为projectname.sourceforge.net。如果你是个普通用户的话,也可以花同样的价钱成为注册用户,这样你就可以获得更多的搜索功能,还可以直接获得下载速度更快的镜像服务器网址,当然,你也有权获得软件的源代码。

插文2 :积极参与

即便你不是一个程序员,你也可以参与开源软件的开发过程。绝大多数开源软件项目都拥有自己的讨论组和邮件列表。如果你对软件的功能或菜单选项有什么好的建议,或者发现了bug,都可以向项目负责人进行汇报,每个用户的意见对开源软件的进一步完善都是有帮助的。

最佳开源软件一览

 
2008-11-05

chenxu

2008年11月4日星期二

[转]初学者的福音:游戏开发新手入门指南

http://doc.linuxpk.com/19704.html
1、选择一门语言

  第一件要做的事就是选择一门语言。你有一大堆的选择,包括 Basic、Pascal、C、C++、Java 等等,同样也有一大堆关于哪门语言最适合初学者的争论。欲了解各种语言的优缺点,请参阅 John Hattan 的绝妙文章《我该使用什么语言》。

  我这里建议使用 C 和 C++。有些人认为这些语言对于初学者来说太难了,但从我个人角度来说我是反对这个观点的,因为我自己就是从 C++ 起步的。另外,C/C++ 是目前最广泛应用的语言,因此,你能找到大量的资料和帮助。至于先学 C 还是先学 C++ 的问题不大,因为一旦你学习了其中一种,再学习另外一种就没太大问题了。不过,如果你一开始就选择 C++,请确信在学习面向对象编程之前,你已经了解并掌握了面向过程编程。(比如说,如果你在不使用类的前提下仍无法编好程序,先不要急于学习类)

  如果你发现学习 C/C++ 是一件很困难的事,不要紧,回过头选一门比较简单的语言来学,比如 Basic 或 Pascal。不过我认为,如果你坚持下去,并找一些好的资料,学习 C/C++ 的问题不大。

  你的下一个问题是:我如何学习 C/C++?我很高兴你问这个问题。最好的方法是去听课。有没有老师帮助解答问题,对于你的发展影响巨大,而且编程作业将确保你确实掌握了所学的东西。

  如果听课不在你的考虑范围内,下一个最好的办法就是找一些好书。不要把注意力放在那些"大全"书上,因为你终究会买几本。我建议你去一个本地书店,花点时间浏览一下介绍 C 和 C++ 的书,直到找到你能理解并能从中学到东西的一本。同时,你可能还想买几本进阶书或是一本参考书,但一旦你具有了这门语言的部分知识,你会对你需要什么有更好主意。可以在网站BOOKS频道中找到一些建议。

  在此,我简要的说明一下我见过的很多入门程序员,尤其是年轻人关心的事情:没有钱买书或其他东西。首先,有许多资源是免费的,包括图书馆和 Macmillan Computer Publishing (他们的网站www.mcp.com 上有数百本编程的书)。其次,如果你想成为一名优秀的程序员,你不得不考虑在这上面的投资。利用各种手段(合法的 ;<)去弄点钞票来。

  网络上有大量的 C 和 C++ 的学习教程,但是我认为这些教程作为你学习书本的参考要比作为单独的材料好得多。

  2、选择合适的编译器

  你写的程序,或源码是以文本文件存储的,你甚至可以用记事本来写 C/C++ 程序。但是,必须有样东西能把这些源码转化成一个可执行文件。对于 C 和 C++ 来说,这样东西就是一个编译器。

  现在有大量的编译器存在,其中有许多是免费的。选择一个合适的编译器是非常重要的,而免费编译器有个好处就是你能一个一个的试,看哪个你最喜欢。但是,免费编译器经常是比商业编译器功能少或缺少良好的技术支持。幸运的是,大多数商业编译器都有与完整版功能相同,但价格便宜许多的介绍版或学习版,唯一的限制是,你不能发布使用该编译器开发的程序(这点你肯定维持不久)。

  基本上,你选择什么样的编译器取决于你能花多少钱、你将在什么操作系统和平台上开发程序。如果你准备为 Windows 作贡献,我强烈建议使用微软的 Visual C++。它具有一个功能强大的开发环境,能让你倍感轻松,再也没有其他编译器能比它更适合开发 Windows 软件了。如果你是名学生,你可以以极低的价格获得一份拷贝。如果你准备在 DOS 下开发程序,你最好使用免费的 DJGPP。

  3、选择一个目标平台

  虽然你可能最终会为各种平台开发程序,你还是应该选择其中之一进行学习。当你学习语言的时候,在没进入图象编程之前,你大概想使用一个非 GUI 的操作系统,比如 DOS 或 UNIX。这有助于你将注意力集中在语言学习上,从而避开一些高层的问题,如 Windows 编程。

  不过,一旦你准备开始制作游戏,你就该考虑转换你的目标平台了。一下是几个常用的平台:

  Windows:如果你想在游戏行业里专职工作,或者你想让一大群人玩你的游戏,那么 Windows 是你的首选。你的目标客户大多数使用 Windows,且这个情况不会很快改变。目前大量的 Windows 游戏使用一种你大概听说过的名为 DirectX 的技术。DirectX 是一个允许你直接操作硬件的程序库,你可以依靠它写出高性能的游戏来。

  DOS:DOS 曾经是游戏的主要平台,但这已是昨日黄花。虽然有些爱好者仍然在为 DOS 开发游戏,但是已经没有商业游戏是为 DOS 开发的了,而且, DOS 正由于微软停止对它的支持而走向衰败。如果你刚开始做游戏,别选择 DOS,如果你已经这样做了,不要再停留了。注意:因为有很多游戏编程的书是为 DOS 写的,学习这些书时可能会认为在 DOS 里开发游戏有理有据。但是,随着 Windows 游戏编程书籍数量的增长,这种争论变得越来越少,也越来越没有意义。

  Linux:Linux 是 UNIX 的一个变种,由于它具有稳定、便宜、反微软情节等多个因素,它正变得越来越受欢迎。虽然目前的 Linux 用户还比较少,但是随着它的热爱者和市场的潜在增长,它也成为了作为目标平台的可行选择。

  Macintosh:苹果机拥有一群数量不多但非常忠诚的追随者,几乎每个我见过的苹果机爱好者都有一个强烈渴望更多苹果机游戏的愿望。我没有看过多少在苹果机上开发游戏的资料,但我确信确实有,因此,这也是个合理的选择。

  家庭游戏机:游戏机(如 Playstation、N64、Dreamcast 等等)游戏市场非常巨大,前景可观。然而,由于种种原因,开发非商业性的游戏机游戏在目前来说是不太可能的。你为游戏机开发的游戏大多都会被商业游戏公司买走。

  4、充足电

  是讨论真正做游戏的时候了。虽然我所说的大部分内容适用于其他语言,为简单起见,我将假定你选择了 C/C++ 来进行 Windows 编程。

  首先,在你考虑如何开始做游戏之前,你应该能很好的掌握 C 和 C++。你应该了解并精通指针、阵列、结构、函数,以及类等。做到了这一点,你就可以开始制作游戏了。

  本文无法教授你关于制作游戏所该了解的一切。幸运的是,这也不是必要的。有很多关于这方面的书,网上也有数以百计的教程。GameDev.net 应该会有目前你所需要的一切。下面是我对你起步的一些建议:

  学习一本或几本书。对于 Windows 游戏的初学程序员,《Tricks of the Windows Game Programming Gurus 》是一本极好的Windows编程入门教程。在这个站点里拥有许多本站 Books section 里所列出的好书。阅读这些书籍,运行所有的例程,反复研读你不理解的章节。

  使用网上教程补充书本的不足。网上教程除了阐明一些你阅读的东西外,通常也会包含一些书本上没有涉及的主题。

  找专家进行咨询。如果你无法从书上或教程中找到答案,到本站的留言版或聊天室来,这里有许多乐于提供帮助的人。

  不要把上面几点当成是个有序的过程,而应当看作是一个循环往复的并行过程。

  仅仅是学习、思考是远远不够的,你应当把你所学的东西付诸实践。从一个简单的游戏开始,逐步发展。你可以阅读一下 Geoff Howland 的文章《How do I Make Games? A Path to Game Development》。

  首先,为自己的工作制定一个计划。不要急于加入一个团队,因为那只会减缓你的学习进程。当你囊中拥有数个游戏时,你将为一个团队作出更大贡献。

  关于书本,有件事我要提醒一下:你需要阅读除了游戏编程外的其他书籍。为了制作出你在商店货价里看到的各种游戏,你将不得不钻研那些比大多数游戏编程书籍所授内容更高深的话题。有些可能你能从教程中找到,但是,你还是有必要买几本关于图形、人工智能、网络、物理等等方面的书。这是获得计算机科学学位的必经之路,因为你将被要求学习一些你认为与游戏编程无关的课程,而实际上它们是相关的。

  5、总结

  这里有一些能产生巨大差别的技巧:

  要只知道聚集知识,应用是关键。除非你使用了,否则你无法确实知道和理解这些东西。做一些小的测试程序来应用你所学的东西,并切实完成书上每个章节后的习题。

  玩大量的游戏。你会因此找到灵感,从而帮助你制作更优秀的游戏。当然,这也是一种受欢迎的解除编程压力的调剂方式。

  帮助别人。在你帮助别人的过程中,你会学到更多东西。

  完成你的作品。不要陷入这样一种思想的圈套中:"我知道我可以完成这个游戏,但是我有个更好的主意,我要换做这个好的项目。"如果你能坚持有始有终,你会学到更多的东西,并且你有作品证明你不仅仅是空谈。在你具有丰富的经验之前,做得简单一点,不要尝试制作一个又大又复杂的游戏。

  出发吧!你该动手制作 Quake 4 了。当然,可能不那么容易,但至少你可以从这个方向出发,并且知道去哪里查找更多的信息。经过多年的努力工作,你会成功的
 
2008-11-04

chenxu

我该使用何种语言(转载,原作者John Hattan)

       这是每个游戏编程FAQ里都有的问题。这个问题每星期都会在游戏开发论坛上被问上好几次。这是个很好的问题,但是,没人能给出简单的答案。在某些应用程序中,总有一些计算机语言优于其他语言。下面是几种用于编写游戏的主要编程语言的介绍及其优缺点。希望这篇文章能帮助你做出决定。
  This is a question that belongs in every game programming FAQ. It seems to be asked in a game development forum several times a week. It's a good question, though, and not one with an easy answer. There are computer languages that work better for some applications than others. Here is a list of the major programming languages used to write games along with descriptions, advantages, and disadvantages. Hopefully this list will help you make a decision.


1、
C语言
  如果说FORTRAN和COBOL是第一代高级编译语言,那么C语言就是它们的孙子辈。C语言是Dennis Ritchie在七十年代创建的,它功能更强大且与ALGOL保持更连续的继承性,而ALGOL则是COBOL和FORTRAN的结构化继承者。C语言被设计成一个比它的前辈更精巧、更简单的版本,它适于编写系统级的程序,比如操作系统。在此之前,操作系统是使用汇编语言编写的,而且不可移植。C语言是第一个使得系统级代码移植成为可能的编程语言。
  If FORTRAN and COBOL were the first compiled high-level languages, then C is their grandchild. It was created in the 70's by Dennis Ritchie as a tighter and more coherent successor to ALGOL, which was a structured successor to COBOL and FORTRAN. It was designed to be a smaller and simpler version of its predecessors, suitable for writing system-level programs, like operating systems. Before then, operating systems were hand-coded in assembly and were not portable. C was the first programming language that made portability a reality for system-level code.

  C语言支持结构化编程,也就是说C的程序被编写成一些分离的函数呼叫(调用)的集合,这些呼叫是自上而下运行,而不像一个单独的集成块的代码使用GOTO语句控制流程。因此,C程序比起集成性的FORTRAN及COBOL的"空心粉式代码"代码要简单得多。事实上,C仍然具有GOTO语句,不过它的功能被限制了,仅当结构化方案非常复杂时才建议使用。
  C is a language that supports structured programming. That is to say that C programs are written as collections of disconnected function calls that run top-down rather than a single monolithic block of code with program control-flow happening via GOTO statements. Hence, C programs are generally easier to follow than monolithic FORTRAN and COBOL spaghetti-code. Actually, C still has a GOTO statement, but its functionality is limited and it is only recommended as a last resort if structured solutions are much more complicated.

  正由于它的系统编程根源,将C和汇编语言进行结合是相当容易的。函数调用接口非常简单,而且汇编语言指令还能内嵌到C代码中,所以,不需要连接独立的汇编模块。
  True to its system-programming roots, it is fairly easy to interface C with assembly languages. The function-calling interface is very simple, and assembly language instructions can be embedded within C code, so linking in separate assembly-language modules is not necessary.

  优点:有益于编写小而快的程序。很容易与汇编语言结合。具有很高的标准化,因此其他平台上的各版本非常相似。
  Advantages: Good for writing small fast programs. Easy to interface with assembly language. Very standardized, so versions on other platforms are similar.

  缺点:不容易支持面向对象技术。语法有时会非常难以理解,并造成滥用。
  Disadvantages: Does not easily support object-oriented techniques. Syntax can be difficult and lends itself to abuse.

  移植性:C语言的核心以及ANSI函数调用都具有移植性,但仅限于流程控制、内存管理和简单的文件处理。其他的东西都跟平台有关。比如说,为Windows和Mac开发可移植的程序,用户界面部分就需要用到与系统相关的函数调用。这一般意味着你必须写两次用户界面代码,不过还好有一些库可以减轻工作量。
  Portability: While the core of the language and the ANSI function calls are very portable, they are limited to control-flow, memory management, and simple file-handling. Everything else is platform-specific. Making a program that's portable between Windows and the Mac, for instance, requires that the user-interface portions be using system-specific function calls. This generally means that you need to write the user-interface code twice. There are libraries, though, that make the process a bit easier.

  用C语言编写的游戏:非常非常多。
  Games Written in C: Lots and lots.

  资料:C语言的经典著作是《The C Programming Language》,它经过多次修改,已经扩展到最初的三倍大,但它仍然是介绍C的优秀书本。一本极好的教程是《The Waite Group's C Primer Plus》。
  Resources: The classic book about C is [The C Programming Language].It's gone through several iterations and has expanded to about three times its original size, but it's still a good introduction to the language. An excellent tutorial is [The Waite Group's C Primer Plus].


2、
C++
  C++语言是具有面向对象特性的C语言的继承者。面向对象编程,或称OOP是结构化编程的下一步。OO程序由对象组成,其中的对象是数据和函数离散集合。有许多可用的对象库存在,这使得编程简单得只需要将一些程序"建筑材料"堆在一起(至少理论上是这样)。比如说,有很多的GUI和数据库的库实现为对象的集合。
  C++ is the object-oriented successor to C. Object-oriented, or OO, programs are the next step beyond structured programming. OO programs are built out of objects, which are packages of data and functions collected into discrete units. There are many libraries of objects available that make writing programs as simple as pulling together a collection of program "building blocks" (at least in theory). For example, there are many GUI and database libraries that are implemented as collections of objects.

  C++总是辩论的主题,尤其是在游戏开发论坛里。有几项C++的功能,比如虚拟函数,为函数呼叫的决策制定增加了一个额外层次,批评家很快指出C++程序将变得比相同功能的C程序来得大和慢。C++的拥护者则认为,用C写出与虚拟函数等价的代码同样会增加开支。这将是一个还在进行,而且不可能很快得出结论的争论。
  C++ is the subject of controversy, especially in the game development community. There are features of C++, like virtual functions, that add an extra layer of decision-making to function calls, and critics are quick to point out that C++ programs can be larger and slower than C counterparts. C++ advocates point out, however, that coding the equivalent of a virtual function in C requires the same overhead. It's an on-going debate that's not likely to be decided soon.

  我认为,C++的额外开支只是使用更好的语言的小付出。同样的争论发生在六十年代高级程序语言如COBOL和FORTRAN开始取代汇编成为语言所选的时候。批评家正确的指出使用高级语言编写的程序天生就比手写的汇编语言来得慢,而且必然如此。而高级语言支持者认为这么点小小的性能损失是值得的,因为COBOL和FORTRAN程序更容易编写和维护。
  In my opinion, the overhead of C++ is simply the price you pay for a better language. This same debate went on in the 60's when high-level programming languages like COBOL and FORTRAN started to displace hand-coded assembly as the language of choice. Critics correctly pointed out that programs written in high-level languages were inherently slower than hand-tuned assembly and always would be. High-level language advocates pointed out, however, that the slight performance hit was worth it because COBOL and FORTRAN programs were much easier to write and maintain.

  优点:组织大型程序时比C语言好得多。很好的支持面向对象机制。通用数据结构,如链表和可增长的阵列组成的库减轻了由于处理低层细节的负担。
  Advantages: Much better than C for organizing large programs. Supports the object-oriented paradigm nicely. Libraries of common data structures, like linked lists and grow-able arrays, can remove much of the burden of having to deal with low-level details.

  缺点:非常大而复杂。与C语言一样存在语法滥用问题。比C慢。大多数编译器没有把整个语言正确的实现。
  Disadvantages: Extremely large and complicated. Like C, the syntax lends itself to abuse. Can be slower than C. Not many compilers implement the entire language correctly.

  移植性:比C语言好多了,但依然不是很乐观。因为它具有与C语言相同的缺点,大多数可移植性用户界面库都使用C++对象实现。
  Portability: Better than C, but still not great. While it shares the same disadvantage as C, most of the portable user-interface libraries are implemented as collections of C++ objects.

  使用C++编写的游戏:非常非常多。大多数的商业游戏是使用C或C++编写的。
  Games Written in C++: Lots and lots. Almost all commercial games are written in C or C++.

  资料:最新版的《The C++ Programming Language》非常好。作为教程,有两个阵营,一个假定你知道C,另外一个假定你不知道。到目前为止,最好的C++教程是《Who's Afraid of C++》,如果你已经熟知C,那么试一下《Teach Yourself C++》。
  Resources: The latest edition of The C++ Programming Language is excellent. As for tutorials, there are two camps, ones that assume you know C, and ones you don't. By far the best ground-up C++ tutorials are Who's Afraid of C++ and Who's Afraid of More C++. If you already know C, try Teach Yourself C++.


3、
我该学习C++或是该从C开始(Should I learn C++, or should I start with C )
  我不喜欢这种说法,但它是继"我该使用哪门语言"之后最经常被问及的问题。很不幸,不存在标准答案。你可以自学C并使用它来写程序,从而节省一大堆的时间,不过使用这种方法有两个弊端:
  I thought this bore mentioning, as it's the second most commonly asked question next to "which programming language should I use?"Unfortunately, the answer isn't black and white. You could save a lot of time by just teaching yourself C and writing apps, but there are two disadvantages to this approach.
你将错过那些面向对象的知识,因为它可能在你的游戏中使得数据建模更有效率的东西。
You're missing out on what will likely be a much more effective way of modeling the data in your game. By not learning OO programming off the bat, you could be enforcing bad programming habits that you'll have to un-learn later. Trust me on this one.


最大的商业游戏,包括第一人称射击游戏很多并没有使用C++。但是,这些程序的作者即使使用老的C的格式,他们通常坚持使用面向对象编程技术。如果你只想学C,至少要自学OO(面向对象)编程技术。OO是仿真(游戏)的完美方法,如果你不学习OO,你将不得不"辛苦"的工作。
Many of the biggest commercial games, including most first-person shooters, get by without C++. The authors of these programs, however, always insist that they're using object-oriented programming techniques even though they're using plain old C. If you want to just learn C, at least teach yourself OO programming techniques. OO is the perfect methodology for simulations (read: games), and you'll really be doing it "the hard way" if you push off learning OO.


4、
汇编语言(Assembly)
  显然,汇编是第一个计算机语言。汇编语言实际上是你计算机处理器实际运行的指令的命令形式表示法。这意味着你将与处理器的底层打交道,比如寄存器和堆栈。如果你要找的是类英语且有相关的自我说明的语言,这不是你想要的。
  By default, assembly was the first computer language. Assembly language is actually a command-based representation of the actual instructions that your computer's processor runs. That means you will be dealing with the low-level details of your processor, like registers and stacks. If you're looking for a language that's English-like and is relatively self-documenting, this isn't it!

  确切的说,任何你能在其他语言里做到的事情,汇编都能做,只是不那么简单 ― 这是当然,就像说你既可以开车到某个地方,也可以走路去,只是难易之分。话虽不错,但是新技术让东西变得更易于使用。
  By definition, anything you can do in any other language, you can do in assembly, only not as easily --of course, that's like saying that anywhere you can go in a car, you can go on foot, only not as easily. While the statement might be true, the later technologies made things much easier to use.

  总的来说,汇编语言不会在游戏中单独应用。游戏使用汇编主要是使用它那些能提高性能的零零碎碎的部分。比如说,毁灭战士整体使用C来编写,有几段绘图程序使用汇编。这些程序每秒钟要调用数千次,因此,尽可能的简洁将有助于提高游戏的性能。而从C里调用汇编写的函数是相当简单的,因此同时使用两种语言不成问题。
  In general, assembly language is not used on its own for games. Games that use assembly language use it in bits and pieces where it can improve performance. For example, DOOM is written entirely in C with a couple of drawing routines hand-coded in assembly. They are the routines that are called a few thousand times a second, so making the routine as tight as possible really helped the performance of the game. It's fairly easy to write a function in assembly that is call-able from C, so using both languages wasn't a problem.

  特别注意:语言的名字叫"汇编"。把汇编语言翻译成真实的机器码的工具叫"汇编程序"。把这门语言叫做"汇编程序"这种用词不当相当普遍,因此,请从这门语言的正确称呼作为起点出发。
  Special Note: The name of the language is "assembly". The name of the tool that converts assembly language into true machine code is called an "assembler". It's a common misnomer to call the language "assembler", so start out on the right foot by calling the language by its proper name.

  优点:最小、最快的语言。汇编高手能编写出比任何其他语言能实现的快得多的程序。你将是利用处理器最新功能的第一人,因为你能直接使用它们。
  Advantages: Is, by definition, the smallest and fastest language. A talented assembly programmer can write programs that are faster than anything that can be done in other languages. You'll be the first person to be able to take advantage of the processor's latest new features, because you can use them directly.

  缺点:难学、语法晦涩、坚持效率,造成大量额外代码 ― 不适于心脏虚弱者。
  Disadvantages: Difficult to learn, cryptic syntax, tough to do efficiently, and it takes much more code to get something done --not for the faint of heart!

  移植性:接近零。因为这门语言是为一种单独的处理器设计的,根本没移植性可言。如果使用了某个特殊处理器的扩展功能,你的代码甚至无法移植到其他同类型的处理器上(比如,AMD的3DNow指令是无法移植到其它奔腾系列的处理器上的)。
  Portability: Zilch. Since the language is designed for a single processor, it is not portable by definition. If you use extensions specific to a particular brand of processor, your code isn't even portable to other processors of the same type (for example, AMD 3DNOW instructions are not portable to other Pentium-class processors).

  使用汇编编写的游戏:我不知道有什么商业游戏是完全用汇编开发的。不过有些游戏使用汇编完成多数对时间要求苛刻的部分。
  Games Written in Assembly: I don't know of any commercial games that are written entirely in assembly. Some games, however, have the most time-critical portions done in assembly.

  资料:如果你正在找一门汇编语言的文档,你主要要找芯片的文档。网络上如Intel、AMD、Motorola等有一些关于它们的处理器的资料。对于书籍而言,《Assembly Language: Step-By-Step》是很值得学习的。
  Resources: When you're looking for documentation for an assembly language, you're basically looking for the documentation for the chip. There is some online information at [Intel], [AMD][Motorola] for their processors. As for books, [Assembly Language: Step-By-Step] is well-reviewed.


5、
Pascal语言
  Pascal语言是由Nicolas Wirth在七十年代早期设计的,因为他对于FORTRAN和COBOL没有强制训练学生的结构化编程感到很失望,"空心粉式代码"变成了规范,而当时的语言又不反对它。Pascal被设计来强行使用结构化编程。最初的Pascal被严格设计成教学之用,最终,大量的拥护者促使它闯入了商业编程中。当Borland发布IBM PC上的 Turbo Pascal时,Pascal辉煌一时。集成的编辑器,闪电般的编译器加上低廉的价格使之变得不可抵抗,Pascal编程了为MS-DOS编写小程序的首选语言。
  Pascal was designed by Nicolas Wirth in the early 70's, because he was dismayed to see that FORTRAN and COBOL were not enforcing healthy structured programming disciplines in students. "Spaghetti code" was becoming the norm, and the languages of the time weren't discouraging it. Pascal was designed from the ground up to enforce structured programming practices. While the original Pascal was designed strictly for teaching, it had enough advocates to eventually make inroads into commercial programming. Pascal finally took the spotlight in a big way when Borland released Turbo Pascal for the IBM PC. The integrated editor, lightning-fast compiler, and low price were an irresistible combination, and Pascal became the preferred language for writing small programs for MS-DOS.

  然而时日不久,C编译器变得更快,并具有优秀的内置编辑器和调试器。Pascal在1990年Windows开始流行时走到了尽头,Borland放弃了Pascal而把目光转向了为Windows 编写程序的C++。Turbo Pascal很快被人遗忘。
  The momentum, however, did not stay. C compilers became faster and got nice built-in editors and debuggers. The almost-final nail in Pascal's coffin happened in the early 1990's when Windows took over, and Borland ignored Pascal in favor of C++ for writing Windows applications. Turbo Pascal was all but forgotten.

  最后,在1996年,Borland发布了它的"Visual Basic杀手"― Delphi。它是一种快速的带华丽用户界面的 Pascal编译器。由于不懈努力,它很快赢得了一大群爱好者。
  Finally, in 1996, Borland released its "Visual Basic Killer", Delphi. Delphi was a fast Pascal compiler coupled with a gorgeous user interface. Against all odds (and the Visual Basic juggernaut), it gained a lot of fans.

  基本上,Pascal比C简单。虽然语法类似,它缺乏很多C有的简洁操作符。这既是好事又是坏事。虽然很难写出难以理解的"聪明"代码,它同时也使得一些低级操作,如位操作变得困难起来。
  On the whole, Pascal is simpler than C. While the syntax is similar, it lacks a lot of the shortcut operations that C has. This is a good thing and a bad thing. It's harder to write inscrutable "clever" code, but it makes low-level operations like bit-manipulation more difficult.

  优点:易学、平台相关的运行(Dephi)非常好。
  Advantages: Easy to learn. Platform-specific implementations (Delphi) are very nice.

  缺点:"世界潮流"面向对象的Pascal继承者(Modula、Oberon)尚未成功。语言标准不被编译器开发者认同。专利权。
  Disadvantages: "World class" OO successors to Pascal (Modula, Oberon) have not been successful. Language standards are not adhered to by compiler-makers. Proprietary.

  移植性:很差。语言的功能由于平台的转变而转变,没有移植性工具包来处理平台相关的功能。
  Portability: Dismal. The features of the language changes from platform to platform, and there are no portability toolkits to handle platform-specific features.

  使用Pascal编写的游戏:几个。DirectX的Delphi组件使得游戏场所变大了。
  Games Written in Pascal: A couple. The DirectX components for Delphi have made the playing field more level.

  资料:查找跟Delphi有关的资料,请访问:Inprise Delphi page。
  Resources: The find out about Delphi, check out the Inprise Delphi page.


6、
Visual Basic
  哈,BASIC。回到八十年代的石器时代,它是程序初学者的第一个语言。最初的BASIC形式,虽然易于学习,却是可怕的无组织化,它义无返顾的使用了GOTO充斥的"空心粉式代码"。当回忆起BASIC的行号和GOSUB命令,没有几个人能止住眼角的泪水。
  Ahh, BASIC. Way back in the stone-age of the 80's, it was the first language for budding programmers. The original incarnations of BASIC, while easy to learn, were horribly unstructured, leading to the a rash of GOTO-laden "spaghetti-code". Not many people wipe away tears when reminiscing about BASIC's line numbers and the GOSUB command.

  快速前进到九十年代早期,虽然不是苹果公司所希望的巨人,HyperCard仍然是一个在Windows下无法比拟的吸引人的小型编程环境。Windows下的HyperCard克隆品如ToolBook又慢又笨又昂贵。为了与HyperCard一决高下,微软取得了一个小巧的名为Thunder编程环境的许可权,并把它作为Visual Basci 1.0发布,其用户界面在当时非常具有新意。这门语言虽然还叫做Basic(不再是全部大写),但更加结构化了,行号也被去除。实际上,这门语言与那些内置于TRS-80、Apple II及Atari里的旧的ROM BASIC相比,更像是带Basic风格动词的Pascal。
  Fast-forward to the early 1990's. While not the monster that Apple was hoping for, HyperCard was a compelling little programming environment that had no equal under Windows. Windows-based HyperCard clones like ToolBook were slow, clunky, and expensive. To finally compete with HyperCard, Microsoft licensed a neat little programming environment named Thunder, releasing it as Visual Basic 1.0. The user-interface was very innovative for the time. The language, while still called Basic (and no longer all-caps), was much more structured. Line numbers were mercy-killed. The language was, in fact, much closer to Pascal with Basic-style verbs than the old ROM BASIC that was built into every TRS-80, Apple ][, and Atari.

  经过六个版本,Visual Basic变得非常漂亮。用户界面发生了许多变化,但依然保留着"把代码关联到用户界面"的主旨。这使得它在与即时编译结合时变成了一个快速原型的优异环境。
  Six versions later, Visual Basic is pretty deluxe. The user-interface has made some changes, but still retains its "attach bits of code to the user-interface" motif. This, in combination with instantaneous compiling, makes it a terrific environment for fast prototyping.

  优点:整洁的编辑环境。易学、即时编译导致简单、迅速的原型。大量可用的插件。虽然有第三方的DirectX插件,DirectX 7已准备提供Visual Basic的支持。
  Advantages: Neat IDE. Easy to learn. Instantaneous compiling makes for very fast and easy prototyping. Lots and lots of add-ons available. While there are currently third-party DirectX add-ons for Visual Basic, DirectX version 7 is going to include support for Visual Basic right out of the box.

  缺点:程序很大,而且运行时需要几个巨大的运行时动态连接库。虽然表单型和对话框型的程序很容易完成,要编写好的图形程序却比较难。调用Windows的API程序非常笨拙,因为VB的数据结构没能很好的映射到C中。有OO功能,但却不是完全的面向对象。专利权。
  Disadvantages: Apps are large and require several large runtime DLL's to run. While form and dialog-based apps are easy to make, writing good graphical apps is more difficult. Calling Windows API functions is clunky, because VB data structures don't map nicely to C. Has OO features, but is not fully object-oriented. Proprietary.

  移植性:非常差。因为Visual Basic是微软的产品,你自然就被局限在他们实现它的平台上。也就是说,你能得到的选择是:Windows,Windows或Widnows。当然,有一些工具能将VB程序转变成Java。
  Portability: Worse than dismal. Since Visual Basic is owned by Microsoft, you're pretty-much limited to whatever platforms they've ported it too. That means that you've got the choice of Windows, Windows, or Windows. Note that there are, however, a couple of tools that help convert VB apps to Java.

  使用Visual Basic编写的游戏:一些。有很多使用VB编写的共享游戏,还有一些是商业性的。
  Games Written in Visual Basic: A few. There are lots of shareware games done in VB, and a couple of commercial offerings.

  资料:微软的VB页面有一些信息。
  Resources: The [Microsoft VB page].


7、
Java
  Java是由Sun最初设计用于嵌入程序的可移植性"小C++"。在网页上运行小程序的想法着实吸引了不少人的目光,于是,这门语言迅速崛起。事实证明,Java不仅仅适于在网页上内嵌动画 ― 它是一门极好的完全的软件编程的小语言。"虚拟机"机制、垃圾回收以及没有指针等使它很容易实现不易崩溃且不会泄漏资源的可靠程序。
  Java was originally designed by Sun to be a portable "small C++" that could be used in embedded applications. The idea of running little applications in a web-page really captured people's imaginations, so the language caught on quickly. It turned out that Java wasn't just suitable for embedding animated banners in web pages --it was a downright nifty little language for application programming! The "virtual machine" nature, garbage collection and lack of pointers made it easy to make bulletproof apps that didn't crash and had no resource leaks.

  虽然不是C++的正式续篇,Java从C++ 中借用了大量的语法。它丢弃了很多C++的复杂功能,从而形成一门紧凑而易学的语言。不像C++,Java强制面向对象编程,要在Java里写非面向对象的程序就像要在Pascal里写"空心粉式代码"一样困难。
  While not an official "sequel" to C++, Java borrows very heavily from C++ syntax. It dumps many of the more difficult C++ features to reveal a rather compact and easy-to-learn language. Unlike C++, Java enforces object-orientation with a heavy hand. Writing a non-OO app in Java is as difficult as writing spaghetti-code in Pascal.

  优点:二进制码可移植到其他平台。程序可以在网页中运行。内含的类库非常标准且极其健壮。自动分配合垃圾回收避免程序中资源泄漏。网上数量巨大的代码例程。
  Advantages: Binaries are portable to other platforms. Apps can run embedded in web pages. The included class library is reasonably standardized and extremely robust. Automatic allocation and garbage collection all but eliminates resource leaks in applications. Zillions of code examples on the web.

  缺点:使用一个"虚拟机"来运行可移植的字节码而非本地机器码,程序将比真正编译器慢。有很多技术(例如"即时"编译器)很大的提高了Java的速度,不过速度永远比不过机器码方案。早期的功能,如AWT没经过慎重考虑,虽然被正式废除,但为了保持向后兼容不得不保留。越高级的技术,造成处理低级的机器功能越困难,Sun为这门语言增加新的"受祝福"功能的速度实在太慢。
  Disadvantages: Uses a "virtual machine" to run portable byte-code rather than native machine code, so apps are slower than true compilers. There are technologies (like "Just In Time" compilers) that greatly improve the speed of Java, but the speed will likely always lag behind true machine-code solutions. Early features like the Abstract Windowing Toolkit were not well thought-out and, while officially abandoned, have to hang around for backward compatibility. Is very high-level, which makes dealing with any low-level machine features very difficult. Sun is pretty slow in adding new "blessed" features to the language.

  移植性:最好的,但仍未达到它本应达到的水平。低级代码具有非常高的可移植性,但是,很多UI及新功能在某些平台上不稳定。
  Portability: The best of the lot, but still not what it should be. The low-level code is very portable, but a lot of the UI and newer features are wobbly on some platforms.

  使用Java编写的游戏:网页上有大量小的Applet,但仅有一些是商业性的。有几个商业游戏使用Java作为内部脚本语言。
  Games Written in Java: Lots of little applets in web pages, but only a couple of commercial offerings. Several commercial games use Java as the internal script language.

  资料:Sun的官方Java页面有一些好的信息。IBM也有一个非常好的Java页面。JavaLobby是一个关于Java新闻的最好去处。
  Resources: [Sun's official Java page] has some good info. IBM also has an excellent [Java page]. The [JavaLobby] is the best place to go for news about Java.


8、
创作工具
  上面所提及的编程语言涵盖了大多数的商业游戏。但是也有一个例外,这个大游戏由于它的缺席而变得突出。
  All of the programming languages mentioned above cover pretty-much every commercial game out there. There is one exception, but it's such a big one that it would be conspicuous by its absence.

  "神秘岛"。没错,卖得最好的商业游戏不是使用以上任何一门语言编的,虽然有人说"神秘岛"99%是使用 3D建模工具制作的,其根本的编程逻辑是在HyperCard里完成的。
  Yep, the best selling commercial game of all time wasn't written in any of the above languages. While some would say that 99% of Myst was written using 3D modeling tools, the underlying program logic was done in HyperCard.

  多数创作工具有点像Visual Basic,只是它们工作在更高的层次上。大多数工具使用一些拖拉式的流程图来模拟流程控制。很多内置解释的程序语言,但是这些语言都无法像上面所说的单独的语言那样健壮。
  Most authoring tools are a bit like Visual Basic, only they work at a much higher level. Most of the tools use some kind of click-and-drag flowchart motif to model control flow. Many contain embedded interpreted programming languages, but these languages aren't nearly as robust as the standalone languages mentioned above.

  优点:快速原型 ― 如果你的游戏符合工具制作的主旨,你或许能使你的游戏跑得比使用其他语言快。在很多情况下,你可以创造一个不需要任何代码的简单游戏。使用插件程序,如Shockware及IconAuthor播放器,你可以在网页上发布很多创作工具生成的程序。
  Advantages: Fast prototyping --if your game fits the motif the tool's made for, you can probably get your game running faster than any other language. In many cases, you can make a rudimentary game without writing any code. You can broadcast many authored apps on web pages with plug-ins like Shockwave and IconAuthor Player.

  缺点:专利权,至于将增加什么功能,你将受到工具制造者的支配。你必须考虑这些工具是否能满足你游戏的需要,因为有很多事情是那些创作工具无法完成的。某些工具会产生臃肿得可怕的程序。
  Disadvantages: Proprietary, so you're at the mercy of the tool-maker as to what features will be added. You've gotta really look at these tools to see if they'll do everything that your game's gonna require, because there are things that authoring tools simply can't do. Some of these tools produce frighteningly bloated apps.

  移植性:因为创作工具是具有专利权的,你的移植性以他们提供的功能息息相关。有些系统,如Director可以在几种平台上创作和运行,有些工具则在某一平台上创作,在多种平台上运行,还有的是仅能在单一平台上创作和运行。
  Portability: Since authoring tools are proprietary, your portability is limited to whatever they offer. Some systems, like Director, can author and run on several platforms. Some tools can author on one platform but play on several. Some are single-platform beasts.

  使用创作工具编写的游戏:"神秘岛"和其他一些同类型的探险游戏。所有的Shockwave游戏都在网络上。
  Games Written in Authoring Tools: Myst and a few other "exploration" games of the same genre. All of the Shockwave games on the web.

  资料:Director、HyperCard、SuperCard、IconAuthor、Authorware。


9、
结论(Conclusion)
  你可能希望得到一个关于"我该使用哪种语言"这个问题的更标准的结论。非常不幸,没有一个对所有应用程序都最佳的解决方案。C适于快而小的程序,但不支持面向对象的编程。C++完全支持面向对象,但是非常复杂。Visual Basic与Delphi易学,但不可移植且有专利权。Java有很多简洁的功能,但是慢。创作工具可以以最快的速度产生你的程序,但是仅对某一些类型的程序起作用。最好的方法是决定你要写什么样的游戏,并选择对你的游戏支持最好的语言。"试用三十天"的做法成为工业标准是件好事情。
  You probably were hoping for a more cut-n-dry conclusion to the "what programming language do I use" dilemma. Unfortunately, there's no solution that's optimal for all applications. C is suited for fast and small applications, but doesn't support OO programming well. C++ has very complete OO support, but is frighteningly complicated. Visual Basic and Delphi are easy to learn, but are non-portable and proprietary. Java has a lot of neat features, but is slow. Authoring tools can get your app working quickest, but are only useful for a narrow range of applications. It might just be best for you to figure out what kind of game you're writing and pick the language that would best support your game. It's a good thing that the "try it free for 30 days" offer has become the industry norm :-)



Trackback: http://tb.donews.net/TrackBack.aspx?PostId=910263

 
2008-11-04

chenxu

2008年11月3日星期一

ubuntu 备份更新文件

 
所下载的软件包一般放在/var/cache/apt/archives/目录下
 
deb文件备份方法
sudo cp /var/cache/apt/archives/*.deb /backup/deb
 
 

重新安装系统后,可以在终端输入以下命令:

cd /backup/deb/ 在终端进入备份的目录

sudo cp *.deb /var/cache/apt/archives/ 复制所有文件到/var/cache/apt/archives/ 目录

sudo apt-get update 更新

2008-11-03

chenxu

[转]破解了根用户的密码

 在单用户模式下破解root密码
    在Grub启动引导菜单界面,按'e'编辑kernel的参数,在后面加上single。
    按'b'引导系统,在出现像 sh-version# 的shell提示符时,输入 passwd root 命令,然后输入新的root密码。
    设置好新的root密码后,在shell提示符下输入 exit 命令退出当前shell,系统继续引导,登录系统,发现root密码已被成功修改。
    所以,你应该为你的Grub引导程式设置一个强悍的密码,以避免此类破解。
参考:
五分钟破解Linux系统根用户ROOT密

 

 

http://hi.baidu.com/sfiis/blog/item/0d759d08814187d462d986ae.html

破解ROOT根用户密码过程

    其实对于用户密码的破解并不难,利用其编辑root用户的功能可以利用命令代码进行系列操作,步骤如下图:

步骤1

    在进入Linux系统界面的过程中可以进行编辑操作系统,在提示下输入"e"可以进入编辑的选择界面,从而进行下一步的操作。

步骤2

    在进入编辑的界面和上一个界面的显示风格一样,但是不同的是多出可以编辑的选项,操作如图。通常输入"single"进入单用户模式下进行操作修改,但是笔者在这里建议输入"空格1"进入操作系统修改界面。

步骤3

    通过重新启动后,系统会自动停止到编辑状态,用户可以通过如下的代码进行密码的重新修改,设定新的密码,值得注意的是Linux系统在安全方面同样体现其性能,输入的密码不体现在界面上,同时密码过于简单的情况下,系统会提示用户密码的安全性,十分的实用。

sh -2.05b# passwd root
changing password for user root:
BAD PASSWORD:it is too simplistic/systematic
retype new password:
passwd:all authentication tokens updated successfully.
sh -2.05b# exit

最后一步键入"exit"回车后,电脑会自动重新启动,然后输入新的密码就可以进行linux的系统操作了,到这里就破解了根用户的密码。

 


 
2008-11-03

chenxu

redhat a4 开机问题1

 
init no more processes left in this runlevel  问题
 
修�一下/etc/rc.d
 
INIT: cannot execute "/sbin/mingetty"cannot execute "/sbin/mingetty" 问题
 
mingetty命令是不是不存在了!
 
 
 
 
 
"INIT: Id "1″ respawning too fast: disabled for 5 minutes" 问题的解决
                                               
 
当使用/etc/inittab里面的某个程序,例如mgetty来接受modem拨入,同时系统又重新启动或者几个拨入都不成功;又或者登录提示数次被取消(例如用ctrl+D),都会出现这种提示。
原因在于,当init通过/etc/inittab来启动某个程序的时候,如果这个程序连续几次被很快地终止,那么在/etc/inittab里面对应的条目就会被禁用并不再启动。正常情况下程序应该在被结束后两分钟后重新启动,这个问题不应该归咎于init的bug。
                                    
                                                                                                                                                                                                                       
解决方法是:
首先,非常多程式有自己的日志或把他们的syslog写到/var/log/messages或这个目录下面类似的日志里面,所以能查看这些日志来得
到错误信息。你也能手动在shell下面启动这些程式来得到错误信息,不过记得不要改动/etc/inittab里面的项目。你能以root身份使用
init q命令使得这些无效的命令重新能使用。"
通过查看/etc/inittab能发目前inittab中有如下语句
1:2345:respawn:/usr/sbin/termwrap /usr/sbin/base-config /dev/tty1 2>&1
结合上文的分析能知道,正是因为无法找到/usr/sbin/termwrap 这个文件,导致init respawn出来的进程马上被终止,所以才有
"INIT: Id "1″ respawning too fast: disabled for 5 minutes" 错误的产生。
至此,问题能归结到 /usr/sbin/termwrap 缺失这个问题上。
通过查找治疗及对问题主机的/etc/inittab的分析能知道,termwrap即terminal
wrapper,包含于base-config这个软件包,为一个shell脚本,主要用来侦测用户运行的终端类型,及使用的语言,进而在debian
系统的第二阶段安装运行base-config时使用。
解决方案:
运行apt-get ,安装base-config软件包问题分析:
在还没改动系统的状态的情况下:
由于该系统不是我亲自安装,只能根据问题现象做一下推测。从系统的问题情况来看,非常有可能是在完成第一阶段安装之后,未运行base-config进行基本系统设置导致/etc/inittab脚本未更新,仍为第一阶段基本系统安装后的脚本。
如果已从stable变成sid 的话:
#cp /etc/inittab.real /etc/inittab
#reboot
问题解决!
 
 
2008-11-03

chenxu

2008年11月1日星期六

红警3出来了!



红色警戒3游戏安装指南及版本说明:
*解压缩游戏包,推荐用Daemon Tool最新版载入镜像安装游戏
*安装完成后到镜像里的CRACK文件夹复制破解到你的游戏目录即可进入游戏
*如果提示升级请不要升级和安装补丁,破解暂时仅对应1.0原版
*中文版使用英文破解以后会变成英文,可在游戏设置器中改成繁体中文
红色警戒3 电驴种子 http://www.verycd.com/topics/421468/
____________________
ed2k://file%5B%E5%91%BD%E4%BB%A4%E4%B8%8E%E5%BE%81%E6%9C%8D%EF%BC%9A%E7%BA%A2%E8%89%B2%E8%AD%A6%E6%88%923%5D.Command.And.Conquer.Red.Alert.3-RELOADED.iso71088209924aeaef1e8a6fdd323beda74d1f2cd4f5h=MU75FAFAW2BSK5NFVQGJ27MRBXNWRS4I/ed2k://file%5B%E5%91%BD%E4%BB%A4%E4%B8%8E%E5%BE%81%E6%9C%8D%EF%BC%9A%E7%BA%A2%E8%89%B2%E8%AD%A6%E6%88%923%5D.Command.And.Conquer.Red.Alert.3-RELOADED.nfo4229202d7c28473a6008d7f6d427455338f9h=XVQDTCO7FI6LAE4W5MTXBAKJXMKZ57KC/ed2k://file%5B%E8%B7%B3%E5%87%BA%E9%97%AE%E9%A2%98%E4%BF%AE%E6%AD%A3%E8%A1%A5%E4%B8%81%5D.Command.And.Conquer.Red.Alert.3.Fix-RELOADED.rar715be501f5b84e59f8954a642517fbc37e2h=BKUBB47GI7YUNWKT6HLDENROEPZYBRY6/ed2k://file%5B%E8%B7%B3%E5%87%BA%E9%97%AE%E9%A2%98%E4%BF%AE%E6%AD%A3%E8%A1%A5%E4%B8%81%5D.Command.And.Conquer.Red.Alert.3.Fix-RELOADED.nfo3960e75b1fb9910bf8d165989c1ae3478f15h=3B4MY3ZUTJEDRBWP7PBK6RQLJGVQPB56/ed2k://file%5B%E7%B9%81%E4%BD%93%E4%B8%AD%E6%96%87%E8%A1%A5%E4%B8%81%5D.cncra3cn.rar2297423376967a253afa06c49de39d1e7c40e1c8h=7NNXKRH57P53LV5OA347PGDTBLLVDJAM/ed2k://file%5B%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%E8%A1%A5%E4%B8%81%5D.RA3_CHS.rar5069672f758e15efad79dec7b82d72084264adbh=OTW3MXOBR5QM6O2MRZKUP5GHS3QNJQX6/
_________________
红色警戒3中文版需要什么配置
红色警戒3 繁体中文版海量游戏截图首发
红警3破解版正式发布


红色警戒3中文版

红色警戒3种子来源于"游侠网论坛"
http://game.ali213.net/thread-2371152-1-1.html

2008-11-01

看一看,想一想

有一对兄弟,他们的家住在80层楼上。有一天他们外出旅行回家,发现大楼停电了!虽然他们背着大包的行李,但看来没有什么别的选择,于是哥哥对弟弟说,我们就爬楼梯上去!于是,他们背着两大包行李开始爬楼梯。爬到20楼的时候他们开始累了,哥哥说"包包太重了,不如这样吧,我们把包包放在这里,等来电后坐电梯来拿。"于是,他们把行李放在了20楼,轻松多了,继续向上爬。
  
  他们有说有笑地往上爬,但是好景不长,到了40楼,两人实在累了。想到还只爬了一半,两人开始互相埋怨,指责对方不注意大楼的停电公告,才会落得如此下场。他们边吵边爬,就这样一路爬到了60楼。到了60楼,他们累得连吵架的力气也没有了。弟弟对哥哥说,"我们不要吵了,爬完它吧。"于是他们默默地继续爬楼,终于80楼到了!兴奋地来到家门口兄弟俩才发现他们的钥匙留在了20楼的包包里了。
  
  有人说,这个故事其实就是反映了我们的人生:20岁之前,我们活在家人、老师的期望之下,背负着很多的压力、包袱,自己也不够成熟、能力不足,因此步履难免不稳。20岁之后,离开了众人的压力,卸下了包袱,开始全力以赴地追求自己的梦想,就这样愉快地过了20年。可是到了40岁,发现青春已逝,不免产生许多的遗憾和追悔,于是开始遗憾这个、惋惜那个、抱怨这个、嫉恨那个,就这样在抱怨中度过了20年。到了60岁,发现人生已所剩不多,于是告诉自己不要在抱怨了,就珍惜剩下的日子吧!于是默默地走完了自己的余年。到了生命的尽头,才想起自己好象有什么事情没有完成,原来,我们所有的梦想都留在了20岁的青春岁月。 
    人因梦想而伟大,机会永远属于那些有准备并立即行动的人!
 
2008-11-01

chenxu

掌上游戏机开发指南――GBA程序开发入门

【转】http://developer.51cto.com/art/200611/34717.htm

 

摘要:本文简单介绍了Game Boy Advanced(GBA),一款由日本任天堂公司于2001年推出的32位掌上游戏机,它的程序开发部分,可以用汇编语言和C/C++语言来写程序。

 

1.GBA简介
Game Boy Advanced(GBA)是日本任天堂公司于2001年推出的一款32位掌上游戏机。它着重于游戏机的便携式,并且以2D游戏为主(3D游戏依然不错)。GBA有十分高效硬件图像处理加速,GBA基本上是现在全球公认的最佳的掌上游戏机。
GBA的硬件功能十分多。它的CPU是以RISC为基础的32位ARM CPU,主频是16.78MHz。屏幕最大支持240x160的16位真彩色显示。在图形处理方面GBA还另外提供了硬件加速,支持硬件上的图形旋转,缩放,alpha混合,face in/out淡入淡出等。
GBA的软件开发主要是以C语言为主,程序设计简单而且十分自由,也正是这一点吸引了许多爱好者在GBA上做东西(不一定是游戏)。你完全可以把它做成PDA,做成Mp3播放器(它的声音处理方面能力也不错哦),做成随身电影播放齐,做成电子词典等,只要你有能力设计它的软件。
不说多了,我们还是主要来看看如何开发GBA的软件。应该说,你只要会点C语言,就可以进入GBA的开发行列中了。在GBA上写程序比在电脑上写程序更简单。GBA是单总线的设计,也就是说通过简单的读写命令就能完成所有的内部硬件操作。访问GBA内部的寄存器就犹如访问一块内存一样简单,而GBA所有的功能都是通过读写寄存器而完成的。
2.GBA程序开发准备
GBA开发所需要的东西除了一台可以用的电脑外,主要就是一个编译器和一个GBA模拟器。
有了GBA模拟器,你就可以在你的电脑上运行GBA程序了。GBA模拟器应该是到处可以找得到的。我推荐的是VisualBoyAdvance。你可以在www.gbadev.org上下载最新的版本。如果你还想把你的程序弄到GBA机器上玩,那么除了应该有个GBA外,还应该有个ROM烧录器。比如EZ-Flash。通过它可以把电脑上的ROM烧录到GBA卡带上,然后放到GBA上运行。(总共一个GBA加一个128MB的EZ-Flash大概是1000元人民币)
GBA程序开发可以用汇编语言和C/C++语言来写程序,不过汇编语言比较复杂,而且不是我们平常使用8086汇编,而是Arm汇编。任天堂公司可能觉得C++程序运行消耗太大,不推荐C++语言来开发,所以我们都一直将C语言作为首选。
GBA开发所用的C语言编译器主要有两种,一种是免费的gcc,一种是Arm公司提供的ArmSDT。
这里的gcc当然不是简单的linux下的gcc,而是Arm Gcc。简单地说就是把我们平时常见的gcc改造成生成ARM CPU代码的gcc。你可能会问难道我们要使用linux操作系统了吗?其实我们还是在windows下做GBA开发,虽然gcc主要是在linux下的东西,但是我们也可以从cygwin(在windows下模拟UNIX的工具)中得到在windows下运行的gcc。你可以根据这个cygwin下的gcc,自己去配置Arm Gcc,也可以直接去下载个配置好了的Arm Gcc。比如DevKitAdv,你可以到http://www.gbadev.org去下载这个软件。DevKitAdv大概10多MB。有了它,你用不着去找什么cygwin(200-300MB)和配置什么Arm Gcc了,DevKitAdv已经帮你做好了一切,你只需安装它就OK了。
ArmSDT是Arm公司提供的专门为ARM CPU的开发程序的C语言编译器。前面说过,GBA是采用32位的ARM CPU,所以这个ArmSDT是可以用来开发GBA程序的。而且由于ArmSDT是ARM公司官方的开发包,所以它的编译速度和质量上都比免费的gcc要高,但对C语言的支持也不及gcc好(gcc毕竟已经成了C语言编译器的标准),最关键的问题它不是免费的,但是它的免费测试版还是可以用的。你可以到Arm公司的网站去下载ARMSDT2.51. http://www.arm.com。
我以DevkitAdv配置的gcc为主还讲解GBA的程序开发。
安装DevKitAdv很简单,用WinZip或WinRAR软件解压下载文件后,双击DKA_Setup.exe,出现下面的对话框,选择安装目录,然后点击"Install"就进行安装了。整个DevKitAdv共49MB,应该是十分小的。
编译器和模拟器都装好后,下面我们需要一批小工具,主要就是帮我们转换图片,声音等数据。GBA程序编译后通常都是一个rom文件,图像和声音等数据都是包含在主程序里的。这些工具能把我们电脑上的图片或声音文件转换成一个*.h头文件,然后包含在主程序里编译。关于这种转换工具也是有许多,我推荐的图形转换工具是kaleid_1-2-3,在http://www.gbadev.org上下载,它可以转换我们平时用的BMP文件。声音转换工具是wav2gbac.exe,也是在http://www.gbadev.org下载,它可以转换我们平时用的WAV文件。
好了,下载完后这两个小工具后,准备工作就算做完了。
3.第一个GBA程序
现在我们开始我们的第一个GBA程序。在这个程序中我们将在屏幕上显示一张的图片。
首先你建立一张240*160大小,256色的bmp图片,比如这样:
名字就叫helloworld.bmp.打开刚才下载的Kaleid_1-2-3程序。选中菜单File中Open,打开这个helloworld.bmp文件,再选中菜单File中Convert and Save.出现对话框:
如图一样选择各项选择,特别注意的是一定要选择"BitMap Graphics(Mode 4)"和"Save As C Source",并且去掉"#include <agbtypes.h>"的选择。最后单击"Convert and Save",保存为helloworld.h。
图像数据已经转换好了,接着我们开始写代码。建立个main.c的文件,并把helloworld.h放在一个目录下。然后在main.c中写下代码:

typedef unsigned char u8;
typedef unsigned short u16;
typedef unsigned long u32;
#define REG_DISPCNT *(u16*)0x04000000// 显示寄存器地址
#define VRAM 0x06000000 // 图像缓冲区地址
#define PALETTE 0x5000000// 调色板地址
#define MODE_4 0x04 // mode4标志
#define BG2_ENABLE 0x0400// BG_2标志
#define SetMode(Mode) REG_DISPCNT=(Mode) // 设置显示模式的宏定义
#include "helloworld.h" // 包含图像调色板和数据的头文件
u16* palette_mem=(u16*)PALETTE; // 系统调色板
u16* video_buffer=(u16*)VRAM; // 图像缓冲区
void Draw(u16* src_palette,u16* src_data,u16* dst_palette,u16* dst_data);
int main()
{
// 设置屏幕模式,这里使用MODE_4
SetMode (MODE_4 | BG2_ENABLE);
// helloworld_pal和helloworld_gfx是在"helloworld.h"定义的调色板和图像数据数组名
Draw((u16*)helloworld_pal,(u16*)helloworld_gfx,palette_mem,video_buffer);
// 死循环
while(1)
{ ;}
}
// MODE_4绘图函数
void Draw(u16* src_palette,u16* src_data,u16* dst_palette,u16* dst_data)
{
int loop,x,y;
// 写入目的调色板
for(loop = 0; loop < 256; loop++)
dst_palette[loop] = src_palette[loop];
// 写入图像缓冲区
for(x = 0; x < 120; x++)
for(y = 0; y < 160; y++)
dst_data[(y) *120 + (x)]=src_data[(y) *120 + (x)];
}

最后建立一个编译批处理命令make.bat来帮我们编译生成目标代码。
写入下面的命令到一个新建的make.bat文件里面

PATH=C:\devkitadv\bin;%PATH%
gcc -lm -o main.elf main.c
objcopy -v -O binary main.elf main.bin
pause

如果你的devkitadv是在D盘,那么就应该是PATH=D:\devkitadv\bin;%PATH%,我这里的DevKitAdv是安装在C盘的。执行make.bat,如果没有错误的话就可以得到编译出来的main.bin和main.elf. main.bin就是可以运行的GBA的rom.你可以用的模拟器VisualBoyAdvance来打开运行它,或者烧录到GBA卡带上运行。
这是在模拟器VisualBoyAdvance中运行的结果。
下面我将一一讲解上面的程序
前三行:

typedef unsigned char u8;
typedef unsigned short u16;
typedef unsigned long u32;

定义GBA程序自己的数据类型,因为这样我们就很容易知道每个数据在GBA中占的字节数。

#define REG_DISPCNT *(u16*)0x04000000// 显示寄存器地址

REG_DISPCNT是设置显示模式的寄存器.GBA中有mode0-mode5六个显示模式。我们这个程序的显示模式是mode4,也就是240x160的8位色(256色)的双缓冲显示模式。比如mode3,就是240x160的16位真彩色的单缓冲显示模式。

#define VRAM 0x06000000// 图像缓冲区地址
#define PALETTE 0x5000000 // 调色板地址

VRAM就是GBA的显示内存,简单地说VRAM中的数据就是屏幕上的图象。跟我们的平常用的计算机一样的。PALETTE就是调色板地址,简单地说就是装图像调色板的地方。

#define MODE_4 0x04

 
2008-11-01

chenxu

[转]从GBA开始,步入ARM开发的殿堂(初学者入门篇)

 
 
 
1.为什么要选用GBA作为嵌入式系统学习平台
我们知道,任天堂公司的GameBoy Advance(简称GBA)一款非常出色的掌上游戏机,该产品占领了全球90%以上的掌上游戏机市场。
抛开游戏功能不说,GBA本身就是一个很好的嵌入式系统开发学习平台,因为GBA采用ARM7 CPU(RISC),拥有240×160 64K色彩色液晶、立体声系统、按键、DMA、通讯口、32K的CPU高速RAM(32Bit)和256K外部RAM(16Bit),还有可外接的游戏卡,可扩充至256Mbit的FLASH ROM以及用于保存进度的128K EEPROM(或FLASH、带电池记忆的SRAM)。
现在,许多开发者都开始学习嵌入式开发,并购买ARM实验板和JTAG仿真器。从成本的角度来看,ARM实验板和JTAG仿真器价格不菲,但是非常适合于拥有长期硬件开发经验的开发者;对于想踏入嵌入式开发殿堂的初学者而言,高昂的硬件价格以及过高的硬件调试门槛,自然成为阻碍学习嵌入式开发的拦路虎,许多初学者正是因为入门无路而中途放弃。从许多硬件工程师的开发经验来看,无论是低级的单片机开发还是高级的嵌入式系统设计,学习重点都应该在软件编程设计上,因为硬件部分都是有成熟的电路,熟悉以后自然水到渠成。因此,对于初学嵌入式开发的开发者而言,GBA也就成为最便宜、最容易入门的硬件平台,GBA可以让初学者把烦人的硬件调试抛开,而将注意力集中到学习软件开发。

开发套件                            价格  使用难易程度                      备注
ARM实验板+JTAG仿真器 昂贵         困难        适合于拥有长期硬件开发经验的工程师
GBALine+GBA                 便宜         容易        适合于嵌入式开发初学者

2.GBA硬件平台的特点
从功能上来看,GBA包括声效处理,彩色LCD显示,以及输入输出等功能。GBA的显示屏幕是240×160像素,可以支持8bit(256色)或16bit(64k色),带有硬件加速能力、支持Alpha渲染(alpha blending)、旋转(rotation)、缩放(scaling)、镶嵌(mosaic)等效果。GBA的屏幕模式有6种,分别为Mode 0 - Mode5。
从使用者的角度来看,GBA涉及人的手,眼,耳等感觉器官;从开发者角度看,它是完整的嵌入式系统。

3. 必备的硬件GBALine 
GBALINE是为GBA精心设计的一套外设,它完成PC<=>GBA的高速数据交换,以及数据存储,整套的价格也就百来块钱。
关于GBALine,具体的网址:http://www.sudt.com/
编译好的二进制代码需要写入GBA卡带才能在真实的硬件平台上运行,这就需要一套下载存储系统帮助完成最后的工作,GBALine套件正是为实现此功能而诞生的。该套件包括GBALine下载线以及可擦写卡带,下载线直接将GBA游戏机与电脑连接,实现高速数据交换;可擦写卡带用于存储编译好的二进制代码。

4. 如何进行嵌入式开发
GBA的硬件和PC完全不一样,究竟该如何学习呢?难道还要去买GBA开发工具,要学GBA的开发语言?许多开发者都会有同样的疑问。不必紧张,只要开发者懂得C语言,会使用ARM C的编译系统,就可以开发GBA程序,使用GBA作为入门级嵌入式学习平台的优点就在此。目前,在Linux下和Windows下都有免费的编译工具,推荐的是DevKitAdv开发包,该开发包使用的是GCC编译器。当然,编译效率比较高的有SDT2.51、ADS1.2、metaware for ARM等等,但是这些都是收费的,对此有兴趣的开发者可以自己研究。源代码编辑工具推荐Visual C++。

5.模拟运行环境
PC端的模拟运行环境可以采用GBA模拟器,例如VisualboyAdvance等。编译好的ELF或BIN文件用模拟器打开就模拟硬件运行ARM程序。

6.硬件组成

6.1. GBA系统
CPU 32位RISC CPU(ARM7TDMI)/16.78MHz
兼容性 集成8位CISC CPU兼容于GBC,但是不能和GBA的CPU同时工作
内存 系统ROM  16K字节(GBC是2K)
工作RAM 32K字节+CPU外部256K字节(2倍周期)
VRAM 96K字节
OAM 64位×128
调色板RAM 16位×512(256色用于精灵,256色用于背景)
卡带记忆体 最多32M ROM或闪存+最多512Kbit SRAM或闪存
显示 240×160×RGB点、32,768色模拟显示、带有应将加速,支持旋转(rotation)、缩放(scaling)、Alpha渲染(alpha blending)、镶嵌(mosaic);6种屏幕模式,分别为Mode0-Mode5。
操作 控制键(A、B、L、R、START、SELECT和方向键)
声音 4声道(相应于GBC的声道)+2个CPU直接声道(PCM格式)
通讯 串口通讯(8位/32位、UART、多玩家、多用途、JOY总线)
卡带 同DMG和GBC一样,GBA的卡带使用32针接口,GBA自动检测插入卡带的类型并切换GBC或GBA模式。GB卡带、GB/GBC双重模式卡带、GBC专用卡带、GBA专用卡带都可以在GBA系统上使用。

6.2. GBALine下载线, http://www.sudt.com/
PC端接口 LPT,自动设置
GBA端接口 SIO,串口通讯
数据传输率 115K Byte/s(随操作系统负荷的变化相应波动,范围:90KB/s~115KB/s)
电源 自供电

6.3. 64Mbit Flash Card
Flash容量 64Mbit
Flash擦写次数 10万次
NV-SRAM 32K Byte,带电池记忆

7.编译环境设置
DevKitAdv是免费的GCC开发包,目前的最新版本是R5-Beta-3,下面将以此版本为例介绍如何在windows nt、2000、xp平台下使用该开发包。
下载并安装DevKitAdv开发包到C:\devkitadv-r5-beta-3目录,进入该目录运行DevKit-Advance-R5-Beta-3.lnk文件,此时会出现蓝色的console控制台窗口。
 
在c:\devkitadv-r5-beta-3目录下有example、testsuite等目录,现在以testsuite目录为例示范如何通过命令行方式编译文件。
 在上面的窗口中输入命令:
cd  testsuite
make
 之后就开始编译testsuite项目并生成agbmain.bin、agbmain.elf等文件,此时就可以先使用模拟器VisualBoyAdvance运行其中一个文件,或者通过GBALine下载线下载到Flash卡中实际运行。
 除了命令行方式之外,也可以自己创建Visual C++的makefile工程文件,这是强烈推荐的方式。

 最简单的入门过程就是这样,祝各位玩的开心!
 
2008-11-01

chenxu