Systemd – Timer 服務的定時、排程執行

參考資源

流程

  1. 建立一個服務 .service
  2. 建立一個計時器 .timer ,執行剛剛建立的服務
  3. 啟用、開始服務及計時器

建立服務

範例服務的功能很簡單,就是將目前時間附加寫入 cron.log 內

/etc/systemd/system/test.service

啟用、開始服務

建立計時器

/etc/systemd/system/test.timer

  • 0/xx 除多少就代表幾秒跑一次

啟動、開始計時器

後續如果有修改,需要重新讀取

排程執行

  • * 星期幾
    Wed
    Mon,Sun
    Mon..Thu,Sat,Sun
  • *-*-* 西元年月日
    *-1-1
  • *:*:* 時分秒
    00:00:00

不能每秒執行

因為使用 Docker 的 PHP 來執行,一開始以為是容器執行效能問題,結果看了 Log 才發現是系統本身的問題。

每 2 秒執行一次是正常的

 1 total views,  1 views today

MQTT – 5. EMQ X Broker 安裝、基本設定

簡介

  • 整合資料庫使用者帳號認證
  • ACL – 針對使用者設定不同的主題存取權限
  • 支持 SSL
  • 支持 WebSocket

安裝

管理介面

帳號 admin 密碼 public

修改預設 Dashboard 密碼,編輯 /etc/emqx/plugins/emqx_dashboard.conf

修改完成後重啟即可

SSL – 證書生成

不適用跨到 WebSocket 應用,需要跨接到 WebSocket 時,請參考「MQTT – 使用 Let’s Encrypt SSL + EMQ X 建構 SSL WebSocket

編輯 openssl.cnf 設定檔

  • IP 不能使用 * (萬用字元 wildcard) ;DNS 可以
  • commonName 使用 *.*.*.* 來應付 IP 連接環境

結果

編輯

證書指紋

MySQL 使用者認證

編輯資料庫連接設定檔

重啟 emqx

建立 user 資料表

建立 ACL 資料表

到 Dashboard 開啟 emqx_auth_mysql 插件

白名單

實際應用上不可能讓每個使用者都無限制的訂閱主題,因此必須使用白名單機制

將預設允許訪客關閉

user 資料表新增帳號,ACL 新增允許的主題,類似以下這個樣子

 475 total views,  4 views today

WordPress 6

前言

如果不是新主機 PHP 8.1 我也不會把 WordPress 從 4.9 升級。

  1. 下載 6.0 壓縮檔,還原到原網站目錄
  2. 登入後台把資料庫處理一下,按一下按鈕就好
  3. 開始使用

試用一下區塊編輯真的用不慣,所以安裝了以下 2 個 plugin 就可以恢復以前的使用習慣了

Plugins

參考資源

 43 total views

Linux – 以 Sysbench 比較 AWS 和 一般 CPU 效能比較

測試工具 sysbench

AWS EC2 的測試結果,請注意年份以及使用主機方案

單核心測試

網路上測試大多沒有指定參數,也就是只跑單核心

測試結果

Core(TM) i3-8100Celeron(R) J4005Pentium(R) Gold G5400Core(TM) i3-12100
112319 157841271036752
212302157371266436775
312288158511270836820

AWS 大多數 EC2 方案比 Celeron CPU 表現還差

多核心測試

測試結果

Core(TM) i3-8100Celeron(R) J4005Pentium(R) Gold G5400Core(TM) i3-12100
1484202980142497140811

12100 使用 4 threads 和 8 threads 分數差不多

作業系統 OS

  • Pentium(R) Gold G5400 = Proxmox 7.2
  • Celeron(R) J4005 = Ubuntu 20.04
  • Core(TM) i3-8100 = CentOS Linux 7
  • Core(TM) i3-12100 = Ubuntu 22.04

 188 total views

貴的要死的雲端服務

本文價格的比較沒有加上維護電腦、網路人員的費用,單純是揭露計算雲端服務費用

以 hicloud 只是因為都是中文所以閱讀無障礙,AWS EC2 或其他類似雲端服務雖然計算方式都不同,攤提費用到一年或更久的時間都是貴的要死的費用

除非是一些特殊的 DNS 或叢集功能,因為線路末端無法支援才建議使用

主機

費用是主機 + 硬碟 + 頻寬 + 其他加值,本文不考慮加值

4 vCPU 一天的價格是 166,什麼是 vCPU

換句話說,如果你的電腦是一顆 i3-8100 3.60 GHz 的 CPU,雲端主機是算成 14.4 vCPU

一顆 i3-8100 不用 5000 可以用個好幾年,雲端服務開 16 vCPU 只能用十幾天

流量費用

租一條 100M/100M 的網路,換算為 Byte = 12.5M,

一天可以傳輸 12.5*86400 = 1080000MB 的資料 = 1.08T ,一個月最多為 32.4T 每個月只要 2196 元

速率越快費用越便宜

保證可用度

