2008-03-25

对联:从古到今从今复古 既是钥匙又是锁 横批:翻墙有术

发布一个翻墙的小工具:

点这里

或者:
新开一个浏览器窗口,在浏览器地址栏输入:
javascript:var w = prompt('请输入');w.split('').reverse().join('');
按回车

具体使用方法:
1.加密要翻墙的内容(从今复古)
在提示的输入框中输入 需要翻墙的敏感内容 返回逆序的敏感内容 这些逆序的敏感内容 不出意外是可以翻墙的

将这些逆序的内容发布到 qq群 论坛 博客之类的地方 再附送一把钥匙 (复制这个钥匙链接 钥匙 放在发送的内容里)
其实 只要阅读的人学习一下古人的阅读习惯也是可以看懂的

2.解密已过墙的内容(从古到今)

方法和工具都和加密一样 只不过输入那些qq上 论坛里 博客上看到的逆序内容
返回的结果就是符合现代人阅读习惯的 从左到右式了

3.为了以后方便使用 收藏为书签
收藏刚才打开的那个页面(地址栏里是javascript:var w = prompt('请输入');w.split('').reverse().join('');的那个页面)
或者在这个链接上点击鼠标右键-添加到收藏夹

------------------------------------
美中不足  没法换行

[推荐] 火狐上访问 维基百科 最省事的的插件 Gladder

http://gneheix.googlepages.com/gladder

虽然我还是更习惯用Tor 加上一堆自己的配置

但对大多数人来说 那太琐碎了

Gladder的确是最好的选择

感谢作者的努力!

2008-03-24

大声疾呼:请中国的Tor中继服务提供者仅把自己设置为"中间人"

因为你是在中国 你是在互联网的伟大长城里

