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................阅读全文
Windows下没有sleep命令 可以试试Windows Server 2003 Resource Kit Tools 就是Windows Server 2003 资源工具包。
这个包内包含了sleep命令(支持精确到ms级别的延迟) 甚至提供了一个tail命令
下载地址 http://www.microsoft.com/download/en/details.aspx?DisplayLang=en&id=17657
安装后提取出sleep.exe 再次运行安装程序即可卸载
Usage: sleep time-to-sleep-in-seconds
sleep [-m] time-to-sleep-in-milliseconds
sleep [-c] commited-memory ratio (1%-100%)
阅读全文
DZ得开发模式语言包言包临时目录(开发模式)在 data/plugindata/插件id.lang.php
这个不是每个插件都会用到这个目录。
对于需要修改语言包的时候 没有这个开发目录里面的文件确实不方便,好像以前有人出过一个工具,记不得了,我修改了DZ的语言函数来实现
function_core.php lang函数 找到
$returnvalue = & $_G['cache']['pluginlanguage_script'];
下面加上一句话
file_put_contents('abcdefgh.txt',var_export($_G['cache']['pluginlanguage_script'],true));
如果需要精细一点 $_G['cache']['pluginlanguage_script']可以换成$_G['cache']['pluginlanguage_script']['插件id']
打开生成的abcdefgh.txt 提取出这个数组 放到data/plugindata/插件id.lang.php 赋值给 $scriptlang['插件id'] 即可。
var_export导出的数组符合语法规范 可以直接赋值。
在开发模式下修改插件后 再次用设计模式导出为XML即可
阅读全文
近期评论