Archive for the ‘技术文章’ Category

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

Popularity: 28%

用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>

排列方式

Popularity: 29%

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>

Popularity: 36%

转贴一个Python HTMLParser的使用例子

六月 21st, 2008

原文

http://crquan.blogbus.com/logs/8269701.html

#!/usr/bin/env python
 
import sys
import urllib
import HTMLParser
 
class CustomParser(HTMLParser.HTMLParser):
    
selected = ('table', 'h1', 'font', 'ul', 'li', 'tr', 'td', 'a')
    
    
def reset(self):
        
HTMLParser.HTMLParser.reset(self)
        
self._level_stack = []
    
def handle_starttag(self, tag, attrs):
        
if tag in CustomParser.selected:
            
self._level_stack.append(tag)
    
def handle_endtag(self, tag):
        
if self._level_stack \
        
and tag in CustomParser.selected \
        
and tag == self._level_stack[-1]:
            
self._level_stack.pop()
    
def handle_data(self, data):
        
if "/".join(self._level_stack) in (
            
'table/tr/td',
            
'table/tr/td/h1/font',
            
'table/tr/td/ul/li'):
            
print self._level_stack, data
        
if len(sys.argv) > 1:
    
params = urllib.urlencode({'ip': sys.argv[1], 'action': 2})
else:
    
params = None
 
content = unicode(urllib.urlopen('http://www.ip138.com/ips8.asp',params).read(), 'GB2312')
 
parser = CustomParser()
parser.feed(content)
parser.close()

Popularity: 57%

硬盘问题搞定

五月 31st, 2008

新买的硬盘速度特别慢,并且测出来的读取速度很平均。原以为是硬盘问题,后来经过多次调试,发现老的硬盘也会出现这个问题。后来发现只要在bios里面没有设置,在windows里面识别出来的盘就会有这个问题。
用Hd tune测试,显示支持udma5,但是运行在udma6模式下,这样的情况下硬盘速度就特别慢。
原来用这种方法是为了不搞乱盘符,现在看来是不行了。
问题解决。

Popularity: 25%

EXT中文手册下载

五月 28th, 2008

找到一本ext中文手册,pdf版本的。看着不错。
ext-中文手册下载.pdf

Popularity: 39%

linux查找特定文件里面包含特定字符的文件

五月 24th, 2008

find ./ -name ‘*.java’ -exec grep -i “ABCD” {} \; -print

在当前路径不区分大小写查找所有*.java的文件里面含有”ABCD”的内容行,并且print出来文件的路径。

Popularity: 32%

javascript把数字格式化转换成货币类型

五月 9th, 2008

做财务的东西总是比较有挑战的,性能,易用性,准确性都有很高要求,包括一些小的细节。
比如金额需要显示的时候转换成有千分位,小数点后保留2位等。去编辑的时候,又要格式化,把逗号都去掉。网上找了段代码,但是再次编辑会有问题,修改了一下,代码如下:

  1. function outputMoney(number) {
  2.  number=number.replace(/\,/g,"");
  3.  if (isNaN(number)||number=="") return "";
  4.  number = Math.round(  number*100) /100;
  5. if(number<0)
  6. return '-'+outputDollars(Math.floor(Math.abs(number)-0) + '') + outputCents(Math.abs(number) - 0);
  7. else
  8. return outputDollars(Math.floor(number-0) + '') + outputCents(number - 0);
  9. }
  10. function outputDollars(number)
  11. {
  12.   if (number.length<= 3)
  13.   return (number == '' ? '0' : number);
  14.   else
  15.   {
  16.     var mod = number.length%3;
  17.     var output = (mod == 0 ? '' : (number.substring(0,mod)));
  18.     for (i=0 ; i< Math.floor(number.length/3) ; i++)
  19.     {
  20.       if ((mod ==0) && (i ==0))
  21.       output+= number.substring(mod+3*i,mod+3*i+3);
  22.       else
  23.       output+= ',' + number.substring(mod+3*i,mod+3*i+3);
  24.     }
  25.     return (output);
  26.   }
  27. }
  28. function outputCents(amount)
  29. {
  30.   amount = Math.round( ( (amount) - Math.floor(amount) ) *100);
  31.   return (amount<10 ? '.0' + amount : '.' + amount);
  32. }

用法:

<input name="TRANS_AMOUNT" type="text" id="TRANS_AMOUNT" size="15" onblur="this.value=outputMoney(this.value);" />

2009-04-28 更新

Popularity: 32%

Apache的Mod_rewrite 例子

四月 19th, 2008

防止GetRight和Curl来抓取网內的数据的代码

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_USER_AGENT} ^curl [OR]
RewriteCond %{HTTP_USER_AGENT} ^GetRight
RewriteRule ^.* - [F]

» More: Apache的Mod_rewrite 例子

Popularity: 31%

python非贪婪、多行匹配正则表达式例子

四月 14th, 2008

一些regular的tips:

1 非贪婪flag

>>> re.findall(r"a(\d+?)", "a23b")
        
['2']
>>>
re.findall(r"a(\d+)", "a23b")
        
['23']

注意比较这种情况:

>>> re.findall(r"a(\d+)b", "a23b")
        
['23']
>>>
re.findall(r"a(\d+?)b", "a23b")
        
['23']

2 如果你要多行匹配,那么加上re.S和re.M标志
re.S:.将会匹配换行符,默认.不会匹配换行符

>>> re.findall(r"a(\d+)b.+a(\d+)b", "a23b\na34b")
        
[]
>>>
re.findall(r"a(\d+)b.+a(\d+)b", "a23b\na34b", re.S)
        
[('23', '34')]
>>>

re.M:^$标志将会匹配每一行,默认^和$只会匹配第一行

>>> re.findall(r"^a(\d+)b", "a23b\na34b")
        
['23']
>>>
re.findall(r"^a(\d+)b", "a23b\na34b", re.M)
        
['23', '34']

但是,如果没有^标志,

>>> re.findall(r"a(\d+)b", "a23b\na23b")
        
['23', '23']

可见,是无需re.M

Popularity: 51%