Shell's Home

Oct 5, 2006 - 1 minute read - Comments

租房和买房

租房和买房的选择中其实有两个问题。报酬率,还有投资选择。 首先看报酬率问题,我们看房价/租房比值。 假定一个房子没有装修,这个房子每个月租金理论应当是多少?答案是房价在当前长期存款中的一个月平均利息(注意不是复利,房租可不会计算复利),简单来说是总房价X乘r,其中r是长期存款的单月收入率。因为买房,在没有价格波动的情况下,和长期存款一样。都是一个投资,指望获得利润。如果理论租金高,那么会更多人买房子去租,导致房价上涨。而且出租间竞争导致房租下跌。由此平衡到利率。我们假定一般这两个投资期限都是五年,并且都没有风险(这两个投资对于货币贬值这个风险的反应是一样的)。注意这里的两个前提,理性投资,价格不波动,房子不装修。 投资者有一个等式,他对某个资产的每个月所得减去每个月支出,应当等于这个资产价值的当月获利。 那么我们再考虑房子装修的情况。一个房子是固定资产,可是装修就是更短期的损耗品。如果装修的可以使用期限是N个月,而一次装修费用是裸房总价的k倍(当然,k可以小于1)。那么装修在每期的费用就是总房价X乘k/N。然后我们综合上面,得到了房价/租房比值。每月所得(房租x),每月支出(Xk/N),每月利息(Xr),x-Xk/N=Xr。X/x应当是1/(r+k/N)。还是注意这里的前提,理性投资,价格不波动。 我们先计算下,当前中国升息后5年期以上的月利率是0.345%(银行注明是月利率0.3%,我现在还不知道怎么计算出来的)。一次装修普遍是120个月为周期,大约投入资金为房价的1成(伪推定,按照房子地段和装修水平,此处变化非常大)。这样我们计算出233倍。如果是两成的装修,就是195倍。但是基本都在200-290倍间。装修越好,比值越小。房价/租房比值是指明你租房多少时间可以买一个房子的数值。当你装修很好的时候,很短的时间就可以重新买一个房子了。国际上一般这个值都在100-200间,可能是由于装修比较好,而且当前美元利率也比人民币高出一倍。当前上海的此比值在320-370间浮动,和我们计算的并不符合,原因就是在于远期预计。 我们现在保持理性投资的假定不变,那么当我们预计房价会以一定比值变化的时候。我们会改变买房和租房的行为,从而导致房价/租房比值的变化。那么,我们预计投资者的收入会在租房房价外加上房子上涨在每个月的平均所得XR(假定房价上涨当场折现,事实上你必须在一定时候出手折现,然后平摊在你拥有房子的这些年上。如果跌了,R为负)。现在,每月所得(房租x+房子上涨在每个月的所得XR),每月支出(Xk/N),每月利息(Xr),x+XR-Xk/N=Xr。X/x应当是1/(r+k/N-R)。 同样,我们按照上面的假定来进行计算,1/350=1⁄233-R或者是1/350=1⁄195-R。R应当是0.143%-0.227%的样子,换算平均年预期房价上涨是大约是1.66%到2.59%。预期房价上涨越高,当前的房价/租房比值越高。关系式很简单,R=r+k/N-P,其中P是预期房价上涨带来的平均每月收入。 显然,当前房价/租房比值的状态显示大众的心理还是基本相信房价逐年上涨的状态。 当然,消费者未必在房屋上全理性,因为受到工作,生活,个性的影响,我们对于房子的选择也是非理性的。而且上面的市场也是完全市场。因此上面的分析仅仅是分析而已。 另外一个问题,就是投资选择问题。简单来说,就是房贷和存款利率的差的问题。这涉及风险评估问题,根据不同的风险,商业贷款的利率应当不同。但是中国目前利率固定,因此开始就没有讨论价值(加上公积金等等问题,更难说清楚)。但是一般来说,如果风险不变化,存款利率不变。提升贷款利率的结果会催生地下钱庄。反之则会疯狂贷款,催生呆帐。因为同样通胀水平下,风险越大,投资回报比例越高。 同理,如果说没有其他问题,贷款利率升高,风险也增大。不知道这是否预示着中国的领导层预期到中国将来房贷的返还风险增加。换句话说,失业或者房价下跌(高失业率或者高通胀率),痛苦指数增加。

