載入中,請稍候...
記錄開發心得、實驗與學習筆記。
載入中,請稍候...
Welcome
這裡主要記錄我在學習的過程中所遇到的技術問題與解決方案, 還有使用 WordPress 的一些心得、 踩過的坑和一些想法,希望也能對正在學習的你有幫助。 也歡迎私訊與我交流!


Console.log 的使用方式 在Next.js 16版,有一個新的開發技巧。 我們在Home裡面加上一個console.log,以往的經驗來說這是一個伺服器端的事件,所以在瀏覽器的Console中並不會出現這段輸出內容。 正常來說只會在伺服器端看到。 可以看到在瀏覽器一樣出現了標示Server的Console內容。 不過不用擔心,這只是在開發的時候方便觀察而已。 這個時候有趣的來了,我要來測試在Client端寫console.log會發生什麼事情,我在app底下建立components資料夾並建立一個hello.tsx檔案。 將hello的components引入到app/page.tsx。 這時候到瀏覽器觀察。會發現有兩個一樣的log。 你可能會問為什麼?我用一張圖給你看看。 在Server端會先建立好static shell,之後在Client端渲染。 React 在next.config.ts加上reactCompiler: true, 因為我對React沒有很熟悉,所以我問了一下ChatGpt。 babel-plugin-react-compiler 能做的事 Router 你會看到一個layout.tsk,可以想成是一個網站的佈局,像是header跟footer可以先放好位置,這樣每一個頁面就不必再重複渲染,然後{children}是每一個頁面的進入點,這邊舉個例子像這樣: Page是你的網站首頁的內容,一進去會先吃到app/page.tsx然後傳到layout.tsx裡面的{children}這裡。 以剛剛的例子: 觀察一下瀏覽器的 Elements,已經把app/page.tsx的內容傳到{children}並顯示。 補充:Components不能放在app/資料夾內,app是放Page的地方。 新增一個 Route 直接在app/建立一個資料夾,這邊建立一個about資料夾,跟一個page.tsx。 只要在你的網頁打/about路由就會看到Page了。這個在Next.js叫做Filebased routing system。 以下是官方文件的Route示意圖: Nested Routes 巢狀路由 我建立了一個dashboard,並在dashboard在建立兩個資料夾分別是analytics跟users。 進到 http://localhost:3000/dashboard/analytics 就可以看到 Analytics 進到 http://localhost:3000/dashboard/users 就可以看到 Users 那我們可能會有很多User,每個User都要有自己的Dashboard介面。 因此先在users底下建立一個[id]資料夾,他可以根據你傳進來的params,對應到不同Users的頁面資料。 將每個User外面包一個Link,對應到不同的使用者。將參數傳送到users/[id]。 收到了點擊Link之後傳過來的參數,並顯示使用者id。 這邊我在學的時候第一次看到{params}這種語法,其實是簡化了以下的程式碼: 補充:在 JavaScript 中,所有非同步行為(例如 fetch、資料庫、計時器)最後得到的都是 […]

我是一點基礎概念都沒有的小菜機,希望從今天開始慢慢的增加一些有關投資的相關知識。 基金、股票、保險、定存 利率都是評估獲利的關鍵 利率和殖利率差異? 利率 (通常以一年為計算單位)又稱年利率 假設年利率是1%,代表存滿一年可以獲得1%的利息 如果定存時間只設定三個月(1/4年) 假設將10000元放入銀行,年利率1%,放12個月跟放6個月分別如下: 通常時間越短的年利率也相對較低。 如果原本跟銀行講好的定存時間是一年,年利率1%,結果只存了六個月就要用這筆錢。 必須要提前解約,這時候利息變成: 殖利率(浮動) 舉個例子像是100塊的本金可以拿到5%的利息。 但是本金有可能隨時變大變小,但是利息在一段時間是固定不變的。 假設有一個股票100塊,年利率5塊。 說不定隔天又漲10塊 參考影片:https://www.youtube.com/watch?v=yd3fZRrjzGM&list=PLrZrfGLGySzcZoVhb4idy5B0XI25ZhnF7&index=1

