iT邦幫忙

golang相關文章
共有 908 則文章
鐵人賽 自我挑戰組 DAY 30
Concurrency in go 讀書心得 系列 第 30

技術 30.完賽心得

這一次鐵人賽終於順利結束了,在過去的三十天中,我們藉由concurrency in go這本書深入研究了Golang的併發編程,探討了併發的基本概念、Gorou...

鐵人賽 自我挑戰組 DAY 29
Concurrency in go 讀書心得 系列 第 29

技術 29.Healing unhealthy goroutines

在一些長時間運行的系統中,如守護進程(Daemon process),經常有一些常駐的子程序,名為goroutines。這些goroutines有時會因外部資源...

鐵人賽 SideProject30 DAY 28

技術 Day28 用Go動態組合Flex Message 02

昨天我們完成了組成一個Bubble需要的4個區塊,今天我們透過這4個區塊把Bubble組起來,然後再用Bubble把Carousel組合起來,就可以回傳給Dri...

鐵人賽 SideProject30 DAY 27

技術 Day27 用Go動態組合Flex Message 01

昨天我們依照JSON把Flex Message刻了出來,真心覺得應該可以有一個Generate Code的工具,把用Flex Message Simulator...

鐵人賽 SideProject30 DAY 26

技術 Day26 加上Flex Message Carousel

昨天我們完成了,從Linebot收到檔案,並且上傳到Google Drive上的指定資料夾。 但是目前指定資料夾的ID是寫死的,我們也不可能每次要指定資料夾都去...

鐵人賽 自我挑戰組 DAY 27
Concurrency in go 讀書心得 系列 第 27

技術 27.Rate limiting-1

如果你曾經使用過API來獲取服務,那麽你可能經受過與速率限制相抗衡。速率限制使得某種資源每次訪 問的次數受限。資源可以是任何東西:API連接,磁盤I/O,網絡包...

鐵人賽 自我挑戰組 DAY 23

技術 [Day 24] Mock DB for testing HTTP API in Go and achieve 100% coverage Part 3

Write unit test for Get Account API Code Flow: 透過 randomAccount() 函數建立一個隨機的測試...

鐵人賽 SideProject30 DAY 25

技術 D25 Drive Service - 上傳檔案02

昨天我們已經可以成功從LineBot上收到檔案並暫存下來,今天我們透過domainDrive.SaveContent()回傳的*os.File,把他傳入adap...

鐵人賽 自我挑戰組 DAY 26
Concurrency in go 讀書心得 系列 第 26

技術 26.Replicated request

對於大部分應用,儘可能快地響應請求是首要任務。例如,應用程序可能正在服務用戶的HTTP請求,或者檢索複製的數據塊。在這些情況下,你需要做出權衡:是將請求複製到多...

鐵人賽 自我挑戰組 DAY 25
Concurrency in go 讀書心得 系列 第 25

技術 25.Heartbeat

心跳(heartbeat)是併發進程向外界發出信號的一種方式。命名者從人體解剖學中受到啟發,使用心跳一詞表示被觀察 者的生命體征。心跳在Go語言出現前就已被廣泛...

鐵人賽 SideProject30 DAY 24

技術 Day24 Drive Service - 上傳檔案01

今天開始來處理上傳檔案到GoogleDrive的部分~ 首先要先能在LineBot上拿到使用者傳送的檔案,我們在Callback加上一個case,透過*line...

鐵人賽 SideProject30 DAY 23

技術 Day23 Drive Service - 撈出”我的雲端硬碟”&”與我共用”下的資料夾

我們之前實現過ListFiles(),會把所有雲端硬碟上的檔案列出來,我們也確定操作GoogleDrive這段沒有問題。但我們今天的需求是要把收到的檔案傳到Go...

鐵人賽 自我挑戰組 DAY 23

技術 [Day 23] Mock DB for testing HTTP API in Go and achieve 100% coverage Part 2

Generate mock DB 既然我們已經有了 db.Store interface,我們可以使用 gomock 生成 mock interface。...

鐵人賽 自我挑戰組 DAY 22

技術 [Day 22] Mock DB for testing HTTP API in Go and achieve 100% coverage Part 1

Why mock database? 當談到APIs 的測時,有些人可能選擇連接到真實的資料庫,而有些人則認為使用 mocking 較好,原因如下: 首先,...

鐵人賽 SideProject30 DAY 22

技術 Day22 繞過 Google OAuth 在 User Agent 上的使用限制

這幾天我們都是透過電腦版的Line來做測試,但是如果是使用手機版的話,會發現當我們點擊Google OAuth的URL要進行認證授權的時候,雖然前面的步驟都一切...

鐵人賽 自我挑戰組 DAY 30
Go in 3o 系列 第 30

