發表文章

目前顯示的是有「passport」標籤的文章

Simple Twitter專案(JWT登入憑證、MYSQL、前後分離協作、Git、Code Review、Scrum流程) [ Alpha Camp學期三後端 ]

圖片
專案介紹: 後端專案連結 複刻Twitter的簡易版功能。除了複習這學期所學,這個專案最主要在體驗前後分離協作及如何在時間壓力下走完Scrum流程。 以往在Alpha Camp的學習雖然助教、同學環繞、有問題能即時詢問討論,但所有專案或作業都是一人獨力完成,這是個難得的機會能在學習階段就體驗團隊協作時與前端溝通理解如何互相配合彼此的工作與理解對方方便的資料、與後端夥伴Git協作怎麼避免不必要的conflict與如何分工和互相cover。 擔任角色與完成項目 在前後分離組裡擔任後端工程師角色,在此專案中負責: 共用檔案設置、資料庫Model建置、種子資料建置、本地端Model unit test、遠端travis自動化測試 為了避免不必要的conflict,在Scrum流程第一階段工作分配上決定unit test測試檔中,我負責完成與資料庫有關的建置並通過測試,另一組員負責與路由設定有關的RESTful API規劃。除了資料庫,有許多共同檔案的建置也由我一併完成。 (GitHub repo設置、README.md撰寫、Heroku repo設置、第一條給前端測試連線用API產出、資料庫Model建置並確定符合unit test要求、種子資料建置、登入認證錯誤處理相關檔案建置、確認後端專案完成後符合自動化測試要求) 協作路由coding與API Doc 在Scrum第二階段工作分配上,我負責與user-controller所有路由,另一組員負責其他所有路由。由於我進度較快,reply-controller路由也一併由我完成。 協作 refactor、debug 在Scrum第三階段,由於在前兩階段大量的code review,發現彼此除了coding邏輯、方式、風格不同外,也發現API產出的資料結構和類似狀況時錯誤訊息不同。討論過後決定要統一資料結構與錯誤訊息,避免造成前端的困擾。 這一階段也是再次檢查所有的API是否有問題,並交付給前端組員使用,發現問題立即調整。 git指令 由於多數組員對於git指令皆不熟悉,在專案開始前我先製作大部分這個專案會用到的指令清單。也由於我個人進度較快,在組員有git指令相關問題、前端gh-pages建置問題時,由我這裡即時提供指令步驟與觀念釐清。 專案中特別練習技術與套件 使用MYSQL建置關聯性資料庫,並使用sequelize操作資...

廣志美冴的家庭記帳本(登入憑證、關聯性資料、async await練習)[Alpha Camp學期 3後端第二週]

圖片
專案介紹: 一個以使用者登入方式擁有的私人記帳本,可以自建帳號也可以用FB、Goggle帳號登入。 記帳本除了瀏覽所有支出細項外,可以很方便的新增、編輯、刪除一筆支出,也可以依分類簡單看出該類別花費金額。 你為何會選擇這個專案? 做一個自己順眼的記帳本幫助自己日常開銷紀錄和控管。另外記帳本有資料庫CRUD、身分認證等需求,對於學習相關套件和語法是個還不錯的練習。 你使用了什麼技術或套件? 除了Node.js、Express.js基礎框架外, 使用express-handlebars樣板處理畫面渲染,並搭配connect-flash讓partial handlebar做訊息警示 使用method-override實現CRUD路由RESTful語意化 使用mongoose物件映設連線MongoDB資料庫 使用dotenv設定統一放置環境變數,並以.gitignore隱藏避免個人設定外洩 使用passport及相關local、facebook、google策略進行身分驗證 使用bcryptjs密碼雜湊,增加資訊安全性 使用bootstrap和font awesome美化也簡化CSS樣式 使用async await語法糖搭配promise all,優化callback hell槽狀結構由外向內問題,讓程式碼由上到下更簡潔易讀 使用MVC架構,增加功能獨立性 使用heroku佈署網頁 哪部分你相對能掌握?哪裡花了最多時間? 對於 各個套件的語法雖然不能直接默寫出來,但查閱文件後都還算能掌握。另外對於promise的.then().catch用法相當熟悉,與資料庫的溝通、model建立、種子資料設計和資料關聯性都還算順手。 在這個專案裡,讓我花較多時間的除了bootstrap切版外,就是async await語法糖的用法,發現這種寫法讓程式碼更簡潔容易閱讀,特地先查找資料學習後再回專案裡練習,中途還一度發現沒有catch到error訊息,再重新翻找相關資訊學到try catch語法。 過程中碰到什麼困難?又如何克服?(例如:查找網路文件) 由於很多套件都是新學,常遇到語法不熟悉的狀況,我就常在網上查找相關文件和討論範例。像是課程中提到LocalStrategy和FacebookStrategy語法,但我在做專案時還想多加GoogleStrategy,於是就多花點時間從原始文件和...