閱讀這篇文章之前,必須先操作上一篇文章的內容。 https://stackpenguin.com/blog/wp-cron-backup 我在我的macbook筆電建立一個Local的測試機名字取為BackupReview。 本文章的目的是將我的Linode主機備份後的WordPress檔案,匯入到本地端做測試。 廢話不多說馬上開始吧! 下載備份檔案 db資料庫的.sql檔案。 main的話是wp-content所有內容。 uploads包含圖片與檔案,或是其他外掛的檔案內容都在這裡。 這三個內容只要缺一個,就沒辦法完整復原。 建立測試機 先看一下有沒有成功跑起來,看來是有。 接下來要開始復原我的網頁到本地端。 匯入資料庫 來到Database這邊,按下Open AdminNeo就會打開資料庫介面。 進到資料庫頁面點擊 Local Site: BackupReview 跳轉到資料庫首頁。 建立資料庫,對應你網站的資料庫名稱,我的是wp_zhuangblog。 記得要改成自己的。 創建完成後要匯入備份的sql檔案。 執行後會顯示成功匯入,並在左側顯示所有資料表。 Local sites 檔案設定 首先回到Local頁面,按下Site folder會進直接跳進你的網頁資料夾. 將public裡面的所有檔案都先刪除,因為要把備份的轉進來。 接著去你備份的main資料夾解壓縮,之後複製所有檔案 把它複製到剛剛的本地網頁資料夾 然後我們要修改wp-config.php這一個檔案 這六個要修正,對應你的資料庫名稱,資料庫帳密,以及本地網址。 改完之後要重啟一次,資料庫才會被更改。 否則他不會連到本地測試網站。 然後就可以點擊Open site連到本地網頁裡了。 有時候瀏覽器會因為某些插件,會有快取。 可能會導致之前的網址被記錄下來。 如果進去還是連到正式機網址,那可以開啟無痕模式輸入網址的方式進去。 進去後發現ㄟ !樣式怎麼都沒有套進來?這是正常的,因為還沒將uploads資料夾放到wp-content。 這是我備份的uploads資料夾,要把它移動到本地的wp-content資料夾中。 先將原來的uploads刪除,然後把剛剛的uploads貼過來。 再過看剛剛的頁面是不是就成功了! 以上就是這次的教學。

首先將示範你如何在 Ubuntu 上安裝 rclone、建立 Google Drive remote,最後撰寫Shell Script。 安裝 rclone 代表的意思: 安裝完後 Ubuntu 會輸出一堆像是 Database、man-db、kernel upgrade 的提示,這些是系統正常的安裝訊息,與 rclone 本體無關。 開始設定 rclone 這會啟動互動式設定介面,讓你建立 remote。 建立新 remote 畫面問: 你輸入:n 代表「建立新的 remote」。 設定 remote 名稱 畫面問: Enter name for new remote.name> 輸入:gdrive 意思是:你把這個 rclone 連線命名成 gdrive,之後所有操作都可以用 gdrive: 指向你的 Google Drive。 選擇儲存服務類型 畫面列出一大串支援的雲端,並問: 你輸入:18 代表選擇「Google Drive」。 client_id 與 client_secret […]

以下為在 Ubuntu 24.04 主機上新增 4GB swap 的完整操作流程與解說,包含你實際執行的指令整理後的教學。 📌 1. 查看磁碟使用狀況 在新增 swap 前,先確認磁碟空間是否足夠: 範例輸出: 可見有 11GB 可用空間,足以建立新的 4GB swapfile。 📌 2. 建立 4GB Swap File 使用 fallocate 建立一個大小為 4GB 的 swap 檔案: 📌 3. 設定 Swap 檔案權限 Swap file 必須設定成只有 root 能讀寫,否則系統會拒絕使用: 📘 額外補充:Linux 權限教學(給完全不懂的人) 為了更容易理解,我用超白話方式說明: 🔹 什麼是 Linux 權限? Linux 裡每個檔案與資料夾都有三種「身分」能對它做事: 每個身分都可以有三種權限: 🔹 數字是怎麼來的? […]

