月度归档:2014年03月

golang python 简单异步服务器

package main
 
import (
    "net/http"
    "os/exec"
    "strings"
    "bytes"
    "log"
)
 
func SayHello(w http.ResponseWriter, req *http.Request) {
    w.Write([]byte("Hello"))
    println("begin")
    // time.Sleep(10*time.Second)
    cmd:=exec.Command("ping", "www.baidu.com", "-c 3")
    cmd.Stdin = strings.NewReader("some input")
    var out bytes.Buffer
    cmd.Stdout = &out
    err := cmd.Run()
    if err != nil {
    log.Fatal(err)
	}
	println("in all caps:\n", out.String())
    println("sleep_complate")
}
 
func main() {
    http.HandleFunc("/hello", SayHello)
    http.ListenAndServe(":8001", nil)
}



对应的python版本:
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
import time
import os
 
from tornado import gen
from tornado.concurrent import run_on_executor
from concurrent.futures import ThreadPoolExecutor 
 
 
from tornado.options import define, options
define("port", default=8000, help="run on the given port", type=int)
 
class IndexHandler(tornado.web.RequestHandler):
    executor = ThreadPoolExecutor(10)
 
    @tornado.gen.coroutine
    def get(self):
        print "begin"
        #time.sleep(10)
        yield self.pin()
        self.finish()
 
    @run_on_executor
    def pin(self):
        os.system("ping -c 5 www.baidu.com")
        print "ping_end"
 
if __name__ == "__main__":
    tornado.options.parse_command_line()
    app = tornado.web.Application(handlers=[(r"/sleep", IndexHandler)])
    http_server = tornado.httpserver.HTTPServer(app)
    http_server.listen(options.port)
    tornado.ioloop.IOLoop.instance().start()


			

VPS出现大量 ARP Who as 的原因

以为VPS被搞。抓包一看,发现大量ARP Who as 

272.964485 Cisco_01:d4:00 -> Broadcast    ARP Who has 192.161.191.156?  Tell 192.161.191.129
280.948180 Cisco_01:d4:00 -> Broadcast    ARP Who has 192.161.191.196?  Tell 192.161.191.129


经过测试,只要外部网络ping同一网段下的不存在的IP,就会出现这条广播。 


修复,拒绝接收广播。

tshark

#tshark 获取http请求头

tshark -V -Y http.request tcp port 80 or tcp port 443

tshark  -R 'http.request' -i eth1 -T fields -e text



#新版本
tshark  -Y 'http.request' -i eth0 -T fields -e text | grep txt

PHP Curl提交文件

PHP Curl提交文件

<?php 
$url = "http://api.test.com/suanfa"; 
$post_data = array ( 
    "foo" => "bar", 
    // 要上传的本地文件地址 
    "upload" => "@D:/www/11.gif" 
); 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); 
$output = curl_exec($ch); 
curl_close($ch); 
echo $output; 
?> 

为什么人民币升值影响出口

假设人民币升值前,1美元兑换10元人民币,即1美元=10元人民币。
现在人民币升值后,1美元兑换7元人民币, 即1美元=7元人民币。
以前要人民币10元才能换1美元,现在用人民币7元就能换1美元,人民币是不是升值了。
假设你准备用10万人民币出国学习或旅游。
升值前可换1万美元,即10万/10=1万。
升值后可换1.428万美元,即10万/7=1.428万。人民币升值后出国是不是更划得来。
下面谈出口,假设一家生产毛巾的公司为美国生产毛巾,平均一条毛巾出口售价1美元,假设本次出口合同是1万条,总价值就是1万美元,对吧,美国商人总付款就是1万美元。这家中国公司把出口收入换成人民币会是什么情况呢?
人民币升值前,这家中国公司把美元换成人民币的收入是10万人民币,即:1万美元*10=10万人民币,对吧。
人民币升值后,则只能换成7万人民币,即1万美元*7=7万人民币,对吧。 人民币升值后,这家公司出口同样的产品,收入反而下降了,是不是不利于出口。


