前言: 話說前陣子爸爸家陽台不斷出現米奇老鼠,立刻清理陽台所有東西,然後又跟市政部門反映問題,可是情況還沒有好轉,米老鼠來完一隻又一隻,我爸陽台在老鼠界應該是網紅打卡聖地(誤),要不然就是米奇老鼠版米奇林三星餐廳(?) 雖然我們抓到了三隻,到上兩個禮拜為止還有至少一隻一直抓不到,每天淩晨還會來吃事後煙留下老鼠屎,真_北。 這隻老鼠對傳統攻擊有抗性,有IT9朋友前陣子用Raspberry pi自製了一台electric mouse trap ,用pi的超聲波雷達放在鞋盒裡,鞋盒裡有一堆食物,底部佈了鐵網,偵測到有老鼠進去以後立即關門通9V電,通個1分鐘再放牠離開,大推我自己也造一台 (Youtube片搜尋一大堆,人類真變態啊,朋友好變態啊)。可是我覺得這樣又好像有點太殘忍,不如先偵測牠們什麼時候來,嚇嚇牠們看看有沒有效果再說吧。 目的: 用Raspberry pi及手上有的感測器弄一隻放陽台用來偵測和嚇嚇老鼠的東西,並把紀錄圖像化到雲端給老爸使用。 邏輯及設計: 當老鼠進入偵測範圍,Motion Sensor偵測到生物活動Raspberry pi 處理來自Motion Sensor的訊號,如果夠強的話開始準備作出回應 Raspberry pi在Angry cats sounds中隨機選出叫聲,再經由Speaker輸出貓叫聲 Raspberry pi指示強光元件發出強光束照射目標 把偵測計數上傳到雲端圖表 材料: Sensor 在網路上看了一些Raspberry pi wild animal camera ,很多也是用Motion Sensor先偵測動物再來,我用的是PIR Motion Sensor被動式紅外線感測器,有低耗電成本便宜的好處。[1],而且可手動調整靈敏度及反應時間。 PIR Motion Sensor就是下面這個 圖片來源: learn.adafruit.com 可手動調整敏感度還有反應時間,這個有點不好調,要試好多遍才找到最佳位置。 可以在Raspbian中輸入pinout查詢GPIO避免插錯 圖片來源: learn.adafruit.com . 一台Raspberry pi 這次使用較舊的Raspberry pi model B+ 萬一老鼠生氣被咬爛錢包也不太痛 . ...
前言: 公司經常會遇到一些不是給使用者用的程式,例如一些格式轉換程式,一些上傳到某些地方的程式,或者背景服務等等。這些服務具有一共通點: 參數設定很多,如SMTP Server, 資料庫IP。 要經常改變參數設定。 參數寫死在軟體程式裡面,第一個缺點當然是不好修改,而且不斷修改程式碼會引發不必要的錯誤。所以現在很多伺服器都是採用了以 XML組態檔案驅動驅動的設計架構 。意思就是說利用XML定義很多軟體參數,當系統運行的時候才去讀取相關設定,這樣軟體不需要經常重新修改,比較能確保穩定度。這種概念也就是所謂的 執行引擎了( Execute Engine ) 。 以下是小弟最近利上執行引擎的概念幫公司寫的小軟體,希望可以給各位大大分享一下,有錯誤的話請賜教。 目的: 把資料庫的某一資料表(table)轉成XML, 並自動上傳到指定FTP位置。這個小軟體要具有: 1. email功能: 上傳成功或失敗需要發email通知資訊部門某位同事。 2. 紀錄檔(log)功能: 運行時產生相關程序的記錄,包括exception。 3. 上傳到FTP伺服器前要先備份。 4. 產生的XML檔案名稱將來可能會有修改。 設計: 要表達一個系統的設計,至少要表明兩種關係 Class 之間的關係 觸發事件的先後次序 Class 之間的關係 由以上需求可知,如果我們在物件導向分析的類別圖(Class diagram)中開始設計類別,可以以功能區分最初版本的5個類別,分別是: Program.cs: 提供軟體核心作業流程。 xmlManager.cs: 提供轉換成XML的相關功能。 emailManager.cs: 提供傳送電子郵件的功能。 ftpManager.cs: 提供ftp上載的功能。 logManager.cs: 提供記錄檔相關功能。 它們這些物件與物件之間的關係,可以用UML中的 Class diagram 表達: 虛線指的是這一個class可以存取的檔案。 實心菱型在UML中解釋是Composition(組合), 意思相當於has a, 就是說被指向的Class(xmlManager跟logManager)是菱型端的Class(Program.cs)不可缺少的一部分, 當Program.cs被消滅的時候xm...