林承葦|Darren Lin

個人簡介

  • 於區塊鏈相關開發公司擔任區塊鏈/後端工程師,負責鏈遊專案的智能合約及後端開發,包含節點架設/維護、ERC20/ERC721 應用開發、功能型合約開發 (ex : Marketplace)後端架構規劃設計、資料庫規劃、基礎伺服器維運。 
  • 個性較內向,但喜歡廣泛地認識新朋友。從小就對電腦軟體、邏輯推理擁有極大的好奇心與興趣,加上在學時期紮實的專題訓練,培養出積極主動解決問題的態度及再三測試不畏艱辛的精神。
  • 以正向的思考態度面對日新月異的社會,並具有高度的抗壓性,以及勇於多方嘗試不同事物。

區塊鏈 / 後端工程師

Taichung City,TW

技術文章 Blog

Github
[email protected]

Profile 04 00@2x

技能 ( 區塊鏈 遊戲 網站開發 )


區塊鏈

  • Solidity
  • Smart Contract
  • Truffle
  • Remix
  • Openzeppelin
  • 節點架設 / 維護 (POA)
  • Unit Test


後端(遊戲)

  • Nodejs
  • Typescript
  • Express
  • web3.js
  • yarn
  • MySQL
  • Unit Test


後端(網站)

  • Golang
  • Gin
  • MySQL
  • Php
  • Laravel
  • Composer 
  • npm


前端

  • WalletConnect
  • HTML
  • Javascript
  • Bootstrap 4 
  • jQuery 


其他

  • Git
  • PHPStorm
  • PhpMyAdmin
  • HeidiSQL
  • Postman
  • Nginx / SSL 設置


學習中的項目

  • 重構
  • 設計模式
  • docker / docker-compose
  • CI / CD
  • ZK Rollup
  • Hardhat

工作經歷

區塊鏈 / 後端工程師,2022 年 1 月 - 現在

深入研究區塊鏈技術,並獲得以下經驗
區塊鏈 : 
  • 架設 EVM 架構的節點及使用 Blockscout 建構區塊鏈瀏覽器。ex : 架設 & 維護公司私有鏈 (POA) 與區塊鏈瀏覽器
  • 撰寫各種智能合約 (Solidity),包括 ERC20 / ERC721 / 非標準版功能型。ex : 負責公司遊戲專案的代幣合約、NFT 合約、裝備系統合約、NFT 交易市場合約、版稅合約、角色合約...等撰寫
  • 使用 Truffle 框架設計部署智能合約的流程,並編寫智能合約的 Unit Test
  • 參與 Telegram 舉辦的 TON 黑客松,於 TVM 架構的 TON 鏈上建立應用。Link : https://dorahacks.io/buidl/4068
後端 : 
  • 深入了解同步與非同步的運用。ex : 遊戲後端以 Nodejs Express 框架進行開發,利用非同步處理高併發時的區塊鏈相關互動,以解決容易受區塊鏈特性影響而導致主執行緒阻塞的問題
  • 更能掌握 middleware 的使用場景。ex : 運用 middleware 處理區塊鏈解簽章資訊以驗證地址身份及程式中的 Error code 處理。
  • 通過分層設計 & 職責拆分的概念,將專案架構進一步強化。ex : 因遊戲內容不斷擴增使業務需求持續增長,而新增任務系統分層,將各分層間的職責拆分更細,而不單侷限在只分 controller & service...等
  • 設計更規範的資料庫結構。ex : 將資料關係拆小,執行到第三正規化以應對鍵盤設定系統及任務系統的複雜資料關係與避免冗餘資料。
其他 : 
  • 使用 Nginx 進行 SSL 憑證設定 & 轉 port 相關設定。
  • 於 Linux 系統上以 Dock / Docker-compose 設計專案部署流程。

軟體工程師,20203 月 - 2021 年 9 月

科技執法系統延伸
未依標誌標線偵測系統 : 
  • 瞭解到影片編碼格式會影響到瀏覽器是否支援播放。ex : Google chrome 在 mp4 檔支援的影片編碼格式是 AVC (H264),因原先的編碼格式為 DivX,在其他瀏覽器能正常播放,轉檔後即解決問題,使 Chrome 也能正常播放。
  • 強化 MySQL 子查詢。ex : 未依標誌標線行駛為小路口有多支攝影機連拍,利用子查詢加強案件篩選條件以降低錯誤的案件配對。
  • 更熟悉 Nodejs 運作特性。ex : 因車流量大導致每天都有上萬個檔案, Nodejs 在掃瞄目錄檔案時,因平行處理特性,只要目錄有很多天資料就容易因掃瞄目錄的動作佔用大量效能甚至因此程式崩潰,利用 fs.stat 讀取資料夾修改時間,讓掃瞄目錄時不進入太多天前的資料夾以解決佔用大量效能問題。
