Hero Image
Articles

A website submission directory to submit your business, startup, or website Summon your site - HTML, CSS, JS. See it live instantly. 台灣罪犯圖鑑 Collection of digital clock designs Command Line Interface Guidelines Github SearXNG is a free internet metasearch engine which aggregates results from various search services and databases. Users are neither tracked nor profiled. HelixDB is an OLTP graph-vector database built in Rust on Object Storage. vscodium: binary releases of VS Code without MS branding/telemetry/licensing - VSCodium 使用 Open VSX Registry 替換 Visual Studio Marketplace,相容大多數 extension。 Lore is a next-generation, open source version control system bsharp: A tool to teach children perfect pitch maltrail: Malicious traffic detection system croc: Easily and securely send things from one computer to another PixelRAG: The end of web parsing. The beginning of scalable pixel-native search. link: https://pixelrag.ai/ Cosmos is the most secure and easy way to self-host a Home Server. It acts as a secure gateway to your application, as well as a server manager. It aims to solve the increasingly worrying problem of vulnerable self-hosted applications and personal servers. yopass: Secure sharing of secrets, passwords and files GitHub-Store: A free, open-source app store for developers’ releases on GitHub, Codeberg & Forgejo — browse, discover, and install apps with one click. iroh: IP addresses break, dial keys instead. A library that adds QUIC + NAT Traversal to your apps. Project N.O.M.A.D, is a self-contained, offline survival computer packed with critical tools, knowledge, and AI to keep you informed and empowered—anytime, anywhere. macshot: Feature-packed native macOS screenshot & recording tool: annotate, auto-redact PII, record GIFs, OCR + translate, scroll capture, beautify, and more. No Electron, no subscription. OfficeCLI is the first and best Office suite purpose-built for AI agents to read, edit, and automate Word, Excel, and PowerPoint files. Free, open-source, single binary, no Office installation required. A Patch for GIMP 3+(https://www.gimp.org/) for Photoshop Users chatto: A fully-featured team and group chat application that you can easily selfhost. nextest: A next-generation test runner for Rust. OpenDisplay:Sidecar 与 Duet Display 的开源替代品,把闲置的 iPhone / iPad 变成 Mac 第二显示屏 Deskreen:将局域网设备变为电脑的第二块屏幕 Skill ponytail: Makes your AI agent think like the laziest senior dev in the room. The best code is the code you never wrote. skillspector: Security scanner for AI agent skills. Detect vulnerabilities, malicious patterns, and security risks. security-audit: A coding-agent skill for multi-phase security audits with independently verified, machine-readable findings Article RFC 10008: The HTTP QUERY Method Making HTTP requests from a container that has no curl, using bash /dev/tcp rr-debugger(https://github.com/rr-debugger/rr) Deno Desktop Linux on Older Hardware: The Complete Revival Guide (2026) Show HN: Getting GLM 5.2 running on my slow computer iPhone引導模式怎麼開?借手機人不怕隱私外洩和一鍵鎖定App Modern Linux Tools iPhone引導模式怎麼開?借手機人不怕隱私外洩和一鍵鎖定App 開啟與設定功能 打開 iPhone 上的 「設定」 App。 點選 「輔助使用」。 往下找到並點選 「引導使用模式」,然後將其開啟。 建議順便進行以下設定: 密碼設定:點一下「密碼設定」>「設定引導使用模式密碼」,輸入一組解鎖密碼,並可同時開啟 Face ID 或 Touch ID 作為快速解鎖/結束的方式。 輔助使用快速鍵:建議將其開啟,之後只要連按三下側邊按鈕就能快速叫出或退出此模式。 開始使用(將 iPhone 鎖定在單一 App) 打開你想要讓別人(或自己專注)使用的 App。 啟動引導使用模式: 具備 Face ID 的 iPhone(全螢幕機型):連按三下側邊按鈕(電源鍵)。 具備主畫面按鈕的舊款 iPhone:連按三下主畫面按鈕(Home 鍵)。 或者也可以呼叫 Siri:「打開引導使用模式」。 如果跳出輔助使用快速鍵面板,請點選 「引導使用模式」。 自訂限制區域(選用): 如果想讓螢幕上的特定區域無法被觸控點擊(例如遊戲內的廣告區塊),直接用手指在該區域畫一個圓圈,之後可以拖曳邊框來調整大小。 點一下右下角的「階段設定」(或選項),可以自由決定是否停用以下功能: 側邊按鈕 / 頂端按鈕 音量按鈕 動作(防止螢幕自動旋轉或因晃動而有反應) 軟體鍵盤 觸控(若想完全讓整個螢幕無法觸控可關閉此項) 時間限制 設定完成後,點一下右上角的 「完成」,再點一下 「開始」 即可正式鎖定。 如何結束引導使用模式 連按三下側邊按鈕(或主畫面按鈕)。 輸入你剛剛設定的引導使用模式密碼(或直接使用 Face ID / Touch ID 驗證)。 畫面左上角會出現 「結束」 按鈕,點下去即可退出此模式。

Hero Image
Advanced Shell Scripting Techniques: Automating Complex Tasks with Bash

