A non-exhaustive list of WebGL and WebGPU frameworks and libraries. It is mostly for learning purposes as some of the libraries listed are wip/outdated/not maintained anymore.
Name | Stars | Last Commit | Description |
---|---|---|---|
three.js | ![GitHub |
package main | |
import ( | |
"machine" | |
"time" | |
) | |
func main() { | |
machine.InitLEDMatrix() |
#define DEFER_MERGE(a,b) a##b | |
#define DEFER_VARNAME(a) DEFER_MERGE(defer_scopevar_, a) | |
#define DEFER_FUNCNAME(a) DEFER_MERGE(defer_scopefunc_, a) | |
#define DEFER(BLOCK) void DEFER_FUNCNAME(__LINE__)(int *a) BLOCK; __attribute__((cleanup(DEFER_FUNCNAME(__LINE__)))) int DEFER_VARNAME(__LINE__) | |
// Usage: | |
/* | |
void dosomething() | |
{ | |
char* data = malloc(100); |
package main | |
import ( | |
"fmt" | |
"log" | |
"github.com/boltdb/bolt" | |
) | |
func main() { |
isu1$ rsync -avr isu{1..4}:/etc/mysql ~/repo/etc/isu{1..4}/ | |
isu1$ rsync -avr isu{1..4}:/etc/nginx ~/repo/etc/isu{1..4}/ | |
isuN$ sudo rm /etc/nginx/nginx.conf && ln -s ~/repo/etc/isuN/nginx/nginx.conf /etc/nginx/nginx.conf | |
isuN$ sudo rm /etc/nginx/sites-enabled/cco.nginx.conf && ln -s ~/repo/etc/isuN/nginx/sites-available/cco.nginx.conf /etc/nginx/sites-enabled/cco.nginx.conf |
A non-exhaustive list of WebGL and WebGPU frameworks and libraries. It is mostly for learning purposes as some of the libraries listed are wip/outdated/not maintained anymore.
Name | Stars | Last Commit | Description |
---|---|---|---|
three.js | ![GitHub |
# based on shattered.io | |
open("1.dat", "w") do |f| | |
f.print "\x25\x50\x44\x46\x2d\x31\x2e\x33\x0a\x25\xe2\xe3\xcf\xd3\x0a\x0a\x0a\x31\x20\x30\x20\x6f\x62\x6a\x0a\x3c\x3c\x2f\x57\x69\x64\x74\x68\x20\x32\x20\x30\x20\x52\x2f\x48\x65\x69\x67\x68\x74\x20\x33\x20\x30\x20\x52\x2f\x54\x79\x70\x65\x20\x34\x20\x30\x20\x52\x2f\x53\x75\x62\x74\x79\x70\x65\x20\x35\x20\x30\x20\x52\x2f\x46\x69\x6c\x74\x65\x72\x20\x36\x20\x30\x20\x52\x2f\x43\x6f\x6c\x6f\x72\x53\x70\x61\x63\x65\x20\x37\x20\x30\x20\x52\x2f\x4c\x65\x6e\x67\x74\x68\x20\x38\x20\x30\x20\x52\x2f\x42\x69\x74\x73\x50\x65\x72\x43\x6f\x6d\x70\x6f\x6e\x65\x6e\x74\x20\x38\x3e\x3e\x0a\x73\x74\x72\x65\x61\x6d\x0a\xff\xd8\xff\xfe\x00\x24\x53\x48\x41\x2d\x31\x20\x69\x73\x20\x64\x65\x61\x64\x21\x21\x21\x21\x21\x85\x2f\xec\x09\x23\x39\x75\x9c\x39\xb1\xa1\xc6\x3c\x4c\x97\xe1\xff\xfe\x01\x73\x46\xdc\x91\x66\xb6\x7e\x11\x8f\x02\x9a\xb6\x21\xb2\x56\x0f\xf9\xca\x67\xcc\xa8\xc7\xf8\x5b\xa8\x4c\x79\x03\x0c\x2b\x3d\xe2\x18\xf8\x6d\xb3\xa9\x09\x01\xd5\xdf\x45\xc1\x4f\x26\xfe\xdf\xb3\xd |
This is a working example on how to store CryptoKey
s locally in your browser. We are able to save the objects, without serializing them. This means we can keep them not exportable (which might be more secure?? not sure what attack vectors this prevents).
To try out this example, first make sure you are in a browser that has support for async...await
and indexedDB (latest chrome canary with chrome://flags
"Enable Experimental Javascript" works). Load some page and copy and paste this code into the console. Then call encryptDataSaveKey()
. This will create a private/public key pair and encrypted some random data with the private key. Then save both of them. Now reload the page, copy in the code, and run loadKeyDecryptData()
. It will load the keys and encrypted data and decrypt it. You should see the same data logged both times.
go run $(go env GOROOT)/src/crypto/tls/generate_cert.go --host localhost |
Chromium OS is cool. Chromium OS with crouton is cooler. Chromium OS with Docker is even cooler. This is specifically a guide for the Chromebook Pixel 2 (2015), but I can't think of any reason it wouldn't work with other devices.