Java 基礎(三)
介紹 這一篇是 Java 基本語法介紹的第二篇,我們要來繼續探討程式碼架構。 有效範圍 Java 使用 { } 來表示程式中某個範圍區塊,變數或物件的有效範圍 (scope) 會被限制在當時被宣告的區塊內,超出了該區塊則會被回收。 1234567891011public class Main { public static void main(String[] args) { int x = 10; { int x = 20; // 無法再宣告,因為 x 已在外層區塊宣告過 int y = 30; } System.out.println(x); System.out.println(y); // 無法使用,因為 y 的範圍僅限於區塊內 }} 製作套件 Package 把特定功能的程式碼包裝成一個套件 (package),之後需要時可以直接拿來使用。 自訂套件 檔案位置: 1234src/ └─ main/ └─ java/com/rayl...
Java 基礎(二)
介紹 這一篇是 Java 基本語法介紹的第一篇,我們將由淺入深來探討程式碼架構。 Java 基礎觀念 Java 是以類別(class)型態為單位,且大小寫有所區別。 一個檔案可以包含一個以上的類別,但最多只能有一個公開的接口,而這個接口由唯一的公用(public)的類別來表示。 如果一個檔案內有多個 public 類別,編譯器會無法判定執行入口。 一個應用程式,必須有一個「程式進入點」,程式的進入點必須宣告為靜態的 main 方法。 { }內的程式屬於同一個區塊。 每行程式的尾段都必須要加上;來代表結束;大括號除外。 Hello Java 剛開始學程式一定會遇到的開頭式,就是教你怎麼打印輸出Hello world。 12345public class Main { public static void main(String[] args) { System.out.println("Hello world!"); }} public class Main: J...
Java 基礎(一)
認識 Java 圖片來源 起源 最初是由 Unix 作業系統下的伺服器廠商,昇陽公司所研發的一套跨平台物件導向程式語言。 是以 C++ 為基礎架構,更改了許多 C++ 的複雜之處,最終命名為我們熟悉的 Java。 後來被甲骨文公司 (Oracle) 併購。 目的 以物件導向為原則的設計模式。 允許同個程式在不同作業系統上執行。 內建對電腦網路的支援。 改善 C++ 的複雜之處,使其容易使用。 特性 跨平台的特性,強調「一次編寫,到處執行」,使用 Java 編寫的程式可以在編譯後不用經過任何更改,就能在任何裝置上運行。 Java 語言與其他程式語言不同的地方在於,編譯 (Compile) 後產生的結果二元碼,不能直接在作業系統上運行,必須透過 Java Virtual Machine (JVM) 轉換成該系統能夠處理的目的碼後才能運行。 執行環境 Java 的運行環境是透過下列元件組成: Java Runtime Environment (JRE) 提供作業系統在執行 Java 應用程式所需的軟體。 Java Virtual Machine (JVM) 用來將二元碼 (...
使用 n8n 建立 LINE 個人助理
動機 想要練習看看使用非常方便的 n8n 來建立屬於自己的 LINE 個人助理。 解決方法 透過 ngrok 反向代理,將本機的 n8n 服務公開到網路上,然後在 n8n 上透過 Webhook 接收 LINE 訊息,並搭配 AI Agent 來控制 Google 行事曆。 實作 建立 ngrok 到 https://ngrok.com/ 註冊一個帳戶,登入後可以看到右邊有很多啟動方式。 我們選擇使用 docker 來啟動。 使用下方的指令進行啟動。 1docker run --net=host -it -e NGROK_AUTHTOKEN=<你的金鑰> ngrok/ngrok:latest http <n8n 的埠號> 看到這個畫面代表啟動成功。 創建 Webhook 剛開始先創建一個 Webhook 來接收訊號,這個 Webhook 會被網址使用 post 觸發。 連接 LINE BOT 把 Webhook 的 URL 複製到 LINE BOT 的 Webhook URL 裡。 注意紅色框框要改成 ngrok 提供的網址。 接下來到 Res...
filebrowser + nginx 建立自定義網域下載
動機 因為系上的實驗室內部有架設 filebrowser 提供檔案傳輸的服務,但最近遇到一個問題,在下載檔案時 filebrowser 會透過 JSON Web Token (JWT) 來驗證使用者,憑證輸入後會導致網址變得非常難看。因為常常會使用 wget 來下載檔案,不想要輸入又臭又長的網址,因此想出了一個方法解決了網址超長且意義不明確的問題。 因為輸入 token 導致網址超長 方法 透過 filebrowser 的邀請碼的方式來讓使用者下載檔案時不需要輸入 token,這樣也就意味著網址不會又臭又長的,而且可以搭配 Nginx 反向代理來進行訪問限制與轉發,使用自定義網域來指向邀請碼所提供的分享連結進行檔案下載。 實作 第一步 打開 filebrowser ,創建一個主資料夾,用來存放 filebrowser 裡的檔案,然後為它創建一個邀請碼,時間可以設訂 999 小時(含以上),確保連結不會在短期失效。 邀請碼創建完畢 第二步 創建完邀請碼後,透過邀請碼旁邊的複製按鈕,來取得分享連結。 第三步 透過 Nginx 來設定網路規則讓連線指向我們的分享連結,並禁止...
搭建屬於自己的檔案管理頁面
前言 今天要介紹一個好用的檔案管理工具 FileBrowser,讓我們能夠很方便的管理與修改檔案。 什麼是 FileBrowser FileBrowser 可以連結到遠端的伺服器,讓一般使用者能夠透過瀏覽器的方式來對檔案進行管理 (edit, update, create, delete),不需要使用終端機。 如何建置 Dockerfile 12345678910111213141516171819FROM alpine:3.21.3RUN apk update && apk add --no-cache \ curl wget ca-certificates bash tar grep sed coreutils unzip && \ adduser -h /opt/app -D app && \ curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | bashCOPY ./entrypoint /opt/app/e...
使用 WSL + DevContainer 進行程式開發(二)
什麼是 Dev Container 是以 Docker 為基礎,將開發環境與依賴套件或工具打包成一個容器 (Container),方便使用者能夠快速建置與復原開發環境。 主要的功能如下: 環境一致性: 無論是在 Windows 或 Linux,只要設定好 Dev Container,同一份程式碼都可以在一致的環境下運作 隔離性: 可同時在一台電腦上運行多個不同語言、版本的開發環境,避免汙染本機 圖片來源 如何建置 事前準備 安裝 Docker | Docker: Accelerated Container Application Development 使用 VSCode + WSL 安裝 Dev Container 擴充套件 | Dev Containers - Visual Studio Marketplace 新增開發用資料夾 在 WSL 環境裡新增一個資料夾並進入 VSCode 12mkdir DevContainerTest && cd DevContainerTestcode . 新增 Dev Container 設定檔 點擊 VSCode 左...
使用 WSL + DevContainer 進行程式開發(一)
什麼是 WSL WSL 全名為 Windows Subsystem for Linux,是一款能讓使用者在 Windows 作業系統上直接執行 Linux 環境的 Windows 子系統。 WSL 的版本介紹 WSL 1 是採用系統呼叫轉譯 (System Call Translation) 的架構,將 Linux 的命令轉譯成 Windows API,這種方式是在 Windows 上模擬 Linux 的環境。因為每次的動作都要進行轉譯,因此會有執行延遲的問題。 圖片來源 WSL 2 則是採用虛擬機 (Virtual Machine) 的架構,在虛擬機內運行一個完整的 Linux 作業系統,無需透過轉譯的方式,因此執行速度大幅提升。 圖片來源 完整的 WSL 2 架構圖 圖片來源 安裝 WSL 在 windows 功能中打開 Virtual Machine Platform 與 Windows Subsystem for Linux 以系統管理員身分開啟 powershell 執行 1wsl --install 重啟系統 建置第一個 Ubuntu 子系統...
