2010年1月28日星期四
IE6下设置透明背景函数
function correctPNG() {
for(var i = 0; i < document.images.length; i++) {
var img = document.images[i]
var imgName = img.src.toUpperCase()
if (imgName.substring(imgName.length-3, imgName.length) == "PNG"){
var imgID = (img.id) ? "id='" + img.id + "' " : ""
var imgClass = (img.className) ? "class='" + img.className + "' " : ""
var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
var imgStyle = "display:inline-block;" + img.style.cssText
if (img.align == "left") imgStyle = "float:left;" + imgStyle
if (img.align == "right") imgStyle = "float:right;" + imgStyle
if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle
var strNewHTML = "<span " + imgID + imgClass + imgTitle
+ " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
+ "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
+ "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>"
img.outerHTML = strNewHTML
i = i-1
}
}
}
[/js]
2010年1月22日星期五
Windows服务的手动添加和删除方法
安装服务,一般分为两种情况:
情况一:安装可以作为服务运行的程序成为WinXP的服务;
情况二:安装不可以作为服务运行的程序(即普通的应用程序)成为WinXP的服务。
使用安装工具:srvinstw.exe和srvany.exe,Win2000资源工具包中提供的工具;
下面是手工添加服务的方法,适用找不到添加工具的时候手工添加服务。
通过修改注册表来添加服务:
在注册表编辑器,展开分支"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services",在右侧窗格
中显示的就是本机安装的服务项。如果要新建服务,只须点击"编辑→新建→项",然后为此项命名,如"test";然后右击该项,选择"新建→字符串值"
或"新建→Dword值"即可。
添加一个服务项目具体需要添加的键值如下:
"DisplayName",字符串值,对应服务名称;
"Description",字符串值,对应服务描述;
"ImagePath",字符串值,对应该服务程序所在的路径;
"ObjectName",字符串值,值为"LocalSystem",表示本地登录;
"ErrorControl",Dword值,值为"1";
"Start",Dword值,值为2表示自动运行,值为3表示手动运行,值为4表示禁止;
"Type",Dword值,应用程序对应10,其它对应20。
另外,还要在"test"项下新建一个"Enum"项。如果有些必须通过srvany来加载的还必须添加另外的Parameters子项在该项中提供详细的要加为服务的程序所在的路径。而上面的那个路径就需要指到srvany所在的路径。
删除服务
1. Windows服务
Windows服务也称为Windows Service,它是Windows操作系统和Windows网络的基础,属于系统核心的一部分,它支持着整个Windows的各种操作。诸如DNS客户端、打印程序、Windows更新服务、计划任务、Windows时间服务、告警器等服务,它们关系到机器能否正确运行。如果不能适当地管理这些服务,就会影响到机器的正常操作。
一个服务首先是一个Win32可执行程序,或者是是rundll32.exe来运行一个.dll的方式形成的进程。跟普通应用程序不一样,如打开WORD,有一个界面出来,但服务没有用户界面。也不能通过直接双击运行相应的.exe程序来运行。
Windows的服务由更上一级的services.exe这个服务来管理,由它来管理,负责进行服务的启动、停止、运行,暂停等。我们最常用的操作就是通过Windows的服务MMC界面来完成相关操作。
2. 删除Windows服务
现在的流氓软件,越来越多把自己注册为一个服务。在Hijackthis的扫描日志中,一般会把非Windows系统的服务以023的方式列出来,如下面这段:
O23 - 未知 - Service: BKMARKS [提供传输协议的数据安全保护机制,有效维护数据传输中的安全及完整。] - C:\WINDOWS\SYSTEM32\RUNDLL.EXE
O23 - 未知 - Service: ewido anti-spyware 4.0 guard [ewido anti-spyware4.0 guard] - D:\Program Files\ewido anti-spyware 4.0\guard.exe
O23 - 未知 - Service: KSD2Service [KSD2Service] - C:\WINDOWS\system32\SVCH0ST.exe
对于这些流氓软件,需要删除相关的.exe文件,使它不能再运行,或者直接清除这个服务本身,使计算机重启的时候,它不会再启动。
删除的办法有两个:
办法一: 用sc.exe这个Windows命令
开始——运行——cmd.exe,然后输入sc就可以看到了。使用办法很简单:sc delete "服务名"(如sc deleteService 83F9085F) 如针对上面的: sc delete KSD2Service
方法二:直接进行注册表编辑(不推荐)
打开注册表编辑器,找到下面的键值:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,一般
服务会以相同的名字在这里显示一个主健,直接删除相关的键值便可。(HKEY_CURRENT_USER\SYSTEM
\CurrentControlSet\Services 下可能也有,可在注册表中查找删除)
3. 特殊情况
A. 如果服务显示的是rundll32.exe,并且这个文件是位于system32目录下,那么就不能删除这个rundll32.exe文件,它是Windows系统的文件。这时只要清除相关的服务就可以了
B. 如果一个服务删除了马上又自动建立了,说明后台有进程在监视、保护。需要先在进程管理器中杀掉相应的进程,或者启动后按F8,到安全模式下删除。
查看网页收录数
site:livingelsewhere.net(查看整站)
site:www.livingelsewhere.net(查看顶级域名)
2010年1月19日星期二
MySQL 慢查询日志
[sql]
mysql> SHOW VARIABLES LIKE '%log_slow%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| log_slow_queries | OFF |
+------------------+-------+
mysql> SHOW VARIABLES LIKE '%long_query%';
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
[/sql]
long-query-time: 当期系统记录执行时间的超过这个时间的query,MySQL < 5.1, long-query-time = 1(unit: s),。
[bash title="启用 MySQL 慢速查询日志"]
[mysqld]
#enable the slow query log, default 10 seconds
log_slow_queries
#log queries taking longer than 5 seconds
long_query_time = 5
#log queries that don't use indexes even if they take less than long_query_time
#MySQL 4.1 and newer only
log_queries_not_using_indexes
#define slow log file directory
#log_slow_queries = /new/path/to/file
[/bash]
这 4 个设置一起使用,可以记录执行时间超过 5 秒和没有使用索引的查询。但需要注意log-queries-not-using-indexes 必须是使用 MySQL 4.1 或更高版本。
另外,在 mysqld 进程启动时, 指定--log-slow-queries[=file_name]选项,也可以开启慢查询日志
[bash]
root@gguo-laptop:~# /usr/local/mysql/bin/mysqld_safe \
>--log-slow-queries=/user/local/mysql/log/slow-log-query.sql &
[/bash]
若需要进一步缩短慢查询时间限制,可使用 Percona 提供的 microslow-patch(msl Patch)。msl Patch不仅能将满朝性时间减小到毫秒级别,还能通过一些特定的规则来过滤记录的SQL,如只记录某个表的慢查询。
阅读慢速查询日志可通过 mysqldumpslow 命令进行。指定日志文件的路径,就可以看到一个慢速查询的排序后的列表,并且还显示了它们在日志文件中出现的次数。一个非常有用的特性是 mysqldumpslow 在比较结果之前,会删除任何用户指定的数据,因此对同一个查询的不同调用被计为一次;这可以帮助找出需要工作量最多的查询。
2010年1月18日星期一
子网掩码
IP 地址的结构
想理解什么是子网掩码, 就不能不了解 IP 地址的构成. 互联网是由许多小型网络构成的, 每个网络上都有许多主机, 这样便构成了一个有层次的结构. IP 地址在设计时就考虑到地址分配的层次特点, 将每个 IP 地址都分割成网络号和主机号两部分, 以便于 IP 地址的寻址操作.
IP 地址的网络号和主机号各是多少位呢?如果不指定, 就不知道哪些位是网络号, 哪些是主机号, 这就需要通过子网掩码来实现.
子网掩码的设定必须遵循一定的规则. 与 IP 地址相同, 子网掩码的长度也是 32 位, 左边是网络位, 用二进制数字 1表示; 右边是主机位, 用二进制数字 0 表示. 只有通过子网掩码, 才能表明一台主机所在的子网与其他子网的关系, 使网络正常工作.
子网掩码的术语是扩展的网络前缀码不是一个地址, 但是可以确定一个网络层地址哪一部分是网络号, 哪一部分是主机号, 1 的部分代表网络号, 掩码为 0 的部分代表主机号. 子网掩码的作用就是获取主机 IP 的网络地址信息, 用于区别主机通信不同情况, 由此选择不同路由. 其中:
- A 类地址的默认子网掩码为 255.0.0.0
- B 类地址的默认子网掩码为 255.255.0.0
- C 类地址的默认子网掩码为: 255.255.255.0
子网和子网掩码的作用
子网的作用
使用子网是要解决只有一组 (A, B, C类) 地址但需要数个网络编码 (网络号) 的问题, 并不是解决 IP 地址不够用的问题, 因为使用子网反而能使用的 IP 地址会变少, 子网通常是使用在跨地域的网络互联之中,两者之间使用路由器连线,同时也上 Internet, 但只申请到一组C类 IP 地址, 过路由又需不同的网络,所以此时就必须使用到子网,当然二网络间也可以远程桥接 RemoteBridge 连接, 那便没有使用子网的问题.
子网掩码的作用
通过 IP 地址的二进制与子网掩码的二进制进行与运算, 确定某个设备的网络地址和主机号. 也就是说通过子网掩码分辨一个网络的网络部分和主机部分子网掩码一旦设置, 网络地址和主机地址就固定了.
子网一个最显著的特征就是具有子网掩码. 与 IP 地址相同, 子网掩码的长度也是 32 位, 也可以使用十进制的形式. 例如, 为二进制形式的子网掩码:
11111111111111111111111100000000, 采用十进制的形式为: 255.255.255.0.子网掩码的概念
子网掩码是一个 32 位地址, 是与 IP 地址结合使用的一种技术. 它的主要作用有两个, 一是用于屏蔽 IP 地址的一部分以区别网络标识和主机标识, 并说明该 IP 地址是在局域网上, 还是在远程网上. 二是用于将一个大的 IP 网络划分为若干小的子网络.
确定子网掩码数
用于子网掩码的位数决定于可能的子网数目和每个子网的主机数目. 在定义子网掩码前, 必须弄清楚本来使用的子网数和主机数目.
定义子网掩码的步骤为:
- 1 确定哪些组地址归我们使用. 比如我们申请到的网络号为
210.73.a.b, 该网络地址为 C 类 IP 地址, 网络标识为210.73.a, 主机标识为b. - 2 根据我们现在所需的子网数以及将来可能扩充到的子网数, 用宿主机的一些位来定义子网掩码. 比如我们现在需要 12 个子网, 将来可能需要 16 个. 用第四个字节的前四位确定子网掩码. 前四位都置为
1(即把第四字节的最后四位作为主e机位, 其实在这里有个简单的规律, 非网络位的前几位置1原网络就被分为2的几次方个网络, 这样原来网络就被分成了2的4次方16个子网) , 即第四个字节为11110000, 这个数我们暂且称作新的二进制子网掩码. - 3 把对应初始网络的各个位都置为
1, 即前三个字节都置为1, 第四个字节低四位置为0, 则子网掩码的间断二进制形式为:11111111.11111111.11111111.11110000 - 4 把这个数转化为间断十进制形式为:
255.255.255.240这个数为该网络的子网掩码.
A 利用子网数来计算
在求子网掩码之前必须先搞清楚要划分的子网数目, 以及每个子网内的所需主机数目.
- a 将子网数目转化为二进制来表示.
- b 取得该二进制的位数, 为 N.
- c 取得该 IP 地址的类子网掩码, 将其主机地址部分的的前N位置 1 即得出该 IP 地址划分子网的子网掩码.
如欲将 B 类 IP 地址 168.195.0.0 划分成 27 个子网:
- a 27=11011
- b 该二进制为五位数, N = 5
- c 将 B 类地址的子网掩码 255.255.0.0 的主机地址前 5 位置 1, 得到 255.255.248.0
即为划分成 27 个子网的B类 IP 地址 168.195.0.0的子网掩码.
B 利用主机数来计算
- a 将主机数目转化为二进制来表示.
- b 如果主机数小于或等于 254 (注意去掉保留的两个 IP 地址), 则取得该主机的二进制位数, 为 N, 这里肯定 N<8; 如果大于 254, 则 N>8, 这就是说主机地址将占据不止8位.
- c 使用 255.255.255.255 来将该类 IP 地址的主机地址位数全部置 1, 然后从后向前的将 N 位全部置为 0, 即为子网掩码值.
如欲将 B 类 IP 地址 168.195.0.0 划分成若干子网, 每个子网内有主机 700 台:
- a 700=1010111100
- b 该二进制为十位数, N = 10
- c 将该 B 类地址的子网掩码 255.255.0.0 的主机地址全部置 1, 得到 255.255.255.255, 然后再从后向前将后 10 位置 0, 即为: 11111111.11111111.11111100.00000000, 即 255.255.252.0 , 这就是该欲划分成主机为700台的B类 IP 地址 168.195.0.0的子网掩码.
IP 掩码的标注
A 无子网的标注法
对无子网的 IP 地址, 可写成主机号为 0 的掩码. 如 IP 地址 210.73.140.5, 掩码为 255.255.255.0, 也可以缺省掩码, 只写 IP 地址.
B 有子网的标注法
有子网时, 一定要二者配对出现. 以 C 类地址为例.
(以下一段没有指定掩码为 27 位, 在掩码为 27 位的情况下才成立~~)
子网掩码的表示方法
子网掩码通常有以下 2 种格式的表示方法:
- a 通过与 IP 地址格式相同的点分十进制表示, 如: 255.0.0.0 或 255.255.255.128.
- b 在 IP 地址后加上
/符号以及 1-32 的数字, 其中 1-32 的数字表示子网掩码中网络标识位的长度, 如: 192.168.1.1/24 的子网掩码也可以表示为 255.255.255.0.
子网掩码和 IP 地址的关系
注: 这讲的都是有内网
子网掩码是用来判断任意两台计算机的 IP 地址是否属于同一子网络的根据. 最为简单的理解就是两台计算机各自的 IP 地址与子网掩码进行AND运算后, 如果得出的结果是相同的, 则说明这两台计算机是处于同一个子网络上的, 可以进行直接的通讯. 就这么简单.
请看以下示例:
运算演示之一
| IP 地址 | 192.168.0.1 |
|---|---|
| 子网掩码 | 255.255.255.0 |
| AND运算 | (AND运算法则: 1 & 1 = 1, 1 & 0 = 0, 0 & 1 = 0, 0 & 0 = 0) |
转化为二进制进行运算:
| IP 地址 | 11000000.10101000.00000000.00000001 |
|---|---|
| 子网掩码 | 11111111.11111111.11111111.00000000 |
| AND运算 | 11000000.10101000.00000000.00000000 |
| 转化为十进制 | 192.168.0.0 |
运算演示之二
| IP 地址 | 192.168.0.254 |
|---|---|
| 子网掩码 | 255.255.255.0 |
| 转化为二进制进行运算 | |
| IP 地址 | 11000000.10101000.00000000.11111110 |
| 子网掩码 | 11111111.11111111.11111111.00000000 |
| AND运算 | 11000000.10101000.00000000.00000000 |
| 转化为十进制 | 192.168.0.0 |
运算演示之三
| IP 地址 | 192.168.0.4 |
|---|---|
| 子网掩码 | 255.255.255.0 |
| 转化为二进制进行运算 | |
| IP 地址 | 11000000.10101000.00000000.00000100 |
| 子网掩码 | 11111111.11111111.11111111.00000000 |
| AND运算 | 11000000.10101000.00000000.00000000 |
| 转化为十进制 | 192.168.0.0 |
通过以上对三组计算机 IP 地址与子网掩码的 AND 运算后, 我们可以看到它运算结果是一样的. 均为 192.168.0.0, 所以计算机就会把这三台计算机视为是同一子网络, 然后进行通讯的. 我现在单位使用的代理服务器, 内部网络就是这样规划的.
也许又要问, 这样的子网掩码究竟有多少了 IP 地址可以用呢? 你可以这样算.
根据上面我们可以看出, 局域网内部的 IP 地址是我们自己规定的 (当然和其他的 IP 地址是一样的), 这个是由子网掩码决定的通过对 255.255.255.0 的分析. 可得出: 前三位 IP 码由分配下来的数字就只能固定为 192.168.0, 所以就只剩下了最后的一位了, 那么显而易见了, IP 地址只能有 (2的8次方-2), 即256-2=254, 一般主机地址全为0或者1 (二进制) 有其特殊的作用.
那么你可能要问了:如果我的子网掩码不是 255.255.255.0 呢? 你也可以这样做, 假设你的子网掩码是 255.255.128.0, 那么局域网内的 IP 地址的前两位已固定, 这样, 就可以按照下边的计算来看看同一个子网内到底能有多少台机器
- A 十进制 128 = 二进制 1000 0000
- B IP 要和子网掩码进行 AND 运算
- C
IP 地址 11000000.10101000.1*******.******** 子网掩码 11111111.11111111.10000000.00000000 AND运算 11000000.10101000.10000000.00000000 转化为十进制 192.168.128.0 - D 可知我们内部网可用的 IP 地址为: 11000000.10101000.10000000.00000000 到 11000000.10101000.11111111.11111111 (也可以是: 11000000.10101000.00000000.00000000 到 11000000.10101000.01111111.11111111)
- E 转化为十进制: 192 .168.128.0 到 192.168.255.255 (或者192.168.0.0到192.168.127.255)
- F 0 和 255 通常作为网络的内部特殊用途. 通常不使用.
- G 于是最后的结果如下, 所有可用的 IP 地址为:
192.168.128.1-192.168.128.254
192.168.129.1-192.168.129.254
192.168.130.1-192.168.130.254
192.168.131.1-192.168.131.254
. . . . . . . . . . . . .
192.168.139.1-192.168.139.254
192.168.140.1-192.168.140.254
192.168.141.1-192.168.141.254
192.168.142.1-192.168.142.254
192.168.143.1-192.168.143.254
. . . . . . . . . . . . .
192.168.254.1-192.168.254.254
192.168.255.1-192.168.255.254 - H 总数为(255-128+1)*(254-1+1) =128 * 254 = 32512
子网内包含的机器数目应该是 2^n-2, 比如说上面的子网掩码是 255.255.128.0, 那么他的网络号是 17 位, 主机号是 15 位, 只要主机号不全是 0 或者 1 就是可以的, 所以 IP 地址是 192.168.192.0(11000000.10101000.11000000.00000000)也允许, 除掉全 0 全 1, 结果为 2^15-2=32766, 上面的落了好多地址 - I 看看的结果是否正确
a 设定 IP 地址为 192.168.128.1,Ping 192.168.129.233通过测试, 访问 http://192.168.129.233 可以显示出主页.
b 设定 IP 地址为 192.168.255.254,Ping 192.168.255.254通过测试, 访问 http://192.168.255.254 可以显示出主页. - J 结论: 以上证明我们的结论是对的
现在就可以看子网中能有多少台机器了, 255.255.255.128, 分解, 11111111.11111111.11111111.10000000, 所以内部网络的 IP 地址只能是 xxxxxxxx.xxxxxxxx.xxxxxxxx.0??????? 到 xxxxxxxx.xxxxxxxx.xxxxxxxx.01111111.
2010年1月11日星期一
sqlite数据导入MySQL
要IP地址与城市对应的库。也许本就是心情不好,在搜了很久也没找到自己想要的数据后~本要放弃时,竟又找到了个比较新的库,但是是sqlite的。
于是,又找sqlite的windows程序(down下来后才发现就-exe文件),看就一文件,见多了windows下跑一程序需要N多文件的阵势,很是怀疑自己是否是down错了文件~运行了下,竟也跑了起来。看到.help提示,想找到可以将数据导出到文件的命令,折腾了很久,却总是不对。遂干脆放弃,心想还是写程序将数据导出来算啦。打开PHP的sqlite库,重启Apache,Apache 竟重启失败。看日志,也没找到什么好的提示信息。关闭sqlite库,重启还是失败。退出服务,"failed";重启机器,failed...... 生了半会儿闷气,决定暂时先不理这恼人的东西了。
下午,看到时间是不能不理了。 将之前down的sqlite的一个类似于phpMyAdmin的用PHP写的SQLiteManager看了下。但要把它跑起来,还是得需要sqlite库。又去试了下,将PDO和sqlite的全部打开,重启Apache,竟成功了!!!。打开SQliteManager,看到了页面。以为问题可以解决了。晕的是,再次又碰到问题,将之前的数据放到目录下面,无用;看到界面提示,创建数据库,失败;导入数据库;失败。到SQLiteManager的官方站点。不知道那是法语还是德语什么的,反正是看不太懂。翻译成英文,按照提示做,还是失败~看是用这方法,也是行不通了~~~~
还是回到sqlite,再认真的看了下命令提示。看到.mode MODE TABLE,试了下输入CSV模式的,失败。又看到.output filename,将输出写入文件。写了句限制条数的查询语句,HO,看到了点希望的曙光。虽然老土,但总算是折腾出了个方法。于是全部查出。导入MySQL,数据太多,超时,只能是分开导了。在又耗了我将近一个小时后,终于是将那二十几万条数据成功导入到MySQL。
2010年1月8日星期五
RGB 转化为十六进制
function zero_fill_hex(num, digits) {
var s = num.toString(16);
while (s.length < digits)
s = "0" + s;
return s;
}
function rgb2hex(rgb) {
if (rgb.charAt(0) == '#')
return rgb;
var n = Number(rgb);
var ds = rgb.split(/\D+/);
var decimal = Number(ds[1]) * 65536 + Number(ds[2]) * 256 + Number(ds[3]);
return "#" + zero_fill_hex(decimal, 6);
}
rgb2hex('rgb(255, 255, 255)');
[/js]
颜色拾取器
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>颜色选择器</title>
<style type="text/css">
body{
text-align:center;
}
</style>
</head>
<body>
<p>
<script type="text/javascript" language="javascript">
<!--
var ColorHex = Array('00','33','66','99','CC','FF')
var SpColorHex = new Array('FF0000','00FF00','0000FF','FFFF00','00FFFF','FF00FF')
var current = null;
var select_opener = '';
function initcolor(evt) {
var colorTable=''
for (i=0;i<2;i++) {
for (j=0;j<6;j++) {
colorTable=colorTable+'<tr height=15>'
colorTable=colorTable+'<td width=15 style="background-color:#000000">'
if (i==0){
colorTable=colorTable+'<td width=15 style="cursor:pointer;background-color:#'+ColorHex[j]+ColorHex[j]+ColorHex[j]+'" onclick="doclick(this.style.backgroundColor)">'}
else{
colorTable=colorTable+'<td width=15 style="cursor:pointer;background-color:#'+SpColorHex[j]+'" onclick="doclick(this.style.backgroundColor)">'}
colorTable=colorTable+'<td width=15 style="background-color:#000000">'
for (k=0;k<3;k++) {
for (l=0;l<6;l++) {
colorTable=colorTable+'<td width=15 style="cursor:pointer;background-color:#'+ColorHex[k+i*3]+ColorHex[l]+ColorHex[j]+'" onclick="doclick(this.style.backgroundColor)">'
}
}
}
}
colorTable='<table border="0" cellspacing="0" cellpadding="0" style="border:1px #000000 solid;border-bottom:none;border-collapse: collapse;width:337px;" bordercolor="000000">'
+'<tr height=20><td colspan=21 bgcolor=#ffffff style="font:12px tahoma;padding-left:2px;">'
+'<span style="float:left;color:#999999;"></span>'
+'<span style="float:right;padding-right:3px;cursor:pointer;" onclick="colorclose()">×关闭</span>'
+'</td></table>'
+'<table border="1" cellspacing="0" cellpadding="0" style="border-collapse: collapse" bordercolor="000000" style="cursor:pointer;">'
+colorTable+'</table>';
document.getElementById("colorpane").innerHTML=colorTable;
var current_x = document.getElementById(select_opener).offsetLeft;
var current_y = document.getElementById(select_opener).offsetTop;
document.getElementById("colorpane").style.left = current_x + "px";
document.getElementById("colorpane").style.top = current_y + "px";
}
function doclick(obj){
document.getElementById(select_opener).value = rgb2hex(obj);
colorclose();
}
function colorclose(){
document.getElementById("colorpane").style.display = "none";
}
function coloropen(event, opener){
document.getElementById("colorpane").style.display = "";
select_opener = opener;
}
//转到固定长度的十六进制字符串,不够则补0
function zero_fill_hex(num, digits) {
var s = num.toString(16);
while (s.length < digits)
s = "0" + s;
return s;
}
function rgb2hex(rgb) {
if (rgb.charAt(0) == '#')
return rgb;
var n = Number(rgb);
var ds = rgb.split(/\D+/);
var decimal = Number(ds[1]) * 65536 + Number(ds[2]) * 256 + Number(ds[3]);
return "#" + zero_fill_hex(decimal, 6);
}
window.onload = initcolor;
</script>
</p>
<p> </p>
<p> </p>
<p> </p>
<p>
<input type="text" value="颜色选择" onclick="coloropen(event, 'inputcolor')" id="inputcolor" />
</p>
<p> </p>
<div id="colorpane" style="position:absolute;z-index:999;display:none;"></div>
</body>
</html>
[/html]
2010年1月6日星期三
中文Alexa排名专业术语解释
[Alexa Rank] 这个参数是 Alexa 根据统计到的数据综合分析后对一个网站给出的最后排名,其中流量排名(Traffic Rank)占主要,其他各项参数也有影响但比较小,所以一般这个数据接近或等于三月平均流量排名。
下期排名:
[Next Rank] 一个预计数值,实际上是下次排名更新后的综合排名,影响因素跟综合排名一样,所以一般这个数据也同样接近或等于三个月平均流量排名。
网站简介:
[Site Intro] 顾名思义就是站点的概括性介绍,一般新网站会显示“该站未提交介绍信息”,站长可以自己去提交或修改信息,也可以放置info.txt文件在站点根目录下,然后通知 Alexa 的蜘蛛去抓取。
1、Info.txt样例:
# Contact info submission
url:livingelsewhere.net
site_owner:Glenda Guo
address1:
address2:
city:Changsha
state:Hunan
country:Chinese
postal_code:410000
phone_number:86 xxxx xxxxxxxx
display_email:gettyying@gmail.com
site_name:生活在别处
site_description:
通知Alexa蜘蛛
访问速度:
[Visit Speed] 这个速度是指 ALEXA蜘蛛 抓取站点页面时的访问速度,因为他们的服务器在国外,所以与国内用户正常访问速度可能不相符,就象我们国内直接访问ALEXA官方站点一样会比较慢,这个数据跟站点大小和排名没任何关系。
所属目录:
[Dmoz Cate] Dmoz 是一个人工编辑管理的目录集合,为搜索引擎提供结果或数据,因此被收录的站点可以在其他搜索引擎上获得好的排名,这要比单独在 Dmoz 上获得的益处多多,但要成功被收录难度比较大,有些站点可能要一年以上才能被审核通过。
反向链接:
[Links In] 是指被 ALEXA 的蜘蛛检测到的其他站点到当前查询站点的链接数量,因为 ALEXA 蜘蛛的局限性使得这个数据所反映的数量要远小于真实的从其他站点过来的链接数量。
被访问网址:
[SubDomains] 一般可以把一个站点流量比较大的使用二级甚至更多级域名的栏目罗列出来,如果一个站点使用多个域名而且都有一定访问量的话也会全部列出,显示的标准目前是页面访问比例高于1%,低于这个标准的归入 Other websites。
网站访问比例:
[ReachPercent] 对一个站点下属栏目或子站点访问量的统计,这个参数是按照这个栏目或者子站点的用户到访量来计算,跟其IP所占全站IP的比例相关,跟PV关系不密切。
网页访问比例:
[PvPercent] 同上是对一个站点下属栏目或子站点访问量的统计,这个参数是按照这个栏目或者子站点的用户页面浏览量来计算,跟其PV所占全站PV的比例相关,跟IP关系不密切。
流量排名:
[Traffic Rank] 这个就是我们最关心的 Alexa 世界排名,相信来到这里的用户应该都清楚他的意义,就不再多做解释了。
到访量排名:
[Reach Rank] 流量排名(Traffic Rank)的一个重要参考数据,表示一个站点访问人数多少的排名数值,一个安装工具条的用户访问算一个Reach,一天内一个用户多次访问也算一个Reach。
日均 IP:
[Daily Reach] 日均 IP 访问量 表示访问一个站点的IP数,局域网多台电脑公用一个IP访问的话算一个。
日均 PV:
[Daily PV] 日均 PV 访问量(Daily PageView) 顾名思义 表示访问一个站点的页面浏览量,页面每被刷新或访问一次算一个PV。
ALEXA排名
Alexa排名机制:Alexa排名积分主要计算参数有两个:REACH和PV
ALEX的排名相对积分=REACH的平方乘以PV
REACH=装有工具条的用户访问数×(100万/每天实际装有工具条的用户)
PV=浏览页面数÷实际装有工具条的用户访问数
REACH 是同一天内每百万ALEXA活跃用户(指装有工具条的用户)里访问网站的数量。通俗点:比如某天有80个装了ALEXA工具条的用户访问你的网站,那你的 REACH是多少呢?现在ALEXA最新情况是每天有120-150万活跃用户。REACH大概就是80X(100万/130万)这样子。REACH大体也就在60-70左右。
PV 是平均每天访问你的网站的ALEXA用户平均访问的页面数量。比如这80个人一共访问了你的页面数量为200,那你的PV就是200/80=2.5.注意:同一个人一天内访问同一个页面只算一次。比如一个人同一天内访问了你某个页面1万次,这和访问一次对PV的影响是一样的。ALEXA的PV和国内流量统计站里PV的概念是不同的。
那么Alexa排名积分是用什么函数来计算这2个参数的呢,这个无人知道,但通过大量实例可以估算出。REACH的权重要大于PV,大体应该是这样子ALEX的排名相对积分=REACH的平方乘以PV。比如有个网站REACH是3,PV是4;另一个网站的REACH是6,PV是1。 3X3X4=6X6X1,所以他们的排名是很接近几乎相同的。
PR值
影响PR值的因素:
1 与pr高的网站做链接:
2 内容质量高的网站链接
3 加入搜索引擎分类目录
4 加入免费开源目录
5 你的链接出现在流量大、知名度高、频繁更新的重要网站上
6 google对PDF格式的文件比较看重。
7 安装Google工具条
8 域名和tilte标题出现关键词与meta标签等
9 反向连接数量和反向连接的等级
10 Google抓取您网站的页面数量
11 导出链接数量
Google PR值的算法
Google关于网页PR值的算法:PR(A) = (1-d)+ d(PR(t1)/C(t1)+ ... + PR(tn)/C(tn))。PR(A)为要计算Pr值的A页面,d为阻尼系数,一般为0.85,PR(t1)...PR(tn)分别是各个链接到你得网站的PR值,C(t1)...C(tn)分别是各个链接到你得网站的外部链接数量,由此可以看出对方给你做链接时,并不是对方网站的PR越高越好,对方网站链出的外部链接数量也很重要。
PR值最高为10,一般PR值达到4,就算是一个不错的网站了。
PR值的应用
可以这样说:一个网站的外部链接数越多其PR值就越高;外部链接站点的级别越高(假如Macromedia的网站链到你的网站上),网站的PR值就越高。例如:如果Paiwww.com 网站上有一个XYZ.COM网站的链接,那为Paiwww.com 网站必须提供一些较好的网站内容,从而Google会把来自XYZ.COM的链接作为它对ABC.COM网站投的一票。你可以下载和安装Google工具条来检查你的网站级别(PR值)。
