ディスコード上で動くボットを作ろうとすると少しハードルがあります。
ウェブフックは他サービスでイベントが起きた時の通知を受け取るような用途が主ですが、自分でリクエストを投げることもできるので通知ボットを作成可能です。
Golangを使って適当なメッセージを投げてみます。
ディスコード上で動くボットを作ろうとすると少しハードルがあります。
ウェブフックは他サービスでイベントが起きた時の通知を受け取るような用途が主ですが、自分でリクエストを投げることもできるので通知ボットを作成可能です。
Golangを使って適当なメッセージを投げてみます。
Golangを使っているといつの間にか使っているチャンネル。
なんとなくで使っていたので1から自分で書くと色々つまずいた。
動作確認をしながら理解を深めてみます。
ツアー:tour.golang.org/concurrency
ソース:runtime/chan.go
ウェブサービスを作る際、コンテンツをすべて含んだHTMLを返すと反応が遅くなったり、定期的に一部を更新する場合に非同期で更新を行うことを考えます。
どちらにしようかなと思ったので特徴を見て比べてみます。
なんとなく配列代わりに使ったりするスライス。
ちょっと深堀りしてどんなものか考えてみます。
ちゃんと理解すれば中身が変わったり変わらなかったりで混乱することはないはず。
golangで適当なパッケージを作っていて、パッケージをリネームしようとしたらよくあるエラーが発生しました。
「別のプログラムがこのフォルダーまたはファイルを開いているので、操作を完了できません。」
最悪OS再起動でどうにかなりますが頻発すると面倒なので原因を見つける方法を書いておきます。
環境、バージョン情報は以下です。
windows10 go 1.12 Visual Stadio Code 1.36.1 Go for Visual Studio Code 0.11.4new
やmake
を使って変数宣言したりappend
を使ってスライスの追加なんかを自然とやってきたけど、ふとこれは何だっけと思って調べてみました。
するとビルトインパッケージとして参照することができた。
ソースを見た感じgodoc用に見えるので中身は説明を読んで使ってみる必要がある。
この辺は知らないと使えないものなのでおさらいしておきます。
websocketを使ってサーバーとの相互通信をしたい。
gin-gonic/gin と gorilla/websocket を使って動作確認してみます。golang開発をする中で公開する予定のない私的なライブラリ(パッケージ)をどう扱うか迷っています。
以前は適当なフォルダにまとめておいて相対パスで読み込んでいましたが、modulesで管理するようになってからはプロジェクト下に置く必要が出てきて使うものを都度コピペしていました。
プロジェクトごとに微妙に違う似たようなパッケージが生産され、そろそろ管理できなそうなのでGithubのプライベートリポジトリで管理する方法を試します。