Skip to content

Instantly share code, notes, and snippets.

View iamspark1e's full-sized avatar
🎶
The Real Folk Blues

Wenbo iamspark1e

🎶
The Real Folk Blues
View GitHub Profile
@iamspark1e
iamspark1e / README.md
Created June 9, 2024 16:10 — forked from balupton/README.md
Upload a File to Cloudflare R2 Instructions
// boj转换url参数
const parseParam = (param, encode) => {
let s = []
const add = (key, val = '') => {
let _param = encode ? `${encodeURIComponent(key)}=${encodeURIComponent(val)}` : `${key}=${val}`
s[s.length] = _param
}
if (Array.isArray(param)) {
param.forEach((v, i) => add(i, v))
} else {
@iamspark1e
iamspark1e / alpinejs-template.html
Last active June 11, 2024 08:35
CDN mode alpinejs v3 + Daisy UI + dayjs template.
<html lang="en" data-theme="emerald">
<head>
<title>Demo</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link href="https://cdn.jsdelivr.net/npm/daisyui@4.11.1/dist/full.min.css" rel="stylesheet" type="text/css" />
<script src="https://cdn.tailwindcss.com"></script>
<script defer src="https://cdn.jsdelivr.net/npm/alpinejs@3.x.x/dist/cdn.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/dayjs@1/dayjs.min.js"></script>
<style></style>
type WatermarkCanvasConfigurableOptions = {
textAlign?: string,
textBaseline?: string,
font?: string,
fillStyle?: string,
}
type WatermarkConfiguration = {
container: HTMLElement | null,
id: string,
@iamspark1e
iamspark1e / vue-stepper-with-unit.vue
Created November 30, 2023 08:03
My custom vue components
<template>
<div class="demo">
<button type="button" @click="minus" :disabled="value <= min">-</button>
<label>
<span v-show="!focused">{{ value }}{{ unit }}</span>
<input
type="number"
pattern="[0-9]*"
ref="realInput"
v-model.number="value"
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!-- <script defer src="https://cdn.jsdelivr.net/npm/alpinejs@3.x.x/dist/cdn.min.js"></script> -->
<script defer src="https://cdn.jsdelivr.net/npm/alpinejs@2.8.2/dist/alpine.min.js"></script>
</head>
// fit for concat html property
function escapeQuotes(raw, escape_double, escape_single) {
if(escape_double) raw = raw.replace(/"/g, "&quot;");
if(escape_single) raw = raw.replace(/'/g, "\'");
return raw;
}
package main
import (
"bytes"
"io"
"log"
"os"
"os/exec"
"strings"
import (
"fmt"
"net/http"
"os"
"strings"
"github.com/gin-gonic/gin"
"caddy-http-tls-provider/bootstrap"
"caddy-http-tls-provider/utils"
let status = false;
let iframeReq = () => {
return new Promise((resolve, reject) => {
let timeout = 10;
let counter = 0;
let timer = setInterval(() => {
if(!status) {
if(counter < timeout) {
counter++;
} else {