Advanced Shell Scripting Techniques: Automating Complex Tasks with Bash Use Built-in Commands Built-in commands execute faster because they don’t require loading an external process. Minimize Subshells Subshells can be expensive in terms of performance. # Inefficient output=$(cat file.txt) # Efficient output=$(<file.txt) Use Arrays for Bulk Data When handling a large amount of data, arrays can be more efficient and easier to manage than multiple variables. # Inefficient item1="apple" item2="banana" item3="cherry" # Efficient items=("apple" "banana" "cherry") for item in "${items[@]}"; do echo "$item" done Enable Noclobber To prevent accidental overwriting of files. set -o noclobber Use Functions Functions allow you to encapsulate and reuse code, making scripts cleaner and reducing redundancy. Efficient File Operations When performing file operations, use efficient techniques to minimize resource usage. # Inefficient while read -r line; do echo "$line" done < file.txt # Efficient while IFS= read -r line; do echo "$line" done < file.txt Parallel Processing Tools like xargs and GNU parallel can be incredibly useful. Error Handling Robust error handling is critical for creating reliable and maintainable scripts. # Exit on Error: Using set -e ensures that your script exits immediately if any command fails, preventing cascading errors. set -e # Custom Error Messages: Implement custom error messages to provide more context when something goes wrong. command1 || { echo "command1 failed"; exit 1; } # Trap Signals: Use the `trap` command to catch and handle signals and errors gracefully. trap 'echo "Error occurred"; cleanup; exit 1' ERR function cleanup() { # Cleanup code } # Validate Inputs: Always validate user inputs and script arguments to prevent unexpected behavior. if [[ -z "$1" ]]; then echo "Usage: $0 <argument>" exit 1 fi # Logging: Implement logging to keep track of script execution and diagnose issues. logfile="script.log" exec > >(tee -i $logfile) exec 2>&1 echo "Script started" Automating Complex System Administration Tasks: Automated Backups System Monitoring User Management Automated Updates Network Configuration

Hero Image
Makefiles for Web Projects: Manage Your Environment Workflow

Makefiles for Web Projects: Manage Your Environment Workflow How I stopped worrying and loved Makefiles Note: Makefile indentation must use tabs, otherwise you’ll get syntax errors. The Core of a Makefile: Targets up: cp .env.example .env docker compose up -d workspace stop: docker compose stop zsh: docker compose exec workspace zsh This example has three targets: up, stop, and zsh. By default, Make treats the first target as the Goal (it cannot start with a dot), which is the project’s primary workflow. In this case, make and make up do the same thing. But the copy step above is not a typical Make use case. Make shines at deciding whether each target needs to run. For example, we often store secrets in .env. If .env already exists, we shouldn’t overwrite it by copying .env.example again. In that case, we can make .env a target: up: .env docker compose up -d workspace .env: cp .env.example .env By default, target names are treated as filenames. The name “make” implies building a target; it will only execute the target’s recipe when the conditions are met (like the file not existing). In this example, when you run the up target, if .env doesn’t exist it will run the .env target first to create it, then start the workspace container. If .env already exists, it skips the .env target and starts the container directly. Likewise, if there is a file named up in the directory, the up target won’t run. You can define Phony Targets to tell Make that certain targets aren’t filenames, but named workflows instead: .PHONY: up stop zsh Add Some Variables Make supports variables (Variable). Following common Unix environment variable conventions, we usually write them in SCREAMING_SNAKE_CASE. When used, variables are wrapped in $().

Hero Image
Parse Command Line Arguments in Bash

Parse Command Line Arguments in Bash getopts getopts optstring opt [arg ...] #!/bin/bash while getopts 'abc:h' opt; do case "$opt" in a) echo "Processing option 'a'" ;; b) echo "Processing option 'b'" ;; c) arg="$OPTARG" echo "Processing option 'c' with '${OPTARG}' argument" ;; ?|h) echo "Usage: $(basename $0) [-a] [-b] [-c arg]" exit 1 ;; esac done shift "$(($OPTIND -1))" optstring represents the supported options. The option expects an argument if there is a colon (:) after it. For instance, if option c expects an argument, then it would be represented as c: in the optstring When an option has an associated argument, then getopts stores the argument as a string in the OPTARG shell variable. For instance, the argument passed to option c would be stored in the OPTARG variable. opt contains the parsed option. #!/bin/bash while getopts ':abc:h' opt; do case "$opt" in a) echo "Processing option 'a'" ;; b) echo "Processing option 'b'" ;; c) arg="$OPTARG" echo "Processing option 'c' with '${OPTARG}' argument" ;; h) echo "Usage: $(basename $0) [-a] [-b] [-c arg]" exit 0 ;; :) echo -e "option requires an argument.\nUsage: $(basename $0) [-a] [-b] [-c arg]" exit 1 ;; ?) echo -e "Invalid command option.\nUsage: $(basename $0) [-a] [-b] [-c arg]" exit 1 ;; esac done shift "$(($OPTIND -1))" Note that we’ve updated optstring as well. Now it starts with the colon(:) character, which suppresses the default error message. The getopts function disables error reporting when the OPTERR variable is set to zero. Parsing Long Command-Line Options With getopt #!/bin/bash VALID_ARGS=$(getopt -o abg:d: --long alpha,beta,gamma:,delta: -- "$@") if [[ $? -ne 0 ]]; then exit 1; fi eval set -- "$VALID_ARGS" while [ : ]; do case "$1" in -a | --alpha) echo "Processing 'alpha' option" shift ;; -b | --beta) echo "Processing 'beta' option" shift ;; -g | --gamma) echo "Processing 'gamma' option. Input argument is '$2'" shift 2 ;; -d | --delta) echo "Processing 'delta' option. Input argument is '$2'" shift 2 ;; --) shift; break ;; esac done -o option represents the short command-line options --long option represents the long command-line options