Feb 28, 2009

Windows Live Writer Error 501 Permission denied

前几次想要在Windows Live Writer里设置字体的时候,点了Font就会蹦出一个错误dialog出来。如下:

error

Google一下,在WindowsKB这个网站找到了解决的办法。如下:

Error 501 Permission denied selecting font
- In Internet Explorer: Tools, Internet Options, Security for Internet
and Trusted Zones select Custom Level set "Navigate sub-frames across
different domains" to Enable.
- You can also select Prompt instead of Enable.  This makes IE a little
more secure (although this isn't a major security risk) with the minor
annoyance of having to click Yes when prompted for the error.

吕思勉《中国史》笔记

鸦片的由来:

鸦片是从唐代就由阿剌伯人输入的。但只是做药用。到了明代,烟草从南洋输入,中国人开始吸食,其和以鸦片同熬的,则称为鸦片烟,才成为嗜好品。当时鸦片由葡萄牙人输入,每年不过二百箱。而吸食鸦片烟,则当一七二九年之时,已有禁例。自英国东印度公司,垄断在中国的贸易后,在印度地方,广加栽种,而输入遂多。乾隆末年,粤督奏请禁止入口。嘉庆初年,又经申明禁令。鸦片自此遂成为无税的私运品,输入转见激增。海关每年,漏银至数千万两之巨。(P184)

则徐既至粤,强迫英商,交出鸦片二万零二百八十三箱,悉数把他焚毁。(P185)

朝堂上的大官们真是想得轻松,他们动动嘴皮子说了几个“不”字,以为自己的命令就被完完整整地执行了。可惜,就算下面的官儿认识他,英国走私船不认识他;下面的官儿就算认识他,却更认识英国走私船上送出的银子;而以后就算那些兵(如果他们还可以成为兵)不认识那些走私船,兵们确实更加不认识走私船背后的军舰利炮的。

当时广东按察使王廷兰,写给人家的信,说:“各处调到的兵,纷扰喧呶,毫无纪律。互斗杀人,教场中死尸,不知凡几。”甚而至于“夷兵抢夺十三洋行,官兵杂入其中,肩挑担负,千百成群,竟行遁去。点兵册中,从不闻清查一二”。又说:从林则徐查办烟案以来,“兵怨之,夷怨之,私贩怨之,莠民亦怨之,反恐逆夷不胜,则前辙不能复蹈”。而刘韵珂给人家的信,亦说:“除寻常受雇,持刀放火各犯外,其为逆主谋,以及荷戈相从者,何止万人?”人必自侮而后人侮之,这真可使人悚然警惧了。(P186)

难道林则徐也只是个热血书生吗?只看到了别人往自己身上泼脏水,却不知道自己原本已经是烂疮满身了;只知道要禁绝了这害人的鸦片,却没有考虑禁烟带来的后果?

当然,哪个中国人敢说不应该禁烟他X的就不算个人了。但是,好比一个重病患者,你给他一剂猛药他是会跳一下,但是马上他就被猛药振得灵魂出窍了。如果看得清楚当时全国上下内外的情形的话,林则徐禁烟就应该有个章程,徐徐图之,而不是那种一棍子伤害了周围所有人的利益,而又抵不住他们的反扑,搞得情形更加严重。

事情已经过去快两百年了,我也是站着说话不嫌腰疼,放放马后炮而已。

Feb 27, 2009

吕思勉《中国史》摘记

“人必自侮,而后人侮之”,以中国之大,岂区区东北一个小部落所能吞并?金朝的兵力,不算不强,然而始终不能吞并南宋,便是一个证据。然则明朝的灭亡,并非清之能灭明,还只是明朝人的自己亡罢了。(P163)

世宗死后,高宗继之。高宗在表面上,是专摹效圣祖的,但他没有圣祖的勤恳,又没有世宗的明察,而且他的天性是奢侈的,正合着从前人一句话,“内多欲而外施仁义”。在位时六次南巡,供帐之费无艺。对外用兵,所费亦属不赀。凡事专文饰表面,虚伪和奢侈之风养成了。而中年后,更任用和珅,其贪黩为古今所无。内外官吏,都不得不用贿赂去奉承他。于是上官贪取于下属,下属诛求于小民,至其末年,内乱就一发而不可遏了。(P172)

“国于天地,必有与立。”清朝历代的君主,对于种族的成见,是很深的。他们对于汉人,则提倡尚文。一面表章程、朱,提倡理学,利用君臣的名分,以箝束臣下。一面开博学鸿词科,屡次编纂巨籍,以牢笼海内士大夫。但一面又大兴文字之狱,以摧挫士气。乾隆时,开四库馆,征求天下的藏书,写成六部,除北京和奉天、热河的行宫外,还分置于江、浙两省。看似旷古未有的盛举,然又大搜其所谓禁书,从事焚毁。据当时礼部的奏报,被焚的计有五百三十八种,一万三千八百六十二卷之多。(P173)

===========

圣祖是康熙,世宗是雍正,高宗是乾隆。

无艺:①没有准则、法度:用人~。
        ②没有限度:贪贿~。

===========

《中国史》——吕思勉著——上海古籍出版社,2006,7

中国史

Feb 24, 2009

3ds Max failed to initialize properly

好长时间没有做FYP了。今天摆弄了一会儿XNA,需要从3ds Max导入一个3d模型,但是遇到了问题,打不开Max了。跳出一个如下的dialog box。


真是烦呢!

上次也遇到一个类似的问题而打不开Max,但是那个好像是Comodo防火墙的问题,我卸了Comodo问题也就解决了。这次,……

Google了一下这个问题,好多相同遭遇者啊!回答问题的人却很少~

有很多人说是Windows的问题,建议重装系统!(竟然这样建议~)。也有人提到了visual studio 2005.我昨天刚刚把VS2005卸掉的啊——因为我把XNA升级到了3.0,电脑中已有VS2008,所以我觉得2005是多余的了,就把它卸掉了。没成想……

但是,到底是什么原因导致如此,我还不清楚。现在先玩玩XNA,有空了再搞Max吧。

Feb 18, 2009

用syntaxhighlighter在Blogger语法高亮

早就想要在blog上实现codes的syntax highlighting,但是总是不当回事儿,就这么拖着。今天新建Blogger的blog,想到以后主要记些关于编程国学的东西,代码是少不了的,所以就做了一些关于这个的工作。

网上有现成的工具,我google了一下,用的是Google Code中alex.gorbatchevsyntaxhighlighter,按照Abhishek Sanoujam的这篇blog设置的。

1.从syntaxhighlighter的project home下载它。解压缩后可以看到文件夹、文件如下:
+---Scripts
¦ clipboard.swf
¦ shBrushCpp.js
¦ shBrushCSharp.js
¦ shBrushCss.js
¦ shBrushDelphi.js
¦ shBrushJava.js
¦ shBrushJScript.js
¦ shBrushPhp.js
¦ shBrushPython.js
¦ shBrushRuby.js
¦ shBrushSql.js
¦ shBrushVb.js
¦ shBrushXml.js
¦ shCore.js
¦
+---Styles
¦ SyntaxHighlighter.css
¦
+---Uncompressed
¦ clipboard.swf
¦ shBrushCpp.js
¦ shBrushCSharp.js
¦ shBrushCss.js
¦ shBrushDelphi.js
¦ shBrushJava.js
¦ shBrushJScript.js
¦ shBrushPhp.js
¦ shBrushPython.js
¦ shBrushRuby.js
¦ shBrushSql.js
¦ shBrushVb.js
¦ shBrushXml.js
¦ shCore.js
Uncompressed这个文件夹何用我不清楚,我用到的是另外两个。从Scripts文件夹里可以看出,syntaxhighlighter支持的语言包括C++、C#、Java、PHP等12种(不错,够我用的啦)。

2.上传文件夹Scripts和Styles里的共15个文件到网上,Google Pages不能用了,所以我用的是yahoo的GeoCities。(Notes:其实也用不到所有的文件,Scripts文件夹中除了clipboard.swf和shCore.js,其他的文件根据各自需要上传就行了,像我不做关于Ruby、Delphi、Python方面的东西,相应的三个文件shBrushRuby.js、shBrushDelphi.js和shBrushPython.js我就没有上传。

3.修改Blogger的模板,这个在Blogger的“布局->修改HTML”中完成。
首先,在<head>这个tag后面添加如下:

上面的%Path%应该是相应的你上传的各个文件的地址。
然后,在</body>这个tag之前加入一下几行代码:

保存模板。

4.现在可以开始编辑新blog了。在你的codes前后加上<pre>或者<textarea>tag,设置它的name为code,class为相应的语言就行了。如下:

Notes:Java, C++ or C#的时候用<pre>tag;xml和html的时候最好用<textarea>,因为这个时候有<和>。

测试 syntaxhighlighter


import java.math.BigInteger;
import java.security.SecureRandom;

public class Rsa {
private BigInteger n, d, e;

public Rsa(int bitlen)
{
SecureRandom r = new SecureRandom();
BigInteger p = new BigInteger(bitlen/2, 100, r);
BigInteger q = new BigInteger(bitlen/2, 100, r);
n = p.multiply(q);
BigInteger m = (p.subtract(BigInteger.ONE )).multiply(q.subtract(BigInteger.ONE ));
e = new BigInteger("3");
while(m.gcd(e).intValue()>1)
e = e.add(new BigInteger("2"));
d = e.modInverse(m);

System.out.println("P: "+p);
System.out.println("q: "+q);
System.out.println("m: "+m);
System.out.println("n: "+n);
System.out.println("d: "+d);
System.out.println("e: "+e);
}

public BigInteger encrypt(BigInteger message)
{
return message.modPow(e, n);
}

public BigInteger decrypt(BigInteger message)
{
return message.modPow(d, n);
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
BigInteger message = new BigInteger("1234567890");
//BigInteger ciphertext;
//System.out.println(message.intValue());

Rsa rsa = new Rsa(100);
System.out.println(rsa.encrypt(message)+"\n");
System.out.println(rsa.decrypt(rsa.encrypt(message)).intValue());
}

}