package main import ( "log" "net/http" "html/template" "time" ) type Person struct { UserName string Time string } func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { log.Printf("new request") t := template.New("page") t, _ = t.Parse(webpage) p := Person{UserName: "David", Time: time.Now().String()} t.Execute(w, p) }) log.Printf("Running on port 9000") http.ListenAndServe(":9000", nil) } var webpage = `<!doctype html><html><body> <style> body { background-color: #000011; margin: 0px; overflow: hidden; color: white; } footer { width: 175px; height: 1.5em; position: fixed; bottom: 0; right: 0; padding: 3px 5px 5px 5px; text-align: left; z-index: 200; background-repeat: no-repeat; background-image: url("https://ds604.neocities.org/DavidSarmaDotOrg_h12.png");} canvas { position: fixed; top: 50%; left: 50%; transform: translate(-50%,-50%); /*width: 100vw; height: 100vh*/ } </style> <canvas id="canvas"></canvas> <footer></footer> </body></html> <script id="vshader" type="notjs"> attribute vec4 a_position; uniform vec2 u_resolution; void main(){ //float aspect = u_resolution.x / u_resolution.y; gl_PointSize = 10.0; gl_Position = a_position; } </script> <script id="fshader" type="notjs"> precision mediump float; void main() { gl_FragColor = vec4(1.0, 0., 0., 1.); } </script> <script> var canvas = document.getElementById('canvas'); canvas.width = window.innerWidth; canvas.height = window.innerHeight; var VERTEX_SHADER_SOURCE = document.getElementById('vshader').textContent, FRAGMENT_SHADER_SOURCE = document.getElementById('fshader').textContent, gl = canvas.getContext('webgl'), vertexShader = gl.createShader(gl.VERTEX_SHADER), fragmentShader = gl.createShader(gl.FRAGMENT_SHADER), shaderProgram = gl.createProgram(); // Compile the shaders. gl.shaderSource(vertexShader, VERTEX_SHADER_SOURCE); gl.compileShader(vertexShader); gl.shaderSource(fragmentShader, FRAGMENT_SHADER_SOURCE); gl.compileShader(fragmentShader); // Create linked program. gl.attachShader(shaderProgram, vertexShader); gl.attachShader(shaderProgram, fragmentShader); gl.linkProgram(shaderProgram); gl.useProgram(shaderProgram); // Create a buffer with vertex data: var vertices = new Float32Array([0.0, 0.0, 0.0]), vertexBuffer = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer); gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW); // Bind position data to attribute 0. gl.bindAttribLocation(shaderProgram, 0, 'a_Position'); // Bind resolution data to uniform attribute. var u_resolution = gl.getUniformLocation(shaderProgram, 'u_resolution'); // Assign pointer. gl.vertexAttribPointer(0, 3, gl.FLOAT, false, 0, 0); gl.enableVertexAttribArray(0); // Assign resolution. gl.uniform2f(u_resolution, canvas.width, canvas.height); // Clear the canvas. gl.clearColor(0.0, 0.0, 0.0, 1.0); gl.clear(gl.COLOR_BUFFER_BIT); // Draw the point. gl.drawArrays(gl.POINTS, 0, 1); </script>`