I hereby claim:
- I am olso on github.
- I am olso (https://keybase.io/olso) on keybase.
- I have a public key ASAjyl8XHSDHwxAZp-o0tBRL9pOHZTa0IUfL_oSL8V7jVQo
To claim this, I am signing this object:
I hereby claim:
To claim this, I am signing this object:
| git log --after="2017-06-01" --until="2017-07-01" --pretty=format:'%ad;%s' --author='olso' > ~/Desktop/timesheet-june-log.csv |
| open -n -a "Google Chrome" --args --disable-web-security --profile-directory="Profile 1" |
| build_go: | |
| docker run --rm \ | |
| -v `pwd`/src:/game \ | |
| --env GOOS=js --env GOARCH=wasm \ | |
| golang:1.12-rc \ | |
| /bin/bash -c "go build -o /game/game.wasm /game/main.go; cp /usr/local/go/misc/wasm/wasm_exec.js /game/wasm_exec.js" |
| <!DOCTYPE html> | |
| <html> | |
| <head> | |
| <meta charset="utf-8" /> | |
| <meta name="viewport" content="width=device-width,initial-scale=1.0" /> | |
| <style>body{height:100%;width:100%;padding:0;margin:0;background-color:#000000;color:#FFFFFF;font-family:Arial,Helvetica,sans-serif}</style> | |
| <script type="text/javascript" src="./wasm_exec.js"></script> | |
| <script type="text/javascript"> | |
| async function run(fileUrl) { | |
| try { |
| package main | |
| import ( | |
| // https://github.com/golang/go/tree/master/src/syscall/js | |
| "syscall/js" | |
| ) | |
| var ( | |
| // js.Value can be any JS object/type/constructor | |
| window, doc, body, canvas, laserCtx, beep js.Value |
| func main() { | |
| setup() | |
| // declare renderer at compile time | |
| var renderer js.Func | |
| // looks like JS callback, right 😌 | |
| renderer = js.FuncOf(func(this js.Value, args []js.Value) interface{} { | |
| updateGame() | |
| // for the 60fps anims | |
| window.Call("requestAnimationFrame", renderer) |
| func main() { | |
| // https://stackoverflow.com/a/47262117 | |
| // creates empty channel | |
| runGameForever := make(chan bool) | |
| setup() | |
| // attempt to receive from empty channel | |
| // since noone ever sends anything on it, it's essentially a blocking forever operation | |
| // we basically have a daeomon/service/background program |
| func updatePlayer(event js.Value) { | |
| mouseX := event.Get("clientX").Float() | |
| mouseY := event.Get("clientY").Float() | |
| // basically threads/async/parallelism | |
| // TODO difference with Web Workers | |
| // TODO difference with Service Workers | |
| // https://gobyexample.com/goroutines | |
| go log("mouseEvent", "x", mouseX, "y", mouseY) |