如果你有心作为Tor服务器(也就是被翻译成中继的东东)
切记将自己设置为中间人 也就是不允许任何客户端把你作为Tor网络的出口 否则....
就好像我要挖地道越狱 好不容易挖通了 却发现是在另一间监狱 : (

具体设置方法如下(假设您使用Vidalia):

设定->中继->Tor 网络中继->服务策略->清除所有的选择(也就是一个也别选中)->保存


2008-03-13

可以一直to下去

JavaScript里有趣的toString,可以一直to下去

>>> Object.toString.toString.toString.toString.toString.toString.toString.toString.toString.toString()
"function toString() { [native code] }"

JavaScript prototype 彻底研究

在firebug里面信手拈来:


Function.toString()

返回如下:

"function Function() { [native code] }"

Obeject.toString()
"function Object() { [native code] }"

有时间去看看JavaScript运行时环境(比如rhino) 看看那些native code到底是怎么回事

看的很清楚 这些东东都是function,但他们是内置function,有文章说JavaScript其实是函数式语言Lisp披了C语法的皮

这些内置function 和 你在JavaScript里面写的function有什么不同呢?

这些内置function和你定义的function一样都有prototype属性,而prototype属性在经过new后便copy到目标对象上 这是prototype之所以叫prototype(原型)的原因
所不同的是:
1.这些内置function的prototype的类型是多样的,而你定义的function的prototype就是个Object对象
(当然你可以将你定义的function的prototype赋值为其他什么东西,但会有些诡异的事情发生:
>>> var afn = function(){}; afn.prototype = function(){}; var affn = new afn(); new affn()
affn is not a constructor
undefined
>>> var afn = function(){}; afn.prototype = function(){}; var affn = new afn(); affn.prototype
Object
)

2. 这些内置function的返回值往往和其prototype有某种近似,所以直接调用这些内置function和new这些内置function可能得 到相同的东西或者近似的东西(大概是JavaScript的作者为了更加方便),而你定义的function不会刻意追求返回值和其prototype有 某种近似

>>> (function yourFunction(){}).prototype
Object


>>> Function
Function()
>>> Function()
anonymous()
>>> Function().toString()
"function anonymous() { }"
>>> Function.prototype.toString()
"function () { }"
>>> Function.prototype.prototype
Object

>>> Date
Date()
>>> Date()
"Thu Mar 13 2008 20:42:14 GMT+0800"
>>> Date.prototype
Invalid Date
>>> var d = new Date(); typeof(d);
"object"
>>> var d = Date(); typeof(d);
"string"


>>> Number
Number()
>>> Number.prototype
0     //0是对象
>>> Number()
0     //0是简单类型数字0
>>> new Number
0     //0是对象
>>> var n = Number(); typeof(n);
"number"
>>> var n = new Number(); typeof(n);
"object"

>>> Array
Array()
>>> Array()
[]
>>> Array.prototype
[]
>>> new Array
[]
>>> new Array()
[]

比较奇特的是Image:

>>> Image
function()
>>> Image.toString()
"[Image]"
>>> Image()
Image is not a function
undefined
javascript: with ... (line 1)
>>> new Image()
<img>
>>> new Image
<img>
>>> Image.prototype
[xpconnect wrapped native prototype] ELEMENT_NODE=1 ATTRIBUTE_NODE=2 TEXT_NODE=3


-------------------------------------------------------------------------------------------------------------------------------------------------------------

new (Function())
VS new Function() VS Function()


>>> var foo4 = new Function('var temp = 100; this.temp = 200; return temp + this.temp;'); foo4;
anonymous()

>>> var foo4 = Function('var temp = 100; this.temp = 200; return temp + this.temp;'); foo4;
anonymous()

>>> var foo4 = new(Function('var temp = 100; this.temp = 200; return temp + this.temp;')); foo4;
Object temp=200

由前面的说明可知 Function的prototype还是个function (而且是个真正的匿名function)  而Function()的返回值也是个function (是叫做
匿名(anonymous)的实名function) ,所以new和直接调用Function() 作用是一样的

------------------------------------------------------------------------------------------------------------------------------------------------------------

对于new我的理解:


对于Class式面向对象语言 new 是开辟内存空间 根据Class定义创建对象

而对于prototype式的面向对象语言JavaScript new的作用主要是copy function中的prototype对象到被创建的对象中,

取得一个img的原始大小

var img1 = new Image();
img1.src = 'graphics/diagram.jpg';
img1.naturalWidth;

2008-03-08

诡异的www.google.com无法访问

中国电信在搞什么鬼?

在宿舍ping的通 却访问不了 宿舍是深圳电信ADSL
而奇怪的是 同一时刻 在公司就可以访问
我观察到 公司和宿舍 www.google.com 的ip有互换的现象 但前后公司都可以访问 宿舍都不能访问 请看下面的ping记录

宿舍:

C:\Documents and Settings\Andrew>ping www.google.com

Pinging www-china.l.google.com [64.233.189.99] with 32 bytes of data:

Reply from 64.233.189.99: bytes=32 time=52ms TTL=243
Reply from 64.233.189.99: bytes=32 time=69ms TTL=243
Reply from 64.233.189.99: bytes=32 time=46ms TTL=243
Reply from 64.233.189.99: bytes=32 time=70ms TTL=243

Ping statistics for 64.233.189.99:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 46ms, Maximum = 70ms, Average = 59ms

C:\Documents and Settings\Andrew>ping www.google.com

Pinging www-china.l.google.com [64.233.189.104] with 32 bytes of data:

Reply from 64.233.189.104: bytes=32 time=25ms TTL=243
Reply from 64.233.189.104: bytes=32 time=47ms TTL=243
Reply from 64.233.189.104: bytes=32 time=24ms TTL=243
Reply from 64.233.189.104: bytes=32 time=76ms TTL=243

Ping statistics for 64.233.189.104:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 24ms, Maximum = 76ms, Average = 43ms

公司:
C:\Documents and Settings\AndrewGao>PING www.google.com

Pinging www-china.l.google.com [64.233.189.104] with 32 bytes of data:

Reply from 64.233.189.104: bytes=32 time=9ms TTL=243
Reply from 64.233.189.104: bytes=32 time=9ms TTL=243
Reply from 64.233.189.104: bytes=32 time=10ms TTL=243
Reply from 64.233.189.104: bytes=32 time=10ms TTL=243

Ping statistics for 64.233.189.104:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 9ms, Maximum = 10ms, Average = 9ms

C:\Documents and Settings\AndrewGao>PING www.google.com

Pinging www-china.l.google.com [64.233.189.99] with 32 bytes of data:

Reply from 64.233.189.99: bytes=32 time=9ms TTL=243
Reply from 64.233.189.99: bytes=32 time=10ms TTL=243
Reply from 64.233.189.99: bytes=32 time=10ms TTL=243
Reply from 64.233.189.99: bytes=32 time=9ms TTL=243

Ping statistics for 64.233.189.99:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 9ms, Maximum = 10ms, Average = 9ms

2008-03-03

得便宜处失便宜 贪什么

看看"贪"字

上面是今 下面是贝

为眼前的利益迷惑 就是贪

佩服造字者 高度抽象和概况

所见所闻所思