代码改变世界

随笔分类 -  Golang

Run Revel Apps on Heroku

2013-01-07 15:55 by Danny.tian, 388 阅读, 收藏, 编辑
摘要: UPDATE: There have been some updates to my Revel Heroku Buildpack that make it work better and with newer versions of Revel.Check out the details.Revelis a Play-like web framework for Go. I’m new to the Go programming language but I’ve heard good things. So I thought I’d take Revel for a spin and ge 阅读全文

Go Web开发之Revel - 拦截器

2013-01-07 15:18 by Danny.tian, 3337 阅读, 收藏, 编辑
摘要: 一个拦截器是一个框架在调用action方法前或后调用的函数. 它允许一种AOP的形式, 它经常被用于做下面几种事情:Request loggingError handlingStats keeping在Revel里, 一个拦截器能接受两种形式:1. 函数拦截器: 一个函数满足InterceptorFunc接口没有访问特定的应用程序Controller被调用在应用程序中可以应用于任意或全部Controller2. 方法拦截器:一个controller的方法接受没有参数和rev.Result的返回值可以只拦截受约束的Controller可以修改被调用的controller作为想得到的拦截器按照被添 阅读全文

GO FMT包 翻译

2013-01-07 09:47 by Danny.tian, 472 阅读, 收藏, 编辑
摘要: Fmt包import "fmt"简介▾Package fmt包含有格式化I/O函数,类似于C语言的printf和scanf。格式字符串的规则来源于C但更简单一些。输出格式:一般:%v 基本格式的值。当输出结构体时,扩展标志(%+v)添加成员的名字。the value in a default format. when printing structs, the plus flag (%+v) adds field names%#v 值的Go语法表示。%T 值的类型的Go语法表示。%% 百分号。布尔型:%t 值的true或false整型:%b 二进制表示%c 数值对应的Uni 阅读全文

Go Web开发之Revel - 模板

2013-01-07 09:44 by Danny.tian, 3649 阅读, 收藏, 编辑
摘要: Revel 使用Go Templates. 它搜索两个目录来查找模板:应用程序的 views 目录和全部子目录Revel自己的 Templates 目录Revel为错误页面提供模板(在开发模式中显示友好的编译错误), 但是应用程序可以通过创建一个相同名字的模板来重写它, 例如app/views/errors/500.html渲染上下文Revel使用RenderArgs的数据字典执行模板. 除了应用程序提供的数据外, Revel提供了下面的入口:"errors" -Validation.ErrorMap返回的字典"flash" - 前一个请求的flash数 阅读全文

Go Web开发之Revel - 返回值

2013-01-06 18:09 by Danny.tian, 3609 阅读, 收藏, 编辑
摘要: 返回值必须返回一个 rev.Result, 它处理response的生成并依附于一个简单的接口:type Result interface { Apply(req *Request, resp *Response)}rev.Controller提供几个方法来生成结果:Render, RenderTemplate - 渲染一个模板, 传递参数.RenderJson, RenderXml - 序列化一个结构的json或xml.RenderText - 返回一个纯文本response.Redirect - 重定向到另一个action或URLRenderFile - 返回一个文件, 通常作为一个... 阅读全文

交叉编译Go程序

2013-01-06 15:06 by Danny.tian, 1154 阅读, 收藏, 编辑
摘要: (1)首先进入go/src 源码所在目录,执行如下命令创建目标平台所需的包和工具文件。$ cd /usr/local/go/src$ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 ./make.bash如果是 Windows 则修改 GOOS 即可。$ CGO_ENABLED=0 GOOS=windows GOARCH=amd64 ./make.bash(2) 现在可以编译 Linux 和 Windows 平台所需的执行文件了。$ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build$ CGO_ENABLED=0 GOOS. 阅读全文

从零到 Go:24 小时内登上 Google 主页的 Go 语言应用“火鸡”doodle 开发纪实

2013-01-06 14:38 by Danny.tian, 438 阅读, 收藏, 编辑
摘要: 从零到 Go:24 小时内登上 Google 主页的 Go 语言应用“火鸡”doodle 开发纪实 阅读全文

Go Web开发之Revel - Session/Flash

2013-01-06 09:55 by Danny.tian, 3292 阅读, 收藏, 编辑
摘要: Revel提供两个基于cookie的存储机制.// A signed cookie (and thus limited to 4kb in size).// Restriction: Keys may not have a colon in them.type Session map[string]string// Flash represents a cookie that gets overwritten on each request.// It allows data to be stored across one page at a time.// This is commonly 阅读全文

Go Web开发之Revel - 验证

