Skip to content
Hiroki Nakayama edited this page Jul 7, 2015 · 16 revisions

解決済み問題

また、解決が必須な問題に対しては、◎をつけた。

# ユーザ関連
  • ユーザについて持っている情報が少ない。現状、ユーザ登録する際には、メールアドレス、名前、パスワードしか必要ない。もっといろいろな情報を持っていていいのではないか。

解決策

  • 使用するつもりがないのなら、最低限の情報でよい。

問題点

  • ログインの期限設定がデフォルトのままで、非常に長い。

解決策

  • set_secure_cookiesするときにexpires_dayを設定する。デフォルトでは、expires_day=30となっている。
# グループ関連
  • 入れないグループにもリンクを表示している。リンクではなく、ただの文字列にするべき。あるいは、そもそも表示しない。

実際の解決策

  • 入れないグループはリンクとして表示しないようにした

問題点

  • グループを作成する際の情報はグループ名と公開/非公開だけでいいのか

解決策

  • coplaを参考に、グループを作成する際の入力項目について調べる
  • Coplaでは、グループ作成時の項目に、名前、画像、公開/非公開、一言説明、メンバーの追加がある。
  • Coplaでは自分の参加コミュニティが左側、最近の人気記事やGoodが多く押された記事が右側にある。 マイページでは、名前、投稿件数、利用日数、メールアドレス、所属などが表示されている。また、自己紹介を書くことができる。 そのほかには、サイドメニューからプロフィール画像、パスワードの変更、通知などをみることができる。
# 部屋関連
  • 部屋名検索が全然正しくない
  • 犬と検索しても、犬を含まない部屋も検索される

実際の解決法

  • RoomsHandlerで検索するときに、Roomを渡すべきところで、Groupを渡していた。

問題点[解決済み]

  • 権限がガバガバ
  • 存在しないグループの存在しない部屋でブレストをできてしまう
  • 存在するグループの存在しない部屋でブレストをできてしまう
  • 存在しないグループそのものにはアクセスはできない
  • 存在しないグループの部屋一覧にもアクセスできない

解決策

  • RoomHandler内でgroup_idとroom_idの存在をチェック。存在しなかったらHttp404を返す。

実際の解決法

  • check_group_permissionというデコレータを作って解決。
  • ただし、自分が権限のないグループに入ろうとするとエラーが出るので、要対処。
  • 以下の方法で解決した
  • https://github.com/tornadoweb/tornado/issues/1315
  • 入れないときは、その理由を表示する。
  • Coplaは、「この操作は許可されていません。\n[クリックでメッセージを消去]」と出して、マイページに飛ばす。 あとは、自分が入れないグループはそもそもリンクにしない。

問題点◎

  • 部屋の作成項目がおかしい。公開に関する情報を使用していない。

解決策

  • 完全に項目をなくす。
# DB関連
  • DBの扱いが非常に面倒くさい。セッションオブジェクトをモデルオブジェクトの後ろに隠ぺいすることができないか。Djangoっぽく扱いたい。

実際の解決策

HandlerからModelにコードを移した。

問題点◎

  • ユーザ名検索のときに、大文字と小文字を区別している。

解決策

  • 解決方法はおそらく2つ。SQLAlchemyにやらせるか、自分で判定するか。自分で行うときには、アルファベット以外の文字(漢字、ひらがな、カタカナ、etc)では変換の際にバグを入れ込みやすいところなので気を付ける。

実際の解決法

問題点◎

  • グループを削除したときに、部屋が削除されずに、DBに残り続ける。容量の無駄。

解決策

  • グループを削除するときに、グループ内の部屋をすべて削除するようにする。手動で行うと、テーブルのつながりが増えたときに面倒なことになるので、SQLAlchemyの機能として提供されていないかを調べる。以下のCascadeというものが参考になりそうだ。
  • http://docs.sqlalchemy.org/en/rel_0_9/orm/cascades.html

実際の解決策

# ブレスト関連

思考支援機能や、ブレストのテーマをどこに表示するか

実際の解決方法

ブレストのテーマは左上、思考支援機能は左下に表示することにした。

# UI/UX関連
  • デザインがシンプルすぎる。表示項目が少ない

解決策

  • 類似のサービスを参考に、表示項目を洗い出す。
  • デザインについては、Bootstrapを使用しているので、Bootstrapのテンプレートを適用する。
# コード関連 ## 問題点 * HTTPのメソッドでdeleteもどきを使っており見苦しい。

問題点

  • ネストしたTornadoのテンプレートに変数を渡せない

解決策

問題点

  • HTMLの中にjavascriptのコードが混じっていて汚い。

解決策

  • includeやmoduleを使って分離する。

問題点◎

  • フォームを直に書いている。また、入力内容のvalidationを行っていない。

解決策

  • フォームオブジェクトを作成し、それをもとにvalidationを行う。
  • ライブラリとしては、tornado-wtformsとwtformsの組み合わせが選択肢。
  • あるいは、Tornadoの機能であるModuleとして分離。validationの問題を考えると、wtformsを使用したほうがよいか。

実際の解決策

  • wtforms-tornadoとwtforms-alchemyを連携し、モデルからフォームを作成して、その内容をテンプレートに渡した。それにより、フォームを直に書かずに済むようになった。また、validationを行うこともできるようになった。
Clone this wiki locally