This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Test given url availability in browser wiht fetch HTTP HEAD and specific timeout | |
* @param url | |
*/ | |
export function probe(url: string, opt?: RequestInit & { timeout: number }) { | |
const ctrl = new AbortController(); | |
const timeout = (opt || {}).timeout || 5000; | |
const timer = setTimeout(() => ctrl.abort(), timeout); | |
return new Promise(resolve => { | |
const promise = fetch(url, { signal: ctrl.signal, method: 'HEAD', ...opt }) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
on ShowTabWitePrefix(targetDomain) tell application "Google Chrome" set windowList to every window repeat with aWindow in windowList set tabList to every tab of aWindow set tabCount to count of tabList set currentTabIndex to 0 set targetTabs to {} -- Collect all the tabs matching the targetDomain prefix repeat with i from 1 to tabCount set aTab to item i of tabList considering case set tabURL to URL of aTab if tabURL starts with targetDomain then set end of targetTabs to {index:i, tab:aTab} end if end considering end repeat -- If there are any matching tabs, activate the next one in the list if (count of targetTabs) > 0 then set currentIndex to 0 repeat with i from 1 to count of targetTabs if active tab index of aWindow is (index of item i of targetTabs) then set currentIndex to i exit repeat end if end repeat -- if the current tab is the last matching one, activate the first one, else activate the next one |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const uuidRegex = /^([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})(--[0-9a-f]{5})?$/i; | |
function isUuid(str: string) { | |
if (typeof str !== 'string') return false; | |
return uuidRegex.test(str); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function maybeJson(arrayBuffer: ArrayBuffer) { | |
const firstDelimiter = '{'.charCodeAt(0); | |
const lastDelimiters = ['}\n'.charCodeAt(0), '}\n'.charCodeAt(1), '}\r\n'.charCodeAt(0), '}\r\n'.charCodeAt(1)]; | |
const uint8View = new Uint8Array(arrayBuffer); | |
const firstByte = uint8View[0]; | |
const lastTwoBytes = [uint8View[uint8View.length - 2], uint8View[uint8View.length - 1]]; | |
return (firstByte === firstDelimiter) && (lastDelimiters.includes(lastTwoBytes[0]) && lastDelimiters.includes(lastTwoBytes[1])); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
on ShowTabWitePrefix(targetDomain) tell application "Google Chrome" set windowList to every window repeat with aWindow in windowList set tabList to every tab of aWindow set tabCount to count of tabList set currentTabIndex to 0 set targetTabs to {} -- Collect all the tabs matching the targetDomain prefix repeat with i from 1 to tabCount set aTab to item i of tabList considering case set tabURL to URL of aTab if tabURL starts with targetDomain then set end of targetTabs to {index:i, tab:aTab} end if end considering end repeat -- If there are any matching tabs, activate the next one in the list if (count of targetTabs) > 0 then set currentIndex to 0 repeat with i from 1 to count of targetTabs if active tab index of aWindow is (index of item i of targetTabs) then set currentIndex to i exit repeat end if end repeat -- if the current tab is the last matching one, activate the first one, else activate the next one |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# %% | |
import replicate | |
model = replicate.models.get("prompthero/openjourney") | |
version = model.versions.get("9936c2001faa2194a261c01381f90e65261879985476014a0a37a334593a05eb") | |
PROMPT = "mdjrny-v4 style 360 degree equirectangular panorama photograph, Alps, giant mountains, meadows, rivers, rolling hills, trending on artstation, cinematic composition, beautiful lighting, hyper detailed, 8 k, photo, photography" | |
output = version.predict(prompt=PROMPT, width=1024, height=512) | |
# %% | |
# download the iamge from the url at output[0] | |
import requests |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import https from 'https'; | |
function fetch(hostname: string, search: string) { | |
const options = { | |
hostname, | |
port: 443, | |
path: search, | |
method: 'GET', | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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++); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
** | |
* 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'); | |
* |