Skip to content

Instantly share code, notes, and snippets.

Avatar

Jimmy Wärting jimmywarting

View GitHub Profile
View modifiers key.md
  • ⎋ (escape): U+238B
  • ⇥ (tab): U+21E5
  • ⇪ (caps lock): U+21EA
  • ⇧ (shift): U+21E7
  • ⌃ (control): U+2303
  • ⌥ (option): U+2325
  •  (Apple): U+F8FF (in some Apple-provided fonts only)
  • ⌘ (command): U+2318
  • ␣ (space): U+2423
@jimmywarting
jimmywarting / README.md
Last active Aug 16, 2020
Create your own archive format with just 60 lines of javascript
View README.md

Create your own archive format with just 60 lines of javascript

ToC

  • Explanation (introduction, why & how)
  • Browser limitations (memory, streaming, writing, uploading)
  • What are Blobs? (How do they work?)
  • The solution (Code sample)
    • and how to use the sample code
  • Takeaways (reflection)
@jimmywarting
jimmywarting / example.js
Created Feb 18, 2020
native (de)compress in browser
View example.js
import { compress, decompress } from 'zlib.js'
compr = await compress('hhhhheeeej'.repeat(200)).blob()
blob = await decompress(compr).blob()
@jimmywarting
jimmywarting / custom json replacer reviver.md
Last active May 9, 2021
Custom json replacer/reviver with extended support
View custom json replacer reviver.md

This custom json replacer/reviver allow you to store more types as json and still keep it as valid json.

features

  • Allow you to stringify/parse
    • BigInt
    • Infinity
    • NaN
    • Date
    • typed arrays & ArrayBuffers as web-safe base64
@jimmywarting
jimmywarting / peer.js
Created Jan 1, 2019
how to easily make webrtc connection without dependencies
View peer.js
var pc1 = new RTCPeerConnection(),
pc2 = new RTCPeerConnection();
var addCandidate = (pc, can) => can && pc.addIceCandidate(can).catch(console.error);
pc1.onicecandidate = e => { addCandidate(pc2, e.candidate); };
pc2.onicecandidate = e => { addCandidate(pc1, e.candidate); };
pc1.oniceconnectionstatechange = e => console.log("pc1 iceConnState:", pc1.iceConnectionState);
pc2.oniceconnectionstatechange = e => console.log("pc2 iceConnState:", pc2.iceConnectionState);
@jimmywarting
jimmywarting / min.js
Last active Jul 27, 2017
Tiny fast 314 bytes es6 PRNG
View min.js
// based on this https://github.com/davidbau/seedrandom#other-fast-prng-algorithms but without `next()`
(b,c,d,f,g,h,k,s=1,t=4022871197)=>(k=u=>{for(d of u)t+=d.charCodeAt(0),f=.02519603282416938*t,t=f>>>0,f-=t,f*=t,t=f>>>0,f-=t,t+=4294967296*f;return 2.3283064365386963e-10*(t>>>0)},c=k(' '),g=k(' '),h=k(' '),c-=k(b),0>c&&(c+=1),g-=k(b),0>g&&(g+=1),h-=k(b),0>h&&(h+=1),b=2091639*c+2.3283064365386963e-10*s,h=b-(0|b))
// usage
// const randomizer = <code>
// const seed = '2' // must be string
// randomizer(seed); // 0.4575677579268813
View readme.md
Service SSL status Response Type Allowed methods Allowed headers Exposed headers
View download multi thread.js
// We allocate a file with the size of the downloaded file so we can
// append chunks randomly to diffrent position as we download the file
function allocateDisk(size, callback){
fss.cwd.getFile(prompt("Filename","movie.mp4"), {create: true}, (fileEntry) => {
fileEntry.createWriter((writer) => {
var blob = new Blob([new ArrayBuffer(1.049e+8)])
writer.onerror = (err) => {
View test-url.html
<!DOCTYPE html>
<script src="url.js"></script>
<script>
var url = new URL('http://www.example.com/a/b/c.html?p=q&r=s&p&p=t#hash');
for (var key in url) {
console.log(key, url[key]);
}