施承宏

天生充滿好奇心,喜歡嘗試各種有趣的事情:一個人旅行、遊湖、浮潛,在旅行或是執行工作時習慣在腦海中先把事情規劃一遍,執行時才能更有效率的達成目標。在生活中,會有一些天馬行空的想法,喜歡拼湊各種毫無相關的事情,期待這些事情能夠磨擦出不一樣的火花。


休閒時間會看舞台劇、電影與漫畫,認為每一場戲劇或電影都能體驗到不一樣的人生,很容易融入角色情緒裡面,每次看著角色遇到危機與問題的處理方式及情感上的呈現,同時都會問著當時的自己會怎麼做。

工作經歷

工程師  •  未來可期科技

2023 / 3 - Present

使用 Golang 撰寫機率遊戲 (輪盤 weel、叮咚球 Plinko),內部遊戲邏輯拆成微服務,使用 grpc 做傳輸,與前端的街口上使用 beego 搭配 graphql 當作 router , 數據驗證傳入 DTO 搭配 validation 套件,錯誤接收使用自定義 error format 讓 grpc 傳出的錯誤包入 graphql 紀錄,並由 grapqhl 自訂輸出給前端的錯誤。
其中比較特別的是graphql 的scalar 可以自行定義相關輸出,讓 grpc 中的 *anypb.Any 可以變成 key value 的輸出方式。
在 function 上 搭配 any、泛型、delegate、reflect 讓 function共用性提高。

工程師  •  睿莊科技股份有限公司

2021 / 5 - 2023 / 3

1.簡易後台聊天室Golang、前端React,DB:Mysql、MongoDB,Cache:Redis,訊息佇列:RabbitMq
用websocket 做後台聊天室訊息即時更新,前端使用React hook框架搭配後端Golang的Melody、gin、cli套件做搭配,其中考量之後會有loadbalance的問題,增加RabbitMq 使用fanout讓所有伺服器的監聽者都可以接到相關資訊,考慮有多人使用同帳號,所以用MongoDB來存取對話紀錄。

2.爬蟲Golang搭配dgoogauth、Selenium、ChromeDriver
由於爬的網站是SPA,傳遞的API內容也被加密過,需要使用Selenium 搭配ChromeDriver以讀取瀏覽器資料的方式抓取資訊,加以整理後傳到Telegram 中。比較麻煩的是網站登入Google Authenticator (OTP 驗證 30秒),需要要先去 Google 設定取得金鑰,在搭配 dgoogauth套件產出OTP碼。

3.CDN後台維護與開發(原生PHP)
撰寫CRUD 搭配Nginx config組裝 (Certificate,Cache,User-Agent…),重構排程時curl的版本過舊,導致curl RESOLVE (domain對照特定IP)功能無法使用,為了不影響整體,直接蓋Laravel docker來重構排程。

4.後台權限系統(SPA)
後端API:Larval9( php 8.1 fpm)、DB:mariadb、cache:redis、Nginx
前端:react hook
後端(三層式架構)API 基本的CRUD、data validation、api format、驗證身份JWT、email註冊與驗證碼、多國語系,為方便串接加入swagger,為了統一環境把所有軟件都在 docker 中開發。
前端react使用useReducer搭配useMemo、useContext、SecureStorage
紀錄JWT、menu與選擇的多國語系,介面部分使用mui、datatable、useform套件來製作頁面與組合component,其中最麻煩的是side bar的menu,react 需要把遞迴過後的各個節點連結記錄下來,依照點選的menu展露項目。

軟體工程師  •  優愛德(部門解散)

2020 / 10 -  2021 / 1

Laravel
撰寫API(踢人、登入、登出、驗證 (Facebook,Google,Apple) token….)
搭配Factory Design Pattern設計
Facebook->Oauth2,直接與平台驗證
Google->Oauth2,直接與平台驗證
Apple->Jwt,相關驗證還需要抓取RSA運算碼,才能做相關驗證

Unity
規劃與串接 (SDK) 登入 (Facebook,Google,Apple)
使用UniRx套件做多執行緒(非同步)搭配委派模式包覆平台SDK,實踐 Factory Design Pattern,依照定義好的InterFace功能 (Facebook,Google,Apple)個別實踐
測試FireBase 串接功能

SQL
組SQL用於 Google Bigquery 的 DataSet,產生行銷相關圖表
SQL procedure

軟體工程師  •  恆星科技(倒閉)

2020 / 3 -  2020 / 9