人民币升值对出口不利?
一文具盒=8快钱人民币,以前出口卖1美元,人民币升值到眼下¥6.7元/美元,出口得卖1.2美元才能换回人民币8元,国外消费者原来1美元即可买的文具盒,现在涨价到1.2美元才能买到,涨价20%,文具美元价贵了,国外消费者购买的数量就下降了,我们出口的文具数量减少了,当然不利呀!
若文具现在不变仍卖1美元,只能收回6.7元人民币,比以前少了人民币1.3元,我们的利润更少了,甚至亏本,你说还能有利吗?

为什么人民币对外贬值,房地产市场将受冲击

1.人民币贬值,国际资金将会出逃。
2.国际资金出逃,国际资金所投资的相关资产,价格就会下跌。
3.而国际资金的一个主要投资产业,就是城市的房地产市场。

所以,房价将会受到冲击。


国际资金为何会出逃呢,我不太懂,感觉贬值了国际资金进入会成本更低呀,出逃干啥?求科普一下


这样,举个例。
1.如果你是美国人,手上有60万美元。你听说人民币在升值(如今天10元人民币可换6美元,下个月可换8美元),那你会不会把你手上的60万美元换成100万元人民币,然后等到下个月升值之后再用100万人民币换成80万美元呢?瞧,你在美国家睡一个月觉,手上就像变魔术般多了20万美元,这事你会不干吗?所以聪明的国际投资者一看人民币在升值,就一定会让他们的资金进入中国。直到人民币不能再升值的时候,他们就会换回美元。过程用式子简洁表示就是:60万美元→100万人民币→80万美元。
2.以上是聪明的投资者的做法,但更聪明的投资者会怎么样呢?“60万美元→100万人民币→80万美元”这个过程还不能满足他赚钱的渴望。他想,能不能这样呢:60万美元→100万人民币→200万人民币→160万美元?关键之处就是100万人民币怎样变成200万人民币?存在中国的银行里绝无可能。怎样做呢?有办法,在中国买投资产品,最典型的就是中国的房子(没办法他只能买中国的房子,因为他拿着一堆人民币无法去买印度的房子,那要用卢比买;他也没法去买俄罗斯的房子,那要用卢布买)。于是国际资金就买了一大堆中国房子。
3.当人民币贬值时,由于第1点所述,国际资金当然就要撤场了,是时候换回他的美元了。可是别忘了,他的200万人民币还压在房子下呢,他要撤场当然要先卖掉房子,这样他才有人民币来换回美元。所以房产抛售潮就开始了,当房产掀起抛售潮的时候,价格当然就要下跌了。

php获取汉字拼音首字母的函数

现实中我们经常看到这样的说明,排名不分先后,按姓名首字母进行排序。这是中国人大多数使用的排序方法。那么在php程序中该如何操作呢?下面就分享一下在php程序中获取汉字拼音的首字母的方法,在网上搜到的大多数是有问题的,这个可是经过作者实践应用过的,真的可以使用的哦。

//php获取中文字符拼音首字母
function getFirstCharter($str){
	if(empty($str)){return '';}
	$fchar=ord($str{0});
	if($fchar>=ord('A')&&$fchar<=ord('z')) return strtoupper($str{0});
	$s1=iconv('UTF-8','gb2312',$str);
	$s2=iconv('gb2312','UTF-8',$s1);
	$s=$s2==$str?$s1:$str;
	$asc=ord($s{0})*256+ord($s{1})-65536;
	if($asc>=-20319&&$asc<=-20284) return 'A';
	if($asc>=-20283&&$asc<=-19776) return 'B';
	if($asc>=-19775&&$asc<=-19219) return 'C';
	if($asc>=-19218&&$asc<=-18711) return 'D';
	if($asc>=-18710&&$asc<=-18527) return 'E';
	if($asc>=-18526&&$asc<=-18240) return 'F';
	if($asc>=-18239&&$asc<=-17923) return 'G';
	if($asc>=-17922&&$asc<=-17418) return 'H';
	if($asc>=-17417&&$asc<=-16475) return 'J';
	if($asc>=-16474&&$asc<=-16213) return 'K';
	if($asc>=-16212&&$asc<=-15641) return 'L';
	if($asc>=-15640&&$asc<=-15166) return 'M';
	if($asc>=-15165&&$asc<=-14923) return 'N';
	if($asc>=-14922&&$asc<=-14915) return 'O';
	if($asc>=-14914&&$asc<=-14631) return 'P';
	if($asc>=-14630&&$asc<=-14150) return 'Q';
	if($asc>=-14149&&$asc<=-14091) return 'R';
	if($asc>=-14090&&$asc<=-13319) return 'S';
	if($asc>=-13318&&$asc<=-12839) return 'T';
	if($asc>=-12838&&$asc<=-12557) return 'W';
	if($asc>=-12556&&$asc<=-11848) return 'X';
	if($asc>=-11847&&$asc<=-11056) return 'Y';
	if($asc>=-11055&&$asc<=-10247) return 'Z';
	return null;
}

