Skip to content

Instantly share code, notes, and snippets.

View image72's full-sized avatar

image72 image72

View GitHub Profile
"use client";
// Import necessary utilities and components.
// tailwind-merge is used to intelligently merge Tailwind CSS classes, preventing conflicts.
import { twMerge } from "tailwind-merge";
// useState is a React Hook for managing state within the component.
import { useState } from "react";
// Custom icon components for the sidebar.
import {
SidebarIcon,
@image72
image72 / cf-ddns.sh
Created September 15, 2025 10:26 — forked from prnake/cf-ddns.sh
CloudFlare DDNS
#!/usr/bin/env bash
set -o errexit
set -o nounset
set -o pipefail
# Automatically update your CloudFlare DNS record to the IP, Dynamic DNS
# Can retrieve cloudflare Domain id and list zone's, because, lazy
# Place at:
# curl https://raw.githubusercontent.com/yulewang/cloudflare-api-v4-ddns/master/cf-v4-ddns.sh > /usr/local/bin/cf-ddns.sh && chmod +x /usr/local/bin/cf-ddns.sh
@image72
image72 / electric-border.markdown
Created August 31, 2025 10:35
Electric Border
@image72
image72 / index.html
Created April 18, 2025 09:06
OutRun ( no canvas)
<div id="game">
<div id="road">
<div id="cloud"></div>
<div id="hero"></div>
</div>
<div id="hud">
@image72
image72 / no-native-navigation.js
Created February 9, 2025 15:03
eslint, forbid native navigations in vue components.
// lib/rules/no-native-navigation.js
module.exports = {
meta: {
type: 'problem',
docs: {
description: 'Forbid native navigation methods in Vue components',
category: 'Best Practices',
recommended: true,
},
fixable: null,
type RequestConfig = RequestInit & {
baseURL?: string;
timeout?: number;
params?: Record<string, string>;
signal?: AbortSignal;
};
type InterceptorFn = (config: RequestConfig) => RequestConfig | Promise<RequestConfig>;
class FetchWrapper {
@image72
image72 / http-server-upload.js
Created September 11, 2024 01:01
simple http server
const http = require('node:http');
const { IncomingForm } = require('formidable');
const { promises: fs, constants: fsConstants } = require('node:fs');
const path = require('node:path');
const os = require('node:os');
const { parseArgs } = require('node:util');
const options = {
port: { type: 'string', short: 'p', default: process.env.PORT || '8080' },
'upload-dir': { type: 'string', short: 'd', default: process.env.UPLOAD_DIR || process.cwd() },
@image72
image72 / node-nginx.dockerfile
Created August 2, 2024 01:49
normal nodejs project with nginx.
FROM node:20-alpine as build-stage
ARG HTTP_PROXY
ARG HTTPS_PROXY
ENV HTTP_PROXY=$HTTP_PROXY
ENV HTTPS_PROXY=$HTTPS_PROXY
WORKDIR /usr/src/app
COPY . .
RUN npm -g install pnpm@latest && pnpm config set registry=https://registry.npmmirror.com && pnpm install && npm run build
@image72
image72 / heredoc.dockerfile
Created July 31, 2024 06:27
heredoc in dockerfile snippets
FROM debian
RUN <<EOT bash
set -eux
to_install=(
vim
)
apt-get update
failing_command # set -e exit with non-zero status
apt-get install -y "\${to_install[@]}"
EOT
@image72
image72 / deploy.sh
Created July 18, 2024 11:00
deploy project build to ssh server
#!/bin/sh
trap cleanup EXIT
# green="\e[1;32m"
# red="\e[1;31m"
# reset="\e[0m"
green=$(tput setaf 64);
red=$(tput setaf 124);
reset=$(tput sgr0);