Duke Hsu profile picture

Duke Hsu

關於我

嗨,我是 Duke。

  • Adamson University 資訊科技系學生
  • 專注於 DevOps、網路與系統實作,也在幫助傳統行業進行數字化轉型!
  • 現居菲律賓馬尼拉
更多關於我

From 0 to 3.4K Users: A Product Experiment with Weekly Schedule Maker

Why Weekly Schedule Maker Came to Be At first, I simply didn’t want to recreate my schedule wallpaper on Canva every single semester. So I threw the idea to Gemini, and it generated a very basic prototype in Canvas based on my description. After that, my curiosity kept pushing me forward to continuously query Gemini, Claude, and ChatGPT to fix and refine it step by step. What I want to record in this article isn’t just how this tool came to life, but a question I gradually figured out while observing its data: Is it harder to find users, or to retain users? ...

BB Better Layout Introduction

How to use it Why I Built This I started building this Chrome extension in January 2026, during my second year, second semester at Adamson University. Back then, I simply wanted to improve my own experience. I felt that the desktop version of Blackboard LMS wasn’t very user-friendly, so I started creating a better layout for myself. ...

How to Install Rime Pinyin on Omarchy

Contents Table 1.0 Introduction 2.0 Installation Step by step Reference 1.0 Introduction I just want to install a Pinyin ime on my Omarchy. 2.0 Installation Step by Step 2.1 Install fcitx5 package fcitx5 is the main framework. fcitx5-rime connects Rime to it. fcitx5-gtk / fcitx5-qt allow GTK and Qt applications, such as browsers and editors, to use the input method correctly. fcitx5-configtool provides a GUI for configuration. sudo pacman -S fcitx5 fcitx5-rime fcitx5-configtool fcitx5-gtk fcitx5-qt2.2 Set environment sudo vim /etc/environmentAdd following content ...

cover_image

How to transfer a WordPress blog to Hugo

Article directory Install Hugo on your local computer, select a theme, and create a Hugo project Export the content from the WordPress backend, and then return to the local computer to convert it into Hugo’s Markdown format. Push the organized content and Hugo blog to Github Connect the Github repository on Vercel and set the build command and Configure a dedicated domain 1. Install hugo theme and start testing Binary Install cd ~ wget https://github.com/gohugoio/hugo/releases/download/v0.164.0/hugo_0.164.0_linux-amd64.tar.gz #download tar -xzf hugo_0.164.0_linux-amd64.tar.gz #unzip sudo mv hugo /usr/local/bin/hugo #move to bin hugo version #check hugo versionNew Site and Add Theme cd ~ hugo new site myblog #new site by hugo cd myblog git init # git init git submodule add --depth=1 https://github.com/adityatelange/hugo-PaperMod.git themes/PaperMod #Add PaperMod themeNow, you can add it in hugo.toml 文件中将主題 PaperMod`. ...

Migrate SQL database in docker to ms Azure

Scenario Source Database running on Docker (Linux Server) Traget Database running on Azure Server Prerequisites The structure, tables, restrictions, etc. of the source database and the target database are the same. Have access to the source and target databases SQL Server Management Studio Step by Step On Source Database Generate Scripts Select specific database objects Scripting Options Note: Adjust Scripting Options as needed! ! ! ! ...

Deploy MkDocs to GitHub Pages (github.io)

1 . Setup MkDocs environment # Create MkDocs virtual environment python3 -m venv mkdoc_venv # Activate venv source mkdoc_venv/bin/activate # Deactivate venv deactivate # Install MkDocs + Material theme pip3 install mkdocs mkdocs-material # Install Mermaid plugin pip install mkdocs-mermaid2-plugin # Create a new MkDocs project mkdocs new duke-note # Run MkDocs local server mkdocs serve # Run server for external access mkdocs serve --dev-addr=0.0.0.0:80002 . Create GitHub repository # Run in your notes directory git init git add . git commit -m "Initial commit of my study notes"3 . Connect to remote GitHub repo # Format: # git remote set-url origin https://<token>@github.com/<owner>/<repository>.git # Example: git remote set-url origin https://ghp_yourTokenHere@github.com/dukehug/mkdocs_dknotes.git git branch -M main git push -u origin main # Deploy to GitHub Pages mkdocs gh-deploy4 . Deploy script (deploy.sh) #!/bin/bash # Stop if any error happens set -e # Build site mkdocs build sleep 10 # Push updates git add . git commit -m "update notes: $(date)" git push origin main sleep 10 # Deploy to GitHub Pages mkdocs gh-deploy5 . Math formula support (MathJax) References MkDocs Material Math https://squidfunk.github.io/mkdocs-material/reference/math/#mathjax-docsjavascriptsmathjaxjs ...

ERP Next Moving - Migrating from Tencent Cloud to PVE

