前言: 話說前陣子爸爸家陽台不斷出現米奇老鼠,立刻清理陽台所有東西,然後又跟市政部門反映問題,可是情況還沒有好轉,米老鼠來完一隻又一隻,我爸陽台在老鼠界應該是網紅打卡聖地(誤),要不然就是米奇老鼠版米奇林三星餐廳(?) 雖然我們抓到了三隻,到上兩個禮拜為止還有至少一隻一直抓不到,每天淩晨還會來吃事後煙留下老鼠屎,真_北。 這隻老鼠對傳統攻擊有抗性,有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+ 萬一老鼠生氣被咬爛錢包也不太痛 . 一張
最近老闆要我幫忙把新(新?)技術帶進公司, 以乎合未來的發展, 先用.net為試點.
第一次授課難免有點小緊張, 所以每天先把筆記先弄一弄,
覺得有用歡迎轉載(記得註明出處喔), 為資訊業盡點綿力 XD.
[以下資料整理以公司環境為出發, 有些觀念可能會先被忽略.]
什麼是.NET框架?
.NET中的事件程序
1. http://zh.wikipedia.org/zh-hant/.NET%E6%A1%86%E6%9E%B6 .NET Framework wiki 中文版
2. http://en.wikipedia.org/wiki/.NET_Framework .NET Framework wiki 英文版
3. http://www.dotblogs.com.tw/topcat/archive/2009/09/11/10577.aspx 淺談多層式架構
4. http://www.dotblogs.com.tw/jimmyyu/archive/2009/10/23/11256.aspx Webform Winform的選擇.
5. http://f402259699.blog.hexun.com.tw/54088233_d.html C#事件(event)解析
6. http://www.dotblogs.com.tw/atowngit/archive/2009/08/23/10199.aspx Window Form 事件順序
第一次授課難免有點小緊張, 所以每天先把筆記先弄一弄,
覺得有用歡迎轉載(記得註明出處喔), 為資訊業盡點綿力 XD.
[以下資料整理以公司環境為出發, 有些觀念可能會先被忽略.]
什麼是.NET框架?
- .NET Framework 是由微軟開發的軟體開發平臺。
- 具平臺獨立性
- 一種採用系統虛擬機運行的編程平臺,以通用語言運行庫(Common Language Runtime)為基礎,支援多種語言(C#、VB.NET、C++、Python等)的開發。
- CLR類似虛擬機器的概念, 有自己的記憶體控制, 資料型態及函式庫,
- 由於CLR被設計成作業系統無關性, 因此底層作業系統可任意抽換, 令程式可以跑在Microsoft產品中任一作業系統上.
- 使得程式設計員可以同時進行Windows應用軟體和網路應用軟體以及元件和服務(web服務)的開發。
- Oracle公司的Java程式語言和Java平臺企業版技術是.NET平臺的競爭對手之一,它們有很多概念也是互通的。
- 到2012年4月底共推出1.0, 1.1, 2.0, 3.0, 3.5, 4.0 共6個版本. 每一個新的 .NET Framework 版本都會保留舊版的功能並增加新的功能。
.NET Framework 版本 CLR 版本 Visual Studio 版本 描述 1.01.0VS.NET包含第一個版本的 CLR 以及第一個版本的基底類別庫。1.11.1VS.NET 2003包含 ASP.NET 和 ADO.NET 的更新。 這個版本之後隨著 Service Pack 1 (SP1) 和 SP2 更新了兩次。 這個版本也引入了並存執行,此功能可讓單一電腦上的應用程式針對多個 CLR 版本執行。2.02.0VS 2005隨著基底類別庫的新增引入了新的 CLR 版本,包括 ASP.NET 的泛型、泛型集合和重大新增。 這個版本之後已隨著 SP1 和 SP2 更新。3.02.0VS 2005這個版本基本上是 .NET Framework 2.0 並加入 Windows Presentation Foundation (WPF)、Windows Communications Foundation (WCF)、Windows Workflow Foundation (WF) 和 CardSpace。 這個版本之後已隨著 SP1 和 SP2 更新。3.52.0VS 2008已增加新的功能,例如具有 AJAX 功能的網站和 LINQ。 SP1 更新加入了 .NET Framework Client Profile、Dynamic Data 及一小組額外的增強功能。44VS 2010包含新版的 CLR、擴充的基底類別庫和新的功能,例如 Managed Extensibility Framework (MEF)、Dynamic Language Runtime (DLR) 和程式碼合約。 - 除了1.1, 4.0以外, 2.0, 3.0, 3.5是向下相容的.
ASP.NET vs WinForm
- ASP.NET是內含於.NET Framework中,專門用來發展Web應用程式的一組類別庫集。
- ASP.NET可以運行在安裝了.NET Framework的IIS伺服器上.
- ASP.NET基本運作架構如下
- Winform具高互動, 高反應, 執行迅速, 呈現快速的優點.
- ASP.NET 跟 Winform 同樣是 event-driven application(事件驅動架構).
.NET中的事件程序
- 事件驅動架構概念
- 這種模型的程式執行流程是由使用者的動作(如滑鼠的按鍵,鍵盤的按鍵動作)或者是由其他程式的訊息來決定的。
- 事件驅動程式模型下的系統,基本上的架構是預先設計一個事件迴圈所形成的程序,這個事件迴圈程序不斷地檢查目前要處理的資訊,根據要處理的資訊執行一個觸發函式進行必要的處理。其中這個外部資訊可能來自一個目錄夾中的檔案,可能來自鍵盤或滑鼠的動作,或者是一個時間事件。
- 每樣物件皆有自己的事件順序。
- 好處
- 可以很方便地確定程序執行順序。
- 當事件驅動程序等待事件時,它不占用很多資源。事件驅動程序與過程式程序最大的不同就在於,程序不再不停地檢查輸入設備,而是呆著不動,等待消息的到來,每個輸入的消息會被排進隊列,等待程序處理它。如果沒有消息在等待,則程序會把控制交回給操作系統,以運行其他程序。
- 事件簡化了編程。操作系統只是簡單地將消息傳送給對象,由對象的事件驅動程序確定事件的處理方法。操作系統不必知道程序的內部工作機制,只是需要知道如何與對象進行對話,也就是如何傳遞消息。
- 事件順序例子
- ASP.NET
PreInit 事件: 執行預先初始化的工作,在ASP.NET 2.0中,若要動態調整主版頁面 (Master Page)、佈景主題 (Theme) 時,要在這個事件中調整。 Init 事件: 執行初始化工作。 InitCompleted 事件: 在完成初始化工作後引發。 Preload 事件: 執行預先載入的工作。 Load 事件: 執行載入的工作,大多數的網頁都擁有 Page_Load 事件處理常式,使用者控制項 (user control) 中也有 Page_Load 事件常式,都會在此時呼叫。 控制項的 PostBack 變更通知: 當網頁偵測到是 PostBack 要求時,會引發 PostBack 訊息通知的事件。 控制項的 PostBack 相關事件: 當網頁偵測到是 PostBack 要求時,會引發 PostBack 訊息指定的控制項的事件。 LoadCompleted 事件: 執行載入完成後的工作。 PreRender 事件: 處理在產生 HTML 結果前的工作。 SaveStateCompleted 事件: 處理頁面狀態(ViewState 與 ControlState)儲存完成後的事件。 Render 事件: 處理產生 HTML 的工作。 Unload 事件: 處理結束網頁處理時的工作。
- Winform當Windows Form 應用程式啟動時,會以下列順序引發主要表單的啟動事件:
* Control.BindingContextChanged
* Form.Load
* Control.VisibleChanged
* Form.Activated
* Form.Shown
當應用程式關閉時,會以下列順序引發主要表單的關閉事件:
* Form.Closing
* Form.FormClosing
* Form.Closed
* Form.FormClosed
* Form.Deactivate
1. http://zh.wikipedia.org/zh-hant/.NET%E6%A1%86%E6%9E%B6 .NET Framework wiki 中文版
2. http://en.wikipedia.org/wiki/.NET_Framework .NET Framework wiki 英文版
3. http://www.dotblogs.com.tw/topcat/archive/2009/09/11/10577.aspx 淺談多層式架構
4. http://www.dotblogs.com.tw/jimmyyu/archive/2009/10/23/11256.aspx Webform Winform的選擇.
5. http://f402259699.blog.hexun.com.tw/54088233_d.html C#事件(event)解析
6. http://www.dotblogs.com.tw/atowngit/archive/2009/08/23/10199.aspx Window Form 事件順序
Comments
Post a Comment