RSS Email Twitter GitHub Dribbble LinkedIn Facebook Instagram YouTube Pinterest Reddit icon menu

Cody's 探索日誌

東摸西摸,十分好奇

PV: / UV:

使用 UPS 保護系統關機

今天跟學弟一同研究 UPS 設定,讓伺服器主機可以在 UPS 電源耗盡時 可以主動關機保護系統異常斷掉造成的各種損害,短短的幾分鐘關機換來大大的保障 規格 品牌: CyberPower 型號: CP1000AVRLCD 安裝 UPS 可以透過 CyberPower UPS 附帶的 USB 連接至伺服器上,又或者可以透過 RS232 進行訊號傳輸 便可以透過 USB 與 UPS 進行之後的設定和訊號接收 安裝官方軟體 到官方網站下載居家辦公的 POWERPANEL® LINUX 專用 選擇符合自己系統的管理工具,CyberPower 提供各個平台的工具 Windiws/Linux/Mac 都支援 所以不用擔心有任何問題系統不支援的問題,我這裡選擇 deb 檔,因為要安裝在 Ubuntu 系統上 Ubuntu 透過以下指令進行安裝,沒有系統或版本上的問題,應該是不會安裝失敗 1 dpkg -i PPL_Linux 64bit (deb)_v1.3.3.deb 設定 UPS 檢查 UPS 狀態 如果沒有異常,則可以接收到 UPS 資訊 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 pwrstat -status The UPS information shows as following: Properties: Model Name.

FreeNAS (2) - DDNS

架設好 FreeNAS 的伺服器之後,首先是要設定動態DNS 不然 IP 天天變動,也就沒有辦法想用就用,所以動態DNS 就顯得很重要 不然申請固定 IP 也是可以,當然除非是商業使用或者特殊使用,否則還是動態DNS 較為方便 首先要先擁有一個網域可以透過免費或者付費的供應商 以前免費的只有使用 No-IP 不過可能要固定時間去延長使用,否則就會喪失使用權 至於付費的我是使用 Google Domain,純粹是不想辦太多服務的帳號 而且 Google 的價格也不是很貴,而且提供很多服務,加上可以是使用 Google 的 DNS Server,覺得受到了保障 Step 1. 建立動態DNS 這邊我就以 Google Domain 進行示範 購買好網域之後,透過側邊選單進入 DNS 設定,並建立 動態DNS 並輸入自己想半天的子網域名稱 🤔 Step 2. 取得動態DNS 建立好動態DNS 網址之後,可以透過 查看憑證 顯示帳號密碼 用來將 FreeNAS 當前的 IP 同步至 Google Domain 並注意現在還沒同步上 IP,所以是顯示 0.0.0.0 待會設定好之後確認 IP 是否同步上 Google Step 3. 設定 FreeNAS DDNS 透過側邊選單進入 Services,從中可以看到 Dynamic DNS FreeNAS 支援很多 Provider,以上推薦的 No-IP 和 Google 都有包含其中

瀏覽器憑證錯誤 - Firefox SEC_ERROR_UNKNOWN_ISSUER

在處理一些憑證事務的時候,由於慣用 Chrome 進行檢查但是進行服務測試的時候 測到 Firefox 時居然出現憑證錯誤,Chrome 安全、Firefox 不安全,這也是蠻特別的,總之要解決憑證問題 從 Firefox 得到的錯誤訊息為 SEC_ERROR_UNKNOWN_ISSUER 拜了 Google 大神找到相關訊息的解釋 Firefox 什麼是「您的連線並不安全」? SEC_ERROR_UNKNOWN_ISSUER 該憑證未受信任,因為簽發者憑證未知。 伺服器可能沒有傳送正確的中繼憑證。 您可能需要再引入另一個根憑證。 也再透過 DigiCert® SSL Installation Diagnostics Tool 第三方做一次檢查 擔心可能設定過瀏覽器的一些參數,導致憑證驗證問題,並確定 TLS Certificate is not trusted 與 Firefox 的問題是一致的 Qusetion 從透過購買的憑證,得到的憑證有 xxx.key、xxx.crt 及 ca-bundle.crt 因為我很習慣的只有使用 xxx.key 和 xxx.crt 並沒有去理會 ca-bundle.crt 看來需要使用到 ca-bundle.crt,將 bundle 包起來一起使用就沒問題了 透過以下指令將 ca-bundle.crt 及 xxx.crt 包在一起 1 cat xxx.crt ca-bundle.crt >> bundle.crt 然後使用 bundle.crt 替換 xxx.crt,並確認是否解決問題 從 Firefox 和 DigiCert® SSL Installation Diagnostics Tool 得到驗證成功

