【GO】DiscordのWebhookで通知ボットを作る

ディスコード上で動くボットを作ろうとすると少しハードルがあります。

ウェブフックは他サービスでイベントが起きた時の通知を受け取るような用途が主ですが、自分でリクエストを投げることもできるので通知ボットを作成可能です。

Golangを使って適当なメッセージを投げてみます。

続きを読む 【GO】DiscordのWebhookで通知ボットを作る

【GO】Channelsを理解する

Golangを使っているといつの間にか使っているチャンネル。

なんとなくで使っていたので1から自分で書くと色々つまずいた。

動作確認をしながら理解を深めてみます。

ツアー:tour.golang.org/concurrency

ソース:runtime/chan.go

続きを読む 【GO】Channelsを理解する

REST API or WebSocket

ウェブサービスを作る際、コンテンツをすべて含んだHTMLを返すと反応が遅くなったり、定期的に一部を更新する場合に非同期で更新を行うことを考えます。

  • HTTP(S)で情報を送信・取得する、いわゆるREST APIを使う
  • WebSocketを使って双方向のやり取りを確立する

どちらにしようかなと思ったので特徴を見て比べてみます。

続きを読む REST API or WebSocket

【GO】スライスについて深く考える

なんとなく配列代わりに使ったりするスライス。

ちょっと深堀りしてどんなものか考えてみます。

ちゃんと理解すれば中身が変わったり変わらなかったりで混乱することはないはず。

続きを読む 【GO】スライスについて深く考える

使用中となって操作できないファイルの原因探求

golangで適当なパッケージを作っていて、パッケージをリネームしようとしたらよくあるエラーが発生しました。

「別のプログラムがこのフォルダーまたはファイルを開いているので、操作を完了できません。」

最悪OS再起動でどうにかなりますが頻発すると面倒なので原因を見つける方法を書いておきます。

環境、バージョン情報は以下です。

windows10 go 1.12 Visual Stadio Code 1.36.1 Go for Visual Studio Code 0.11.4

続きを読む 使用中となって操作できないファイルの原因探求

【GO】組み込み関数について(new, make, delete等々)

newmakeを使って変数宣言したりappendを使ってスライスの追加なんかを自然とやってきたけど、ふとこれは何だっけと思って調べてみました。

するとビルトインパッケージとして参照することができた。

ソースを見た感じgodoc用に見えるので中身は説明を読んで使ってみる必要がある。

この辺は知らないと使えないものなのでおさらいしておきます。

続きを読む 【GO】組み込み関数について(new, make, delete等々)

【GO】個人用途のライブラリを管理する

golang開発をする中で公開する予定のない私的なライブラリ(パッケージ)をどう扱うか迷っています。

以前は適当なフォルダにまとめておいて相対パスで読み込んでいましたが、modulesで管理するようになってからはプロジェクト下に置く必要が出てきて使うものを都度コピペしていました。

プロジェクトごとに微妙に違う似たようなパッケージが生産され、そろそろ管理できなそうなのでGithubのプライベートリポジトリで管理する方法を試します。

続きを読む 【GO】個人用途のライブラリを管理する

【GO】ファイルシステムを走査する

特定の場所のフォルダ、ファイル一覧を走査(トラバース)する方法のメモ。

何かしらのファイル加工ツールを作るときに役立つかもしれない。

続きを読む 【GO】ファイルシステムを走査する