發表文章

8-Bit Plane Slicing 位元平面分割 詳細解說 # 附 Python 程式碼

圖片
[影像處理 Image Processing] 8-Bit Plane Slicing 位元平面分割 詳細解說 # 附 Python 程式碼 觀念解說︰ 8-bit plane slicing 主要作用於進行影像處理時,在影像中 切割出高頻與低頻的資訊 。 可以參考這張圖片幫助理解 8-bit plane slicing 分割抽像圖 如上圖所示,你可以想像,在一張灰階(8-bits)圖片的每一個像素pixel將被分層切割(0-7層), 總共8層 ,像漢堡一樣,這就是 8-bit plane slicing 。 在一張 灰階圖片 ,其像素值範圍是 0 - 255 ,分別用於表達不同的深淺灰度,而圖片中每一個像素點(pixel),都會有一個像素值(pixel value)。這一章將會以灰階圖片作為示例。 像素點、像素值的解釋,可以參考這篇文章。 其實圖片在數值處理上,就像一張 網格 , 網格裡每一個格子都有不同的數值,代表著不同的顏色 。(RGB色彩圖示則用了三層的網格去表示,每一格由 RED, GREEN, BLUE 三種顏色組成) 計算方法︰ 8-bit plane slicing 其實就是將每一個像素值(pixel value)的二進制值,以其每個位數 (2 0 - 2 7 ) 進行過濾。 假設以下表格是一張 灰階圖片 的像素值(數值範圍0-255)︰ 217 97 85 21 219 115 177 204 104 e.g. 網格裡每一個格子都有不同的數值,代表著不同的顏色。(如上所示) ( 0 - 255) 1. 首先我們可以將灰階圖片裡的所有像素值 (範圍︰0 - 255) 轉為2進制表達。 十進制 二進制 0 0000 0000 1 0000 0001 2 0000 0010 3 0000 0011 ...... ...... 127 0111 1111 ...... ...... 255 1111 1111 2. 然後我們將圖片裡的每一格像素(pixel),抽取其二進制值每個位數的值,成為Bit-plane。我將會以下方像素值為例︰ 217 97 85 21 219 115 177 204 104 像素...

Power Automate - Send an email notification when a SharePoint list item or file is approved (Support multiple approvers)

圖片
Overall First, you need to enable "Approvals" in your SharePoint. Next, click "Add Column" to configure the new columns to show on your site. Enable Approval status, Approvers, Responses, and Approval Creator. Power Automate Flows: 1. SharePoint::When an item or a file is modified     - Site Address: select your site address (What is your folder location?)     - List or Library Name: (Option, if your site has a library or another tag) 2. Variable::Initialize variable  The variable is only for debugging purposes and allows you to check the output; you can skip it. -Name: ApproversEmails -Type: Array -Value: 3. Control::Apply to each (If Power Automate automatically produces some additional information for each block, you can remove it directly.) -Name: For each  -Select an output from previous steps: "Approvers" of "SharePoint::When an item or a file is modified" Get folder metadata can skip. 4. SharePoint::Get file metadata     -Site Address: sam...

如何將 Telegram 接入 OpenClaw - 學習如何建立 Telegram Bot 並將其與 OpenClaw 整合

前言 OpenClaw 是一個強大的自動化平台,它支援多種渠道,包括 Telegram。透過接入 Telegram,您可以方便地與 OpenClaw 互動,以通知您任務狀態或直接控制自動化流程。 步驟 1:建立 Telegram Bot 要讓 OpenClaw 連接 Telegram,您需要一個 Telegram Bot。請按照以下步驟操作: 開啟 Telegram App,搜尋 @BotFather 並點擊進入對話。 輸入命令 /newbot ,然後按照指示為新的 Bot 指定名稱和用戶名: 名稱: 例如「OpenClaw Assistant」 用戶名: 需要以 _bot 作為結尾,例如「openclaw_assistant_bot」 完成後,您將收到一組唯一的 API Token ,格式類似於: 123456789:ABCDEF... 步驟 2:將 Token 添加至 OpenClaw 以下是完整的操作指南,幫助您將 Telegram Bot 的 Token 配置到 OpenClaw。 2.1 確定 OpenClaw 的工作區路徑 預設情況下,OpenClaw 的工作區位於伺服器上的 ~/.openclaw/workspace 。使用 SSH 登入伺服器後,執行以下指令檢查: ssh -i "test-webserver-apeast1.pem" ec2-user@ cd ~/.openclaw/workspace ls 確保能看到名為 config 的配置文件。 ...

