林承葦|Cheng-Wei  Lin

個人簡介

  • 於設備製造業擔任軟體工程師,負責科技執法全系統網頁,包含違規停車偵測系統、禁行車種偵測系統、區間測速偵測系統,並 設計出全台首創—未依標誌標線偵測系統機車逆兩段偵測系統變換車道連續偵測系統。 
  • 個性較內向,但喜歡廣泛地認識新朋友。從小就對電腦軟體、機械結構擁有極大的好奇心與興趣,加上在學時期紮實的專題訓練,培養出積極主動解決問題的態度及再三測試不畏艱辛的精神。
  •  以正向的思考態度面對日新月異的社會,並具有高度的抗壓性,以及勇於多方嘗試不同事物。

軟體工程師
Taichung City,TW

技術文章 Blog
[email protected]

手機 : 0911-171-404

Profile 04 00@2x

技能 (網站開發)


前端

  • HTML 5 
  • JavaScript 
  • Bootstrap 4 
  • jQuery 
  • EasyUI 
  • E-Chart


後端

  • PHP 
  • MySQL 
  • Laravel
  • NodeJS 
  • Composer 
  • npm


其他

  • Git 
  • PHPStorm 
  • PhpMyAdmin 
  • HeidiSQL 


學習中的項目

  • 重構
  • 設計模式
  • 物件導向分析與設計





技能 (桌面應用程式)


C#

  • 撰寫監測 & 控制 AGV 電池的程式 
  • 撰寫桌面程式控制 Canon 相機 
  • 撰寫桌面程式控制字幕機顯示 資料庫 之資料 
  • 撰寫照片編輯程式(供員警製成罰單照片)


VB.NET

以介面程式將六軸手臂與 AGV 整合在一起,並與 MES / CIM 連線,使客戶能夠在遠端直接控制在產線的機器人或對其派工,讓產線更接近自動化。


Python3

撰寫網路爬蟲,方便在短時間快速抓取各股票大量的歷史資料,以利後續大數據分析使用。


LabVIEW

將鏡頭與機器人整合在一起,並利用 LabVIEW Vision Assistant 處理影像辨識,使機器人的移動定位更加精準,讓團隊在一次國際競賽中,晉級決賽。






工作經歷

軟體工程師,20203 月 - 至今

科技執法系統延伸
未依標誌標線偵測系統 : 
  • 瞭解到影片編碼格式會影響到瀏覽器是否支援播放。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 函數應用。ex : 因不同的兩支攝影機在不同時間點拍下同一台車,需將這兩個時間點同車號的資訊綁在一起變成同一案件,而利用 FROM_UNIXTIME、TIMESTAMPDIFF 等函數來解決時間切割相關的處理。
禁行車種偵測系統 : 
  • 強化 MySQL 檢視表的相關應用。ex : 利用檢視表將白名單除外 (WHERE NOT EXISTS),以及平日與週末禁行時段不同的篩選 (WEEKDAY)。

3 個月完成自學跨領域入門網站設計
違規停車偵測系統 : 
  • 透過大量閱讀網路教程手冊、書籍 ( 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 各分層意義 & 用法。

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

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

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

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

獨立接案子,2019 7 月 - 20199

為了想要瞭解自己獨立工作的專業程度,於近期 開始獨立接案子,利用下班時間持續 coding。學習維護前人撰寫的程式以及從何切入新增新功能,在過程中需要揣摩前人的思維,甚至是遇到沒看過的寫法時,我以閱讀「設計模式」相關書籍來輔助我快速理解設計架構的用意
開發中還面臨沾黏現象、通訊資料接收不完整、資料型態轉換瑕疵等問題,有了這些經驗之後,在程式撰寫上就會更加小心,並且遇到問題時的思考範圍更加廣泛。若後續有持續維護此案子,我將閱讀「重構」相關書籍來加強架構觀念,嘗試調整程式架構,使其增加可讀性及擴充性

學歷

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

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

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

工作實踐經驗

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

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

Projects 01 00@2x

自傳


2020職涯的重大轉折

2020年我剛到一家賣警用設備的設備商,公司裡只有一位寫韌體的老前輩,其餘部份可以說是沒有軟體基礎,公司交給我的第一個任務是利用 C# 撰寫一支供警察編輯違規照片的程式。第一天討論完所有需求功能後便著手進行,在一個半月的趕工後,程式如期交出去給客戶且也相當滿意,公司對於我的努力與能力非常肯定,於是希望我能 跨領域 接下公司接下來更急切的科技執法網頁系統,剛好自己對於網站開發領域頗感興趣,且也有朋友能互相討論學習,就這樣開啟自己網站開發的歷程。


學會如何自學一項技術

由於沒有其他網站開發工程師,書籍就變成了我的前輩,透過大量閱讀 Laravel 相關書籍及網路教程來快速瞭解網站設計的眾多工具。書籍是各高手前輩長年累積下的精華,因此能讓我在一開始就用較良好的觀念在開發,也減少我走的冤枉路。過程中,查詢資料能力解決問題能力 皆有大幅度成長,最後在大量讀 code 寫 code 然後碰壁查書查資料的無限循環下,快速建立起網站開發能力,並在三個月內如期交出(政府機關驗收完成)第一套科技執法系統—違規停車偵測系統。


科技執法系統延伸

完成第一套系統後,往後的三個月,首先整合了區間測速偵測系統,並依相同開發模式設計出禁行車種偵測系統,以及 全台首創未依標誌標線偵測系統機車逆兩段式偵測系統變換車道連續偵測系統,系統間最大的差異在於違規案件的篩選條件及規則,因大量使用到 MySQL 的子查詢、JOIN、LEFT JOIN、WHERE NOT EXISTS、FIND_IN_SET、UNION、複合索引…等,而使資料庫能力更上一層樓,也因為資料量大,遇上效能瓶頸,在優化 Nodejs 時,更熟悉其平行運作的特性。在優化後端(php)時,學會使用 composer & npm 安裝套件來輔助自己。而這些經驗的累積,使自己在網站開發上越來越得心應手。


持續學習追求卓越

在設計各系統的過程中,我儘可能將各功能拆成各個 class 並儘量符合單一職責原則,也將持續閱讀重構相關書籍,並嘗試練習將公司專案的架構慢慢整理清晰、降低耦合,同時精進設計模式,一同練習導入,使架構越來越完善。在這樣子持續學習並結合公司專案當練習,使我在學習路上不感到痛苦,甚至看見自己每個月都比前一個月進步一些而感到快樂。 


我叫林承葦,這是我在 2020 職涯的重大轉折,自學跨領域的經歷使我更加有自信接受各種挑戰,已經迫不及待想加入公司,為公司增添戰力,也希望能與團隊多互相交流培養良好的開發觀念,使專案 & 程式碼的品質更加卓越。 

Powered by CakeResumePowered by CakeResume