26
2011

IPv6 什么时候用完?

N年前开始就断断续续的有IPv4即将耗尽、要尽早多占点IPv6地址之类的新闻。这些新闻每次在CB发出,无不是被冷嘲热讽、群起而攻。

在“狼来了”喊了多年之后,IPv4终于在年初分配完毕,IPv6也将在之后接过IPv4的担子,支撑互联网的运转。IPv6号称可以给地球上每一粒沙子分配地址,这已经是很大的一个数字,但是只有这样而已吗?

维基百科上的地球质量是5.9742e+27(科学记数法,表示5.9742乘10的27次方)克,IPv6使用128位二进制码来表示每一个地址,最多可以有2的128次方个地址,约等于3.402823669209385e+38(windows计算器计算结果)。

通过简单计算可以知道,在地球上如果要将IPv6地址分配完,那么每一个地址只能标识1.755659587670627e-11克的物质,约等于一个细胞的质量。也就是说,如果不发展外太空,那么在将设备做到细胞大小之前IPv6都是够用的。

最后,虽然IPv4地址已经分配完,但并不是所有的地址都在使用中,而且还有192的局域网地址可以用。SO,IPv6还需要等待。。。

0
19
2011

打打鱼,晒晒网,更新下在线手册的模板

重新写了后台处理模块,目录页的模板。下面是新旧目录页的截图,左边是重写的,右边是以前写的。

  1. 兼容IE9/IE6/Opera/Firefox3/Firefox4/Chromium13(只列出了实际测试过的浏览器)。
  2. 整体的结构还是分成左右两部分,不同的是原来的目录宽度占窗口的20%,现在则改成固定的像素。
  3. 在目录和内容中间拖动鼠标可以改变目录的宽度,点击上面的三角形则可以隐藏/显示目录。
  4. 目录高度适应浏览器高度,当目录的内容大于所占空间时在目录上显示滚动条。
  5. 连续点击“搜索目录”按钮可以依次定位搜索到的目录项。
  6. 内容页面载入时定位目录到相应的位置,需要时自动展开目录。

点击访问手册站

0
10
2011

翻墙利器,Proxy Auto Config

Tags:

使用 Google 搜索时总是很容易碰触到 GFW 脆弱的神经,解决这个问题的办法是使用代理服务器。对于 Chrome 和 Firefox 来说,有大把的扩展来设置代理服务器,其它浏览器呢?

其实主流的浏览器都支持一种智能的代理设置方式:Proxy Auto Config。pac 是一个 JavaScript 脚本文件,它提供了一个函数FindProxyForUrl,根据浏览器访问的 url 返回不同的代理地址。FindProxyForUrl 可以返回下面三种形式的代理:

  • DIRECT // 不使用代理,直接访问
  • PROXY HOST:PORT // 使用代理,HOST为服务器地址,PORT为代理端口
  • SOCKS HOST:PORT //  使用SOCKS代理,同上

在网上找个代理服务器是简单的,也是很麻烦的。你总能找到大把大把的代理服务器列表,但是并不是全部都是有效的,实际上只有极少部分短期有效。于是有了各种 VPN 实现方案,比如 TOR。TOR 也不是很稳定,总要在使用和不使用代理间切换。

这时就可以让 FindProxyForUrl 返回代理列表,每个代理使用分号隔开。浏览器将依次使用代理服务器尝试访问每个链接,直到成功访问或者代理列表结束。比如 “PROXY 127.0.0.1:8118;DIRECT” 先尝试使用 TOR 访问目标,失败的话再尝试直接访问。

