<?xml version="1.0" encoding="UTF-8"?><!-- generator="WordPress/2.8.6" -->
<rss version="0.92">
<channel>
	<title>Challenge everything!</title>
	<link>http://blogs.gnome.org/raywang</link>
	<description>Ray Wang&#039;s notes</description>
	<lastBuildDate>Tue, 29 Sep 2009 02:17:12 +0000</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>en</language>
	
	<item>
		<title>Linux&#8217;s Magic key (转)</title>
		<description>转自 http://li2z.cn/2009/08/10/linux_magic-key/

自从我换成了开源的A卡驱动以后，我的电脑就时不时地崩溃。现象是：突然之间，整个画面就冻结了，鼠标也不能动了，几乎所有的按键也都失效了，ctrl+alt+F1 和 ctrl+alt+backspace 都无效。这种情况一般发生在有不规则形状的窗口出现的时候，比如gnome-osd的透明文字，但也不是很一定的，发生的概率也不高，一般几天才会有一次。我想，要彻底解决的话，也只能等待驱动的改进了。
不过，每次崩溃都强行按电源的话，还是有点心痛的。幸好办法还是有的，因为驱动程序其实也只是一个程序而已，这时候即使驱动死掉了，鼠标键盘不能动，linux内核还是在正常运行的（按理如果我开了sshd的话，其他机器还是能ssh上来的）。而且，内核还是能处理一些键盘事件的，比如本文要说的：Magic System Request Key
以下按键，一般情况下不建议使用，除非是ctrl+alt+F1都失效了，才用。
使用Magic SysRq key的前提是CONFIG_MAGIC_SYSRQ这个内核选项被打开，并且没有在/proc/sys/kernel/sysrq里禁用掉，也就是 cat 这个文件的时候，出来的是 1 （或其他某些非0值）。其实这两个条件，在一般的linux发行版里都是满足的。下面就来介绍一下几个键的具体作用，其中SysRq指的是右上角的 “Print Screen”键。

    ALT-SysRq-b 立即重启系统，不卸载分区和同步文件。
    ALT-SysRq-c 调用kexec内核函数来重启，可以生成个crashdump。
    ALT-SysRq-d 显示所有的“锁”，如果开了X的话，估计基本看不到。
    ALT-SysRq-e 给除了init以外的所有进程发送SIGTERM信号，可以试图正常结束所有进程。
    ALT-SysRq-f 调用oom_kill函数来干掉占用了很大内存的进程。
    ALT-SysRq-g 内核调试相关的（好像新内核已经没了？）。
    ALT-SysRq-h ...</description>
		<link>http://blogs.gnome.org/raywang/2009/08/11/linuxs-magic-key-%e8%bd%ac/</link>
			</item>
	<item>
		<title>Mono UIA Packages Preview</title>
		<description>Recently, I was working on pushing Mono UIA stuff into debian/ubuntu, but being accepted is a really long way to go. The packages need to be reviewed by Debian Mono Group hackers, and they were mostly working on geting Mono 2.4.2 uploaded, UIA stuff are not in a high priority. ...</description>
		<link>http://blogs.gnome.org/raywang/2009/07/30/mono-uia-packages-preview/</link>
			</item>
	<item>
		<title>用Google App Engine做个人代理服务器（Linux版）</title>
		<description>摘自：http://groups.google.com/group/gappproxy/browse_thread/thread/3d0ad3dd6331311

博文的链接地址是：http://hi.baidu.com/bdhoffmann/blog/item/
db383603b37756703812bbc8.html
～～～～～
      身处教育网，找代理上网总是一件烦人甚至恼人的事情。某次和同学闲聊，他推荐了Gappproxy给我使用，我用了一下，感觉还可以。现将
自己使用的一些心得记录如下，希望能让广大Linuxer受益。（windows下使用的详细教程请参看http://skydao.com/
post/google- app-engine-to-do-with-personal-proxy-server-second-
edition/）

      使用的过程主要分为两个部分。第一部分是上传一个文件到google appengine（GAE）,第二部分是建立本地和GAE的连
接。

1：上传
1.1 创建一个google appengine帐号
     点击链接 （http://appengine.google.com/）申请注册一个google appengine帐号，注册需要一个