Sep 30, 2006 - 2 minute read - Comments

网络性能测试和标准

前两天弄有线通的事情弄的郁闷了,所以就研究了网络性能测试。以后不用也是浪费,大家需要就看看吧。 1.目标 测试目的往往是测试清楚几个值,包括:IP包传输往返时延(RTT),IP包时延变化(抖动),IP包丢失率(Lost rate),IP业务可用性,还有带宽(Bandwidth)。 2.适用标准 RFC 1242, RFC1944, RFC2285, RFC2432。 ** 中华人民共和国信息产业部令第36号(http://www.chinanetcom.com.cn/mj/dxsc.asp?Unid=3810) ** IP网络技术要求– 网络性能参数与指标(YD/T 1171-2001) 3.测试平台和工具 我们假定基于POSIX兼容平台测试,演示用的例子来自Debian Etch/Kernel 2.6.17-2-686。Windows下所需要工具可以参考移植工具。 iperf 网络带宽测试工具 paratrace 被动路由测试工具 hping2 网络联通和时延测试工具 wireshark(ethereal) 抓包分析工具 p0f 被动指纹分析工具 4.测试对象,方法,和结果分析 以下为实例测试,参数需要根据具体情况变化。 4.1.测试网络带宽 在服务器端运行iperf -s。 在客户端运行iperf -c 192.168.0.2 100Mbps网络环境下,得到结果为92.6Mbps,折合为11.5MB/s。即数据极限传输速度。 4.2.测试网络IP包传输往返时延(RTT)和IP包时延变化(抖动) 分主动被动方法,被动方法用wireshark抓包分析。下面主要介绍主动方法: 运行hping2 www.google.com -p 80。得到 56 packets transmitted, 56 packets received, 0% packet loss round-trip min/avg/max = 242.5/269.9/381.1 ms 即在主动建立的到www.google.com的TCP连接中(默认为TCP,可以使用UDP,ICMP,IP,具体请看hping2 –help),丢包率为0。平均传输延迟为269.9,抖动为138.6。 注:按照《中华人民共和国信息产业部令第36号》,往返时延平均值≤200毫秒,时延变化平均值≤80毫秒。此处已经超标。但因为测试环境和适用条件不完全吻合,因此无法作为有效证据。 4.3.IP包丢失率(Lost rate) 也分主动方法和被动方法,主动方法见上。被动方法是用wireshark抓包后,通过tpc.analysis.lost_segment标志分析丢包数量和总体数量。具体为。 用wireshark抓包。 用( tcp.srcport == 7007 || tcp.

Sep 30, 2006 - 1 minute read - Comments

从踢牙老奶奶到火星文,从火星文到人工智能

先复制一个小的密码—— £³¨Ç£ê£±£¬£µ¨É¨Ù¨Ó¡££±¨Ð¨Ç¨Í£¬£±¨Ð£ä¨Ê¡£ ¨×£²£ä£´£¬¨ß¨Ç¨Ñ¨È¡£¨ÙYA¨È£ã£¬£ê£±£´¨Ø¡£ £´¨Ñ£´£õ£¬£â£ã£â¨Ó¡££±£ã£±¨É£¬¨Í¨Ø£´¨Ó¡£ 看的出来的——请和火星总部联系。 很多朋友可能不知道一个事情,不过不少人应该听说过无冬城之夜。台湾版的无冬城之夜本地化(l10n)中有一个重大bug。俗称踢牙老奶奶。 原文是:我看到一位老奶奶慈祥的脸——我抓住她的手,但是她竟然一脚踢到我的牙齿。 估计所谓踢牙,应当是英文kicked my teeth in,指漠视。最后应当是她竟然无视我。这是典型的一个翻译错误,而且估计可能是机器辅助翻译没有修润的结果。这个错误和当年大菠萝的温暖骷髅情况不一样,没有任何一个电脑会把蠕虫骷髅(wormskull)错成温暖骷髅(warmskull)。 由此肇因产生了很多火星文,例如说:这个游戏里面到处是踢牙老奶奶。 不过,无论是机器翻译不完善造成的火星文,还是人造的火星文。其实都是一个核心问题,NLP。 机器可以理解形式化的编程语言,并且转换为机器代码。是因为语言是具备一定的形式(form)的,或者叫做范式(pattern)。而例如说可以借助符号来做唯一分割(语法树的生成,或者说波兰树的生成),符号的唯一性。(所谓重载,是用将参数等重载辨识元素附加在名字里面,导致名字的定义仍旧唯一,详细大家可以看有做对象导出的库的导出符号表)然而自然语言本身分割未必唯一,符号也是和上下文相关的。例如最有名的例子,中国队大败美国队获得冠军。(中国队大败美国队获得冠军。和中国队大败美国队获得冠军。前一句中的败是动词,后一个应当是使动用法)这句同时出现了非唯一分割和符号歧义,即使对于人来说,也是具备歧义句特征的。只有在特定的语境中,歧义才会消除。例如如果在表扬中国队表现的文章中,那应当是后面一个解释。 对于自然语言的理解,人工智能中叫做NLP问题(Nature Language Precess)。首先要处理的就是断词和消除歧义。其中涉及的问题到不繁复,但是很庞大。最关键就在于数据量上。 断句的话,一般简单的都采用HMM算法,这就需要有前后词或者词组的衔接概率作为基础。中文又具备一个恶心的特性,就是假借。尤其在口语和古语方言一类的东西里面,倒置使动频繁。所以单纯做HMM还不完全解决问题。现在有很多分词软件,是基于HMM的。拿古文上去试试就知道是不是了,例如:古之人诚不余欺也。 至于消除歧义,更是麻烦的要死的东西。要消除歧义,只有把所有歧义可能全部列举出来。然后查看上下文中相关词汇出现的频率,选择比较高的一个。然而对于上面那个使动用法的例子,两者相关词汇的频率应当差不多。而电脑又不会像人一样判断语境,因此要误判就不奇怪了。 还有一个就是上面踢牙老奶奶出现的原因,俗语(idiom)或者叫俚语。例如百口莫辩,如果不加处理,至少也是can’t argue with one hundred mouth(people)。事实上比较恰当的翻译应当是unable to give a convincing explanation for self-defense。当然,NLP的目的未必是翻译,因此可能出现别的错误。不过错误的原因是一样的,就是俗语不了解。这个问题人也会出现,只是人的智能就比电脑高一些。百口莫辩不知道典故错误翻译过去还算难免,买椟还珠这种东西即使知道椟怎么翻译,在真的翻译前也会问问典故的吧。

Sep 27, 2006 - 1 minute read - Comments

玉女穿梭

今天弄了一个好玩的东西,esound4win。 现在在我的linux和windows上面有一堆穿来穿去的协议,大家看看实现方法,然后头晕不头晕。 首先是VNC,在windows上面安装RealVNC,启动服务。然后用linux的xvncviewer访问,就可以无缝在linux上面访问windows。 然后是Xming,这个是Cygwin的一个部分。可以在windows上启动X服务,这样我们可以运行一个远程跨平台的图形界面。在我的Debian上面是这样的。 用一个tty登录进去,然后 $export DISPLAY=192.168.0.X:0 $/etc/X11/Xsession & 这样就完成了完整的一个界面,界面控制是在windows下,但是程序是在linux下跑。和VNC不一样的是,windows的前端在操作的时候,其他的前端可以同步操作。 再然后是esound,这也是Cygwin的一个部分。可以在windows上开启一个esound daemon。方法是运行。 esound -tcp -public 在linux下面,esound可以跨站传输,方法是设定。 $export ESPEAKER=192.168.0.X:16001 当然,监听端口可以自行设定。 这样,就完成了从linux上将声音输出到windows听的功能。 最后,我讲讲我的实现。我先开了一个VNC穿到windows上操作,然后启动Xming。按F8退出到本地,用Ctrl+Atl+F2切换到tty登录,并且连接上Xming的前台X。然后Atl+F7返回GUI,F8返回VNC全屏模式。在Xming里面,开了个term。export了参数后启动xmms,并且切换到esound输出。再在windows下面运行esound4win,插上耳机。最后我点了下VNC中的Xming中的xmms的播放,声音出来了——世界多么奇妙?

Sep 26, 2006 - 1 minute read - Comments

电脑程度测试

随便写了点问题玩玩——大家开心就好哦—— 1.电脑开机和关机一样简单 2.会按照标准流程关机 3.非常习惯的在关机的时候点关机去 4.电脑不经常关机 5.为啥要关机? 1.不知道啥叫重装系统 2.定期找人重装系统 3.会自己重装系统 4.用过windows以外的系统 5.用的是自己定制的系统 1.从来都只在网络上听歌而不下载 2.没有用过CMD窗口下的命令 3.会按照网络上的说明调整系统 4.中了木马会手工查找 5.经常在自己的论坛或者wiki上写东西 1.看到弹出一个对话框就习惯的按回车 2.删除错误了去回收站里面找 3.文件按照分类摆放 4.经常写两个脚本用用 5.经常猜到将来会流行什么类型的软件 1.电脑里的软件都是中文的 2.可以用一些英文软件 3.偶尔自己装几个软件试用一下 4.经常试用各种软件 5.一般只用自己熟悉的软件 1.出现异常的时候手足无措 2.出现异常时候的反应是,中病毒了 3.出现异常会去论坛上提问 4.出现异常会提交报告 5.出现异常会条件反应出出错的原因 评: 5-8分:您是标准的电脑白痴,除非有人帮忙,否则电脑就是废物。 9-12分:您刚刚学会用电脑,不过还不是很熟练 13-16分:您的电脑还算不错 17-20分:已经算是个高手了 21-25分:对您来说,用电脑和呼吸一样自然,你是神吗?

Sep 12, 2006 - 1 minute read - Comments

上海有线通网络封锁解析

OK,今天贝壳稍微辛苦了点。给用有线通的朋友们准备了份礼物。 贝壳今天解析了有线通的抓包,发现了有线通限制P2P的方法,那就是,丢包。 TCP传输的时候,会有一定几率的丢失部分或者全部传输的数据,对方会根据你的SEQ和checksum来分析是否接收到了所有的包,并且返回一个包,告诉你报文状况。一般来说,丢包率都是很小的,大约是0.1%以下。丢包太多往往意味着各种网络异常,例如抢占MAC的sniffer方式就会有大量的丢包。这里是丢包率的详细解释。 贝壳刚刚截取了32秒的数据,总共传输3082个,丢包率是ED数据丢失119个,其余总共丢失2个,总丢包率3.9%。图片内有相应的截图,并且贝壳可以提供多次的抓包分析证明。 贝壳又做了一次分析,这次贝壳从skycn.com上面下载directx9c,同时保持ED通信。ED是7K上传40K下载的样子,HTTP是15K的样子。在60秒内总共是16763个包,其中ED相关丢包321个,非ED相关丢包13个,丢包率1.99%。 通过这个就可以证明,即使不说有线通封锁P2P的问题,有线通的网络服务质量也存在硬性问题。

Sep 11, 2006 - 1 minute read - Comments

X system 配置文件执行流程分析

1.startx启动流程 /usr/bin/startx +->/etc/X11/xinit/xinitrc |->/etc/X11/Xsession |->~/.xinitrc |->/etc/X11/xinit/xserverrc |->/usr/bin/X11/X ->~/.xserverrc startx脚本会分析用户主目录下是否存在特殊配置文件,如果不存在则使用系统默认脚本。默认脚本分两个部份,xinitrc启动客户端部份,xserverrc启动服务器端部份。 xserverrc内容仅为启动X。xinitrc会执行/etc/X11/Xsession,而后进入session分析。 2.Xsession /etc/X11/Xsession -> /etc/X11/Xsession.d/* /etc/X11/Xsession和/etc/init.d/rc很类似,是用来循环依次启动其他脚本的控制脚本。他负责启动/etc/X11/Xsession.d/下的所有文件。其中50xfree86-common_determine-startup文件会依次检测以下3个文件,并且设置到STARTUP变量中。x-session-manager;x-window-manager;x-terminal-emulator;最后99xfree86-common_start文件会执行exec $STARTUP;完成整个系统的启动过程。 3.gdm gdm服务被/etc/init.d/gdm启动,而后读取/etc/gdm/gdm.conf配置自身。后面是基于理论分析,没有加以验证。 |-gdm---gdm-+-Xorg | `-x-session-manag-+-scim | `-ssh-agent 上面是pstree的结果,第1个gdm是/etc/init.d/gdm,第2个gdm是/usr/bin/gdm。gdm先启动一个X作为服务端,否则自身也无法以图形方式显示登录界面。而后gdm成为此X界面的唯一用户,显示登录系统。在用户登录后,gdm启动/etc/gdm/Xsession。这个脚本的内容和/etc/X11/Xsession非常类似,我怀疑为什么他们不用链接的方式(可能是因为包的关系?)。这时整个启动活动就结束了。

Sep 11, 2006 - 1 minute read - Comments

Linux配置文件测序

CopyRight: Written by Shell.E.Xu. Published under GPL. KeyWord: Linux bash profile 配置文件。 Abstract: 利用变量声明次序测定多个配置文件是否被调用以及调用的次序。 环境: Debian/GNU Linux starg 3.1 Kernel:2.6.16-686-2 测定方法,加入变量TEST=XXX。此方法可能被某些变量解除函数解除,因此不予执行的反应未必是真,不过执行次序一般假不了。 1.tty登录时 /etc/environment;/etc/profile;~/.bash_profile->~/.bashrc->/etc/bashrc; /etc/environment;/etc/profile;~/.bash_login /etc/environment;/etc/profile;~/.profile 当上级启动过程中文件不存在时,才进行下面的过程。 2.GDM登录时 /etc/environment 3.新启动bash时 /etc/bash.bashrc;~/.bashrc->/etc/bashrc; 4.~/.inputrc 根据文档,这个函数在readline函数初始化时启用。 5.结论 如果需要有效执行命令,需要同时修改/etc/profile和/etc/bash.bashrc。因为GDM登录的时候不执行登录脚本顺序,所以仅仅修改/etc/profile会造成对GUI下面开的term无效。虽然/etc/bashrc在理论上也有效,但是一旦~/.bashrc中没有引用,则无效(例如Debian中的root,由于安装系统的时候没有copy skel,所以缺少很多.XX文件)。如果仅仅是设定变量,可以用/etc/environment。该文件没有找到资料,其中仅可以设定变量(不用export,应当是被某程序作为配置读取而非脚本执行),据分析是登录时当即起效。

Sep 9, 2006 - 1 minute read - Comments

有线通封锁变通办法

虽然决定不用有线通了,但是还是要熬到年费结束。所以稍微研究了有线通的封锁方法,看看有没有变通方案。根据我上面的研究,有线通浦东地区封锁的是协议。所以我实验打开了BT和ED两个协议。结果证实,这两个协议同时打开对于单个协议的速度稍微有影响,估计是TCP的优先相应问题。不过总体速度比单个协议高了很多。昨天打开的时候,ED是30下载5上传,没有BT。今天同时打开的结果是BT45下载10上传,ED17下载10上传。总体来说有62下载20上传左右,高了很多。 其中针对BT说一句。之所以有这么高的速度,主要因为打开了BT中的加密协议头优先。这样在某些传输中就被当作HTTP连接,这个速度就是赚到的。不过现在不多,因此也没有太高的提升。不过总体下来不无小补,所以提供给继续要受到有线通荼毒的人士用用。 另外,有线通对HTTP下载不限速。大家可以把HTTP下载速度降低到不影响P2P连接的水平(例如用flashget的限制速度功能),慢慢下。这样你的总体平均流速是最大的,同时对于有线通的杀伤也是最大的。

Sep 8, 2006 - 1 minute read - Comments

音乐文件转换技巧和脚本

好久没动手写啥东西了,最近在准备LPIC1考试。Will everyone keep finger cross 4 me?嘿嘿—— 这个题目是个大家伙,反正每天写一点,也不忙在一时。大家有啥需要了解的,也可以问在下面。我会更新的。 copyright: 本文所提到各种软件版权归各个软件开发者所有。文章内容及所有附属脚本为独创,按照GPL发布。 keyword: 音乐 格式 转换 脚本 标签 bash shell script mp3 midi ape flac cue toc directory: 1.文件格式解说 1.1.mp3/ogg 1.2.midi 1.3.ape 1.4.flac 1.5.cue/toc 1.6.wav 1.7.iso 2.文件转换 2.1.wav/mp3 2.2.wav/ape 2.3.wav/flac 2.4.midi2wav 2.5.iso/wav 3.转换细节问题 3.1.按照cue切割 content: 1.1.mp3/ogg 这两个是非常有名的音乐压缩文件,其中MP3是mepg II layer 3。不要以为是mpeg III。一般来说,MP3都被认为是一种小巧但是音质比较差的格式。不过事实上,要指摘MP3的音质前,你先自己找找是否满足了一定条件。周围是否安静,没有噪音。音源是否高清晰(拿MP3还原出来的CD是没意义的)。声音设备是否足够好(至少也要是高质量的音响或者高档耳机,耳塞或者200-300的所谓音箱根本不用说)。如果没有上述条件,那么MP3的音质也算过的去的。MP3格式的压缩比值大约是10:1,和wav相比。另外,如果有CD的话,最好使用lame进行适当压缩。而不要为了方便随便使用一个压缩工具。压缩最好使用VBR格式。这种格式本质上没有什么变化,只是在信息流高的地方使用高的编码格式,以获得最高的质量/空间比值。ogg具体情况没有研究,不过使用上和MP3没有区别。 1.2.midi midi是所有格式中唯一不记录音频数据的音乐格式。midi记录的实质上是发声事件,简单来说就是什么时候鼓响了一下,什么时候钢琴的哪个键被按下了。因此midi也是没有立体声效果的。除非你使用特殊的软件指定某个乐器演奏时候的位置,然后根据环境生成出相应的音乐文件。midi文件在当前主要是两个用途。一个是midi记录了乐手演奏时候的指法细节,也记录了曲子的曲谱。midi本质上就是谱子。另外一个是midi的超小体积使得在某些嵌入系统(例如手机)上面可以作为背景音乐。 1.3.ape ape是一种无损压缩格式,你可以把ape看成是一种只能对wav作用的zip文件。压缩比一般是2:1。 1.4.flac flac和ape基本差不多。 1.5.cue/toc cue/toc不是音乐文件,他们是用于flac/ape等光盘的音轨定义。一个CD可以有多个音轨,iso会记录下音轨的切分方式。但是ape就不行了。于是eac等抓轨软件生成cue来切分音乐文件。往往看到ape的发行方式是一个ape和一个cue,直接打开ape往往是一首非常长的歌曲。其实切分信息在cue里面。虚拟光驱使用的bin文件也是一样,会有配套的cue文件。两者可以用cuetools和mkcue互相转换。 1.6.wav wav文件又叫做PCM编码格式。这是一切音乐的基础。无论你是哪种格式,最后都会被还原成wav的某种格式或者变形,才能够从声卡中播放出去。当然,midi的情况特殊,不在此列。 1.7.iso iso也不是音乐文件,但是和音乐的关系非常密切。大家都知道iso是光盘的镜像,其实说的还不确切。iso本身就是光盘内容严格1字节比1字节复制的结果。至于有的为什么有其他格式。那就涉及光驱设备工作和数据流/加解密的问题了。 另外说一个iso的问题,大家知道linux下面挂载iso的指令是 # mount -t iso9660 -o loop file /mnt 这其实是两个步骤,一个是