- 1. Jenkinsのビルドが突然java.net.MalformedURLExceptionで落ちるようになった
- 2. 無料で1日でサービスを開始できる時代。ただ、ユーザーをどう増やすか。
- 3. goの構造体のJSONのtagでめちゃくちゃ時間を溶かした
- 4. Goにおけるnewと宣言のみの違い
- 5. gin gormでテーブル操作(少し改良版)
- 6. CircleCIからCloudRunへ自動的にデプロイする
- 7. CloudRunでRedis(Memorystore)を利用する
- 8. Rust は流行りそうもないので、Go を使う。
- 9. Goの実行環境をDockerで構築しようと際に発生した「no Go files in /go/src/github.com/go-playground/localesエラー」を解決
- 10. MacにGo言語開発環境をインストールする
- 11. WindowsにGo言語開発環境をインストールする
- 12. Ionic & golangでリアルタイム大喜利アプリを作りました
- 13. go修行14日目 ユニットテストとか
- 14. Goのはじめかた
- 15. cobra-cmder で Go の CLI を簡単に作る
- 16. 無料で個人開発をはじめてみようと思っている人へおすすめしたいアレコレ2020
- 17. GoとNuxtで飲食店検索ができるLINE BOTとLINEミニアプリ(LIFF)を作ってみた
- 18. go修行13日目 Package
- 19. GoでAPIを使ってみたら心が3回くらい折れた話。
- 20. GOCVを使ってみた
Jenkinsのビルドが突然java.net.MalformedURLExceptionで落ちるようになった
# はじめに
JenkinsでGoで書かれたソースをビルドしているのですが、そのジョブが突然落ちるようになったので解決策を記載します。
この問題は、記載している時点(2020/07/01)で既に修正済み(リリース待ち)の状態です。
リリースまでの一時しのぎとして対応していますのでご注意ください。# エラー内容
昨日(2020/06/30)あたりから、突然Jenkinsが以下の例外を吐いて落ちるようになりました。
“`
java.net.MalformedURLException: no protocol: /dl/go1.11.2.linux-amd64.tar.gz
at java.net.URL.(URL.java:593)
at java.net.URL.(URL.java:490)
at java.net.URL.(URL.java:439)
at org.jenkinsci.plugins.golang.GolangInstaller.performInstallation(GolangInstaller.java:5
無料で1日でサービスを開始できる時代。ただ、ユーザーをどう増やすか。
最近、暇で以下のサービスを作った。
https://deau-project.herokuapp.com/3日でサービスを開始した。
こんな感じ。1日目: 何を作るのか。環境はどうするか。
=> メールで出会うサービスで、Heroku, React, Go Gin に決定してデプロイした。
https://devcenter.heroku.com/articles/getting-started-with-go2日目: React でデザインから実装。
=> 以下のテンプレートを組み合わせてフォームを実装した。
https://github.com/mui-org/material-ui/tree/master/docs/src/pages/getting-started/templates/album
https://github.com/mui-org/material-ui/tree/master/docs/src/pages/getting-started/templates/sign-in
https://react-hook-form.com/jp/
goの構造体のJSONのtagでめちゃくちゃ時間を溶かした
# goの構造体のJSONのtagでめちゃくちゃ時間を溶かした
題目の通りです。2時間くらい溶かしました。## なにでそんなに溶かしたのか
jsonのTagでそんなに溶かすことないだろ、と。溶かした原因はこれです“`go:example.go
type JsonValue struct {
foo string `json:”foo”`
bar string `json:”bar, omitempty”`
}
“`お分かり頂けただろうか?この心霊現象。。
わからない人は僕と一緒に2時間溶かすかも知れない恐ろしいものです。。“`go
bar string `json:”bar, omitempty”`
“`
スペースですね。カンマの後ろのスペースです。時間を溶かしたのはこれエラー吐かないからです。
stringなら空文字が入っていたときに `json.Marshal` すると `bar` は省略されるはずなのに空文字が入っちゃっておかしいなぁ〜ってなります。
このスペースは入れてはいけません。正しくはこう“`go
bar string `json:”
Goにおけるnewと宣言のみの違い
# newで初期化することとvarで宣言する違い
## newで初期化
newで初期化すると以下のようなコードになります。“`
var i *int = new(int)
“`これを出力すると
“`
package mainimport “fmt”
func main() {
var i *int = new(int)
//もしくはi := new(int)
fmt.Printf(“%T %v\n”, i, *i) → *int 0
}“`
となってnewでは`ポインタ型`を返します。
構造体だったりはポインタで使用されることが多いのでnewを使うことが多い。
“`
type Vertex struct{
X,Y int
}
….
v := new(Vertex)
//v := &Vertex{}と同じ
“`## varで宣言のみ
varで宣言すると以下のようなコードになります。“`
var i2 *int
“`これを出力すると
“`
package mainimport “fmt”
func mai
gin gormでテーブル操作(少し改良版)
以前[gin gormでテーブル操作](https://qiita.com/ogurasousui/items/dcd84fd96d2e8797a5e8)で一連のテーブル操作をやってみた
しかし、どうもBDのコネクションは保持したままの方が良いようなので、修正してみる
ついでに[こちら](https://qiita.com/ogurasousui/items/b7a49d78615c7c97b911)と同じGo Modules管理に変更している以下雑にコードをのせているだけなので、何が変わったかは↑の記事と見比べてください(すまん
## docker-compose.yml
“`docker-compose.yml
services:
app:
container_name: gin_app
image: golang:1.12.0-alpine
volumes:
– .:/go/src/app
command: >
sh -c “cd /go/src/app &&
apk update &&
CircleCIからCloudRunへ自動的にデプロイする
この記事は、CircleCIを使って、Google Cloud Platform(GCP)のサービスであるCloudRunへシステムをデプロイをする方法をまとめたものです。
CircleCIを使えばgithubにpushしたソースコードを自動的にテスト、ビルド、デプロイすることができます。
なおこの記事内では、githubとCircleCIの連携方法やCircleCIの利用方法については省略しています。# ポイント
・ CircleCIのCloudRun用Orbsを利用する
・ GCPに接続するための接続情報を環境変数に設定する## 構成
全体のイメージはこんな感じ。![名称未設定ファイル.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/528040/c4667344-02d5-f253-5364-229ceb038745.png)
GitHubの構成はこんな感じ。
言語はGo1.13です。“`tex:github
/.circleci
|-config.yml
/sampl
CloudRunでRedis(Memorystore)を利用する
この記事は、Google Cloud Platform(GCP)のサービスであるCloudRunでRedisを利用するための方法をまとめたものです。
CloudRundもサーバレスVPCアクセスが利用可能になったので、CloudRunからMemorystore(Redis)を利用することが可能になっています。
CluodRunでできることがどんどん増えていくのは嬉しいですね。## ポイント
– フルマネージドなインメモリサービスであるMemorystore(Redis,Memcached)を利用する
– Memorystoreを利用するにはプライベートアドレスでの接続が必要
– GAEやCloudRunから接続する場合はサーバーレスVPCアクセスを利用する
※GAEやCloudRunはマネージドサービスなのでプライベートアドレスが付与されない## 手順
1. サーバーレスVPCを作成
2. MemoryStoreを作成
3. CloudRunを作成### 1. サーバーレスVPCを作成
CloudRunからアクセスするためのネットワークを作成します。GCPコン
Rust は流行りそうもないので、Go を使う。
最近、暇で以下のサービスを作った。
https://deau-project.herokuapp.com/バックエンドには仕事で使ったことがない、Go にした。
勉強してたのは、Rust で、仕事のCSVを分析するシステムを Rust で作ったけど、
この先、使うことがないのでは? と思っている。以前、Haskell が流行りそうで、だいぶ勉強したけど、今では話題にすらならない。
関数型も、いまいち浸透していない。流行る言語は、何かしらの手間を無くす。
Ruby が流行ったのは、Rails がフレームワーク使用時の共通作業を無くしたから。
PHP が未だに廃れないのは、WordPress が共通作業を無くしてるから。Go は流行る。もう流行っている?
理由は学習コストを減らしたから。今回、Go Gin を使用した、そして、簡単に実装できた。
情報も充分にあった。Rust でも、情報に関しては充分にある。
ただ、実装時に面倒だなと感じることが多い。
私のように趣味で実装するなら、尚更、面倒に感じる。Rust が流行るには、組込み系にターゲットを絞るか、
当時の
Goの実行環境をDockerで構築しようと際に発生した「no Go files in /go/src/github.com/go-playground/localesエラー」を解決
## はじめに
“`
root@xxxxxxxxxxxx:/go# go get github.com/go-playground/locales
“`
いつものようにパッケージをインストールしていたら次のエラーが発生。“`
can’t load package: package github.com/go-playground/locales: no Go files in /go/src/github.com/go-playground/locales
“`![スクリーンショット 2020-06-30 14.49.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581607/3c3660a1-e5ac-796c-1dce-0a0d56316ff4.png)
ここのlocalesフォルダの中に何もファイルなんてねーよ!って言われてるんですね。そんなこと言われても。。。
## 解決方法
go getをしても同じエラーが吐かれるだけだったので、試しにlocalesフォルダを削
MacにGo言語開発環境をインストールする
# 最終更新日
2020年6月30日
検証を行ったmacOSのバージョンは下記です。
– macOS Catalina 10.15.5
インストールするもののバージョンは下記です。
– Go SDK 1.14.4
– Visual Studio CodeのGo Extension(Visual Studio Code自体のインストールは別記事にて → [MacにVisual Studio Code(VSCode)をインストールする](https://qiita.com/suke_masa/items/9579eb7fab7b42dea673))
– Git(別記事にて → [MacにGitをインストールする](https://qiita.com/suke_masa/items/4bed855628f7414293f8))> この記事が古くなった場合、下記の手順は最新のインストール手順とは異なっている可能性があります。
# Go SDK
## インストール
(1) https://golang.org/dl/ にアクセスしてください。(2) go1.14.4.darw
WindowsにGo言語開発環境をインストールする
# 最終更新日
2020年6月30日
検証を行ったWindows 10のバージョンは下記です。
– Windows 10 Home 2004 19041.329インストールするもののバージョンは下記です。
– Go SDK 1.14.4
– Visual Studio CodeのGo Extension(Visual Studio Code自体のインストールは別記事にて → [WindowsにVisual Studio Codeをインストールする](https://qiita.com/suke_masa/items/91fddf0728a290b72fc4))
– Git(別記事にて → [WindowsにGit Bashをインストールする](https://qiita.com/suke_masa/items/404f06309bb32ca6c9c5))> この記事が古くなった場合、下記の手順は最新のインストール手順とは異なっている可能性があります。
# Go SDK
## インストール
(1) https://golang.org/dl/ にアクセスしてください。(
Ionic & golangでリアルタイム大喜利アプリを作りました
アプリのリリースまでなんとか漕ぎ着けたので、宣伝も兼ねて使ったフレームワークについて紹介します。
### どんなアプリか
写真で一言アプリです。
特徴的なのはリアルタイムで集まった人たちが、お互いに投稿し合ったボケを評価し合う部分です。マッチングした最大10名が、制限時間内に一つのお題写真に対してボケを投稿します。
投稿はお互いに評価することができ、一定数イイネを集めると一本獲得になります。こちらからダウンロード可能です。
よかったら遊んでみてください。android
https://play.google.com/store/apps/details?id=jp.co.popbits.funnyappios
https://apps.apple.com/jp/app/funny-one/id1515018792## アプリ側
### ionic
アプリのベースはIonic Frameworkで作成しました。
https://ionicframework.com/
ざっくりいうと、
webview + Angular
にネイティブっぽいリッチな見た目
go修行14日目 ユニットテストとか
## testing
“`
└── mylib
├── human.go
├── math.go
├── math_test.go
“`### testされるファイル
“`golang
package mylibfunc Average(s []int) int {
total := 0
for _, i := range s {
total += i
}
return int(total / len(s))
}“`
### testするファイル
– `3`が期待される
“`golang
package mylib
import “testing”
func TestAverage(t *testing.T) {
v := Average([]int{1, 2, 3, 4, 5})
if v != 3 {
t.Error(“Expected 3, got”, v)
}
}
“`### run test
– vscodeから
![image.png](https://qiita-image-s
Goのはじめかた
# はじめに
この記事ではローカルにGoの環境を構築しHello Worldを表示するまでのメモを記載してます。
数年サーバサイドはPHPを触っていて、静的言語には無縁でしたがそろそろPHP以外の言語にチャレンジしてみたいというところと、あまり趣味がないの始めてみることにしました。# 環境
MacOS 10.15
Go1.14.4
Homebrew 2.4.2# Go Install
インストールはHomebrewを使えば非常にシンプルです。“`
$ brew update
$ brew install go
“`
インストールされているかversionを表示させ確認しましょう。“`
$ go version
“`
# コード実行
コード実行も非常に簡単です。
まずgoファイルを作成します。“`
$ touch main.go
“`その後以下を`main.go`に記載します。
“`go
package mainimport “fmt”
func main() {
fmt.Println(“HelloWorld”)
}
“`こちらで
cobra-cmder で Go の CLI を簡単に作る
## 概要
Go 言語における CLI アプリ作成で一番使われる定番のライブラリといえば [spf13/cobra](https://github.com/spf13/cobra) でしょう。 Hugo や Kubernetes といった著名なプロジェクトでも cobra を使っているそうです。
しかしながら自分の場合、フラグの値を格納するのにグローバル変数を使ったり、初期化で `init()` を使ったりという cobra の流儀が気に入らず、これまで利用を敬遠してきました。一番問題だと考えているのはユニットテストの記述が困難であることです。
もちろん cobra でもグローバル変数や `init()` を一切使わず構造体のフィールドやメソッドだけで構成することは可能ですが、その場合 [cobra コマンド (コードジェネレータ)](https://github.com/spf13/cobra/blob/master/cobra/README.md) の支援はなく、すべて手で書く必要があります。
先日より、上記の問題点を解消しようと取り組んだところ、簡単かつエレガントな co
無料で個人開発をはじめてみようと思っている人へおすすめしたいアレコレ2020
初めましてみきおです、今までずっとROM専でした。
業務では主にバックエンドを担当しています。フロントエンドは生来のデザインセンスの悪さもあって避けてきましたが、去年あたりからフルスタックエンジニアという言葉に憧れを抱き、ずっとやりたいやりたいと思っているだけだった個人開発を今年ついにはじめました。
ようやくWEBアプリをほぼほぼ無料で2つほど作成したので2020年版(2019年から)のおすすめのあれやこれやを紹介したいと思います。
基本的にドメイン以外は全部無料でできます。# 対象
– これから個人開発をはじめようとしている人
– 個人開発について読み漁ったけれどどの構成がベストなのか悩んでいる人
– 無料でどこまでできるのか気になってる人
– 他の人がどんな構成にしているか興味がある人# はじめに
個人開発をはじめるにあたって、先人たちのブログやQiitaの投稿を読み漁りましたが、大きく2つのポイントがあると感じました。– 継続
– 集客[^1][^1]: ちなみに本記事も集客の一環です。
継続については、イニシャルコストはもちろんのこと、ランニングコストも込み
GoとNuxtで飲食店検索ができるLINE BOTとLINEミニアプリ(LIFF)を作ってみた
![全体構成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113263/d1be6d81-7699-e340-477f-13a7b9834c04.png)
# はじめに
Go / Nuxt.js / LINE Messaging API / Google Maps API / クリーンアーキテクチャ で、**飲食店検索やお気に入り登録できるLINE BOTとLIFFアプリ**を作ってみました!LIFFアプリとはLINEやWeb上で動作するアプリのことです。
LINEミニアプリと呼ばれることもあります。
詳しくは後述します。LINE BOTを含めバックエンドは元から作っていたのですが、ビジネスロジック部分をAPI化してLIFFと連携できるようにしてみました。
バックエンドに関する部分は以下の記事にまとめています。
こちらを読んでいなくても、この記事は読めるように書いています!
バックエンドやクリーンアーキテクチャに興味のある方はぜひ読んでみてください。[Goとクリーンアーキテクチャで飲食
go修行13日目 Package
## Package
– 1階層
“`
awesomeProject/
├── main.go
└── mylib
└── math.go
“`### main.go
“`golang
package main
import (
“awesomeProject/mylib”
“fmt”
)func main() {
s := []int{1, 2, 3, 4, 5}
fmt.Println(mylib.Average(s))
}
“`### math.go
“`golang
package mylibfunc Average(s []int) int {
total := 0
for _, i := range s {
total += i
}
return int(total / len(s))
}
“`### 結果
“`
3
“`– 2階層
### 階層
“`
awesomeProject/
├── main.go
└── mylib
├── human.go
├── math.
GoでAPIを使ってみたら心が3回くらい折れた話。
こんにちは。そうはぶです。
APIの利用は今までで一番楽しく、学びも一番大きかった反面、プログラミングで初めて絶望しそうになりました。##初めての絶望
ついにAPIに初挑戦しました!が、プログラミングで初めて絶望しました。
というのも、「API利用 golang」などでググると自分はその記事を何一つ理解できないのに、それを書いた人はなにも苦戦せず当たり前のように実装していて、「自分にはプログラミングには才能がないのか」と病みました。
このときの僕のように初めてAPI利用に挑戦してみて絶望してプログラミングをやめようとしている人にとって、同じように苦しんでやり続けたらなんとかできるようになったよと勇気づけられたり、基礎を終えてそろそろAPIを利用してみようかなと思っている方々の参考に一つになれば幸いです。##API利用において特に苦戦した箇所
これは間違いなく「認証認可や、HTTPの基礎的な事項」です。コンピュータサイエンスの基礎を学ばずにこの2ヶ月走り続けていた報いがきたという感じでした。
ヘッダーとボディがわからないレベルではなく、レスポンスとリクエストすらほぼ理解してい
GOCVを使ってみた
こんにちはwattak777です。
色々と機会があり、お勉強のためGo言語によるOpenCV「gocv」を入れるところまでをまとめました。
***環境***
– ホストOS:Windows 10
– VirtualBox:6.0.22
– ゲストOS:Ubuntu 18.04 LTS##Goのセットアップ
“`
sudo apt install -y golang
“`
##OpenCVのセットアップ
セットアップには以下の記事を参考にしました。
[Ubuntu 18.04 ServerにOpenCV 4.1.0をソースからインストール(install-opencv.sh使用)](https://symfoware.blog.fc2.com/blog-entry-2345.html)
###事前に登録していた場合はOpenCVを削除“`
sudo apt autoremove libopencv-dev python-opencv
“`###シェルの取得
“`
wget –no-check-certificate https://raw.githubuser