前言: 話說前陣子爸爸家陽台不斷出現米奇老鼠,立刻清理陽台所有東西,然後又跟市政部門反映問題,可是情況還沒有好轉,米老鼠來完一隻又一隻,我爸陽台在老鼠界應該是網紅打卡聖地(誤),要不然就是米奇老鼠版米奇林三星餐廳(?) 雖然我們抓到了三隻,到上兩個禮拜為止還有至少一隻一直抓不到,每天淩晨還會來吃事後煙留下老鼠屎,真_北。 這隻老鼠對傳統攻擊有抗性,有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+ 萬一老鼠生氣被咬爛錢包也不太痛 . 一張
在ASP.NET的世界, 如果介面上的物件要連結到資料庫,大部分的參考書會教你使用SqlDataSource物件進行連結。看起來這個方法非常的不錯,既快速方便又簡單,是實上也是如此。不過......(雷聲) 當你開發的系統越變越複雜的時候,問題就出現了。一個畫面可能會出現幾個到十幾個SqlDataSource物件,而且使用者版面與版面之間由於無法共用SqlDataSource;然後你慢慢會發現越來越多重覆又重覆又重覆的SqlDataSource出現在不同的版面上,使得系統越來越笨重你也越來越笨;而且自己辛辛苦苦寫好的Sql statement團隊中的其他懶人卻不能享用你的成果,也沒有一個集中的圖形化介面控制所有存取資料庫的Sql statement. 到最後你更會發現程式碼根本無法維護然後也開始發求職信。
由於以上的缺點,因此就出現了Data Access Layer(DAL)這樣東西。嚴格來說它是一種概念,並不是ASP.NET提供的新功能。根據Microsoft的說法:"DAL for short, and is typically implemented as a separate Class Library project. "。就是要解決上面SqlDataSource帶來的各種問題。當你使用Data Access Layer這個概念來存取資料庫的時候,系統不是像Sqldatasource一樣直接存取資料庫,而是使用其中的DataSet,再由DataSet對資料庫進行存取。
老實說這不是有點多餘?那就要看你系統的複雜性。畢竟在資訊產業,系統維護佔了一筆非常大的開支,而且大家心知肚明,對於實在爛透的程式碼,錢有些時候的確未必能夠解決所有問題。所以我是建議如果知道未來系統會變很大,最初的時候多花那一點點時間用DataSet建立Business Layer吧......XD
下篇文章會談一下如何實作。
參考資料
[1] Tutorial 1: Creating a Data Access Layer http://msdn.microsoft.com/en-us/library/aa581778.aspx
----
老實說這不是有點多餘?那就要看你系統的複雜性。畢竟在資訊產業,系統維護佔了一筆非常大的開支,而且大家心知肚明,對於實在爛透的程式碼,錢有些時候的確未必能夠解決所有問題。所以我是建議如果知道未來系統會變很大,最初的時候多花那一點點時間用DataSet建立Business Layer吧......XD
下篇文章會談一下如何實作。
參考資料
[1] Tutorial 1: Creating a Data Access Layer http://msdn.microsoft.com/en-us/library/aa581778.aspx
----
Comments
Post a Comment