PHP ip2long的算法是
A*256*256*256+B*256*256+C*256+D
这个和mysql的INET_ATON算法是一样的。如果你把10.0.0.1使用ip2long计算,得到的结果是167772161,如果你把这个整数存到数据库里面(mysql存储这个值是字段需要用int UNSIGNED。否则,128以上的IP段就存储不了了。),你可以这样取得这个结果集SELECT INET_ATON('10.0.0.1')。
ip2long计算的结果可以使用long2ip来进行逆运算。唯一的一个小问题是,在32位系统上,高位IP计算出来的long会超长“溢出”, 输出一个负数。不过不影响long2ip进行逆运算。不过在判断IP区间的话,可能引起麻烦。解决办法 就是看是否是负数,如果是负数,使用sprintf格式化输出或者bindec再decbin
# phpsh
Starting php
type 'h' or 'help' to see instructions & features
php> echo ip2long('192.168.1.38')
-1062731482
php> echo long2ip(ip2long('192.168.1.38')-1)
192.168.1.37
php> echo long2ip(ip2long('1................阅读全文
"\ultrax\source\class\class_core.php" 约536行
usergroup_【当前用户的groupid】
admingroup_【当前用户的adminid】
setting
style_default
cronnextrun
usergroup_【newusergroupid】
style_【主题ID】
此外,如果你进入一些特定页面,还会调用更深层次的一些缓存。比如编辑器表情标签初始化的时候会载入similes缓存,使用plugin.php调用插件的时候会自动载入plugin缓存等等,如果需要在别处调用某一处缓存,比如plugin,similes,可以直接传给loadcache($cachenames, $force = false)一个缓存名称后就可以获取到缓存数据。当然传入一个数组也是可以的。
以下是缓存的工作原理 via: discuz dev wiki
如何注册系统缓存呢?可以使用dX基带的缓存扩展机制。
很简单 在\source\function\cache增加一个文件,比如以dz 自己带到smiles为例。
<?php
/**
* [Discuz!] (C)2001-2099 Comsenz Inc.
* This is NOT a freeware, use is subject to l................阅读全文
1.使用ps显示的进程运行后到现在经过的时间进行计算(Via)
Script by ihipop
#!/bin/bash
pid=$1
elt=$(ps w -p $pid o pid=,cmd=,etime= |awk '{print $NF}')
case $(echo $elt | sed -e 's/:/:\n/g' |grep ":" -c) in
"1")
elt=$(echo $elt |sed -e 's/:/ minutes ago /')
;;
*)
elt=$(echo $elt |sed -e 's/-/ days ago /' -e 's/:/ hours ago /' -e 's/:/ minutes ago /')
;;
esac
date -d "$elt seconds ago"
2.通过procfs里面的jiffies时间计算(Via)
在Linux系统中,时间管理有两个基本概念:xtime和jiffies。
xtime主要给time系函数使用,结构比较简单(include\linux\time.h):
struct timespec {
time_t tv_sec; /* seconds */
long tv_nsec; /* nanoseconds, 纳秒,以前的版本是微秒*/
};
tv_sec就是大家平常所说的unix时间戳,在CMOS中维护,关机时由电池维持正常运行。
系统启动时,通过get_cmos_time()取cmos................阅读全文
回家后,用上了那个WRT54G,上了ddwrt+chnroutes+DNSMASQ不能用交大的isatap隧道了,不过Teredo隧道又可以正常稳定的使用,但是发现一些奇怪的问题,比如,使用nslookup可以解析到ipv6.google.com,但是ping,一直提示“Ping request could not find host ipv6.google.com. Please check the name and try again.” 无法解析域名。但是直接ping google的IPV6地址确实是通的。证明IPV6链路正常。
一开始以为是其他隧道的干扰,关闭了其他隧道,还是老样子.而且使用gogo6的Tunnel broker也这样。放Google搜索了半天,找到了这个解释 微软脑残:
http://ipv6-or-no-ipv6.blogspot.com/2009/02/teredo-ipv6-on-vista-no-aaaa-resolving.html
Vista doesn't look up AAAA at all when it's on Teredo. It's intended behavior -- stupid, perhaps, but it's intended. See http://technet.microsoft.com/en-us/library/bb727035.aspx for all the details.
解决方................阅读全文
真是折腾死人啊。
先说说过程,我再写写问题吧。
第一步当然是引导啦。不过在这之前,需要先下载安装镜像。我这里下载的是这个chakra-2011.12-Edn-CD-x86_64.iso
挂载这个镜像后,把引导内核提取出来chakraiso和chakraiso.img。放在某个分区的根目录。如果你会对U盘安装GRUB,那最好啦。如果你不想覆写U盘的引导记录,想利用系统自己的引导记录,也行。
Linux下就不说啦,讲讲在windows下面怎么办。
如果你使用win7 可以使用boot.ini 虽然nt6.0开始使用bootmgr了,不过还是认这个boot.ini的。XP自然就不必说了。唯一需要注意的是,有限软刷BIOS激活的Win7,不能使用官方grldr覆盖根目录下那个隐藏的grldr,否则可能导致软激活失败。这个grldr使用随机的hash和干扰码干扰生成,为的也是骗过微软的反盗版检测。如果你没有上面这些问题,你就先下载官方的GRUB4DOS,提取出grldr.mbr,grldr。grldr.mbr的作用就是在被ntldr/bootmgr引导后寻找grldr并加载并加他。如................阅读全文
Nginx除了能对UA进行处理,乃能对特殊的Query String进行处理。
最典型的应用就是,location进行路径匹配的时候,是没办法是用正则表达一起捕获这个路径和querstring的。那么我想真的URL里面的Query String进行不同的rewrite,应该如何处理呢?答案就是$arg变量。
Nginx里面$query_string 与$args相同,存储了所提交的所有$query_string
比如&p=2887&q=test
如果想要在nginx里面单独访问这些变量。可以这样
比如$p变量可以这样访问 $arg_p
下面是用这样一个实例讲述一下。
我准备停用WAP-T-WAP插件,但是发现Google对我站点的wap收录比较多,为了保留SEO,对wap目录进行301重定向。
要求是 如果请求中的$query_string包含"q=数字",301重新定向到首页交由index.php处理。
否则只是301重新定向到首页。
location ~* ^/wap/ {
# if ( $http_user_agent ~* "(MSIE|bot|Spider|Slurp)" ) {
# }
if ................阅读全文
基本设置过程是一样的 可能原来的那些脚本在V24上有点问题的 自己修正了下脚本
在pptp+jffs(如何初始化?)方案中 run.sh废弃 使用下面的方案设置代替run.sh
launch.sh
#!/bin/sh
#Update by ihipop @ 2011/12/1 21:29
#http://ihipop.info
#This Version is tested and Passed @ dd-wrt.v24-13064_VINT_mega.bin (SP1 Build10020) on Linksys WRT54GS v2.1
VPNUP='vpnup.sh'
VPNDOWN='vpndown.sh'
VPNLOG='/tmp/autoddvpn.log'
#PPTPSRVSUB=$(nvram get pptpd_client_srvsub)
DLDIR='http://autoddvpn.googlecode.com/svn/trunk/'
#CRONJOBS="* * * * * root /bin/sh /tmp/check.sh >> /tmp/last_check.log"
PID=$$
INFO="[INFO#${PID}]"
DEBUG="[DEBUG#${PID}]"
IPUP="/etc/config/pptpd_client.ip-up"
IPDOWN="/etc/config/pptpd_client.ip-down"
WORKING="/jffs/pptp"
echo "$................阅读全文
这款NAS很有性价比 买回来不带硬盘 虽然CPU有些孱弱大概600MHZ左右,是Marvell Feroceon 88FR131 [56251311] revision 1 (ARMv5TE),但是作为600元的一款NAS来说,集成了一大堆功能,真的是物有所值。
默认固件阉割了Telnet/SSH ,使用acp_commander.jar也无法取得root和telnet权限,干脆不折腾了 直接刷开了SSH/Telnet的第三方MOD
推荐这款
http://forum.buffalo.nas-central.org/viewtopic.php?f=68&t=23603
下载下来后 运行LSUpdater.exe即可 整个过程是傻瓜化的 大约需要10几min,期间保证不要断电就可以了
另外,电源模式千万不要切换成auto
auto模式是很省电,只要你安装了NAS Navigator2 这玩意就会随着安装NAS Navigator2 的电脑一起开机关机自动唤醒等。
我刷的就是ls_series-154-mod1,刷固件一般不会造成硬盘数据丢失。不过你要是不放心的话 可以再备份下。
刷好后进入webadmin重置默认设置,这样webadmin的用户名和密码会被重置为admin/pa................阅读全文
Debian配置网络参数的时候可以定义一个或者多个PreUp,PostUp,PreDown,PostDown脚本,实现各种需求和功能,也有一个ifup.d 脚本丢下去就可以了,而openSUSE连网后执行的脚本则放在/etc/sysconfig/network/if-up.d/,它们是到/etc/sysconfig/network/scripts/的符号链接。唯独这个特立独行的CentOS/Fedora。只在/etc/sysconfig/network-scripts/{ifdown-post,ifup-post,ifdown,ifup}末尾对/sbin/ifdown-local /sbin/ifup-local /sbin/ifdown-pre-local /sbin/ifup-pre-local进行了简单调用
只能自己补完这系列脚本了
#!/bin/sh
#/sbin/ifup-pre-local
export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
if [ -z "$1" ]; then
echo $"usage: $0 <ifcf-file>"
exit 1
fi
CFGFILE="/etc/sysconfig/network-scripts/$1"
[ -f "$CFGFILE" ] && . $CFGFILE
FILES="/etc................阅读全文
首先安装ipcalc (CentOS下面的ipcalc和debian下面的不一样,要么你们自己改算法,要么移植吧。)
apt-get install ipcalc
#设置外网接口
dev=wan
#取得文件进行计算
wget http://chnroutes.googlecode.com/files/routes.txt -q -O - |awk '{print $2,$3}' |while read line;
do
ipcalc $line |grep -oP '\d+\.\d+\.\d+\.\d+\/\d{1,2}'
done |awk -v dev=$dev '{print "ip route add dst-address="$1" gateway="dev}'
得到类似
ip route add dst-address=61.47.128.0/18 gateway=wan
ip route add dst-address=61.48.0.0/13 gateway=wan
ip route add dst-address=61.87.192.0/18 gateway=wan
ip route add dst-address=61.128.0.0/10 gateway=wan
ip route add dst-address=61.232.0.0/14 gateway=wan
ip route add dst-address=61.236.0.0/15 gateway=wan
ip route add dst-address=61.240.0.0/14 gateway=wan
的规则 通过命令行................阅读全文
近期评论