機車逆兩段式偵測系統 : 
  • 用 php 做圖片處理相關應用。ex : 透過 composer 安裝 intervention/image 套件來處理違規照片的相關編輯及合成。
  • 強化 MySQL 查詢。ex : 利用 JOIN 加速比對違規案件的查詢及 LEFT JOIN 關聯其他資料表資訊。
變換車道連續偵測系統 : 
  • 強化 MySQL 子查詢。ex : 因連續偵測,每一筆資料在第一次審查過後不能馬上刪除資料,否則下一支攝影機的資料沒辦法成功配對以達到連續偵測,在子查詢加入各路段方向性資訊來判斷刪除資料的時機,使案件篩選更加嚴謹。
  • MySQL 利用複合索引加快查詢速度。ex : 因此專案的違規案件、白名單、黑名單...等資料篩選較繁瑣,導致查詢時間長達幾十秒到一兩分鐘皆有,利用資料表新增複合索引將幾十秒查詢縮短至不到一秒及兩分鐘查詢縮短至不到一分鐘且持續優化中。
區間測速偵測系統 : 
  • 由於車流量 & 計算量龐大導致網頁載入緩慢,因此利用 Nodejs 在背景預處理前置作業。ex : 利用 Nodejs 在背景持續查詢並計算違規案件及透過 npm 安裝 canvas 套件來處理合成違規照片,最後將違規資訊寫入乾淨的資料表供直接查詢以加快網頁載入速度。
  • 以更多 MySQL 函數來處理較複雜的資料,例如利用 FROM_UNIXTIME 和 TIMESTAMPDIFF 等函數解決時間切割相關的處理。舉例來說,在不同時間點拍攝的兩支攝影機所拍攝到的同一台車,需要將其相關的資訊綁定為同一案件。透過使用這些函數,可以有效地解決這樣的問題。
禁行車種偵測系統 : 
  • 強化 MySQL 檢視表的相關應用。ex : 利用檢視表將白名單除外 (WHERE NOT EXISTS),以及平日與週末禁行時段不同的篩選 (WEEKDAY)。

三個月完成自學跨領域入門網站設計
違規停車偵測系統 : 
  • 透過大量閱讀網路教程手冊、書籍 ( Laravel ) 來快速瞭解網站設計的眾多工具,也漸漸培養起 自學的能力 ,並且因不熟悉開發流程而導致到處踩坑,在大量查詢國內外文章的同時,解決問題能力 & 查詢資料能力皆有大幅度成長。ex : 自己負責全專案。
  • 為克服 PHP 不利於背景持續運作而接觸 Nodejs,利用 Nodejs 於背景持續讀取前端設備傳進伺服器的違規資訊 (ini 檔、照片檔),並且將違規資訊分析寫入資料庫及通知承辦警員。
  • 為將大量違規資訊轉成 json 格式匯出檔案而開始利用 composer 安裝套件使用。ex : 安裝 violet/streaming-json-encoder:^1.1 套件以解決過大的資訊轉 json 導致溢位的問題。
  • 在設計系統操作日誌功能時,瞭解 Session & Cookie 的差異及應用。ex : 將使用者 IP 、帳號存在 Session 方便追蹤,以及利用閒置一段時間清除 Session 來達到自動登出功能。
  • 因屬於功能性網站,前後端大量互相交換資料處理而學會 ajax、JQuery Selector、HTML、JavaScript DOM。
  • 入門 MySQL,基礎原生指令 & querybuilder。 ex : SELECT、INSERT、DISTINCT、LEFT JOIN......等。
  • 入門 Laravel,blade、ORM、Routes、Controllers、Repository、js 各分層意義 & 用法。

一個半月寫出一支照片編輯程式
因公司客戶急切需求,依照所有需求於一個半月內 從無到有 設計出照片編輯程式,過程中學會利用 TreeView 顯示路徑上所有檔案,並依點擊即可讀取該照片檔,以及學會如何安裝 & 引入套件,ex : 利用 Visual Studio 2019 內建 Nuget 套件管理來安裝 ImageProcessor 、 cskin 等套件以達成程式介面美化及各影像處理功能。

軟體工程師,201710 月 - 2020 年 2 月

