代码改变世界

随笔分类 -  Golang

Revel示例 - 验证

2013-01-30 17:00 by Danny.tian, 1304 阅读, 收藏, 编辑
摘要: 验证validation应用程序展示了每一种验证系统的使用方式。validation/app/ models user.go # User struct and validation routine. controllers app.go # Introduction sample1.go # Validating simple fields with error messages shown at top of page. sample2.go # Validating simple fields wi... 阅读全文

Revel示例 - 聊天室

2013-01-23 17:24 by Danny.tian, 6078 阅读, 收藏, 编辑
摘要: 聊天室聊天室应用程序示例如下:使用channel来实现一个聊天室(pub-sub模式),俗称的发布-订阅模式使用Comet和Websockets应用程序的文件结构如下:chat/app/ chatroom # Chat room routines chatroom.go controllers app.go # The welcome screen, allowing user to pick a technology refresh.go # Handlers for the "Active R... 阅读全文

Revel示例 - Booking

2013-01-18 09:50 by Danny.tian, 4047 阅读, 收藏, 编辑
摘要: 预约示例展示了如下的使用方法:通过配置Revel的DB module来使用一个SQL数据库使用GORP "ORM"类库通过拦截器来检查用户是否登录使用validation显示行内错误信息下面是应用程序的内容booking/app/ models # Structs and validation. booking.go hotel.go user.go controllers init.go # Register all of the interceptors. gorp.go # ... 阅读全文

一步一步学习Revel Web开源框架

2013-01-17 15:24 by Danny.tian, 20414 阅读, 收藏, 编辑
摘要: 是一个高效的Go语言Web开发框架, 模仿Play! Framework而来, 我个人认为Revel是目前Go语言中比较不错的一个Web开发框架, 虽然它还有很多待完善的地方但还是很值得学习和借鉴滴, 我在这里记录一下偶的对它滴研究过程,以作备忘,也希望能和喜欢它的朋友们一起交流学习.Go Web开发之Revel - 开发入门Getting Started创建你的第一个App网页请求处理流程Hello WorldGo Web开发之Revel - 开发手册介绍概念组织结构Revel运行原理概述路由参数绑定验证Session/Flash返回值模板拦截器插件模块Websockets测试日志部署app 阅读全文

Go开源项目 - gorp使用方法

2013-01-17 10:25 by Danny.tian, 13206 阅读, 收藏, 编辑
摘要: gorp是一个Go开源ORM框架.Go关系型数据库持久化我很含糊的称gorp是一个ORM框架. Go还没有真正的对象, 至少没有一个经典的感觉和Smalltalk/Java一样的,这是"O". gorp不知道任何你struct之间的关系(以后会实现,现在还在TODO list中). 所以"R"也是有质疑的(但是我使用这个名字,因为感觉上更贴切)."M"是没有问题的. 给定一些Go结构和一个数据库, gorp应该可以减少你的重复代码.我希望gorp能节省你的时间并简化从数据库获取数据的苦活来帮助你把精力投入到算法上而不是基础设施上面.数 阅读全文

Go开源项目 - fsnotify源代码浅析

2013-01-16 14:19 by Danny.tian, 4308 阅读, 收藏, 编辑
摘要: fsnotify是一个文件系统监控库, 它可以支持在如下系统上使用:WindowsLinuxBSDOSX使用方法来自官方示例: watcher, err := fsnotify.NewWatcher() if err != nil { log.Fatal(err) } // Process events go func() { for { select { case ev := <-watcher.Event: log.Println("event:", ev) ... 阅读全文

Go开源项目 - goconfig源代码浅析

2013-01-14 09:46 by Danny.tian, 3964 阅读, 收藏, 编辑
摘要: 如果你还不知道怎么使用goconfig可以先看看Go开源项目 - goconfig 使用方法.config.gogoconfig的主文件, 首先定义了一些要是用的常量如"DEFAULT" section, 注释字符"#"和";", 分隔符":"或"=".定义了boolString字典用于方法获取bool值时使用, "t","true","y","yes"都会被转换成true, "no"," 阅读全文

SublimeGDB调试Golang

2013-01-11 17:45 by Danny.tian, 1982 阅读, 收藏, 编辑
摘要: 下载SublimeGDB在sublime text 2 中 Install Package ->SublimeGDB重启Sublime Text 2修改 workingdir 为工程所在目录,修改 commandline中executable为可执行文件名,如"workingdir": "${home}/gocode/bin","commandline": "gdb --interpreter=mi --args ./revel run myapp"常见命令:Launch with F5Step over w 阅读全文

go get code.google.com 没有反应

2013-01-11 14:59 by Danny.tian, 850 阅读, 收藏, 编辑
摘要: $cd$GOROOT/src/cmd/go$vimvcs.go#将里面https://code.google.com改为http://code.google.com$goinstall$gogetcode.google.com/xxx 阅读全文

Go代码转到定义功能

2013-01-11 14:17 by Danny.tian, 609 阅读, 收藏, 编辑
摘要: 1. 安装ctagssudo apt-get install exuberant-ctags2. 添加 ~/.ctags文件,内容如下:--langdef=Go--langmap=Go:.go--regex-Go=/func([ \t]+\([^)]+\))?[ \t]+([a-zA-Z0-9_]+)/\2/d,func/--regex-Go=/var[ \t]+([a-zA-Z_][a-zA-Z0-9_]+)/\1/d,var/--regex-Go=/type[ \t]+([a-zA-Z_][a-zA-Z0-9_]+)/\1/d,type/3. 在sublime text 2中安装CTAGS 阅读全文

GDB 调试Golang常用命令及方法(备忘)

