手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表2013年08月的文章

转:2011-10-12 PHP重用curl句柄, CURLOPT_HTTPGET的BUG

转的文章。主要是因为经常会用curl来抓取数据。而且几乎是http_get和http_post混用。但我没遇上这个BUG。不清楚以后会不会遇上,所以我先记录一下,以防万一遇到时候不知道怎么做。

原文地址来自:http://www.ideawu.net/blog/archives/622.html

重用一个CURL句柄时, 发现curl_setopt($ch, CURLOPT_HTTPGET, TRUE) 不起作用. 期望在调用这条语句之后发起请求, 应该发送的是GET, 但看服务器log, 却使用了和前一次请求相同的HTTP方法.

PHP脚本:

<?php $url = 'http://www.ideawu.net/';  $ch = curl_init($url); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_exec($ch);  curl_setopt($ch, CURLOPT_HTTPGET, true); // 错误! BUG curl_exec($ch);  curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); // 正确 curl_exec($ch); ?>

web server log:

124.127.130.50 "2011-10-12 18:55:09" "POST / HTTP/1.1" 200 3516 "-" www.ideawu.net 124.127.130.50 "2011-10-12 18:55:09" "POST / HTTP/1.1" 200 3516 "-" www.ideawu.net 124.127.130.50 "2011-10-12 18:55:09" "GET / HTTP/1.1" 200 3516 "-" www.ideawu.net

这个BUG目前还没找到相关的资料.

补充: 不仅仅是CURLOPT_HTTPGET, CURLOPT_POST也有同样的问题. 所以, 结论是: 只有CURLOPT_CUSTOMREQUEST才是正确的方法.

 

Tags: curl

go开发二三事

在用go写程序的时候,遇到了一点点的事情。记录了下来

 
1、字符串转[]byte,网上有代码:MakeSlice(这是一个函数),也可以直接[]byte(string)
2、byte转字符串,这个就比较简单了 string([]byte)
3、byte转int。这时候就只能用 binary.Read(bytes.NewBuffer(buf[0:4]),binary.BigEndian, &outdata )
4、conn.Read的时候。如果我知道了剩下数据的长度时,我想 var x [len]byte,但这样会报错,out of array size,所以,经过指点是可以 x:=make([]byte,len),当然也可以x:=make([]byte,0,len),这里面其实就是Cap和len的关系了
 
---分隔线
对于上述第3点,群里的Larry说,其实可以通过binary.BigEndian.Uint32(buf[0:4])来转换。试了一下,果然可以,而且这样做之后,连bytes包也不用加载了。
再看了下文档,原来 binary.BigEndian implents ByteOrder,而ByteOrder这个struct有几个方法:
XML/HTML代码
  1. type ByteOrder interface {  
  2.         Uint16([]byte) uint16  
  3.         Uint32([]byte) uint32  
  4.         Uint64([]byte) uint64  
  5.         PutUint16([]byte, uint16)  
  6.         PutUint32([]byte, uint32)  
  7.         PutUint64([]byte, uint64)  
  8.         String() string  
  9. }  

实在太实用了

用ST2写go程序时遇到的坑

昨天下午遇到一件非常诡异的事情,即,我在程序里明明有一个公开的方法,比如:

func Fuck{

    fmt.Println("fuck")

}

但是在调用的时候一直不显示,而是提示我方法不存在。我为此折腾了1个多小时,后来到群里一问,一哥们立刻说:你试试用go run -a xxx.go

于是试用了一下,正常了。

这哥们解释说:st2等IDE为了能够做代码提示,往往都会预编译成.a的文件的,所以需要用-a参数。

做个记录。如果你遇到这个问题,也可以尝试一下

Tags: st2

KDS:外牌上高架扣分吗?

 外牌上高架扣分吗?

以下的回复来自KDS,部分字眼不习惯的请斟酌:
XML/HTML代码
  1. 搞清楚么就可以了 就两种情况:  
  2.   
  3. 1。一切没和真人CT交流的违章 全部算在车身上。(电子CT拍到额 违章停车额) 只罚钱不扣分。  
  4.   
  5. 2.被活人CT栏下来的违章 就是个BY邦侬敬礼以后问侬要证额 就要罚钱和扣分了。  
  6.   
  7. 验车: 车牌本地的1+2要消特 否则验不了。  
  8. 审驾驶证: 驾驶员个人的2要消特 否则不让验。  
 
 
 

Tags: 高架

dwz的dialog的曲线救国

 dwz其实在几年前就用过。但最近在做一个后台,于是又准备重操起来

在使用dwz的dialog的时候,我想利用它做一个登录框,但明显我不可能,也不允许用户关闭这个dialog,但dwz默认的dialog都是有一个最大化和关闭的。最多只是close可以传递一个能够return boolean的function。。。。
 
虽然我在加dwz作者QQ的时候,他说加一个display:none的CSS属性就可以了,但说老实话,我又不可能加全局的。我能干嘛?针对这个ID?在创建的时候指定固定的ID?然后加CSS?或许这是一个办法,但我后来是曲线救国了
 
1、创建的时候,close为一个function,调用param中的值。alert一个message,然后return false
2、在表单提交 的时候,如果为false,那当然没关系 。如果是为true,怎么关闭窗口呢?
因为我设置了close为function弹出一个提示,那么就算有提示,也还是会弹个窗。所以在这里我曲线救国
在最后closeCurren()的时候,我先设置data('close',''),借此屏蔽close的方式。(当然只能在返回正确的时候才可以这么做。不然,这个关闭的提示就被取消了)
 
至此曲线救国完成

Tags: dwz, jui

Records:181234