役畢後,於自動化產業設備商工作,主要工作內容包含:
  • AGV 程式維護修改,至客戶端裝機並針對不同環境而測試修改,ex : 無塵室、潔淨室、一般廠區,由於各功能幾乎都有物件化,在修改過程中 更加瞭解物件導向的概念
  • 解決檢測電池數值與其他功能遭遇的多工問題,進而 更熟悉了執行緒的應用。ex : 利用控管資料流來解決資源互搶的情況 。
  • 撰寫 C# 桌面應用程式與產品電池通訊測試,針對公司不同產品的電池種類可在程式上對其通訊設定編號來方便管理。
  • 撰寫 C# 桌面應用程式測試產品零組件,並製作新舊組件比較報告比較優缺點。

在工作期間,我在介面程式撰寫上有很大的進步,並且 更熟悉物件導向的概念、資料流的影響、執行緒的應用、與硬體有線/無線通訊,並且能與客戶溝通討論 AGV 在產線上工作可能會遭遇到的軟體及外部環境問題與解決方式(通訊指令、走道寬窄、地面坑洞、障礙物閃避)。而在每一次的案子中也 更加瞭解如何維護一個龐大系統架構的程式,程式不只是寫給自己看,更要讓團隊的人看得懂且能一起維護,並利用 Git 做到備份及程式版本控制。

學歷

國立雲林科技大學,電機工程學系,碩士(肄)2016 年 9 月 - 2017 年 1 月

南臺科技大學,電機工程系,學士,20129 月 - 20156

  • 2014 行動生活科技與社會跨領域研究 (國科會)
  • 2014 IRHOCS 國際機器人大賽
  • 2014 台灣智慧型機器人大賽 (第三名) 
  • 2013 佛光兒童夏令營 (義工服務)
  • 2013 IRHOCS 國際機器人大賽 (晉級決賽)
  • 2013 全國智慧型機器人大賽 (佳作)

崑山科技大學,電腦與通訊系,大一,,20119 月 - 20126

工作實踐經驗

將專案重構導入「簡單工廠模式」

因遊戲任務系統持續擴增新任務,而每個任務相關的 NFT 空投合約資訊、metadata、png 皆不同,因此為專案導入「 簡單工廠模式 」讓各任務的 NFT 合約資訊清晰可見,減少冗餘的 if else 以提升可讀性 : 

替專案導入「Git Commit Message 規範」

因系統日漸龐大,而各功能的改動及賣出去的各套系統版控皆沒有記錄,每一次的更新皆像走在鋼索上,因此為公司測試機導入「 Git & Commit Message 規範 」讓每一次異動的原因與意圖清楚留下記錄,之後回頭再次更新時,能清楚瞭解當時異動的情況與原因,以及更清楚每一套系統更新到什麼版本 : Projects 01 00@2x

自傳


與區塊鏈技術的邂逅

在一次偶然的機會學習加密貨幣投資,進而知道區塊鏈技術,當時的我剛接觸到區塊鏈技術,並立即看到了其未來的潛力,於是我決定進入這個領域,深入研究和開發區塊鏈技術,甚至參加了 Telegram 舉辦的 TON 黑客松比賽,與區塊鏈領域的高手們切磋交流。這些經歷讓我對區塊鏈技術和相關領域的發展有了更深入的瞭解和經驗。


持續精進的後端

除了區塊鏈技術,我還擅長後端開發。我深入瞭解了 Nodejs 的同步非同步處理,以應對高併發時的運作效能。另外對於 Express 框架提供的 middleware 也更加掌握,將其應用於處理前端調用 API 時的預處理行為,ex : 調用者身份驗證。以及後端執行過程中的錯誤處理。並具有良好的專案架構上職責拆分的觀念,而且也能設計出更規範的資料庫結構,包括執行到第三正規化


區塊鏈尬後端

部份開發者可能認為區塊鏈技術與後端技術雷同,也許能夠完全取代後端而實現完全去中心化,不過自己實際深入了解與開發後,認為將兩項技術結合能達到一加一大於二的效果,ex : 以資料庫處理跨鏈橋映射相對簡單。我的區塊鏈和後端開發經驗,使我能夠適應不同的項目需求,同時也為我提供了一個更廣泛的技術視野,並有能力在區塊鏈和後端領域中實現卓越的表現。


持續精進追求卓越

在設計鏈遊後端系統的過程中,我盡可能將職責拆細使系統更加趨近高內聚低耦合,也將持續精進重構與設計模式等相關知識,並導入到每一次開發的專案上,不斷迭代改善,使架構越來越完善。在這樣子持續學習並以專案實戰當作練習,使我在學習路上不感到痛苦,甚至看見自己設計的專案架構相較以前越來越好而感到快樂。


我叫林承葦,這是我結合區塊鏈技術與後端技術後提升到的一個新的技術視野,更廣泛的視野使我更加有自信接受各種挑戰,已經迫不及待想加入貴公司,為公司增添戰力,也希望能與團隊多互相交流培養良好的開發觀念,使專案 & 程式碼的品質更加卓越。