Skip to content

Instantly share code, notes, and snippets.

@Venryx
Venryx / DialogFlowExample.ts
Last active July 14, 2020 09:56
How to get a Google auth-token for DialogFlow, entirely from front-end JavaScript
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 September 8, 2019 03:10
Example inline-plugin to replace CopyWebpackPlugin
[...]
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 June 30, 2021 20:03
String.AsMultiline
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): string;
}
}
String.prototype.AsMultiline = function(this: string, desiredIndent: number = null) {
@Venryx
Venryx / AndroidManifest.xml
Last active December 5, 2023 12:44
Record audio on Android in the background (even when screen is off)
<?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 April 17, 2021 20:26
Hiragana/Katakana to Romaji Converter (Typescript/Javascript)
// 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
@Venryx
Venryx / index.html
Created April 4, 2019 23:47 — forked from JobLeonard/index.html
Join vs Template - Venryx (http://jsbench.github.io/#a8a564f66be7840376640c3060846208) #jsbench #jsperf
<!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 December 6, 2018 15:20
Electron Fiddle Gist
<!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 December 6, 2018 15:20
Electron Fiddle Gist
<!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 / ReasonScore.ts
Created March 27, 2018 17:05
ReasonScore - Draft 4
import { MapNodeL3 } from "Store/firebase/nodes/@MapNode";
import { GetNodeChildrenL2, GetNodeChildrenL3 } from "Store/firebase/nodes";
import {MapNodeL2, Polarity, LayerPlusAnchorParentSet} from "../nodes/@MapNode";
import {IsSpecialEmptyArray, emptyArray_forLoading} from "../../../Frame/Store/ReducerUtils";
import {GetFinalPolarity} from "../nodes/$node";
import {MapNodeType} from "../nodes/@MapNodeType";
import { Lerp } from "js-vextensions";
import { ArgumentType } from "Store/firebase/nodes/@MapNodeRevision";
export function RS_CalculateTruthScore(node: MapNodeL3) {
@Venryx
Venryx / ReasonScore.ts
Created March 27, 2018 14:38
ReasonScore - Draft 3
import { MapNodeL3 } from "Store/firebase/nodes/@MapNode";
import { GetNodeChildrenL2, GetNodeChildrenL3 } from "Store/firebase/nodes";
import {MapNodeL2, Polarity} from "../nodes/@MapNode";
import {IsSpecialEmptyArray, emptyArray_forLoading} from "../../../Frame/Store/ReducerUtils";
import {GetFinalPolarity} from "../nodes/$node";
import {MapNodeType} from "../nodes/@MapNodeType";
export function RS_CalculateTruthScore(node: MapNodeL3) {
Assert(node.type == MapNodeType.Claim, "RS truth-score can only be calculated for a claim.");