Tag Archives: windows

体验 Longhorn 4074

n 个 Longhorn 版本从微软泄漏,对我真是一个难以抗拒的诱惑。使得即便是我这 AMD 1200+ 256M SD 内存的机器也忍不住要来尝试一下。但 4074 并不是我装 Longhorn 的第一个版本。

想当初我装的第一个版本好像是 4015 ,有些记不清了。那次是在各大网站文章的蛊惑下,有了对新版本 Windows 靓丽界面的无穷向往,这才决心在我这烂机器里装上一回,果不其然,我的机器真是烂,几乎无法承受 4015 对资源的海量需求, CPU 占用率还好一些,内存几乎就是 100% ,硬盘也没有停转过,系统慢得要死,再加上右面的 Sidebar 的捣乱,于是第一次尝试暂告失败。但总也有了些收获,首先是目睹了传说中 Longhorn 的界面,除了右面的 Sidebar ,其余的东西还是挺令我失望的,真有些和所谓的“下一代”相差甚远,但转念一想,毕竟是个开发中的版本,如果这时的性能就弄得和两三年后的一样,那还有机器能跑得起来吗:)其次就是看到了IIS的新版本 7.0 ,虽不知它比 6.0 能多了哪些东西,但也是个主版本号的提升呀,值得兴奋一下;第三,也是我个人比较关心的,就是 .net Framework 2.0 ,微软虽然这样说,但从 .net Framework 的目录中看到的却是 1.2.xxxx 的编译版本,显然与 2.0 还相差甚远,但这一点在 4074 就完全不一样了。

就这样我又开始等待 Longhorn 的下一个版本,等到的就是哪个所谓的轻量级版本,毫不隐瞒的说,这是我到目前见到的 Longhorn 的最烂的版本,也许对于我的需求来说是这样的。但我个人还是很佩服这个修改安装成程序的家伙的,将很多东西都从安装中去掉,并且也给出了如何启用这些功能的方法,但遗憾的是,我按照他说的做了,得到的结果却是中途安装出错,无法继续。但通过这一出错我到验证了一个疑问, Longhorn 确实有些代码是用 .net 写的,因为从它给出的错误日志中可以看到,其中用了大量的异常、抛出和捕获之类的词。为什么我说这个版本烂?其实很简单,不能否认,这个版本对资源的需求确实少了许多,像我这样的机器可以很流畅的跑起来,但这只是对一个普通用户而言的,他能用自己比较古老的机器来体验新一代的操作系统的华丽外观,感觉多好。但毕竟我是学计算机的,搞编程和开发才是我希望的。而且加之在等待的这段时间里,有越来越多的关于 Longhorn 主体的技术文章出来,我就是从中知道了什么所谓的 WinFS, Indigo, Avalon 和 XAML 等等,很期待试一试,遗憾这个轻量级版本无法支持,所以对它的第一印象就这样被打上了一个烂的标记。不过我还是推荐那些只想尝尝鲜,而又没有开发需求的朋友来装这个版本。顺便提一下,这个版本的安装程序的界面与 4015 和 4074 都不一样,比较友好,很像 XP ,除了颜色基调是深色的之外。不知是不是破解了的缘故。

下面就该提到重头戏 4074 了,无疑这是到目前我见到的最好的版本,除了安装界面有些“简朴”之外(如果微软在发布 Longhorn 之后也用这个安装界面的话,肯定会吓倒不少用户),其余都可以说能得个不错的分数。

第一、未经过修改,而且系统资源占用较少,像我这样的机器,跑起来不算很慢(加上 Sidebar 也不慢)。除了在启动时有些慢之外,其余的时候拿它工作上网是不成问题的。(这里还有一点需要补充,就是那个轻量级的版本不能上网,不知是怎么回事?)

第二、除了依旧是 IIS 7.0 之外,这回可是真正的 .net Framework 2.0 了,编译版本号为 2.0.31113 。而其在 .net 的目录里面里面很惊奇的发现除了以往常见的那个 Framework 的目录之外,还可以看到像 Avalon 这样的目录。显然在这个版本的 .net Framework 里面已经可以支持 Avalon 这样的命名空间了,也就是可以使用 XAML 来进行编程了。这个我试过了,挺爽的。

第三、向下兼容性非常好,一些在以往的 Windows 里可以装的软件,像虚拟光驱这样的软件都可以安装并能正常使用(虽然安装的时候提示出现错误),而且某些常用的编程几口也没有改变。这也许是个优点,但更像是一个不足,因为据我了解,微软当初在提到Longhorn的时候说其与以前的系统完全不兼容,我不知道现在这样的是因为开发没有完成,还是和用户妥协。

第四、微软提供了一个新的下载管理器,可以实现多线程下载,估计到那时,没有特殊功能的下载软件也该退休了。

我估计优点有以上记这些也就差不多了,下面就该说说缺点与不足了。

