2008年10月31日星期五

用WebPlayer在网页里播放mp3

WebPlayer利用Flash技术,允许你在你的网页里直接播放mp3文件,而不需要任何其他软件。WebPlayer使用非常简单,只要下载一个很小的文件放在你的网站上,把要播放的mp3文件也放上去,再在你的网页的HTML文件里加几行代码,就可以了。 下面是我用口琴演奏的《天鹅》。
祝老婆纪念日快乐!

2008年10月29日星期三

光束质量因子M2(M squared)的测量

各种文献经常会用M2(M squared)因子来评价光束的质量。到底什么是M2?一般文献会告诉你,M2就是一个光束的腰半径和发散角的乘积跟TEM00高斯光束相比的比值。M2≥1,因为TEM00高斯光束的该乘积具有最小值。要想从实验得到M2的值,不可避免的要涉及光束半径测量的问题。
  1. 光束半径
  2. 光束没有明显的边界,因此它的半径有很多不同定义方法。对于高斯光束,最常见的定义就是1/e2半径,也就是把光强下降到最大值的1/e2的位置定义为半径,通常在公式里以W表示。在统计学里,我们对高斯分布的宽度(半径)使用的是方差,也就是说,对于高斯分布函数
    f(x)=ae-x22σ2
    它的方差(二次矩)半径为σ。把这个公式和一维高斯光束光强公式
    I(x)=e-2x2wx2
    比较,就会发现W=2σ。无论是W还是σ,实验上都没办法直接测量。但是如下定义的宽度实验上是可以测量的:用一个刀片,横向扫描过光束,这样一部分光束被刀片遮挡,另外一部分会通过。如果通过的光强等于总光强的90%时刀片坐标为x1,通过的光强等于总光强的10%时刀片坐标为x2,这样光束的宽度可以用
    D=|x2-x1|
    表示。当然,这个比例不局限于10%和90%,也可能是其他值。这种实验方法称为“刀锋(knife edge)法”。这样的话,我们需要找出一个D和W(或者σ)的关系。可惜,这个关系依赖于光束的光强分布,所以不存在一种普遍适用的关系。但是对于TEM00高斯光束,这个关系不难得到。
  3. TEM00高斯光束
  4. 因为刀片在一维方向移动,所以我们只要对光强进行一维积分就可以了。高斯函数的积分为误差函数。例如我们计算宽度D内通过的光强占总光强的比例:
    -D2D2e-2x2w2dx-e-2x2w2dx=erf(2D2w)
    按照上面的例子,这个比值应该是80%。通过查表或者数值计算,我们可以得到
    D=1.2816w=2.5631σ
    这是TEM00高斯光束的结果。对于其他分布种类的光束,这个结果会有变化。
  5. M2因子
  6. 对于TEM00高斯光束来讲,光束半径在光轴方向(z方向)的变化可以表示为
    w2(z)=w02+(λπw0)2(z-z0)2
    其中z0表示TEM00高斯模式腰的位置。对于一般光束,我们已经提到过,光束发散程度一定超过TEM00高斯光束,所以可以引入一个M2因子,这样一般光束半径可以表示为
    w2(z)=w02+M4×(λπw0)2(z-z0)2
    上述各式均是在某单一横向方向(例如x),对于一般光束,x和y方向可能有不同的半径和M2(例如半导体激光),甚至各个方向都不相同,这时候就需要更多方向上的测量才能确定光束分布。M2可以作为光束质量的一个量度。M2越接近1,光束质量越好,发散越小,聚焦时形成的斑点越小。
  7. 刀锋法测量
  8. 上面的例子中,我们用10%和90%作为光束宽度的测量标准,那么可不可以用其他数值呢?另外,上面得到的D和W之间的关系只对于TEM00高斯光束适用,那么一般的光束半径如何测量呢?Siegman的一篇论文阐述了这个问题,结论是对于绝大多数激光光束,如果阈值选择在8.5%到11.6%之间,TEM00高斯光束的结果都可以作为很好的近似,10%无疑是一个很好的折衷。其实对于大多数激光光束而言,TEM00都是主要成分,这样的近似在大多数时候都是没什么问题的。 测量时,可以在不同的位置z多测几组,然后进行拟合,得到光束的M2和其他各个参数。

2008年10月28日星期二

让blogger支持MathML公式输出

我想在我的blog里显示公式怎么办?我可以把每个公式变成图片文件,然后把公式作为图片显示。我不需要截屏软件,OpenOffice可以很方便的把包含公式的文档转换为包含图片的HTML文件。但是这么做太笨了。更好的办法是用MathML在网页上显示公式。 MathMLXML的一个应用,是W3C推荐使用的网页数学公式显示方案。遗憾的是,目前不是所有的浏览器都支持MathMLFirefox本身包含对MathML的支持,但是你可能需要安装显示数学公式需要的字体。如果你使用Linux,你的发行版很可能包含(甚至已经安装)了该字体,请以mathml为关键词搜索以确定是否已经安装。如果你不幸使用Windows,请到这里按照说明自行安装字体。如果你更不幸使用IE浏览器,那只好自生自灭了。(开个玩笑,请安装MathPlayer插件)。 现在你可以到这里测试一下你的浏览器是不是可以正确显示MathML公式了。能显示,很好。可是,blogger并不能自动支持MathML的显示,因为blogger的网页扩展名都是html,浏览器不会自动按照xml来显示。这个问题可以这么解决:到这里下载一个小javascript文件,把这个文件直接放到你的blogger template文件的head里面,或者放到互联网上某个地方,在template的head里面加入下面一行:
<script type="text/javascript" src="javascript文件的链接"></script>
这样blogger就可以显示你的MathML公式了。 MathML语法非常复杂,要想直接用MathML写出一个公式并不容易。TtM是个把LaTeX公式转换成MathML代码的小工具。这下就方便多了。把转换好的MathML代码复制到你的blog就可以了。 下面是一个MathML显示公式的例子:
U(r)=A0W0W(z)exp[-ρ2W2(z)]exp[-jkz-jkρ22R(z)+jζ(z)]

2008年10月21日星期二

不用重启切换runlevel

Linux下telinit命令允许不重启的情况下切换runlevel。

2008年10月19日星期日

魔术组合键SysRq

很多用户不熟悉SysRq键到底有什么用,甚至很多用户根本没注意过电脑键盘上还有这么一个键存在。在Linux系统出现问题时,只要内核没有完全崩溃,SysRq就可以为我们提供一个诊断和控制内核的途径。SysRq键的使用方法是同时按下:
Alt + SysRq + CommandKey
有些键盘无法同时处理那么多键,例如一些笔记本的键盘,很可能还需要按下额外的Fn键。这时候可以按照下面的顺序:
按住Alt不放 => 按下并放开SysRq => 按下CommandKey => 放开所有键
Fedora默认是不开启SysRq功能的。如果想开启这项功能,可以修改/etc/sysctl.conf文件,把kernel.sysrq设置为1:
kernel.sysrq = 1
常用的CommandKey有如下这些:
CommandKey功能
m目前内存信息
t目前任务信息
s同步所有挂载文件系统
u重新挂载所有文件系统为只读
b立即重启(不sync或者unmount)
r键盘从raw模式切换到XLATE模式
kSecure Access Key杀死现在终端上所有程序
c故意让系统崩溃
e向除init外所有进程发出SIGTERM信号
i向除init外所有进程发出SIGKILL信号
如果syslogd仍然起作用,SysRq触发结果将会保存在/var/log/messages