Prerequisites Lightweight cloud creates images and shares them Create a cloud server instance through the image created by the lightweight cloud Create another image for the cloud server created under this image. Create a new bucket as a storage object for image export Download the backed up image through the bucket Import to PVE Get start Create an image for the erpnext host in the lightweight cloud Enable sharing of the image in the region of the instance Create a cloud server in this region (cloud server - non-lightweight cloud) and select this image After activation, wait for startup and confirm that the service is normal Stop the instance and create an image on the current instance (cloud server - not lightweight cloud) Wait for the image to be created Come to object storage-bucket list-create bucket Return to the image in the cloud service and select the image created in step 5. Select image export in the image options Select the QCOW2 format when exporting. After the export is completed, it will be stored in the bucket. Return to object storage - select the bucket list - find the image you just exported - select download image Download the exported image locally and then import it into PVE. PVE Import USB Disk mount Import qcow2 to vm Config VM lsblk mkdir -p /mnt/usb mount /dev/sdb1 /mnt/usb ls /mnt/usb/iso/*.qcow2 ## import to vm - qm importdisk <源文件路径> <目标存储ID> qm importdisk 101 /mnt/usb/iso/vps-backup.qcow2 local-lvmReturn to the PVE interface, add the imported disk to the created empty vm, and set the startup disk. ...

Cups Maintenance Notes

Fixing CUPS Print Server Issue on Ubuntu 24.04 Date: 2025-11-30 12:42 Tags: #Linux #cups #printserver Table of Contents What happened How I fixed it Prerequisites Step-by-step guide What Happened I was running CUPS 2.4.7 on Ubuntu 24.04. The client suddenly couldn’t print anything. After checking the server, I found that CUPS had shut down unexpectedly. How I Fixed It Logged into Ubuntu Checked the CUPS service status Restarted the required services Tested printing afterward to confirm everything was working again Prerequisites A keyboard A monitor Your Ubuntu user account and password Getting Started If you forgot your root password You can reset it through GRUB. ...

Using Python and Streamlit with MS SQL

Table of Contents Create and activate the Python environment Install Python modules Install MS SQL Start coding & Run Prerequisites For this project, we used MS SQL, so the operating system is Windows Server 2012. I installed MS SQL Server 2012 Advanced. If your system is Windows 10 or Windows 11, install the latest version of MS SQL Express instead. Python 3.12 Windows OS MS SQL Express Internet Get started Create and activate the Python environment # Create the virtual environment python -m venv c:\project\event # Activate it cd c:\project\event\Scripts .\activate # Deactivate it when finished deactivateInstall Python modules You can install these modules step by step, or use pip install -r requirement.txt. ...

Git and Github Notes

Git and Github Notes Git fast version control some basic concepts Version management and tracking Version control systems are software tools Can help teams manage source code Status of Version version status Untracked Tracked Staged has been staged Committed Submitted HEAD -> master / branch HEAD: Current progress, latest status Master: main line What git tracks is the changes to the file, not the file itself. Deleting files also requires “add” and “commit” Files under version management that need to be ignored Add .gitignore in the project directory Write the file suffix or file name that does not require version management control in the .gitignore file Github is a platform/equivalent to Server Git tool hosts documents or code on the github platform - Install Mac os Mac OS comes with git. Enter git -- version to see the git version. Windows Download the latest https://git-for-windows.github.io/ git for windows Complete the git installation according to the instructions After completing the installation, you can see the git bash icon Ubuntu /Debian Install according to the command below $ sudo apt-get update $ sudo apt-get install git $ git --versionUse Basic configuration Configure git username and email using the following commands ...

Install Jupyter notebook on Ubuntu 24.04 and allow remote access.

References: Vultr How to Install Jupyter Notebook on Ubuntu 24.04 https://docs.vultr.com/how-to-install-jupyter-notebook-on-ubuntu-24-04 Prerequisites Ubuntu 24.04 Internet access Install Jupyter Notebook with pip Update the APT package index: sudo apt update Install the virtualenv package: sudo apt install python3-virtualenv -y Create a virtual environment: virtualenv jupyter_env Activate the virtual environment: source jupyter_env/bin/activate Install Jupyter Notebook: pip install jupyter Verify the installed version: jupyter-notebook --version You can deactivate the virtual environment at any time by running deactivate. ...

Ubuntu Server Notes

This note records the notes that need to be set when using Ubuntu daily. systemd-networkd-wait-online.service systemd-networkd-wait-online.service is a service unit of Systemd, mainly used to wait for the network connection to be ready when the system starts. Function: This service will wait for systemd-networkd to complete the network configuration and confirm that at least one network interface is online before it is marked as ready, allowing other network-dependent services to start. By default, it monitors all network interfaces managed by systemd-networkd until the connection is successful or times out. ** FAQ **: If DHCP takes a long time to obtain an IP, the system startup may be stuck in this service; when there is no network connection, it may also wait until it times out. ** optimization method **: You can adjust the timeout, disable services, or check the network configuration. Adjust timeout Set TimeoutStartSec to 2sec: ...

ikuai installation script

The steps to install ikuai in vps are as follows Command operation part Check the IP address and gateway address of the current vps ip route default via 10.0.0.1 dev eth0 proto dhcp src 10.0.0.14 metric 100 10.0.0.0/22 dev eth0 proto kernel scope link src 10.0.0.14Add script #!/bin/bash # 檢查是否以 root 用戶運行 if [ "$EUID" -ne 0 ]; then echo "請以 root 用戶運行此腳本" exit 1 fi # 詢問用戶下載 32 位或 64 位版本 read -p "請選擇要下載的 iKuai8 版本 (32/64): " arch # 根據用戶選擇下載對應的 ISO 鏡像 if [ "$arch" == "32" ]; then url="https://www.ikuai8.com/download.php?n=/3.x/iso/iKuai8_x32_3.7.20_Build202506041743.iso" filename="ikuai8_x32.iso" elif [ "$arch" == "64" ]; then url="https://www.ikuai8.com/download.php?n=/3.x/iso/iKuai8_x64_3.7.20_Build202506041743.iso" filename="ikuai8_x64.iso" else echo "無效的選擇,請重試" exit 1 fi # 下載 ISO 鏡像 echo "正在下載 $filename..." wget "$url" -O "$filename" echo "下載完成" # 掛載 ISO 鏡像 echo "正在掛載 $filename..." sudo mount -o loop "$filename" /mnt if [ $? -ne 0 ]; then echo "掛載 $filename 失敗,請手動檢查" exit 1 fi echo "掛載成功" # 複製啟動文件 echo "正在複製啟動文件..." sudo cp -rpf /mnt/boot / # 檢查操作結果 echo "檢查操作結果:" if [ -f "$filename" ]; then echo "- $filename 存在" else echo "- $filename 不存在" fi if mountpoint -q /mnt; then echo "- 掛載成功" else echo "- 掛載失敗" fi if [ -d "/boot" ]; then echo "- 啟動文件已複製" else echo "- 啟動文件複製失敗" fi # 檢查主機 IP 地址和網關地址 ip_address=$(ip addr show | grep 'inet ' | awk '{print $2}' | cut -d'/' -f1) gateway=$(ip route show | grep default | awk '{print $3}') echo "- IP 地址: $ip_address" echo "- 網關地址: $gateway" echo "所有操作完成,請執行 reboot 重啟 VPS,並通過 VNC 連接控制台"Execute script chmod +x install_ikuai.sh bash install_ikuai.shFollow the prompts to restart the vps and connect to the vps through the vns console ...

How to deal with the widening of the Windows 10 desktop icon selection box

Origin Display is 4K Adjusted “Make text bigger” value to 150% Windows scaling bug Windows operating systems have always had some issues with scaling on high-resolution displays. After changing “Make text bigger”, it will affect the selection box of desktop icons, as follows: Picture from Microsoft Community. Since I’ve changed the registry, the previous bug didn’t take a screenshot, so use the community image as an example. ...

Pangolin installation and usage demonstration

Pangolin installation and usage demonstration Prerequisites In order to follow the operation and configuration instructions in the video, the following conditions are optional. Video content: https://www.bilibili.com/video/BV1cAJHz8EAj/ A cloud server with an independent public IP address a domain name A Linux server running in the local LAN (the blogger’s is Ubuntu 20.0.1) A Windows computer running Ollama/Deepseek keep smiling Figure: Simple illustration Introduction Project: https://docs.fossorial.io/overview With Pangolin at its core, the Fossorial system is a self-hosted tunnel reverse proxy with identity and access management capabilities designed to securely expose private resources through an encrypted WireGuard tunnel running in user space. Imagine a self-hosted Cloudflare tunnel. Pangolin uses Traefik under the hood for the actual HTTP proxy. The Badger plugin provides a way to authenticate each request using Pangolin. The second service, Gerbil, provides a WireGuard management server that Pangolin can use to create peers to connect to. Finally, there’s Newt, a CLI tool and Docker container that connects to Newt and Gerbil entirely in user space via WireGuard and proxies your local resources. This means you don’t need to run a privileged process or container to expose your service! ...

Typecho migration to WordPress notes

Preparation Typecho data export plug-in Byetyp https://github.com/sunxiyuan/ByeTyp Pack and backup the data of /usr/uploads in Typecho Back up statistics code and ADsense code steps Note: Because this note was written after the migration was completed, there are no screenshots. The following content only contains text steps. text steps Upload the Byetyp plug-in to the plug-in directory (Plug) in the Typecho blog, and remove the version number and modify the directory name (otherwise it cannot be activated normally) Pack and download the files uploaded by the /usr/uploads user in Typecho and backup them locally. They will be uploaded to the wp-content/uploads directory of WordPress later. Activate the Byetyp plug-in to export the data of the Typecho blog in the format xml Install WordPress and import the data in Typecho Execute the database command to replace the attachment path (picture path) in the post-content table with Wordpress SQL command UPDATE wp_posts SET post_content = REPLACE( post_content, '/usr/uploads/', '/wp-content/uploads/');Note: wp_posts is the WordPress table name. Please choose it according to your actual situation. ...

搜尋文章

輸入標題、分類或文章內容

Plz typing to search for articles.