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 |
| put.your.domain.here { | |
| @local { | |
| file | |
| not path / | |
| } | |
| log { | |
| output file /var/log/caddy/mastodon.log | |
| } |
| **caddy config for jellyfin:** | |
| jellyfin.mydomain.com { | |
| reverse_proxy http://192.168.0.1212:2121 | |
| log { | |
| output file /var/log/caddy/JellyfinProxy.log { | |
| roll_size 2MiB # Set max size 5 MB | |
| roll_local_time true # Use localhost time | |
| roll_keep 4 # Keep at most 2 log files |
| /** | |
| * Arbitrary-length tuples | |
| * ======================= | |
| * | |
| * Working with tuples of unknown length in TypeScript is a pain. Most library authors fall back on enumerating all possible | |
| * tuple lengths up to a threshold (see an example here https://github.com/pelotom/runtypes/blob/fe19290d375c8818d2c52243ddc2911c8369db37/src/types/tuple.ts ) | |
| * | |
| * In this gist, I'm attempting to leverage recursion to provide support for arbitrary length tuples. This has the potential | |
| * to make some kinds of declarative APIs nicer and enhance type inference in some cases. | |
| * This example shows how to take a variable-length tuple as an input, transform each of its types and use the resulting |
| /** | |
| * Illustrates how to clone and manipulate MediaStream objects. | |
| */ | |
| function makeAudioOnlyStreamFromExistingStream(stream) { | |
| var audioStream = stream.clone(); | |
| var videoTracks = audioStream.getVideoTracks(); | |
| for (var i = 0, len = videoTracks.length; i < len; i++) { | |
| audioStream.removeTrack(videoTracks[i]); | |
| } |
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 |
| mkdir ~/.ssh | |
| cd ~/.ssh | |
| PASSWORD=$(openssl rand -base64 30) | |
| if [ "${#PASSWORD}" -ge 20 ]; then | |
| ssh-keygen -b 4096 -P "$PASSWORD" -f id_rsa -o | |
| echo "echo $PASSWORD" > /tmp/askpass.sh | |
| chmod +x /tmp/askpass.sh | |
| export DISPLAY=":0" | |
| export SSH_ASKPASS="/tmp/askpass.sh" | |
| ssh-add -K $HOME/.ssh/id_rsa </dev/null |
| /** | |
| 1. Install the Stylish(https://chrome.google.com/webstore/detail/stylish/fjnbnpbmkenffdnngjfgmeleoegfcffe?hl=en) extension for Chrome. | |
| 2. Open up extension options and paste the whole CSS mentioned below. | |
| 3. Specify the domain name to be `github.com`. | |
| 4. Add a title and save. | |
| */ | |
| .header { | |
| padding-top: 10px; | |
| padding-bottom: 10px; |
Enable #enable-devtools-experiments flag in chrome://flags section.
Open Chorme Devtools and check Settings > Experiments > Allow extensions to load custom stylesheets.
Create the following four files in a dedicated folder.
3.1. devtools.html
<html>
<head></head>
<body><script src="devtools.js"></script></body>| package com.yourapp.rctgeolocation; | |
| import android.location.Location; | |
| import android.os.Bundle; | |
| import android.util.Log; | |
| import com.facebook.react.bridge.Callback; | |
| import com.facebook.react.bridge.ReactApplicationContext; | |
| import com.facebook.react.bridge.ReactContextBaseJavaModule; | |
| import com.facebook.react.bridge.ReactMethod; |
| /* bling.js */ | |
| window.$ = document.querySelector.bind(document); | |
| window.$$ = document.querySelectorAll.bind(document); | |
| Node.prototype.on = window.on = function(name, fn) { this.addEventListener(name, fn); }; | |
| NodeList.prototype.__proto__ = Array.prototype; | |
| NodeList.prototype.on = function(name, fn) { this.forEach((elem) => elem.on(name, fn)); }; |