gmail邮箱，另外在注册的过程中需要填入手机号码进行验证。

1.2 安装python
     我的系统是Ubuntu8.04，所以只要apt-get install python就可以了

1.3 下载并安装google appengine软件包
     点击链接（http://code.google.com/appengine/downloads.html），下载Linux平台的
Google App Engine SDK，并进行解压。我的解压路径是桌面上的GAE目录。

1.4 下载并解压fetchserver源码包。
     点击链接（http://code.google.com/p/gappproxy/downloads/list），下载里面的
fetchserver- 1.0.0beta.tar.gz。这个是GAppProxy服务端源码包，用于架设自己的fetchServer。要将这
个包进行解压。然后将解压后的文件（fetchServer）夹放入Google App ...</description>
		<link>http://blogs.gnome.org/raywang/2009/06/18/%e7%94%a8google-app-engine%e5%81%9a%e4%b8%aa%e4%ba%ba%e4%bb%a3%e7%90%86%e6%9c%8d%e5%8a%a1%e5%99%a8%ef%bc%88linux%e7%89%88%ef%bc%89/</link>
			</item>
	<item>
		<title>Say Hi to GNOME World</title>
		<description>Hi everybody,

I'm new here, I will start my new blog from today, and I'd like to write my posts about GNOME,  and of course I'll try to write in English. see you then. :) </description>
		<link>http://blogs.gnome.org/raywang/2009/04/20/say-hi-to-gnome-world/</link>
			</item>
	<item>
		<title>i18n 和 l10n 区别</title>
		<description>
	Internationalization = I18n
Changing a program to support for multiple languages and cultural habits.

	Character handling (unicode...)
	Locale awareness (date formats, currencies, numbers, time zones, etc.)

	Localizability
	Isolate localizable items (messages, pictures, etc.)
	Implement infrastructure necessary for localizing above items.




The programmer’s work.

	Localization = L10n

	Translate localizable items (messages, pictures, etc.) for one language.


Providing an internationalized package the ...</description>
		<link>http://blogs.gnome.org/raywang/2009/04/07/i18n-%e5%92%8c-l10n-%e5%8c%ba%e5%88%ab/</link>
			</item>
	<item>
		<title>Linux System Programming 学习笔记</title>
		<description>the sector is the smallest addressable unit on a block deviice.
the block is the smallest addressable unit on a file system.
the page size is the smallest unit addressable by the memory management unit.


sector = 512 bytes
block = sector * 2(power 0, 1, 4) = 512 bytes, 1 KB, 4 KB
sector ...</description>
		<link>http://blogs.gnome.org/raywang/2009/03/20/linux-system-programming-%e5%ad%a6%e4%b9%a0%e7%ac%94%e8%ae%b0/</link>
			</item>
	<item>
		<title>srandom 与 random</title>
		<description>今天看了看这两个函数的manpage，srandom 的作用是为random 做个种子，默认random生成的数是以srandom(1)为种子的。所以，虽然random 生成的数好像没什么规律，但每次生成的数都是一样的。如果想要改变这个所谓的“随机数”，就要再说srandom生成一个新的种子，比如srandom(2)，不过这样做太麻烦了，先拿srandom(time(0))充个数吧。

#include &#60;stdlib.h&#62;
#include &#60;stdio.h&#62;

int main()
{
srandom(time(NULL));
printf("the number is %ld\n", random());
} </description>
		<link>http://blogs.gnome.org/raywang/2009/02/19/srandom-%e4%b8%8e-random/</link>
			</item>
	<item>
		<title>把baidu 的博客搬到这来了</title>
		<description>baidu 实在是太烂了， 所以决定搬到这来，关键也是看了initialtive 的推荐。

不过这里的访问速度实在是不敢恭维... </description>
		<link>http://blogs.gnome.org/raywang/2009/02/13/%e6%8a%8abaidu-%e7%9a%84%e5%8d%9a%e5%ae%a2%e6%90%ac%e5%88%b0%e8%bf%99%e6%9d%a5%e4%ba%86/</link>
			</item>
	<item>
		<title>厘清了xorg里的一些概念</title>
		<description>摘自：http://portis21.spaces.live.com/blog/cns!5F0852C73A746A31!532.entry?wa=wsignin1.0&#38;sa=932181685