租用兩套 (台南、台北)才可以保證 99.95% 的可用度,99.95% 可用是多少?

一月 = 30 天  = 720 小時

720 * 0.05 = 36 小時 = 一天半

租兩套才只能保證一個月只有一天半不會斷線,我自己在家架主機只有一台也比這個強很多

AWS EC2 的運作保證

AWS EC2 的保證為 99.99%

720 * 0.01 = 7.2 小時

重點是「你就有資格申請」,想要退款請自己申請,不是自動帳單退款

結論

hicloud 超出金額的部份就是 MIS 的價值,這樣看起來 MIS 的薪水都被低估了

 130 total views

PHP – 並行處理

popen

應用場景為需要大量上傳 HTTP,一般迴圈處理依序需要浪費時間,如果沒有順序關係可以使用「並行」來完成。

使用起來很簡單,有侷限性,不過應用場景可以套用那程式就很簡單,類似這樣子

http_upload.php

 382 total views

Nextcloud – APP 設定

下載

App 搜尋 nextcloud,找藍底三個白圈圈就是了

設定

流程

  1. 選擇「登入」
  2. 填寫 Nextcloud 主機網址,不需要輸入 https:// ,例如 Hoyo 的主機就是 pan.hoyo.idv.tw
  3. 輸入帳號、密碼
  4. 點選「Grant access」

設定

變更語系

  1. 使用網頁登入 (pan.hoyo.idv.tw)
  2. 右上角 → 設定
  3. Language → 選擇語系

變更密碼

  1. 使用網頁登入 (pan.hoyo.idv.tw)
  2. 右上角 → 設定
  3. 安全性 → 重新設定密碼,必須 10 個字母以上

 77 total views

BLE Beacon 應用 – 結合台南市 iBeacon 收集遊戲可行性,以 Google Map 為例

成果

參考資源

台南市在路燈或是柱子讓綁了很多 Beacon 藍芽信標,多的很誇張,所以 Hoyo 就想套用到 Google Map 看一下到底都裝在什麼地方。

程式寫完之後才發現一整條路都有,如果開車整路採集信號應該有種瑪莉歐吃金幣的感覺,所以本來想寫一個採集收集的遊戲,可是還沒有完整的想法,就先作罷吧

程式碼

只是簡當的使用了 Google Map 的 Marker 標示功能

 

 673 total views

Cordova Beacon – iBeacon, Eddystone, AltBeacon 一次搞懂

先確定手機有支援!

不是說藍牙 4.0 就一定有支援,因為 Beacon 使用的是 「低功耗」 模式所以最好還是上網查一下

什麼是 Beacon 以及有哪些種類?

 

Beacon 應用

開發前準備工具

  • Beacon Simulator Android 裝這個 APP 可以讓手機模擬成 Beacon 裝置,支援 iBeacon, AltBeacon, Eddystone 多種 Beacon 訊號
  • nRF Connect for Mobile 可以搜尋身邊所有雜七雜八的訊號源

iBeacon

其實 iBeacon 就只是規範了格式內容

Eddystone

UID

URL

TLM

cordova-plugin-ble : iBeacon

 

 

PHP 解譯

  1. 4c00021 是 Apple 規定的 iBeacon 開頭,藉以辨別是否為 iBeacon 裝置
  2. 5537b618cc64e471c8bbdd6ed8c757ccd 為 UUID
  3. 0000 是 Major ID ,視情況轉為 10 進制
  4. 0000 是 Minor ID ,視情況轉為 10 進制
  5. bf 是 Tx Power 將 16 進制轉 10 進制之後,用 256 減一下加上負號就完成了

 

 

cordova-plugin-ble : Eddystone UID

Json 可視化

一樣將

URL

 

TLM

 

EID

 

AltBeacon

室內微定位應用

實際測試也是如此,RSSI 數值非常容易受到影響,要拿來做精準的定位應用是不現實的

例如室內尋寶就還是無法實現,在 WiFi 時代就在想這件事情,多年後的現在 (2018 年) 還是無法實現

 

 

 88 total views

Google Apps 自救 – 05 匯入 MBOX

Mozilla Thunderbird +

使用此方案可將 mbox 匯入到「本地」上,因為要跨裝置所以這種本機方案就不可行,要找 Server 的解決方案

Mbox 轉 MailDir

現在的 Mail Server Postfix 郵件儲存的格式都是 MailDir 所以 Google 匯出的 Mbox 格式需要轉換,其實只是把信件拆開,秉著不造輪子的想法在網路上找了一圈,就是找不到可以用的轉換程式,明明就沒有很難,只好自己寫了一個

因為判斷間隔方法因素,必須把下一封信的 From 刪除,本來使用的方式是使用換行轉成陣列,再使用 array_pop() 的方式,考慮到超大資料有可能會讓記憶體爆炸所以換了一個方式

mbox2maildir.php

用法

切換到使用者的 maildir cur 目錄,再執行

結果大概就是長這樣

使用 array 刪除最後行的方式

 401 total views