Submitted by gouki on 2018, November 5, 6:15 PM
在网上找了半天,找到两个项目与此相关
1、chrome的插件:https://github.com/mikemintang/sql2struct ,
2、go 程序:https://github.com/Shelnutt2/db2struct
1、chrome插件的Readme中所引用的crx文件,可能由于cdn的问题,无法下载,其实git里就有一个crx文件,点击查看详情,然后下载到本地。启用chrome extension的开发者模式,加载进来就OK了,使用方法很简单,直接将table 的ddl内容复制 到输入框里,就能够生成相应的struct。当然表前缀的问题是没法解决了,但至少你不用手写了。不是吗?
详细 教程看这个:http://idoubi.cc/2017/11/06/SQL2Struct%EF%BC%9A%E4%B8%80%E6%AC%BE%E6%A0%B9%E6%8D%AEsql%E8%AF%AD%E5%8F%A5%E8%87%AA%E5%8A%A8%E7%94%9F%E6%88%90golang%E7%BB%93%E6%9E%84%E4%BD%93%E7%9A%84chrome%E6%8F%92%E4%BB%B6/,主要是这个有图,github里面没图
2、用官方Readme中的说法:Structures are created by querying the INFORMATION_SCHEMA.Columns table and then formatting the types, column names, and metadata to create a usable go compatible struct type.。
用法其实也很简单:【Example below uses guregu's null package, but without the option it procuded the sql.NullInt64 and so on.】
XML/HTML代码
- db2struct --host localhost -d example.com -t users --package example --struct user -p --user exampleUser --guregu --gorm
有这两个工具,生成struct就方便了。如果再配合这个:https://github.com/MohamedBassem/gormgen,那就更方便了(虽然也不一定会这样使用)
Tags: gorm
Go | 评论:0
| 阅读:13302
Submitted by gouki on 2018, October 30, 8:41 AM
我自己的用法,不知道别人是不是这样的
感觉用了go mod ,gopath可以不用设置了。
老方法:src/pkg/bin,建三个目录,然后GOPATH设置在这个外层(因为感觉go get的时候好象还是会往pkg里扔,只是pkg多了一个目录叫:mod)
在src下建一个目录,比如:blog,在blog目录里go mod init
然后就是正常的用法了。比如你要引入啥,go get 就行 了。如果是你手动写的一个路径。你引入后,还得执行go mod tidy 。
只是这样我老是不能正常。所以我每次都选择 go mod tidy && go mod vendor,会在blog里生成Vendor的目录。然后就一切OK了。
go mod对我来说最方便的应该就是Replace了。比如我准备要放个代码上github(或者其他),但中途可能会改,总不可能一直先commit,再go get 吧?
所以replace github.com/xxx/xxx 0.0.1 => /Users/gouki/go/xxx/xxx ,切换到本地。。那边代码有更新。我这边go mod tidy && go mod vendor就完事儿了。
总感觉这样目前还不是最佳的。但先弄一下吧。至少我目前够用了
Go | 评论:0
| 阅读:12895
Submitted by gouki on 2018, October 10, 11:02 PM
安装sqlite3的时候,报:
XML/HTML代码
- /usr/local/include/stdint.h:2:10: error: #include nested too deeply
- #include <stddef.h>
- ^
- /usr/local/include/stdint.h:59:11: error: #include nested too deeply
- # include <stdint.h>
- ^
- /usr/local/include/stdint.h:72:11: error: #include nested too deeply
- # include <sys/types.h>
- ^
- /usr/local/include/stdint.h:76:10: error: #include nested too deeply
- #include <limits.h>
- ^
- /usr/local/include/stdint.h:82:11: error: #include nested too deeply
- # include <inttypes.h>
- ^
- 5 errors generated.
开始的时候以为cgoenabled=0结果 。go env的时候发现有打开。
又以为可能是xcode-select 没装,于是执行xcode-select --install 进行工具安装 。症状依然。最后找到这里:https://github.com/SOHU-Co/kafka-node/issues/881,看来有不少人有这个问题。只是有人说,brew doctor一下就行了。光执行,并没啥用
最后有一个人提出:
XML/HTML代码
- mkdir /tmp/includes
- brew doctor 2>&1 | grep "/usr/local/include" | awk '{$1=$1;print}' | xargs -I _ mv _ /tmp/includes
一下子全解决了!
Go | 评论:0
| 阅读:13021
Submitted by gouki on 2018, September 24, 10:35 AM
要知道gorm的callback看代码就可以知道了:
XML/HTML代码
- func init() {
- DefaultCallback.Create().Register("gorm:begin_transaction", beginTransactionCallback)
- DefaultCallback.Create().Register("gorm:before_create", beforeCreateCallback)
- DefaultCallback.Create().Register("gorm:save_before_associations", saveBeforeAssociationsCallback)
- DefaultCallback.Create().Register("gorm:update_time_stamp", updateTimeStampForCreateCallback)
- DefaultCallback.Create().Register("gorm:create", createCallback)
- DefaultCallback.Create().Register("gorm:force_reload_after_create", forceReloadAfterCreateCallback)
- DefaultCallback.Create().Register("gorm:save_after_associations", saveAfterAssociationsCallback)
- DefaultCallback.Create().Register("gorm:after_create", afterCreateCallback)
- DefaultCallback.Create().Register("gorm:commit_or_rollback_transaction", commitOrRollbackTransactionCallback)
- }
类似:beginTransactionCallback 的一共有9个,事务和创建等等。一般事务的话会用的比较多一点,还有就是针对时间的beforecreate等
当然更多的还得看官方的文档:http://gorm.io/zh_CN/docs/hooks.html。默认会执行什么,应该执行什么,这里都有写,可以看一下下的
Go | 评论:0
| 阅读:13396
Submitted by gouki on 2018, September 23, 5:23 PM
下述是指在mac下面。linux 8 是这样的
ulimit -n 运行一下,看看是多少,如果是65536就算了。不是的话,如果有需要就自己改一下。常见的ulimit -n 65536,直接运行就行了,但这只是临时的
其实以下内容是COPY来的。我没有细究。
原文来自:http://ronglei0324.blog.163.com/blog/static/676332232013122112049188/
- $ sysctl kern.maxfiles
- kern.maxfiles: 12288
- $ sysctl kern.maxfilesperproc
- kern.maxfilesperproc: 10240
- $ sudo sysctl -w kern.maxfiles=1048600
- kern.maxfiles: 12288 -> 1048600
- $ sudo sysctl -w kern.maxfilesperproc=1048576
- kern.maxfilesperproc: 10240 -> 1048576
- $ ulimit -n
- 256
- $ ulimit -n 1048576
- $ ulimit -n
- 1048576
Go | 评论:0
| 阅读:12775