跳至主要內容

我的旅程

依「C#」篩選中清除
專題2020年12月

串接 姿態辨識模型輸出至 Unity 3D 角色,實現即時動作模仿(畢業專題)

資訊工程系 學士 · 國立台灣科技大學

專題使用既有的人物姿態辨識模型,我負責 Unity 端的整合——把模型從即時影像推論出的姿態輸出接進 Unity,映射到 3D 角色的骨架上,讓角色即時複製影像中人物的動作。

查看詳情
自動化2022年6月

打造 追蹤碼代吐設定的自助後臺,讓非工程人員免提需求即可完成配置

Research Developer (Cat Team) · Bridgewell

公司既有的「代吐」機制會在自家追蹤碼觸發時查 DB,決定要一併呼叫哪些第三方平台(Facebook、Google Ads、LINE Ads)的追蹤碼——該機制由另一團隊維護。原本這張對應表只能由 RD 手動寫入 DB;我們把設定流程界面化做進自家後臺,業務與 OP 可自行完成設定。

單一客戶的追蹤碼設定交付時間從約 3 小時縮短到 5 分鐘;後臺累計服務約 1,500 家客戶
查看詳情
爬蟲2022年9月

設計 可擴充的電商商品爬蟲框架,以樣板方法支援數十個站台

Research Developer (Cat Team) · Bridgewell

以 C# 搭配 HtmlAgilityPack 建立 WorkerBase 樣板方法架構,配合 SpiderWorkerFactory 與每站台設定處理差異;新增一個電商站台只需實作一個 Worker 子類別,覆寫分類列表、商品列表、翻頁、標題、價格、圖片、下架判定等 hook。

