吳思慶

  Taipei City, Taiwan

畢業於 國立雲林科技大學 資訊管理系

專注於Web、後端開發,有RDBMS、NoSQL、雲端服務使用經驗

於 KKStream 實習一年,參與過敏捷開發( Scrum )、學習有系統的驗證軟體品質、開發自動化測試、CI/CD、了解 GitFlow 等

  Phone   : 0983-926-649

  E-Mail   :  [email protected]

    

技能 Skills

程式語言


  • C 語言
  • Java
  • JavaScript
  • Node.JS
  • Python
  • PHP
  • Android

Web 開發


  • React
  • Java - Servlet
  • Express.js
  • Python Flask
  • Python FastAPI
  • Restful API
  • WebSocket


資料庫, 雲端, CI/CD


  • MySQL
  • MongoDB
  • AWS - ECS, EC2, S3
  • GCP  - GAE, GCE
  • Jenkins
  • Docker
  • Gitlab CI


其他工具


  • Git
  • Linux
  • ShellScript
  • OpenCV
  • Postman
  • Charles proxy
  • UML


學經歷 Education & Experience

2016 - 2020

國立雲林科技大學

資訊管理系 學士

TOEIC 多益成績( 2020 ): 740

2020 - 2021

KKStream  科科串流股份有限公司

Software QA Engineer Intern


工作經歷 Work Experience

KKStream - Software QA Engineer Intern

在 KKStream,我的日常是進行 Android, iOS, Web 的測試,使用 Jira 回報、追蹤、驗證問題發想如何測試新功能並建立測項。

除了測試,我也開發、維護自動化測試QA 們的內部程式、Web、工具撰寫腳本將一些例行動作自動化( 例如:使用 Python 串接 Google Drive API 將要 Release 的檔案上傳或是串接 Testrail API 批次更改測項等 )。

Android UI 自動化測試

為團隊的音樂串流產品 UtaPass 的 Android App 建立自動化測試

在接手該專案前,專案停擺了一陣子,我的任務是熟悉架構並將它修復成可用的狀態,並持續新增功能及測項來跟上產品開發進度。

成效:三分之一的回歸測試測項可以被自動化。

使用的技術: Java, JUnit, Espresso UI 測試框架, Jenkins

Web UI 自動化測試

為公司的影音串流產品 TELASA 的 Web 建立自動化測試

有了自動化測試的經驗後,我有機會改善該產品的自動化測試,以提升 可維護性、專案一致性 為目標,運用 Page Object 模式,以貼近手動測項的架構來重新設計。
使用 Jenkins pipeline 建立 CI 流程,透過 docker-compose 建立測試執行環境, Gitlab CI 在 merge 前執行 ESlint,確保程式碼品質

改善後:可以對照手動測項實作自動化測試,保持手動及自動化測試的一致性,並完成了 Smoke Test。


使用的技術:Node.JS, WebdriverIO, mocha 開發及撰寫測試, Selenium Grid, Gitlab CI, Jenkins, Docker 整合、部署及執行


裝置管理系統

維護及開發團隊用來管理測試裝置的 Node.JS web 系統

可以在該系統查看測試裝置的詳細資訊如型號、版本等,並且可以登記使用中的成員、調閱使用紀錄。

團隊想紀錄裝置的位置及電量,因此我開發 API 供裝置上傳資訊,儲存在 MongoDB,並在前端頁面上嵌入 Google Map 顯示其位置

使用的技術:Node.JS, Express,  MongoDB 開發後端, JavaScript, pug, bootstrap 4 開發前端, Swagger 製作 API 文件


裝置管理系統 Android App

為 QA 團隊建立一個 Android app 小工具,這份專案是由我和團隊裡的另一位實習生一起完成。

最初目的是可以定時上傳裝置的電量、經緯度到裝置管理系統,但我們加入一些功能來協助我們日常的測試,例如串接內部測試環境的 API 來更改會員狀態、輸入 URI 來打開 App link,另外將 Jenkins 整合 Slack 通知,當 app 有更新時就可以通知團隊成員 。

使用的技術:Java, Android, Jenkins


學習經歷 Learning Experience

大一:在管理學課程中,擔任期末成果發表的公關組副組長,負責規劃校內宣傳活動並帶領班上同學進行宣傳。

大二:跨系選修機器學習與金融應用(財金系選修),學習基本的機器學習方法並瞭解如何應用在商業領域。

大三:跨系選修了計算機演算法(資工系必修),學習各類演算法理論如Greedy method, Dynamic Programming 等。

大四:選修了資料探勘(資管系碩班選修),學習資料探勘的流程,瞭解分類、分群、關聯分析等資料分析技術,還有更深入的去探討機器學習原理。

在專題期間,指導教授讓我和組員們參與產學合作專案,題目是應用於無人商店的影像辨識應用。而我們在旁學習、觀摩,研究跟專案相關的論文和程式碼,並定期報告給學長姐和教授。

