VB.NET 跨執行緒作業無效,使用委派(Delegates)來解決

問題是這樣來了
鸚鵡在一個 Form 當中使用了一個自己寫的 Class Controller_A
Controller_A 再以多執行緒的方式用來控制其他的 Class Node_A, Class Node_B 到 Class Node_N

其中 Controller_A 會監聽 Node_N 的自定義事件,除了做各別處理外也會視需求觸發(RaiseEvent)自己的事件
Form 再監聽這些事件來控制 OvalShape 達到燈號的功能

但是當 Form 裡監聽事件的副程式嘗試變更 Form 上其他控制項時,就錯誤惹…

VB_NET例外(委派處理)
因為上一次使用 VB 來開發程式已經是 VB6.0時代了,所以只能慢慢爬官方文件
找到微軟 MSDN 關於 VB.NET 的委派(Delegates) 的相關說明,實在有點咬文嚼字讓我看了很久還是一樣看很不懂

爬文到最後自己好像有點懂了又還是不太懂 =.=
不過至少鸚鵡找到解決方法了

 

當 Ctrl_StatusChanged() 被 其他執行緒呼叫 或是 用來監聽其他執行緒觸發的事件 時會透過 Invoke() 委派的方式執行我們定義的委派 Ctrl_StatusChanged_CallBack()
然後直接跳出副程式

目前鸚鵡透過這樣的方式沒有在遇到 未處理的例外 了

小米路由器 交叉編譯(Cross complie) 環境建置

小米路由器(R1D) 是基於 OpenWrt 深度定製的一款智能路由器
因為屬於深度定製的架構,加上沒有 open source 並且使用非常舊的版本和 kernel
又鸚鵡對 openwrt 的系統架構完全不熟悉,只有基礎的 linux 底子
所以早前在 cross complie (交叉編譯) 時其實遇到很多問題
雖然最後成功編譯出 privoxy,但也早就忘了環境建置的過程和步驟

這次因為企圖嘗試編譯出 核心模組(kernel module)
所以不單單只是 toolchain 搞定就好,還需要 kernel 的 source
對於沒有自己從 source code 編譯過 kernel 的我來說,其實也只能慢慢爬文
所以就順道寫成文章,省去日後重新建置的時間

小米路由器系統資訊

閱讀全文〈小米路由器 交叉編譯(Cross complie) 環境建置〉

解決 CentOS 7 無法偵測 Asus B85M-G 的風扇轉速

CentOS 7 相當於 RHEL 7,因為基於穩定性考量所以更新速度並沒有像 Fedora 那樣的快,在相關版本的支援上自然也就不會體驗到最新版本。難免就會有一些硬體相容性上的問題。

鸚鵡最近安裝了一台 CentOS 7 (7-1511),主機板是 Asus B85M-G,因為習慣了用 Cacti 來紀錄硬體資訊(如:硬碟溫度、風扇轉速),系統初步架構完成後開始安裝 Cacti 以及 lm_sensors,執行 sensors 後卻只給我這樣的畫面

閱讀全文〈解決 CentOS 7 無法偵測 Asus B85M-G 的風扇轉速〉

讓 WordPress 站長頭像使用 Facebook 臉書的大頭貼

因為鸚鵡把 WordPress 的內建迴響關閉,改使用 Facebook 的留言框 (Comments Plugin),所以開始想把那張預設的站長大頭貼換掉,卻發現 WordPress 是連結 Gravatar 服務,要更換就得註冊 Gravatar 帳號。換臉書照片又得換一次 Gravatar 的,想到就麻煩。

不想透過外掛的方式,就直接上網搜尋了一下,是有找到一些修改方法可以使用本地圖片或其他指定圖片,但一樣還是得要兩邊都更新。

所以稍微研究了一下 WordPress 的 Hook 機制,也看了 get_avatar() 的說明和原始碼,搞懂後寫了一小段程式碼來解決。修改完成後 WordPress 上會直接顯示自己臉書的大頭貼,在 Facebook 上更新大頭貼照後,也會同步顯示最新的照片。

閱讀全文〈讓 WordPress 站長頭像使用 Facebook 臉書的大頭貼〉

在 CentOS 7 下安裝 Apache 2.4 的 mod_watch 模組供 Cacti 統計 (2018.03.27更新)

因為鸚鵡習慣使用 RPM 來管理 server 上的套件,所以都會盡可能將 source 打包成 rpm 檔案後在安裝,方便日後的版本管理或移除。所以這篇教學主要是打包成 rpm 檔案再進行安裝

環境:

  • CentOS 7 (7.2.1511 x86_64)
  • Apache 2.4.6

閱讀全文〈在 CentOS 7 下安裝 Apache 2.4 的 mod_watch 模組供 Cacti 統計 (2018.03.27更新)〉