發表文章

目前顯示的是有「開發環境」標籤的文章

[開發環境紀錄] 使用 NCNN + OpenCV 建置 WebAssembly

圖片
在  上一篇  文章中分享了透過別人建置好的 WebAssembly 來進行真假人臉辨識,想說趁此機會順便了解一下 WebAssembly 的開發方式。 由於我是使用 Mac 在訓練深度學習的模型,因此也順理成章的使用 Mac 來進行開發環境的設置,但........... 真沒想到過程異常艱辛,解了一個問題又多出另外一個新的問題,於是只好狠下心來改用 Ubuntu 重頭來過,也因此有了這篇血淚記錄文(執行結果如下圖)。 另外因為牽扯技術過多,本文將不會深入探討各項技術的原理,僅記錄環境的設定過程,對於相關技術有興趣的人,可參閱文末參考網站的連結。 在開始詳細說明之前,先列出最終完成時的開發環境版本: Ubuntu : 24.04 ,作業系統。 Python : 3.12.3,使用 OS 內建版本。 Cmake : 3.28.3,C++ 編譯器。 Emscripten : 3.1.64,用來將 C++ 程式編譯成 WebAssembly 用。 OpenCV: 4.10.0,影像處理套件。

在 Apple iMac 上安裝 Tensorflow (使用虛擬環境)

圖片
在上一篇 在 Windows & Mac 環境上安裝 Jupyter Lab  中有提到,因為要執行深度學習模型的訓練,所以拿了閒置的 Mac 電腦安裝了 Jupyter Lab 的環境,在這篇文章中,要記錄如何在 Mac 上安裝 Tensorflow 的執行步驟。 執行環境說明 OS : macOS 12.4  CPU : Apple M1 Python 3.11.7 安裝 Tensorflow 為了怕干擾現有執行環境,這邊是在虛擬環境中安裝 Tensorflow,若不需使用虛擬環境底下前兩個步驟可以不執行,相關步驟如下說明。 創建虛擬環境(tfenv 這個名稱可自行調整)。 python3 -m venv ~/Developer/tfenv 切換到虛擬環境。 source ~/Developer/tfenv/bin/activate

在 Windows & Mac 環境上安裝 Jupyter Lab

圖片
前言 最近開始在做碩專論文第二階段的實驗,過去因為第一階段的實驗範圍是機器學習相關的演算法,所以 Google colab 就足以應付了,但第二階段開始要進行深度學習的演算法,發現 Colab 已經沒辦法滿足我的需求了,因此不得已只能在本地端的環境上架設 Jupyter Lab 來當作實驗環境了。 一開始我先在 Windows 環境上安裝,但因為該環境上沒有顯示卡,所以跑起來頗為吃力,幸好我手邊有一台閒置的 iMac(M1晶片),所以改用 Mac 來進行安裝,目前看來,搭配 iMac 的效能確實比僅擁有 CPU 的 Windows 環境好很多,因此,本文將記錄我在這兩個平台上的設定過程和相關步驟。 對了,在囉嗦一句,因為未來可能會有不同套件版本的需求,所以實務上建議將 Jupyter Lab 安裝在虛擬環境上面,至於如何安裝在虛擬環境?這個後續我會在另外一篇在分享了。

[開發環境] ngrok 外部網路連開發環境神器 (LINE Messaging 為例)

圖片
在開發上有時候會有串接外部服務,如 OAuth、Webhook 的需求,再加上目前各大服務平台都已要求再回 Call 的網址都必須提供 https 憑證才行,這也造成了本地開發階段時的不便,ngrok 就是為了解決此問題而存在的服務。 ngrok 是個知名的內網穿透雲端服務,意思是說你的設備不需要Public IP,透過他的Agent建立Tunnel將服務暴露到外網上  

Grafana Loki 安全性設定 (使用 IIS ARR)

圖片
在 上一篇 文章有紀錄 Grafana 和 Loki 的安裝,但根據 官網的說明 ,Grafana Loki 本身並不包含授權的功能,所以需要依靠 reverse proxy 來完成此需求,本篇則是使用 ARR 來進行設定。 前置條件 下載並安裝 URL Rewrite 。 下載並安裝 Application Request Routing , ARR 相關設定可參考 這一篇文章 的說明。 Step1. URL 重寫 RewriteMaps 設定 此設定是為了,當 Client 端的請求包含了指定的 Custome Header,並且符合內部定義的 Key 時,會使用 value 值來取代, 講人話就是,你的授權 Token 設定的地方 ,底下的設定代表,我核發了 Lawrence & Lawrence2 兩個 Token,若滿足條件,則比對其值 Y。 <?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rewriteMaps> <rewriteMap name="Authorized Clients"> <add key="Lawrence" value="Y" /> <add key="Lawrence2" value="Y" /> </rewriteMap> </rewriteMaps> </rewrite> </system.webServer> </configuration>

Grafana + Loki + Promtail 安裝紀錄( Windows Event Log 為範例)

