Small Changes

週刊ニュース Lv12(2023年2月4日~2023年2月10日)


Metadata


2月4日(土)

特になし

2月5日(日)

TLS 経由でページをホストしているか調査

2月6日(月)

Go言語で対戦シューティングゲームを作る4

  • new WebSocketの直後にsendすると、WebSocket接続が確立する前にsendしてしまいエラーになるという事象が発生しました。setIntervalを使ってWebSocket接続が確立されるまで試行して、sendに成功したらsetIntervalを停止することで回避しました。

  • このとき初めてGoでdlbを使ってデバッグしてみたのですが、結構手順が多くて慣れるまで大変そうです。

  • 前回、TSを使えるようにしたのですがGo言語も慣れておらず、TSも慣れていないので実装するために学習するコストが高くつくなーと今更思いましたがせっかくの機会なのでゆっくりやっていこうと思います。

ログイン時にログイン情報をSlackに通知する

  • Webアプリで特定のアカウントでログイン時にできるだけログイン時の情報をIPアドレスなどを含めて通知するということをやったのですが、引き出しが少なくあまり情報を出せませんでした。

  • 後からこのサイトを見つけてこういう情報も出せたら良かったなと思ったので似たような要件のときに参考にしようと思いました。

2月7日(火)

Railsで特定のディレクトリにコントローラーを自動生成する

  • たまにしか使わないので忘れてしまいますが、generateコマンドは便利です。下記はコントローラーとコントローラーのテスト以外の不要なファイルは生成しないというオプションをつけてます。

  • rails g controller api/v1/posts index create --no-assets --no-helper --skip-routes --no-decorator --skip-template-engine

  • https://qiita.com/terufumi1122/items/634dac88de01f3f73821

Railsで特定のコントローラーのルーティングを確認する

Go言語で対戦シューティングゲームを作る5

  • フロントから取得したjsonをGoの構造体に紐づけるのにjsonパッケージが便利。

  • 参考:https://www.wakuwakubank.com/posts/794-go-json/

  • melodyで接続したクライアントにメッセージを送信するときはs.Write([]byte(message))が使えた。

  • 参考: https://pkg.go.dev/github.com/olahol/melodySession.Write

2月8日(水)

composablesディレクトリにuseなんちゃらを配置する

  • フロントエンドディレクトリにcomposablesというディレクトリがあり、その中にuse○○というファイルが配置されているのですが、改めて何故だっけ?となったので調べてみました。

    • composables

    • use○○

      • 自社で使っているのはReactなのでReactの文脈だと思いReactのドキュメントを調べてみました。

      • おそらくここらへんかなと。useObjectiveのような内部で他のuseState、useQueryなどのフックを呼び出している独自カスタムフックなのでuse○○という感じなのかと思いました。

      • カスタムフックとは、名前が ”use” で始まり、ほかのフックを呼び出せる JavaScript の関数のことです。 https://ja.reactjs.org/docs/hooks-custom.htmlextracting-a-custom-hook

    • 結論

      • composablesには状態を持つ関数が含まれる。

      • use○○は内部でフックを呼び出している。また、composablesに配置されているuse○○は状態も持っているからcomposablesに配置している。

2月9日(木)

Sidekiq7.xからconfig.log_formatterはエラーになる

  • Sidekiq7.xへのバージョンアップをやっています。

  • そのときにundefined method log_formatter=というエラーが出るようになりました。

  • config.logger.formatterを使うようになったみたいです。

    • 参考:https://github.com/mperham/sidekiq/issues/4218issuecomment-1420433857

  • 調査したときのメモ

    • 7.xからはconfig周りのメソッド等が新クラスの Sidekiq::Config に移されている

      • 6.5.x

        • Sidekiq.configure_server を呼ぶと Sidekiq クラス自身が持っている設定系のメソッドで設定されていた

        • config.log_formatterconfigは Sidekiq クラス自身

      • 7.x

        • Sidekiq.configure_server を呼ぶと default_configuration が呼ばれるようになって、default_configuration では、 Sidekiq::Config を生成するので、Sidekiq::Config のメソッドが呼ばれるようになる

        • config.log_formatterconfigSidekiq::Config になった

        • Sidekiq::Config#log_formatterを持っていないのでエラーになるようになった。

        • 7.xからはSidekiq::Configが RubyのLoggerを継承しているので、最終的には、 RubyのLogger#formatter=が呼ばれていそう(未検証)

2月10日(金)

RailsのminitestのControllerテストで2種類の親クラスが使われていた

  • ActionController::TestCaseActionDispatch::IntegrationTestが2つ使われていて、自動生成ではActionDispatch::IntegrationTestを継承したクラスが生成されていました。

  • 調べてみるとActionController::TestCaseは非推奨で今はActionDispatch::IntegrationTestを使うみたいです。

  • 参考:https://api.rubyonrails.org/classes/ActionController/TestCase.html

References