林敬智

擁有三年的雲端服務維護與開發的相關經驗,熱衷程式設計。 

 https://github.com/j3ygithub


雲端服務工程師

是方電訊股份有限公司

 [email protected]

學歷

台灣大學, 學士學位, 機械工程學系肄業, 2011 - 2016

因志趣不合,途中曾休學。2016 年,修滿了研究所需要的學分數之後,決定辦理退學,先行進入職場。

University@2x
電腦技能

語言


Python

HTML

CSS

JavaScript

資料庫


MSSQL

MySQL

MariaDB

PostgreSQL

框架


Django

Django REST Framework

Bootstrap

Vue.js

開發工具


Git

Visual Studio

Draw.io

其他


Linux

Cisco Command

Forti Command

語言能力

英文


熟悉

可以日常會話、技術溝通

全民英檢中高級

中文


母語

工作經歷

是方電訊股份有限公司, 雲端服務工程師, 2017 - 現在


工作內容:原以維護 Chief Cloud 為主,後逐漸走向程式自動化與系統開發。
主要成就:


[開發]FortiAdmin: FortiGate/FortiOS 的防火牆多租戶自助平台

產品價值

自助化: 讓客戶能自己管理防火牆

多租戶: 將原本設計成單一用戶的產品重新設計成多租戶使用

相關技術

OS: Linux

虛擬化: VMware

後端: Python, Django, PostgreSQL

前端: HTML, CSS, JavaScript, Bootstrap, Vue.js

版本控制: Git

網頁伺服器: Nginx & uWSGI

串接API: Forti REST API

開發新模組

fortiapiusage: 基於 Forti REST API 的應用模組

fortiate: 基於 Python 標準庫 shlex 的指令解析模組

加速開發

使用 VMware 虛擬機: 減少繁瑣重複的環境部署、測試驗證流程

使用 TDD: 以測試讓功能的驗證更明確,也能更釐清需求,減少過度開發的成本

開發過程 & 協作方式
開發時為獨立建置,但 Fortinet 經銷商協助提供了許多資源,加速了開發。開發前期查閱了許多的 FortiOS 相關文件,實際測試了許多 FortiOS 的功能與特性,先由簡單的串接與資料存取開始,以後端為基礎慢慢建置起整個系統。
前期在了解 FortiOS 的功能與特性上花了較多時間,以命令行與 REST API 的方式串接。先以 jupyter notebook 等較輕量的腳本方式嘗試拋接資料,成功後將程式碼的輸入與輸出大致整理為 function 或甚至成為某單元測試的一部分。
待數個資料存取,多個資源的 CRUD 等基本操作都大致能實現時,開始彙整程式碼,讓程式碼更加有系統、更加模組化,規劃每個物件的職責範圍、後端的資料流、架構等等。
後來為了讓日後的開發能更簡潔,開發了 fortiate、fortirestapiusage 兩個模組,分別將命令行、REST API 較底層的邏輯加以隱藏、封裝,減少日後開發時的撰寫繁瑣、重複的程式碼,日後也更好維護。
挑戰
API 的串接若沒有相關文件可參考,難度會大大上升。而 FortiOS 的 REST API 並非相當開放的文件,前期查閱文件時,常常得到錯誤的、片面的資訊。幾經搜索後得知,大多的 API 相關資訊都在 Forti 的開發者論壇 - FNDN 當中,且須 Fortinet 原廠員工推薦才能加入,後來由經銷商協助下加入該社群,後端與 API 串接的進展速度大幅加快。
將原本單一用戶使用的系統改為多租戶使用,有許多地方需要注意,各種資源的命名、存取,要做到多租戶之間互不影響相當困難。有些欄位、資料需要被隱藏,有些需要拆分或加工,並且需要搭配自動命名或某些特定邏輯,才能讓租戶之間互不影響。其中還要確保界面上看起來一切合理,有滿大的挑戰性。


[開發]Reminder: 排程提醒系統

相關技術

OS: Linux

虛擬化: VMware

後端: Python, Django, MariaDB

前端: HTML, CSS, JavaScript, Bootstrap

版本控制: Git

網頁伺服器: Nginx & uWSGI

串接API: Line bot、Telegram bot

開發過程 & 協作方式
開發時大多獨立建置,唯因部分排程相關的資料表,存放在某個既有的 MSSQL 資料庫,過程中有與該資料庫負責工程師協作,確認欄位格式、參數名稱等等。前期很快先做出了半成品,之後在與使用者討論時,需求的確認就變得相當容易,整個開發過程算是順利的。
挑戰
Django 的後端 ORM 相當好用,但原生並沒有支援 MSSQL。且本次開發中該 MSSQL 資料庫已有某些既定的 Log 蒐集機制,需搭配 store procedure 存取資料,故在 Django 與 MSSQL 的資料拋接上需要自行處理,無法使用 Django 的 ORM。
Company@2x
作品

Reminder

Reminder 是一個易用的排程提醒系統,依照你設定的時間、頻率發送指定的訊息通知。

Projects 01 00@2x

登入畫面

Projects 01 01@2x

排程列表

J3ycode

J3ycode是一個 Line bot,他用簡單的 JSON 保存你教他的語句。

Projects 01 00@2x
Projects 01 01@2x

這個 Line bot 有點皮

rj3y

rj3y 是爬蟲與網頁的結合,將爬蟲取得的資料回傳到網頁上,印出表格。

Projects 01 00@2x

輸入條件

Projects 01 01@2x

取得的資料回傳在網頁上

更多作品都在 https://github.com/j3ygithub
Powered by CakeResumePowered by CakeResume