Ngrok 是一款輕量、功能強大的反向代理工具,可快速且安全地將本機開發環境暴露於公網。它主要透過建立安全隧道(tunnel),讓外部使用者或服務能夠存取本地的 HTTP、HTTPS 或 TCP 應用,而無需進行複雜的網路設定(如port映射設定,或防火牆規則設置),因此其相當適合用於測試需要外網訪問剛開發好的本地端程式。兩個常見的使用情境如下:
Learn & Share
Learn & Share由H-Y Chou 和 Books and Pencil 共筆,藉由這個平台紀錄著實用工具和好書閱讀,同時也分享著教育學習與思維概念等等多元化的主題。
2024年11月17日 星期日
2024年9月9日 星期一
[Linux]如何將腳本(shell script)轉換到系統管理服務器(systemd service)來運行?
在Linux中,shell腳本(shell script)常用於運行各種自動化的流程,包含API串接,設置和啟動應用服務等等,腳本語法也相對易學易讀,因此頗受大部分使用者的喜愛。但若需要讓shell腳本能長期穩定運行,則建議將shell腳本轉換到系統管理服務器(systemd service)來運行,將有下列幾個優點,使得該服務的運作可有效被systemd管理。
2.服務異常退出後,可自動重啟。
3.透過journalctl集中管理該服務的日誌(log),可用於問題測試和偵錯。
上述影片即是一個實際案例,其利用shell腳本將樹莓派的溫度和電壓數值以固定週期傳到influxdb中,同時若溫度過高或電壓過低,則會藉由line notify發出提醒訊息,期望藉由該服務長期監控樹莓派的運作是否穩定,若有異常進程導致溫度過高或電壓過低,則可立刻查閱日誌並及時處理。話不多說,一起來看看如何將該shell腳本轉換到systemd service中。
2024年8月21日 星期三
[Excel]如何由銷售資料篩選出客戶的回購週期?
近期與行銷同仁討論如何借重RFM模型分析既有的銷售資料,RFM模型是一種常用的行銷分析工具,其通過評估客戶的購買行為來識別並細分客戶群,其三個關鍵指標(Recency, Frequency, Monetary)的首位字母組成該模型的名稱,三個指標的定義如下:
Recency(最近一次購買時間):
Frequency(購買頻率):
Monetary(購買金額):
然而,除了上述三個指標之外,針對單一商品和單一客戶的回購週期也是一個重要參考指標,值得由銷售資料篩選和分析,或許可挖掘出既有客戶的消費行為模式。
2024年8月18日 星期日
[SQL]如何利用docker安裝SQLitebrowser,並解決中文數據亂碼問題?
SQLitebrowser是一個輕量級、嵌入式的SQL資料庫引擎,有別於MySQL等等中大型資料庫,其不需要一個獨立的伺服器程序或作業系統,而是可將所有資料、配置和索引都儲存在單一檔案(.sqlite),易於嵌入到應用程式中使用,很適合在嵌入式裝置和移動應用程式中使用,通訊軟體 微信的資料庫即是使用SQLite。
近期因在ubuntu server中架設一些應用服務,其中有些應用服務採用SQLite作為資料庫,為了查看SQLite中的數據,除了可在終端機安裝sqlite3並直接以命令指令調閱數據之外,尚可利用瀏覽器來查看,其中利用docker安裝SQLitebrowser即是一個可利用瀏覽器查看數據的方式。
2024年8月14日 星期三
[Raspberry Pi]如何在Ubuntu的python venv虛擬環境中,運行YOLOv5 物件辨識功能?
延續<[Python]如何在Ubuntu中建置python venv虛擬環境,並安裝TensorFlow和OpenCV函式庫?>文章,當建置 TensorFlow (2.10.0) 和 OpenCV (4.9.0) 的 Python 虛擬環境後,接續進一步安裝 YOLOv5 的相關套件,並在 Raspberry Pi 4B 上完成物件辨識功能,步驟如下。
2024年8月2日 星期五
[Python]如何在Ubuntu中建置python venv虛擬環境,並安裝TensorFlow和OpenCV函式庫?
為了在樹莓派上實現物件影像辨識功能,同時不影響樹莓派原來的python運行環境,選擇建置python虛擬環境[Note1]是一個好方式,其可避免版本衝突和不同運行環境的問題。另外,一併在該虛擬環境中安裝TensorFlow[Note2]和OpenCV[Note3]等等函式庫,並確認版本是否符合需求。
建置python虛擬環境
建置python虛擬環境有venv, virtualenv, conda等方式,其中venv最為簡單易用,也符合此影像辨識的項目需求,建置步驟如下:
raspberry@raspberry-desktop:~/python-venv$ sudo apt install python3-venv
raspberry@raspberry-desktop:~/python-venv$ python3 -m venv tensorflow_env
raspberry@raspberry-desktop:~/python-venv$ source tensorflow_env/bin/activate
2024年6月18日 星期二
[Raspberry Pi]如何利用docker執行motioneye,並利用Line Notify取得即時通知和照片?
無意間,翻了一本關於樹莓派的書籍,除了樹莓派的簡介和應用外,也包含初階和高階的Linux運作邏輯,書籍結構相當完整,也因此需要花時間細細體會其內容。其在樹莓派的應用內容,提及一款開源影像監視軟體motioneye,motioneye具備運動偵測,即時拍攝照片和錄影,以及發送警報通知等功能,同時其可在瀏覽器上直接設定和管理攝像頭,相當方便。
利用docker將motioneye安裝在Ubuntu作業系統的樹莓派上,並搭配一個USB Camera,就是一個簡易型的家用監控設備。
2024年6月8日 星期六
[Linux]如何將A主機的docker image轉移到B主機,並在B主機中重新配置和執行該docker image?
這個需求來自於配置open-webui的docker image。經測試不同版本的open-webui後,其中0.1.121版本open-webui的使用體驗較佳,但該版本已無法重新dock pull拉取,因此就興起檔案複製貼上的想法,由另一台已配置0.1.121版本的A主機來轉移到需要配置的B主機。(OS: AGI真的是好物,依著需求並跟著AGI實作,總會學到很多~~)
2024年3月23日 星期六
[Open-source tool]Uptime-kuma的簡介和安裝於Ubuntu 22.04系統
Uptime-kuma 是一個基於Node.js的開軟軟體,同時也是一套應用於網路監控的開源軟體,其利用瀏覽器呈現直觀的使用者介面,如圖一所示,其讓使用者可監控各種網路服務的性能和狀態,例如http(s), Ping, MQTT和SQL等服務,如圖二所示。同時也提供警報和通知功能,例如郵件或Line通知,以便在發生故障或問題時及時通知用戶,可參考圖三。
2024年3月16日 星期六
[Linux]如何在Ubuntu 22.04系統安裝Node-red?
Node-red是一個建立在Node.js上的視覺化程式設計工具,其常見的應用情境為建置或轉換各項硬體之間的通信協定的物聯網或工聯網場域,其可藉由設置來安裝第三方應用模組來建置多樣的通信協定節點,包含modbus in/out, mqtt in/out, websocket in/out等等通訊協定,以及解析常見的數據格式,包含csv, JSON等等,進而組建具備控制硬體設備,傳輸和運算數據等功能的物聯網架構。
2024年3月9日 星期六
[MQTT]Mosquitto的權限管理_使用者/密碼(pwfile)和訪問控制清單(aclfile)
延續Mosquitto的內網連接(intranet)和使用者/密碼權限設置文章,經解讀mosquitto官網文檔,在權限管理部分,除了設置使用者/密碼(pwfile)之外,還有訪問控制清單(Access Control List, aclfile)可以設置。經過測試,同時設置使用者/密碼和訪問控制清單,對於權限有實質的控管效果。
a.設置使用者/密碼文件(password_file)
sudo touch password_file
sudo mosquitto_passwd -b password_file user1 password1
sudo mosquitto_passwd -b password_file user2 password2
2024年3月6日 星期三
[MQTT]Mosquitto的內網連接(intranet)和使用者/密碼權限設置
延續[MQTT]Mosquitto的簡介、安裝與連接測試文章,接著將繼續測試在內網的兩台機器是否也可以完成發佈和訂閱作業。
同一網段的兩台電腦測試:
假設兩台電腦的配置如下:
B電腦為訂閱端,IP:192.168.0.102
2024年3月2日 星期六
[MQTT]Mosquitto的簡介、安裝與本機連接測試
MQTT(Message Queuing Telemetry Transport)是基於發布/訂閱模式(Publish/Subscribe)的輕量級網絡通訊協議,專用於在低帶寬、不可靠的網絡環境中傳輸數據,關於工作原理和優點如下:
1.發布/訂閱模式(Publish/Subscribe)
發布者將消息發布特定的主題(topic)到中介伺服器(broker),而訂閱者可藉由訂閱主題而從中介伺服器接收對應的數據,同時發佈者和訂閱者可相互不認識。
2.中介伺服器(Broker)
中介伺服器接收來自發布者的消息並將其轉發給訂閱者。