用Sinatra编写博客应用
Sinatra是Blake Mizerany在2007年9月开发的Ruby语言的Web框架。它最突出的特点就是轻量、快速。更难能可贵的是,Sinatra的源代码只有一千多行。
Sinatra是Blake Mizerany在2007年9月开发的Ruby语言的Web框架。它最突出的特点就是轻量、快速。更难能可贵的是,Sinatra的源代码只有一千多行。
virtualbox 可以在cmd 中启动一个指定的虚拟机:
vagrant package --base 要导出的虚拟机id也就是名称 --out xxx.box(这里是导出的文件名)
前一阵申请了华为云的主机,一直没有这么用,最近想用起来试试
使用顺序和并发2种方式 正则表达式
并发就是快
package main
import "io/ioutil"
import "net/http"
import "fmt"
import "regexp"
import "time"
func testget(url string) string{
resp, err := http.Get(url)
if err != nil {
fmt.Println(err)
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println(err)
}
return get_title(string(body))
}
func testget2(url string, chann chan string ){
resp, err := http.Get(url)
if err != nil {
fmt.Println(err)
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println(err)
}
chann <- get_title(string(body))
}
func get_title(body string) string{
re := regexp.MustCompile("<title>(.*)</title>")
a := re.FindStringSubmatch(body)
if len(a) != 0{
return a[1]
}
return ""
}
func current_unixtimestamp() int32{
return int32(time.Now().Unix())
}
func main(){
urllist := [] string {"http://www.baidu.com","http://www.17173.com","http://www.hao123.com","http://www.126.com","http://www.oschina.net","http://www.simapple.com"}
single_start := current_unixtimestamp()
for _,v := range urllist {
fmt.Println(v)
baidubody := testget(v)
fmt.Println(baidubody)
}
single_end := current_unixtimestamp()
fmt.Printf("use %d seconds\n***********************************\n", single_end-single_start)
chann := make(chan string, 300)
single_start = current_unixtimestamp()
for _,v := range urllist {
fmt.Println(v)
go testget2(v, chann)
go fmt.Println(<-chann)
}
single_end = current_unixtimestamp()
fmt.Printf("use %d seconds", single_end-single_start)
}
TIOBE 2014年2月编程语言排行
最佳Linux发行版: Ubuntu
PHP发送POST请求的三种方式
class Request{
public static function post($url, $post_data = '', $timeout = 5){
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_POST, 1);
if($post_data != ''){
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
}
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_HEADER, false);
$file_contents = curl_exec($ch);
curl_close($ch);
return $file_contents;
}
public static function post2($url, $data){
$postdata = http_build_query(
$data
);
$opts = array('http' =>
array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $postdata
)
);
$context = stream_context_create($opts);
$result = file_get_contents($url, false, $context);
return $result;
}
public static function post3($host,$path,$query,$others=''){
$post="POST $path HTTP/1.1\r\nHost: $host\r\n";
$post.="Content-type: application/x-www-form-";
$post.="urlencoded\r\n${others}";
$post.="User-Agent: Mozilla 4.0\r\nContent-length: ";
$post.=strlen($query)."\r\nConnection: close\r\n\r\n$query";
$h=fsockopen($host,80);
fwrite($h,$post);
for($a=0,$r='';!$a;){
$b=fread($h,8192);
$r.=$b;
$a=(($b=='')?1:0);
}
fclose($h);
return $r;
}
}
WordPress 是一款非常流行的CMS,包含有用户管理和访问控制.很多流行的网站都是建立在以WordPress为后台的基础之上 而及时的更新 优秀的社区 丰富的文档 以及很好的论坛支持,让WP继续向前快速发展.