個人簡歷

個人資料

  • 姓名:施俊羽
  • 學歷:淡江大學資工系三年級

技能

  • 軟體開發相關
    • Python
      • 網頁框架: Flask
    • Javascript (node.js)
      • 網頁框架: Express.js
  • 伺服器管理相關
    • CentOS / Ubuntu (大多 Server 使用 CentOS)
    • 各式伺服器架設
      • Web Server (Apache / Nginx)
      • Mail Server (Postfix) - 含 SPF Record、DKIM、DMARC 之設定
      • DNS Server (bind)
      • VPN Server (PPTP / OpenVPN)
      • ... 等等,不過現在都用 Docker 架設,難度相對低許多就是
    • Docker
      • 2 年左右經驗,曾經把多個自己 / 老師開發的 Web Application Docker 化 (Java開發的dotCMS / Python / Node.js 都有實作過)

經歷

軟體開發 (2+ years)

  • 淡江大學 策略遠見研究中心 網站後端
    • 使用 Node.js + Express 撰寫,只有 API 的網站後端,因為前端採全動態載入,因此前後端分開來開發。
    • 資料庫使用 MySQL,因為我的 SQL 還不是很熟,因此使用 Sequlize.js 這個 ORM library
    • 採用每個功能一個模組,模組內使用 MVC 架構,主程式再將各個模組掛上的架構。
    • 使用者的部分採用 Passport.js,此 library 支援多種驗證方式,除了基本的帳號密碼登入,未來還可加入如 Facebook / Google 帳號登入等支援
    • 內附 Dockerfile,讓第一次參與 / 使用本專案的人,可以快速的將程式執行起來。
  • 車牌辨識系統
    • 因為這個是老師接的產學合作案,所以沒有辦法提供 Source code 做參考
    • 和老師一起做的產學合作案子,老師負責底層的辨識引擎開發,我負責上層的API串接,還有串接廠商的API
    • 使用 Raspberry Pi 3 做為主機,當然效能不足時也可改用一般 x86 主機執行;使用 Python3 做開發。
    • 固定車位辨識流程:定時監視輸入檔案資料夾有無新檔案,有則將檔案傳給辨識用的 thread 進行辨識,辨識後的字串交由 Regular expression 過濾一次,確認沒有問題以後輸出。
    • 出入口辨識流程:使用 Arduino 接收來車訊號,收到以後使用 Pi Camera 拍攝車輛照片,辨識以後將結果分別透過 TCP Socket 送到廠商的 Server 與網路芳鄰共享資料夾
    • 除了辨識部分使用 4 個 thread 以榨出 CPU 最多效能以外,其他各功能(監視資料夾、拍攝照片、送出辨識結果)皆各使用一個 thread,thread 之間以 Queue 溝通,並使用 threading.Lock 確保不會造成 race condition。
  • 書籍記錄系統後端 API Server
    • 算是我第一個後端的作品,在大一下高等計算機程式語言期末的分組報告時開發的,後端是由我獨自一人開發而成
    • 使用 Python + Flask 開發而成,使用 MongoDB 資料庫(不過當時是看他的 API 蠻簡潔,就試著用用看);當時是使用 Java 作為前端的 Application(當時課堂上教的就是 Java),後來有想寫 App 版,但是做到一半就放著了。
    • 因為是多人協作的作品,當時有試著弄一些簡單的文件,讓開發前端的同學參考。
  • 抱枕套發售資訊 RSS Feed
    • 算是個人興趣的小專案,因為蠻喜歡這類周邊商品,但是討論去上大家會發的消息其實算少數,因此找了一個資訊量頗大的情報網站,替他寫了爬蟲,將爬下來的資料做成 RSS,方便訂閱與閱讀。
    • 爬蟲使用 Python 開發,Server 用的是 node.js + express。

伺服器管理 (3+ years)

  • Web Server 代管
    • 我曾與朋友合接過幾個網頁製作案子,內容多半是採用 Drupal、Joomla 等內容管理系統 + 現成模板製作網站,再加上後續的網站維護 / 主機代管服務。
    • 我使用的主機是 Linode 的 VPS,目前主力機器是是在新的 Tokyo 2 Datacenter 的 Linode 2048 (2GB RAM) 方案的 VPS
    • 目前完全使用 Docker 將所有 Web Server 容器化,因此該主機上同時執行了兩個 Apache (分別使用 PHP 5.6 / PHP 7.1,因部分程式有相容性問題),前面使用 Nginx 做 Reversed proxy,並使用開源的 MariaDB 作為後端儲存。
  • 淡江大學資工系計中
    • 目前還在草創時期的系計算中心,預計會提供上課時所需的 Server 環境(預計是 LAMP 架構)和個人專屬的 Docker container,裡面可執行一般的 Linux 程式,可作為學生練習 Linux 使用,開學後預計會有近千個 container 同時上線。
    • 因為我們希望每人能有自己的網頁空間與網址,因此我們使用 nginx 作為 reversed proxy ,sshpiper 做 SSH 的 reversed proxy (username based),並使用 consul + consul template + registrator 的搭配,將所有上線的 container 都註冊到 consul 去,並由 consul template 動態更新伺服器設定檔,達到全自動化部署的效果。
    • 這個架構是我在大二的時候提出的,不過直到這次的機會才實作出來,目前是半成品狀態。
    • 這裡有架構圖可以參考

可上班時間

本學期除了星期二 ~ 四整天有課、禮拜一 13:00~15:00、禮拜五 10:00 ~ 12:00 以外,其他時間都可以工作,一般平日可工作 5HR 上下。

以下是我的課表,第一節是早上8點,依此類推:

只有期中 / 期末考前會需要多一些時間讀書,可以提前將該週的進度 assign 給我,我可以盡量提前做完。我全力拼的情況下,每週最多可以工作 70HR 上下,不過拼完就需要休息幾天了。

個人作品集

Github: https://github.com/tom19960222
Docker Hub : https://hub.docker.com/u/tom19960222/

聯絡資料