Submitted by gouki on 2013, August 22, 10:55 PM
转的文章。主要是因为经常会用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
PHP | 评论:0
| 阅读:14672
Submitted by gouki on 2013, August 21, 9:46 PM
在用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代码
- type ByteOrder interface {
- Uint16([]byte) uint16
- Uint32([]byte) uint32
- Uint64([]byte) uint64
- PutUint16([]byte, uint16)
- PutUint32([]byte, uint32)
- PutUint64([]byte, uint64)
- String() string
- }
实在太实用了
Go | 评论:0
| 阅读:14516
Submitted by gouki on 2013, August 20, 2:15 PM
昨天下午遇到一件非常诡异的事情,即,我在程序里明明有一个公开的方法,比如:
func Fuck{
fmt.Println("fuck")
}
但是在调用的时候一直不显示,而是提示我方法不存在。我为此折腾了1个多小时,后来到群里一问,一哥们立刻说:你试试用go run -a xxx.go
于是试用了一下,正常了。
这哥们解释说:st2等IDE为了能够做代码提示,往往都会预编译成.a的文件的,所以需要用-a参数。
做个记录。如果你遇到这个问题,也可以尝试一下
Tags: st2
Go | 评论:0
| 阅读:14349
Submitted by gouki on 2013, August 19, 2:08 PM
外牌上高架扣分吗?
以下的回复来自KDS,部分字眼不习惯的请斟酌:
XML/HTML代码
- 搞清楚么就可以了 就两种情况:
-
- 1。一切没和真人CT交流的违章 全部算在车身上。(电子CT拍到额 违章停车额) 只罚钱不扣分。
-
- 2.被活人CT栏下来的违章 就是个BY邦侬敬礼以后问侬要证额 就要罚钱和扣分了。
-
- 验车: 车牌本地的1+2要消特 否则验不了。
- 审驾驶证: 驾驶员个人的2要消特 否则不让验。
Tags: 高架
Misc | 评论:0
| 阅读:14366
Submitted by gouki on 2013, August 18, 9:50 PM
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
Javascript | 评论:0
| 阅读:17022