2013-01-11 11:51 by Danny.tian, 5880 阅读, 收藏, 编辑
摘要: gdb [options] --args executable-file [inferior-arguments ...]l - 相当于list命令,l 37显示37行附近的源码b 行号,b 37 if i==3b 函数名.函数名i b - 查看全部断点信息d - 删除所有断点d 0 - 删除第0个断点display a - 一直显示a的值undisplay - 去掉所有显示watch addr - 监控addr内存s - step的意思进入函数进行跟踪j 37 - 直接跳到37行运行u - 将循环执行完p a - 打印a的值p a=3 - 设置a的值,p (*(mystruct *)addr 阅读全文

Go开源项目 - goconfig 使用方法

2013-01-11 10:24 by Danny.tian, 4470 阅读, 收藏, 编辑
摘要: goconfig是Revel用到的一个开源工具, 它实现了一个基础的配置文件解析器语言, 它的结构类似于微软的Windows INI文件.配置文件由几部分组成, 由"[section]"做头部紧接着"name:value"键值对, 也可以用"name=value". 注意空格将被从values中删除. 在相同的section可选的value能包含涉及其他values格式化字符串, 或values在一个特殊的DEFAULT部分. 另外defaults可以在初始化和检索时被提供. 注释字符时";" 或 "#& 阅读全文

Go Web开发之Revel - 命令行工具

2013-01-10 10:09 by Danny.tian, 2359 阅读, 收藏, 编辑
摘要: 构建和运行为了使用Revel你必须构建命令行工具.从你的GOPATH根目录开始.$ go build -o bin/revel github.com/robfig/revel/cmd现在运行:$ bin/revel~~ revel! http://robfig.github.com/revel~usage: revel command [arguments]The commands are: run run a Revel application new create a skeleton Revel application clean ... 阅读全文

Go Web开发之Revel - app.conf

2013-01-09 16:17 by Danny.tian, 1755 阅读, 收藏, 编辑
摘要: 应用程序配置文件被命名为app.conf,它使用goconfig的语法,它看起来有点像微软的INI文件。下面是一个例子文件:app.name=chatapp.secret=pJLzyoiDe17L36mytqC912j81PfTiolHm1veQK6Grn1En3YFdB5lvEHVTwFEaWvjhttp.addr=http.port=9000[dev]results.pretty=truewatch=truelog.trace.output = offlog.info.output = stderrlog.warn.output = stderrlog.error.output = s.. 阅读全文

Go Web开发之Revel - 部署

2013-01-09 16:17 by Danny.tian, 2073 阅读, 收藏, 编辑
摘要: SCPRevel应用程序可以被部署到没有安装Go功能的机器上. 命令行工具提供了package命令,它可以编译和打包应用程序并附带一个运行它的脚本.一个典型的部署看起来像下面这样:# Run and test my app.$ revel run import/path/to/app.. test app ..# Package it up.$ revel package import/path/to/appYour archive is ready: app.zip# Copy to the target machine.$ scp app.zip target:/srv/# Run it 阅读全文

Go Web开发之Revel - 日志

2013-01-09 16:17 by Danny.tian, 2236 阅读, 收藏, 编辑
摘要: Revel提供4个日志记录器TRACE - 只有debug信息.INFO - 信息报告.WARN - 一些意外的但无害的.ERROR - 错误信息,不需要看一看了.日志可以在app.conf中配置. 下面是一个例子:app.name = sampleapp[dev]log.trace.output = stdoutlog.info.output = stdoutlog.warn.output = stderrlog.error.output = stderrlog.trace.prefix = "TRACE "log.info.prefix = "INFO &qu 阅读全文

Go Web开发之Revel - 测试

2013-01-09 09:44 by Danny.tian, 2436 阅读, 收藏, 编辑
摘要: Revel提供了一个测试框架,这使得在应用程序中写和运行测试函数变得很容易.skeleton应用程序带有一个简单的测试来帮助我们测试.概要测试保存在tests目录corp/myapp app/ conf/ public/ tests/ <----一个简单的测试看起来像下面这样:type ApplicationTest struct { rev.TestSuite}func (t ApplicationTest) Before() { println("Set up")}func (t ApplicationTest) TestThatIndexPageWo... 阅读全文

Go Web开发之Revel - 模块

2013-01-08 17:31 by Danny.tian, 1684 阅读, 收藏, 编辑
摘要: 模块是可以被插入到应用程序的包. 他们允许在多个Revel应用或第三方程序中共享controller、view、资源文件和其他代码模块应该有相同的布局来作为一个Revel应用程序. 主应用程序将把模块按照下面的方式合并:任何在module/app/views中的模板将被添加到模板加载器的搜索路径任何在module/app/controllers中的controller将被视为他们在你的应用程序中通过一个路由的形式 staticDir:modulename:public,资源文件就可以使用了开启一个module为了添加一个模块到你的应用程序,添加如下一行代码到app.conf:module.my 阅读全文

Go Web开发之Revel - Websockets

2013-01-08 17:31 by Danny.tian, 1548 阅读, 收藏, 编辑
摘要: Revel 支持Websockets.处理一个Websocket连接:使用WS方法添加一个路由.添加一个action接受一个*websocket.Conn参数.例如添加如下代码到你的routes文件:WS /app/feed Application.Feed然后写一个action就下下面:import "code.google.com/p/go.net/websocket"func (c Application) Feed(user string, ws *websocket.Conn) rev.Result { ...}至此结束。 阅读全文

Go Web开发之Revel - 插件

2013-01-08 13:19 by Danny.tian, 1959 阅读, 收藏, 编辑
摘要: 插件被注册到应用程序的hook上面和请求生命周期事件离.一个插件就像下面的接口 (每一个事件都将被通知):type Plugin interface { // Server启动时被call (每一次代码重新加载). OnAppStart() // 路由器完成配置后被call. OnRoutesLoaded(router *Router) // 每一次request之前被call. BeforeRequest(c *Controller) // 每一次request之后被call.(除了panics) AfterRequest(c *Control... 阅读全文