15
2011

古风,竖排文字的实现

Tags:
<html>
<head>
<style>
<!--
div{
	float:right;
	width:0;
}
p{
	writing-mode:tb-rl;
	font-family:'@楷体';
	font-size:16px;
	-o-transform:matrix(0,1,-1,0,0,0);
	-webkit-transform:matrix(0,1,-1,0,0,0);
	-moz-transform:matrix(0,1,-1,0,0,0);
	transform:matrix(0,1,-1,0,0,0);
	-o-transform-origin:0 0;
	-webkit-transform-origin:0 0;
	-moz-transform-origin:0 0;
	transform-origin:0 0;
	_height:400px;
width:400px;
border:1px solid red;
}
-->
</style>
</head>
<body>
<div><p>
我希望庆国的人民都能成为不羁之民<br>
受到他人虐待时有不屈服之心<br>
受到灾恶侵袭时有不受挫折之心<br>
若有不正之事时<br>
不恐惧修正之心<br>
不向豺虎献媚<br>
我希望庆国的国民<br>
每一位都能成为王<br>
都能成为统治被称为"自己"这块领土的<br>
独一无二的王
</p>
</div>
</body>
</html>

优点:windows下兼容性好
缺点:非windows系统没看到有旋转九十度的字体,基本不能用
使用transform 转置后的字体有点模糊
对于自适应的内容需定位麻烦
东亚文字排列方向

0
23
2011

在 Godaddy 空间上安装 awstats

不知道是否记得asp教程里的访问计数器,实际使用的时候,简单的计数功能往往不能满足我们的需要。

网上有很多访问统计的程序、网站,为了获取更多的客户端信息,这些都使用JavaScript来获取客户端信息。但是当客户端不支持 JavaScript 时便不能很好的统计访问数据。

Apache/IIS 等 web 服务器记录了每一次访问请求,记录的内容包括访问者地址、请求内容等。这些原始数据通过第三方软件进行整理分析就可以得到我们需要的统计数据。

AWStats 是一个基于 perl 的 WEB 日志分析工具,支持多种语言(有简体中文),基于 Perl 使它能很好的在各种平台上工作。

AWStats 当前的最新版本是7.0,可以到它的主页下载。Godaddy 的空间已经支持 Perl,就不在自己的电脑上折腾,直接把下载的文件(awstats-7.0.zip)上传到空间。

看下解压出来的文件结构:

  • docs/
  • tools/
  • wwwroot/
    • cgi-bin/
    • classes/
    • css/
    • icon/
    • js/
  • readme.txt

其中 docs 是AWStats 的说明文档,包括安装配置等内容,tools 是一些可能用到的附加工具,wwwroot 则是程序文件。为了保持较短的路径,我把 wwwroot 移动到空间根目录(html)并改名为awstats,并把 tools 移到 awstats 下。现在就可以给 awstats 绑定个域名来看看是否正常(不绑域名也可以,只是要用主域名的路径去访问):

http://域名/路径/cgi-bin/awstats.pl?config=model

现在已经可以打开 AWStats 了,但是还没有数据,全部都显示 0。AWStats 的配置文件是保存在 cgi-bin 目录下名为 awstats.配置名.conf 形式的文件,可以直接编辑或者使用 tools 目录下的 awstats_configure.pl (在 Godaddy 空间上到最后创建文件的时候失败,已经配置读写权限)。cgi-bin 目录下已经有一个 awstats.model.conf 文件,因为我只需要一个,就直接把 model 改为我自己的名字。

第一个需要改配置的是 LogFile,它指定了 AWStats 的数据源。可以直接填写文件路径,也可以使用命令管道。如果日志来源已经按时间分割,还可以使用上面列出的变量替换实际值。例如:%MM 是以2位数表示的当前月分,%DD-5 是以2位数表示的当前时间之前5个小时时的日期。

Godaddy 的日志文件保存在 /stats/logs 目录下,并且已经按日期分割好。这里可以填写为“cat ../../stats/logs/ex%YYYY%MM%DD*.log |”(路径相对于 awstats.pl 文件)。如果只要每月统计的话,Godaddy 也提供了每月打包的文件,设置为“unzip -p ../../stats/logs/logarchive.%YY_%MM.zip |”。

接下来要改的是 SiteDomain,这个简单,只要把它改成你的域名就可以了。

最后要改的是 DirData, 用来保存 AWStats 整理后的数据。这里在 awstats 目录下创建一个 data 文件夹来保存,设置为 “../data”。

现在可以 ssh 登录到服务器上执行“./awstats.pl –update –config=配置名”来更新数据了。如果没有开通 ssh 的话也可以修改配置文件里的 AllowToUpdateStatsFromBrowser 值为 1,在最近更新的日期旁边会出现个“立即更新”的链接。

每天更新一遍数据是很烦人的,像这种重复就应该交给电脑来做。Godaddy 空间提供了计划任务的功能,可以定时执行一些命令,点击网站管理的 Content 菜单下的 Cron job Manager 打开。

默认情况下搜索引擎的中文关键字会乱码,只要打开DecodeUTFKey插件就可以解决(注释掉配置文件里“LoadPlugin=”decodeutfkeys””这一行,或者自己添加)。

打开你的 AWStats 看看吧!

http://域名/路径/cgi-bin/awstats.pl?config=配置名

0
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