累積涵蓋約 47 個電商站台(IKEA、Gap、Coach、Domino's、Nitori 等),維護千級商品資料,作為客戶無法提供動態商品 feed 時的備援匯入管道
查看詳情
資料串接2023年3月

串接 Facebook Catalog 與 Google Ads 作為跨 DSP 的商品資料上游

Research Developer (Cat Team) · Bridgewell

讓已在其他平台維護商品目錄的客戶免去重複建檔,直接以既有的 catalog 作為商品來源匯入自家系統。

查看詳情
RTB2024年2月

建置 RMN(零售媒體聯播網)出價支援,從 bid request 到 app 環境判定

Research Developer (Bidder Team) · Bridgewell

在競價服務新增 RMN endpoint 與完整競價流程,於 dspcore 實作 webview/app 環境判定,並建立專屬 smoke test;支援家樂福等零售通路的站內廣告投放。

為公司開啟零售媒體(RMN)產品線的端到端出價能力。
查看詳情
測試2024年5月

建立 出價服務的 smoke test CI job

Research Developer (Bidder Team) · Bridgewell

以真實的 Google request.json 在 CI 中打服務並比對 response 欄位,確保大規模重構時 happy path 不被破壞。

查看詳情
協定遷移2024年8月

遷移 Google 私有 RTB 協定至 OpenRTB 標準

Research Developer (Bidder Team) · Bridgewell

逐欄比對雙方規格文件完成欄位對齊;因為模型訓練需要回溯六個月資料,新舊協定雙軌並行運行了六個月才完成切換。

查看詳情
RTB2025年5月

協助設計並實作 以 PID controller 為核心的 Pacing 2.0 預算控速機制

Research Developer (Bidder Team) · Bridgewell

1.0 版的 pacing weight 震盪嚴重,導致預算過早燒完、OP 需人工盯盤,也難以滿足「整段期間平均帶量」這類需求(如直播廣告每時段平均曝光)。2.0 改用 PID controller,error function 取 (expected - actual) / (expected + actual),gains (Kp, Ki, Kd) = (0.1, 0.001, 0.01),並以分流實驗驗證成效。

166 個 adgroup 前後各四天比較,CPC 從 0.97 降到 0.81(-16.19%),pacing weight 震盪的 95 分位指標從 0.97 降到 0.08(約 -92%)
查看詳情
重構2025年11月

統整 七個媒體流量源的出價流程為單一 BiddingCoordinator 框架

Research Developer (Bidder Team) · Bridgewell

原本 Google、Dable、Taboola、ucfunnel、SPA、RMN、Prebid/DirectPath 各有一套出價實作,任何共用邏輯的修改都得散彈式改七個地方。抽出 AdTypeIdRepository 搭配各媒體的 AdTypeSelector(strategy pattern)、BidPriceCappingService、DemographicRepository,並收斂到統一入口 BiddingCoordinator。

一個月內以 6 個 MR、約 331 個檔案改動完成;框架建立後,接入新媒體的改動量從第一個的 125 個檔案降到 12–18 個
查看詳情
實驗2026年3月

完善 OpenRTB 出標功能並配合研究團隊做出價公式分流實驗

Research Developer (Bidder Team) · Bridgewell

補齊 deal filter 等 OpenRTB 欄位支援;配合研究團隊調整出價公式並上分流實驗;於 Searcher 端配合修改推薦公式。

查看詳情
升級2026年5月

升級 三個核心競價服務至 .NET 8 並容器化部署到 Linux

Research Developer (Bidder Team) · Bridgewell

BiddingService、ImpService、Searcher 陸續脱離 .NET Framework 4.x 改跑 .NET 8 on Linux;最後一塊把 Searcher 從 Windows 主機搬到 Docker + Ansible + systemd 部署管線,並調校 Server GC,rolling deploy 間隔從 5 分鐘縮到 90 秒。

Searcher 的機器數從 30 幾台 Windows 主機縮減到 4 台 Linux,同時省去 Windows 授權成本
查看詳情
機器學習2026年7月

建構 Columnar 特徵工程與 ONNX serving 管線,取代舊 pbb64 離線特徵路徑

Research Developer (Bidder Team) · Bridgewell

以向量化 columnar 特徵生成取代 pbb64 → pythonnet → C# 舊路徑,將前處理 tokenize 編入 ONNX 子圖、輸出單一 full.onnx,並以 FG parity gold 驗證訓練與線上特徵一致。serving 端經 shadow 驗證與 A/B 實驗後,2026-08-31 全量上線為預設 ranker,舊的 C# ranker 與 shadow 路徑同步退場。

訓練與 serving 共用同一份特徵定義,消除 training-serving skew 這一整類問題;線上 A/B 通過不劣性檢定(CTR 信賴區間下緣 −2.05%、購買型 CVR −8.21%,皆在門檻內)後全量上線。
查看詳情
RTB2026年8月

修正 Google hybrid request 讓 app 限定與 domain 限定 ad group 誤播的 targeting 漏洞

Research Developer (Bidder Team) · Bridgewell

FB、LINE 內建瀏覽器開啟的網頁會在同一個 request 同時帶 site 與 app object,而 targeting filter 以「domain 空才是 app、appId 空才是 web」的互斥假設判斷,hybrid request 因此兩個 filter 都被略過。追到根因是 2025 年改用 OpenRTB 時移除了上游的互斥保證;改以 object 是否存在判斷,套用到 6 個 exchange 的 filter chain。

廣告主設定的 app 白名單與 domain 白名單在 hybrid 流量上重新生效,避免廣告投到不符 targeting 的版位。
查看詳情
維運2026年8月

根治 RecSearcher 營業時間重啟時的啟動期 race 與 OOM

Research Developer (Bidder Team) · Bridgewell

推薦資料 provider 的 GetOrAdd 不是原子操作,啟動空窗期內 Kafka 行為事件與資料更新通知會同時觸發同一家大型商城資料的 deserialize(單次重啟最多 9 份),撞上記憶體上限。改為 single-flight,對同一個 key 的併發建構去重。

營業時間部署不再出現 OOM,原本靠運氣自癒的 process 級風險被消除。
查看詳情
重構2026年9月

合併 出價候選資料(campaign / ad group / creative)的多個讀取來源為單一 GraphQL 快照

Research Developer (Bidder Team) · Bridgewell

原本出價與曝光服務的 campaign、ad group、creative 欄位分散在 MySQL 與 GraphQL 的多個定時 reader,各有不同更新週期,同一個 entity 的欄位之間有讀取時間差,跨來源 join 失敗時 creative 會靜默消失。改為單一 GraphQL reader 依廣告主分批抓取完整快照,限播類別、cost control 預算、landing 設定與廣告牆都改讀這份共用快照;遷移期以 shadow 雙讀逐欄位比對一致後才切換。

移除 4 個重複 reader 與 request path 上的即時查詢,同一 entity 的所有欄位在同一時間點取得;補上靜默掉單的分因監控與廣告主對帳,於 43 台出價主機全量上線。
查看詳情
RTB2026年9月

規劃並實作 Exploration v5 探索出價機制的跨 repo 落地,計數表由 Redis 移入出價服務記憶體

Research Developer (Bidder Team) · Bridgewell

演算法由研究團隊設計(陌生度 σ 改為三維加權,讓已探索足夠的對象停止加價);我負責拆解落地需要的跨 repo 工作並逐一實作:bwproto 的 log 欄位與 per-imp 結構、bwlearner 的 feature generator 與 XXH64 key 指紋、exploration-updater 的 key 契約層,以及出價服務直接從 MinIO 載入計數快照並定時刷新。過程中也修正了 v4 的計數 bug:衰減格數無條件捨去,使 15 分鐘內再出現的 feature 永遠不衰減。

以 prod Redis 取樣 2,908 次狀態轉移證實 v4 衰減 bug 並修正(模擬下高頻 feature 30 天計數高估 1.89 倍);v5 serving 端進行中。
查看詳情
RTB2026年9月

支援 Google bid request 的 zstd 壓縮,修復該類請求全數無法出價

Research Developer (Bidder Team) · Bridgewell

Google 開始對部分 bid request 改用 zstd 壓縮,ASP.NET Core 內建的 request decompression 不認得 zstd 卻不報錯,壓縮後的 bytes 直接送進 protobuf decoder 而全數失敗。從錯誤 log 撈出 request body,以開頭 4 bytes 的 zstd magic number 證實根因;註冊 zstd decompression provider,並修正讀取 body 時把 Content-Length 當實際長度的問題。

在流量占比仍極低時就修好,避免隨 Google 擴大使用 zstd 而變成出價損失。
查看詳情