Wednesday, April 20, 2022

[Golang] 一個簡單範例使用gopacket去解析LLDP封包內容

因為工作上需要查看主機上所收到任何的LLDP封包,故在網上搜尋了一下資料與範例程式碼,組成下列一個簡單範例。

本程式會找出所有在此本機上的Net Devices ( Interface ),並依序收集封包,一旦發現有LLDP則會列印相關資訊在console上。

Saturday, April 16, 2022

[CI/CD] 自建 DroneCI + Gitea + Docker Registry + Docker Registry Web 一次搞定

本篇將提供一個 Docker Compose YAML file 的範例,可產生 DroneCI + Gitea + Docker Registry + Docker Registry Web 的 CI/CD環境

Gitea 是蠻多公司的選擇,所以我選用它。同時,在這個講求效率的開發時代,必須要搭配一個 CI/CD 的平台。Drone CI 這是一套開源的持續整合框架,可以幫工程師節省非常多上版的時間,從測試、包版、image化到部屬全部一條龍服務,而且非常容易上手,易於維護,因此我們選用作為平台。

另外,Docker Registry 這就不用再多說了,而方便查詢Registry的Web可以提供快速與便利的介面來查看在Registry內的Docker Images。

先整理一下 Port Mapping List:

Saturday, April 9, 2022

[Parca]測試 Polar Signals 開源 Parca (基於eBPF 的profiler)

前陣子發現在Github上有個open-source projects: Parca (包含Server & Agent ),扒文了一下,Parca是Solar Signals的一個開源項目。它是持續分析存儲、查詢引擎和一個基於eBPF 的profiler。其目的在通過系統地測量代碼性能將可觀察性空間提升到一個新的水平,使每個人都能夠優化他們的代碼。

Parca 旨在將持續分析技術帶給所有人;其打包了許多開箱即用的功能,包括收集、存儲和提供可用於長期查詢的profiles 的能力— 包括CPU 分析,以確定CPU 執行一段特定代碼所需的時間。相關資源如下:

Tuesday, March 29, 2022

[libbpf] 為何要使用 libbpf? 什麼是libbpfgo?


在開始說清楚講明白什麼是libbpfgo之前,我們可以先看這一投影片介紹初學者使用Go開發eBPF程式指南: Beginner's Guide to eBPF programming with Go,此作者也提供 GitHub: https://github.com/lizrice/libbpfgo-beginners,可體驗一下用libbpfgo開發的小範例程式Basic eBPF examples in Golang using libbpfgo.


看過了簡單的小範例之後,接下來這篇文章主要是解釋什麼是vmlinux.h 以及為什麼在編寫 eBPF 程序時應該開始使用它: What is vmlinux.h and Why is It Important for Your eBPF Programs?

重點如下:

[Janus] 如何快速制定與使用Janus API Gateway


[前言]

當前端(Frontend) Web App 需要使用到多個API Servers時,最快的方式就是使用API Gateway 作為前端的進入點,透過URI Route的設定與對應後端的API & Server。

根據Janus's Github 上官方的描述, 它是一個輕量級的 API Gateway和 管理平台,可控制訪問 API 的人員、訪問時間以及訪問方式。Janus 還將記錄有關使用者如何與你的 API 交互以及何時出現問題的詳細分析。

官方文件: https://hellofresh.gitbooks.io/janus/content/

下面段落將說明如何快速制定與使用Janus API Gateway。

Wednesday, March 23, 2022

[GraphQL] 使用 Apollo Client + React 來建置 GraphQL 前端應用程式

[前言]

GraphQL系列文章

本篇內容將提供快速的指引,使用Golang Gin Framework來建置GraphQL的API  Server。


[Apollo Client Architecture]

Apollo Client 與 UI 框架無關 (可與 Angular.js、Vue.js、React 甚至原生 iOS 和 Android 應用程序一起使用)。

Tuesday, March 22, 2022

[GraphQL] 使用Golang Gin Framework來建置GraphQL的API Server

 [前言]

本篇內容將提供快速的指引,使用Golang Gin Framework來建置GraphQL的API  Server。


[使用Golang Gin Framework來建置GraphQL的API  Server]

GraphQL API Server主體上來說是參考下列文章的方式來建置:

第 1 天 - API 服務器(Go,GraphQL) - 第 1 部分

第 2 天 - API 服務器(Go,GraphQL) - 第 2 部分

Golang Gin Server網路上已經有很多資源,我們假設已經有的前提下,如何來建置GraphQL的API  Server。首先,先安裝所需的模組:

#在個人自己的Gin Server 的 project 內
$ go get github.com/99designs/gqlgen
$ go get github.com/gin-gonic/gin

我們需要準備下列檔案: 

Friday, March 18, 2022

[Golang] Go 1.16 中關於go get和go install的變動

 

[前言]

其實Go 1.16已經 Release 很久了,但最近發現關於 go get 的行為跟以前不一樣並且多了 go install 這個 tool,所以本篇記錄一下需要注意的地方。

[關於go get和go install的變動]

我目前Golang的版本如下: