文章
thetruthaboutsessions 择译
cookie get parameter cookie+fingerprint generated by user agent
cookie get parameter cookie+fingerprint generated by user agent
web.py0.3 版本 tutorial 示例
我承认我看中文了。。。中文安装指南导向的是 web.py 0.2 版本的 tutorial 翻译,版本有点旧,且 0.3 与 0.2 的 tutorial 不兼容。 首先是下载压缩包,然后解压,最后 sudo ./setup.py (我用的是 ubuntu ) 示例代码如下,主要是 run 方法的方式有点不同。 好简洁的一个 web app,感觉比 java servelet 的一大堆概念要清晰多了。
我承认我看中文了。。。中文安装指南导向的是 web.py 0.2 版本的 tutorial 翻译,版本有点旧,且 0.3 与 0.2 的 tutorial 不兼容。 首先是下载压缩包,然后解压,最后 sudo ./setup.py (我用的是 ubuntu ) 示例代码如下,主要是 run 方法的方式有点不同。 好简洁的一个 web app,感觉比 java servelet 的一大堆概念要清晰多了。
apache-tomcat-6.0.26 的 cgi 配置过程
这东西折磨我太久了,写篇笔记。 Apache 的目录很好认,我下的是 zip 绿色版,解压开就看见 running 这个说明文件了,建议大家读读。 conf 目录是放置配置文件的,bin 则是可执行文件的位置,只需双击 startup.bat,即可启动 Apache。 要运行 cgi,主要是改两个文件,一个是 web.xml,一个是 context.xml。 context.xml 主要是改这么一行: 直接在 context 后加上 privileged 就可以了,用于放行可执行文件。 …
这东西折磨我太久了,写篇笔记。 Apache 的目录很好认,我下的是 zip 绿色版,解压开就看见 running 这个说明文件了,建议大家读读。 conf 目录是放置配置文件的,bin 则是可执行文件的位置,只需双击 startup.bat,即可启动 Apache。 要运行 cgi,主要是改两个文件,一个是 web.xml,一个是 context.xml。 context.xml 主要是改这么一行: 直接在 context 后加上 privileged 就可以了,用于放行可执行文件。 …
MatlabCell 功能
最近完成模式分类的作业,需要大量使用 matlab, 期间发现了一个问题,是 matlab 代码的复用程度。 在面向过程编程里, 基本的复用单位是函数,程序的复杂度籍此下放到函数的接口上。设计好函数间的接口,基本上就成功了一半。在面向对象编程里, 基本的复用单位是对象,对象使得数据具有了一定程度的自维护。而在 matlab 里, 我很长时间都没有找到方向,因为我搞不清楚复用的单位是什么。 matlab 中,基本的单位是矩阵,针对矩阵系统有一大堆的函数供你调用。但是,想自己写程序还是有一定的麻烦 …
最近完成模式分类的作业,需要大量使用 matlab, 期间发现了一个问题,是 matlab 代码的复用程度。 在面向过程编程里, 基本的复用单位是函数,程序的复杂度籍此下放到函数的接口上。设计好函数间的接口,基本上就成功了一半。在面向对象编程里, 基本的复用单位是对象,对象使得数据具有了一定程度的自维护。而在 matlab 里, 我很长时间都没有找到方向,因为我搞不清楚复用的单位是什么。 matlab 中,基本的单位是矩阵,针对矩阵系统有一大堆的函数供你调用。但是,想自己写程序还是有一定的麻烦 …
浅论函数式语言的环境,兼谈闭包
函数式语言与命令式语言的一个根本不同,就是下面这个两个数交换的例子居然是正确的: a=1 b=2 a,b=b,a print a ,b 输出 2 1 究其原因,是环境造成的。什么是环境呢?通俗点讲,你可以将环境看成是一个栈,栈单元的内容就是各个变量的值。可见,上述 a 和 b 赋值时的环境均是 a=1,b=2。再看一个 lisp 的例子: 设环境 r 为 r=( (X.(A B)) (Y.(C D))) 则 r((EXPR (X Y) (CONS X Y)) (CDR Y) (CAR X)) …
函数式语言与命令式语言的一个根本不同,就是下面这个两个数交换的例子居然是正确的: a=1 b=2 a,b=b,a print a ,b 输出 2 1 究其原因,是环境造成的。什么是环境呢?通俗点讲,你可以将环境看成是一个栈,栈单元的内容就是各个变量的值。可见,上述 a 和 b 赋值时的环境均是 a=1,b=2。再看一个 lisp 的例子: 设环境 r 为 r=( (X.(A B)) (Y.(C D))) 则 r((EXPR (X Y) (CONS X Y)) (CDR Y) (CAR X)) …
最近要跟函数式语言干一仗!
本来打算先征服 ML(meta language)的,结果可耻地失败了,并且归结为译者水平太低。 然后拿了本《Lisp 语言》回来看,语言很平实,的确比较适合我,可惜作者马希文教授已经作古了,天妒英才啊。 但是看完表之后还是卡住了,思维的转变的确不是一朝一夕的事。不过马教授比 ML 作者出色的地方,是开卷即讲述 s 表达式的概念,教你分清原子与 s 表达式。然后介绍简写法,流畅地引入了表的概念。而且表的描述非常生动(没有右支是非 nil 原子结束的 s 表达式),接下来的 …
本来打算先征服 ML(meta language)的,结果可耻地失败了,并且归结为译者水平太低。 然后拿了本《Lisp 语言》回来看,语言很平实,的确比较适合我,可惜作者马希文教授已经作古了,天妒英才啊。 但是看完表之后还是卡住了,思维的转变的确不是一朝一夕的事。不过马教授比 ML 作者出色的地方,是开卷即讲述 s 表达式的概念,教你分清原子与 s 表达式。然后介绍简写法,流畅地引入了表的概念。而且表的描述非常生动(没有右支是非 nil 原子结束的 s 表达式),接下来的 …
RBF、K-NN 与 Decisiontree
要做一个 classifier,的确不易。面对需要训练的 classifier,是否 training error 越少越好呢?显然不是,因为虽然 training error 降低了,但 test error 不见得就会降低,实际表现为一个拐点。如下图: 为了平衡 error 的权重,我们引入了额外的函数 lambda*,训练效果由 error 和 lambda* 共同评价。下面讨论一下 lambda 的取值: (存疑) 因此,我们采取多个函数综合评估的方式进行,即 RBF(radial …
要做一个 classifier,的确不易。面对需要训练的 classifier,是否 training error 越少越好呢?显然不是,因为虽然 training error 降低了,但 test error 不见得就会降低,实际表现为一个拐点。如下图: 为了平衡 error 的权重,我们引入了额外的函数 lambda*,训练效果由 error 和 lambda* 共同评价。下面讨论一下 lambda 的取值: (存疑) 因此,我们采取多个函数综合评估的方式进行,即 RBF(radial …
java 路径设置
这个问题简直是痛中之痛,为什么如此现代,标榜人性化的 java 居然会让我等在环境变量的设置上反复煎熬?! 在 path 变量中 (没有则新建),添加 新建 CLASSPATH 变量 , 添加 文件名保存为 Hello.java,当前目录进入命令行,输入命令: javac Hello.java java Hello 今天花了差不多一个小时,正常编译通过,就是因为敲了 “java Hello.class”,所以一直报错 could not find main class program will …
这个问题简直是痛中之痛,为什么如此现代,标榜人性化的 java 居然会让我等在环境变量的设置上反复煎熬?! 在 path 变量中 (没有则新建),添加 新建 CLASSPATH 变量 , 添加 文件名保存为 Hello.java,当前目录进入命令行,输入命令: javac Hello.java java Hello 今天花了差不多一个小时,正常编译通过,就是因为敲了 “java Hello.class”,所以一直报错 could not find main class program will …
最长公共子序列 --- 从动态规划说起
我比较不长记性,你要我马上写一个动态规划给你是比较有难度的。在我眼里,动态规划就是一个优化程序的手段,适合于有大量重复子计算问题的时候用,原理就跟缓冲有点像,把需要重复计算的东西都放进内存里,需要的时候通过索引之类的东西直接查询,节省重新计算的时间。 下面来看一幅图: 假设要从 A 到 H,在这个带权图中求最短路径。那么有: min(H)=min(min(F)+FH,min(G)+GH) min(F)=min(min(D)+DF,min(E)+EF) …
我比较不长记性,你要我马上写一个动态规划给你是比较有难度的。在我眼里,动态规划就是一个优化程序的手段,适合于有大量重复子计算问题的时候用,原理就跟缓冲有点像,把需要重复计算的东西都放进内存里,需要的时候通过索引之类的东西直接查询,节省重新计算的时间。 下面来看一幅图: 假设要从 A 到 H,在这个带权图中求最短路径。那么有: min(H)=min(min(F)+FH,min(G)+GH) min(F)=min(min(D)+DF,min(E)+EF) …
JavaScript 中的闭包
一看到闭包这个词,我就会想起线性代数中的封闭空间,也就是说,这个空间中的所有向量,无论经过何种运算,最终结果还是会落在该空间中。那么 JavaScript 中会不会也是类似的概念呢? 我们来看一个定义: 所谓闭包,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。 这说明了,JavaScript 中的闭包是包含了上下文的函数,也就是说,这个函数的作用基础,是它所处的环境,这是不能超越的,跟线性代数是不是有一点似曾相识的感觉呢? 换个角度看, …
一看到闭包这个词,我就会想起线性代数中的封闭空间,也就是说,这个空间中的所有向量,无论经过何种运算,最终结果还是会落在该空间中。那么 JavaScript 中会不会也是类似的概念呢? 我们来看一个定义: 所谓闭包,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。 这说明了,JavaScript 中的闭包是包含了上下文的函数,也就是说,这个函数的作用基础,是它所处的环境,这是不能超越的,跟线性代数是不是有一点似曾相识的感觉呢? 换个角度看, …
StandardML 语言(一)
在 Windows 平台下推荐使用 Moscow ML 解释器,主要是安装比较方便,其他有 Standard ML of New Jersey, 安装后需要设置环境变量(即 bin 目录所在位置)。 要引用系统模块,请使用 load “module”, 例如: -load “Math”; -Math 4.0; 函数名后需要空一格。 从 C/C++ 语言转来的同学,请多多练习 andalso 与 orelse,另外,条件表达式 if E then E1 else E2 else 部分必须存在(即 …
在 Windows 平台下推荐使用 Moscow ML 解释器,主要是安装比较方便,其他有 Standard ML of New Jersey, 安装后需要设置环境变量(即 bin 目录所在位置)。 要引用系统模块,请使用 load “module”, 例如: -load “Math”; -Math 4.0; 函数名后需要空一格。 从 C/C++ 语言转来的同学,请多多练习 andalso 与 orelse,另外,条件表达式 if E then E1 else E2 else 部分必须存在(即 …