畢業專題:影像辨識的應用

我們的目標是建立一個平台,讓使用者可以提供遠端 IP Camera 的位址去紀錄一個區域的人群數量。

系統會讀取影像來辨識人群、計算擁擠程度,將資料儲存在資料庫,再以 Web API 形式提供資料給前端,在前端顯示即時的區域影像和相關資訊,讓使用者預覽各個區域目前的壅擠程度。 


我在專題中負責系統設計及開發,使用 Python Flask 開發後端 Restful APIHTTP Streaming 即時顯示區域影像、Multi-Process進行影像處理、Sqlalchemy ORM 操作 MySQL ,並協助前端使用 React 開發網頁介面和串接後端 API。
我們在2019年虎尾科技大學舉辦的全國學生專題競賽大學組電資類獲得佳作

專案連結: https://github.com/skin547/follow-me-project


網站首頁

課程專案:物件導向軟體工程

學期團隊專案:實作一個網路商店,並適當的應用設計模式


需求功能有:會員制、購物車、購物車的 undo 與 redo、訂閱商品提醒、不同情境的折扣方案、取消訂單、多種付款方式。


此專案使用了 Servlet、JSP 和 MySQL 並應用了MVC和數個設計模式,實做了一個 Java Web

我在團隊中負責程式開發、資料庫設計、單元測試、流程設計、UML設計,並發想如何應用設計模式。

這門課學習的內容涵蓋了軟體工程以及設計模式,其中設計模式佔據了課程的2/3。而這份專案使用了 Composite
、Memento、Observer、Strategy、Chain of Responsibility 等來解決需求。
  • 商店內的商品有分為品牌、分類及市場,在此使用了 Composite 模式把商品以樹狀結構來分類。
  • Memento 模式用於紀錄購物車狀態、方便讓使用者可以回到原先的購物車狀態、避免誤按造成的困擾。
  • 在商品沒有存貨時,使用者可以訂閱商品,並在補貨後可以通知使用者有存貨了,在此使用 Observer 模式來達成
    ,當商品狀態改變時,使用者將收到通知並更新。


課程專案:系統分析與設計

學期團隊專案:設計一個租車系統


我在團隊中負責設計租車功能的 Sequence Diagram、Use Case Diagram,並根據 Class Diagram 使用 Java 實作


完成實作後分析類別的 coupling, cohesion 來評估系統的好壞。

這門課程除了系統分析與設計、介紹 Prototyping, Scrum, XP 等開發方法,還包含了物件導向設計原則 SOLID,研究物件
如何分配責任,常見的 MVC 架構在這堂課中也有探討。

在這份 Teamwork 中我認為最有趣的部份是發想系統功能,在設計一個像是 iRent 的系統的過程中我們碰到了許多設計難題,解開這些難題帶給了我很大的成就感,而我也在這一次的課程中學習如何撰寫系統文件給組員們瞭解系統流程、架構
,讓團隊運作得更有效。



作品集 Side Projects

即時聊天系統

使用 Node.JS Express 框架開發 Restful API 以及 MySQL 做為資料庫,功能有使用者註冊、登入、 JWT 驗證、建立聊天室、發送訊息,使用者發出訊息到聊天室後會透過連線發送給其他使用者,使用者和聊天室的關係為多對多

使用 WebSocket 與使用者做雙向連接,傳送訊息通知
使用 Sequelize ORM 連接、操作 MySQL
使用 MochaChai 撰寫 Unit test 及 API test

(附圖為 postman 測試結果)

我嘗試使用 Clean Architecture 架構TDD 方法去開發這項專案,先寫測試讓我必須先思考如何設計結構在進行開發,維護時也因為有足夠的測試而給了我改動的信心,我感受到了 TDD 所帶來的好處,未來我也會努力維持程式碼品質,並持續學習各種開發方法。


MERN Stack

在有了 React 和 Node.JS 的基礎後,我使用 Express 框架開發後端 API 搭配 MongoDBMongoose ODM,實作了一個全端網站,實作了待辦清單、短網址、圖片上傳等功能。 


透過使用 Node.JS 開發這份專案,熟悉了 同步/非同步 的概念,以及如何使用 Promise, async / awiat 等語法,並部署在 GCP App Engine 上。



Giclee Project

這項專案的目的是讓使用者可以預覽自己的藝術創作
(例如:攝影集或是畫作)在不同的紙材上會有什麼樣的效果,功能有讓使用者上傳圖片、選擇紙材並預覽圖片。

使用 Python FastAPI 框架開發後端 API OpenCV 進行圖像處理, React 開發前端,圖片的傳送使用 Base64 進行編碼,透過 Docker 部署在 AWS ECS ( 目前改在 EC2 )


Demo : http://ec2-13-231-191-245.ap-northeast-1.compute.amazonaws.com/

Powered by CakeResumePowered by CakeResume