第一、也是最不能令我忍受的竟然无法实现先新建文件夹的功能。你用右键点击桌面,选择新建,看到了吗,里面没有新建文件夹;而且在资源管理器的界面上面放 着赫然写着 Make a new folder 的大按钮,但点了这后啥用也没有。真不知道微软这帮大哥们成天都在想着着哈?

第二、 Properties 用于文件夹时无法给出文件夹的大小。

第三、安全模式无法使用,当你进入安全模式的时候会不断地弹出那个告诉你现在是工作在安全模式下的那个对话框,但就是进不去。

第四、 Outlook Express 在运行时会出错,自带两个版本的 Messenger 6.0 和 6.1 ,不知是为什么,而且那个 6.0 的版本几乎用不了。所以干脆还是把他们都卸载算了。

第五、该版本的 Longhorn 安装需要 3 个多G的空间,估计它是将整个的 I386 目录都装了进去,因为在以后添加 Windows 组建的时候,就不再需要安装盘了。而且, Longhorn 也不能再使用像以前那样先执行 smartdrv 再在 I386 目录中执行winnt命令来安装系统了。

第六、不算是问题,只能是不足,那就是 4074 这个版本还不支持 WinFS 。我在 MSDN 里面的一篇文章中看到,由于 Longhorn 的开发时间紧迫,所以原定被全面采用的 WinFS 文件系统现在被计划为只应用于 Documents and Settings 文件夹,其余还保持 NTFS 。

对 Longhorn 4074 的初体验到这就差不多了。其实里面还是有很多其他问题的,不过大家只要用过了,自然就会碰到,我在这里就不说了。关于 Longhron 非常独特的编程环境我还没有仔细使用,待以后有机会再写另一篇 Blog 吧。

到发稿时止,我正在 Longhorn 下装 Whidbey。

哈哈!挺爽。对了, 4074 已经有破解了。

FINALLY! We can blog about IIS7

转载自 Robert McLaws: FunWithCoding.NET – Longhorn Edition
I saw IIS7 last year at the MVP Summit, and I’ve been really bummed because I haven’t been able to talk about it. Today, the Group Program Manager, Bill Staples, finally allowed us to start talking about it.

   IIS7 represents the unification of ASP.NET and IIS. Let me clarify what that means. Right now, ASP.NET is implemented as an ISAPI extension for IIS. That will still be true in ASP.NET 2.0. In IIS7, that changes. Instead, the concepts of HTTP pipelines, handlers, modules, XML config files, etc… are all natively built into the platform.

  • Along with that, the IIS7 team has completely refactored the whole platform, so now practically every feature in the pipeline has been broken out into a separate module. From a security standpoint, this is a whole new realm for IIS. Because the pipeline is componentized (the WHOLE pipeline), you can reduce your surface area by removing any module you’re not using from the pipeline. So if you don’t have Passport authentication, don’t enable the module. IMO, that’s really freakin cool.

   My second-favorite feature is configuration. Microsoft is using the same configuration paradigm in ASP.NET for IIS7. That means that you won’t have to configure options in two places, and you’ll be able to delegate every configuration option to individual websites. You can use things like Forms Authentication to secure non-ASP.NET content, which should also be very helpful.

   Finally, if IIS7 doesn’t do something you want it to do, you can write an HttpHandler or HttpModule to support the functionality you need. Say you want to run PHP on IIS7… done. Say you want to be able to support serving up a new filetype… piece of cake. Forget about all the hassles of ISAPI… programming managed IIS extensions is far easier. Of course, ISAPI extensions will still work for compatibility reasons, but hopefully unmanaged extensions will be a thing of the past.

   Why am I talking about all this on a Longhorn site? Well, right now Microsoft will be releasing IIS7 on Longhorn Server and Client only. That’s as of right now. They haven’t locked down whether or not it will ship downlevel, but they will decide on that soon. As a side note, the current bits are running on Windows Server 2003 SP1, so shipping downlevel is entirely possible.

   And yes, IIS7 will be on Longhorn Client. They’ve taken out all the old site and connection limits, which is good news for many. The only limit that will be added to Longhorn Client is a request limit. After a certain number of concurrent requests are made, requests will be throttled back and processed through a request queue. But there will not be any site limits. Also, at this point, there will be a version of IIS7 in the “Home” SKUs of Longhorn. I must emphasize that MS’s position on that may change.

   I saved the most important info for last: ship schedule. Right now, the team is code complete on IIS7. They are currently working on integrating into Longhorn, which is targeted for the end of July. That means that IIS7 will not be a part of Longhorn until Beta 2.

   I LOVE IIS7. I absolutely love it. I can’t wait to put it into a production environment.

Quake III Arena 源代码在 Win32 下的编译

按照 John Carmack 的承诺 Quake III Arena 也终于开源了!在 Id Software 的网站上下就能购下载到。

不过似乎网上更流行的版本是从这里能够得到的一个名为 quake3-1.32b-.source.zip 的 5.45M 的压缩包,里面括了相对较全的内容,有 Q3A 的全部源码,lcc, q3asm, q3map 和 q3radiant 等工具的源代码。最主要的是它还包含了 vs.net 2003 的工程文件,使得编译变简单了许多。

