Skip to content

Instantly share code, notes, and snippets.

Stephen Wicklund Venryx

Block or report user

Report or block Venryx

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Test1</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/benchmark/1.0.0/benchmark.min.js"></script>
<script src="./suite.js"></script>
</head>
<body>
<h1>Open the console to view the results</h1>
@Venryx
Venryx / Example.tsx
Last active Oct 25, 2019
Using "useImperativeHandle" in a React functional component, with automatic TypeScript typing
View Example.tsx
import {forwardRef, useImperativeHandle, ForwardRefExoticComponent, RefAttributes, Ref} from "react";
export type Handle<T> = T extends ForwardRefExoticComponent<RefAttributes<infer T2>> ? T2 : never;
export const Parent = (props: {})=> {
let childHandle: Handle<typeof Child>;
return (
<div onClick={()=>childHandle.SayHi()}>
<Child name="Bob" ref={c=>childHandle = c}/>
</div>
@Venryx
Venryx / DialogFlowExample.ts
Last active Sep 9, 2019
How to get a Google auth-token for DialogFlow, entirely from front-end JavaScript
View DialogFlowExample.ts
import {GetAccessToken, ClaimSet} from "./GoogleAuth";
const projectID = "XXXXXX";
// session-id can apparently be set to an arbitrary value, eg. "abcd1234-abcd-abcd-abcd-abcd12345678".
const sessionID = "XXXXXX";
const serviceAccountEmail = `XXXXXX@${projectID}.iam.gserviceaccount.com`;
const serviceAccountPrivateKey = `-----BEGIN PRIVATE KEY-----\nXXXXXX\n-----END PRIVATE KEY-----`;
export async function ConvertSpeechToText(audioData_str_opus: string): Promise<string> {
const claimSet = new ClaimSet(["https://www.googleapis.com/auth/cloud-platform"], serviceAccountEmail);
@Venryx
Venryx / WebpackConfig.js
Created Sep 8, 2019
Example inline-plugin to replace CopyWebpackPlugin
View WebpackConfig.js
[...]
let fs = require("fs-extra");
webpackConfig.plugins.push({
apply(compiler) {
console.log(`Valid hook names: ${Object.keys(compiler.hooks)}`);
//compiler.hooks.beforeRun.tap("CopyPlugin_Custom", params=>{
compiler.hooks.shouldEmit.tap("CopyPlugin_Custom", params=>{
console.log(`Copying some difficult files (eg. *.wasm) from "node_modules/..." to "Resources/FromNodeModules/...".`);
@Venryx
Venryx / Main.ts
Last active Oct 9, 2019
String.AsMultiline
View Main.ts
declare global {
interface String {
/**
* Reformats a multi-line string to represent the actual intended "block" of text.
* @param desiredIndent How much to indent each line. (after removal of the first-line indent-length from each of them)
*/
AsMultiline(desiredIndent: number, removeLineStr?: string): string;
}
}
String.prototype.AsMultiline = function(this: string, desiredIndent: number = null, removeLineStr = "@RL") {
@Venryx
Venryx / AndroidManifest.xml
Last active Jul 29, 2019
Record audio on Android in the background (even when screen is off)
View AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.myapp">
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme">
<service android:name=".ForegroundService" android:enabled="true" android:exported="true"></service>
<activity
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale"
@Venryx
Venryx / RomajiConverter.ts
Last active Jun 4, 2019
Hiragana/Katakana to Romaji Converter (Typescript/Javascript)
View RomajiConverter.ts
// Raw chart text obtained by simple copy-paste from: https://en.wikipedia.org/wiki/Hepburn_romanization#Romanization_charts
const rawChartText = `
a i u e o
ka ki ku ke ko きゃ キャ kya きゅ キュ kyu きょ キョ kyo
sa shi su se so しゃ シャ sha しゅ シュ shu しょ ショ sho
ta chi tsu te to ちゃ チャ cha ちゅ チュ chu ちょ チョ cho
na ni nu ne no にゃ ニャ nya にゅ ニュ nyu にょ ニョ nyo
ha hi fu he ho ひゃ ヒャ hya ひゅ ヒュ hyu ひょ ヒョ hyo
ma mi mu me mo みゃ ミャ mya みゅ ミュ myu みょ ミョ myo
ya yu yo
View index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Join vs Template - Venryx</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/benchmark/1.0.0/benchmark.min.js"></script>
<script src="./suite.js"></script>
</head>
<body>
<h1>Open the console to view the results</h1>
@Venryx
Venryx / index.html
Created Dec 6, 2018
Electron Fiddle Gist
View index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello World!</title>
</head>
<body>
<h1>Hello World!</h1>
<!-- All of the Node.js APIs are available in this renderer process. -->
We are using Node.js <script>document.write(process.versions.node)</script>,
@Venryx
Venryx / index.html
Created Dec 6, 2018
Electron Fiddle Gist
View index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello World!</title>
</head>
<body>
<h1>Hello World!</h1>
<!-- All of the Node.js APIs are available in this renderer process. -->
We are using Node.js <script>document.write(process.versions.node)</script>,
You can’t perform that action at this time.