【winform】專案二 - PTT系統複刻

最近終於快完成第2個專案啦,這次的專案是用winform複刻一個PTT系統,這篇會先綱要性的列出所做的工作,有些細節比較多的重要技術,則後續再拉單獨一篇網誌出來說明。

 

盤點功能模組塊


基礎背景知識
1、C#語法、winform元件動態生成、元件間傳值等:
有了第1個專案的經驗,對於winform上手很多,讓專案二有比較多的心力,可以做到更困難的呈現。元件動態生成、傳值等就是必備的技能啦。
2、git版控
在開發的過程中,因為會大量的修改程式碼,為了避免改爆了而導致心血沒了,筆者開始使用Source Tree + bitbucket 的組合,來完成版控及備份。
3、selenium
筆者使用Selenium爬取網頁版PTT的內容,包含各版、文章等資訊,專案二的呈現是利用使用者介面,將爬取的結果秀出來。因為我們並不能實際取到PTT的資料庫內容,故要爬取哪些資料儲存到資料庫中,是須要事先規劃好的。
4、資料庫概念(建立表單、欄位設定、主鍵設定、外鍵連結、sql語法等)
因為PTT資訊是層層的關聯性,例如分類 -> 各版 -> 文章-> 內文與留言,若用專案一CSV的方式,應該會蠻痛苦的,故這裡筆者也開始使用MS-SQL,完成所有資料的儲存。
 

資料庫CRUD模組
在專案二中,會碰到大量的資料庫CRUD工作,筆者查詢一些資料發現,蠻多都是使用Dapper或是EntityFrawork,但筆者是寫了一個類模組,主要是使用反射達到CRUD的目的。除了可以更熟悉基礎SQL語法,還接觸到了sql injection的課題。


帳號新增系統
1、密碼做雜湊
經常會聽到網站被駭,導致客戶個資外流,若是密碼直接以明碼儲存,後果應該不堪設想,故筆者也嘗試對密碼做雜湊。
2、送進資料庫前驗證
在新增使用者帳戶時,先行驗證後,再送進資料庫,在這裡也加入了debounce time的概念,
 

登入系統
1、統計使用者登入天數,但當日不能重複計算。
2、錯誤3次帳號鎖定上鎖。


會員資料修改系統
1、與登入系統共用版面
2、介接imgur,開始接觸OAuth2及token課題,並提供使用者上傳照片功能。

使用者介面-PTT操作版面
1、練習物件導向: 建立model 與資料庫表單的欄位進行mapping
2、畫面視覺模擬(背景、顏色),類似css的概念
3、關鍵字搜尋: 做auto complete
4、製作分頁選擇器
5、圖片顯示、影片顯示(youtube)