ただの技術メモ

個人備忘録

2021-01-01から1年間の記事一覧

TCPって何なのか

TCPってよく聞くし、GoのAPIからdockerのMySQLコンテナに接続するときに@tcp(hostname:port>/dbみたいなの書いたような覚えがあるけど、全然何なのか理解していないので調べてまとめてみました。 TCPは、Transmission Control Protocolの略で、TCP/IPプロト…

GraphQLのリクエストとレスポンスの形式を確認する

HTTPについて考えていて、ふとGraphQLってどんな感じで通信されているか意識したことがなかったのでメモしておきます。 ドキュメント ドキュメントを見ると、GraphQLはGETメソッドまたはPOSTメソッドで扱うことができるみたいです。 graphql.org GETメソッド…

HTTPS通信の仕組み

SSL(SSLサーバー証明書)を用いたHTTPS通信は、共通鍵暗号方式と公開鍵暗号方式の両方を用いたハイブリット形式で行われます。 以下でそれぞれの暗号方式の仕組みをまとめます。 共通鍵暗号方式 概要 暗号化する際と復号化する際に共通の鍵を利用する暗号化…

HTTP/1.1の通信の生データを見る

HTTP通信は以下の図のように、開始行・HTTPヘッダー・改行を挟んでbodyというような形式でやり取りをします。 HTTPリクエスト・レスポンス このHTTPメッセージの形式自体は分かっていますが、実際にどうやって通信しているのか気になったので、それを追って…

トランザクションとautocommitの挙動を追ってみる

友人と話していてトランザクションの挙動を実際に追ってみようという話になり、そのときのメモです。 DBはMySQL 5.7です。 以下のようなシンプルなテーブルで操作してみようと思います。 mysql> SELECT * FROM users; +------+------+-------+ | id | name |…

go runで実行しているはずのバイナリはどこにあるのか

go buildはコンパイルしてバイナリを作成してくれて、go runはバイナリの実行まで行ってくれます。 が、よくよく考えてみるとgo runを実行しても作成したバイナリはgo buildで作成されるバイナリのようにカレントディレクトリには存在しないですよね。 どこ…

flag packageのflag.IntVarとflag.Intの違いとflag.Parse()を呼び出す必要性

何が違ってどういう使い分けするんだっけといつも調べている気がするのでメモしておきます。 flag packageには以下のような2つの使い方があります。 ① 返り値付きの関数でフラグを取得する(ポインタが返ってきます) var nFlag = flag.Int("n", 1234, "help…

init関数が呼ばれるタイミング

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…

JetBrains系エディタ(Goland)の設定やコマンド

Golandのコマンド 「⌘ + B」:宣言箇所や使用箇所へのジャンプ 「⌘ + ⇧ + F」:ファイル横断文字列検索 「⌘ + w」:タブを閉じる 「Option + Enter」:構造体のフィールドを埋める 「⌃ + ⇧ + R」:テストなどファイルの実行 「Alt + F1(Fn + 1)」:ツール…