OpenClaw安裝 [AWS]

圖片
🚀 OpenClaw 安裝指南 - AWS EC2 💡 快速安裝提示: 在最新版的 OpenClaw 官網中,使用以下指令已經可以自動安裝 Node.js: curl -fsSL https://openclaw.ai/install.sh | bash 你也可以跟隨以下步驟了解一下套件和原理。 📋 準備工作 在 Linux VM 上準備 Node.js, brew 和 git 一個 Amazon Linux EC2 instance 🔧 安裝步驟詳解 1 安裝 Git OpenClaw 需要 Node.js,我們需要用到 brew 去安裝,而安裝 brew 又需要先安裝 git。 Brew 和 yum 都是一些軟件工具包,協助管理和安裝 linux 的工作環境,有興趣自己可以去了解下。 所以我們需要先在 VM 上安裝 git, git 傳送門 📦 安裝指令 sudo yum install git-all 2 安裝 Homebrew 安裝完成後,安裝 Brew: curl -o- https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh | bash ⚠️ 重要提醒: 安裝成功後,別忘了看這段文字,它需要我們自行設定環境變數 (PATH),否則輸入 brew 時,cmd 會無法辨識 "brew" 指令。 🔧 設定環境變數 echo '' >> /home/ssm-user/.bashrc echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv bash)"' >> /home/ssm-user/.bashrc eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv bash)" 設定完成後,試著輸入 brew ,如果不是跳出 command not f...

TIBC Spotfire SSL 證書安裝 / HTTPS 設定

圖片
TIBCO Spotfire SSL 證書安裝 / HTTPS 設定 TIBCO Spotfire SSL 證書安裝 / HTTPS 設定 大家好,我是 Jayson Chan 。在企業內部部署 TIBCO Spotfire Server 時,啟用 HTTPS 加密連線是常見的安全性要求。這篇文章將分享我實際處理一張 PFX 格式 SSL 證書的經驗,並點出最容易忽略的細節—— keystore 的 alias 。希望透過真實案例與圖文說明,幫助你順利完成 Spotfire 的 HTTPS 設定。 一、SSL 證書的常見格式 在開始之前,先認識一下 SSL 證書的各種檔案格式,因為接下來的操作會用到這些概念。以下是常見的檔案後綴及其說明: 檔案後綴 檔案類型 說明 *.DER 或 *.CER 二進制格式 只含有證書資訊,不包含私鑰。 *.CRT 二進制格式或文本格式 只含有證書資訊,不包含私鑰。 *.PEM 文本格式 一般存放證書或私鑰,或同時包含證書和私鑰。*.PEM 如果只包含私鑰,通常會用 *.KEY 作為檔名。 *.PFX 或 *.P12 二進制格式 同時包含證書和私鑰,且通常有密碼保護。這是 Windows 環境常見的交換格式。 ...

PL/SQL Cursor 解析 : Oracle Store Procedure & Cursor

PL/SQL 游標深入解析:從基礎到作用域 PL/SQL 游標深入解析:從基礎到作用域,一篇文章帶你徹底搞懂 大家好,我是Jayson。今天我們來聊聊 PL/SQL 中一個非常基礎但至關重要的概念—— 游標(Cursor) 。無論你是剛接觸 Oracle 資料庫的萌新,還是已經寫過幾年 SQL 的老手,游標都是繞不開的話題。尤其是游標的 作用範圍(Scope) ,很多人在實際開發中容易踩坑。 先來看一段簡單的範例程式碼: CREATE OR REPLACE PROCEDURE TESTING AS F_DATE VARCHAR2(10); CURSOR Hello_Cursor IS SELECT A FROM <your table> WHERE A = 'ABC'; BEGIN OPEN Hello_Cursor; FETCH Hello_Cursor INTO F_DATE; DBMS_OUTPUT.PUT_LINE(F_DATE); CLOSE Hello_Cursor; END; 這段程式碼看起來很簡單,但它背後隱藏著游標使用的完整流程。接下來我們就從這段程式碼出發,逐步拆解游標的方方面面,最後深入討論游標的 作用範圍 。 一、什麼是游標? 簡單來說, 游標是 PL/SQL 中用於處理 SQL 查詢結果集的一種機制 。當你執行一個 SELECT 語句,回傳的結果可能包含多行資料,而 PL/SQL 是面向單行處理的,這時候就需要游標來逐行讀取資料。 游標分為兩類: 隱式游標(Implicit Cursor) :由 PL/SQL 自動管理,用於單行查詢或 DML 操作。 顯式游標(Explicit Cursor) :由程式設計師顯式定義,用於處理多行結果集。 今天我們重點講解 顯式游標 ,因為它是我們手動控制的核心。 二、顯式游標的四步曲 使用顯式游標通常需要四個步驟: 宣告游標(Declare) :定義游標名稱和對應的 SELECT 語句。...