技術 [Day30] Go in 30 - 系統與檔案 - 檔案讀取與寫入

一、 本篇提要 接下來會說明檔案的建立、和寫入,在此之前會需要先了解什麼是檔案權限。 檔案存取權限 建立與寫入檔案 os.OpenFile() 二、檔案存取...

鐵人賽 自我挑戰組 DAY 29
Go in 3o 系列 第 29

技術 [Day29] Go in 30 - 系統與檔案 - flag 與 signals

一、本篇題要 這個主題將了解系統與檔案,像是介紹多種讀寫純文字檔和CSV格式檔案的方式,以及檔案的存取權限。我們會實作一個命令列應用程式,可以接收各種 flag...

鐵人賽 自我挑戰組 DAY 21

技術 [Day 21] Load Config in Go with viper

Why file and environment variables ? 當開發和部署後端網頁應用時,我們通常需要為不同的環境使用不同的配置,例如開發、測試、...

鐵人賽 自我挑戰組 DAY 22
Concurrency in go 讀書心得 系列 第 22

技術 22.Context

在併發程式中,由於連接超時、使用者取消或系統故障,往往需要執行搶佔操作。過去,我們利用 done 通道在程式中取消所有阻塞的並發操作,儘管這方法有其效用,但確實...

鐵人賽 Modern Web DAY 23
起步Go!Let's Go! 系列 第 23

技術 [ Day 23 ] Go 模板引擎:動態生成 HTML 頁面的魔法

在昨天的練習中,當我們使用 GET 請求時,並成功得到網站中的資料,我們都用是終端機查看回傳的資訊,雖然一樣可以達到查看資料的目的,但好像缺少了什麼!!這就不得...

鐵人賽 SideProject30 DAY 21

技術 Day21 Drive Service - 取出OAuth Token操作Drive

今天一開始我們先來調整一下我們之前對Expiry宣告的類型,昨天仔細看發現oauth官方的Token(oauth2.Token)結構如下: type Token...

鐵人賽 SideProject30 DAY 20

技術 Day20 Login Service - OAuth Token存到Dynamodb

開始之前我們調整一下之前在adapter\google\oauth.go的OAuthLoginURL(),把原本寫死的第一個參數”state-token”改...

鐵人賽 自我挑戰組 DAY 28
Go in 3o 系列 第 28

技術 [Day28] Go in 30 - 處理JSON資料

一、本篇提要 本篇重點會著重於Go如何解析JSON,以及了解Go自有的 gob 二進位編碼功能。 解碼JSON為Go結構 將Go結構編碼為JSON 二、解碼...

鐵人賽 自我挑戰組 DAY 27
Go in 3o 系列 第 27

技術 [Day27] Go in 30 - 時間處理

一、本篇提要 本篇開始介紹Go中的time套件,時間處裡是Go程式的核心之一,time套件官方文件 建立時間資料 時間值的格式化 時間值的管理 時間值的比較與...

鐵人賽 Modern Web DAY 22
起步Go!Let's Go! 系列 第 22

技術 [ Day 22 ] GO 創建簡單的用戶端:踏上與伺服器對話的征途

在現代應用程式中,用戶端和伺服器之間的通信是不可或缺的一部分。Go 的強項之一是其在構建網路應用程序方面的表現。今天,我們將深入研究如何使用 Go 語言創建一個...

鐵人賽 自我挑戰組 DAY 26
Go in 3o 系列 第 26

技術 [Day26] Go in 30 - Debug - 單元測試(unit test)

一、本篇提要 最後要來看Go程式撰寫簡單的單元測試,並使用 go test 來替我們測試函式與套件。這次我們會沿用之前的shape程式範例,並稍作改寫。 二、撰...

鐵人賽 自我挑戰組 DAY 20

技術 [Day 20] Implement RESTful in GO using Gin Part 3

Implement get account API 在server.go 的NewServer中加入 getAccount 的router Path...

鐵人賽 SideProject30 DAY 19

技術 Day19 調整SSM+補用testify測試

昨天我們在server.go的地方會發現,要去調用SSM的地方,因為是一個一個參數去查,參數一多看起來就會很混亂,像下面這樣。 如果我們能一次性地去查詢,應該...

鐵人賽 自我挑戰組 DAY 21
Concurrency in go 讀書心得 系列 第 21

技術 20.Queue

我們在之前的章節列舉了Pipeline(管道)的各種優點,但有時候,盡管管道沒有準備好,我們的程序依然還是要幹活的,這種處理方式,被稱為“Queue”(隊列)。...

鐵人賽 自我挑戰組 DAY 20
Concurrency in go 讀書心得 系列 第 20

技術 20.The bridge-channel

在某些情況下,你可能會發現自己想要使用一系列通道的值: <-chan <-chan interface{} 這與將某個通道的數據切片合併到一個通道...