2009年12月25日 星期五
2009年10月31日 星期六
Vimperator
https://addons.mozilla.org/en-US/firefox/addon/4891
很好很強大
http://luoxiqofy.blogbus.com/tag/vimperator/
此页有相关的工具
其实本来就没在用滑鼠的…
2009年10月9日 星期五
windows平台安装perl的XML::LibXML模块
好啦开个玩笑,详情参考http://www.1-script.com/forums/How-to-install-XML-LibXML-article8842--5.htm
重点是,目前最近一年左右新安装的PERL版本是5.10,它的PPM设定似乎需要修改一下,缺省的设置是满阳春的;要彻底解决这类问题,应该参考 在winxp下安装各种perl模块的方法 ,回应的文章也提出不少另类方案。所以操作手顺应该是
ppm repo suggest
ppm repo add uwinnipeg
ppm
接下来就可以用常用的图形介面进行安装了。很多4、5年前没有port的distro现在都出现了,真是令人惊讶!!
2009年10月8日 星期四
win32平台上简易的tcp server
而且g还g不到什么范例,不像java;不过想想这显然是perl模组化的成功所在,当你在在重新发明轮子的时候,可能很快招来gurus们的白眼…
这时就展现出ppm的威力了,打个tcp server进去,挑日期新的,看来有两个选择
http://search.cpan.org/dist/IO-Socket-INET-Daemon-0.04/lib/IO/Socket/INET/Daemon.pm
这是目前在用的,真的很简单用说
http://search.cpan.org/dist/Test-POE-Server-TCP-1.08/lib/Test/POE/Server/TCP.pm
这是架构在完整的poe--perl objects events之下,poe可以拿来作很多事,写写简单的服务,回传时间、日期、天气等等.那因为时间不多所以就有时间再看看吧…
http://zh.wikipedia.org/wiki/Perl_Object_Environment 有个简单的说明:
Perl Object Environment (POE) 是一个 Perl 语言的模组,由 Rocoo Caputo 撰写。
CPAN 上 POE 的简介:
POE 一开始的开发目标是成为一个永久性的物件服务器和执行时期环境。但现在 POE 已经成为一个汎用型多任务、事件驱动的网络框架。
2009年10月7日 星期三
Here Comes the New MetaTrader 5 and MQL5
虽然很多人在用tradestation,但是架构上metatrader较优是无疑的,光是能呼叫win32 api就远远胜出。有人还写出呼叫skype的ea:http://articles.mql4.com/495 或许很快它就要实作出类似vba的功能了
其实borland delphi如果能卖给tradestation的话,或许还有翻身的机会…
2009年9月26日 星期六
Testing of Expert Advisors in the MetaTrader 4 Client Terminal: An Outward Glance.
http://articles.mql4.com/302 回测时显示部位资讯
http://articles.mql4.com/303 回测时显示交易历史
http://articles.mql4.com/453 回测时显示净值图
http://articles.mql4.com/tester 包含以上文章的目录
http://articles.mql4.com/506 即时线上微调方案。没想到MT4可以同时运行多个实例,只要复制程式所在资料夹并更名,建立执行檔的捷径,然后执行即可,要执行几个就复制几个,方法不错…这样一来,同一台机器操作多个帐户也是满简单的…可参考 http://www.forex-tsd.com/metatrader-4/2386-running-multiple-instances-mt4.html 据说有人同时跑20个!!
http://articles.mql4.com/479 避免过度最佳化,检视参数高原/小岛
2009年9月25日 星期五
The real reason for the war in Afghanistan ? Control of rare strategic metals in Afghanistan
没想到钽电容的主要原料钽,只剩下5~10年的存量了
不过这个smarteconomy网站还满好玩的,有空要多来逛逛,长长见识
2009年9月22日 星期二
facesærch人臉搜尋引擎
照这样看来,电影Eagle Eye里面的技术也不怎么难了
不过我有点怀疑,打人名找图是否只是建立在文字搜寻的技术上?
人脸搜寻又有什么有钱景的应用呢?
拭目以待吧~~
2009年9月16日 星期三
2009年9月15日 星期二
无忧启动论坛 » 启动盘制作技术区 » DOS讨论区 » 超级急救盘_v2009.09.09_正式版
运行环境:DOS
软件类别:系统维护
授权形式:免费
官方网站:http://doshome.com
软件作者:葛明阳(gmy)
软件简介:
超级急救盘是"DOS之家"首创的4种版本(硬盘版/光盘版/优盘版/软盘版)同步发布的启动盘,
是"一键GHOST"的增强版,适于有基础的系统爱好者和硬盘维修/数据恢复/网管等专业人士使用,
主要集成以下10大DOS工具:
GHOST 一键备份/恢复系统
DISKGEN 重建硬盘分区表
PQMagic 无损数据调整分区大小
MHDD 硬盘扫描与删除HPA分区
GHOST32 支持SATA的WINPE版GHOST
GDISK 智能分区
DM 快速分区与清零低格
NU 磁盘编辑、查错等
HWINFO 硬件型号检测
HDDREG 硬盘坏道修复
超级急救盘多数工具有一定的危险性,初学者慎用.
2009年8月29日 星期六
AVR-HID:HID接口实现传感数据采集
是使用atmega16 ,所列的价钱CAD$16.61可以作为一个指标,rmb 66以上的开发版就不要考虑
The AVR-HID
http://www.marktmarshall.com/projects/avr-hid?id=projects/avr-hid
http://sensorwiki.org/doku.php/tutorials/building_a_usb_sensor_interface?s[]=avr&s[]=hid
Google Code上两个LPC21XX开源项目 http://www.getproject.com.cn/post/131.html
PIC18F2550实现的基于HID的USB示波器 http://www.getproject.com.cn/post/15.html
steps that I follow to install Mail::Webmail::Gmail on a Windows XP machine
Some users of this module have had issues installing, mainly through the complications of
needing SSL and Crypt::SSLeay. Hopefully this file will help the Windows users out.
Here are the steps that I follow to install Mail::Webmail::Gmail on a Windows XP machine.
1) Install activestate perl (5.8)
2) Install the windows version of openSSL - http://www.slproweb.com/products/Win32OpenSSL.html
3) Install the ppm of Crypt::SSLeay by typing the following at a command prompt
ppm
install http://theoryx5.uwinnipeg.ca/ppms/Crypt-SSLeay.ppd
4) Install nmake if you dont already have it - http://support.microsoft.com/default.aspx?scid=kb;en-us;Q132084
5) Install Mail::Webmail::Gmail by typing the following at a command prompt
perl -MCPAN -e "install Mail::Webmail::Gmail"
2009年7月28日 星期二
2009年7月1日 星期三
NVIDIA_CUDA_Programming_Guide_2.2.1.pdf
2009年6月30日 星期二
取得pdf檔内文
#!/usr/bin/perl -w
package main;
use warnings;
use strict;
use CAM::PDF;
use Getopt::Long;
use Pod::Usage;
our $VERSION = '1.52';
my $lastx=0;
my $lasty=0;
my %opts = (
check => 0,
geom => 0,
verbose => 0,
help => 0,
version => 0,
);
Getopt::Long::Configure('bundling');
GetOptions('g|geometry' => \$opts{geom},
'c|check' => \$opts{check},
'v|verbose' => \$opts{verbose},
'h|help' => \$opts{help},
'V|version' => \$opts{version},
) or pod2usage(1);
if ($opts{help})
{
pod2usage(-exitstatus => 0, -verbose => 2);
}
if ($opts{version})
{
print "CAM::PDF v$CAM::PDF::VERSION\n";
exit 0;
}
if (@ARGV < 1)
{
pod2usage(1);
}
my $file = shift;
my $pagelist = shift;
my $outfile = shift;
my $doc = CAM::PDF->new($file) || die "$CAM::PDF::errstr\n";
open (FILE, ">$outfile");
open (FILE2, ">my$outfile");
foreach my $p ($doc->rangeToArray(1,$doc->numPages(),$pagelist))
{
if ($opts{check})
{
print "Checking page $p\n";
my $tree = $doc->getPageContentTree($p, $opts{verbose});
if (!$tree || !$tree->validate())
{
print " Failed\n";
}
else{
# print $tree;
$tree->render("CAM::PDF::Renderer::Dump");
# $tree->render("CAM::PDF::Renderer::Text");
}
if ($opts{geom})
{
$tree->computeGS();
}
}
else
{
my $str = $doc->getPageContent($p, $opts{verbose});
if (defined $str)
{
# CAM::PDF->asciify(\$str);
print FILE $str;
}
my $pagetree = $doc->getPageContentTree($p);
if (!$pagetree)
{
next;
}
$str=render($pagetree);
if (defined $str)
{
$str=~s/\. \./\.\./g;
$str=~s/^[ ]+$//mg;
$str=~s/\n+/\n/g;
$str=~s/\n.+\n//; #remove the first two lines
$str=~s/\n.\n//;
$str=~s/([a-zA-Z])\n/$1/mg;
$str=~s/\.+([0-9]+)/\($1\)/g;
$str=~s/^(I|II|III|IV|V|VI|VII|VIII|IX|x)([a-z]?)\./ $1$2\./mg;
$str=~s/^([A-Z])\./ $1\./mg;
$str=~s/^([0-9]+)\./ $1\./mg;
# $str=~s/\.+//g;
print FILE2 $str;
}
}
}
close FILE;
close FILE2;
sub _TJ
{
my $str = shift;
my $args_ref = shift;
if (@{$args_ref} != 1 || $args_ref->[0]->{type} ne 'array')
{
die 'Bad TJ';
}
$str =~ s/ (\S) \z /$1 /xms;
foreach my $node (@{$args_ref->[0]->{value}})
{
if ($node->{type} eq 'string' || $node->{type} eq 'hexstring')
{
$str .= $node->{value};
}
elsif ($node->{type} eq 'number')
{
# Heuristic:
# "offset of more than a quarter unit forward"
# means significant positive spacing
if ($node->{value} < -250)
{
$str =~ s/ (\S) \z /$1 /xms;
}
}
}
return $str;
}
sub _Tj
{
my $str = shift;
my $args_ref = shift;
if (@{$args_ref} < 1 ||
($args_ref->[-1]->{type} ne 'string' && $args_ref->[-1]->{type} ne 'hexstring'))
{
die 'Bad Tj';
}
$str =~ s/ (\S) \z /$1 /xms;
return $str . $args_ref->[-1]->{value};
}
sub _Tquote
{
my $str = shift;
my $args_ref = shift;
if (@{$args_ref} < 1 ||
($args_ref->[-1]->{type} ne 'string' && $args_ref->[-1]->{type} ne 'hexstring'))
{
die 'Bad Tquote';
}
$str =~ s/ [ ]* \z /\n/xms;
return $str . $args_ref->[-1]->{value};
}
sub _Td
{
my $str = shift;
my $args_ref = shift;
if (@{$args_ref} != 2 ||
$args_ref->[0]->{type} ne 'number' ||
$args_ref->[1]->{type} ne 'number')
{
die 'Bad Td/TD';
}
# Heuristic:
# "move down in Y, and Y motion a large fraction of the X motion"
# means new line
if ($args_ref->[1]->{value} < 0
# &&
# 2 * (abs $args_ref->[1]->{value}) > abs $args_ref->[0]->{value}
)
{
$str =~ s/ [ ]* \z /\n/xms;
}
return $str;
}
sub _Tm
{
my $str = shift;
my $args_ref = shift;
if (@{$args_ref} != 6 ||
$args_ref->[5]->{type} ne 'number' ||
$args_ref->[4]->{type} ne 'number')
{
die 'Bad Td/TD';
}
if ($lasty!=$args_ref->[5]->{value}){
$str=$str."\n";
}
$lastx=$args_ref->[4]->{value};
$lasty=$args_ref->[5]->{value};
# Heuristic:
# "move down in Y, and Y motion a large fraction of the X motion"
# means new line
# if ($args_ref->[1]->{value} < 0 &&
# 2 * (abs $args_ref->[1]->{value}) > abs $args_ref->[0]->{value})
# {
# $str =~ s/ [ ]* \z /\n/xms;
# }
# return $str."(".$args_ref->[4]->{value}."/".$args_ref->[5]->{value}.")";
return $str;
}
sub _Tstar
{
my $str = shift;
$str =~ s/ [ ]* \z /\n/xms;
return $str;
}
sub render
{
# my $pkg = shift;
my $pagetree = shift;
my $verbose = shift;
my $str = q{};
my @stack = ([@{$pagetree->{blocks}}]);
my $in_textblock = 0;
## The stack is a list of blocks. We do depth-first on blocks, but
## we must be sure to traverse the children of the blocks in their
## original order.
while (@stack > 0)
{
# keep grabbing the same node until it's empty
my $node = $stack[-1];
if (ref $node)
{
if (@{$node} > 0) # Still has children?
{
my $block = shift @{$node}; # grab the next child
if ($block->{type} eq 'block')
{
if ($block->{name} eq 'BT')
{
# Insert a flag on the stack to say when we leave the BT block
push @stack, 'BT';
$in_textblock = 1;
}
push @stack, [@{$block->{value}}]; # descend
}
elsif ($in_textblock)
{
if ($block->{type} ne 'op')
{
die 'misconception';
}
my @args = @{$block->{args}};
$str = $block->{name} eq 'TJ' ? _TJ( $str, \@args )
: $block->{name} eq 'Tj' ? _Tj( $str, \@args )
: $block->{name} eq q{\'} ? _Tquote( $str, \@args )
: $block->{name} eq q{\"} ? _Tquote( $str, \@args )
: $block->{name} eq 'Td' ? _Td( $str, \@args )
: $block->{name} eq 'TD' ? _Td( $str, \@args )
: $block->{name} eq 'Tm' ? _Tm( $str, \@args )
: $block->{name} eq 'T*' ? _Tstar( $str )
: $str;
}
}
else
{
# Node is now empty, clear it from the stack
pop @stack;
}
}
else
{
# This is the 'BT' flag we pushed on the stack above
pop @stack;
$in_textblock = 0;
# Add a line break to divide the text
$str =~ s/ [ ]* \z /\n/xms;
}
}
return $str;
}
2009年6月25日 星期四
Can a regular expression span over multiple lines?
Answer:
No. You have to do tricks like replacing all \n with a certain string (e.g. __NEWLINE__), then use this certain string in your regex and finally replace all __NEWLINE__ with \n again.
世界知名概率学家钟开莱逝世享年92岁
http://www.sciencenet.cn/htmlnews/2009/6/220403.shtm
据斯坦福大学官方网站消息,世界知名概率学家、华裔数学家、斯坦福大学数学系前系主任钟开莱先生,于6月2日在菲律宾辞世,享年92岁。
钟开莱(Kai Lai Chung)1917年生于上海,浙江杭州人。1936年入清华大学物理系,1940年毕业于西南联合大学数学系,之后留校任数学系助教。钟开莱师从华罗庚,也是中国概率论与数理统计研究的开拓者之一的许宝騄的学生。1944年考取第六届庚子赔款公费留美奖学金。1945年底赴美国留学,1947年获普林斯顿大学博士学位。上世纪五十年代任教于美国纽约州塞纳克斯大学(Syracuse),六十年代以后任斯坦福大学数学系教授、系主任、荣休教授。钟开莱先生著有十余部专著,为世界公认的二十世纪后半叶“概率学界学术教父”。
WanZheng: 钟开莱教授逸传(zz)
发信人: th2168 (th2168), 信区: DMS.THU
标 题: 钟开莱教授逸传(zz)
发信站: 水木社区 (Wed Jun 17 12:20:00 2009), 站内
这个暑假在普林斯顿为Erhan Cinlar教授做研究。他是世界一流的概率学家,尤其在马尔可夫链和泊松过程这两个专题上建树颇多。他在普林斯顿联合创建了世界上唯一的运筹和金融工程系,得以使普林斯顿大学在这一领域的教育和研究走在世界前列。他曾是我概率课的教授,因为这个关系得以央求他收我做暑假研究。当初面试我时,他在最后问了一句,“对了,你有没有听说过Kai Lai Chung?”他就在一张白纸上写下这几个英语字母。我说,没听说过。他愣了一愣,“奇怪了,他告诉我他在中国还是挺有名的啊。”
到了6月2日我们正式开始做课题,第一天见面,Cinlar教授问我的第一句话,“你真没听说过Kai Lai Chung?”我又摇了摇头。他说,“唉,Chung昨天过世了。我和他认识四十多年了。”Cinlar教授并没有显得特别悲伤,只是沉默了几秒,就开始布置课题的相关任务。
接连两次提到这个人名,我对这个Kai Lai Chung产生了好奇,去google搜索了一下。只怪两个拼音系统产生的混淆,这Kai Lai Chung就是国际著名的概率学家钟开莱先生。今天又见Cinlar教授的时候,我便说,的确知道钟开莱这个人,我和他都是上海人嘛。他一下子来了兴趣,指了指桌上的两大格文件夹,“喏,这都是我四十几年和钟开莱的通信。” 他随便翻阅了几封,都是手写的白纸黑字,有的是聊家常,有的是讨论共同的朋友,有的是研究学术问题。早年的信件,钟开莱教授的英文手写潦草而优美,用细密的圆珠笔和钢笔书写。后来的信件上的字体,渐渐地粗了,大了,用记号笔书写,一笔一画像小孩子在练字,甚至有两行写到后面交叉在一起,模糊不可认。Cinlar说,那是因为钟开莱晚年受眼疾困扰,最后两年几近失明。 他指了指一封信,他说,“你看这里,开莱不写of me,一定要写of moi,还有,还有这里,不写my,一定要写mon。他平时说话的时候也是这样,一副法国人派头。”他顿了顿,说,“真是个人物啊!”就从这说开去,Cinlar教授讲了许多关于钟开莱的逸闻。
关于钟开莱的生平、学生时代和华罗庚、吴有训等学术巨擎抬杠,这些在百度百科里都有记载。我这里就记录一下Cinlar教授亲身经历的或者听钟开莱亲口所说的一些往事。
1945年,钟开莱获得庚子赔款公费留美奖学金到普林斯顿大学攻读博士学位。到普林斯顿第一天,他就说,“今天是我到美利坚的第一天,我一定要到镇上最好的餐馆大吃一顿!”就这样,他从火车站拖着行李一路走到普林斯顿最好的法式餐馆Lahiere’s. 他那么多大包小包,风尘仆仆蓬头垢面,好说歹说才被男侍放进餐馆。到了餐馆,也是天有神助,在那个没有网络没有电视信息闭塞的年代,他竟然一眼就认出了其中一个食客就是Harald Cramér。Harald Cramér当时是概率和统计学界的世界第一人,是斯德哥尔摩大学派到普林斯顿的访问学者,也才来普林斯顿没几天。钟开莱就跑到Cramér面前,一本正经地介绍自己,共同吃了一顿饭,饭毕之后Cramér就成了钟开莱的博士生导师。Cramér只在普林斯顿呆了两年,两年之后,钟开莱拿到了博士学位,而Cramér则回到斯德哥尔摩大学当了校长。
钟开莱成名之后和Cinlar参加了许多国际学术会议。有一次在德国柏林的会议,中间休息一次,学者们喝咖啡联络感情。会议的主席是一个新近崭露头角的年轻人,走到钟开莱面前想和他套近乎。那年轻人还没开头,钟开莱就劈头盖脸的骂开了,“主席啊,刚才发言的那个俄罗斯人,讲两句话就要表扬自己,一表扬自己就要大家祝酒,发言一小时祝了十一次酒。我们不能说他,你就不能提醒提醒他吗,真是不开窍。”年轻人彻底懵了。钟开莱不再说话,低头吃蛋糕喝咖啡。过了一会,看到年轻人还没走,突然说,“算了算了,姑且念在蛋糕的份上。啧啧,这德国人真是会做蛋糕啊。”
钟开莱和Cinlar共同创办了一系列讨论概率论难题的讲习班,定期在不同的大学举行讲习班,还编辑了许多学术刊物。有一期讲习班在钟开莱任教的斯坦福大学,时间定在一个周二的下午。Cinlar就和钟开莱说,“周二下午斯坦福还有一个统计学大会,很多统计学家肯定两个会议都想来。你不如换个时间吧。”钟开莱击掌笑着说,“我就是特意安排在这个时间的!这样所有的统计学家就来不了我的讲习班啦。我最讨厌统计学家了。”
刚入清华大学时,钟开莱是物理系学生。因为吊儿郎当逃课得罪了吴有训教授,只能转到数学系。到数学系又觉得华罗庚太罗嗦,到普林斯顿之后专攻数学中研究最少的概率论。概率和统计不分家,要做概率上的学问一定要有扎实的统计功底,而钟开莱偏偏又公然宣布自己“最讨厌统计学家。”他把自己能生展拳脚的范围缩得很小,就是在这样一个鲜有人探索的领域,他打出了一片天地,成了美国概率论界第一人。近年来,概率论因为在金融经济领域的应用,迅速成为学术热门。而今在美国研究概率的教授和学子,要么是钟开莱的学生,要么是学生的学生。他的概率论著作被专业学术论文引用次数最多,据美国数学学会评价,“Chung's writing is literate, elegant, wise, humane. He takes the reader into his confidence, explaining ideas, motivation, and circumstances.”如果钟开莱一生研究物理,研究基础数学,也许也要成为美国物理和基础数学的第一人,而他只是因为“讨厌那些人”而轻易放弃了。
在Cinlar回忆的往事中,不时蹦出一些我从来没听说过的人名。每每我现出疑惑的神情,教授就解释说,“喏,这是当时最聪明的拓扑学家。”“喏,这是当时普林斯顿高等研究院的院长。”这样的次数多了,他突然笑嘻嘻地说,“诞琦,你一定奇怪我怎么认识那么多名人?实话告诉你,我的朋友全是学术名人。至于开莱啊,他结交的名人就更多了,不但有学术上的,还有政治上和商业上的。他的妻子是菲律宾一个很显赫家族的千金小姐,他的儿子现在在华尔街的一家公司做CEO。至于公司的名字嘛,嘿嘿,我以后再告诉你吧。”
然后,Cinlar教授望着书架上的几册书,我知道了,在他的视线中,已经不再有我,也不再有那些书,满满地全是属于老人的回忆。Cinlar说,“我第一次遇到开莱,我就知道我们要成为终身的好朋友。真是个人物啊!你知道什么叫人物吗?就是,我有许多话要说,又不敢说,他全部替我说出来了。”
Cinlar教授的概率论课是我在普林斯顿上过的最难、最幽默,也是收获最大的课程。他总是穿着一身黑色小礼服,白色衬衫黑色领结,在黑板上用优美的花体字写板书。一开始,习惯了Powerpoint板书的同学都怨声载道,抱怨看不懂花体字。不久,大家就被这矮小的土耳其老人的幽默所打动了,他的演讲与教科书无关,听了演讲再去看书,多花心思想想,常有豁然开朗之感。
暑假课题开始后,每两天就去见Cinlar一次,每次,不但是布置新任务,还会告诉我好多有关的趣事。他说,“有一个很傻的广告里,一个女人担心地说,她今天抽了五枝烟,这样下去要得癌了。诞琦,一天抽五支香烟要抽80年才刚刚有风险可能得癌啊!我年轻时,那才叫抽烟,一天抽三包,现在不也是好好的?”还有一次,他告诉我为什么蘑菇收藏家是世界上最危险的爱好。他说,收藏蘑菇到一定境界 ,必定要自己到森林里采集中意的蘑菇,这世界上菌菇品种那么多,长得差不多,弄得不好就要出人命了。他又说,有一次,他看一本叫作《菌菇收藏》的书,书里面写到一种蘑菇,有剧毒,书的作者偏要以身试法,去尝了尝,尝完之后写道“大家都说这种蘑菇有剧毒。我发现我吃了这种蘑菇之后的反应和吃了其他蘑菇的反应别无二致,我只是全身发了两天红疹。”Cinlar教授说到这里,兴高采烈地拍着桌子,“诞琦啊,就是这么一个对所有菌菇都过敏的人,竟然写了一本《菌菇收藏》!这样的人竟然也有!”
Cinlar教授说,钟开莱也是这样一个对什么都过分好奇的人,也是一个常常摆出法国绅士风度西装笔挺的学者。前些日子,我听了陶哲轩的演讲,觉得陶哲轩是个不折不扣的天才。今天我听了Cinlar讲关于钟开莱的逸闻,觉得像钟开莱那样对什么都过分好奇的人是另一种类型的天才。他永远不会厌倦自己的学识,厌倦这个世界,听到见到什么,都啧啧地说,“ 啊,啊,太有趣了!”他又是一个颇有些唐吉珂德式的骑士幻想的绅士。然而,绅士的时代已经过去了。互相交换手写书信四十余年的时代已经过去了。许多普林斯顿的教授不再穿正装去演讲堂,我所知道天天穿西装上班的教授只有三个,概率学家Cinlar,数学家Robert Gunning,和前外交部官员Thomas Christenson教授。万物都会死,不但生物会死,礼仪和习俗也会死。那么,那个彬彬有礼的时代已经死了。对此,Cinlar教授说,“大家都会死的嘛。死不就是一个随机分布吗?”
2009年5月31日,在钟开莱教授的妻子在菲律宾的故乡罗哈斯市(Roxas)的别墅里,钟开莱进入了梦乡。2009年6月1日,钟开莱教授没有醒来。他死在一片芳香的椰子树与海风的梦境里,终年92岁。对此,Cinlar教授评论道,“你知道世界上最幸运的事是什么吗?就是在睡梦里死去。我这个老朋友,真是世界上最幸运的人。”这或许真的是世界上最幸运的一生,出生在战火纷乱的年代,死于一片良辰美景,在中国历史上学术最自由的清华大学和西南联大受教育,一辈子无论学什么都是师从这个领域的巨人。在自己研究的领域,他是美国第一人,桃李天下,被称为“概率学界教父”。他家庭幸福富有,子孙事业有为。
然而,倘若钟开莱当真无愧于是“概率学界教父”,是现今所有概率学家的恩师,那么,钟教授在中国的名声,应该和陈省身齐名。事实上,在中国,钟开莱的名声远不如陈。究其原因,他常年在海外定居、与菲律宾豪门联姻,固然影响了他在中国的知名度。然而,如陶哲轩之类在澳大利亚出生的华裔,成名后都能在中国妇孺皆知,可见钟开莱的不知名,有更深层的原因。这原因,借用Cinlar教授的话,“你知道什么叫人物吗?就是,我有许多话要说,又不敢说,他全部替我说出来了。 ”陈省身和钟开莱的区别,就是敢不敢把话全部说出来的区别,或者,更浅显一点,就是郭靖和黄老邪的区别。一个是中规中矩面面俱到的,一个是“我黄药师是何等样人。”钟开莱那一句“我最讨厌统计学家了”,就不知得罪了多少人,少了多少人在他的故乡为他说话。
不过,钟开莱,这个有着晋人傲骨的、愤世嫉俗的绅士,是不会对此介意的,他连华罗庚都敢得罪,怎么还会在乎死后的名声呢?而我在这里所做的,只是怕那似水流年的时光会把所有的人所有的事都绿坝成一个中规中矩的面面俱到的影子。让我在这里,为一个离经叛道者,立一块丰碑。
--
YOU'LL NEVER WALK ALONE
※ 来源:・水木社区 http://newsmth.net・[FROM: 59.66.185.*]
偶感
--------------------------------------------------------------------------------
作者:钟开莱
救国自是大好事,然而我听见人说到这两个字的时候,十次里倒有九次不免“毛指”。
有爱国牌毛巾,有九一八真藕粉,有新生活化学洗染店,尤有新生活运动之必需纯粹国货黑呢帽大批已到之广告。记得还有人曾论证“永安虎标万金油”与救国之关系,使人看了真要替《论语》欣幸得了这许多资料。
前胡蝶女士等来杭表演话剧《笑与泪》及《还我河山》,有人问我看了作何感想,我说:“胡蝶是好的,别的也不错,只是他们后来似乎不必皆救国。”原来这两个剧本的partand parcel都是三角恋爱,到后来却不知怎的一来,你也救国他也救国了。于是此剧本乃一变而为“民族主义的”的了。
别人余不知,我之去看胡蝶,目的却是看胡蝶,而谁都知道胡蝶之值得看并非因她救国。
上文说了“别人余不知”,恐怕有点不老实,实说呢,我就不相信世上真有人买呢帽为行新生活,吃藕粉为纪念九一 八!虽然买呢帽的学生很可以在交到训导处去的生活日记上记上一条“今日购国货呢帽一顶,为实行新生活之表示”,或在写给他父亲要钱的信上说“男因实行新生活,已购新生活国货呢帽一顶,价洋三元二角……”云云,之类。
尝论中国人最为虚伪,试一读所谓笔记小说之类,淫词艳句,摭拾皆是。篇中每每记载一男女淫奔或人鬼阴合之事,其中描写尽可极尽诲淫之能事,而最后则必加上一段天道昭彰,果报不爽,于是男女皆不得善果而终。这样一来,观者即以作者在“戒淫”,而作者亦自己说服了自己在“戒淫”了,于是明明一部大淫书,遂一变而为劝善文!近日所谓救国,亦复类是,谈恋爱恐为人骂,则假救国之名而行,一本书三百页中二百九十页尽可卿卿我我我我卿卿,只要最后十页中来一下什么东北义勇军或西北垦殖队,就算爱国小说了。作者明知自己在写恋爱,读者亦明知自己在看恋爱,而彼此心照不宣,大家救国,呜呼,此国之所以不得不救乎?
原载《人间世》1934年6月第5期
2009年6月15日 星期一
如何转PDF文件为text文件?
其实CAM::PDF已经相当不错用了,对比其它ruby/python写的模组,结果已经很不错
http://search.cpan.org/~cdolan/CAM-PDF/bin/getpdftext.pl
getpdftext.pl 就是利用CAM::PDF对pdf文件进行处理
对比getPageContentTree的内容,可以用常规表示法得到相当正确的结果
2009年6月2日 星期二
AS400下编程的文件
1、文件类型
这里所说的文件主要是指物理文件、逻辑文件、显示文件和打印文件。物理文件和逻辑文件主要是存储数据的文件;显示文件主要是用于画面显示格式和属性的;打印文件主要是控制打印文件的布局和显示格式的。这些文件都是在RPG程序中的 F表中进行声明的,供程序中数据处理和存储使用。利用通过RPG程序从多个物理文件中取得相应的数据项显示到画面上,也可以通过RPG程序将用户在画面上输入的数据存储到物理文件中。物理文件中的数据是实际客观存在的,而显示文件和打印文件中的数据只是在程序运行时才有存在,程序退出后其中的数据也相应的消失。
2、文件使用
RPG程序中对所用的文件进行声明以后,这些文件中的字段名称都可以作为已知变量使用。比如当对一个文件进行读操作后,该字段名称中的值即为文件当前读到记录的相应的字段的值,在RPG程序中就可以通过引用该字段名称来获得当前记录的相应字段的值。如果要想文件中写入数据,只需要在RPG程序中,将想要写入的数值传送到相应的字段名称中,然后执行文件的写操作,就可以生成一条新的纪录。更新文件也是一样,不同的就是执行文件的更新操作。显示文件和打印文件的使用也类似,都是将想要的数值传入相应文件的相应字段中,然后执行相应的操作即可。
主要的几种说明表(H, F, I, E, C)
RPG语言中对作用不同的部分分别用开头一列字母来划分,也可以称为XX表或XX部。
RPG语言中包括H表、 F表、 E表、 I表、 C表、 L表、 O表。
但是现在经常用到的主要是H表、 F表、 E表、 I表、 C表。
H表(控制说明标):提供你的程序和系统的信息,其中可说明程序的名字、程序所用日期的格式和是否应用交替核对排序和文件翻译。(可选)
F表(文件说明表):描述程序应用的所有文件信息,包括文件名、如何应用文件、文件记录的大小、文件应用的输入输出设备、文件是否被外部指示器控制等。
E表(扩展说明表):描述所有在程序中应用的记录地址文件、表文件和矩阵文件的信息;包括记录地文件、矩阵或表的名字,表或矩阵数据记录的入口数目,表或矩阵的入口数目及长度。
I表(输入说明表):可以定义数据结构,说明输入文件的记录和字段的一些信息。
C表(计算说明表): 描述在数据上作的计算和计算次序,也可以用于控制某些输入输出操作;其信息包括对操作说明控制级和条件指示器,程序中应用的字段和常数,被处理的操作以及处理之后是否设置结果指示器等,这也是我们编码主要处理的部分,这里实现了程序的处理功能。
写给刚接触RPG的朋友 --- 如何编写RPG程序(1)
先说说RPG一般用来做什么吧,举例说:
1. 整个RPG程序不包含任何外部程序,只是做些简单的数学运算,或者对数据区、DATAQ等非文件目标进行操作,这属于相对最简单的情况;
2. RPG程序对物理文件或者逻辑文件进行读、写、更新、删除操作;
3. RPG程序结合物理文件或逻辑文件、以及显示文件进行操作,这属于比较复杂的情况;
4. RPG程序结合物理文件或逻辑文件、显示文件、以及ICF文件(即通讯文件)进行操作,这种情况也比较复杂。
当然,以上的情况只是平时使用的归纳,你也可以根据自己的实际需要结合各种情况,此处不再深入探讨。
以下结合例子简单说说各种情况,假设以下源码文件存放的路径是 库MYLIB、源物理文件MYSRCPF
1. (1)代码如下:
.....CL0N01N02N03Factor1+++OpcdeFactor2+++ResultLenDHHiLoEqComments++++
*************** Beginning of data *************************************
C 'HELLO, W'DSPLY
.....CL0N01N02N03Factor1+++OpcdeFactor2+++ResultLenDHHiLoEqComments++++
C SETON LR
****************** End of data ****************************************
【注】
DSPLY表示显示变量值;
SETON表示给指示器置为*ON的状态,即'1',“SETON LR”表示把LR指示器置为*ON,该句的意思表示最后一条记录,即程序结束。
在按F6创建成员时,source type一栏我们写RPG
然后按回车,进入编辑界面
按5下空格,输入C、然后按F4,在屏幕下方出现一个输入界面。
在这里边我们就很容易找到每个代码所对应的位置。
其中factory1和2里边是我们所操作的变量,他俩中间是用来操作变量的命令。
在往后的result里边是操作后的结果,然后的len是长度,然后的d是小数位数。
需要注意的是,一般来收,数字在输入的时候是要求右对齐的,字符左对齐。
输入完按回车,把光标移到0001.00处输入I按回车即可进入下一行。
还有一点,最后那一行的LR是对应EQ的,编辑完后按F3,在出现的界面中输入Y保存。
按F3保存,假设该文件名是MYRPG,所在的库是MYLIB,源物理文件是MYSRCPF。
编译调用前,要编辑库列表
输入EDTLIBL,按回车,在LIBRARY对应的位置上输入你的库名
在使用某个对象的时候要保证其存在,同时其所在的库也要在系统的库列表上能够找到。系统搜索所要用的对象时是按照系统的库列表的顺序从上向下进行查找的,例如:库列表为下所示
10 QLIB1
20 QLIB2
30 QLIB3
……
如果在QLIB1和QLIB2两个库中都有叫做OBJECT1的对象,那么当程序用到OBJECT1的时候,实际使用的将是位于列表前面的QLIB1中的 OBJECT1,而不是QLIB2中的,因此我们在编译和运行程序的时候一定要注意库列表的值,免得使用不合适的对象而造成程序运行不正确。
程序写好之后,应该进行编译了。用WRKMBRPDM FILE(MYLIB/MYSRCPF),找到刚才的文件MYRPG,输入14,按F4,进入“Create RPG/400 Program (CRTRPGPGM)” 画面,参数:
(i) Program: 生成的目标名(假如为MYOBJ);
(ii) Library: 生成的目标存放的库(假如为MYLIB)。
参数填好之后,按确认键即进行编译,如果程序没错,则生成目标文件,假设为MYOBJ。
在命令行输入CALL MYLIB/MYOBJ,这时命令上应该显示'HELLO, W'。
(【注】目标即可执行文件)
写给刚接触as400的朋友的补充
关于as400的一些讲解:
As400的库类似于windows上的文件夹,但他与windows有些区别。
主要的层次关系是:库-〉对象-〉成员
其最上一层是一个叫做QSYS的库,这也是唯一一个特殊的库,因为它的下面仍然可以包含其他的库,而除此之外的库下都不能再有库。也就是说,库只有一个层次,不象windows下面的文件夹是可以多层存在的。
紧跟着库下来的一层是对象。一般来说,对象是一个可以实际应用和运行的。例如:编译后的数据文件,打印文件和程序。当然,对象也不仅仅包括这些,还有其他属性的对象,最常见的就是QPRGSRC\QDDSSRC\QDSPSRC,这些名字都是预定俗成的名字,当然也可以改成其他的名字。
这几个对象是作为物理源文件属性的。
对象的下面一层叫做成员。最常见的成员类型包括 PF LF DSPF RPG PRTF。这些类型的成员是我们在实际编程中经常打交道的,因为我们所作的编码工作就是针对这几个类型的成员进行的。成员编译后形成相应的对象。如 PF\LF --->可以存储数据的物理文件和相应的逻辑文件;RPG --->可执行的程序,等等。编译系统根据文件不同的类型编译后会形成不同的对象类型。
AS400下RPG编程的常用命令
EDTLIBL 编辑系统的库列表
STRPDM 启动管理工具(对库,对象,成员进行管理操作的工作)
STRSDA 启动SDA(画面和菜单的可视化操作工具)
WRKLIBPDM (LIBNAME) 直接对库操作
WRKMBRPDM (LIB/OBJ MBR) 直接队成员进行操作
STRISDB 单步调试命令
STRDBG DEBUG命令
ENDDBG ENDDBG 命令
RUNQRY FILENAME数据文件查询命令,查看里面的数据
UPDDTA FILENAME 数据库文件更新命令,可以对数据文件中的数据进行更新操作
CLRPFM FILENAME 删除数据文件中的全部数据
CALL PGMNAME (‘’PARM1 ‘PARM2’ ……..) 调用程序的命令
tn5250 is a telnet client for the IBM iSeries and AS/400
1. 写给刚接触AS/400的朋友 --- 如何建立库、文件和成员
鉴于很多朋友都还是刚接触AS/400,我就从系统登陆开始简单说说吧!
打开AS/400仿真终端(可以是PCOM、CA等软件,如何配置就不说了),输入用户名和密码,进入系统。
如果你的权限足够的话,可以使用CRTLIB命令给自己建个库,如:
CRTLIB LIB(MYLIB) TYPE(*TEST) TEXT('for test')
库建好之后,你可以使用STRPDM->2,在Library处输入库名MYLIB,按确认键就进入该库。
这时库下面没任何文件,你可以使用CRTSRCPF命令建立一个源物理文件,用来放置源码,如:
CRTSRCPF FILE(MYLIB/MYSRCPF) IGCDTA(*YES) TEXT('源物理文件')
【注:】参数IGCDTA(*YES)表示该源物理文件里头的源码文件都可以使用中文
到此为止,自己存放源码的地方已经生成,你可以直接使用以下命令直接进入该源物理文件:
WRKMBRPDM FILE(MYLIB/MYSRCPF)
进入该文件之后,就可以建立任何源码文件了,按F6,显示“Start Source Entry Utility (STRSEU)”画面,参数说明如下:
1. Source member:表示建立的成员名,我们把它理解成存放源码的文件就可以,类似WINDOW平台的TXT文件;
2. Source type:表示建立的成员名的类型,如果不确定,可按 F4 查看,常用类型有
(1)PF: 物理文件;
(2)LF: 逻辑文件;
(3)RPG: RPG程序源码文件;
(4)RPGLE: RPGLE程序源码文件;
(5)DSPF: 显示文件;
(6)CLP: CLP程序源码文件;
(7)CMD: 命令文件
……
3. Text 'description':表示对该文件的描述,可填可不填。
上面的参数填好之后,即进入源码编辑环境,可以写代码了。
代码写完之后:
1. 如果要保存并且退出编辑器,按F3,出现“Exit”画面,参数Change/create member置为Y即可。
2. 如果只想保存而不想退出的话,在编辑器的顶端的命令行输入SAVE,按确认键即可。
3. 如果要放弃更改,那么在编辑器的顶端的命令行输入CAN,按确认键即可。
2009年5月30日 星期六
共享的as/400
2009年5月22日 星期五
國語羅馬字
2009年5月21日 星期四
物理经济学前沿综述
日期:2005-06-02
来源: 经济学动态
物理经济学(Econophysics),顾名思义,是一门运用物理学(尤其是统计物理学)的思想、概念、模型、计算方法来定量研究经济问题的学科。事实上,从M.F.M.Osborne(1977)在他的著作中首次提出物理经济学这个概念,到1997年7月L.Kondor和J.Kertesz在布达佩斯建立第一所物理经济研究所,再到2003年11月在波兰华沙召开的世界物理经济学研究大会,短短几十年时间里该学科得到了迅速的发展,特别是近几年物理学的许多重要理论成果(如湍流、标度理论、随机矩阵定理、重正群等)得以运用到经济研究中来,它所涵盖的研究内容已涉及国民财富和收入分布、金融市场的波动特性、组织与网络增长、人口经济与环境协调增长等多个领域,形成了丰硕的理论成果。
一、经济学与物理学科的历史渊源
在经济学的发展史上,早期一些经济学家如Walras、Fisher、Pareto等就曾经试图将物理学的形式体系运用到经济学中来,他们用经济个体代替物质点,用“效用”代替物质的能量,然后运用物理抽象的方法来研究经济系统的演进过程,最终得到了类似物理的所谓“均衡”的概念。 L.Bachelier根据经济数据提出Brown运动的概念,比Einstein和Smoluchowski的开创性工作早了5年,进而Osbome和 Samuelson依此发展出运用随机方程来描述价格变化过程的动态方法,成为经典资产定价理论的基石。例如,Black—Scholes期权定价公式实际上就是热力学方程在特殊边界条件下的一个特殊解。然而,由于Gauss系的良好数学性质(如有限矩、过程不相关、微分方程具有解析解等),一些具有良好数学功底的经济学家在随机变量服从Gauss—Brown过程的假设下逐步建立起了一套完备的经济理论体系,也就是所谓的新古典经济学。
20世纪60年代,Mandelbrot在研究棉花商品的价格时,发现了价格过程在不同的时间标度下体现出自相似(self—similarity) 的性质,并可用幂指数规律(power—law)进行描述。而在物理学领域,人们已经发现了许多服从幂律的所谓“临界点”现象(critical phenomena,如水文特征、地形变化等)。于是Mandelbrot根据他的发现,在70年代提出了“分形”(Fractal)理论。这在物理学界造成了相当大的影响,大量的研究工作表明,自相似现象在自然界中是普遍存在的,甚至有学者提出分形性质是自然界的普适规律(universal law)之一。在经济学领域,人们也观察到一些金融资产的价格具有大幅波动以及时间相关的现象,这是不符合Gauss假设的。然而由于缺乏理想的数学工具来研究这种具有发散矩的随机过程,学者们只是把上述现象笼统地称为“异象”(anomalies)。
90年代以来,计算机技术的迅猛发展,也给经济学领域带来了深刻的变革。一方面,不断提高的运算速度使得市场的交易效率成倍提高,电子撮合、远程交易等广泛普及,资产价格的变化更加频繁,新的金融衍生工具也不断产生,极大地增加了经济中的不确定性;另一方面,数据处理能力的提高使得建立大型的数据库成为可能,人们甚至能够获取每笔交易的历史高频数据。这就为人们从实证角度研究经济问题提供了理想的分析工具和研究对象。正因为此,许多物理学家也把目光投向了经济领域,他们纷纷运用业已发展成熟的物理理论方法(如混沌、量子理论、自组织临界性、元胞自动机等),通过对大量经济数据的统计研究,寻求经济发展的真实规律。
二、物理经济学的方法论
经济学的研究方法是“现象逻辑”的方法,经济学家的研究往往先运用经济系统中的重要特征信息(如收入、价格)指标去描述经济过程,然后通过归纳的方法得到经验规律。为了保持经济理论的完备性与科学性,经济学家又着手建立模型,在对经济系统做出种种假设的前提下,运用数学工具进行演绎推理,得到经济规律的数学表达式。他们认为,这种既有归纳又有演绎的方法体系是符合科学逻辑的,因此他们所导出经济规律是客观规律的真实表达。然而,这种方法论是有问题的。首先,重要特征信息的抽取具有很大的主观任意性;其次,许多关键要素是难以量化的(例如,研究就业与失业关系问题时,文化传统、历史背景以及相关法令制度等都是难以量化表征);再次,即使数学推理过程是准确无误的,但经济模型的前提假设却往往不是客观事实的合理简化,这就导致模型的数学解并不具有准确的经济含义(Gauss系下的资产定价模型就是很好的例证)。
此外,当经济系统具有非线性相关关系时候,对数学方程形式一个很小的设定误差就可能造成原系统重要信息的缺失或者形成虚假信息。
物理学的过程是一个归纳演绎的过程,首先从观察到的客观现象出发,通过提取数据、统计分析、物理抽象、数学建模等一系列过程归纳出反映物质作用的规律,并运用物理实验进行检验。一旦规律的客观性得到证实,再运用演绎的方法对具体物质的性质做出判断。物理经济学遵从的也是这样一种现象逻辑导向的归纳演绎方法。例如,根据统计物理学,重要的物理指标(如温度、距离)存在一些临界点,在这些临界点附近的某一区域内(称为吸引域)某一共同规律支配着物质系统的作用性质,这就是所谓的普适规律。对应不同的普适规律,可以将系统进行分类,同一类型系统体现出相似的物理特性。
类似地,物理经济学的研究发现,这样的临界现象在经济系统中也广泛存在,它对应于经济变量的自相似特性和无特征标度行为。因此,通过对一种临界现象生成机理和作用机制的研究,就可以发掘出一类系统的共同演进特性。
物理经济学另一个重要方法就是运用物理理论进行类比研究。这种比较推理的方法使得人们将目光拓展到客观的物质世界,从更广泛的视角探寻客观经济规律的根源,从而可以借鉴物理学相对成熟的理论与方法,解决经济领域的问题。例如,系统物理学表明,几乎任何达到106数量级,具有内部复杂结构影响特性的系统都会表现出幂律性质,而经济也是由大量彼此相互影响的经济个体、组织构成的系统,很自然就联想到经济系统也应体现出幂律特性。事实上,物理经济学的大量研究表明,许多经济变量的确存在着这样的分布规律。
三、物理经济学的理论动态
(一)收入、财富分布Pareto在1897年发现,个人财富的统计特征服从标度不变的分布:f(x)—x
-а(其中f(x)表示收入大于等于x的人的数量)。然而,此后许多研究表明,a的估计值不稳定。事实上,存在一个初始水平x0,当x>x0收入分布才表现出这样的性质,故Pareto律实际上是关于富人财富分布的规律,即对应于社会财富分布的右尾部特征。①a往往接近于1,意味着收入的分布具有更厚的尾部,即极富者占的比重更大。理论上,对占社会绝大比重的中低收入阶层的统计应更为稳健。Gibmt研究了中低收人者的统计规律,得到了所谓的 Gibrat分布。在log—log图上,两种分布是有实质差异的,前者属于幂律分布系,后者属于Gauss系。w.Souma(2001)研究了日本的数据,发现整体收入分布是上述两种分布的混合,分别对应于高收入阶层和低收入阶层,但两种分布间的过渡并不是连续的。Dragulescu(2001)、 Yakovenko(2003)分别研究了美国、英国和日本的收入税数据,也找出了幂律分布的尾部,并且幂律指数与股票市场指数体现出强相关关系。 z.Burda (2003)采用描述物理扩散速度的Fokker—Planck方程来刻画社会收入的动态分布,发现Gibrat分布对应于个体初始财富满足最低生活保障边界条件的解,而Pareto尾部则对应着保证偏微分方程稳定解存在的边界条件。特别地,Pareto尾部意味着经济整体的回报为负,即人们总体的财富在减少,社会极富阶层财富的增加是以更多贫困者的愈发贫穷为代价的,这就产生了财富聚集效应(wealth condensing effect)。作者用Bose—Einstein热能方程来解释这一现象,提出经济长期平均财富是财富聚集效应产生的临界点。 S.Solomon&P.Richmond(2001a,2001b)则借用热力学动态复杂性的随机方法,也得到了收入幂律分布的一种合理解释。
与此同时,一些物理经济学家采用最大熵均衡的方法来研究收入分布的性质。D.Foley,Levy等人运用基于微观经济个体的最大熵方法成功导出了 Gibrat分布,J.Mimkes等在研究美英两国的工资收入数据时发现了显著的Boltzmann分布规律,并运用最大熵均衡解释了 Boltnnann分布存在的根源,但是他们的研究并不能解释高收入阶层的幂指数规律。
A.Chatterjee(2003)等则根据气体扩散均衡的原理建立经济均衡模型,发现当个体的储蓄倾向固定时,收入具有Gibbs型分布;而当个体的储蓄倾向是随机的时候,收入分布则具有幂律的尾部。
虽然幂律尾部在收入分布中广泛存在,但由于对幂指数a的估计存在着困难,②使得人们对它作为普适规律的作用范围心存疑虑。Baumol以人均GDP作为收入的表征,认为收入分布在发达工业国是收敛的,而Pritchett则认为,从世界整体来看该分布是发散的。此外,Quah等的研究表明,各国的人均 GDP从60年代的单峰分布逐渐转变为90年代的双峰分布。C.D.Guilmi(2003)等在总结前人成果的基础上,运用PWT的精确数据样本,研究了各国30—85%收入阶层的分布,发现了显著的Pareto分布,并且统计结果在1960—1997年是相当稳健的。此外,幂律指数呈现下降趋势。作者用规模独立的经济增长过程描述这种现象,运用Fokker—Planck扩散方程,发现经济增长率的方差随着样本数目的增大并没有呈现出大数定理预示的衰减规律,这意味着微观经济的间接影响对于经济周期波动具有重要影响。他们的结论支持IMF(2001)的观点,即富国与贫穷国家的经济增长机制有显著差异,世界范围内收入分布幂指数的下降体现了贫富差距的拉大,主要原因是低收入国家产出波动幅度的增加以及金融债务危机的加剧。
(二)市场预期与均衡条件
古典经济学认为,在经济人完全理性下完全竞争的市场存在Walras均衡。经济人完全理性意味着完美同质预期,而完全竞争市场则意味着无长期套利的可能性。这些严格的假设背离实际太远而受到越来越多的批评。物理经济学家也在这种批判的过程中寻求自己方法体系的理论支持。
从Hicks的平稳预期到适应性预期,再到理性预期,都是基于经济人同质预期的假设。行为金融学家Shiller等提出,同质预期的框架下经济中的许多“异象”如非预期价格泡沫、价格的随机涨落等都无法得到解释。因此经济人实际上是不同质的,即对同样的价格会具有不同的预期。对此,传统经济学的捍卫者反驳说,当大量不同预期水平的经济个体构成宏观经济整体时,彼此的差异会因竞争性作用而变得微不足道,长期来看经济总会达到均衡状态。物理经济学家则从系统涌现特性的角度,强调了宏观经济微观基础的重要性。
例如,Dornbusch模型是最为完备的理性预期模型之一,但是将其运用到实际经济中结论却差强人意。从物理经济学的角度分析,这主要是因为该模型缺乏正确的微观基础。和一般的宏观经济模型一样,它旨在描述宏观动态过程,而经济个体只是被抽象假定为构成整体的同质要素。然而,经济个体间的相互佳用是不可忽视的,于是它们构成的宏观整体将会涌现出个体加总所不具有的新特性,因此对宏观经济的研究必须以个体行为和市场微观结构为基础。De Grauwe(1992)等就从经济人异质预期出发,假设个体间反馈、传播等相互作用的存在,将Dombusch模型进行拓展,新的模型则能够较好拟合实际经济的复杂动态过程。
古典经济学借用物理学的概念,将完全竞争经济达到的理想平衡态称为均衡。J.L.McCaulev (2004)类比研究了热力学动态和理论套利策略,充分流动性的市场和可以频繁交换的资产对应热力学系统,热系统均衡则应要求市场无套利机会存在。
但是,热均衡意味着熵达到了最大化,但经济中的回报分布并不能作为经济系统熵的合适表征量,无套利条件并不意味着统计均衡的最大化,这就表明,无套利假设并不是均衡条件。当市场存在流动性风险、商品超额供给(或者供不应求),以及交易频率受到限制时,无套利均衡就更不可能达到了。这与行为金融学派提出的“有限套利”理论颇有相似之处。
(三)公司的成长规律
Axtell(2001)、Gabaix&Lmnnides(2004)等发现,公司的规模也呈幂律分布。在物理经济学的角度看来,作为经济系统重要的构成成分,不同的公司彼此发生产品原材料交换、货物贸易往来等频繁的经济活动,既有竞争又有协作,从而总体上自然会体现出幂指数分布的规律。进而探求其形成机理,物理学认为,幂律分布往往是系统在自组织临界状态才体现出的性质,但将公司的规模分布解释为其增长动态同时出于共同临界参数的控制之下显然是有些牵强。L.A.Nunes Amaral、Okuyama等研究发现,公司一旦达到一定的规模就趋于向多部门发展,而不同部门的增长率不同;公司在竞争环境中生存要具备一定的初始规模,但因行业差异而广泛分布。从这些事实出发,他们将公司增长过程物理化抽象为个体从单一简单结构经过系列组织变革而发展成为复杂结构的倍增 (multiplicative)演进过程,通过系统建模,发现系统的整体规模分布确实呈现出幂律性质,而且模型与实证结果拟合得很好。因此,公司的成长可以由具有复杂内部结构系统的标度不变增长过程来刻画。P.Onnerod(2001)以世界百强工业企业为研究对象,考察它们逐渐衰败倒闭的规律。研究表明,1912年的百强企业每年发生倒闭的频数也服从幂律分布,这可以用上述理论加以解释;此外,每年前百强企业没有倒闭的频数分布却不服从幂律分布,他们分析认为,公司是具有自调适行为的个体,对小的冲击具有抵抗力,只有当事件影响达到一定程度时,才会给公司造成毁灭性打击。因此随着公司自我调节能力的增强,其寿命也越来越长。
(四)金融市场
金融市场是物理经济学涉及最多的领域,因为汇率、股票市场和期货期权等衍生证券市场的频繁交易为研究工作提供了大量的数据作为分析样本。
物理经济学的工作主要集中在三个方面:(1)统计研究,寻求金融时间序列中的普遍性规律;(2)根据实证结果建立更好的资产定价和风险模型,为金融工程提供理论支持;(3)研究经济个体行为和市场结构,揭示金融市场统计规律的微观机理。
借助统计物理学方法和标度、色噪声等概念,物理经济学家发现的主要金融市场统计规律包括:(1)几秒时间标度的相对价格变化具有相关性,几十分钟时间标度以上相关性消失,但是当时间标度达到几天时则序列又体现出弱相关性;(2)相对价格变化的呈非Gauss分布,体现出幂指数分布的规律,流动性市场的幂指数接近于3,新兴市场则具有更厚的尾部,幂指数小于2,波动率趋于无穷;(3)大多数金融时间序列具有波动性聚集的现象,并且波动率相关函数缓慢衰减,体现出多重分形的特性;(4)市场交易量与波动性强相关,相应地交易量序列也体现出长程相关的特征;(5)历史价格变化与将来波动率负相关,即所谓的 “杠杆效应”;(6)在股市大幅波动期间,股票间的相关联动性显著增强,从而使得风险分散化更为困难。此外,E.Peters等人在对不同到期日利率的相关关系进行研究时,也发现了这些时间序列体现出类似弹性绳形变规律的色噪声性质。
Gabai et a1.(2003)观察到,市场价格波动、交易量和交易笔数都呈幂律分布,并且不同国家、不同类型和规模的市场都具有相似的幂律指数,因此必定存在一种内在的生成机制使然。通过假设市场价格的变化趋势主要取决于主力投资者的交易行为,他们建立起市场平均冲击函数描述价格对成交笔数的响应,该函数服从平方根规律;由于大额交易具有幂律分布,③导致价格分布指数为-3的幂律尾部,而交易量幂律指数的估计值约为-1.5,与理论结果的倍数关系相吻合。 J.D.Farmer&L.Fabrizio(2003)则对Gabaix的推理提出了质疑,指出由于指令流存在长程相关特性,导致前述市场冲击函数的统计性质产生偏差,其真实的变化率要比平方根律缓慢,相应对价格和交易量的变化指数估计过大,因此他们认为交易的波动并不是股价变动幂律尾部的根本原因。 M.Daniels et a1.(2003)的研究认为,是指令流和价格生成过程中的随机性,导致了作为响应变量的价格的幂律分布。
物理经济学家J.P.Bouchaud及其工作小组认为,市场价格的波动在时间标度达不到宏观均衡的要求,而市场微观结构又不足以解释跨市场的共同波动特性,因而需要从某个中间层次着手开展对金融市场作用机理的研究。他认为,投资者一方面对价格的未来变化趋势具有不同的判断(即异质预期),另一方面又具有模仿、从众的群体行为模式,大量投资者相互作用构成一个“作用场”,市场整体则体现出正反馈系统的性质。参照场物理学的研究方法,Bouchaud(2002)对投资者的作用方式进行物理抽象,进而假定投资者根据其历史投资绩效而确定最优投资策略,用Langevin方程建模描述系统的演进动态。分析表明,在这样的市场中,价格变化将呈非Gauss的厚尾分布,且波动率和交易量都具有长期自相关性,与实证结果是高度一致的。此外,模型对于风险管理与金融安全也得出了有价值的结论。根据模型解的解析表达式,在良好的市场流动性下,价格在某一区间做均值回复式的波动;在市场流动性很差,或者趋势效应很强时,市场不稳定,价格剧烈波动产生投机泡沫,甚至有可能出现市场崩溃。同时,投资者的风险规避导致他们在价格下跌时恐慌性抛售,进一步加大了市场出现危机的可能性。他们的研究还表明,单个特殊事件的发生往往并不足以导致整个市场的危机,危机的产生是多种效应的历史累积的结构性崩溃, 其前期的金融活动并没有特殊征兆,因此建立实时风险监控体系,同时提高市场流动性,采取措施抑制投资者的恐慌抛售行为,这些都有助于防范金融风险的发生。
传统金融学用协方差来描述不同股票间的协同性变化,然而在非Gauss系下,协方差是非平稳的,对应于股票间的动态相关。z.Burda et a1.(2003)用Levy跳跃描述极值事件导致的价格巨幅变动行为,根据物理信号处理的估计与检测方法,将单只股价视作自由随机变量(FRV),将大量股票的协同运动抽象化为无限随机矩阵,以非互换概率(non—com—mutative probability)为工具,④通过比较随机矩阵的理论特征谱和实际数据的特征谱,建立类似信噪比的指标来判断股票相关关系的稳定性。通过对 S&P500的实证结果表明,以Gauss性或Levy- Khinchin稳定假设为基础的相关分析是不稳定的,协方差谱含有大量噪声而并不具备实际信息价值。进而作者提出以热力学Fokker-Planck方程替代Ito随机过程描述价格动态后,协方差矩阵的稳定性得到显著提高。A.Ponzi(2000)在研究IBM与S&PS00序列的幂律尾部时指出,单指数模型并不能解释不同股票间的复杂相关关系,他用股票超额需求(供给)和投资者信心两个指标表征个股的基本特性,又以投资者之间的少数派博弈行为 (Minority Game)将两指标动态联系起来,建立非线性演进模型。模型结论表明,股票之间的相关性会因投资者的群体行为而发生变化,如在上涨和下跌的大势中相关关系有显著差别。此外,组合投资策略可用来分散风险,投资者往往选择不相关的股票来构造他们的投资组合。S.Battiston等人发现,由于股票相关关系的不稳定性,投资者在组合投资中的投资分散程度也呈现出幂律分布。E.W.Pitrowski(2001)把热力学的分析框架运用于股票投资,将证券组合中的不确定性用组合的熵表示,用类似温度的指标作为投资者专业化程度的表征值并依此对投资者进行分类,提出了一种新的证券组合绩效评价的方法,并讨论了时变股价相关下的最优组合投资策略。
著名物理学家K.Ilinski发现,金融市场具有关于资产单位重新标度以及交换因子相应变化的局部对称性,这种测量对称非常类似物理学中关于所有未知基本作用的对称性质,因此在基础物理学中广泛应用的纤维束几何学在金融学中能够得到完全相似的理论构造。纤维束理论为电动力学中Maxwell方程和第一测量对称性的发现,乃至量子电动力学的建立提供了重要的理论平台。而将其运用于金融市场,意味着描述价格和资金流的所有动态方程遵循测量对称,并且可以用重新标度的控制参数来考虑所有时间水平不同而动态策略相同的投资者。据此Ilinski建立起了他的金融测量理论:通过假设交易者依据他们对市场纠错的预期来最大化利润,该理论可以揭示技术分析和市场有效性之间的关系;在资产定价模型中引入资金流,在测量框架下对价格的演化过程进行了有效修正;进而针对衍生证券的定价问题,考虑虚拟套利、非布朗运动的基础资产价格动态以及对冲的影响,并且将买卖价差、交易成本等市场不完备性产生的影响加以量化,得出了衍生证券定价的测量模型。无论是实证数据还是计算机的模拟数据,测量模型都取得了良好的拟合表现,因此是相当成功的理论模型。
四、对物理经济学的评论及其发展前景以现象为导向的逻辑方法论以及对实践较强的指导意义,使物理经济学作为一门“实用”的科学而大受称赞。然而,正如行为金融学一样,现阶段物理经济学的研究更多集中在对于现象(如经济变量的分布规律和金融市场异像等)的描述上,在这个层次上学者们尚能对一些经验事实达成共识;然而当涉及到问题的本质,即对现象背后的形成原因和作用机理的研究则显得很零散,莫衷一是。因而,物理经济学既没有现代物理学那样清晰的结构层次和完善的理论框架,又不具备传统经济学自圆其说的完备理论体系,作为一门科学来讲,它还显得十分幼稚,特别是还有一些基本的理论问题还没有得到解决。⑤当务之急是如何确立科学的研究方法、架构符合认识逻辑的理论推理体系,已经成为物理经济学界的广泛共识。在这方面,K.Ilinski(2001)的金融测量理论做出了一个很好的示范:该理论既没有像传统经济学的过分抽象,又将极端复杂的金融系统本身进行了合理简化,遵从量子物理的推理演绎逻辑,其理论框架十分严谨,在对一些市场异像做出合理解释的同时,又能与经济学的基本原理相包容,因而具有广阔的发展前景。
最近,系统科学的发展导致了物理学领域的重大变革,演化的物理学(如非平衡热力学、耗散结构理论、协同学、超循环理论、突变论、混沌与分形理论)逐步取代存在的物理学(如牛顿力学、量子力学、相对论)而成为现代物理学的主流。相应地,复杂性对经济学理论也提出了挑战,经济不再仅仅是市场稳定和供求均衡的结果,而是许多相互作用的个体都处于不稳定的动态过程中,每个个体都根据他对未来的预测及其他个体的反应来采取行动,从而不断地学习和自适应地调整关系的结果。由此会涌现新的经济结构和功能,同时组成经济的机构、行为、技术等关键要素也会不断地更新、重组。整个经济系统处于不平衡-平衡-不平衡的演进过程中。
Axelord(1997)认为,建立在均衡、稳定、决定性等假设基础上的旧经济学应当被建立在结构、特有形式、自组织、生命周期等生物学理论基础上,并具有路径依存发展过程的新经济学所取代。在这种趋势下,物理经济学也必然要将注意力更多地放在经济系统适应性的演化进程上来,以自组织方法论取代还原性方法论,同时广泛吸取生物学、社会学、心理学等学科的研究成果,用发展的眼光来研究不断改变作用形式的客观经济规律,从而更好地指导人们的实践。
注:①事实上,根据Pareto的思想可以很容易地推导出,一个富人拥有的财富是一个拥有财富w,的穷人的x倍的概率关系服从P(xw)-x
(1+a)与x无关的,因此是无特征标度(scale -free)的,反映出富者阶层结构的自相似特征。
②首先,尾部事件是小样本事件,其统计性质较弱,尤其是对于每一个特定的宏观经济对象,都只有一个表征收入分布的统计测度(如用货币度量的可支配收入),因此仅有一个独立的统计样本;其次,对尾部的定义难以明确,即当基础收入取到多大的值时幂指规律才会显现没有固定的标准;此外,由于收入客观统计的困难,数据的精确度难以保证。
③这一点与系统中大事件发生的经验概率分布一致。
④现代物理学用非互换概率替代古典概率,运用随机矩阵理论对不稳定系统进行特征谱分析。特别地,以Green函数作为辅助概率函数,运用R-变换可以得到一个Wigner半环,这是中心极限定理在非互换概率体系中的拓展。
⑤例如,一方面,已有的结论表明,对经济个体的同质化抽象是不合适的,因此宏观经济研究需要合理的微观经济行为假设作为前提;另一方面,人们发现很多宏观经济变量体现出幂律分布的规律,这说明经济整体的表现性质与微观个体的具体作用形式是不相关的。这就给人们提出了一个基本问题:是否存在一个临界阚值 (数量级),在该阈之内,系统仍然是微观性质的简单加总;而超过该阈值,系统则表现出与微观基础无关的新涌现特性。
参考文献:
M .F.M.Osbome (1977), The Stock Market and Finance from a Physicist's Viewpoint[~M], Minneapolis: Crossgar.
J.L.McCanley(2004), Dynamics of Markets: Econepbysics and Fi mnce[M], Cambridge University Press.
I. Kondor & J. Kretesz (eds) ( 1999 ), Econopbysics: An Emerging Science[M], Kluwer, Dordrecht.
W.souma(2001), Physics of Pemonal Income[J], Fraetals, 9:463 - 470.
A.Dmgulcscu & V. Yakovenko(2001 ), Exponential and Power - law Probability Distributions of Wealth and Income in the United Kingdom and the United States[J], Physics A, 299:213- 221.
A. C. Silva & V. Yakovenko(2003), Thermal and Superthermal: Two - class Distribution of Personal Income, in Modeling of Com- plex Systems, od. by P.L.C, arrido & J.Marro , New York.
Z. Burda, J.Jurkiewicz & M.A.Nowak(2003), Is Econopbysics a Solid Science? [J], Acta Physica Polonica B, G:34- 87.
P. Richmond& S. Solomon(2001a), Power Laws are Boltzmann Laws in Disguise [J], International Journal of Modem Physics C., 12(3) : 333- 343.
S. Solomon & P.Richmond(2001b), Power Laws of Wealth, Market Order Volumes and Market Rettmas[J], Physica A, 299: 188- 197.
M.levy, H.Levy & S. Solomon(2000), Microscopic Simulation of Financial Markets[M], Academic Press, New York.
A.Chatterjee, B.Chakrabam & S,S. Manna(2003), Money in Gas -Like Markets: Gibbs and Pareto Laws[J], Phys. Scfipta T, 106:36 - 38.
C.D.Guilmi(2003), Power Law Scaling in the World Income Dis- tribution[J], Economics Bulletin, 15(6):1 - 7.
IMF(2001), World Economic Outlook, Oct., Chapter II, IMF, Washington D. C.
P.De Grauwe & H. Dewachter(1992), Chaos in the Dornbusch Model of the Exchange Rate[J~, Kredit und Kapital, 25:26- 54.
J.L.McCauley & C.M. Kuffner(2004), Discrete Dynamics in Na- ture and Society[J], Economic System Dynamics, pp. 213- 220.
R. Axtell (2001), Zitff distribution of U.S. firm sizes[J], Science, 293 : 1818 - 1920.
Z. Gabaix & Y. Loannides(2004), 1'he evolution of the city size dis- tribution[J], Handbook of Urban & Regional Economics, Vol. IV: Cities & Geography, (eds.) J.V. Henderson & J. F. Thisse.
P. Ormerod & L. Smith(2001), Power law distribution of lifespans of large firms: breakdown of sealing, Volterra research paper, Volterra Consulting Ltd, London, March.
X.Gabaix, P.Gopikrishnan, V.Plerou & H.E. Stanley (2003), A theory of power- law distributions in financial market fluctuations [J], Nature, 423:267-270.
J.D.Fanner & F. Lillo(2003), On the origin of power law tails in price fluctuations, SFI Working Paper, 03-09-052.
M.Daniels, J. D. Farmer, L. Gillemot, G. Iori & D. E. Smith ( 2003), Quantitative model of price diffusion and market friction based on trading as a mechanistic random process[J], Physical Review Letters, 90:108 - 102.
J.P. Bouchaud (2002), An introduction to statistical finance [J], Physica A, 313:238-251.
A. Ponzi (2000), The volatility in a multi- share financial market model, appeared in EPJB, Proceedings of Applications of Physics in Financial Analysis 2, Liege, Belgium, July.
E. W. Piotrowski & J. Sladkowski (2001), The thermodynamics of portfolios[J], Acta Physica Polonica B, 32(2) :597 - 605.
llimki, K. (2001), Physics of Finance: Gauge Modeling in Non- equilibrium Pricing[M], John Wiley & Sons Ltd.
2009年5月16日 星期六
Net::SSLeay on ubuntu
cpan有问题,请直接下sudo apt-get install libnet-ssleay-perl
搞了一个早上…
2009年5月15日 星期五
Email::Send::Gmail - Send Messages using Gmail
不幸的是,在win32平台上无法运行
To set up your Outlook 2007 client to work with Gmail:
2009年5月12日 星期二
2009年5月9日 星期六
跑步
注意呼吸节奏均匀。跑步时,有意识地把双脚步伐节奏与呼吸节奏协调起来,一般来说,根据自己体力状况和跑步速度变化,可以采取二步一吸、二步一呼或三步一吸、三步一呼的方法。当呼吸节奏与跑步节奏相适应并形成习惯后,就可避免呼吸急促表浅和节奏紊乱,对加深呼吸的深度极为有利。同时还可减轻呼吸肌的疲劳感和减轻跑步中“极点”出现所带来的不良反应。
跑步时采用鼻子吸气。跑步时采用鼻子呼吸并与跑步节奏相协调,能满足体内氧气要求。随着跑步距离和强度加大,氧气需要量增加,改用口鼻吸口呼的呼吸方式,在吸气和呼气时要做到慢、细、长,嘴微张呼气,忌大口快速呼吸或者喘粗气。跑步时呼吸急促,感气憋不畅时,是由于呼气不充分,二氧化碳排出不充分,占据在肺泡之中,限制了氧气的吸入。要想加大呼气量,就用口呼气,并有意识加大呼气的量和呼出的时间。
2009年5月5日 星期二
使用 USB 键盘无法跳过在启动时的自动检查
我真的被打败…无语
怎么办…只好去windows目录下找到autochk.exe把它改名或删除
成功开机后再处理啰
2009年5月3日 星期日
生日悖论计算
50%机会介于第22人和23人之间
remaining | base | 1-prob. | n | prob. |
1 | 1 | 0 | ||
364 | 365 | 0.99726 | 2 | 0.00274 |
363 | 365 | 0.991796 | 3 | 0.008204 |
362 | 365 | 0.983644 | 4 | 0.016356 |
361 | 365 | 0.972864 | 5 | 0.027136 |
360 | 365 | 0.959538 | 6 | 0.040462 |
359 | 365 | 0.943764 | 7 | 0.056236 |
358 | 365 | 0.925665 | 8 | 0.074335 |
357 | 365 | 0.905376 | 9 | 0.094624 |
356 | 365 | 0.883052 | 10 | 0.116948 |
355 | 365 | 0.858859 | 11 | 0.141141 |
354 | 365 | 0.832975 | 12 | 0.167025 |
353 | 365 | 0.80559 | 13 | 0.19441 |
352 | 365 | 0.776897 | 14 | 0.223103 |
351 | 365 | 0.747099 | 15 | 0.252901 |
350 | 365 | 0.716396 | 16 | 0.283604 |
349 | 365 | 0.684992 | 17 | 0.315008 |
348 | 365 | 0.653089 | 18 | 0.346911 |
347 | 365 | 0.620881 | 19 | 0.379119 |
346 | 365 | 0.588562 | 20 | 0.411438 |
345 | 365 | 0.556312 | 21 | 0.443688 |
344 | 365 | 0.524305 | 22 | 0.475695 |
343 | 365 | 0.492703 | 23 | 0.507297 |
2009年5月2日 星期六
卡尔曼滤波器
http://blog.sina.com.cn/s/blog_4d96146d01000bg7.html
把做模式識別的應用數學方法象genetic algorithm 和 neural network運用於分析和預測股指、外匯和政府債券期貨的價格
Analysis of Financial Time Series
關鍵字:state-space model, regime switching, optimal control, Bayesian treatment, Markov chain Monte Carlo (MCMC), Bayesian inference, data augmentation, stochastic
volatility models, forward filtering and backward sampling (FFBS).
財務工程上想要利用KF的原因是,認為市場上的交易資料本身帶有噪音,這些噪音讓某些outlier成為套利的機會,如果以高頻資料適當地調校KF,將可以自動地識別出套利機會並進行套利,無論市場是在持平、上升或下降的過程。
2009年4月30日 星期四
Excel Add-ins with MinGW
呵呵,正确解答
Build QuantLibXL From Source Code
必需在win32环境下用vc9编译
MinGW cross compiler for Linux build environment
不知道要不要搭配wine,测试的时候可能需要…
编译wxWidgets for windows on ubuntu dapper
linux下的windows开发环境
Gtkmm系列:交叉编译Window版本的Gtkmm程序示例
Cross-compile with mingw32 on GNU/Linux
CmakeMingw
在Gentoo上构建windows交叉编译环境
wxWidgets程序的cross compile
这里,主要使用了MinGW这个对于windows平台的wrapper。他包含了整套的开发头文件和工具,编译系统采用的是GCC,有自己的一套windows的lib,这样,经过link以后,就可以直接在win下运行。
Cross Compile Mozilla for Mingw32
这个连结应该是最具有参考价值的,因为Firefox本身也要连结到win32的dll,所以其中会有说明
2009年4月11日 星期六
IE下的Javascript调试
http://blog.csdn.net/mqwind/archive/2009/02/05/3863435.aspx
用微软 IE 8 Beta 调试 JavaScript
http://www.blogjava.net/beansoft/archive/2008/03/06/184214.html
2009年3月28日 星期六
手工查杀木马(四)
晚近病毒及挂马为了提高隐藏成功的机率,在函数呼叫上会动许多手脚。正常的函数呼叫会遵循esp/ebp/call/ret的约定,ida pro等静态分析程式也是利用这个性质来分析函数的范围;而恶意程式则会蓄意破坏静态分析的逻辑,例如以不返回的call进行本质上的jmp,利用push/pop等直接对stack进行写入,以mov及ret指令更改esp,配合ret跳至stack中预先写入的位置,以罕见的运算设置状态旗标直接产生所需要的位置或数值以pushf写入stack。
利用ollydbg的trace功能,我们可以将程式的执行过程log下来,以了解程式中执行的流程,并且对重要的位址设定硬体中断,因此能了解实际上进行写入或存取的指令位址。
手工查找木马(三)--反组译服务型态挂马
修改机码HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\svchost.exe,增加一字串值Debugger,指向ollydbg上述步骤中,前缀(表示视情况而定,*表示可能只需进行一次,中断设定位置依实际状况而有不同。
暂停防毒程式
*执行rundll32 ******.dll RundllInstall以注册此服务
启动services.msc->MS Media Control Center中对应之服务
*设定中断点至010011c9,待dll载入后挂起
run
(设定中断点至dll的ServiceMain,100049b0
设定中断点至dll的StartAddress,10002d10
run
(设定log/中断点至createthread
view->executable modules->kernel32单击右键,选view resource strings,找到createthread,设中断或log
(设定Always trace over system DLLs
设定中断点至 1001261F(加密的呼叫), 10002e90(第一执行绪), 100134DE, (10002e90,) 记忆体中断点(1000f4dc,) (1000f358)
debug->open run trace
view->run trace, 单击右键 log to file
设定该dll为non-system
(run/)trace into
(在waitforsingleobject呼叫时,按暂停再继续,以免被block
...
view->run trace, 单击右键 close log file
ctrl+F2
alt+x
修改机码HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\svchost.exe, 删除其Debugger值以免下次开机时正常进程被载入
移除该服务或设置为手动启动,以免下次开机时被载入
2009年3月24日 星期二
2009年3月22日 星期日
手工查找木马(二)
连线建立完成后,根据所接收到的信息,此一后门程式可以下载其它木马,以系统帐号执行任何指令,回传系统详细信息等等。
令人担心的是,此木马在运行中躲过了kaspersky的检查,在服务被停止后,kaspersky才得以发现并删除此一木马。程式虽然只有40k大小,但是功能已经相当完整,如果接下来有时间,还是要好好研究一下才是。
另一方面,卡巴在找到此木马后的第一反应是删除此檔案,不禁另人怀疑木马作者和防毒软体业者间微妙的共生关系。檔案中含有木马作者留下的线索,可以用来查缉其来源,但是防毒软体业者的生意是否也因者木马的盛行而兴隆?因此防毒软体业者当然不希望木马作者被抓到。甚至在某些案例中,某些防毒软体业者本身也被控蓄意散播病毒。
2009年3月14日 星期六
手工查找木马
執行後發現一個網路連結經常存在,由procmon檢視該進程為svchost -k krnlsrvc之參數,於機碼中發現此一木馬所在,進行以下步驟:
- 複製此木馬,以備留存證據.因為此機器為動態IP上網,顯然它是向遠端連結,連結之IP必然留存在本機上.這一步先作,因卡巴顯然在先前漏了這個木馬,但我停止進程後在檢視該檔案時又報有毒並馬上被刪除,可能是它有方法隱身於卡巴,詳情得等對此木馬進行逆向工程後才能得知.複製時建議更名,在某些觀察下發現,它似乎有辦法記得它被隔離的位址,重開機進入安全模式可能是比較安全的作法
- 以procmon停止該進程,或重開機進入安全模式
- 刪除這個木馬,及帶起這個服務的機碼
另外以procmon觀察此一進程的行為時,發現還一直向C:\WINDOWS\system32\drivers\etc\hosts 這個位置進行讀取,因此進到該目錄把兩個命名不正常的檔砍了.
2009年3月9日 星期一
机率与统计书单(三)
机率与统计书单(二)
在數學領域中,機率和統計是兩門非常獨立的學門,尤其機率和量子物理間有著相當密切的關聯,而統計和機率這兩個領域的作者並沒有重覆.如果為了計算選擇權的定價,那麼對機率的了解就已足夠了解隨機微積分;而如果是為了計量模式的建立及計算,才需要學習統計的部分.
如同Chung所言,统计学的进程是超前于相应的物理学的发展,因此二项分配由于实验简单,最早为人类所理解,并用以推导常态(p值一般)及帕松分配(p值很小)。对常态分配的推导来自于计算二项分配的需要,尤其是对阶乘的计算及近似,此一近似称为史得灵公式。
在第229页证明高斯分配时,Chung也说这个证明很聪明;231页说明单尾的近似时,也说这是一个不错的技巧。我相信这是打心理说的,因此也不也说明了机率的发展是不那么直观的,我甚至这么想,当年在修这门统计学的学生当中,到底有几位真正了解这个学科呢?
另一方面也讓人覺得大師不愧是大師,不論地位如何崇高,他還是能以欣賞的角度來評價前人的工作,也讓人覺得大師的地位是沒有大家想像的遙遠的.寫一本成功的教科書,要能以初學者的觀點,了解初學者的程度和識見,才不會讓初學者看不懂,但是仍然要能言之有物,也就是三個字,“講重點”.
http://www.math.ntu.edu.tw/student/book/book.htm
2009年3月4日 星期三
一个后门程序/服务EventService的反组译
以servicemain及svchost为关键字查找,发现 http://www.3800hk.com/news/w44/136568.html 一文的说明,发现其描述符合观察到的行为。
那么svchost如何知道某一服务是由哪个动态链接库负责呢?这不是由服务的可执行程序路径中的参数部分提供的,而是服务在注册表中的参数设置的,注册表中服务下边有一个Parameters子键其中的ServiceDll表明该服务由哪个动态链接库负责。并且所有这些服务动态链接库都必须要导出一个ServiceMain()函数,用来处理服务任务。
2009年3月3日 星期二
机率与统计书单
http://www.math.ntu.edu.tw/student/book/book_probability.htm
http://www.math.ntu.edu.tw/student/book/book_statistic.htm
http://www.chiaoluo.cn/?q=node/112
http://episte.math.ntu.edu.tw/cgi/mathfield.pl?fld=pro
或许是为了在短时间内教完所要求的进度,或更可能地,为了适应现今大学生的(低落)水准,统计学在我之前所修的课程所使用的教本并没有太多的证明,而集中在应用,这显然使得对学门的了解流于强记,现在回想起来,当年成绩低下实在没什么意外,某种程度上我还满怀疑非数理学系的年轻教授对统计学的了解程度。光是Poisson process / distribution的三个假设,要把它说个清楚这么简单的事情,我不知道为何管院使用的教科书从未提及。(网页版)接下来比较一下Chung, Feller, Hogg&Craig这三本的风格。
就Chung这本而言,可以说是最详灵的,他先破题,然后讨论历史上的处理方式。Hogg & Craig使用其中一种方式说明,但是过程有点"跳tone"(还是我程度不好…)。Feller也使用了其中的另一种方式说明,他直接引用Poisson的思路,由二项分配的极限下手,是最好入手的,也很符合历史上的发展,我个人非常喜欢。
2009年2月22日 星期日
2009年2月19日 星期四
思维导图
imindmap(192k)下载地址:http://www.imindmap.com/download/download.aspx?version=windows_lic
Mindmanager(1670k) 英文版 http://www.mindjet.com/
mindmapper(248k)下载地址:http://www.mindmapper.com/default.asp
FreeMind(1850k)开源导图软 http://freemind.sourceforge.net/wiki/index.php/Main_Page
Sharemind(3k) 基于FreeMind 二次开发,支持中文 http://www.cuifang.com/tools
XMIND(163k) 跨平台的思维导图软件,支持多国语言,可以运行在Windows,Mac OS X和Linux三大操作系统上。 http://www.xmind.org/
Linux(293k)下有一款叫VYM的软件 http://www.insilmaril.de/vym/
..
思想快车 一个很不错脑图软件,绿色的..官方网站:http://www.thinkingexpress.cn
vmy(273k) 相對於freemind而言,安裝簡單,支持跨平台(藉由QT);但script能力顯然尚未成熟 http://www.oklinux.cn/html/Basic/rjyy/20080713/57883.html
在M$的世界中使用的mindmanager+visio+project,在MAC對應的就是conceptdraw的mindmap+pro+project,在OSS則為freemind+yEd+TaskJuggler;使用人數M$~OSS>>MAC,但是OSS的解決方案欠缺scripting的支援(除了TaskJuggler III is written in Ruby),conceptdraw中約三年前才出現了類似VBA的支援
感覺上以上工具加上openoffice等項目如果能在年內有重大進展,或許可以給windows 7來個迎頭痛擊
2009年2月18日 星期三
給 ubuntu 8.10 安裝 gcin 與嘸蝦米
http://www.flickr.com/photos/chiahsienli/3054708164/
2009年2月14日 星期六
OEDO 808 Ending Theme 【Sound Track】~愛しているかもしれない~
http://www.youtube.com/watch?v=JUASJvIG37E
18年了吗…真是快啊…
2009年2月10日 星期二
手工恢复硬盘分区表记述(II)
以本次笔记本硬碟为例,分区mbr的30h及50h内容错误,使得xp不认识/载入该分区。修改后先以disk recovery取出其中较为重要的文件保存,然后进行chkdsk /f修复。修复后将分区复制到其它硬盘,试图启动,不过估计会失败,因为disk recovery恢复windows目录时曾经提示部分dll错误,因此必需以upgrade模式重新安装xp。
2009年2月7日 星期六
手工恢复硬盘分区表记述
一周之内因硬件原因连续挂了两个硬盘,都造成分区表损坏。检讨原因如下:
- 外接硬盘供电一定要足
- 启动分区被改时可能造成不启动,一定要先用spfdisk或winhex检查,这个问题最好解决
- 用修复主控台执行fixboot c:解决不启动
- 用修复主控台执行fixmbr \device\harddisk0解决分区问题;但有可能无法修复逻辑mbr
- 仍无法解决再用winhex检查分区表,通常是实体mbr正常,逻辑mbr出错;可以由同一硬碟其它同型态(如同为ntfs分区)之mbr复制后修改起始位置及大小,位于1ch及28h
- 贯彻每周备份及使用raid才是王道啊…
但是这个失误造成了学习的动力,也间接解决了上周发生的类似问题,可说是赛翁失马。
DOS Boot Record(DBR)
http://jasonlocke.com/ntldr_guide/bootsect.html
这是试着以组语还原的程式码
http://www.lpjjl.net/pgm/fichiers/srcasm/BOOTDOS5.ASM
另外关于grub,导览到
http://xianfengdesign.blogspot.com/2007_01_01_archive.html
其中指向原始来源
http://mirror.href.com/thestarman/asm/mbr/GRUB.htm
其目录为
http://mirror.href.com/thestarman/asm/mbr/index.html
其中也包含了不少dos相关文件
http://mirror.href.com/thestarman/asm/mbr/DOS50FDB.htm
2009年2月6日 星期五
外接读卡机checkudisk资讯
6361 Multimedia Card Reader
6362 Hi-Speed 21-in-1 Flash Card Reader/Writer (Internal/External)
6377 Multimedia Card Reader
类似的产品搭配usb cdrom分区其实存在相当多的应用,例如内置导引分区,杀毒、skype、vpn、自动更新/升级、加密(http://www.exegesis.uklinux.net/gandalf/encrypt/disk.htm)等。
以flashboot格式化,安装内含的freedos,可以正常开机无误;安装dos 7.1似乎会有问题。以ultraiso格式化后安装dos 7.1似乎也会有问题;ultraiso并无自带的dos可供测试。
2009年2月4日 星期三
番茄花园系统,每次启动IE都要进入c:\WINDOWS\Web\index.htm,而不是进入主页,请问如何更改?
另外收藏夹被改,要将机码
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
删除Common Favorites,再重新建立型态为REG_EXPAND_SZ之同名机码,内容为%ALLUSERSPROFILE%\Favorites即可
2009年2月3日 星期二
2009年2月1日 星期日
运行碎片整理后无法开机
使用flashboot制作u盘开机,但是也无法开机,推测是关于partition的资讯完全乱了
希望能把fixmbr功能放到u盘上,就可以解决
2009年1月31日 星期六
SSRS(II)
2009年1月30日 星期五
ror展示筆記
時間 | 指令 | 功能 | |
00:05 | rails brablog | 建立應用目錄結構 | |
00:10 | cd brablog | ||
00:15 | ./script/server | 啟動網頁伺服器 | |
00:25 | 開啟網頁 | ||
00:34 | 開啟新終端 | ||
00:42 | 開啟textmate | ||
01:00 | ./script/generate controller Blog | 建立controller | |
01:17 | 開啟blog_controller.rb | ||
01:22 | 試圖開啟blog | ||
01:30 | "於controller中加入index方法,印出hello | world" | |
01:37 | 開啟blog,成功顯示預設網頁 | ||
01:47 | 清空controller.index新增view,命名為index.rhtml,印出hello… | ||
01:57 | 開啟blog,成功顯示預設網頁 | ||
02:02 | 移除controller.index,因index.rhtml已存在 | ||
02:13 | 編輯database.yml以指定資料庫名稱 | ||
02:26 | 創建資料庫 | ||
02:36 | 創建posts資料表 | ||
02:42 | 新增id/title欄位 | ||
02:54 | ./script/generate model Post | 建立model | |
03:09 | 開啟post.rb | ||
03:15 | 於controller中加入post的scaffold(鷹架; 支架; 臨時搭起的台架; 斷頭臺) | ||
03:20 | 試圖開啟blog | ||
03:30 | 動啟網頁伺服器 | ||
03:39 | 試圖開啟blog | ||
03:42 | 按下new post以新增資料 | ||
03:48 | 完成新增回到主畫面 | ||
03:51 | 按下show顯示明細 | ||
03:53 | 按下edit進行編輯 | ||
03:55 | 新增body欄位 | ||
04:04 | 重載編輯頁面,表示model促成scaffold(controller)連動view | ||
04:12 | 完成編輯按下update鍵,回到明細畫面;注意flash的出現 | ||
04:17 | 按下edit進行編輯 | ||
04:20 | 新增created_at欄位 | ||
04:27 | 重載編輯頁面,表示model促成scaffold(controller)連動view | ||
04:32 | 調整欄位順序 | ||
04:34 | 重載編輯頁面,表示model促成scaffold(controller)連動view | ||
04:39 | 完成編輯按下update鍵,回到明細畫面;注意flash的出現 | ||
04:42 | 按下back回到主畫面 | ||
04:44 | 再新增一筆資料 | ||
04:54 | 於post.rb中檢核資料 | ||
05:00 | 按下create示範檢核功能 | ||
05:13 | 按下create示範檢核功能;注意flash的出現 | ||
05:30 | ./script/generate scaffold Post Blog | 將scaffold具體化為程式碼至controller | |
05:32 | 提示是否覆蓋controller | ||
05:41 | 重載主頁面;看起來沒什麼不同 | ||
05:45 | 檢視controller,發現自動產生不少action程式碼,有new,create/edit/update/destroy,index/list/show | ||
05:53 | 把程式碼fold起來,不知vim做得到否? | ||
05:56 | 展示對應各action的view亦已自動產生 | ||
06:00 | 修改list.rhtml的排版 | ||
07:20 | 重載主頁面;看起來開始有點不同 | ||
07:34 | 再新增一筆資料 | ||
07:47 | 按下create示範檢核功能;注意flash的出現 | ||
07:50 | 反向排序list.rhtml | ||
07:55 | 重載主頁面;看起來開始有點不同 | ||
08:06 | 按下edit進行編輯,示範字體強調功能 | ||
08:15 | 重載明細頁面;看起來沒什麼不同 | ||
08:18 | 修改list.rhtml的排版,將內文textilize | ||
08:34 | 修改controller中的list action,準備示範partials | ||
08:45 | 修改list.rhtml的排版,剪下部分文字,準備示範partials | ||
08:50 | 新增_post.rhtml,將list.rhtml所剪下的部分貼上 | ||
08:57 | 修改list.rhtml,下達render :partial指令 | ||
09:08 | 重載主頁面;看起來沒什麼不同 | ||
09:13 | 修改show.rhtml,下達render :partial指令 | ||
09:28 | 重載明細頁面;看起來沒什麼不同 | ||
09:36 | ./script/generate model Comment | 建立model | |
09:49 | 修改comment.rb,建立belongs_to關聯至post | ||
09:55 | 修改post.rb,建立has_many關聯至comments(為什麼是複數呢?) | ||
10:00 | 新增comments資料表 | ||
10:24 | 建立一筆comment資料列 | ||
10:43 | 修改show.rhtml,加入comment;注意他打了fore後用了code template | ||
11:00 | 重載明細頁面;看起來多了comment | ||
11:10 | "編輯明細頁面;看起來多了""comment""" | ||
11:15 | 使用form_tag以在同一頁面得以新增comment | ||
11:46 | 重載明細頁面;看起來多了comment輸入功能;但controller中尚未有此action | ||
11:51 | 於controller中新增comment action | ||
12:05 | 編輯明細頁面,傳遞@post作為form_tag參數 | ||
12:15 | 於controller中定義comment action為新增一comment | ||
設定flash訊息 | |||
重導網頁至明細頁面 | |||
12:45 | 重載明細頁面;看起來沒什麼不同;新增一些comment | ||
12:54 | 重載明細頁面;看起來多了comment及flash訊息 | ||
13:05 | rake stats | 一些統計資料 | |
13:10 | tail -f log/development.log | 一些log資料 | |
13:20 | 觀察log的新增 | ||
13:39 | 進行測試 |
Server Application Unavailable
最后发现的解决方法是
- 重装.net freamework;因为似乎任何aspx檔均产生此一错误,不论位在何处
- 错误变成"…Reporting Services 错误 授予的权限不足,无法执行此操作。 (rsAccessDenied)"。检视 http://msdn.microsoft.com/zh-cn/library/ms159778(SQL.90).aspx 后根据其说明,停止iis,重新设定report manager及report server,启动iis,结果正确执行
此一问题花了近两个工作天解决,不可说不是浪费时间。这个微软产品的"特性"满好笑的,B要正确安装有赖于A的正常工作,而A的正常工作在安装了B后却发生问题,因此要重新安装A。由于B在安装后设定时A已不正常,因此A重新安装后要重新设定B。不知SQL SERVER 2008使用自带的WEB SERVER后,问题是否有解决?
2009年1月28日 星期三
SSRS
Microsoft.SQL.Server.2005.Reporting.Services.Step.By.Step(MS.Press)
http://www.cnblogs.com/steven2009/archive/2009/01/11/1373813.html
http://v.youku.com/v_show/id_co00XMTY3NDc5MjA=.html
http://social.msdn.microsoft.com/Forums/en-US/sqlreportingservices/thread/7f57f1a0-3458-49b6-a0ff-820ba1385f6b/
ROR教程及连结现存资料库/表的注意事项
http://www.cnblogs.com/dahuzizyd/archive/2007/04/13/ruby_on_rails_windows_instatnrails_study_all.html
连结现存的资料库/表,例如sql server 2005中自带的pubs资料库的titles资料表时,下达ruby script\generate scaffold Title title:string notes:text指令,以指定所显示的字段后,还有三个问题要解决。
第一个是连接到sql资料库;
第二个是解决该资料表中使用了type作为字段名称;
http://www.ruby-forum.com/topic/101557
第三个是指定主键
综上所述,所产生的model应修改如下
class Title < ActiveRecord::Base
set_inheritance_column :ruby_type
set_primary_key "title_id"
# getter for the "type" column
def device_type
self[:type]
end
# setter for the "type" column
def device_type=(s)
self[:type] = s
end
end
此外当主键是复合键时还有其它的问题要考虑
2009年1月27日 星期二
RoR 2.2的注意事项
http://minimada.blogspot.com/2008/04/with-scaffold-ruby-onrails.html
产生scaffold后,rake db:migrate,会自动产生对应的字段。但是如要套用到现存的资料表,要如何做呢?在 views 子目录下的*.html.erb 必需要进行对应的修正。原来预设的for回圈中,使用的物件预设的情况下均有一键值id,若名称不符,必需指定代用的字段,如原来作为link_to参数的为store物件,需改为 :id=>store.stor_id
Professional.Ruby.on.Rails(Wrox.Feb.2008)中的第六章,有这么一段话
If you are in a situation where you have an existing database schema to work with, you need todecide how to manage it.
这明确指出了,整个第六章就是在讨论如何处理legacy database的方式,尤其是159~160页。
http://wiki.rubyonrails.org/rails/pages/howtouselegacyschemas
此一官方网址也提出了解决方案,最简单的方式是利用资料库的alias功能。此外,在model中加入set_primary_key 指定主键也是非常重要的。
http://zusocfc.blogspot.com/2006/08/setprimarykey.html
Agile Web Development with Rails 此书第三部份深入讲解了rails的组成,相当有深度。尤其是第16章说明了Active Records的原理,了解此章将使阅读原始码的能力大增。
Agile Web Development with Rails(2nd ed.)書中第16章第3節的部份,雖然繼續使用uid還是可以的,但是會比較麻煩點!該節最後一句話:When you need to set the primary key, use id. At all other times, use the actual column.
其它像The rails way及Rails recipes都有提到类似的情况及处理方式
2009年1月26日 星期一
Ruby / RoR
http://notreally.javaeye.com/blog/182874
最基本的ror安装方式
http://rubyonrails.org/download
与outlook整合的方式
http://snippets.dzone.com/posts/show/4547
HowtoConnectToMicrosoftSQLServer
http://wiki.rubyonrails.org/rails/pages/HowtoConnectToMicrosoftSQLServer
我想它要讲的是抓2.2版,里面才会有ADO.rb
在执行rails_take2_with_sound.mov当中的范例时,对script目录下的脚本通常都需额外下达ruby指令;这可能是环境设定的差异
路径上的反斜或正斜线的效果都是一样的
改变 config\database.yml 中任何资料后,一定要记得重启Webricks伺服器
scaffold在2.2版以后也必需使用script/generate scaffold明确地产生
scaffold的使用方法有改变,请不要直接在controller中直接呼叫,最好直接修改上一步产生的controller
资料表中有某些栏位的名字有所禁止,如type
Rails源代码分析 http://blog.csdn.net/jlaky
2009年1月25日 星期日
领域专用语言(domain specific language / DSL)
我觉得/相信ROR的作者们或多或少都和GTD的倡言者有相似之处
把系统去芜存菁,然后推到极致
但是我相信某些地方还等待着VISUAL PROGRAMMING及语音办识及人工智慧的加入
REBOL、Erlang、F#还有更多!!!
有没有人想过,程式语言为何出现的速度如此惊人呢?
在程序设计语言的页面上,rebol竟与delphi出现在其它分类…
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
在这个排名中,前20名只有D(改良的c++)我不知是什么,其它甚至多数都有用过…
21是os400的rpg,23是lisp,24是matlab,天啊…
似乎不是什么好现象?当然我可以说是依任务需要
有幸瞄了一下领域专用语言(domain specific language / DSL),Martin Fowler所提出
看来这也将证明之前投资在COMPILER GENERATOR/ANTLR上的时间是白费了…
曾经我以为天底下只有c++值得投资(1990年代)…没想到这个投资只是个小小的开始…
比较好的说法我想应该是,语言本身只是一个工具,就像是不同的起子、刀具
有的项目只需要其中一种,有的需要综合运用
我想在机械加工界可能有这样的人,也是专精于某一两种工具的使用
但是知道什么场合使用什么工具,或许才是更有价值的技能--如果要造的是飞机的话
ibm的网站上,总是不断加入各式各样的内容,让人认为它什么都有,目的也在此吧
但是再以飞机作为例子,它的delivery还包括各式的手册,对飞行员的培训,各种准则的支持(etops...)
项目进行中也包含了各种内部文件的制作和流程的建立,品管的要求
我相信最终这都推向一个极限,就是一个对模版的全面了解和应用的能力
回过头来说语言这个东西,它还和现存的资源有关
logo是排名很前面的语言,但它在实际面应用并不大,主要就是它现存的资源不足
资源不足我也可以说是支援不足,遇到问题你google也google不到解法
正常人,或说是解决问题比较或然率大的方式,都会先survey一下市场上存在的方案
然后cost down,看有没有开源或免费软件,非到必要是不会动手改写程式
因为任何程度的客制化,在未来都会成为惊人的成本,不论维护上或升级上
因为最近要帮人解决一个现行系统的维护问题,因此有感而发
从头开发一个量身订作的方案,终究在现实中不可行
只能在现行方案的基础上,找到机会就作点改良
Ruby与PHP,看来还是网页技术的当红炸子鸡啊
2009年1月24日 星期六
XP+IIS的问题
首先要挑选/确认所使用的访问帐号在对应的本机目录上有正确的权限及匿名访问设置
http://ask.da1234.cn/wenti54782
其次要访问asp脚本的话,要设置对应的asp版本
最后是设定iis中虚拟目录的匿名访问设置
http://www.dw8.cn/dw8_6/157.asp