- 1. 前提条件
- 2. 対応まとめ
- 2.1. GitHubの設定ファイルにプロキシ設定を追加する
- 2.2. 緯度経度の情報でポリゴン生成し、GeoJsonに変換してみよう! (Go言語)
- 2.3. ?yawacom – ?どんな値がデータベースに入るのか
- 2.4. Go言語でMariaDBにinsertするとUTCで挿入される
- 2.5. Go言語 未知への冒険①
- 2.6. Gin の使い方
- 2.7. ?GoとSwiftで簡単なアプリを作る
- 2.8. 【Go】コネクションの読み取りにおけるio.Copyの注意点
- 2.9. WindowsにGolangをインストールする
- 2.10. Go: MQTT の pub/sub
- 2.11. [Go] GET リクエスト & レスポンスの取り扱い方
- 2.12. Go初心者のgqlgen事始め
- 2.13. AtCoder Beginner Contest 189のメモ
- 2.14. GolangでGoogle Calender APIを使って日本の祝日情報を取得する
- 2.15. go言語学習雑記2
- 2.16. AWS Translateを使ってGo言語で翻訳するサンプル
- 2.17. go module のバージョニング
- 2.18. Gormの1.9と1.20で失敗したお話
【自己学習用】はじめてのGo3
# type
Goではtypeを用いて既存の型を拡張した独自の型を定義できる。
呼び出す際に,型が適合していないとコンパイルエラー。“`
type ID int
type Priority intfunc ProcessTask(id ID, priority Priority) {
}var id ID = 3
var priority Priority = 5
ProcessTask(priority, id) // コンパイルエラー
“`# 構造体(struct)
GOの構造体はメソッドを持つことができ,RubyやJavaでのクラスに近い。
構造体もtypeを用いて宣言し,構造体名のあとにそのフィールドを記述する。
各フィールドの可視性は名前で決まり,大文字で始まる場合はパブリック,小文字はプライベート。“`
type Task struct {
ID int // public
Detail string // public
done bool // private
}func main() {
Redis の WebAPI (Gin)
こちらで定めた仕様を満たすサーバーサイドのプログラムです。
[Redis の WebAPI を作成](https://qiita.com/ekzemplaro/items/1746b31beef382023f2d)次のプログラムを改造しました。
[Gin の使い方](https://qiita.com/ekzemplaro/items/4285f95535b616fd6b28)“`go:redis_api.go
// —————————————————————
//
// redis_api.go
//
// Jan/28/2021
// —————————————————————
package mainimport “github.com/gin-gonic/gin”
import “net/http”
import (
“os”
“fmt”
“net”
“strings”
“enco
プロキシが影響してGoの環境構築で発生するエラーの対処
プロキシを経由している自社ネットワークで使用している開発マシンにて、VSCodeで実行できる以下コマンドでGoの開発環境を構築しようとした。
“`
Go: Install/Update Tools
“`ところが以下のようなメッセージが出てインストールが失敗してしまうという状況です。
>A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.いろいろ調べたので、共有します。
前提条件
VSCode、Gitはインストール済み
対応まとめ
GitHubの設定ファイルにプロキシ設定を追加する
先にこれを実行しましたが、事象は解消されませんでした。
“`
git config –global http.proxy
緯度経度の情報でポリゴン生成し、GeoJsonに変換してみよう! (Go言語)
# はじめに
この記事では、特定の4箇所の緯度経度からポリゴンを生成し、GeoJsonを作成する方法をまとめたものです。
また、使用言語はGoになります。# GeoJsonとは?
GeoJSONとは、JSONを基としたGISデータを記述するためのフォーマットです。
Google mapやOpen street mapなどの地図サービスも対応しているため、読み込ませるだけで、エリアを可視化できたり、ポイントの表示が可能となります。[参考: GIS実習オープン教材](https://gis-oer.github.io/gitbook/book/materials/web_gis/GeoJSON/GeoJSON.html)
# 実装
## orbライブラリ
今回はGoで実装を行なっていったのですが、緯度経度の情報からポリゴンを作成し、GeoJson形式にしてくれるライブラリがあります。
それが[orbライブラリ](https://github.com/paulmach/orb)です。
このライブラリ、[Strava](https://www.strava.com/?hl=ja-j
?yawacom – ?どんな値がデータベースに入るのか
2021/01/27現在編集中
# どんな値がデータベースに入るのか
アプリ内でどんな値が必要なのか,その値はどんな状態であるべきなのかをmiroに書き出しました.
![スクリーンショット 2021-01-27 14.57.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149433/fdcb562c-6bba-e0b6-7b1f-fde2c834c0ae.png)テーブルは
* ユーザ情報の格納:userテーブル
* やわらかさの格納:yawarakasaテーブル
* アクセストークンの格納:access tokenテーブルの3つを用意します.
access tokenはログイン状態の保持のために作成しています.# 準備
まずログインしてからデータベースを作ります.“`
$ mysql -uroot # rootでログイン
“`“`sql
mysql> create database yawarakasa;
“`これでyawarakasaという名前のデータ
Go言語でMariaDBにinsertするとUTCで挿入される
# 結論
Go言語でgorpを使いMariaDBに日付型のデータをinsertしたところ、JSTのはずがUTCだったので調査したときのメモ。
結局、DB接続時にロケーション未指定というドキュメントをちゃんと読んでないのが原因…
https://github.com/go-sql-driver/mysql“`go
db, err := sql.Open(“mysql”, “user:password@tcp(localhost:3306)/db?parseTime=true&loc=Asia%2FTokyo”)
“`# 原因が分からなくて調査した際の各種ログ
## OS
“`
# strings /etc/localtime
TZif2
TZif2
JST-9
“`## Go
### gorpログ
“`
2021/01/26 23:11:42 [SQL] begin; [] (3.78465ms)
2021/01/26 23:11:42 [SQL] insert into `t1` (`target_date`) values (?); [1:2021
Go言語 未知への冒険①
Udemyで[現役シリコンバレーエンジニアが教えるGo入門 + 応用でビットコインのシストレFintechアプリの開発](https://www.udemy.com/course/go-fintech/learn/lecture/12097422)を受講している。ちゃんと勉強したことのある言語がPythonだけなので、コンパイル型の言語には少々戸惑うところもある。講義では入門のところからちゃんと教えてくれるので、その内容をもとにGo言語への旅を始めようと思う。
# Hello, 世界
Go言語の旅だとかふざけたことを言っているかのようだが、「[A Tour of Go](https://tour.golang.org/list)」というちゃんとしたチュートリアルサイトが存在する。
![A_Tour_of_Go.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/854965/168439dc-ae81-4906-334c-ee1f7ae84ae0.png)
早速、[Welcome!](https://
Gin の使い方
参考ページ
[Quick start](https://github.com/gin-gonic/gin#quick-start)インストール
“`bash
mkdir gin_work && cd gin_work
go mod init gin_work
go get -u github.com/gin-gonic/gin
“`サンプル
“`go:example.go
package mainimport “github.com/gin-gonic/gin”
func main() {
r := gin.Default()
r.GET(“/ping”, func(c *gin.Context) {
c.JSON(200, gin.H{
“message”: “pong”,
})
})
r.Run()
}
“`サーバーの実行
“`bash
go run example.go
“`http://localhost:8080/ping にアクセスする
“`bash
curl http://localhost:8080/pi
?GoとSwiftで簡単なアプリを作る
※ 2021/01/26現在:編集中です!
## おはようございます?
バックエンドとフロントエンド両方の勉強を兼ねてiOSアプリを作ります.## なにをつくるか
開脚のやわらかさを競うiOSアプリをつくります.
やわらかさを競うということでYawarakasa Competitionからの**yawacom**と名付けました.変えるかも?
なんでやわらかさ?というと,バレエを昔少しだけ習ってたにも関わらずとっても体が硬いためストレッチしようかな…と思ったからです.
今後,関連するQiitaの記事にはバレエ?のマークを付けていきます.### 技術選定
* Swift
* Go
* MySQL### なぜGoか
「**軽量・高速・シンプル**」と謳われ,流行ってたからです.
▽
【Go】コネクションの読み取りにおけるio.Copyの注意点
connectionの読み込みにio.Copyでハマってしまったので
どなたかの役に立てれば。。## io.Copy
`io.Copy` の挙動は[こちら](https://golang.org/pkg/io/#Copy)によると>Copy copies from src to dst until either EOF is reached on src or an error occurs. It returns the number of bytes copied and the first error encountered while copying, if any.
となっており、 `EOF` もしくは `エラー` が返るまでcopyしてくれる。
## ConnectionにおけるEOF
読み込みを考えると、
connectionがcloseし切断された時に `io.EOF` が返ってくる。そのため、io.Copyで読み込む際は送信側でconnectionをClose()している必要がある。
WindowsにGolangをインストールする
公式ページのDocumentsにある、Getting started の Installing Go に沿ってインストールを進めた備忘録。
https://golang.org/
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/483164/a5bdf11d-436f-1a51-3fda-f03cc6b4fe9a.png)
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/483164/300bbb2a-a9ee-67cd-ab3a-14f2fff281e4.png)
ここ↑##環境
Windwos 10 Home 64bit
go 1.15.7
##1. Go downdload.
Windows 10 の64bitなので、**Dowonload Go for Windows** からそのままダウンロードする。
![3.PNG](https://qiita-image-store.s3.ap-north
Go: MQTT の pub/sub
次のページを参考にしました。
[GoでMQTTのpub/subを試す](https://tutuz-tech.hatenablog.com/entry/2019/12/29/194537)
ブローカーは broker.emqx.io です。ライブラリーのインストール
“`bash
go get github.com/eclipse/paho.mqtt.golang
“`“`go:subscribe.go
// —————————————————————
//
// subscribe.go
//
// Jan/25/2021
// —————————————————————
package mainimport (
“fmt”
“log”
“os”
“os/signal”mqtt “github.com/eclipse/paho.mqtt.golang”
)// ——
[Go] GET リクエスト & レスポンスの取り扱い方
サーバー側の実装例をよくみかけますがk、GO ではクライアント側の実装もできます。
## 基本的な GET リクエスト
まずは、基本から。
“`golang
package mainimport (
“fmt”
“io/ioutil”
“log”
“net/http”
)func main() {
url := “http://localhost:8080”
resp, err := http.Get(url)
if err != nil {
log.Fatalln(“Failed to get response”)
}content, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatalln(“Failed to read content”)
}
defer resp.Body.Close()fmt.Println(string(content))
}
“`netcat を使ってリクエスト内容を確認 (= `nc -l 8080`)。
“`shell
G
Go初心者のgqlgen事始め
# はじめに
起業している友人が猫の手も借りたいと言うことで、GraphQL関連のお仕事を手伝うことになりました。当時は**golangもGraphQLも全くの初心者**で、猫の手より役立たずだったことを記憶しています。私のスキルが足らなかったのももちろんですが、慣れているPythonやJSなどにくらべて、初心者に優しい記事が少なかったのも一因であるように感じました。
参照しやすい情報が少ないと言うのも、GoやGraphQLの参入障壁が高い理由のひとつかもしれませんね。ということで、私のような初心者でも**すぐにGo + GraphQLに取り組める**ように、
備忘録程度ですが、gqlgenについて書き記しておこうと思います。※ Goの基本的な文法や、GraphQLの概念については、ある程度わかっている前提で話が進みます。もし、これらのことに自信がなかったら、以下の記事を参考にしながら読むと幸せになれるかもしれません。
– [Go言語:文法基礎まとめ](https://qiita.com/HiromuMasuda0228/items/65b9a593275f769f6b6
AtCoder Beginner Contest 189のメモ
# 前置き
Atcoderをやってみたので、自分用のメモです。
あとから加筆・修正する予定です。# 問題
https://atcoder.jp/contests/abc189
# A
“`Q_A.go
package mainimport (
“fmt”
“strings”
)func main() {
var C string
fmt.Scanf(“%s”, &C)
s := strings.Split(C, “”)var flag bool = true
var c string = s[0]
for i:=1; i<3; i++{ if c != s[i]{ flag = false } } if flag{ fmt.Printf("Won\n") } else { fmt.Printf("Lost\n") } } ``` # B ```Q_B.go package mai
GolangでGoogle Calender APIを使って日本の祝日情報を取得する
祝日の一覧が欲しいなと思った時にGoogle Calendarから取得する方法を調べたので
まとめておきたいと思います。
GolangでGoogle Calender APIを使って取得します。## はじめに
[google calender api ドキュメント](https://developers.google.com/calendar/quickstart/go?hl=ja)
にgolangで利用する時のクイックスタートが乗っているので、参考に進めていきます。#### 1. 作業ディレクトリの作成
“`
$ mkdir google_calender
$ cd google_calender/
“`#### 2. Google APIを利用するためのcredentialsを取得
![スクリーンショット 2021-01-22 21.18.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6510/6bfc8ca5-4322-2282-025a-ec93703183d4.png)
go言語学習雑記2
go言語の勉強雑記その2
今回は文法# for文
goの言語は他の言語と比べて非常に柔軟性があります。
まずは普通のfor文“`go
for i := 0; i < 10; i++ { sum += i } ``` この条件式をいじるとwhile文のような挙動を実現できます ```go sum1 := 1 for sum < 1000 { sum1 += sum } ``` これで条件式を満たさなくなるまで処理を続けます。 さらにいじると無限ループができます。 ```go for {} ``` # if文 ```go if x>0 {}
“`
シンプルにifを書くだけ、 但し評価を()でくくる必要はないですまた、その場で変数を代入して比較を行うこともできます
“`go
if i:=3; i<4 { // 処理 } ``` # switch文 switch文は評価される変数を省略できる。 ```go t := 11 switch { case t < 12: fmt.Println
AWS Translateを使ってGo言語で翻訳するサンプル
タイトルの通りですが、[公式ドキュメント](https://docs.aws.amazon.com/sdk-for-go/api/service/translate/)にサンプルが含まれていなかったので記事にしました。
サンプルソースはGithubにも置いてあります。
https://github.com/yuukimiyo/go-aws-translate-sample簡単なコードですが、[73言語](https://docs.aws.amazon.com/translate/latest/dg/what-is.html#what-is-languages.html)(2021年1月現在)の双方向翻訳が可能な簡易ツールとして使えます。
Public Domainですので、コピペなどご自由に。“`golang
package mainimport (
“flag”
“fmt”“github.com/aws/aws-sdk-go/aws”
“github.com/aws/aws-sdk-go/aws/session”
“github.com/aws/aws-
go module のバージョニング
# はじめに
自身で作った go package を公開し、別のプロジェクトで利用されるというケースで、バージョンがどのように扱われるのか調べました。
# バージョン指定なし
githubに`hello`というリポジトリを作り、そこにパッケージを作成します。
“`go.mod
module github.com/username/hello
go 1.15
“`“`go:hello.go
package hello
import “fmt”
func Hello() {
fmt.Println(“this is version v0.0.0”)
}
“`#### パッケージを呼び出す
パッケージを呼び出すためのクライアントを用意します。
“`
$ go mod init hello_client
$ go get -u github.com/username/hello
“`以下のようなgo.modができます。バージョン(v0.0.0)と参照しているコミット(40fe1c06b3a8)がわかります。
“`go.mod
module
Gormの1.9と1.20で失敗したお話
#最初に
2021年1月23日時点で、GORMの最新版はv1.20.11ですが、Qiitaや巷の記事はv1.9.xの物が多く(特に日本語)
公式ドキュメントは、基本v1.20がヒットするのでGorm初心者の私は混乱したというお話です。##バージョンはよく確認しよう
当たり前のことですが、パッケージのバージョンと参考記事のバージョンはよく確認しましょう。##GORMのバージョン
“`
v1.9.x系
import (
“github.com/jinzhu/gorm”
_ “github.com/jinzhu/gorm/dialects/mysql”)
“`“`
v1.20.11
import (
“gorm.io/gorm”
“gorm.io/driver/mysql”
)
“`
1.9系と1.20系でインポートするパッケージが異なります。
ネットの記事をそのままに、「go get github.com/jinzhu/gorm」すると1.9系がインストールされます。## 変更点
ほかに記事を上げてくださっている方がいらっしゃるので、すべては