Go関連のことを調べてみた2022年10月13日

Go関連のことを調べてみた2022年10月13日
目次

目指せ!第14回UEC杯コンピューター囲碁大会<本編> Step [O12o_1o0] 盤定義(盤面走査)

目指せ!第14回UEC杯コンピューター囲碁大会<本編> Step [O12o_1o0] 盤定義(盤面走査)

# 連載の目次

? [目指せ!第14回UEC杯コンピューター囲碁大会<本編>](https://qiita.com/muzudho1/items/744f6051954525878b84)

# Step [O12o_1o0] 盤定義(盤面走査)

## Step [O12o0] ファイル作成 – board_area.go

? 以下のファイルを新規作成してほしい

“`plaintext
? kifuwarabe-uec14
├── ? kernel
? │ ├── ? board_area.go
│ ├── ? board.go
│ ├── ? go.mod
│ ├── ? kernel.go
│ ├── ? logger.go
│ └── ? stone.go
├── ? .gitignore
├── ? engine_config.go
├── ? engine.toml
├── ? go.mod

元記事を表示

目指せ!第14回UEC杯コンピューター囲碁大会<本編> Step [O13o_1o0] 盤表示

目指せ!第14回UEC杯コンピューター囲碁大会<本編> Step [O13o_1o0] 盤表示

# 連載の目次

? [目指せ!第14回UEC杯コンピューター囲碁大会<本編>](https://qiita.com/muzudho1/items/744f6051954525878b84)

# Step [O13o_1o0] 盤表示 – board コマンド

## Step [O13o0] コマンド実装 – kernel.go ファイル

? 以下の既存ファイルを編集してほしい

“`plaintext
? kifuwarabe-uec14
├── ? kernel
│ ├── ? board_area.go
│ ├── ? board.go
│ ├── ? go.mod
? │ ├── ? kernel.go
│ ├── ? logger.go
│ └── ? stone.go
├── ? .gitignore
├── ? engine_config.go
├── ? engine.toml
├── ? go.mo

元記事を表示

目指せ!第14回UEC杯コンピューター囲碁大会<本編> Step [O15o__10o0] 盤サイズの変更

目指せ!第14回UEC杯コンピューター囲碁大会<本編> Step [O15o__10o0] 盤サイズの変更

# 連載の目次

? [目指せ!第14回UEC杯コンピューター囲碁大会<本編>](https://qiita.com/muzudho1/items/744f6051954525878b84)

# Step [O15o__10o0] 盤サイズの変更 – resize コマンド

## Step [O15o__11o0] コマンド実装 – kernel.go ファイル

? 以下の既存ファイルを編集してほしい

“`plaintext
? kifuwarabe-uec14
├── ? kernel
│ ├── ? board_area.go
│ ├── ? board.go
│ ├── ? go.mod
? │ ├── ? kernel.go
│ ├── ? logger.go
│ └── ? stone.go
├── ? .gitignore
├── ? engine_config.go
├── ? engine.to

元記事を表示

目指せ!第14回UEC杯コンピューター囲碁大会<本編> Step [O15o__14o_1o0] データファイル作成

目指せ!第14回UEC杯コンピューター囲碁大会<本編> Step [O15o__14o_1o0] データファイル作成

# 連載の目次

? [目指せ!第14回UEC杯コンピューター囲碁大会<本編>](https://qiita.com/muzudho1/items/744f6051954525878b84)

# Step [O15o__14o_1o0] データファイル作成 – data/board1.txt ファイル

あとで使うファイルを先に作成する

? 以下のファイルを新規作成してほしい

“`plaintext
? kifuwarabe-uec14
├── ? data
? │ └── ? board1.txt
├── ? kernel
│ ├── ? board_area.go
│ ├── ? board_coord.go
│ ├── ? board_set.go
│ ├── ? board.go
│ ├── ? go.mod
│ ├── ? go.sum
│ ├── ? kernel.go
│ ├── ? lo

元記事を表示

目指せ!第14回UEC杯コンピューター囲碁大会<本編> Step [O15o__14o0] 初期盤面を設定する

目指せ!第14回UEC杯コンピューター囲碁大会<本編> Step [O15o__14o0] 初期盤面を設定する

# 連載の目次

? [目指せ!第14回UEC杯コンピューター囲碁大会<本編>](https://qiita.com/muzudho1/items/744f6051954525878b84)

# Step [O15o__14o0] 初期盤面を設定する – board_set コマンド

## Step [O15o__14o1o0] ファイル作成 – board_set.go ファイル

? 以下のファイルを新規作成してほしい

“`plaintext
? kifuwarabe-uec14
├── ? kernel
│ ├── ? board_area.go
│ ├── ? board_coord.go
? │ ├── ? board_set.go
│ ├── ? board.go
│ ├── ? go.mod
│ ├── ? go.sum
│ ├── ? kernel.go
│ ├── ? logger.go
│ └─

元記事を表示

目指せ!第14回UEC杯コンピューター囲碁大会<本編> Step [O15o_1o0] 座標の定義

目指せ!第14回UEC杯コンピューター囲碁大会<本編> Step [O15o_1o0] 座標の定義

# 連載の目次

? [目指せ!第14回UEC杯コンピューター囲碁大会<本編>](https://qiita.com/muzudho1/items/744f6051954525878b84)

# Step [O15o_1o0] 座標の定義

## ~~Step [O15o0]~~

Moved to `[O12o__10o1o0]`

## Step [O16o0] ファイル作成 – board_coord.go ファイル

? 以下の既存ファイルを新規作成してほしい

“`plaintext
? kifuwarabe-uec14
├── ? kernel
? │ ├── ? board_coord.go
│ ├── ? board_area.go
│ ├── ? board.go
│ ├── ? go.mod
│ ├── ? kernel.go
│ ├── ? logger.go
│ └── ? stone.go
├── ?

元記事を表示

目指せ!第14回UEC杯コンピューター囲碁大会<本編> Step [O11o_4o0] 石の色定義

目指せ!第14回UEC杯コンピューター囲碁大会<本編> Step [O11o_4o0] 石の色定義

# 連載の目次

? [目指せ!第14回UEC杯コンピューター囲碁大会<本編>](https://qiita.com/muzudho1/items/744f6051954525878b84)

# Step [O11o_4o0] 石の色定義

`石` を定義していないが、先に `石の色` を定義する

石の色の組み合わせを定義する。
石の色の組み合わせは以下の4通りある。これらの集合を `Color` と名付けることにする

* `Color_None` – 隣接する連は1つもない
* `Color_Black` – 黒石の連とだけ隣接する
* `Color_White` – 白石の連とだけ隣接する
* `Color_Mixed` – 黒石と白石の連の両方に隣接する

## Step [O11o_4o1o0] ファイル作成 – color.go

? 以下のファイルを新規作成してほしい

“`plaintext
? kifuwarabe-uec14
├─

元記事を表示

目指せ!第14回UEC杯コンピューター囲碁大会<本編> Step [O11o_4o2o0] 連の定義

目指せ!第14回UEC杯コンピューター囲碁大会<本編> Step [O11o_4o2o0] 連の定義

# 連載の目次

? [目指せ!第14回UEC杯コンピューター囲碁大会<本編>](https://qiita.com/muzudho1/items/744f6051954525878b84)

# Step [O11o_4o2o0] 連の定義

`石` を定義していないが、先に `連` (れん)を定義する。
`連` とは何かの説明は、ここでは省く

### Step [O11o_4o2o1o0] ファイル作成 – ren.go

? 以下のファイルを新規作成してほしい

“`plaintext
? kifuwarabe-uec14
├── ? kernel
│ ├── ? color.mod
│ ├── ? go.mod
│ ├── ? kernel.go
│ ├── ? logger.go
? │ └── ? ren.go
├── ? .gitignore
├── ? engine_config.go
├── ? engin

元記事を表示

目指せ!第14回UEC杯コンピューター囲碁大会<本編> Step [O11o_5o0] 石定義

目指せ!第14回UEC杯コンピューター囲碁大会<本編> Step [O11o_5o0] 石定義

# 連載の目次

? [目指せ!第14回UEC杯コンピューター囲碁大会<本編>](https://qiita.com/muzudho1/items/744f6051954525878b84)

# Step [O11o_5o0] 石定義

## Step [O11o0] ファイル作成 – stone.go ファイル

? 以下のファイルを新規作成してほしい

“`plaintext
? kifuwarabe-uec14
├── ? kernel
│ ├── ? go.mod
│ ├── ? kernel.go
│ ├── ? logger.go
? │ └── ? stone.go
├── ? .gitignore
├── ? engine_config.go
├── ? engine.toml
├── ? go.mod
├── ? go.work
└── ? main.go
“`

“`go
// BOF [O11o0

元記事を表示

目指せ!第14回UEC杯コンピューター囲碁大会<本編> Step [O12o__10o0] 点定義、またはその盤座標符号定義

目指せ!第14回UEC杯コンピューター囲碁大会<本編> Step [O12o__10o0] 点定義、またはその盤座標符号定義

# 連載の目次

? [目指せ!第14回UEC杯コンピューター囲碁大会<本編>](https://qiita.com/muzudho1/items/744f6051954525878b84)

# Step [O12o__10o0] 点定義、またはその盤座標符号定義

盤を作る前に、これから盤座標符号を定義する

## Step [O12o__10o1o0] ファイル作成 – point.go ファイル

? 以下の既存ファイルを新規作成してほしい

“`plaintext
? kifuwarabe-uec14
├── ? kernel
│ ├── ? go.mod
│ ├── ? kernel.go
│ ├── ? logger.go
? │ ├── ? point.go
│ └── ? stone.go
├── ? .gitignore
├── ? engine_config.go
├── ? eng

元記事を表示

目指せ!第14回UEC杯コンピューター囲碁大会<本編> Step [O11o_3o_10o0] ゲームルール作成

目指せ!第14回UEC杯コンピューター囲碁大会<本編> Step [O11o_3o_10o0] ゲームルール作成

# 連載の目次

? [目指せ!第14回UEC杯コンピューター囲碁大会<本編>](https://qiita.com/muzudho1/items/744f6051954525878b84)

# Step [O11o_3o_10o0] ゲームルール作成

あとで使うファイルを先に作成する

## Step [O11o_3o_10o1o0] ファイル作成 – kernel/o11o_3o_10o0_game_rule.go ファイル

? 以下のファイルを新規作成してほしい

“`plaintext
? kifuwarabe-uec14
└── ? kernel
? └── ? o11o_3o_10o0_game_rule.go
“`

“`go
// BOF [O11o_3o_10o1o0]

package kernel

// KomiFloat – コミ。 6.5 といった数字を入れるだけ。実行速度優先で 64bitに
type K

元記事を表示

BaggageをREST/gRPC/SQSで伝播できるようにした話

## はじめに
[Kyash](https://www.kyash.co/)でサーバサイドのエンジニアをしているhirobeです。

Kyashでは30ほどのマイクロサービスを運用しており、マイクロサービス間ではREST/gRPCでの同期通信やSQSを介した非同期通信をしています。

マイクロサービスを運用していると[Context Propagation](https://opentelemetry.io/docs/concepts/signals/traces/#context-propagation)という単語を聞く機会があると思います。

Context Propagationとは、マイクロサービスをまたがって情報を紐付けすることを可能にする仕組みを指します。[^1]

Context Propagationによって実現できることとしてまず挙げるべきは[Tracing](https://opentelemetry.io/docs/concepts/observability-primer/#distributed-traces)でしょう。
Datadog、New Relicなど

元記事を表示

docker compose 初心者によるハンズオン形式備忘録

## この記事について

シンプルな構成のコンテナネットワークを作りながら学ぶ`docker compose`のハンズオンです。

現場で自チームが担当している複数のマイクロサービス(MS)が他のMSに依存していて、手元で気軽に業務シナリオをテスト出来ないのはよくある状況だと思います。
そこで、複数コンテナをポートフォワードで他のMSに接続しつつ手元で動作させる`docker-compose.yml`を用意しよう、と言う動機で調べたことをハンズオン形式でまとめました。

以下のような人(つまり自分)が対象です

– docker を触ったことがある
– `docker compose`の存在は知っている
– Dockerfile, docker-compose.yml を書く度に一日中ググってる
– dockerのネットワークについて何も知らない
– docker関連はリファレンスを読んでもイマイチ頭に入らない
– 手元にgolangが入っている (サーバのモックをGoで書くため。他言語でも構わない)

## そもそも Docker とは?

勉強したのでせっかくなので備忘

元記事を表示

【Terraform】VPCエンドポイントの設定で service_name が取得できなかった場合、service から組み立てられる件

# はじめに

こちらのモジュールをつかって、VPCエンドポイントを作成する際、`service_name`を渡さなくても、自動で設定されます

https://github.com/terraform-aws-modules/terraform-aws-vpc/tree/master/modules/vpc-endpoints

“`tf
module “endpoints” {
source = “terraform-aws-modules/vpc/aws//modules/vpc-endpoints”

vpc_id = “vpc-12345678”
security_group_ids = [“sg-12345678”]

endpoints = {
s3 = {
# interface endpoint
service = “s3”
tags = { Name = “s3-vpc-endpoint” }
},
}

tag

元記事を表示

goで画像の色調変換の処理を行う

# はじめに

こんにちは、icemint0828です。
今回は自作パッケージの紹介も兼ねて、goでの画像の色調変換の処理の方法を紹介します。

## 動作環境
go 1.18.3

## 使用パッケージ

* icemint0828/imgedit
画像の色調変換の処理に使用しています。
画像ファイルの拡張子の変換にも使用しています。

https://github.com/icemint0828/imgedit

## インストール

“`shell
$ go get github.com/icemint0828/imgedit@v1.6.0
“`

# 画像の色調変換の処理

“`main.go
package main

import (
“github.com/icemint0828/imgedit”
)

func main() {
// FileConverter
fc, _, err := imgedit.NewFileConverter(“srcImage.png”)
if err != nil {
panic(err)
}
/

元記事を表示

【Go】リリース直後の自作モジュールをgo getしてくれない問題について

# 経緯
先日Goで開発を行なっていた所、
自作したモジュールのプログラムを修正して更新しようとしました。

しかし、
最新のコミットのモジュールを**go get**しようとしても、
一向に**go.mod**のバージョンが書き変わりません。

`go env GOPATH`
で本体の場所を確認。

コードを確認

やっぱりプログラム変わっていない。。

# 試した事
`go clean -modcache`
でモジュールをクリア

対象のモジュールを**go get**し直し

修正前のモジュールを取得してきているようで、
変化なし。。

`@latest`を付けてもダメ❌
`@HEAD`でもダメ❌
`go get -u`でもダメ❌
`go install`でもダメ❌
で暗礁に乗り上げてしまっていました。

# 原因
調べていると、
proxyがモジュールの新規リリースを認識していない事が原因だと判明。

※明確な公式のソースは未確認です。
※個人ブログのtipsにより確認しました。
(記事下にリンクあり)

# 解決する為にやった事
対象のモジュールの最新のバージョンを確

元記事を表示

[Go] 構造体の変換と比較

Goの構造体間で変換できる条件と比較できる条件について書きます。

## 構造体の変換について

Goの構造体の変換はフィールドの名・型・順番・数が一致していることが前提で変換することができます。例えば以下の様に, AとBでは構造体間の変換が可能です。

“`go
package main

import “fmt”

type A struct {
aa int
bb int
}

type B struct {
aa int
bb int
}

func main() {
a := A{
aa: 1,
bb: 2,
}
var b B
b = B(a) // 変換可能
fmt.Println(b) //=> {1 2}
}
“`

逆に以下の様に、フィールド名が異なる・フィールドの型が異なる・フィールドの順番が異なる・フィールドの数が異なる、等の状態だと変換することができないです。

“`go
package main

type A struct {
aa int
bb int
}

type DifferentFieldName struct

元記事を表示

DockerでGoのAPIサーバーを立てる

# はじめに
DockerでGoのAPIサーバーを立てるDockerFileを作成しました。
調べたこと、DockerFileについて調べたことをまとめます。

[入門Docker 学習メモ](https://qiita.com/bear05/items/302de545018948b5c9c7)
後の実践

# 基礎知識の補足
### ビルドコンテキスト(build context)
>docker buildコマンドを実行したときの、カレントなワーキングディレクトリのこと

[Dockerfile 記述のベストプラクティス](https://matsuand.github.io/docs.docker.jp.onthefly/develop/develop-images/dockerfile_best-practices/)

### Dockerデーモン
Docker Engineの一部。
Docker EngineはDocker CLI、Docker Engine API、 Dockerデーモンで構成されている。
イメージのビルドやコンテナの起動を行ってくれるもの。
> Doc

元記事を表示

Go言語を始めたい方へ ~ Hello World から ゴルーチン まで ~

![gopher_fiveyears.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2173896/d6a4258e-a9cb-91f2-b29d-04617034515b.jpeg)

## 概要
本記事は、Go言語を始めたい方に対して、Go言語開発者として抑えておきたい『 1〜10 +α 』をまとめたものである。
初心者はもちろん、中級者の方の基本振り返り用としても活用して頂けることを期待している。

## How to Go言語
### HelloWorld
https://qiita.com/GL-Kageyama/items/8b012d078e484100ec85

### スライス
https://qiita.com/GL-Kageyama/items/46cd77f71ef6b03e7816

### マップ
https://qiita.com/GL-Kageyama/items/f753e3b807d1894e88a4

### 構造体
https://qiita.com/GL-Kag

元記事を表示

Oracleを使うGoアプリのコンテナ化メモ(最終回)

https://qiita.com/yuuman/items/9f988a9cf4b6dcf4a969

続きます

# 6. mattn/go-oci8 ⇒ sijms/go-ora への変更
結局`mattn/go-oci8`がOracle提供のOracle Instant Clientに依存していることがすべの原因なので、`mattn/go-oci8`からOracle Instant Clientに依存していないGoのみで実装した`sijms/go-ora`に変更することにします。

https://github.com/sijms/go-ora

書き直したコードは下記となります。

“`main.go
package main

import (
“database/sql”
“log”

_ “github.com/sijms/go-ora/v2”
)

var (
VERSION = “default”
REVISION = “dev”
)

func main() {

log.Printf(“Version:%s, Revision:%s”, VER

元記事を表示

OTHERカテゴリの最新記事