Archive for the ‘技术文章’ Category

win7下Vmware中虚拟XP nat方式不能上网

五月 5th, 2009

文章是网上搜到的,但是没有图片,俺配上了图
Control Panel\All Control Panel Items\Network and Sharing Center
在“local area connection”的属性里,找到“共享”,按照图中所示打上勾,家庭网络一栏中选“local area connection3”(在我这里,local area connection3正是虚拟机用到的NAT网卡),确定。这样做的目的是将本地连接共享给NAT网卡,如下图所示。

15

接下来设置NAT网卡的TCP/IP,设置如下图所示。我的DNS一定填上4.2.2.2,确定,保存。
untitled

然后再设置虚拟机的TCP/IP,设置方法如下图所示。IP地址一定要和你的NAT网卡在同一个网段上,默认网关一定要填你的NAT网卡的IP地址。DNS和前面设置的保持一致,确定,保存。试试吧,看看你的虚拟机能不能上网,应该就可以了。

untitled1

修改ecshop后台admin目录为任意目录名

四月 29th, 2009

ecshop有个地方配置admin的目录名
data/config.php

$admin_dir = “admin”;
但是直接改不行,因为很多地方,这个目录名字被硬编码进去了,直接改会有很多地方报错。

网上搜到一篇文章,整理了一些需要修改的地方,内容转帖如下:

  1. 1.修改data/config.php
  2.    1. $admin_dir = "admin";
  3. 修改成
  4.    1. $admin_dir = "新目录名";
  5. 2.修改admin/index.php
  6.    1.   //货号
  7.    2.         require_once(ROOT_PATH . 'admin/includes/lib_goods.php');
  8. 修改成
  9.    1. require_once(ROOT_PATH . $admin_dir.'/includes/lib_goods.php');
  10. 3.修改admin/database.php
  11.    1. require_once(ROOT_PATH . 'admin/includes/cls_sql_dump.php');
  12. 修改成
  13.    1. require_once(ROOT_PATH . $admin_dir.'/includes/cls_sql_dump.php');
  14. 4.修改admin/get_password.php
  15.    1. $reset_email = $ecs->url() . 'admin/get_password.php?act=reset_pwd&uid='.$admin_id.'&code='.$code;
  16.    2.   修改成
  17.    3. $reset_email = $ecs->url() .  $admin_dir.'/get_password.php?act=reset_pwd&uid='.$admin_id.'&code='.$code;
  18. 5.修改admin/goods.php
  19.    1. require_once(ROOT_PATH . '/admin/includes/lib_goods.php');
  20.    2.   修改成
  21.    3. require_once(ROOT_PATH . $admin_dir.'/includes/lib_goods.php');
  22. 6.修改admin/check_file_priv.php
  23.    1. $dir[]                     = 'admin';
  24.    2.   修改成
  25.    3. $dir[]                     = $admin_dir;
  26. 7.修改admin/includes/init.php
  27.    1. if (file_exists(ROOT_PATH . 'data/config.php'))
  28.    2. {
  29.    3.      include(ROOT_PATH . 'data/config.php');
  30.    4. }
  31.    5. else
  32.    6. {
  33.    7.      include(ROOT_PATH . 'includes/config.php');
  34.    8. }
  35.    9.   修改成下面代码,并将代码移至“/* 取得当前ecshop所在的根目录 */”注释之前。
  36.   10. if (file_exists('../data/config.php'))
  37.   11. {
  38.   12.      include('../data/config.php');
  39.   13. }
  40.   14. else
  41.   15. {
  42.   16.      include('../includes/config.php');
  43.   17. }
  44.    1. define('ROOT_PATH', str_replace('admin/includes/init.php', '', str_replace('\\', '/', __FILE__)));
  45.    2.   修改成
  46.    3. define('ROOT_PATH', str_replace($admin_dir.'/includes/init.php', '', str_replace('\\', '/', __FILE__)));
  47.  
  48.    1. require(ROOT_PATH . 'admin/includes/lib_main.php');
  49.    2.   修改成
  50.    3. require(ROOT_PATH . $admin_dir.'/includes/lib_main.php');
  51.    1. require(ROOT_PATH . 'admin/includes/cls_exchange.php');
  52.    2.   修改成
  53.    3. require(ROOT_PATH . $admin_dir.'/includes/cls_exchange.php');
  54.    1. $smarty->template_dir  = ROOT_PATH . 'admin/templates';
  55.    2.   修改成
  56.    3. $smarty->template_dir  = ROOT_PATH . $admin_dir.'/templates';
  57.  
  58.    1. $admin_path = preg_replace('/:\d+/', '', $ecs->url()) . 'admin';
  59.    2.   修改成
  60.    3. $admin_path = preg_replace('/:\d+/', '', $ecs->url()) . $admin_dir;
  61. 8.修改include/lib_main.php
  62.    1. include_once(ROOT_PATH . 'admin/includes/lib_template.php');
  63. 修改成
  64.    1.
  65.    2. global $admin_dir;
  66.    3. include_once(ROOT_PATH . $admin_dir.'/includes/lib_template.php');
  67. 9.修改include/cls_ecshop.php
  68.    1.     $curr = strpos(PHP_SELF, 'admin/') !== false ?
  69.    2.   preg_replace('/(.*)(admin)(\/?)(.)*/i', '\1', dirname(PHP_SELF)) :
  70.    3.   dirname(PHP_SELF);
  71. 修改成
  72.    1. global $admin_dir;
  73.    2.         $curr = strpos(PHP_SELF, $admin_dir.'/') !== false ?
  74.    3.                 preg_replace('/(.*)('.$admin_dir.')(\/?)(.)*/i', '\1', dirname(PHP_SELF)) :
  75.    4.                 dirname(PHP_SELF);
  76. 10.如果担心$admin_dir变量注入安全问题可以在data/config.php文件中define('EC_CHARSET','utf-8');后增加
  77.    1. define('ADMIN_DIR','新目录名');
  78. 然后将所有修改的$admin_dir变量修改成ADMIN_DIR,例如:
  79.    1. require_once(ROOT_PATH . $admin_dir.'/includes/lib_goods.php');
  80.    2. 修改成
  81.    3. require_once(ROOT_PATH . ADMIN_DIR.'/includes/lib_goods.php');
  82. 11.根据pjb126 网友提示修改/admin/picture_batch.php
  83.    1. include_once(ROOT_PATH . '/admin/includes/lib_goods.php');
  84.    2. 修改成
  85.    3. include_once(ROOT_PATH .$admin_dir.'/includes/lib_goods.php');
  86. 12.新增修改quotation.php
  87.    1. include_once(ROOT_PATH . 'admin/includes/lib_main.php');
  88. 修改成
  89.    1.
  90.    2. global $admin_dir;
  91.    3.     include_once(ROOT_PATH . $admin_dir.'/includes/lib_main.php');