Oracle 分析函數:ROW_NUMBER() 與 RANK() 指南

Oracle 分析函數:ROW_NUMBER() 與 RANK() 指南 Oracle 分析函數:ROW_NUMBER() 與 RANK() 完全指南 大家好,我是Jayson。在上一篇我們聊了 PL/SQL 游標,今天我們要進入 SQL 分析函數的世界,專注於兩個超級實用的工具: ROW_NUMBER() 和 RANK() 。這兩個函數搭配 PARTITION BY 和 ORDER BY ,可以輕鬆完成「分組排序」、「取各組最大/最小值記錄」等複雜任務,是資料分析與報表製作的必備技能。 一、什麼是分析函數? 分析函數(Analytic Functions),也稱為視窗函數(Window Functions),允許我們在不改變查詢結果列數的情況下,對每一行計算一個基於某個視窗範圍的聚合值或排序值。簡單說,就是可以在每一行的旁邊加上排名、累計總和、移動平均等資訊。 ROW_NUMBER() 和 RANK() 是最常用的兩種排名函數。 二、ROW_NUMBER() 基本語法與用法 ROW_NUMBER() 會為查詢結果集中的每一行指派一個唯一的序號,序號從 1 開始,按照 ORDER BY 指定的順序遞增。如果搭配 PARTITION BY ,則會在每個分區內獨立編號。 基本語法: ROW_NUMBER() OVER ( [PARTITION BY 分欄位1, 分欄位2, ...] ORDER BY 排序欄位1 [ASC|DESC], 排序欄位2 ... ) 範例 1:簡單的 ROW_NUMBER() SELECT A, B, C, ROW_NUMBER() OVER (ORDER BY B) AS row_num FROM Table_ABC; 這個查詢會將 Table_ABC 的資料依照 B 欄位排序,然後從 1 開始依序給每一行一個編號。注意,這裡沒有 PARTITION BY ,所以整個結果集視為一個大區塊。 範例 2:使用 PARTITION BY 的分組編號 SELECT A, B, C, ROW_NUMBER() OV...

T-SQL 與 SSMS:深入剖析 SQL Server 預存程序中的 While 迴圈游標

T-SQL 與 SSMS:深入剖析 SQL Server 預存程序中的 While 迴圈游標 T-SQL 與 SSMS:深入剖析 SQL Server 預存程序中的 While 迴圈游標 大家好,我是 Jayson Chan 。在處理 T‑SQL 邏輯時,我們偶爾會遇到需要逐行處理資料的情況,這時許多人第一個想到的就是「游標」(Cursor)。雖然 SQL Server 的強項是「集合導向」(Set‑based)操作,但有時候(例如呼叫外部 API、複雜的商業邏輯,或來源是連結伺服器的資料)游標仍是必要的工具。今天我們就透過一個實際的預存程序範例,深入探討如何在 SSMS 中使用 WHILE 迴圈搭配游標,並點出其中的細節與陷阱。 一、範例程式碼一覽 以下是讀者提供的預存程序,功能是從 Oracle 連結伺服器抓取資料,然後逐筆印出並呼叫另一個程序: CREATE PROCEDURE [dbo].[SP_ABC] AS BEGIN DECLARE @F_DATE VARCHAR(10) DECLARE @T_DATE VARCHAR(10) DECLARE Hello_Cursor CURSOR FOR SELECT A, B FROM OPENQUERY(Oracle_SF, 'SELECT * FROM ABC') OPEN Hello_Cursor FETCH NEXT FROM Hello_Cursor INTO @F_DATE, @T_DATE WHILE @@FETCH_STATUS = 0 BEGIN PRINT(@F_DATE + ' | ' + @T_DATE) EXECUTE('Call your Procedure') -- 假設這裡是動態呼叫其他程序 FETCH NEXT FROM Hello_Cursor INTO @F_DATE, @T_DATE END CLOSE Hello_Cursor DEALLOCATE Hello_Cu...