圖片
安裝 Grafana Grafana 是一個跨平台、開源的資料視覺化網路應用程式平台,使用者可透過組態設定來連接多個資料來源,並且在此平台內顯示資料圖表或警告等等,例如,將各伺服器的事件檢視器的 Log 統一發送到 Grafana 監控,底下為安裝步驟的紀錄。 下載 grafana-10.2.2.windows-amd64.msi OSS 版本 並安裝 。 因預設使用 3000 Port 會與我另外一個服務 Rendertron 衝突,故需要調整一下 Port,這邊用 3333,若沒有這個問題,可略過此步驟。 調整設定檔 C:\Program Files\GrafanaLabs\grafana\conf\defaults.ini 內,找到 http_port 並調整為 3333。 # The http port to use # http_port = 3000 http_port = 3333 若有需要 開啟外部連線 ,也記得要調整 defaults.ini 的設定,若只有不提供外部使用可忽略此步驟。 # The public facing domain name used to access grafana from a browser domain = localhost # 若直接對外開放需要改成你的 Domain # Redirect to correct domain if host header does not match domain # Prevents DNS rebinding attacks enforce_domain = true # The full public facing url # 若有使用 reverse proxy server 進行轉址 # 也請改成你的對外網址,顯示的 http 協定或 port 可能不正確 root_url = https://你的Domain # root_url = %(protocol)s://%(domain)s:%(http_port)s/

Nginx 使用 Let's Encrypt (以 Ubuntu 22.04 為例)

圖片
本篇紀錄 Nginx 上面掛載 SSL 憑證的步驟,相關說明如下。 安裝 Certbot for nginx 使用  站台對應的 Server 必須事先對應好,這裡不在說明,請自行參考 這篇 的說明。 因為在測試環境上,沒有辦法開放 80 & 443 Port,所以這邊先使用 萬用子網域憑證 ,執行底下的程式碼, --manual 參數的關係,接下來的命令都會使用互動的方式來進行。  執行完上面那段語法會跳出 dns-01  challenge,並提供一個值,請拿這個值到 DNS 後台進行設定。

[開發環境] 安裝 Nginx 並設定對應不同網域的站台 (以 Ubuntu 22.04 為例)

圖片
使用 APT 進行安裝 Nginx 更新 Ubuntu 系統的 apt 版本。 sudo apt update 查詢 nginx  官網提供可安裝的版本。 apt-cache madison nginx 安裝指定的版本,系統應該會詢問是否進續安裝,請輸入 y,並按照指示進行後續的動作,預設安裝完畢後,服務應該就已經啟動了。 sudo apt install nginx=1.18.0-6ubuntu14.4 確認 nginx 服務是否有在運行,若看到底下的畫面代表已啟動成功。 systemctl status nginx

[開發環境] 使用 Rendertron 技術優化 Angular 網站 SEO

圖片
前言 在 2016 年時,曾經寫過一篇關於 SEO 優化的文章  [SEO優化] Microdata類別(itemtype)實作  ,時隔多年,現在有越來越多的網站都已經改成前後端分離,前端採購 SPA 的框架,筆者自己寫的 寶貝評論+ 也不例外。 什麼是 SPA (Single-Page Application) 單頁式應用程式 ?  維基百科的說明是,它是一種網路應用程式或網站的模型,它透過動態重寫當前頁面來與使用者互動,而非傳統的從伺服器重新載入整個新頁面。 簡單來說, 當你從伺服器下載網頁到瀏覽器時,一開始該網頁並不包含實際內容,而是在下載完成後,動態抓取並呈現你所看到的內容 。常見的 SPA 前端開發框架包括 Angular、Vue 和 React。

[開發環境] MSSQL 資料庫備份

圖片
本文要記錄如何使用維護計畫精靈來設定備份策略,涵蓋了資料庫備份、Log 備份以及 Log 清除三個重要部分,並以 MSSQL 2019 為例,但請注意,SQL Server Express 版本並不支援此功能,若你使用的是 Express 版本,本篇內容並不適用。 新增維護計畫 首先新增維護計畫(如下圖),並輸入維護計畫名稱。 設定執行時間 若需要定期執行排程,可點選下圖行事曆的 icon 來設定執行時間。

[開發環境] MSSQL 全文檢索

圖片
MSSQL 全文檢索是 SQL Server 的一個功能,相較於傳統的 SQL 查詢,全文檢索更適用於對文本內容進行 關鍵字搜索 和相關性匹配,這邊文章是我要紀錄如何安裝及使用,本文介紹以 MSSQL 2019 為例,在開始前,請先完成 資料庫引擎服務 和 搜尋的全文檢索和語意擷取 的功能。 建立全文檢索目錄 全文檢索目錄是個虛擬物件,它是用來當做全文檢索索引的容器,同時不屬於任何檔案群組,可使用介面或者語法來進行新增。 -- 新增全文檢索共用目錄 CREATE FULLTEXT CATALOG DefaultFullTextDoc WITH ACCENT_SENSITIVITY = ON GO

[開發環境] IIS ARR 環境設定

