[Mac OS X]Lion编译安装mod_python

期望情况是下载好mod_python后执行编译并安装就能够搞定。

但是事实却不尽人意,在Mac OS X Lion可能会遇到下面这个错误:

说明connobject.c这个文件中142行有错误,我们找到并打开它

将142行处的

改为

-EOF-

简单静态资源分发脚本

网站静态资源太多的情况下有时候我们需要分成多个域名来请求这些静态资源。
如原来我们使用的

http://static.ioio.name/upload/hello.jpg

改成随机的使用

http://s1.ioio.name/upload/hello.jpg
http://s2.ioio.name/upload/hello.jpg
http://s3.ioio.name/upload/hello.jpg

这时候我们需要将s1/s2/s3服务器上的文件跟源服务器static同步。以使得他们都是访问的static上同名文件的拷贝。

这里我写了一段简单的php脚本采用溯源的策略来更新这些文件,当s1/s2/s3服务器上不存在该文件的时候,就向源服务器(static)请求该文件,并且保存在本地cache一份以便后续的相同请求使用。

1.在s1/s2/s3服务器上添加名为cdn.php的文件,内容如下:

这段脚本会将读取到的文件存在本地的save文件夹里,需要save文件夹的读写权限。

2.配置.htaccess文件,添加一行记录:

这样配置后s1/s2/s3就能按照static的路径规则访问到相同的文件了。在实际的生成环境,可能会需要更复杂的cache策略,这里就不深入讨论。
-EOF-

Object-Oriented JavaScript笔记(一)

Object-Oriented JavaScript 笔记
Object-Oriented JavaScript笔记(一)
Object-Oriented JavaScript笔记(二)
Object-Oriented JavaScript笔记(三)
Object-Oriented JavaScript笔记(四)
Object-Oriented JavaScript笔记(五)
Object-Oriented JavaScript笔记(六)
Object-Oriented JavaScript笔记(七)

第二章 基本数据类型、数组、循环和条件语句

变量是大小写敏感的

基本类型

基本类型(5类) Number、String、Boolean、Undefined、Null
除了基本类型外的,都是object,特例
>>> typeof null
“object”

Infinity是number类型的
>>> typeof Infinity
“number”

JS中最大的数是1.7976931348623157e+308 最小的分数是5e-324

非0数除以0得到Infinity,0除以0得到NaN
1/0 = Infinity
0/0 = NaN

Infinity 与非NaN运算值为Infinity
Infinity – 1 = Infinity

NaN 与任何number运算值为NaN

一个String与一个变量做除’+'(加)以外的运算,都会转换成做数学运算
>>> var s = ‘3’; s = 3 * s; typeof s;
“number”

>>> var s = ‘3’; s = 3 + s; typeof s;
“string”

两次逻辑非操作会做强制布尔转换。大部分情况都是为真,除非:
1.空字符串 ”
2.null
3.undefined
4.数 0
5.数 NaN
6.布尔值 false

利用惰性求值(Lazy Evaluation)做保护伞并不是处处受用
var mynumber = mynumber || 10;

如果预先定义的 mynumber =0 ,这里就不是我们所预料的了。

=== 值与类型比较
!== 不含类型转换的不等于比较

NaN不与任何值相等,包含其自身
>>> NaN == NaN
false

null值并不是由js环境给分配的,而是由代码给分配的
>>> var value = null;
>>> typeof value
“object”

undefined与null还是大差别虽然微小,但是不容忽视
>>> var i = 1 + undefined;
>>> i
NaN

>>> var i = 1 + null;
>>> i
1

这种差异发生在类型转换上
>>> var i = 1*undefined;
>>> i
NaN

>>> var i = 1*null;
>>> i
0

数组

数组新添加元素索引跟数组最大索引之间有空隙的话,会被undefined值填充
>>> var abc = [1];
>>> abc[3] = 5;
>>> abc
[1, undefined, undefined, 5]

删除数组中的元素并不会改变数组大小,仅将删除位置为undefined
>>> var a = [1, 2, 3];
>>> delete a[2];
>>> a
[1, 2, undefined]

可以使用数组下标的形式访问字符串
>>> var s = ‘one’;
>>> s[0]
“o”

循环和条件语句

通常情况下我们会把变量放if条件中做检查,但这样做并不一定妥当,变量可能存在但值为false
>>> var result = ”;>>> if (somevar){result = ‘yes’;}
somevar is not defined
>>> result;
“”
一种更好的方式
>>> if (typeof somevar !== “undefined”){result = ‘yes’;}
>>> result;
“”

default是可以放在switch里任意位置的,并不一定是最后

-EOF-

[CentOS]如何清空登陆历史记录(wtmp/btmp)?

在Linux系统中,可以使用last命令查看用户登陆成功的记录(Last Logged In Users);以及可以用lastb查看登陆失败的记录(Bad Login Attemps Log)。它们以文件形式(wtmp/btmp)存在/var/log/目录下,时间长了不免会变得越来越大,这时候我们需要做一些清理工作。

1.备份wtmp/btmp

2.清空wtmp/btmp
使用命令

或者

上面的例子为清空登陆成功记录,将wtmp改成btmp即清空失败记录。
-EOF-

获得git版本库地址

有时候我们需要快速的确定当前版本库remote服务器的路径,以确定是否pull或push。
像svn可以使用:

hg可以使用:

从而快速的获得远端服务器地址.

而git也不例外,它也有相关的命令,只是比较复杂一点:

使用这个命令便可获得git库地址,虽然长点但有总比没有好。
-EOF-