鍾騰

剛離開學校出來求職的社會新鮮人。比起坐在教室聽課,更喜歡自己蒐集資料、閱讀教學與文件最後動手實做。認為程式語言只是一種工具,更重要的是背後蘊含的意義。所以除了已熟悉的語言、框架和工具外,也對未知的領域抱持著好奇與樂意學習的態度。

希望能夠從事後端開發,其中 Java 是使用最久且經驗相對較多的語言。因國中就曾接觸過 ESXi,此後對 Infrastructure、DevOps、SRE 等議題也相當感興趣。平常喜愛寫寫 Side Project 來解決生活周遭的問題和挑戰自我。

       

[email protected]  |  +886909023933

Side Projects

  Notion in Java

Aug 15 2021 - Present

Notion 的非官方 SDK,以 Java 使用者的開發情境去包裝 Notion API 及實做更高階的應用(計畫中),讓開發者能專注於設計自己的商務邏輯。

重視所有的模型與 API 端點的單元測試覆蓋率,於九月中旬 Notion 團隊宣佈 API 推出新功能前,就提前透過單元測試發現 API 的回傳物件有微調,並迅速將模型修正

技術細節:
以 Java 8 搭配 OkHttp 用戶端與主流的 json 處理器 Jackson 進行開發。當前(2021.9)的測試覆蓋了 83% 的類別與 71% 的程式碼行數。
查看程式碼(因立項不久尚未撰寫 README):YukinaMochizuki/notion-sdk-java

Programming Language: Java
Build System: Gradle

Library: Project LombokOkhttpJackson

  可擴展的聊天機器人框架

Apr 2021

擁有指令與對談模式的機器人框架。利用 Queue 與 Thread blocking 等來簡化開發者在開發對談功能時需面對的複雜性,但同時又可輕易的寫出如非同步修改已送出訊息等進階功能。曾有朋友以此為靈感也應用到了自己的專案中:
How to Handle Conversation in Chatbot in Python(見文末 Special thanks)。

遵循 SOLID 原則,框架的界面與實做是分離的,僅需繼承抽象類別就可將程式擴展到任意通訊平台上。

技術細節:
以 Java 11 搭配 Spring Framework 進行開發,使用自架的 GitLab 進行版本控制,並利用 GitLab CI 編譯與打包成 Docker Image 部屬至生產環境。
查看其他細節、README 或程式碼:YukinaMochizuki/DCDos 

演示:Create multiple notes in a row

Programming Language: Java
Build System: Gradle
CI/CD: GitLab CI, Docker, Docker registry
Framework or Library: Spring, Picocli, JSch, Apache Commons Validator, Project Lombok
TelegramBots

  社區管理系統的後端與基礎設施

Mar 2020

大學的期末專案,與另外兩位撰寫前端的同學合作開發社區管理系統,負責整個專案的後端與部屬。建立 RESTful API 供前端使用,並以 ORM(物件關聯對應)的形式操作資料庫。

技術細節:
使用 SwaggerHub 制定 API 規格,以 Python 搭配 Django REST framework 進行開發。利用 Docker 建立反向代理(Nginx)、前端資源(Nginx)與後端(Django)三個容器,並設定 NAT 將外網請求轉發至反向代理中。
查看完整架構、截圖與程式碼:YukinaMochizuki/Dynamic-WebPage
API 規格:Dynamic-Web-Project/1.1.0

Programming Language: Python 3.6
Dependency Manager: Pipenv
Framework: Django REST framework
Production Environment: RouterOSProxmox VEUbuntu ServerDockerNginx

技能 Skill

程式語言


  • Java
  • TypeScript / JavaScript
  • Python
  • C

框架或函式庫


  • Spring Framework
  • Vaadin
  • Django / Flask
  • jQuery

其他工具與 CI/CD


  • Gradle
  • Maven
  • Docker
  • GitLab CI
  • SwaggerHub

Linux administration


  • Ubuntu
  • Arch Linux

基礎設施


  • RouterOS
  • Proxmox VE
  • FreeNAS(現為 TrueNAS Core)

正在學習


  • Angular
  • Tailwind CSS

經歷 Experience

工讀 - 財務與自動化設計  •  財團法人開放文化基金會  Open Culture Foundation

Oct 2020 - Present

負責核對基金會所有專案的單據並進行編目,後因個人規劃而調整工作內容。現正利用此前熟悉過的財務流程開發基於 Google App Script 的自動化工具,採遠端工作的形式、每週與主管開會並自行回報工作時數。

總召集人  •  學生計算機年會夏令營 SITCON Camp 2021

Jan 2021 - Aug 2021

負責協調各組協作、推動活動籌備、主持核心討論及決策,擔任窗口與校方討論合作事宜。

  • 規劃與組織 GitLab Issues & Boards & Milestones 追蹤各組事項的進度,並定期舉辦里程碑會議來訂定未來幾個月的重要目標及主要籌備方向。

    其他參考資訊:SITCON Camp 2021 協作從零到一

  • 於籌備中期(約五月底)遇上疫情,在團隊討論後決定將夏令營的舉辦由實體轉為線上,並且使用 Google Meet、Gather 及 Discord 作為活動進行的主要平台。

    其他參考資訊:SITCON Camp 2021 官網

志工  •  資訊社群參與

2017 - Present

於 HITCON、COSCUP、SITCON 等社群的贊助、議程、行政、場務等組擔任志工近二十次,協助活動籌備。

細節資訊可參考:hackmd.io/@YukinaMochizuki/My-Profile

程式設計與計概教學助理(Teaching Assistant)•  靜宜大學資訊學院

Aug 2020 - July 2021

每週固定時段與學習家族的學弟妹討論課程進度並協助解題。

小組成員  •  行雲者研發基地 伺服器小組

July 2016 - Sep 2018

曾任組長與副組長,任期間協助管理行雲者內部服務(ESXi、Zabbix、DNS 等)與伺服器小組教學規劃。

學歷 Education

靜宜大學 Providence University

資訊工程學系 (休學)

Sep 2019 - July 2021
Sep 2016 - July 2018

其他專案 Other Side Projects

  含後台的 GitLab Issues 通知服務

Mar 2021

後台搭配 Vaadin 進行開發,使用 Java 編寫與控制 Layout、Button、Form 等 UI 元件。並且結合 Spring Security 開發出登入時產生 PIN 碼並發送給使用者登入的功能。

技術細節:
README 與程式碼:YukinaMochizuki/issue-assistant
演示:登入與後台操作

Programming Language: Java
Build System: Gradle
Framework or Library: Spring
Vaadin, Project LombokGson, PicocliTelegramBots

   單一頁面應用(SPA)框架

Jun 2018

使用 jQuery 操作 DOM,支援載入 HTML 模板、變數渲染與可複用元件的單一頁面應用程序框架。

技術細節:
README 與使用範例:
YukinaMochizuki/CMSOFramework
程式碼:CmspaJS.main.js

Programming Language: JavaScript

Library: Lodash, jQuery

   插件化的聊天機器人框架

Feb 2018

受到 SpongePowered 的啟發,藉由讀取 JAR 檔案來載入功能,並且大量使用 Java 的反射方法從頭自行實現了 IoC 容器(Inversion of Control Container)與事件監聽(Event Listener)等框架特性。

技術細節:
使用範例、README 與程式碼:
YukinaMochizuki/ShuviBot

Programming Language: Java
Build System: Gradle
Library: 
GuavaConfigurateTelegramBots

Powered by CakeResumePowered by CakeResume