將 Postgres 資料轉換到 CSV 格式

postgres

時常用到 Postgres 轉換資料的功能,來即時協助 PM 了解目前使用者實際狀況,底下紀錄常用的指令。首先安裝 Postgres 環境,這邊其實就是用 Docker 方式來啟動一個全新的 Postgres DB。

  db:
    image: postgres:12
    restart: always
    volumes:
      - pg-data:/var/lib/postgresql/data
    logging:
      options:
        max-size: "100k"
        max-file: "3"
    environment:
      POSTGRES_USER: db
      POSTGRES_DB: db
      POSTGRES_PASSWORD: db

上面的 environment 參數可以自由調整,接著透過 docker-compose up -d 來啟動資料庫進行 App 串接。

Continue reading “將 Postgres 資料轉換到 CSV 格式”

為什麼要學 GraphQL?

身為網站工程師,您不能不知道什麼是 GraphQL,這是一個前端跟後端溝通的 API Query 語法,大幅改善了前後端的合作模式,這篇會跟大家介紹為什麼麼要學 GraphQL,以及整理出三大 GraphQL 優勢,讓大家了解跟傳統 RESTful API 有什麼不同。當然不是叫開發者捨棄 RESTful API,而是根據專案的不同,來決定不同的技術 Stack。像是服務跟服務之前您說要用 GraphQL,肯定被打槍,而是要用更輕量的 RESTful API 或 gRPC。好了,底下來說明三點 GraphQL 的優勢。

Continue reading “為什麼要學 GraphQL?”

Go 1.15 新增 Module cache 環境變數

golang logo

相信各位開發者在寫 Go 語言專案,現在肯定都是使用 Go module 了,而 Go Module 檔案預設寫在 /go/pkg/mod 目錄內,要串 CI/CD 流程時,由於不在專案路徑底下,所以每一個 Container 無法共用 /go/pkg/mod 路徑,造成重複下載第三方套件,其實跨容器的解決方式可以透過 DroneTemporary Volumes 方式解決,但是最終希望跑完編譯流程時,可以將最後的 mod 目錄打包留到下次的 CI/CD 部署流程使用,這時候如果可以改變 /go/pkg/mod 路徑,就可以動態調整目錄結構了。底下是針對 Drone 這套部署工具進行解說。

Continue reading “Go 1.15 新增 Module cache 環境變數”

Go 語言用 pprof 找出程式碼效能瓶頸

golang logo

Go 語言除了內建強大的測試工具 (go test) 之外,也提供了效能評估的工具 (go tool pprof),整個生態鏈非常完整,這也是我推薦大家使用 Go 語言的最大原因,這篇會介紹如何使用 pprof 來找出效能瓶頸的地方。假設開發者在寫任何邏輯功能時,發現跑出來的速度不是想像的這麼快,或者是在串接服務流程時,整個回覆時間特別久,這時候可以透過 benchmark 先找出原因。

go test -bench=. -benchtime=3s ./lexer/
Continue reading “Go 語言用 pprof 找出程式碼效能瓶頸”