前言: 話說前陣子爸爸家陽台不斷出現米奇老鼠,立刻清理陽台所有東西,然後又跟市政部門反映問題,可是情況還沒有好轉,米老鼠來完一隻又一隻,我爸陽台在老鼠界應該是網紅打卡聖地(誤),要不然就是米奇老鼠版米奇林三星餐廳(?) 雖然我們抓到了三隻,到上兩個禮拜為止還有至少一隻一直抓不到,每天淩晨還會來吃事後煙留下老鼠屎,真_北。 這隻老鼠對傳統攻擊有抗性,有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+ 萬一老鼠生氣被咬爛錢包也不太痛 . 一張
前言: 前陣前幫公司開發專案打算使用Code First建立資料庫遇到了不少問題,現在終於有點時間在公司好好 再摸魚 認真研究一下,順便記錄起來。關於如何在專案中使用Code First Entity Framework很多神人已經有詳細的教學,我是看 Kevin大的這篇 還有 軟體主廚大的這篇 ,很快已經可以弄出來。 建立資料庫之前最好先設定資料庫名稱,可以在web.config中修改。 第一次使用Code first database先要在 "Package Manager Console" 輸入enable-migrations,如果不止一個DbContext的話要加入參數 –ContextTypeName 指定Db才能繼續進行。建立好Model以後可以輸入add-migration把model加入到pending model,然後輸入update-database -Verbose (Verbose參數令Console直接看到產生出來的SQL)。建立資料庫後如要修改Model也沒有問題,可以在修改後重覆上面步驟更新資料庫,流程如下: update-database -Verbose 可以把整個資料庫重構,這在測試環境當然是沒有問題,可是當在production環境就不行了。上面大大的文章提到可以使用update-database -Script -Verbose自動產生跟資料庫上面diff版本SQL交給DBA去更新,可是怎樣找出跟production環境的diff呢? 我自己是直接改Context檔案裡面的:base("name=Connectionstringname"),然後再輸入一次update-database -script -Verbose就可以得到跟production環境的diff SQL了。 總結: 之前的專案因為有兩個測試環境和production環境,在資料庫結構不停修改的那段時間同步不同環境簡直是場災難,使用自動產生的diff SQL至少可以減少錯誤,而且可以keep track每次修改的History,是個不錯的工具;另外CodeFirst這種開發方式剛開始的時候是有些不習慣,會因為設計不好經常出現錯誤,不過由於資料結構都變成strongly type,在開發上比較