docker-goa-next's Introduction
docker-goa-next's People
docker-goa-next's Issues
全てのルームを表示するAPIでUserの画像データも返すようにする
DMの際にはログインしていないユーザーのプロフィール画像データも返すように修正する
グループの際はルームテーブルに画像データを保存するカラムが存在するのでそれを参照するようにする
WebSocketを導入してリアルタイム更新ができるようにする
チャット機能の実装
slackみたいなチャット機能を実装したい
yamlファイルでGoなどのVersionを指定するときはダブルクォーテンションで囲む
CIなどでymlファイルに下記のようにVersionをしているのをダブルクォーテンションで囲むようにする
go-version: 1.19
理由
1.19
の場合は問題ないのですが、1.20
だとyamlは1.2
と認識してしまうので、"1.20"
のようにすれば問題ない
go-jwtをアップデートする
jwt-go allows attackers to bypass intended access restrictions in situations with []string{} for m["aud"] (which is allowed by the specification). Because the type assertion fails, "" is the value of aud. This is a security problem if the JWT token is presented to a service that lacks its own audience check. There is no patch available and users of jwt-go are advised to migrate to [golang-jwt](https://github.com/golang-jwt/jwt) at version 3.2.1
Dependabotに↑のように怒られているので、アップデートする。
↓を使うといい
https://github.com/golang-jwt/jwt
webapiディレクトリのパッケージを変更
webapi
ディレクトリのパッケージをmain
からwebapi
に変更したい
APIのパスに先頭に`api/v1`をつける
現状APIを叩くのに/posts
とかで叩けるのでそれをapi/v1/posts
とかに変更する
認証でメールアドレス認証をしっかりしたい
入力したメールに認証コードを飛ばしてそれを入力したらサインアップできるようにしたい。
ルームを作成する際に画像データを保存できるようにする
グループ作成の時もカラムを追加して画像データを保存できるようにすると良いかも
[API] middlewareのテストコードを書く
auth.go
のnewAuthMiddleware
のテストコードが書いていないため記述する
[ API ]userIDはPayloadで渡さないようにする
自分のIDをPayloadで渡さないようにする。
myIDはJWTから引っ張る
google wireの導入
DIを楽にしてくれるツール
Roomに招待する時DMの時は招待できないようにする
Repository
層でUserRoom
をCreateをする際にDMのルームの際はエラーを吐くようにする
Googleアカウントでのログイン機能が欲しい
Googleアカウントでログインできるようにしたい。
どのようにやるかは調べる!
DockerのBuild時間を短縮したい
こちらを参考にDockerのBuild時間を短縮したい
具体的には下記のことをやる
- Docker Daemonへの転送ファイル削減
- Build Contextはビルドに必要なファイルを含む最も深い階層(ディレクトリ)に指定する
- Build Contextとするディレクトリに.dockerignoreファイルを設置して.gitやnode_modules、テスト用ファイルやビルド結果ファイル群などを記述して転送対象から除外する
- cacheの有効活用
Dockerファイルのアンチパターン例
FROM node:10.19.0-alpine
WORKDIR /usr/src/app
COPY . .
RUN npm install
CMD [ "npm", "start" ]
この場合、 package*.json
以外のアプリケーション部分(最も頻繁に変更する部分)を含むCOPYの後に npm install
をする為、 package*.json
に変更が無くても以下の様にCOPYステートメントでcacheが使われず、 npm install
も実行されてしまいます。
良い例
FROM node:10.19.0-alpine
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
CMD [ "npm", "start" ]
こちらは、 npm install
は直前のCOPYの変更がなければcacheを使う事ができ、 package*.json
の更新があった場合に限定する事ができます。以下の様にsrc/index.ts
の変更であればcacheが適用されます。
[API]テストの並行実行を試してみる
こちらを参考にしながたテストの並行実行を行なってみる。
特にDBの処理は時間がかかるので上手いことやって時短につなげたい。
↑の記事の結論
- サブテスト関数が、さらにネストしたt.Run()メソッドによるサブサブテスト関数を含んでいなければ、defer文あるいはt.Cleanup()メソッドのどちらで後処理を記述してもよい。
- サブテスト関数が、さらにネストしたt.Run()メソッドによるサブサブテスト関数を含んでいて、そのすべてのサブサブテスト関数がt.Parallel()メソッドを呼び出していない場合、defer文あるいはt.Cleanup()メソッドのどちらで後処理を記述してもよい。
- サブテスト関数が、さらにネストしたt.Run()メソッドによるサブサブテスト関数を含んでいて、少なくとも一つのサブサブテスト関数がt.Parallel()メソッドを呼び出している場合、t.Cleanup()メソッドで後処理を記述する。
つまり
- 並行力を一番最大限にするにはトップレベルのテスト関数とその中のサブテスト関数の両方で
t.Parallel()
を呼び出す必要がある。 t.Parallel()
を使用したらt.Cleanup()
で後処理するのが無難
golangci-lintを実装したい
CIで自動チェックできるようにしたい
GitHub Actionsでテストの自動化とauto assigneesを実装
下記の二つをCIで行いたい。
- テストの自動チェック
- auto assigneesを自動設定
ローカル環境でTokenを取得できるスクリプトを書く
Tokenの有効期限が切れる度curl
でログインしてtokenをとってるくるのは面倒なので、スクリプトを用意しておきたい
go generateでエラーが出る
google/wireを導入したらgo generate ./...
でエラーを吐くようになりました。
原因調査と解決したいです
トップ画面で投稿の取得のAPIを叩くときにコメント数も同時に引っ張りたい
メッセージが更新されたら自動で更新するようにする
概要
普通のチャットアプリのようにメッセージを送信したらリロードしなくても新しいメッセージが表示されるようにしたい。
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.