日々の作業の雑記

うつ病と診断され、1年位休職していた研究開発エンジニアの自分用メモです

作業記録 ならし出社(11)

土日月のgoの開発の進捗

  • Docker-composeでMySQLの環境構築。Upの初期化の際に、SQLファイルにバグがあってエラーを起こして死ぬのでハマった。Sequel Proに先につなげて、そこでSQL文が正しいことを確認しながらすすめるのに落ち着いた。VScodeSQLは書きにくい。変なところで赤線がひかれる。
  • goからDBサーバーへの通信確認。ポートまわりやログインユーザの指定の仕方でハマった。
  • goの"database/sql"パッケージなどを使って、databaseからSELECT文でデータをとってきてParseする部分も実装
  • HTTP POSTでのSIGNUP機能の実装。Passwordの暗号化、databaseへの登録まで実装
  • メンターとの面談。トークンを使った認証について、トークンの中にuseridがあるのがPasswordとちがうよいところ。公開鍵の話を思い出さないとイマイチ理解しきれなかった。セッションIDはなくてもよい。複数トークンを管理できるようにするのがよい(そのときのIDを入った順につけるとかならあり)。他サービスを使った認証を組み込むのが主流。自サービスはユーザテーブルをもち、発行されたトークンIDを管理すればよい。Twitter認証やFirebaseを使うと実装面でも楽だし、Passwordの再発行という面倒な実装もさけられるのがよい。
  • 設計に関して、Fat Controllerやクリーンアーキテクチャという設計の考え方。データベースとのやり取りなど、別クラスに分離できるとよい。サーバーサイドでMVCというとき、Cはhttpの部分のみ、Vはjsonまで。ビジネスロジックとか多くがMになり、Mが肥大化するのが正しい。フロントエンドはまた別、Reduxとか別のアーキテクチャがある。SAPはアプリ全体の設計指針。
  • 直近ハマっていた、ユーザ情報登録時のINSERT文で出るエラーについて、SQLのPlaceholderの話。$はPosgre、MySQLは?を使う。MySQL側のPasswordの型は今日実装していて足りないと気づいてなおした。

所感

 Goの文法もSQLの文法もわからないまま手探りで勧めていたが、ようやく公式ドキュメントを読めるようになってきた。

2/8の作業記録

  • AndroidのWifiManagerクラスを使ったWifiスキャンサンプルアプリの実装
  • 現在のAndroid SDKでは、固定IPを設定するAPIがないことを公式ドキュメントから確認
  • AndroidのSupportライブラリとAndroidXライブラリの調査。複数のOSバージョンに対応するアプリの書き方について調べた。