Skip to content

Instantly share code, notes, and snippets.

Avatar
🎯
Focusing

Wang Weihua aztack

🎯
Focusing
View GitHub Profile
View gist:c447a0236ed00c68a70257f06971b6b5
import { useRef, useState } from "react";
export interface InputMethodProps {
value: string;
onChange(value: string): void;
}
/**
* This hook handles composition events to prevent onChange
* from being called while the user is typing Chinese pinyin.
* And it will call onChange when the user finishes typing pinyin.
View gist:056c76f4c960476cfd4feba194048928
import https from 'https';
function fetch(hostname: string, search: string) {
const options = {
hostname,
port: 443,
path: search,
method: 'GET',
};
@aztack
aztack / captureSequences.ts
Created November 29, 2022 00:57
captureSequences
View captureSequences.ts
import JSZip from "jszip"; //https://github.com/Stuk/jszip
export function captureSequences(canvas: HTMLCanvasElement, filename: string, onCapture: (frame: number) => string) {
let frame = 0;
var zip = new JSZip();
const capture = () => {
const uri = canvas.toDataURL('png', 1);
var idx = uri.indexOf('base64,') + 'base64,'.length;
var content = uri.substring(idx);
const frameName = onCapture(frame++);
@aztack
aztack / recordCanvasStream.ts
Created November 18, 2022 06:38
recordCanvasStream
View recordCanvasStream.ts
**
* Record canvas stream into a webm file
* @param canvas HTMLCanvasElement
* @param options {duration: number, fps: number}
* @returns Promise<Blob> | ((discard:boolean) => Promise<Blob|null>)
* @example
* // Stop after 5 seconds
* const blob = await recordCanvasStream(canvas, { duration: 5, fps: 30 });
* downloadBlob(blob, 'recording.webm');
*
@aztack
aztack / cryptography-file-formats.md
Created October 12, 2022 14:37 — forked from tuansoibk/cryptography-file-formats.md
Cryptography material conversion and verification commands
View cryptography-file-formats.md
  1. Introduction
  2. Standards
  3. Common combinations
  4. Conversion
  5. Verification/Inspection
  6. Tips for recognising

Introduction

It happens that there are many standards for storing cryptography materials (key, certificate, ...) and it isn't always obvious to know which standard is used by just looking at file name extension or file content. There are bunch of questions on stackoverflow asking about how to convert from PEM to PKCS#8 or PKCS#12, while many tried to answer the questions, those answers may not help because the correct answer depends on the content inside the PEM file. That is, a PEM file can contain many different things, such as an X509 certificate, a PKCS#1 or PKCS#8 private key. The worst-case scenario is that someone just store a non-PEM content in "something.pem" file.

@aztack
aztack / gitgraft.sh
Created August 30, 2022 02:28 — forked from Victrid/gitgraft.sh
Find which commit your no-git friend is working on and generate patches for attaching their works onto git tree.
View gitgraft.sh
#!/bin/bash
hash git 2>/dev/null || { echo >&2 "Required command 'git' is not installed. ( hmm... why are you using this? ) Aborting."; exit 1; }
hash realpath 2>/dev/null || { echo >&2 "Required command 'realpath' is not installed. Aborting."; exit 1; }
hash pwd 2>/dev/null || { echo >&2 "Required command 'pwd' is not installed. Aborting."; exit 1; }
hash cd 2>/dev/null || { echo >&2 "Required command 'cd' is not installed. Aborting."; exit 1; }
hash echo 2>/dev/null || { echo >&2 "Required command 'echo' is not installed. Aborting."; exit 1; }
hash mv 2>/dev/null || { echo >&2 "Required command 'mv' is not installed. Aborting."; exit 1; }
hash diff 2>/dev/null || { echo >&2 "Required command 'diff' is not installed. Aborting."; exit 1; }
hash diffstat 2>/dev/null || { echo >&2 "Required command 'diffstat' is not installed. Aborting."; exit 1; }
@aztack
aztack / export-comp-from-after-effect.jsx
Last active August 4, 2022 13:49
export-comp-from-after-effect
View export-comp-from-after-effect.jsx
/*
Copyright (c) 2020 adroitwhiz
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
@aztack
aztack / index.ts
Last active August 1, 2022 02:05
Express.js Download Streamed Zip
View index.ts
import express from 'express';
import archiver from 'archiver';
express().use('/download-assets', async (req, res) => {
res.set('Content-Type', 'application/octet-stream');
res.set('Transfer-Encoding', 'chunked');
res.attachment(`assets.zip`);
console.log(`Archiving project assets...`);
const zipfile = archiver('zip');
@aztack
aztack / index.ts
Created July 16, 2022 11:55 — forked from Bnaya/index.ts
Typescript Types indirect re-export with isolatedModules: true
View index.ts
// Cannot re-export a type when the '--isolatedModules' flag is provided.ts(1205)
export { IMyInterface } from "./types"
// this works!
import { IMyInterface as IMyInterfaceForExport } from "./types"
export type IMyInterface = IMyInterfaceForExport;
// And Also:
export type IMyInterface2 = import("./types").IMyInterface;
@aztack
aztack / Working GDB on macOS 11.md
Created May 27, 2022 14:01 — forked from mike-myers-tob/Working GDB on macOS 11.md
Steps to get GDB actually working in April 2021 on macOS
View Working GDB on macOS 11.md

Debug with GDB on macOS 11

The big reason to do this is that LLDB has no ability to "follow-fork-mode child", in other words, a multi-process target that doesn't have a single-process mode (or, a bug that only manifests when in multi-process mode) is going to be difficult or impossible to debug, especially if you have to run the target over and over in order to make the bug manifest. If you have a repeatable bug, no big deal, break on the fork from the parent process and attach to the child in a second lldb instance. Otherwise, read on.

Install GDB

Don't make the mistake of thinking you can just brew install gdb. Currently this is version 10.2 and it's mostly broken, with at least two annoying bugs as of April 29th 2021, but the big one is https://sourceware.org/bugzilla/show_bug.cgi?id=24069

$ xcode-select install  # install the XCode command-line tools