HerokuのアプリとGitリポジトリの紐付け

経緯 Herokuのスターターガイドを実施後、いざ自作アプリをHeroku上で公開しようとしたのですが、「あれ?どうやって?」となってしまいました。 自作アプリはGithub上で管理しているのですが、これをどうやってHerokuのアプリに紐付けするのだろうか、と。 …

go mod vendor

経緯 HerokuでGoを利用するスターターガイドの中で、go mod vendorという知らないコマンドが出てきたので調べてみました。 Go Modules Goでビルドする際には依存関係はGo Modulesが管理されていて、その内容はgo.modファイルに記載されています。 go mod cac…

Goで時刻をテストする

Goで時刻をテストするために以下のサイトを参照すると良いよ。 https://hnakamur.github.io/blog/2020/08/07/mock-time-in-go/ https://labs.yulrizka.com/en/stubbing-time-dot-now-in-golang/

go 1.17.2でSIGSEGVが発生する現象を解消

ginとsqlite3のパッケージを同時に利用するとgo 1.17.2でSIGSEGVが発生していました。 どこに原因があったかわかりませんが、以下の手順で解消しています。 以下のようにginとgo-sqlite3を含むパッケージをビルドし、実行すると以下の通りSIGSEGVが発生しま…

CのSocket通信のTCP, UDP

socket(AF_INET, SOCK_STREAM, 0); 第二引数で切り替えられる。 第二引数 説明 SOCK_STREAM TCPで接続 SOCK_DGRAM UDPで接続

Ebiten 画面の切り替えについて調べてみる

EbitenサンプルのBlocksをもとに、タイトル画面からゲーム画面に遷移する画面の切り替え処理を調べてみた。 ebiten.org 画面の切り替えはSceneMangerを使って行う。 切り替わる画面はTitleSceneとGameSceneで定義されていて、TitleSceneでスペースキーを押下…

Goのビルドでduplicate symbolエラーが発生する時

Go

次のようにエラーが発生してハマったので備忘録です。 /usr/local/Cellar/go/1.17.2/libexec/pkg/tool/darwin_amd64/link: running clang failed: exit status 1 duplicate symbol '_Device_MakeLibrary' in: /var/folders/75/q516bd996r18sn7nj_3_05xm0000g…

GoでCLIツールを作ってinstallする

Go

