Submitted by gouki on 2013, August 28, 6:47 PM
用Go来处理GET实在是太简单了。。
GET
- u, _ := url.Parse(SMS_URL)
- q := u.Query()
- q.Set("username", SMS_USER)
- q.Set("password", SMS_PASS)
- q.Set("mobile", s.To)
- q.Set("message", s.Content)
- u.RawQuery = q.Encode()
- res,err:=http.GET(u.String());
POST分多种,一种是key/value,一种是纯body,还有。。能够上传文件的。这里先不谈上传文件(我还没有用到)
XML/HTML代码
- body := bytes.NewBuffer(msg)
- res, err := http.Post(http://api.xxx.com/, "application/x-www-form-urlencoded", body)
-
- v := make(url.Values)
- v.Set("email", "anything@stathat.com")
- v.Set("stat", "messages sent - female to male")
- v.Set("count", "1")
- res, err := http.PostForm("http://api.xxx.com/", values)
处理res也非常方便:
XML/HTML代码
- if err != nil {
- log.Fatal(err)
- return
- }
- result, err := ioutil.ReadAll(res.Body)
- res.Body.Close()
- if err != nil {
- log.Fatal(err)
- return
- }
- fmt.Printf("%s", result)
就是这样的方便
Go | 评论:0
| 阅读:20384
Submitted by gouki on 2013, August 28, 11:49 AM
不要以为扫雷 就是游戏扫雷,其实只不过是扫清程序中可能会遇到的坑。比如原作者写的if else中不能重复定义变量就是一个坑 。我原来想,我要定义一个变量,但他可能会变,特别是[]byte,长度只能用常量。这可怎么办,于是我想直接定义在if else中吧。if a { var a1 [128]byte} elseif b { var a1[256]byte},结果嘛,当然是报错的。。后来才发现这是个坑。当然后面我也解决了这个问题了。。。换个角度make一下。。make的时候就可以用变量了。
以下内容来自:http://my.oschina.net/meilihao/blog/123698
XML/HTML代码
- 1.//实现前导零出错:sn:="7DC3"+fmt.printf("%05d", uint16(rawdata[2])&0xFF+uint16(rawdata[1]))
-
- &:[fmt.Printf返回的是一个int和一个error,不能与string用+号一起操作]
-
- sn := fmt.Sprintf("%s%05d", "7DC3", uint16(rawdata[2])&0xFF+uint16(rawdata[1]))或fmt.Sprintf("7DC3%05d",uint16(rawdata[2])&0xFF+uint16(rawdata[1]))
-
- 2.//fmt.Sprint不能输出
-
- &:根据fmt包API描述,fmt.Sprint是返回字符串,与fmt.Print的标准输出不同.
-
- 3.//go run *.go,且*.go引用同一packge中其他文件的函数时,提示undefined "函数名"
-
- &:[go run 时,只会编译当前文件再运行,没有导入其他文件的自定义函数]要先go build 再运行./*
-
- 4.//func FormatInt(i int64, base int) string,base的意思
-
- &:base表示进制,如八进制(8),十进制(10)等
-
- 5.//在if..else中定义同一个变量出错
-
- &:在golang语法中必须在外面先定义好,再在if..else结构中使用.
-
- 6.//go build/install 出错
-
- &:执行命令时需两个条件GOPATH和当前目录下有*.go的文件
-
- 7.//panic template: unexpected EOF
-
- &:可能是{{}}标签没有闭合
-
- 8.//error信息中template(*Template).Execute
-
- &:检查顺序:先确认go代码正确,然后看调用的模板名称是否正确或已存在,最后检查模板中的golang标签是否正确(或关闭)
-
- 9.//http.Get("www.ip138.com") unsupported protocol scheme ""
-
- &:使用http.Get时必须写明使用的协议,应使用http.Get("http://www.ip138.com")
我另外遇到一个问题就是我定义了一下struct,然后我在init前,就
var a struct,但我在使用a.X = 1的时候就报错了。理由是我的a.X没有初始化。起初没看代码说明,后来仔细看了才发现。。。不得已,在var a struct下面加了一行var a.X int。(当然,这得和 sturct中的结构一致)
Go | 评论:0
| 阅读:19477
Submitted by gouki on 2013, August 27, 10:42 PM
因为最近在写点东西遇到了这方面的问题。所以关注了一下,这段内容是摘抄来的。因为以前用PHP的时候,一般就是shm_attach/msg_get_queue/ 管道等
有些东西不是特别熟,所以记录下来做笔记
Linux下进程间通信大致有以下几种:(来自:http://golang.usr.cc/blog-1403-3071.html)
- 1.socket
- 2.管道(包括匿名管道适用于父子进程,命名管道)
- 3.信号量
- 4.共享内存
- 5.消息队列
-
- 1.socket
- socket可以用于本地进程间通信也可以用于远程间,是最常用的。
- 2.管道--匿名管道
- 一般用pipe创建,在父子间通信。在父进程中关闭读/写管道,在子进程中关闭写/读管道。
- 2.管道--命名管道
- 一般用mkfifo来创建。如果没有说明管道是非阻塞的,那么一个为读打开的管道将阻塞直到有进程为写打开此FIFO。同样如果为写打开的管道将阻塞直到有进程为读打开此FIFO。
- 3.信号量
- 一个进程可以用kill发送信号至另外一个进程。
- 4.共享内存
- 使用函数:shmget、shmat、shmctl、shmdt
- 用shmget函数得到一块内存,并用shmat设置为允许本进程使用这块共享内存。使用完以后用shmdt删除内存块。
- 5.消息队列
- 使用函数:msgget、msgsnd、msgrcv、msgctl
- 使用步骤同上。
Linux | 评论:0
| 阅读:15468
Submitted by gouki on 2013, August 27, 1:01 PM
自从GAE出来后。什么SAE,ACE,BAE什么什么的就全部出来了
ACE我跑几个程序一直有问题,禁用了一些函数,所以我最近在看BAE。速度也不错,也能绑域名。所以它就成了首选。但BAE有一个坑 需要注意
如果你的程序的上传没有改过。那么一般都是上传在自己当前的项目目录里,而这个目录由于没有经过svn上传,所以它并不在版本库里,因此,一旦碰到BAE来一个svn迁移的事件。或者更新的时候,极有可能你上传的那些附件会全部丢失。
慎重。我就觉得BAE就象一个实验室。我们上传代码到BAE的svn库里。然后svn库会自动 checkout到BAE的平台。于是。。如果他们要迁移了。这些数据应该都是直接delete。然后再checkout一份。
建议找个程序,上传到BAE自带的存储中(就象sae的存储)。
Tags: bae
PHP | 评论:0
| 阅读:15486
Submitted by gouki on 2013, August 26, 12:12 PM
这个暑假,带了小朋友看了几部电影,但我估计印象最深 的可能就是这个怪兽大学了
我爱灰太狼,说实话,不好看,反正小朋友看了一会就在问我,还有多久结束
开心超人,做的还行吧,但是有个很大的问题,很多笑点都是成人才能看得懂的。比如微博转发数,还有一些关于社会的冷笑话(房奴)之类的。小孩子们根本就不懂啊。
然后就是这个怪兽大学了,固然是3D对他来说是新鲜玩意,但是那些逼真的效果以及徐峥等的配音,都确实让人觉得,他们的配音是用心了的。不得不说,皮克斯的3D真心强。太TMD逼真了。对比起国内的那些3D,纯粹是在糟蹋3D
除此之外,自己就看了一个所谓4D版的环太平洋,我老婆就说了,这明显是奥特曼+钢铁侠嘛。第一次在环球港看这种片子,觉得很新鲜,但。。真心不建议看4D吃爆米花,毕竟谁也不知道什么时候就会有水突然漂出来。
当然更值得幸运的是,我们去的时候没遇上砍人,我们是安全的。(欲知砍人情况,请搜索:环球港 砍人)
怪兽大学我就不多剧透,值得一看。成人也OK
Misc | 评论:0
| 阅读:12983