这个空间的提供商说提供ssh访问,但是需要额外申请,那就申请吧,提交之后一直没有反应,可能是我填写的理由不够充分。不过既然有权限执行perl脚本,那想必我的账户已经具有执行一些shell命令的权限了,只不过他们没有给我提供远程进行ssh的方式罢了。但如果使用perl写一段cgi脚本,提供一个输入框,输入需要执行的命令,直接通过perl调用系统命令,是不是就能够实现一个简单的shell了?下面是这段perl脚本[perl]#!/usr/bin/perluse CGI qw(:all);print header(),start_html("a simple shell");print "<pre>n";if (param("cmd")){ $c = param("cmd"); print `$c`;}print "</pre>n";print start_form(-name=>"fm"), textfield("cmd","",120), end_form;print "<script>document.fm.cmd.value='';document.fm.cmd.focu...

HTML设计之初,没有考虑到数学公式排版,所以要想在里面添加一些比较复杂的符号就没有标签可以使用,唯一的折衷方法是,利用图片来代替显示,但是这样实在是麻烦。这种不足很多人都意识到了,W3C的一个recommendation,MathML,就是针对html缺乏数学公式支持提出的,刚发现的时候,我欣喜若狂,没过多久就变成失望了,缘故是,MathML需要浏览器的渲染支持,大部分用户还在使用万恶的IE6,就是现在支持的浏览器,比如最新版的firefox,渲染效果并不好,本来应该很优美的公式,看起来只是大致正确表示出来而已。MathML最大的弊端是,一个很简单的公式,用标签写起来要浪费一大堆文本,混杂在一起,没有第三方辅助工具的话,很难编辑和阅读。我一直想,如果能在HTML里面嵌入latex该有多好啊,从语法角度来看,成为W3C标准是没有指望了,但是就像flash一样,能够作为一个插件成为事实上的标准也行啊,这个目标看起来同样很遥远,仔细想想,有几个用户会在web页面上写科学公式呢?唯一的做法是,把latex作为在服务器端处理的脚本,客户端浏览器请求的时候,自动执行处理,生成相应的图片,就等同于服务器端的php,asp之类的脚本一样,如此就完全不用考虑到不兼容的问题。这种想法很容易被人想到,而且早就有人实现了,这里有一个页面,可以动态生成latex的图片。wordpress也有相应的支持,提...

我喜欢用命令行做一些事情,写一篇文章,发布到这个博客,也是一样。最好的方法应该能够使用文本编辑器写好,然后从命令行直接发布,比如[plain light="true"] blog hello.txt blog -m hello.txt blog -d post_id[/plain]-m 是修改,-d是删除,这样就方便多了wordpress的设置中有个Remote Publishing项,支持atom publishing protocol和xml-rpc,我对atom不太熟悉,不过xml-rpc以前用过,便想试一试,python很适合这种实验性质的程序。wordpresss是用xmlrpc.php文件支持远程调用的,看了看这个文件,在客户端写了几个脚本尝试一下,感觉挺简单的,就写了下面段代码,丑是丑了点儿,不过能满足我的需求就够了。[python]import sys;import xmlrpclib;class Blog: """just a simple interface for xmlrpc call""" def __init__(self,url,name,pwd): self.name = name; self.pwd = pwd; self.sv = xmlrpclib.ServerProxy(ur...

对程序员来说,代码加亮的需求很迫切。心想既然wordpress这么成熟了,肯定会有语法加亮的模块,于是便google了一把,果不出所料,找到了一个叫SyntaxHighlighter Evolved的插件,在本地机器上试了试,貌似用起来还不错,便装了上来。服务器好像不支持php直接写文件,安装的时候,wordpress提示填入ftp账户,proceed就成功了,不过要这样的话,图片不知道能不能上传。下面放几段代码测试一下C语言[c highlight="4"]#include <stdio.h>int main(){ printf("hello worldn"); return 0;}[/c]perl[perl]while(<>){ s/^/hello world/g; print;}[/perl]貌似支持的语言不少,可惜的是,没有lua和mathematica,而这两种语言我恰好还经常使用~google了一下,找到了mathematica语法的.js文件,我想,也许直接拷到相应的文件夹就行了吧,找了找,里面有一个third-party-brushes的文件夹,拷了过去,居然不行,看了看里面的readme文件,给出了一个怎么添加new brush的链接,懒得仔细看了,改天有空再搞搞吧。

Bezier曲线很常用,一般2D绘图软件里都有。比如photoshop,flash之类。
它背后的原理简单的超乎想象,体现了数学的美妙。

先从简单的开始,两个点之间进行线性插值。

很容易理解,可以得到
[latex] B(t)=P_0+t(P_1-P_0)=(1-t)P_0+tP_1,tin[0,1] [/latex]
当然这是最简单的情形,如果扩展到三个点该如何插值呢?

从上面图片上可以看到,可以分成三步,从P0到P1进行上面的一维情形,得到点Q0,再从P1到P2,得到Q1,那么就有
[latex]Q_0=(1-t)P_0+tP_1[/latex]
[latex]Q_1=(1-t)P_1+tP_2[/latex]
然后再对Q0和Q1进行线性插值,得到点B
[latex]B=(1-t)Q_0+tQ_1=(1-t)^2P_0+2t(1-t)P_1+t^2P_2[/latex]
t从0到1增加,就得到了一条曲线,如下图

同样可以推广到四个点的情形,这样的曲线中,t的最高幂是三次。三次样条曲线用的最多,因为它提供了足够的可控制性和满足大部分场合的精度,同时又保持了相对的简单。
依照上面的方法,可以得到三次的情形
[latex]B(t)=(1-t)^3P_0+3(1-t)^2tP_1+3(1-t)t^2P_2+t^3P_3,tin[0,1][/latex]
这个时候可以注意到...