Skip to content

Instantly share code, notes, and snippets.

View iahu's full-sized avatar
🌴
On vacation

i18u iahu

🌴
On vacation
View GitHub Profile
# Taken from https://github.com/OAI/OpenAPI-Specification/blob/main/examples/v3.0/petstore.yaml
openapi: "3.0.0"
info:
version: 1.0.0
title: Swagger Petstore
license:
name: MIT
servers:
- url: https://petstore.swagger.io/v1
@iahu
iahu / get-image-data.ts
Last active September 10, 2024 07:03
color quantization
export const getImageData = (image: HTMLImageElement) => {
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d') as CanvasRenderingContext2D;
const width = image.width;
const height = image.height;
if (width === 0 || height === 0) throw new Error('image dimensions cannot be zero');
canvas.width = width;
canvas.height = height;
@iahu
iahu / crypto-sha.js
Created July 20, 2023 04:45 — forked from chrisveness/crypto-sha.js
Uses the SubtleCrypto interface of the Web Cryptography API to hash a message using SHA-256.
/**
* Returns SHA-256 hash from supplied message.
*
* @param {String} message.
* @returns {String} hash as hex string.
*
* @example
* sha256('abc').then(hash => console.log(hash));
* const hash = await sha256('abc');
*/
@iahu
iahu / cli.ts
Created September 9, 2021 06:29
获取图片主题色
import fs from 'fs'
import glob from 'glob'
import cliProgress from 'cli-progress'
import getThemeColor from './main'
import ProHub from './prohub'
const [path] = process.argv.slice(2)
const bar = new cliProgress.SingleBar({}, cliProgress.Presets.shades_classic)
glob(path, function (err, matches) {
描述 扩展名 Magic Number
Adobe Illustrator .ai 25 50 44 46 [%PDF]
Bitmap graphic .bmp 42 4D [BM]
Class File .class CA FE BA BE
JPEG graphic file .jpg FF D8
JPEG 2000 graphic file .jp2 0000000C6A5020200D0A [....jP..]
@iahu
iahu / magic-bytes.md
Last active June 15, 2023 04:50
magic bytes of media file type
描述 扩展名 Magic Number
Adobe Illustrator .ai 25 50 44 46 [%PDF]
Bitmap graphic .bmp 42 4D [BM]
Class File .class CA FE BA BE
JPEG graphic file .jpg FF D8
JPEG 2000 graphic file .jp2 0
@iahu
iahu / promiseThrottle.ts
Created June 7, 2021 09:22
promise throttle
type Job<T> = () => Promise<T>
export const promiseThrottle = async <T>(
jobs: Job<T>[],
parallelCount: number,
onParallelDone?: (results: T[], index: number) => void
): Promise<T[]> => {
if (!(jobs && Array.isArray(jobs))) {
return Promise.reject('jobs must be Array')
}
@iahu
iahu / dsp-adx-price-decrypt.ts
Created May 31, 2021 02:45
DSP-ADX 价格解密逻辑 Typescript 版
import * as crypto from 'crypto'
const HMAC_ALGORITHM = 'HmacSHA1'
const ekey = Buffer.from('9527')
const ikey = Buffer.from('2840')
const mergeBytes = (...args: Uint8Array[]) => {
return Buffer.concat(args)
}
@iahu
iahu / install_cygwin_sshd.txt
Created May 26, 2021 02:37 — forked from roxlu/install_cygwin_sshd.txt
Installing CYGWIN + SSHD for remote access through SSH on windows
Installing CYGWIN with SSH
1) Download cygwin setup.exe from http://www.cygwin.com
- Execute setup.exe
- Install from internet
- Root directory: `c:\cygwin` + all users
- Local package directory: use default value
- Select a mirror to download files from
- Select these packages:
- editors > xemacs 21.4.22-1
- net > openssh 6.1-p
import memoize from 'lodash/memoize';
const supportLocaleCompare = typeof String.prototype.localeCompare === 'function';
const getShengmu = memoize((c: string) => {
const MAP = 'abcdefghjklmnopqrstwxyz';
const boundaryChar = '驁簿錯鵽樲鰒餜靃攟鬠纙鞪黁漚曝裠鶸蜶籜鶩鑂韻糳';
if (!supportLocaleCompare) {
return c;
}