FreeNAS (1) - 邁向自組 NAS

從 2019 年底一直等待組裝 FreeNAS,選好各種配件,卻唯獨最重要的 CPU 因為年初開始因為疫情一直沒有到貨 想說農曆年前可以開開心心的組裝、運行、建置、測試,一直拖到二月底 想說三月初都搞定各種測試後可以開始寫文章,但是由於要忙專案,所以拖到現在 規格 OS Version: FreeNAS - 11.3-U1 CPU: Intel i3-9300T 3.20 GHz CPU FAN: CRYORIG C7 OS Disk: Kingstone A2000 250G MontherBoard: SuperMicro X11SCL-IF RAM: 16GM * 2 DDR4 ECC (KSM26ED8/16ME) 2666MHz PSU: CORSAIR SF450 80Plus Case: SilverStone DS380 組裝過程 篩選各種 ITX 機殼,並且需要具備硬碟熱插拔的設計,最終選擇 SilverStone DS380 雖然價格不菲,電鍍鋅鋼板機身 這種相對耐用的機殼十分符合我的愛好 硬碟熱插拔總共可以插八顆 3.5 吋硬碟,雖然硬碟座是塑膠材質沒有很好的質感 旁邊有塊擋板,如果 PCIE 太長,可以拆掉這塊擋板,但可能會犧牲一顆硬碟插槽 插拔的設計並沒有十分貼合,留有小部分的空隙,但個人覺得並無大礙 機空的內部空間,具備兩個風扇可以對硬碟進行散熱 還具備四顆 2.5 吋硬碟的位置可以放置,含 3.5 吋硬碟,總共就能放置 12 顆硬碟 整體來說,就一個小機殼來說十分滿意,雖然我用應該是用不到,但有就是讚!

Ansible Kubernetes 練習

我個人是把 k8s 當作一個方便開發用的平台,有點當作是一個Esxi平台 不必吃工作機的效能直接使用 k8s 的效能,必要的時候透過 port-forward 來進行測試 我沒有太深入 k8s 相關的技巧,不過這對我來說已經十分方便 主要是參考這篇 開發 Ansible Playbooks 部署 Kubernetes v1.11.x HA 叢集 Kyle Bai大大的進行安裝 不過大大是使用 Ubuntu ,而我打算安裝在 CentOS 上面,所以遇到了一些狀況和一些智障的小細節 Hardware/Software cpu/ram master: 2C4G ↑ node: 1C2G ↑ OS: linux (CentOS7/RHEL7) kernel 3.10 ↑ docker version 1.9 ↑ Install CentOS Account account: k8s password: 12345678 Root account: root password: 12345678 VirtualBox: 6.0.14 r133895 (Qt5.6.3) Hostname IP RAM CPU OS k8s-m1 192.168.0.1 4G RAM 4 Core CentOS 7.

透過無伺服器執行 Golang - Google Cloud Functions

