Giter Club home page Giter Club logo

golangdoc's People

Contributors

achun avatar chai2010 avatar shenshouer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

golangdoc's Issues

支持切割zip文件的加载

GAE环境, 单个文件最大为32MB.
当zip文件大于这个限制时, 需要切割为多个小文件.
local包目前不支持多个切割文件的加载.

Mac os x 10.11.1出错

golangdoc -http=:6060 -lang=zh_CN -play -v

goroutine 651 [runnable]:
runtime.Gosched()
/usr/local/Cellar/go/1.5.1/libexec/src/runtime/proc.go:166 +0x14
bytes.makeSlice(0xe00, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.1/libexec/src/bytes/buffer.go:195 +0x64
bytes.(_Buffer).ReadFrom(0xc8214695f8, 0x1f00060, 0xc82029ae38, 0x600, 0x0, 0x0)
/usr/local/Cellar/go/1.5.1/libexec/src/bytes/buffer.go:167 +0xd3
io/ioutil.readAll(0x1f00060, 0xc82029ae38, 0x200, 0x0, 0x0, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.1/libexec/src/io/ioutil/ioutil.go:33 +0x154
io/ioutil.ReadAll(0x1f00060, 0xc82029ae38, 0x0, 0x0, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.5.1/libexec/src/io/ioutil/ioutil.go:42 +0x51
golang.org/x/tools/godoc/vfs.ReadFile(0x1f00000, 0xc8201327b0, 0xc82140dd60, 0x1e, 0x0, 0x0, 0x0, 0x0, 0x0)
/Volumes/workspace/go/src/golang.org/x/tools/godoc/vfs/vfs.go:44 +0x14b
github.com/golang-china/golangdoc/local.(_localTranslater).loadDocCode(0xbe74b0, 0x7fff5fbfef56, 0x5, 0xc82140dd25, 0xc, 0x0, 0x0, 0x0)
/Volumes/workspace/go/src/github.com/golang-china/golangdoc/local/local_translater.go:113 +0xa5e
github.com/golang-china/golangdoc/local.(_localTranslater).ParseDocPackage(0xbe74b0, 0x7fff5fbfef56, 0x5, 0xc82140dd25, 0xc, 0xc820247b38)
/Volumes/workspace/go/src/github.com/golang-china/golangdoc/local/local_translater.go:65 +0x8e
github.com/golang-china/golangdoc/local.(_localTranslater).Package(0xbe74b0, 0x7fff5fbfef56, 0x5, 0xc82140dd25, 0xc, 0x0, 0x0, 0x0, 0x0)
/Volumes/workspace/go/src/github.com/golang-china/golangdoc/local/local_translater.go:44 +0x91
github.com/golang-china/golangdoc/local.Package(0x7fff5fbfef56, 0x5, 0xc82140dd25, 0xc, 0x0, 0x0, 0x0, 0xc82140dd00)
/Volumes/workspace/go/src/github.com/golang-china/golangdoc/local/local.go:137 +0x293
main.runGodoc.func1(0xc82140dd25, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x52300)
/Volumes/workspace/go/src/github.com/golang-china/golangdoc/main.go:199 +0x120
github.com/golang-china/golangdoc/godoc.(_treeBuilder).newDirTree(0xc82016e630, 0xc8201802c0, 0xc82140dd20, 0x11, 0xc8213fedd7, 0x3, 0x3, 0x0)
/Volumes/workspace/go/src/github.com/golang-china/golangdoc/godoc/dirtrees.go:80 +0x32e
github.com/golang-china/golangdoc/godoc.(_treeBuilder).newDirTree.func1(0xc821141da0, 0xc82016e630, 0xc8201802c0, 0xc82072ac70, 0xd, 0x2, 0x1b40098, 0xc82126fd60)
/Volumes/workspace/go/src/github.com/golang-china/golangdoc/godoc/dirtrees.go:100 +0x15e
created by github.com/golang-china/golangdoc/godoc.(*treeBuilder).newDirTree
/Volumes/workspace/go/src/github.com/golang-china/golangdoc/godoc/dirtrees.go:101 +0x585

goroutine 658 [runnable]:
github.com/golang-china/golangdoc/godoc.(_treeBuilder).newDirTree.func1(0xc8213d2ea0, 0xc82016e630, 0xc8201802c0, 0xc820e3f0c0, 0x19, 0x3, 0x1b40098, 0xc8210cf770)
/Volumes/workspace/go/src/github.com/golang-china/golangdoc/godoc/dirtrees.go:98
created by github.com/golang-china/golangdoc/godoc.(_treeBuilder).newDirTree
/Volumes/workspace/go/src/github.com/golang-china/golangdoc/godoc/dirtrees.go:101 +0x585

goroutine 659 [runnable]:
runtime.Gosched()
/usr/local/Cellar/go/1.5.1/libexec/src/runtime/proc.go:166 +0x14
golang.org/x/tools/godoc/vfs.NameSpace.clean(0xc820132630, 0xc82140bfe0, 0x1f, 0x0, 0x0)
/Volumes/workspace/go/src/golang.org/x/tools/godoc/vfs/namespace.go:147 +0x55
golang.org/x/tools/godoc/vfs.NameSpace.resolve(0xc820132630, 0xc82140bfe0, 0x1f, 0x0, 0x0, 0x0)
/Volumes/workspace/go/src/golang.org/x/tools/godoc/vfs/namespace.go:200 +0x56
golang.org/x/tools/godoc/vfs.NameSpace.ReadDir(0xc820132630, 0xc82140bfe0, 0x1f, 0x0, 0x0, 0x0, 0x0, 0x0)
/Volumes/workspace/go/src/golang.org/x/tools/godoc/vfs/namespace.go:301 +0x13e
golang.org/x/tools/godoc/vfs.NameSpace.ReadDir(0xc820133a40, 0xc82140be40, 0x1f, 0x0, 0x0, 0x0, 0x0, 0x0)
/Volumes/workspace/go/src/golang.org/x/tools/godoc/vfs/namespace.go:302 +0x2ad
github.com/golang-china/golangdoc/godoc.(_treeBuilder).newDirTree(0xc82016e630, 0xc8201802c0, 0xc82140bdc0, 0x1f, 0xc8211c65f3, 0x5, 0x4, 0x0)
/Volumes/workspace/go/src/github.com/golang-china/golangdoc/godoc/dirtrees.go:88 +0x3c9
github.com/golang-china/golangdoc/godoc.(_treeBuilder).newDirTree.func1(0xc8213d2f00, 0xc82016e630, 0xc8201802c0, 0xc820e3f0c0, 0x19, 0x3, 0x1b40098, 0xc8210cf7c0)
/Volumes/workspace/go/src/github.com/golang-china/golangdoc/godoc/dirtrees.go:100 +0x15e
created by github.com/golang-china/golangdoc/godoc.(*treeBuilder).newDirTree
/Volumes/workspace/go/src/github.com/golang-china/golangdoc/godoc/dirtrees.go:101 +0x585

golangdoc启动服务时出错,function "modeQueryString" not defined

  • golangdoc.translations已下载到 $(GOROOT)/translations 目录
    echo $GOROOT --> /usr/local/go
    /usr/local/go/translations/golangdoc.translations

  • golangdoc已经安装
    $GOPATH/src/github.com/golang-china/golangdoc
    $GOPATH/bin/golangdoc

  • 当执行运行中文版的文档服务时,报错
    golangdoc -http=:6060 -lang=zh_CN
    2017/02/23 14:16:21 readTemplate: template: package.html:280: function "modeQueryString" not defined

fatal error: concurrent map writes

go version

go version go1.7 darwin/amd64

go env

GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/zcjl/GoDemo"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -gno-record-gcc-switches -fno-common"
CXX="clang++"
CGO_ENABLED="1"

when i start golangdoc with:
golangdoc -http=:6060 -lang=zh_CN

it breaked down with error log:

fatal error: concurrent map writes

goroutine 405 [running]:
runtime.throw(0x649f72, 0x15)
/usr/local/go/src/runtime/panic.go:566 +0x95 fp=0xc420565910 sp=0xc4205658f0
runtime.mapassign1(0x597e00, 0xc42015ab40, 0xc420565b18, 0xc420144550)
/usr/local/go/src/runtime/hashmap.go:458 +0x8ef fp=0xc4205659f8 sp=0xc420565910
github.com/golang-china/golangdoc/local.initDocTable(0x7fff5fbff8f4, 0x5, 0xc420144540)
/Users/zcjl/GoDemo/src/github.com/golang-china/golangdoc/local/local.go:166 +0xd3 fp=0xc420565ba8 sp=0xc4205659f8
github.com/golang-china/golangdoc/local.RegisterPackage(0x7fff5fbff8f4, 0x5, 0xc420144540)
/Users/zcjl/GoDemo/src/github.com/golang-china/golangdoc/local/local.go:63 +0xd5 fp=0xc420565c10 sp=0xc420565ba8
github.com/golang-china/golangdoc/local.(_localTranslater).Package(0x986128, 0x7fff5fbff8f4, 0x5, 0xc420010485, 0xc, 0x0, 0x0, 0x0, 0xc4203e2518)
/Users/zcjl/GoDemo/src/github.com/golang-china/golangdoc/local/local_translater.go:48 +0xc4 fp=0xc420565c60 sp=0xc420565c10
github.com/golang-china/golangdoc/local.Package(0x7fff5fbff8f4, 0x5, 0xc420010485, 0xc, 0x0, 0x0, 0x0, 0xc420010280)
/Users/zcjl/GoDemo/src/github.com/golang-china/golangdoc/local/local.go:137 +0x1c5 fp=0xc420565cd0 sp=0xc420565c60
main.runGodoc.func1(0xc420010485, 0xc, 0x0, 0x0, 0x0, 0xc4203e25b8, 0x4ee31, 0x11)
/Users/zcjl/GoDemo/src/github.com/golang-china/golangdoc/main.go:199 +0xb7 fp=0xc420565d30 sp=0xc420565cd0
github.com/golang-china/golangdoc/godoc.(_treeBuilder).newDirTree(0xc4201465d0, 0xc42014a2c0, 0xc420010480, 0x11, 0xc4200cfc77, 0x7, 0x3, 0x0)
/Users/zcjl/GoDemo/src/github.com/golang-china/golangdoc/godoc/dirtrees.go:80 +0x11e fp=0xc420565ed8 sp=0xc420565d30
github.com/golang-china/golangdoc/godoc.(_treeBuilder).newDirTree.func1(0xc420519380, 0xc4201465d0, 0xc42014a2c0, 0xc4205a2660, 0x9, 0x2, 0x947740, 0xc4206a7ad0)
/Users/zcjl/GoDemo/src/github.com/golang-china/golangdoc/godoc/dirtrees.go:100 +0x110 fp=0xc420565f60 sp=0xc420565ed8
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:2086 +0x1 fp=0xc420565f68 sp=0xc420565f60
created by github.com/golang-china/golangdoc/godoc.(_treeBuilder).newDirTree
/Users/zcjl/GoDemo/src/github.com/golang-china/golangdoc/godoc/dirtrees.go:101 +0x64b

map读写冲突问题

golangdoc -http=:6060 -lang=zh_CN
运行的时候报错:fatal error: concurrent map writes

经过go build -race调试,发现是local/local.go的
pkgDocTable = make(map[string]*doc.Package) // map[mapKey(...)]... pkgDocIndexTable = make(map[string]string) // map[mapKey(...)]...
读写冲突造成的,这两个map需要分别上读写锁

godocu 提案

命名为 godocu 的包是从新构建的 Go 文档处理 package.
预计目录规划为

golang-china/godocu
└── docu

即 godocu 为命令行工具. docu 为 Go 文档处理支持库.

目标和计划

  • godocu 只负责文档处理, 不包括 http server
  • 内部引入 STD 包和 golang.org/x/tools/godoc/vfs 之类的包
  • 内部不引入 golang.org/x/tools/godoc 的包
  • 用模板进行格式输出
  • 支持所有文档, 导出的,非导出的, 平台相关的, builtin, internal
  • 支持 imports,Notes
  • 文档内容仍以惯用的排序方法

文档文件命名方式

首先扩展名是由输出格式决定的, 这里仅规范文件名格式

由源码生成的

doc_origin  导出文档包含 Notes, Example
main_origin 可执行包文档
unexported_origin   非导出文档
LICENSE

翻译文档按照语言名称替换后缀 origin, 比如 doc_zh,doc_zh-Hant.

所有上述信息以文件名 doc.json 保存, 维护各种状态. 比如对应源 package 的版本等.

文档格式有选择

  1. markdown
  2. go

问题

  1. 是否要保持源码中的分组形式, 即不展开, 不同文档格式会受到不同影响
  2. doc.json 要支持的属性

支持多国语言的动态切换

目前在启动服务时, 已经指定了文档的语言.
对外网页用户来说, 希望能够动态切换多国语言版本的翻译.
需要改进godoc包, 支持动态的翻译文件.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.