Recent Posts

新團隊快速貢獻

前篇分工不設限前言自從開始與新團隊合作後, 產品也即將 GA release. GA 之後又會有新的不同的挑戰. 在新挑戰之前, 是時候紀錄一下這段時間發生的事情.挑戰產品本身由於架構改變加上優化, 整個 backend 幾乎全部改寫, 而且加上支援 HA. 有大量還沒經過 QA 驗證的程式 (全部改寫, 都只有...

新團隊快速貢獻

前篇分工不設限前言自從開始與新團隊合作後, 產品也即將 GA release. GA 之後又會有新的不同的挑戰. 在新挑戰之前, 是時候紀錄一下這段時間發生的事情.挑戰產品本身由於架構改變加上優化, 整個 backend 幾乎全部改寫, 而且加上支援 HA. 有大量還沒經過 QA 驗證的程式 (全部改寫, 都只有...

Dependency Inversion Principle 避免過度依賴外部

IntroductionDIP 應該很常見, 只是常常在談的時候會發現大家忘記了. 因此特別紀錄一下使用 DIP 實質上的好處.Assumption我們大多會希望 business logic code 可以乾淨穩定有乾淨穩定的 business logic code, 就可以寫穩定的 unit test cod...

Dependency Inversion Principle 避免過度依賴外部

簡介DIP 應該很常見, 只是常常在談的時候會發現大家忘記了. 因此特別紀錄一下使用 DIP 實質上的好處.假設我們大多會希望 business logic code 可以乾淨穩定有乾淨穩定的 business logic code, 就可以寫穩定的 unit test code如此未來商業邏輯有改變的時候, 如...

Spring Cloud Stream Introduction - 1

Goal 描述如何套用 spring cloud stream + Kafka 以及概念.適合只面對 Kafka, 不涵蓋進階議題 Example https://github.com/axxdeveloper/study-practice/tree/spring-cloud-stream Concepts ...

Spring Cloud Stream 入門 - 1

目標 描述如何套用 Spring Cloud Stream + Kafka 以及概念.適合只面對 Kafka, 不涵蓋進階議題 範例 https://github.com/axxdeveloper/study-practice/tree/spring-cloud-stream 概念 一個 applicatio...

分工不設限

  前言 去年一些巧合, 跟團隊幾個人接手一個案子, 這個案子原本算是服務客戶特定需求的 POC, 但由於客戶愈來愈依賴這個工具, 因此交到我們手上. PS. 在我加入之前, 已經有人辛苦耕耘了好一陣子. 不過也因緣際會離開這個案子. 一個案子要成功, 從來不是誰可以獨立勝任. 享受合作的當下, 同時...

分工不設限

  前言 去年一些巧合, 跟團隊幾個人接手一個案子, 這個案子原本算是服務客戶特定需求的 POC, 但由於客戶愈來愈依賴這個工具, 因此交到我們手上. PS. 在我加入之前, 已經有人辛苦耕耘了好一陣子. 不過也因緣際會離開這個案子. 一個案子要成功, 從來不是誰可以獨立勝任. 享受合作的當下, 同時...

應用 XOR 特性取出相字元或數字

XOR 的特性, 相同的值 XOR 會變成 0 0^0=01^0=10^1=11^1=0// codeint n = 0;for (int i = 0; i < 10000; i++) {    n ^= i;}for (int i = 0; i < 10000; i++) {&n...

Explain - LeetCode 525 Contiguous Array

題目: Given a binary array nums, return the maximum length of a contiguous subarray with an equal number of 0 and 1解法:當遇到 0 就 -1, 遇到 1 就 +1, 計算每個陣列位置的加總最重...

解題 - LeetCode 525 Contiguous Array

題目: 給定一個二元陣列 nums,回傳包含相同數量 0 和 1 的最長連續子陣列長度解法:當遇到 0 就 -1, 遇到 1 就 +1, 計算每個陣列位置的加總最重要的概念就是: 當遇到相同的加總數字, 表示中間經歷了相同的 1 & 0.因此解法就是:走過所有的陣列, 計算每個位子的 count...

PostgreSQL 版本 Schema 效能比較

需求 開發者持續發布新軟體,版本格式是 {major}.{minor}.{micro}.{build}當裝置詢問升級資訊時,我們需要找出最新的軟體版本但不只是最新的版本,我們可能還需要知道以下版本資訊,才能提供適合的建議是否有 3 個更新的軟體版本?有多少更新的軟體版本? 挑戰 資料庫用「自然排序」來排文字這兩...

Kafka - Pick a transaction.id

Intention: Why I need Kafka Transaction需求中收到 message 並處理之後, application 需要另外傳送訊息出去給多個 topic.不管遇到任何錯誤, 我都希望訊息就不要送出去.除此之外, 原本 consume 的訊息也不要收下來How it worksProd...

Kafka - 選擇 transaction.id

動機:為什麼我需要 Kafka Transaction需求中收到 message 並處理之後, application 需要另外傳送訊息出去給多個 topic.不管遇到任何錯誤, 我都希望訊息就不要送出去.除此之外, 原本 consume 的訊息也不要收下來運作方式Producer 用 transaction.i...

用 protobuf Any 來 parse byte array

第一次錄影片分享技術議題. Source code: https://github.com/axxdeveloper/study-practice/tree/gpb  主要其實就是之後可以用 Any.pack( gpbEntity ).toByteArray 傳送出去.接收端也適用 Any.p...