摸索學習並了解何謂 Serverless ,並對這個服務感到十分期待 從宣傳上來說,開發者不必擔心伺服器的問題,只需要專注於程式應用開發上 從以往自己架設簡單伺服器、簡單雲服務、最終通通交給服務商了 嘗試練習寫一個簡單的 API 服務,看看丟到 GCP 上面會是怎麼樣的效果 建立專案 首先進入 GCP 選取 Cloud Functions 透過 建立 按鈕,進行專案創建 按照需求輸入 專案名稱,並進行建立 由於 GCP 需要有信用卡才能進行使用,當然第一次使用的朋友 Google 很棒的有提供 300 美金為期 1 年的免費使用可以讓你嘗試是否要使用 GCP 然後開始輸入帳單帳戶,這邊可以選擇貨幣單位,那後面的信用卡資訊我在此就跳過 最後回到 Google Cloud Functions 使用 建立函式 開始建構自己的 functions 建立 Google Cloud Functions 函式 可以設定這一個 functions 的 名稱 記憶體 觸發條件 這邊 觸發條件 我選擇 HTTP ,用比較簡單的觸發方式,以後再研究其他的觸發方式 並且會有一個網址之後可以進行觸發,並且需要勾選 允許未經驗證的叫用 方便進行呼叫,但是不公開就不要勾選 這邊為了方便進演示,就使用內嵌編輯器方便展示 裡面預設的程式是一個很普遍的 Hello World! 也對選項 要執行的函式:HelloWorld 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 // Package p contains an HTTP Cloud Function.

GDG Devfets 2019 首次參與

第一次參加 Google Developer Groups 的活動,可以聽到講者的經驗及案例分享 能聽取各種不同的技術、技巧、想法、應用,受到很多的啟發和學習 很意外的是預計沒有午餐,但是中午出現好吃的餐點,令我十分意外 Image By http://devfest-tw.appspot.com/taipei 會場布幕 識別證 正面 反面 議程 有很多吸引我的議題,可惜我不能分身 我依序聽了以下議程 網站壓力測試透過 JMeter on GKE Build go kit Microservice at Kubernetes with ease 10 years of Go Awesome web data visualization with Google Maps Platform and deck.gl 用 BigQuery 帶你快速完成第一個 ML 專案 Deploy your Application from Container to Kubernetes 當然我還很想聽以下議程 在導入 Flutter 之前你應該知道什麼? On-Device Machine Learning with TensorFlow 從零開始 Flutter 開發生活: 在 Beta 時撰寫 Player Plugin 是否搞錯了什麼?

多進程/多執行緒! 並發/平行?

開始學習如何提升某部分演算法的效能,對於如何運用多工開發邏輯的釐清和整理 跟以往單工開發的邏輯差上許多,必須考慮到整合、處理邏輯、場景等等的因素 多執行緒(線程) Multi-Thread 啟動 Thread 的速度就不會比 Process 來的快,但是彼此之間的記憶體是共享的 但是在處理的過程中沒有小心處理,可能會導致彼此之間搞的一踏糊塗 多進程 Multi-Process 啟動 Process 的速度是比較快的,擁有獨立的記憶體空間及資源 多個 Process 之間由於記憶體獨立的關係,彼此之間不能直接交換資料 需要透過一個通道進行傳遞,才能有辦法使 Process 之間溝通 然而一個 Process 內是可以擁有多個 Thread Multi-Thread vs. Multi-Process Process 較厚重 獨立記憶體空間 彼此通信過程緩慢繁雜 Thread 較輕量 擁有所處共同記憶體空間 彼此通訊過程迅速方便 並發 Concurrency 依照上圖的情境說明,依照 A 處理 Job1、B 處理 Job2、C 處理 Job3 但是 A、B、C 彼此牽制,好比搶奪一個辦公桌 誰坐在上面就能開始工作,離開崗位後其他人利馬搶辦公桌來使用 平行 Parallelism 依照上圖的情境說明,依照 A、B、C 進行工作處理分別為 Job1、Job2、Job3 但是 A、B、C 同時依序進行工作,沒有誰先誰後的問題,同時的進行處理 Concurrency vs. Parallelism Parallelism 同時進行處理 能夠使用多核 執行順序可以預期 Concurrency 輪流進行處理 只能使用單核 執行順序無法預期 (Race Condition) Concurrency 沒有辦法同時運作,那要他何用!?