我最早就是用这个版本编译通过的,不过后来发现在官方网站上放出的版本和这个不太一样,本想想继续尝试编译后者,并且根据其结果来写这篇网志的,不过遗憾的是,按照说明上的指导,编译不能成功。会出现找不到文件的错误,估计是 Id 官方的编译器本身配置有些问题,我没看源码也没有深入研究,希望有兴趣的朋友能告诉我原因和解决办法。

言归正传,其实这个版本里面的信息还是足够丰富的,很容易编译,只在个别地方有些小问题。不过我还要唠叨一下,我不是一个 Quake 玩家,所以对其中的很多术语不是很清楚,也不了解整个游戏的结构,只是出于好奇尝试了一下,有问题的话还请大家多多拍砖!

代码结构

从说明文件来看,这份代码主要包含了这些部分:

  • code/ – Quake III Arena source code (renderer, game code, OS layer etc.)
  • code/bspc – bot routes compiler source code
  • code/game – governs the game, runs on the server side
  • code/ui – handles the ui on the client side
  • lcc/ – the retargetable C compiler (produces assembly to be turned into qvm bytecode by q3asm)
  • q3asm/ – assembly to qvm bytecode compiler
  • q3map/ – map compiler ( .map -> .bsp ) – this is the version that comes with Q3Radiant 200f
  • q3radiant/ – Q3Radiant map editor build 200f (common/ and libs/ are support dirs for radiant)

编译 Quake III Arena

我指的是编译 Quake III 唯一的那个可执行文件。

在 code 目录下面能够找到 quake3.sln 这个 vs.net 2003 的解决方案文件,你尽可以打开它看看到底都有些什么东西,不过我在这里只谈编译,所以就拿它当个黑盒,直接编译了。

编译 Quake 需要 DirectX SDK 的支持,因为看游戏目录中包含的是 DirectX 7.0 所以我估计 7.0 的 SDK 就可以了,不过我仍然用了最新的 DirectX 9.0c 2005 年六月的那个版本,可以到微软的网站上去下载。不过我一直不理解的是,据说 Quake 是一个纯 OpenGL 的游戏,怎么它的编译要用到 DirectX 呢?无论如何安装好 DirectX SDK 之后,就可以编译了,不过在此之前要确保你的机器里已经安装了 vs.net 2003,并且 devenv.exe 这个文件在你的 path 环境变量中。(devenv.exe 就是 vs.net 集成开发环境的可执行文件,一般的安装目录在 %ProgramFiles%\Microsoft Visual Studio .NET 2003\Common7\IDE 里面。)打开命令窗口,进入 code 目录,运行命令:

不出意外的话,编译会顺利完成,其中会有几个警告,不过不影响结果。之后你会在 release 目录中找到一大堆编译好的二进制文件,不过有用的似乎只有那个 quake3.exe。

安装 Quake III Arena

只是因为在 code 目录下面有一个 installrelease.bat 文件,所以这一步就姑且叫做安装吧。在进行这一步之前,还是要准备一下环境变量,将 code\win32\mod-sdk-setup\bin 这个路径加入到 path 中,因为需要用到 lcc 和 q3asm 两个编译工具。然后打开 intallrelease.bat 这个文件,注释掉最后一行和倒数第三行,并且将倒数第二行中的 “_ta” 和 “g:” 去掉,使得最后三行变为这样:

为什么要这样做,仔细看看也就明白了。首先是根本就没有 closefiles.bat 这个文件,然后将 release 目录下的 quake3.exe 拷贝到根目录下的 quake3 子目录中。最后的 installvms.bat 只不过是做了一个移动操作,没有什么用处,因此只样改过的 intallrelease.bat 文件就可以很好的工作了。最后还要确保在根目录中没不存在 quake3 这样的目录。

好了,这个时候,只要简单的执行一下这个文件,待结束后看看根目录下是否多了一个 quake3 的目录,里面包含了 baseq3 和 missionpack 两个子目录,具体的目录结果如下:

仔细的看一下输出的日志,就可以明白为什么会产生这些文件了。

运行 Quake III Arena

想必你已经能够猜到,只要运行 code 目录下的那个 runrelease.bat 就可以了。不过有两点要注意,这样运行 quake3.exe 需要两个参数,一个是 fs_basepath 是要指向 quake3 这个目录,而另一个 fs_cdpath 则需要指向 Quake III Arena 的原始光盘,因为需要从里面读取资源文件。保证这两个参数都没有问题了,你应该就能够看到熟悉的 Quake III Arena 的画面了,否则会出现 Couldn’t load default.cfg 的错误。

其他问题

如果你在运行编译好的结果时出现了如下的问题 User interfaces is version 3, expected version 6,请到 Id 的官方网站去下载最新的 Point Release,安装之后就可以正常运行了。

怎么样,还是足够简单的,至少比我想象的要简单,还是那句话,这只是一个黑盒编译,希望熟悉 Quake 游戏的人们能够深入的解释一下得到的结果,算是抛砖引玉了……