但是,我改过这些之后,还发现可能还有三个文件需要修改

admin/filecheck.php:
api/client/includes/lib_api.php
ecshopfiles.md5

关键字 ‘admin’

推荐2个网站

三月 3rd, 2009

TinEye Reverse Image Search
http://tineye.com

可以用来搜索制定图片类似的图片。我测试用了一个带水印的图来搜,结果搜出了一个原图加了其他水印的结果来。效果还可以。

http://www.midomi.com/

用自己的声音唱歌或哼唱来搜索音乐、观看音乐视频、加入歌迷俱乐部、与朋友分享、被发现以及进行许多其它活动,不收取任何费用!

这个我就没测试了,怕半夜吓着贝贝。

表达式全集

一月 24th, 2009

正则表达式有多种不同的风格。下表是在PCRE中元字符及其在正则表达式上下文中的行为的一个完整列表:

字符 描述
\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,“n”匹配字符“n”。“\n”匹配一个换行符。序列“\\”匹配“\”而“\(”则匹配“(”。
^ 匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配“\n”或“\r”之后的位置。
$ 匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline属性,$也匹配“\n”或“\r”之前的位置。
* 匹配前面的子表达式零次或多次。例如,zo*能匹配“z”以及“zoo”。*等价于{0,}。
+ 匹配前面的子表达式一次或多次。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。
? 匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“do”或“does”中的“do”。?等价于{0,1}。
{n} n是一个非负整数。匹配确定的n次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个o。
{n,} n是一个非负整数。至少匹配n次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o。“o{1,}”等价于“o+”。“o{0,}”则等价于“o*”。
{n,m} mn均为非负整数,其中n<=m。最少匹配n次且最多匹配m次。例如,“o{1,3}”将匹配“fooooood”中的前三个o。“o{0,1}”等价于“o?”。请注意在逗号和两个数之间不能有空格。
? 当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串“oooo”,“o+?”将匹配单个“o”,而“o+”将匹配所有“o”。
. 匹配除“\n”之外的任何单个字符。要匹配包括“\n”在内的任何字符,请使用像“[.\n]”的模式。
(pattern) 匹配pattern并获取这一匹配。所获取的匹配可以从产生的Matches集合得到,在VBScript中使用SubMatches集合,在JScript中则使用$0…$9属性。要匹配圆括号字符,请使用“\(”或“\)”。
(?:pattern) 匹配pattern但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用“或”字符(|)来组合一个模式的各个部分是很有用。例如,“industr(?:y|ies)就是一个比”industry|industries’更简略的表达式。
(?=pattern) 正向预查,在任何匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
(?!pattern) 负向预查,在任何不匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如“Windows(?!95|98|NT|2000)”能匹配“Windows3.1”中的“Windows”,但不能匹配“Windows2000”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始
x|y 匹配x或y。例如,“z|food”能匹配“z”或“food”。“(z|f)ood”则匹配“zood”或“food”。
[xyz] 字符集合。匹配所包含的任意一个字符。例如,“[abc]”可以匹配“plain”中的“a”。
[^xyz] 负值字符集合。匹配未包含的任意字符。例如,“[^abc]”可以匹配“plain”中的“p”。
[a-z] 字符范围。匹配指定范围内的任意字符。例如,“[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符。
[^a-z] 负值字符范围。匹配任何不在指定范围内的任意字符。例如,“[^a-z]”可以匹配任何不在“a”到“z”范围内的任意字符。
\b 匹配一个单词边界,也就是指单词和空格间的位置。例如,“er\b”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”。
\B 匹配非单词边界。“er\B”能匹配“verb”中的“er”,但不能匹配“never”中的“er”。
\cx 匹配由x指明的控制字符。例如,\cM匹配一个Control-M或回车符。x的值必须为A-Z或a-z之一。否则,将c视为一个原义的“c”字符。
\d 匹配一个数字字符。等价于[0-9]。
\D 匹配一个非数字字符。等价于[^0-9]。
\f 匹配一个换页符。等价于\x0c和\cL。
\n 匹配一个换行符。等价于\x0a和\cJ。
\r 匹配一个回车符。等价于\x0d和\cM。
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于[\f\n\r\t\v]。
\S 匹配任何非空白字符。等价于[^\f\n\r\t\v]。
\t 匹配一个制表符。等价于\x09和\cI。
\v 匹配一个垂直制表符。等价于\x0b和\cK。
\w 匹配包括下划线的任何单词字符。等价于“[A-Za-z0-9_]”。
\W 匹配任何非单词字符。等价于“[^A-Za-z0-9_]”。
\xn 匹配n,其中n为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,“\x41”匹配“A”。“\x041”则等价于“\x04”&“1”。正则表达式中可以使用ASCII编码。.
\num 匹配num,其中num是一个正整数。对所获取的匹配的引用。例如,“(.)\1”匹配两个连续的相同字符。
\n 标识一个八进制转义值或一个向后引用。如果\n之前至少n个获取的子表达式,则n为向后引用。否则,如果n为八进制数字(0-7),则n为一个八进制转义值。
\nm 标识一个八进制转义值或一个向后引用。如果\nm之前至少有nm个获得子表达式,则nm为向后引用。如果\nm之前至少有n个获取,则n为一个后跟文字m的向后引用。如果前面的条件都不满足,若nm均为八进制数字(0-7),则\nm将匹配八进制转义值nm
\nml 如果n为八进制数字(0-3),且m和l均为八进制数字(0-7),则匹配八进制转义值nml。
\un 匹配n,其中n是一个用四个十六进制数字表示的Unicode字符。例如,\u00A9匹配版权符号(©)。

jQuery 的图片幻灯片插件imgslideshow

一月 8th, 2009

有一个wp-magazine的theme,用了一个prototype的glider插件。但是偶不会用prototype,会一点jquery,并且用jquery的应用越来越多,比如使用的相册就是用的jquery,想统一一下JavaScript的类库。所以一直想找一个jquery类似效果的插件。除了这个之外,又发现一个不错的,有点像taobao首页广告的链接。
代码也很简单,一段简单的css,一个jquery+一个js就行了。
demo请点击这里,我稍微做了修改,原来是要点击数字,变化,现在鼠标移动到上边就可以变化图片了。

期待一个wordpress插件

十月 29th, 2008

想要的功能就是纪录下来用户用wordpress进行的所有搜索关键字,列出热门的搜索关键字。

要记录下所有搜索的关键字,统计搜索次数,按次数多到少排序。
找了一下没找到,莫非要我亲自动手了?关键是俺不会啊,咳。

jquery的find的filter的区别

九月 24th, 2008

filter will select a certain subset (zero or more) of the already
selected elements.
jquery的filter将在一组已经选取的元素里面选择
find will select a set of (zero or more) elements that are descendants
of the already selected elements.
jquery的find将在一组已经选取的元素的子节点里面选择

Here is an example:
示例如下

$(’div’).filter(’.elephants’); // <– selects the second div, because
it has class=”elephants”

$(’div’).find(’.elephants’); // <– selects the first paragraph,
because it has class=”elephants”

* Note that these two examples are very simple and would probably be
better written as …

$(’div.elephants’);

… and …

$(’div .elephants’);

linux服务器上端口映射

九月 20th, 2008

不一定最好+正确,但是可用
1,清空原有规则,不是必须的。

#!/bin/sh
#accept-all policy
IPT=’/sbin/iptables’
$IPT -t nat -F
$IPT -t nat -X
$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P POSTROUTING ACCEPT
$IPT -t nat -P OUTPUT ACCEPT
$IPT -t mangle -F
$IPT -t mangle -X
$IPT -t mangle -P PREROUTING ACCEPT
$IPT -t mangle -P INPUT ACCEPT
$IPT -t mangle -P FORWARD ACCEPT
$IPT -t mangle -P OUTPUT ACCEPT
$IPT -t mangle -P POSTROUTING ACCEPT
$IPT -F
$IPT -X
$IPT -P FORWARD ACCEPT
$IPT -P INPUT ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -t raw -F
$IPT -t raw -X
$IPT -t raw -P PREROUTING ACCEPT
$IPT -t raw -P OUTPUT ACCEPT

开始设置

/sbin/iptables -A INPUT -i eth0 -j ACCEPT
echo “1″ > /proc/sys/net/ipv4/ip_forward
#服务器公网ip
export AO=”6.1.1.3″
#服务器内网ip
export AI=”172.16.96.123″
#目标机器内网ip
export BI=”172.16.97.234″
#公网的端口
export PO=”7704″
#目标端口
export PI=”3389″

export AII=”eth1″

iptables -t nat -A PREROUTING -d $AO -p tcp –dport $PO -j DNAT –to-destination $BI:$PI
iptables -t nat -A POSTROUTING -d $BI -p tcp –dport $PI -j SNAT –to $AI
iptables -A FORWARD -o $AII -d $BI -p tcp –dport $PI -j ACCEPT
iptables -A FORWARD -i $AII -s $BI -p tcp –sport $PI -j ACCEPT

用css控制页面是否打印等

九月 8th, 2008
<style>   
 
@media   print   {   
        
.ptn   {display:block;}         
        
.notptn   {display:none;}   
}   
</
style>
<
div   class="notptn">   不打印</div>   
<
div   class="ptn">   打印</div>
 
<
style type="text/css">
.dd{
float:left;
}</style>

排列方式

html页面表格导出excel出现科学计数法问题的解决

七月 30th, 2008

用IE的用户,如果一个html页面有table的话,可以把table导出到excle文件里面,但是经常遇到会把身份证等数字比较长的数据改成科学计数法来显示。很是头疼。
有说加个单引号可以解决,但是我这里测试,显示和导出的结果都有单引号。效果不好。
同事找到一个解决方案比较好。在html页面里面加上一段css
然后在出现问题的字段应用这种style就可以了。
测试通过。神奇

<style type="text/css">
<!--
td {
    
background-color: #FFFFFF;
}
 
.txt
    
{padding-top:1px;
    
padding-right:1px;
    
padding-left:1px;
    
mso-ignore:padding;
    
color:black;
    
font-size:11.0pt;
    
font-weight:400;
    
font-style:normal;
    
text-decoration:none;
    
font-family:宋体;
    
mso-generic-font-family:auto;
    
mso-font-charset:134;
    
mso-number-format:"\@";
    
text-align:general;
    
vertical-align:middle;
    
mso-background-source:auto;
    
mso-pattern:auto;
    
white-space:nowrap;}
-->
</
style>