GoでCLIを自作してinstallするまでの一連の流れを紹介します。 ツールを作る 例えば、次のようなechoコマンドと同じような動作をするmyechoを作成します。 package main import ( "flag" "fmt" ) func main() { flag.Parse() args := flag.Args() cmd := "" …

mapの値を更新したい場合

Go

Goでmapの値を更新したい場合 次のようにmapへ直接更新することはできない type Sample struct { state bool } var samples = map[string]Sample{ "hoge": {true}, "fuga": {false}, } fmt.Println(samples["hoge"].state) // getはできる samples["hoge"].s…

コマンドラインにオプションを付ける

Go

自作のコマンドラインツールで、オプションon/offで動作を変えたい。 flag packageを使う。 次のように-optを付けるだけで動作を変えたい場合はboolを使うことになる。 mytool -opt func main() { opt := flag.Bool("opt", false, "オプションの説明") // デ…

コマンドラインでディレクトリを受け取る

Go

自作のコマンドラインツールでディレクトリを受け取って、 絶対パス、相対パスどちらも同じように扱いたい。 そんな場合はfilepath.Absを使って絶対パスに置き換えてしまうのが良さそう。 filepath.Absは絶対パスを渡しても問題なく動作する。 path1, _ := f…

DockerHubで自分が付けたスターのリストを表示する

タイトル通りの内容です。 自分がスターを付けたコンテナの表示方法がわからなかったので探しました。 まずタイトルバー部分の自分のアカウントをクリックします。 表示されたページのStarredがスターを付けたリストです。 スターリスト

ginでHTTP RequestのPathParameterを受け取る

Go

Path Parameterの後ろに階層がある場合 次のようなAPIを定義する GET /user/:name/profile GET /uesr/:name/history これをginで実装する方法は公式ページにも紹介されている。 r.GET("/user/:name/*action", func(c *gin.Context) { name := c.Param("name"…

HTTP Requestのパラメータ

Go

HTTP Requestのパラメータは以下の3種類がある。 パスパラメータ クエリパラメータ リクエストボディパラメータ パスパラメータ(Path Parameter) 単一のパラメータ 基本的な書き方は次の通り 設計書 /item/{pathparameter} /item/:pathparameter 呼び出し方…

CORSを解決してローカル環境で2つのサービスを動かしたい

ブラウザのWebページから、別サーバのWebAPIを呼び出すという動作検証を両方ローカル環境でやりたい、というのが今回の趣旨です。 次のような2つのサービスを用意して、ローカル環境で動作させます。 サービス URL Webページ localhost:5000で起動。アクセ…

M5StickCでHTTP GETする

こちらの記事をみて自分もやってみました。 https://slanew.com/news/668 元記事はC言語で実装していますが、私は今回UIflowで作りました。 完成品 bitflyerのWebAPIからビットコインの現在の価格を取得して表示します。 M5StickC BitcoinValue UIflowで実装…

Go Modulesでローカルパッケージをインポートする

Go

まさに欲しい情報が書いてあるページを見つけました。 zenn.dev GitHubにアップするまではexampleというモジュール名を仮でつけておくことが多いのですが、 その場合だと次のように書けばapiパッケージをインポートできます。 package main import ( "exampl…

再帰呼び出しになるかどうか

次のエラーで少しハマったので調べました。 Uncaught (in promise) RangeError: Maximum call stack size exceeded どうやら再帰呼び出しによるスタックオーバーフローのようです。 実行していたコードは以下の通り。 let drawPattern = true; function mess…

Javascriptの同期処理についてメモっておく

サーバからユーザ情報を取得して表示を更新する処理を作るに当たって、httpの完了を待つ処理が必要でした。 #3 クライアントでプレイヤー情報を参照する · bluemon0919/lobby@8f4b0f2 · GitHub こちらの記事を参考に作りました。 var u1_name; // これを更新…

dockerの基本コマンド

はじめに dockerを勉強したかったので、tutorialから手をつけてみました。 #LearnDocker | Docker Dockerイメージの理解を目指すチュートリアル - Qiita 出てきたコマンドを忘れそうだったので、 備忘録的にdockerの基本コマンドをまとめてみた記事です。 do…

docker for macでttyにアクセスできない

macの場合dockerがVM上で動作しているので、/var/lib/docker/に直接アクセスできない。 $ docker inspect hello-world:latest ... "GraphDriver": { "Data": { "MergedDir": "/var/lib/docker/overlay2/a561cd4994ad3cc18999f56d565a9c2d703f3bcfb17bb303748…

今年ハマったものを振り返ろう

お題「#買って良かった2020」 ですが、一部買ったわけでは無いもの(サービス)を含みます。 それでは今年ハマったものベスト5をざくっと紹介します。 1位:Ghost of Tsushima 過去購入したゲームの中で一番ハマったゲームかもしれません。 とにかく美しい…

Go Modulesについて

Go

先日、Go Modulesの操作ミスが重なってリポジトリを1つ失うことになりました。悲しいことが2度と起きないようにGo Modulesの勉強をしました。 この記事はThe Go Blog using go module からピックアップした内容です。 モジュールを作成する モジュール名はg…

Goでゲームのロビー機能のようなモノを作る〜宿題の提出1

Go

はじめに Go2 Advent Calendar 2020 9日目の記事の宿題の提出です。 この記事では、ゲームのマッチングを行うロビー機能をGoで作って紹介しました。 記事の時点ではWebSocketを管理するhubをpoolに戻す処理が未対応で宿題となっていました。 今回はこの部分…

WebSocket通信しようとしてハマった話

Go

WebSocketで通信するミニゲームを作っていてハマったので備忘録に書いておこうと思います。 今回はバックエンドをGoで、フロントをjavascriptで実装しています。 ファイル構成はこんな感じ。 src ├── static │ └── connect4.html ├── client.go ├── hub.go └…