Continue reading Deploy Grafana & Prometheus metrcs tracking system for your Go program
[转载] 幼园摇号记
教办幼儿园摇号未录取。公益性幼儿园摇号未录取。
成都市公益性幼儿园新生名单张榜公示,我们现居地附近公益幼园还有空余学位。补录是最后一丝希望。
妻子打电话催促我马上回家登记。
Continue reading [转载] 幼园摇号记
Set up your Secondary Network Interface for Ubuntu 18.04
if you are trying to attache the new network interface for your Ubuntu 18.04 EC2 instance, this post might help you to figure out.
Continue reading Set up your Secondary Network Interface for Ubuntu 18.04
Use Azure Devops Pipeline to build && deploy your project
this post will teach you how to deploy your own Docker registry and how to use Microsoft Azure Devops to automatically building your Github Go project, and deploy to your Docker Swarm Server
How it works
- Pipeline download your github project
- Build your code by Dockerfile, make docker image then push to your own Docker registry
- Execute Bash command in Pipeline, pull off latest image of your project then update Docker swarm service
Continue reading Use Azure Devops Pipeline to build && deploy your project
Note of MongoDB
Concept
Structure:
Database -> Collection -> Documents
Compare to Mysql:
- Collection VS. Table
- Document VS. Row
- Field VS. Column
Collection is not strict about what goes in it
Deploy Golang function on Openfaas
this post will show you how to deploy a Sendtweet golang function in a OpenFaas Plaform.
Concept of Serverless && Faas
i’ve been learning about serverless almost two week, that I want to write a post to talk about what I’ve thinking about at those two weeks.
Note of GoRoutines
Goroutines explain
in Go, each concurrently executing activity called a groutine
when a program starts, it has a groutine that calls the Main function
, we call it _Main groutine_
.
Goroutines have no notion of identity that is accessible to the programmer
CentOS 7 Kubernetes Master-Node installation guide
this post will teach you how to deploy Kubernetes in multiple nodes mode based on Docker
Continue reading CentOS 7 Kubernetes Master-Node installation guide
Write a Microservice via Go-Micro
I’ve learning Go-Micro around a month, that I wanna write an article to record what I have learnt. In case I forgot it, I can still pick it up by reading this article. What I have wrote about might be inaccurate, I’m very glad that you can correct it.
Architecture
my design about Microservices architecture
Microservices for beginner
summary
Microservices is a concept that use to building a large ecosystem for your application. which means it includes many part like storage, services discovery, services, gateway, tracing etc…
小时候看不懂的鲁迅
鲁迅的文章,中小学生都是不大爱读的,毕竟鲁迅的思想距年轻人太远。至于大学生,除了学中国文学的,恐怕也不会有什么人主动去找鲁迅的书看。
只有成年人,在社会太久并自以为得的时候,再来读读鲁迅,也许才能明白。
Continue reading 小时候看不懂的鲁迅
websocket nginx reverse proxy configuration
location /test {
proxy_pass http://127.0.0.1:8080/ws; # target address
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
# websocket headers
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 30;
}
VirtaulBox: kernel driver not installed (rc=-1908)
after i updated my kernel, and i open my VM, that error came out, i always could find the way to fix it before, but there’s got easy way to fix it. so i want to write down this.
modprobe vboxdrv
modprobe vboxnetadp
modprobe vboxnetflt
Echo frameworks context bind twice without losing data
Retrieve data from echo middleware, may cause you get code=400, message=EOF
error.
Context.Bind
only can bind once, after the request passed the middleware,the request data reader is running out, Context.Bind()
function read request body data from the socket buffer, once you took it out, it just gone
that’s why it returns EOF error.
solution
func main() {
echoServer := echo.New()
echoServer.POST("/api", webfunc1, middleware1)
echoServer.Start(":8080")
}
func middleware1(next echo.HandlerFunc) echo.HandlerFunc {
return func(c echo.Context) error {
// read origin body bytes
var bodyBytes []byte
if c.Request().Body != nil {
bodyBytes, _ = ioutil.ReadAll(c.Request().Body)
// write back to request body
c.Request().Body = ioutil.NopCloser(bytes.NewBuffer(bodyBytes))
// parse json data
reqData := struct {
ID string `json:"id"`
}{}
err := json.Unmarshal(bodyBytes, &reqData)
if err != nil {
return c.JSON(400, "error json.")
}
fmt.Println(reqData.ID)
}
return next(c)
}
}
func webfunc1(c echo.Context) error {
reqData := struct {
Data string `json:"data"`
}{}
c.Bind(&reqData)
fmt.Println(reqData.Data)
return c.HTML(200, "200 OK.")
}
Golang: Read from an io.ReadWriter without losing its content