PHP(Laravel)
API撰寫
使用DI注入與(Model→Repository , Service(Logic)→Controller(Output)模式 將code分離乾淨,減少舊code使用static的機會(聲明:Laravel 裡面用的 :: (雙冒號) 不是static ,而是用的是門面(Facades) )、搭配GuzzleHttp使用,提供比分、賽事房間資訊等等球賽網頁會看到的直播介面資料。

修改Laravel Session架構 (奇怪的事情)
公司中的API提供網頁與APP使用,但卻未走Token模式(登入狀態),被前人以Session模式放入Redis中代替,還搭配CSRF使用,讓每個Request都製造很多新筆數寫入Redis,導致使用的人不多,卻讓Redis炸開。
為了解決這問題,花了不少時間去修正底層(StartSession、SessionServiceProvider
)與測試,其中還包含創建新的Cookie去綁定SessionId與重建(以DB或使用Cookie Cache)登入狀態,搭配Routing與MiddleWare做使用。 至於為什麼不趕快換成Token(JWT or Oauth2)模式,是因為目前太多code有去取Session的登入狀態去對應了,還有不想讓APP那邊修正太多的東西。

Command排程撰寫(重構與資料同步)
將就排程中逐筆修改資料的爛code與階層式迴圈,整理後做批次處理(使用mysql temp Table 搭配Collection (chunk)去做處理),資料多的時候不超出記憶體最大使用量,並在寫入DB時不超出最大寫入的字數。

Kernel排程監控
紀錄各排程執行起始時間與結束時間於Cache中,並在頁面上顯示排程執行時間、狀態與下次執行時間,並結合Telegram通訊軟體,在狀態錯誤時給予通知,讓OP部門更快得知排程有無問題發生,不要等到營運發現錯誤才去救火。

導入Swagger 到 Laravel 中撰寫文件
設定自動產生文件,搭配註解方式寫(@OA\),讓Swagger的套件每次文件頁面 reload 都能生成需要的Json檔案。

軟體工程師  •  BRAVO_法孚國際股份有限公司(倒閉)

2019 / 6-  2019 / 10

C# (.net core)
遊戲後端API撰寫
儲值獎勵,抽獎,拉霸活動,發獎與定時清除記錄的console
應用.net core (C#)搭配ABP(Boilerplate)框架,已注入的方式使用class,
傳遞資料的方式則用AutoMapping搭配,製作好的DTO與前端配合,
顯示API則是用到Swagger套件,做簡易文件
而資料庫主要是用MYSQL搭配Redis做快取,連結與撰寫方式使用是EF搭配Linq,Lambda

PHP(Codeigniter)
網頁後端
資料CURD,與多個server cache更新
應用PHP搭配CI(codeigniter)框架與簡易boostrap,Jquery製作,
需求有用到資料庫連線的切換,是繼承CI中的model重新加上修改,
而其中還有個特殊的需求是多個DB的Insert,則是以DB連線的迴圈搭配transaction製作
其中多個Redis cache的更新呼叫,應用到curl的方式傳遞封包集合,用一次的封包時間達到多個API的post

軟體工程師  •  歐比斯

2018 / 7 - 2019 / 4

會員系統API:
內容: 會員註冊、登入、帳密修改、說明文件製作,ajax 傳輸json(加密 (OpenSSL 產出RSA公私鑰匙)),解密後寫入或比對Token(資料庫)
技術 :PHP、JavaScript、AJAX、jQuery、OpenSSL
兆豐、元氣先生、三得利網頁(前後台)-網頁維護案:
兆豐 : 信用卡電文維護、後台其他上架小功能維護、增修(ASP)
元氣先生 : 訂單、資料列印頁面維護、增修,商品上下架維護、增修
三得利 : 商品上下架維護、增修
技術 : ASP、JavaScript、jQuery
禮坊網頁:
內容: 後台資料列表、增修、CSV下載、寄信,前台JQuery
技術 :ASP
IP掃描程式 SSL專案:
● 專案內容說明: 為了提供憑證部門銷售相關到期日與客戶資料,寫一隻搜尋IPV4有無憑證並回傳whois內容,與相關後台製作、增修,資料庫調整、增修
● 技術  :C#(winform、Console)、PHP、OpenSSL、Microsoft  whois

學歷

2010 - 2014

屏東科技大學

資訊管理

github 

https://github.com/orgs/Glen-Works/repositories

https://github.com/GlenSHIHSHIH?tab=repositories

技能

Golang (gin, beego, graphql, gorm)、PHP (Laravel)

React Hooks、Jquery、Bootstrap

GCP、Docker compose、k8s(略懂)、Nginx、Traefik

Mysql、MongoDB、Redis、Etcd