- 2024年6月30日
- 2024年7月3日
【Javascript】画面遷移時に、ブラウザに送信処理を予約してデータ送信する
PC・スマホの両方で、画面遷移時にユーザーの画面操作ログを送信したい。 加えて、確実に送信処理が実行されるようにしたいとします。 PCのみの場合は、unload、beforeunload イベントの場合に送信すればいいですが、モバイルでは、ブラウザーは unload、beforeunload、pag […]
PC・スマホの両方で、画面遷移時にユーザーの画面操作ログを送信したい。 加えて、確実に送信処理が実行されるようにしたいとします。 PCのみの場合は、unload、beforeunload イベントの場合に送信すればいいですが、モバイルでは、ブラウザーは unload、beforeunload、pag […]
net/httpパッケージを使って、サーバーのハンドラー処理を書いてみた。 handler1、handler2、handler3、handler4、どれも書き方は若干違うが、最終的にhttp.Handle()が呼び出され、ルーティングが登録されるため同義となる。 http.Handle()の第2引数 […]
タイトルのとおり、sql.Openは必ずしも接続を確立しないようです。 https://pkg.go.dev/database/sql#Open Open may just validate its arguments without creating a connection to the dat […]
Goのスライスの挙動について調べたので書く。 容量を超える要素を追加したときは、元の容量を2倍したスライスが作られる。 元のスライスをコピーして新しいスライスが作られるため、メモリ上のアドレスが異なる。 つまり、元のスライスの分だけ、余分にメモリを消費するということ。 ということは、下記のような場合 […]
if ~ elseif ~ elseなどで複数条件を処理しているコードを、エンジニアなら誰しも一度は見たことがあると思います。 その条件が何層もネストしているコードにもお目にかかったこともあるでしょう。 今回はそういうコードを、早期リターンを使って読みやすくしてみたいと思います。 早期リターン実施前 […]
GoでJSONを扱う場合、”encoding/json”パッケージを使います。 よく使うのは、MarshalとUnmarshalの2つですが、今回は以下のメソッドを使用していきます。 このようにNewEncoder、NewDecoderを使用すると、MarshalやUnmar […]
構造体のフィールドの値を変更する必要があるなら、構造体のポインタで渡す。 そうでないなら、値で渡す。 値で渡した場合は、構造体のコピーが作られるため、元のデータが変更されない。 なので、基本的にポインタで渡しておき、フィールドのデータを書き換える必要がない場合や明確に元のデータを書き換えたくない場合 […]
errors.Is エラーチェーンの中で、特定のエラーが存在するか確認する場合に使う。 以下の場合だと、queryDatabase関数内でErrDatabaseエラーが発生していて、それをmain関数内で存在しているか確認している。 もしqueryDatabase関数でエラーがない場合は、conve […]
Goにはスタックトレース機構がないので、どういう流れで処理が行われたのかが把握できない。 そのため、一番初めの呼び出し元にエラーをラップして戻す方法で、エラーの流れを把握する。 このようにすると、どういう流れで処理が行われ、どのようなエラーが起こったか把握できる。
ユーザーデータをJSONで返すとして、その中にパスワードなどの返す必要のないデータが含まれていたときに、簡単に除外する方法がある。 たとえば、User構造体にパスワードが含まれていて、それをJSONレスポンスに含めたくない場合は、構造体のJSONタグに、json:”-“と書く […]