Go関連のことを調べてみた2021年05月14日

Go関連のことを調べてみた2021年05月14日

本の新刊データをJSONで取得できるようにする。

# はじめに
 コミックやラノベの新刊データ取得で、JSON形式で無料で取得しようとするAPIが見つからなかったので、[ゲーム、アニメ、CD発売日一覧](https://calendar.gameiroiro.com/)というサイトからスクレイピングして、JSONで出力するようなプログラムを作る

# プログラム概要
[ゲーム、アニメ、CD発売日一覧](https://calendar.gameiroiro.com/)というサイトから、
新刊の発売日、名称、作者、画像が引っ張ってこれるので、これらのデータをJSONで出力するようにする
また、実行結果は標準出力するようにする。

# プログラム内容

“`go:calendarscriping.go
package main

import (
“fmt”
“strings”

“github.com/PuerkitoBio/goquery”
)

type BookList struct {
Type string `json:type`
Months string `json:months`
Days stri

元記事を表示

【祝!初投稿】LINEbotを利用し、GO言語で書いたプログラムから自分のLINEアカウントにメッセージ送信してみた

## はじめに
はじめまして。初めて投稿します。

何を投稿するか悩んだのですが、少し前からLINEbotを触っていて、色々試していたら
「LINEbotにHTTPリクエストを送ったら、オウム返しで自分のLINEアカウントにメッセージを送れる。」
のがちょっと面白かったので、この内容にしてみました。

## LINEbotについて
– LINEが提供するボットサービスです
– LINEアカウントをお持ちでしたら、[LINE Developers](https://developers.line.biz/ja/)から作成できますので、
興味ある方は色々試してみてください

## LINEbotを使用するための準備
1. LINEbot用のチャネルを作成(手順は[こちら](https://developers.line.biz/ja/docs/messaging-api/getting-started/))
2. LINEbot作成(手順は[こちら](https://developers.line.biz/ja/docs/messaging-api/building-bot/))

元記事を表示

fireworqのメトリクスを収集する方法について考えた

こんにちは。qudoを打倒している者です。

https://qiita.com/stk0724/items/269328262d5a1f0eaa28

以前上記の記事を書いたんですが、最近fireworqをサービスインしていくつかのqudoジョブをリプレイスしました。

動作は問題ないんですが、滞留してるジョブの数など、各種メトリクスがとれていない状態なので、今回はそれらのメトリクスをモニタリングする方法を考えます。

## mackerelを利用する

mackerelをモニタリングツールとして利用している場合、fireworq公式のmackerel-agent-pluginが存在するため、それを利用するだけで済みます。(fireworqははてな社が開発しているOSSです)

https://github.com/fireworq/mackerel-plugin-fireworq

## cloudwatch + telegrafを利用する

cloudwatchにメトリクスを保管する場合を考えます。

弊社はお金ないのでこちらです。

### メトリクスの収集パート

メトリク

元記事を表示

GO言語基礎②(defer/map/range/Interface/goroutine/channel)

# 前回の記事
[GO言語基礎①(package/function/for/if/switch/struct/point/arrays/slice)](https://qiita.com/kenRp01/items/68e5c59dfafbb777d8dd)
# 基礎文法

## Defer:遅延実行
`defer`へ渡した関数の実行を呼び出し元の関数の終わり(returnする)まで遅延させる。`Finally`のようなもの。
`defer`が複数ある場合、渡した順にスタックされていき、最後から順に実行されていきます。
defer内での処理でエラーが発生した場合、エラーハンドリングのreturnは無視されます。
対策は以下記事を参考にしてください。
[【Go】 deferに渡した関数内のエラーを呼び出し元に返す](https://qiita.com/vengavengavnega/items/fd0782c30574a983b8a5)

“` :宣言方法
defer <処理>
“`
下記の順で`defer`に処理が渡されていた場合

“`go
defer func() {

元記事を表示

VSCodeでProject Managerを使っている場合にgoplsが動かない現象を解消する

# _VSCode_ で _Project Manager_ を使っている場合に _gopls_ が動かない現象を解消する

動作環境
– macOS: Catalina
– VSCode: 1.56.1
– gopls: v0.6.11
– GO: go1.16.3 darwin/amd64

## _Project Manager_ を使って開発スペースを立ち上げるとエラーが発生する

“` text
Error loading workspace: gopls requires a module at the root of your workspace.
You can work with multiple modules by opening each one as a workspace folder.
Improvements to this workflow will be coming soon, and you can learn more here:
https://github.com/golang/tools/blob/master/gopls/doc/wo

元記事を表示

AWS Cognitoでユーザー情報をAWS Lambda(Golang)から取得する方法

# 目的
APIを叩いてきたユーザー名によって変えたいということがありました。
そこで、Cognitoでオーソライズを行っているLambda関数にて、API Gatewayの認証情報をLambda(Golang)の中で取得する方法を調べました。

# 結論

以下のコードでユーザー名を取得できます。

“`go
func handler(ctx context.Context, apiGWEvent events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {

ユーザー名取得
diaryGetter := apiGWEvent.RequestContext.Authorizer[“claims”].(map[string]interface{})[“cognito:username”].(string)

/// …略
}
“`

割と途中のコードとかが謎ですので、以下に解説を載せておきます。(これより単純に取得できる方法がありましたらご教授いただけると幸いです。)

# 解説

元記事を表示

備忘録 Goでginを使う時に、cssやjsのファイルが読み込めない問題の解決

# 書いた理由
go言語でginを使っていたら、htmlからjsが読み込めない問題が発生したので、忘れないようにメモっておきます。また、ginを使わない場合でも同様の操作が必要らしいです。
cssの読み込みも同様にやるので、省略します。

## ディレクトリについて

[github](https://github.com/suzakutakumi/gin-staticJS)に今回のコードはおいてあります。
`correct.go`が正常に動作するプログラムで、`incorrect.go`が正常に動作しないプログラムです。

“`
./
├── correct.go
├── incorrect.go
└── src
├── index.html
└── js
└── main.js
“`

## htmlとjs

ボタンを押すと、alertで`Pushed!!`と出るだけの簡単なプログラムです。

“`html:index.html


gin-js