2013-01-05 10:24 by Danny.tian, 2620 阅读, 收藏, 编辑
摘要: Revel提供内建的函数来验证参数.这里有一对部件:一个验证上下文收集器和消息验证错误(keys和消息)帮助函数检查数据并把错误信息加入上下文一个模板函数从验证上下的key获得错误信息更深入的了解验证可以看一下 示例demo内联错误信息这个示例演示用内联错误信息验证字段.func (c MyApp) SaveUser(username string) rev.Result { // Username (required) must be between 4 and 15 letters (inclusive). c.Validation.Required(username) ... 阅读全文

Go Web开发之Revel - 参数绑定

2013-01-04 12:36 by Danny.tian, 3521 阅读, 收藏, 编辑
摘要: Revel尝试尽可能简单的转换参数到Go的类型.这个转换从string到另一种类型被称为数据绑定.参数全部的请求参数被收集到一个Params对象中.它包括如下:URL 路径参数URL 查询参数表单值 (Multipart or not)上传文件定义如下(godoc)type Params struct { url.Values Files map[string][]*multipart.FileHeader}这个嵌入的url.Values (godoc)提供了访问简单值的方式,但是开发人员将使用更容易的Revel数据绑定机制来查找非字符串值.Action参数参数可以直接作为方法的参... 阅读全文

Go Web开发之Revel - 路由

2013-01-03 14:33 by Danny.tian, 4295 阅读, 收藏, 编辑
摘要: 路由使用原始的Play!语法定义,定义被保存在routes文件中.基础语法:(METHOD) (URL Pattern) (Controller.Action)下面这个例子展示了所有的使用方法# conf/routes# This file defines all application routes (Higher priority routes first)GET /login Application.Login <b># 一个简单的路径</b>GET /hotels/? Hotels.Index ... 阅读全文

Go Web开发之Revel - 概述

2013-01-03 10:43 by Danny.tian, 1672 阅读, 收藏, 编辑
摘要: 一个Controller是任意嵌入rev.Controller的类型 (直接或间接嵌入)典型的:type AppController struct { *rev.Controller}目前,rev.Controller必须作为struct中的第一个元素rev.Controller是请求的上下文.它包括请求和相应数据.详情请见the godoc,下面是Controller的定义type Controller struct { Name string // The controller name, e.g. "Application" Type ... 阅读全文

Go Web开发之Revel - Revel运行原理

2013-01-03 10:17 by Danny.tian, 3954 阅读, 收藏, 编辑
摘要: 命令行工具运行harness,harness作为一个反向代理运行Revel监听9000端口和app的文件更改Revel转发请求到运行中的Server,如果server没有运行或者源代码被改变了,在最新的请求中Revel将重建应用程序.如果Revel需要重建应用程序,harness将分析源代码并生成app/tmp/main.go文件,这个文件包括全部的必要的元信息以支持能够运行在真正的app server上Revel使用go build编译应用程序,如果有一个编译错误,它将显示错误页帮助用户发现错误如果应用程序编译成功,当Revel检查到app server已经完成启动,它将运行应用程序并转发请 阅读全文

来自#ECUG#的360的go实战——PPT (收藏)

2013-01-02 23:11 by Danny.tian, 541 阅读, 收藏, 编辑
摘要: http://files.cnblogs.com/ztiandan/Go.ppt 阅读全文

Go Web开发之Revel - 组织结构

2013-01-02 22:37 by Danny.tian, 3668 阅读, 收藏, 编辑
摘要: Revel需要它自身和用户应用程序被安装到GOPATH下面.实例目录结构gocode GOPATH 根目录 src GOPATH src 目录 revel Revel 源代码鲁姆 ... sample 用户应用程序根目录 app App 源 controllers App controllers models App 域模型 views ... 阅读全文

Go Web开发之Revel - 概念

2012-12-28 15:58 by Danny.tian, 3198 阅读, 收藏, 编辑
摘要: MVC摘要:Model:用于描述你的应用程序域的基本数据对象,Model也包含特定领域的逻辑为了查询和更新数据View:描述怎样展示和操作数据Controller:处理请求的执行,他们执行用户期待的Action,他们决定哪个视图将被用于显示,他们还为视图准备和提供必要的数据用于渲染视图每个请求产生一个Goroutine Revel构建于Go HTTP server之上,它为每一个进来的请求创建一个go-routine(轻量级线程),这意味着你的代码可以自由的阻塞,但必须处理并发请求处理。Controllers and Actions 每一个HTTP请求调用一个action,它处理请求和输出.. 阅读全文

Go Web开发之Revel - 介绍

2012-12-28 15:53 by Danny.tian, 3276 阅读, 收藏, 编辑
摘要: Revel框架的资源如下:Revel的新东东? 概念.Mailing ListSearch our mailing list (revel-framework@googlegroups.com)帮组邮箱Send an email to the revel-framework@googlegroups.comBug提交Open an issue on github. 阅读全文

Go Web开发之Revel - Hello World

2012-12-28 14:43 by Danny.tian, 3051 阅读, 收藏, 编辑
摘要: 下面结合之前创建的myapp做一个提交表单的demo首先编辑app/views/Application/Index.html模板文件添加一下form表单<form action="/Application/Hello" method="GET"> <input type="text" name="myName" /> <input type="submit" value="Say hello!" /></form>刷新表单我们提 阅读全文

Go Web开发之Revel - 网页请求处理流程

2012-12-28 12:59 by Danny.tian, 4810 阅读, 收藏, 编辑
摘要: 我们之前已经已经创建了myapp的应用,现在我们来看看revel是如何处理一个浏览器访问http://localhost:9000的请求的。Routes(路由)首先revel会检查conf/routes文件,这个文件包含一个路由,如下:GET / Application.Index这个路由信息告诉revel当访问 / 路径是应该调用Application Controller的Index方法Actions(行为)下面我们我们来看一下Controll中的Action,所在路径为app/controllers/ap... 阅读全文

Go Web开发之Revel - 创建你的第一个App

2012-12-28 11:35 by Danny.tian, 4703 阅读, 收藏, 编辑
摘要: 使用下面的revel命令行工具在你的GOPATH中创建一个空的项目并运行打开你的浏览器访问http://localhost:9000,出现下图表示程序可以正常工作了至此结束。 阅读全文