代理列表虽然可以解决服务器失效/不稳定的问题,但每一次尝试都要花费一些时间。为了减少花费的时间,你可以在 PAC 里对 URL 进行分析,对不同的域名、IP、内容返回不同的代理服务器。在 PAC 里除了正常的 JavaScript 函数外,还可以使用 PAC 特有的函数:

  • isPlainHostName(host); // host 为不包含域名的主机名时返回真(没有点号)
  • dnsDomainIs(host,domain); // host 为 domain 子域时返回真
  • localHostOrDomainIs(host,hostdom); // host 和 hostdom 相同或 host 为 hostdom 的主机名时返回真
  • isResolvable(host); // 尝试通过 DNS 解析 host,成功返回真
  • isInNet(host,pattern,mask); // host 的 IP 在指定范围内时返回真(先解析 host 的 IP 地址,再与 mask 做按位与计算,结果与 pattern 比较)
  • dnsResolve(host); // 解析 host,返回 IP 地址
  • myIpAddress(); // 返回本机 IP 地址
  • dnsDomainLevels(host); // 根据 host 包含点号数量返回域名层级
  • shExpMatch(str,shext); // 使用 shell 表达式对 str 和 shext 进行匹配
  • weekdayRange(); // 检查时间是否在指定范围(一周的第几天)
  • dataRange(); // 检查时间是否在指定范围(月、日)
  • timeRange(); // 检查时间是否在指定范围(时间)

除了常规的使用外,FindProxyForUrl 还可以返回一个无效的代理服务器来过滤广告、不安全网址等内容。

2
25
2011

Godaddy 优惠码,可升级、可续费

Tags:

今天收到个不错的优惠码,拿出来共享下。优惠 31%,可用于空间购买、续费、升级(只测试了这三样),有效期到3月31日。
SAVE 31% on your order!

Godaddy 的30%空间优惠码还是比较难找的。不像域名,30%只是个起点。

Godaddy 优惠码每日更新

1
十二
15
2010

GO,Robots – 光电对管

Tags:

光在均匀介质中以直线传播,遇到不同介质的时候则被吸收或反射或折射或直接穿过。不同波长的光在同一介质上的变化是不一样的,人的眼睛把接收到的不同波长的光识别为不同颜色,于是有了五光十色的世界。

同样的,机器人也可以通过接收识别光线来识别周围的环境。通常情况下,周围反射回来的光线受环境影响比较大。机器人一般自己发射光波,根据光波的反射的情况来识别。

RPR220是一种一体化反射型光电探测器。其发射器是一个砷化镓红外发光二极管,而接收器是一个高灵敏度,硅平面光电三极管。
塑料透镜以提高灵敏度;
内置的可见光过滤器以减小离散光的影响;
体积小结构紧凑。
它采用DIP4封装。发射器和接收器都有两根引出脚,其中长脚为正极,短脚为负极 。

如果不清楚引脚,可以使用万用表来检测。单向导通的是发光二极管,导通时红表笔接的是正极。接收的光电三极管则会随着环境而改变阻值,红表笔接集电极,黑表笔为发射极。


测试用的电路图。在实际连接的时候,R1我用600欧的电阻接到了VCC,R2用60k电阻,没有用R3。直接接到 Arduino 的模拟输入。VCC为+5v,流过二极管的电流约为8~10ma。

曾经提到过的五路光电探测板。其实就是五个上面电路图的并联,然后每个光电对管引出一条信号输出接到 Arduino 的模拟输入。


背面,非法拉了很多高架桥,一不小心就可能短路了(目前为止还没)。


圆孔座,用来接线。

照例有个测试程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void setup()
{
  pinMode(13,OUTPUT);
  // 模拟输入不用设置模式
  // Serial.begin(9600); // 初始化串口通信,没有数码管的时候可以把结果输出到电脑上
}
 
void loop()
{
  digitalWrite(ledPin,!digitalRead(ledPin));
  display2(analogRead(0)); // 读取模拟信号,并在数码管上显示
  // Serial.println(analogRead(0)); // 没有数码管的话可以在电脑上显示
  delay(100);
}
 
void display2(int i)
{
  // ...
}

最后看下运行的结果,接的是靠边悬空的光电对管。6mm是最佳测量距离,另外也可以接电压比较电路输出开关量。

0