圖片
IIS ARR(Application Request Routing),是微軟 Internet Information Services(IIS)提供的一個擴充功能,它的主要功能是提供負載平衡和反向代理服務。 何謂負載平衡(Load Balancing)?它是一種分配請求或工作負載到多個伺服器或資源上的技術,通常位於客戶端和伺服器之間,接收來自客戶端的請求,然後根據特定的算法(如輪詢、最小連接數、最少負載等)將這些請求分發到多個伺服器上,這樣可以確保每個伺服器都能夠平均處理請求,從而避免單個伺服器負載過重,提高整個系統的性能和可靠性。 何謂反向代理(Reverse Proxy)?主要的目的是接收來自客戶端的請求,然後將這些請求轉發到內部伺服器或者後端伺服器上,並將伺服器的響應返回給客戶端,這樣客戶端看到的是反向代理伺服器的地址,而不是後端伺服器的地址。這樣可以幫助隱藏內部伺服器的資訊,增加安全性。 常見的類似服務有 Nginx、Traffic,下文為安裝 ARR 服務的相關說明。

[開發環境] NetCore 站台套用 Single Sign-On 登入機制

圖片
單一登入(Single Sign-On,簡稱SSO)是一種身份驗證技術,它允許使用者在訪問多個應用程式或系統時只需通過一次身份驗證就能夠登入,也就是說使用者只需要輸入一次他們的帳號和密碼,就能夠輕鬆地存取各種應用程式,而無需反覆輸入驗證資訊。 本文的目的就是在於記錄如何實現在 .Net Core 站台中,直接驗證使用者當前登入的 Windows 電腦帳號的相關設定及程式碼,相關說明如下

[開發環境] 安裝 RabbitMQ 服務

圖片
RabbitMQ 是一個開放原始碼的訊息代理服務,它的主要功能是協助不同應用程式之間進行訊息的傳遞與處理,就像是一個郵局一樣,它讓發送者(寄件人)可以把訊息放進佇列(信箱),然後接收者(收件人)可以從信箱中取出訊息並進行處理。 以下是 RabbitMQ 的一些特點: 訊息佇列 : 讓你可以建立多個佇列(信箱),讓應用程式之間可以互相傳遞訊息,這些訊息可以是任何形式的資料。 可靠性 : 提供持久性訊息和交易支援,就像是郵局會保存信件一樣,即使在系統出現問題時,訊息也不會遺失,並且確保訊息被成功傳遞。 彈性與擴充性 : 支援多種訊息模式,可以依照需要設計點對點傳遞、廣播(發佈/訂閱)或者工作隊列模式,另外,它也可以在單一伺服器或者建立集群,以提高系統的擴充性和可靠性。 管理與監控 : 提供一個管理介面,讓使用者可以輕鬆地監控各佇列、訊息狀態,並且進行設定管理。 下圖是登入管理介面後的示意圖

[開發環境] 安裝 Redis 服務

圖片
Redis(Remote Dictionary Server)是一個開源的記憶體數據庫,它以鍵值對的形式存儲數據(Key/Value),並且支援各種數據結構,包括字符串、哈希、列表、集合、有序集合等,常被用作快速、高效的快取(Cache)工具,以下是它幾個重要的特性。 快速 : 基於記憶體的數據庫,因此讀寫操作非常快速,特別適合用於需要高性能的應用程式。 多功能 : 支援各種數據結構,也可以支援非結構化的數據,因此滿足不同應用場景的需求。 持久性 : 支持將數據持久化到磁盤,這樣即使發生故障重啟後也不會遺失資料。 分布式 : 提供了集群模式,可以將數據分佈在多台機器上,從而實現更高的性能和可擴展性。 在我的專案中,主要拿來當做 Cache Server,服務本身是沒有提供 GUI 的管理工具,因此你可以透過一些開源的工具來查看服務基本資訊、儲存的數據內容等等,如 Another Redis DesktopManager(下圖)。

[開發環境] 建立本地端 SSL 自簽憑證 (Self-Signed Certificate)

圖片
因為要開發 facebook oauth 登入,但 facebook 登入目前已經不支援 http 站台的串接,不過有找到更好的方式【 ngrok 外部網路連開發環境神器 】, 本篇文章僅留存紀錄(產生本地端開發用憑證) 。 方法一、直接建立自簽憑證

VS2005 連接 TFS2010 無法正常連線解決辦法

圖片
這幾天因為環境的關係,不得已必須使用Visual Studio2005透過Internet來連線Team Foundation Server 2010,但是VS2005預設是沒有安裝Team Explorer,所以沒有辦法連線,網路上找了一下資訊,發現 程湘之間 有教人家如何安裝,我就大概說明要安裝哪些東西

SQL Server Express 資料庫遠端連線設定

圖片
SQL Server 2005 Enterprise 在遠端連線通常不會有問題,但SQL Server Express版本卻常出現不能連線,一直出現連線被拒(遠端連線失敗 TCP/IP 連線有問題)。 其實 SQL Server Express 資料庫是可以遠端連線(TCP/IP 連線),但是預設是沒打開的,以下步驟就來告訴各位如何正確的開啟。 (1) 開啟 Management Studio Express:在「物件總管」視窗的「伺服器」按右鍵選「屬性」,如圖(一)所示;選取「安全性」頁籤並在 "伺服器驗證" 的地方選取「SQL Server 及 Windows 驗證模式」,如圖(二)所示。