Mac 上玩国服魔兽世界(WoW)

March 15th, 2009

在 Mac OS X 上玩 World of Warcraft 的问题已经有不少人说过了,貌似都是说的 X-Only 这里的方法,不过我决的方法有点太麻烦,要不就得找台服,要不就得下载 .app。前几天在某论坛上闲逛,看到一个非常简单的方法,在这里说下。

  1. 首先下载国服(好吧,这是废话),然后安装好。
  2. 然后下载 MPQ Editor
  3. 用 MPQ Editor 打开 WoW 安装目录下的 \Data\zhCN\base-zhCN.MPQ,在里面找到 World of Warcraft.app(Windows 下看到应该是个文件夹),把它解压出来,放在安装目录里。
  4. 把安装目录 copy 到 Mac 下。
  5. 运行 World of Warcraft.app。
  6. Have fun.

如果没有 Windows 应该也没有问题,下载绿色版魔兽世界,Wine(CrossOver)一个 MPQ Editor,当然,我没试过。(或者找我要个 World of Warcraft.app?26.1MB)

既然 .MPQ 里面有 .app,那九城为什么不放出 Mac 版本呢?想不通……

在国服 3.0.5 版本测试通过。

Tags:,

Related Posts

读《C陷阱与缺陷》("C Traps and Pitfalls")

March 9th, 2009

记得有很多次都在书店看到这本书了,但是看了看觉得买下不太值,所以就一直没买,上上星期到省图书馆看到这本书,书不厚,就借来看看。

这本书写于上世纪八十年代,在计算机书籍中已经算是很旧的了,我觉得这书现在来看除了作者原本要传达的意思,还多了许多讲述历史的成分,让我们知道了很久以前的 C 语言是什么样子的。那时侯,连 ANSI89 都没有定下来,书中讨论了很多是用 ANSI 的新写法,还是为了兼容而用老写法的问题,现在这个问题应该已经没有什么价值了吧?书中不少陷阱和缺陷也就被 fixed。

举个例子,很久以前,有的编译器允许对字符串字面值进行修改,现在看来,已经是非常荒唐的事情了。(让我想起潭浩强在书里修改字符串字面值的事,或许他用的是很有年头的编译器?呵呵)

不过,现在的 C 语言还是那么诡异,有不少陷阱和缺陷,这本书也算是个 check list,查漏补缺。里面许多东西我以前都见过了(或者真的犯过),不过还有不少我们没见过的,呵呵。

我知道的比如,getchar() 的返回值是 int,dangling else,switch,求值顺序等等。

不知道的也很多,比如分析 token 的时候的贪心方法,a[i] 和 i[a] 一样等等,还有 varargs 等的用法。

推荐大家看看,应该用不了多长时间,当是查漏补缺了。

Tags:

Related Posts

C++ Primer 随记——第 6 章,语句

February 23rd, 2009
  1. case 标号必须是整型常量表达式。(Page 176)
  2. 任意两个 case 标号不能相同。(Page 176)
  3. 对于 switch 结构,只能在它的最后一个 case 标号或 default 标号后定义变量。(Page 176)
  4. 在循环条件中定义的变量在每次循环里都要经过创建和撤销的过程。(Page 178)
  5. goto 语句不能跨越变量定义向前(下)跳转。(Page 185)
  6. goto 语句只能在同一函数内跳转。(Page 185)
Tags:,

Related Posts

C++ Primer 随记——第 5 章,表达式

February 23rd, 2009
  1. 负数的位运算,符号位的处理是机器相关的。(Page 134)
  2. 有符号数的右移操作插入符号位的副本或者 0,具体由实现而定。(Page 134)
  3. 以为操作符的有操作数必须非负,并且严格小于左操作数的位数,否则,结果是未定义的。(Page 134)
  4. 只有逻辑与、逻辑或、条件运算符和逗号运算符规定了求值顺序。(Page 148)
  5. 包含 signed int 和 unsigned int 的表达式, signed int 会转换为 unsigned int。(Page 155)

疑问:

  1. 强制类型转换。
Tags:,

Related Posts

C++ Primer 随记——第 4 章, 数组和指针

February 8th, 2009
  1. void* 指针只支持几种有限的操作:比较、传参数、赋值。不能通过 void* 指针操纵它所指向的对象。(Page 104)
  2. void* 不是万能的,它不能指向 const 对象,使用 const void* 指向 const 对象。(Page 110)
  3. 指向 const 对象的指针也必须具有 const 特性。(Page 110)
  4. 定义指向数组的指针要注意优先级。比如 int (*ip)[4];。(Page 123)
Tags:,

Related Posts