月度归档:2009年11月

sgos2好几个月没有更新

sgos2已经好几个月没有更新了,主要是因为我上大学后太忙了。Endless homework,做不好随时有挂科的危险。虽然还参加了ACM,但是却还没有一天认认真真做过算法的练习题目。而不像某K,可以晚晚写算法,真好。

有不少人都发觉sgos2很久没有更新,其实我一直没有放弃sgos2。只是我比较忙,另外几个参与开发的朋友可能也没多大劲头了。

sgos2的微内核结构还是挺好的。我至少在这几年里不会打算重写sgos,因为觉得它已经很好,稳定、安全、效率就是最好。不过目前面临的问题是,因为每个驱动是独立的进程,进程之间需要高效率的通信,所以我打算,把基于字符串通信的bxml改成只使用几个寄存器传值的快速消息机制。然后如果有必要的话,把bxml的通信弄到用户层实现,通过内存共享进行字符串和二进制数据的传输。这样就可以尽可能把没有必要的内存拷贝省去了。内核里也不需要任何字符串操作,因为字符串操作带来了很多安全问题。之前为了解决字符串和大堆数据传递的安全问题,我甚至还打算在内核里使用try catch的异常处理机制(Linux里有)。

大概到军训或者放寒假之后,或许我就可以再次全身心地投入到sgos2的开发之中。因为在国内对os研究是如此至少让我看到了深入接触它的必要性和未来的发展前景。

Windows上模仿Linux下的time程序:wintime

程序和源代码下载:upfiles/wintime.zip

Usage: wintime program
Time Recording Method:
real    The real time the program REALLY runs.
user    The time the program runs in USER mode.
sys     The time the program runs in KERNEL mode.

使用示例(亦可以把程序拖到wintime.exe运行):

E:>wintime amend < amend/amend9.in
80

real    0m0.734
user    0m0.750
sys     0m0.000

示例2:

E:>wintime a
1
2 2
3 3 3
4 4 4 4
5 5 5 5 5

real    0m0.015
user    0m0.015
sys     0m0.000

悲剧

“该主页虽然号称使 html 更加易于阅读,但是犯了一个相当严重的错误:在 doctype 声明之前不应该有其他字符,包括注释”

鄙视CSDN上某些人不加考察就说我的主页代码不规范,注释出现在DOCTYPE前。
什么叫不规范呢? DOCTYPE前不放注释才叫规范么? W3C有这个规定吗? 不学学国际标准,就凭那老套的IE经验就嚣张地说别人的html不规范了。
悲剧啊~~~
IE是宣扬叛逆、不服从标准的典型例子。我也不会为了能够在它上面完美显示而在代码里添枝加叶。

顺便给一个例子,一段CSS,在IE发生了问题:
http://www.gtalbot.org/BrowserBugsSection/MSIE8Bugs/comment-before-doctype-strict-dtd.html

非主流C++ —— 一个没有分号的猜数字游戏代码

运行:

I have a number between 1 and 1000.
Can you guess my number?
Please type your first guess.
500
Too high. Try again.
425
Too low. Try again.
428
Too high. Try again.
427
Too high. Try again.
426
Excellent! You guessed the number!
Would you like to play again (y or n)?

大概6年前,用TC3 for Win写了一个猜数字游戏,貌似也是这个模样。现在为了做C++作业,也写了一个如此的游戏。不过,觉得主流的写法并不好玩,于是从一个主流代码开始不断“优化”,改头换面,最终一个非主流代码出现了——一个没有分号的猜数字游戏代码。

纯属是为了好玩,不适应的程序员或许看不懂这个代码,适应了就好了。经过这次实践,我得到一个如下的结论:
只要你有恒心,任何一个C++代码都可以写成一个没有分号的代码。

这样的写法不是为了装逼,而是一种纯粹的智力游戏,开发自己的创新思维,同时还能加深自己对C++原理的认识,何乐而不为?

而你的看法是怎么样的呢?

HomeServer100419( Linux&Win32 )发布(x86bin src package )

100419 更新:

修正CGI传递SERVER_NAME参数问题。

可设置多个CGI程序。

自定义文档类型。

自定义错误页面。

 

Linux版本已经可以运行使用 :-) FastCGI可以定制IP和端口,详细见样例的config.xml。 无聊时写的服务器,山寨Apache的。最新增加 Rewrite 功能,修正访问多级目录的bug。PHP的PathInfo功能可以通过Rewrite来模拟,或者在php.ini里设置cgi.fix_pathinfo=1。

虽然这不是正式版本,但是都蛮稳定的了。现在我博客就是使用Homeserver来服务。除了我博客,还有几个php小站和论坛也使用了HomeServer。

新增功能: 虚拟站点、FastCGI、Proxy(代理)

为什么选择HomeServer了? 原因: 配置简单,安全,高效。

至于为什么配置简单,因为功能简单。如果你玩过apache的话,只需要用httpd.conf和config.xml对比一下就知道了。
config.xml

本站下载: homeserver100419.zip(x86bin&src package)

修正:因为开始发布的打包里有些二进制文件不是最新的,所以运行时候遇到问题,现已经修正。