举例如下:

echo getFirstCharter('程序员');//结果将输出:C

$mysql_server_name='127.0.0.1'; //改成自己的mysql数据库服务器
$mysql_username='用户'; //改成自己的mysql数据库用户名
$mysql_password='密码'; //改成自己的mysql数据库密码
$mysql_database='数据库'; //改成自己的mysql数据库名

mysql_connect('127.0.0.1', $mysql_username,$mysql_password) or die('database not access');
mysql_select_db($mysql_database);
mysql_query("SET NAMES 'utf8'");

$equery2 = " select title from 表1 ";
$result2=mysql_query($equery2); 
while ($row = mysql_fetch_array($result2, MYSQL_BOTH)) 
{
$title=$row["title"];
if (ord($title)>128) { //汉字开头

echo $letter=getfirstchar($title);

}else if(ord($title)>=48 and ord($title)<=57){ //数字开头

echo $letter=iconv_substr($title,0,1,'utf-8');

}else if(ord($title)>=65 and ord($title)<=90){ //大写英文开头

echo $letter=iconv_substr($title,0,1,'utf-8');


}else if(ord($title)>=97 and ord($title)<=122){ //小写英文开头

echo $letter=iconv_substr($title,0,1,'utf-8');

}
}

function getfirstchar($s0){ 
$s=iconv("UTF-8","gb2312", $s0); 
$asc=ord($s{0})*256+ord($s{1})-65536; 
if($asc>=-20319 and $asc<=-20284)return "A"; 
if($asc>=-20283 and $asc<=-19776)return "B"; if($asc>=-19775 and $asc<=-19219)return "C";
if($asc>=-19218 and $asc<=-18711)return "D"; 
if($asc>=-18710 and $asc<=-18527)return "E"; 
if($asc>=-18526 and $asc<=-18240)return "F"; 
if($asc>=-18239 and $asc<=-17923)return "G"; 
if($asc>=-17922 and $asc<=-17418)return "H"; 
if($asc>=-17417 and $asc<=-16475)return "J"; 
if($asc>=-16474 and $asc<=-16213)return "K"; 
if($asc>=-16212 and $asc<=-15641)return "L"; 
if($asc>=-15640 and $asc<=-15166)return "M"; 
if($asc>=-15165 and $asc<=-14923)return "N"; 
if($asc>=-14922 and $asc<=-14915)return "O"; 
if($asc>=-14914 and $asc<=-14631)return "P"; 
if($asc>=-14630 and $asc<=-14150)return "Q"; 
if($asc>=-14149 and $asc<=-14091)return "R"; 
if($asc>=-14090 and $asc<=-13319)return "S"; 
if($asc>=-13318 and $asc<=-12839)return "T"; 
if($asc>=-12838 and $asc<=-12557)return "W"; 
if($asc>=-12556 and $asc<=-11848)return "X"; 
if($asc>=-11847 and $asc<=-11056)return "Y"; 
if($asc>=-11055 and $asc<=-10247)return "Z"; 
return false; 
}