WebAssembly is a low-level, assembly-like language that brings near-native performance to browsers. WebAssembly allows developers to code in their familiar programming languages such as C/C++, Rust, Go, Python, and so on. The code is then compiled into the wasm binary format and can be executed in browsers .
Continue reading Basic example of running WebAssembly with Go
Category: IT
mmap – an effective way of reading/writing large files
When operating with files in programming, we often read entire file content into physical memory. While writing the code doesn’t take much time, what happens behind the scenes is far more complex. During the process, your program has to invoke multiple system calls between buffers in kernel and user spaces back and forth which is considered inefficient. When reading a large file, mmap(memory-mapped file) is preferred in the terms of performance.
Continue reading mmap – an effective way of reading/writing large files
Build a speech transcription demo with OpenAI’s Whisper model in-browser using Transformers.js
Transformers.js
Transformers.js is a Javascript implementation of the Python library transformers, which was developed by HuggingFace. Transformers.js uses ONNX Runtime to run pre-trained AI models with JavaScript. Long story short, ONNX Runtime allows developers to share neural network models interchangeably among frameworks and support a wide range hardwares.
Common tasks supported by Transformers.js:
- Natural Language Processing: text classification, named entity recognition, question answering, language modelling, summarization, translation, multiple choice, and text generation.
- Computer Vision: image classification, object detection, segmentation, and depth estimation.
- Audio: automatic speech recognition, audio classification, and text-to-speech.
- Multimodal: embeddings, zero-shot audio classification, zero-shot image classification, and zero-shot object detection
Continue reading Build a speech transcription demo with OpenAI’s Whisper model in-browser using Transformers.js
Deploy Grafana & Prometheus metrcs tracking system for your Go program
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
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…
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
what is Digital Cert used to?
before we talk about cert, we need to know how your browser contacts with web server using encrypted data while browsing. Continue reading what is Digital Cert used to?