今天看到一篇不错的英文文章，解释了xorg实现里的一些概念，也解决了我的一些疑惑。概括并解释一下。

期待已久的DRI2被排除出了Xorg 7.4版本了，为什么呢？ 是为了给GEM取代TTM让路，而DRI2的实现目前依赖于TTM。

目 前的Xserver渲染架构严重落后于时代，自Xfree时代遗留的问题在Xorg里也未得到足够的重视，所以现在到了革新的时候。2D加速，3D加速等 都依赖于一个好的内存和执行管理器，这也是最难的部分。目前的xorg驱动都实现了各自的存储管理，提供DRI1接口，并负责modesetting。

Memory manger位于内核中，并为用户空间的程序提供一套操作API。由各个不同的显卡硬件抽象出相同的操作，大家共享这部分代码，剩下的与具体硬件相关的部 分由各个显卡分别实现。老的TTM管理器API复杂，而且不适合现代显卡架构，于是Intel提出了GEM来取代之，目前GEM里只包含Intel自己的 硬件相关部分，ATI驱动的一个分支也实现了对GEM的支持。GEM目前已经进入2.6.28版本的内核。

Kernel mode setting：内核也做一部分modesetting的工作，比如系统引导的时候显示的信息，这些都是内核提前做了mode setting，而我们在进入X前，加载xorg驱动模块的时候，xorg驱动再做一次modesetting，重置显示设定，所以会有屏幕闪烁的情况出 现。现在的kernel mode setting就是要把这部分功能移到内核里，完全由内核做mode setting。Fedora 9/10已经实现了这个功能，所以从启动内核到进入X不会有闪烁，一切都很平滑，并且可以做很多eye candy的东西。目前KMS还未进入内核，最早也要等到2.6.29版本了。

DRI2是下一代的Direct Rendering Infrastructure，具有重定向(redirect) direct rendering功能。在当前，一个程序如果使用了OpenGL窗口，显示内容是直接写到framebuffer里的。这会跟使用了composite 功能的窗口管理器WM冲突，这是为什么Google Earth在compiz下支离破碎的原因。而通过DRI2，OpenGL窗口内容先被重定向的offscreen memory里，然后由WM负责输出，就不再会有冲突。而DRI2是基于老的TTM设计的，需要针对GEM作修改。

2D加速方面，EXA 将要取代老的XAA，但EXA也只是xorg server全面转向OpenGL前的一个临时解决方案。XAA不对大量常用2D操作作加速，并且对XRender的加速也支持不够。Intel又提出了 UXA来取代EXA，当前UXA提供和EXA同样的API，但是利用了新的GEM管理器。

Redhat的一个大牛不满X架构的严重老化，另起炉灶设计一个全新的X server，代号Wayland，目前还不实用，拭目以待吧。

针 对GEM修改后的DRI2预计会伴随Xserver 1.6于09年初发布，同时还将释出RandR 1.3。而Xorg 7.5预计09年四月发布，届时将会伴随Xserver 1.7。至于kernel mode setting，Ubuntu开发者将于下月召开的会议上讨论是否用Fedora的Plymouth替换Usplash，如果在9.04版里引入 Plymouth，我们就能用上KMS。Mesa 7.2不支持GEM，git版本的似乎也不行，估计要到7.3/7.4才会支持。 </description>
		<link>http://blogs.gnome.org/raywang/2009/02/11/%e5%8e%98%e6%b8%85%e4%ba%86xorg%e9%87%8c%e7%9a%84%e4%b8%80%e4%ba%9b%e6%a6%82%e5%bf%b5/</link>
			</item>
	<item>
		<title>看图学VCS</title>
		<description>http://www.ruanyifeng.com/blog/2008/12/a_visual_guide_to_version_control.html </description>
		<link>http://blogs.gnome.org/raywang/2009/01/04/%e7%9c%8b%e5%9b%be%e5%ad%a6vcs/</link>
			</item>
</channel>
</rss>
