2021-01-01から1年間の記事一覧
TCPってよく聞くし、GoのAPIからdockerのMySQLコンテナに接続するときに@tcp(hostname:port>/dbみたいなの書いたような覚えがあるけど、全然何なのか理解していないので調べてまとめてみました。 TCPは、Transmission Control Protocolの略で、TCP/IPプロト…
HTTPについて考えていて、ふとGraphQLってどんな感じで通信されているか意識したことがなかったのでメモしておきます。 ドキュメント ドキュメントを見ると、GraphQLはGETメソッドまたはPOSTメソッドで扱うことができるみたいです。 graphql.org GETメソッド…
SSL(SSLサーバー証明書)を用いたHTTPS通信は、共通鍵暗号方式と公開鍵暗号方式の両方を用いたハイブリット形式で行われます。 以下でそれぞれの暗号方式の仕組みをまとめます。 共通鍵暗号方式 概要 暗号化する際と復号化する際に共通の鍵を利用する暗号化…
HTTP通信は以下の図のように、開始行・HTTPヘッダー・改行を挟んでbodyというような形式でやり取りをします。 HTTPリクエスト・レスポンス このHTTPメッセージの形式自体は分かっていますが、実際にどうやって通信しているのか気になったので、それを追って…
友人と話していてトランザクションの挙動を実際に追ってみようという話になり、そのときのメモです。 DBはMySQL 5.7です。 以下のようなシンプルなテーブルで操作してみようと思います。 mysql> SELECT * FROM users; +------+------+-------+ | id | name |…
go buildはコンパイルしてバイナリを作成してくれて、go runはバイナリの実行まで行ってくれます。 が、よくよく考えてみるとgo runを実行しても作成したバイナリはgo buildで作成されるバイナリのようにカレントディレクトリには存在しないですよね。 どこ…
何が違ってどういう使い分けするんだっけといつも調べている気がするのでメモしておきます。 flag packageには以下のような2つの使い方があります。 ① 返り値付きの関数でフラグを取得する(ポインタが返ってきます) var nFlag = flag.Int("n", 1234, "help…
Effective Goにあります。 変数が初期化された後に呼ばれるようです。 go.dev init is called after all the variable declarations in the package have evaluated their initializers, and those are evaluated only after all the imported packages have…
Golandのコマンド 「⌘ + B」:宣言箇所や使用箇所へのジャンプ 「⌘ + ⇧ + F」:ファイル横断文字列検索 「⌘ + w」:タブを閉じる 「Option + Enter」:構造体のフィールドを埋める 「⌃ + ⇧ + R」:テストなどファイルの実行 「Alt + F1(Fn + 1)」:ツール…