本文教你如何在 Linode 使用 Docker 自架 n8n,包含環境安裝、Docker Compose 設定、持久化資料、Cloudflare Tunnel HTTPS 安全部署,並加上 Basic Auth 保護,打造零開放 port 的安全自動化環境。

程式碼與資料參考來源:https://docs.pytorch.org/tutorials/beginner/blitz/cifar10_tutorial.html#define-a-convolutional-neural-network 這段程式主要的目的,是建立一個可以讓 PyTorch 模型方便使用的影像資料載入流程。首先,程式定義了一個名為 transform 的轉換流程,這個轉換由兩個步驟組成。第一個步驟 transforms.ToTensor() 是把原本的影像(可能是 PIL Image 或 numpy 陣列)轉成 PyTorch 可以處理的 Tensor 格式,並且把像素值從 0~255 縮放到 0~1 之間。第二個步驟 transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)) 則是將每個顏色通道進行標準化,把影像的數值範圍轉換成 -1 到 1 之間,這樣能讓模型在訓練時更穩定、更容易收斂。 接著,batch_size = 4 表示每次從資料集中取出四張圖片,組成一個小批次(batch)來訓練。這樣做可以減少記憶體使用量,並加快訓練速度。 在建立訓練資料集時,使用了 torchvision.datasets.CIFAR10 這個內建的資料集。CIFAR-10 是一個常見的影像分類資料集,裡面有 10 種不同類別的物體(例如飛機、汽車、貓、狗等)。參數 root=’./data’ 代表資料會被存放在專案資料夾中的 data 目錄下;train=True 指定要載入訓練資料;download=True 讓程式在本地沒有資料時自動從網路下載;而 transform=transform 則確保每張影像在載入時都會先經過剛剛定義的轉換流程。 建立好訓練資料集後,trainloader 透過 torch.utils.data.DataLoader 將資料集包裝成可以分批次讀取的形式。這個物件會在訓練時自動提供圖片與標籤。shuffle=True 表示在每個訓練輪次(epoch)開始前,資料都會被隨機打亂,避免模型記住資料的順序而影響學習。num_workers=2 […]

內容全參考影片 : https://www.youtube.com/watch?v=tMwyxKttZd0&t=60s 首先建立一個Conda的虛擬環境,之後進入後先下載labelImg。 如果labelImg閃退,建議不用進到虛擬環境,直接去下載LabelImg。 建立一個dataset資料夾 8:1:1 點擊Open Dir打開訓練集的圖片資料夾。 接著要選擇剛剛資料夾中的Label資料夾 要改成YOLO的格式,就可以開始框了 建議開啟這兩個。 接著下載yolov9的專案包,解壓縮後進入資料夾。 我將yolov9-main改為yolov9,依據個人喜好。 接著安裝相關套件,然後進入到PyTorch依據自己的版本下載。 安裝的過程我們可以先將dataset搬到data底下。 接著更改coco.yaml這支檔案我將它改名為datasets.yaml。 train.py 參數解析: 參數 你目前設定值 說明 –weights yolov9-c-converted.pt 預訓練權重(模型初始值) –data data/datasets.yaml 資料集配置(train/val 路徑與類別) –hyp data/hyps/hyp.scratch-high.yaml 超參數設定(學習率、增強等) –epochs 100 訓練回合數 –batch-size 4 每次訓練批次(因為 GPU 6GB 限制) –img 512 訓練圖片大小(寬高) –device 0 使用 GPU 0(RTX 2060) –workers 1 資料載入執行緒數量(Windows 建議設低) –cache […]

這次的作業主要是要根據以下四個行程(Processes),分別使用不同的 CPU 排程演算法,計算每個演算法的平均等待時間(Average Waiting Time, WT)。 行程 到達時間 A 分割時間 Burst 優先順序 P1 0 8 3 P2 1 4 1 P3 2 9 4 P4 3 5 2 單位:時間單位 需要計算的排程演算法如下: 一、FCFS 計算等待時間: 平均等待時間:(0 + 7 + 15 + 9) / 4 = 8.75 二、SJF 計算等待時間: 平均等待時間:(0 + 7 + 15 + 9) / 4 = […]