- ベストアンサー
未読ポインタとはなんですか??
こんにちは!先日から、社内掲示板の作成(新人社員研修の一環)に関しての質問で、 こちらでお世話になっているJava初心者です。 たびたび、すみません(汗 掲示板にどのような機能が必要かなどは、だいたいわかってきたのですが、 未読処理をどう実現すればよいかがわからず、仕様書も書けず困ってます(^ ^;)... 未読ポインタなるものがいいらしい!ということはわかったのですが、 ソース例なんかも載ってないし(探し足りないんだと思うのですが。)、 どう実装するのかわかりません。 cookieに、最後に掲示板を閲覧した日時の情報を持たせる??のでしょうか。 でもって、未読一覧で、最終閲覧日時より新しい日時の書き込みをDBからselectしてきて表示??ですか?? それだと、閲覧中の新規書き込みってどう処理されるんでしょうか…。 どなたか回答お願いしますm(_ _)m ※ちなみに、何度か質問させていただいてる間に、よくレンタル掲示板を薦めていただいたのですが、今回は一から作ることが研修の目的でしたので、その点はご了承願います。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#2です。ちょっと自信がなくなってきたので、『どんな人』のランクを1つ下げます。あくまでアドバイスということで。 >となると、一つの投稿に、全社員分のフラグを付けとくってことですか?? それを実現するビューというのは、以下のような感じになるかと思います。(いたるところ、trueやfalseだらけって感じですね。) 社員No.1 社員No.2 ・・ 投稿No.1 true true 投稿No.2 false false 投稿No.3 false true ・ ・ そうじゃなくって、私がイメージしていたのは以下のような各社員ごとのビューです。 未読フラグ 投稿No.1 true 投稿No.2 false 投稿No.3 false ・ ・ これだと、ある社員さんが一度も閲覧していなければ、未読フラグの列は全てtrueになりますし、逆に全ての投稿を閲覧している社員さんであれば、その列が全てfalseになると思います。(もちろん、トランザクションなどの処理がきちんとなされていれば、の話ですが。) 「データの正規化」なども基本情報の時にちょこっとだけ勉強した程度なので、DB設計なども詳しくは分かんないです。後は、以下のサイトなどを参考にしてください。
その他の回答 (3)
- xanadou
- ベストアンサー率47% (10/21)
こんなモロな本もありますよ? 「Java + MySQL + Tomcatで作る掲示板とブログ」 いきなり答えを見るようで、勉強には邪魔かもしれませんが、ま、「参考程度」という意識で・・・ ご参考までに。
お礼
回答ありがとうございます! さっそくWebで見てみたところ、知りたい情報満載な一冊でした。 なので、今日あたり本屋さんめぐりしようかなって思ってます(^ ^)v >いきなり答えを見るようで、勉強には邪魔かもしれませんが、ま、「参考程度」という意識で・・・ そんなこと無いですー! 一度覚えた技はずっと使えるはずですし!
- choconamacream
- ベストアンサー率44% (152/338)
ここでいう『ポインタ』っていうのは、CとかC++でいう所の「変数の格納番地」のことじゃあなくって、「フラグ」のことだと思われます。(以下のサイトの[フラグの使用]の所に、より詳しく書かれています。) プログラミング 第5回 http://www.media.osaka-cu.ac.jp/gscc/lecture/programming/5.html レンタル掲示板などでは、よくそのような言葉が使われているらしいですが、用は以下のような変数で判断すればいいだけだと思いますが。 boolean isMidoku = true; 未読の間は全て「true」ですが、既読となったら「false」に変更し、それをDBの方にも反映させておく、といった感じですね。
補足
回答ありがとうございます! となると、一つの投稿に、全社員分のフラグを付けとくってことですか?? でも、それが一番実現しやすそうな・・・。 それは一般的な方法なんでしょうか?? このあたりも合わせてDB設計について教えていただけませんか?
- hrm_mmm
- ベストアンサー率63% (292/459)
問題を整理しましょう 1,未読ポインター=既に読んだデータの次の位置=まだ読んでないデータの開始位置 プログラミング用語でポインターといえば、メモリ上のデータの入っている番地のこと。 書き込みデータに連番が振って有れば、表示した最終番号を既読位置として、次回の新着表示はその次から表示すればいいことになります。 または表示した最終番号+1を未読位置保持しておけば、その番号から表示開始です。 何時読んだかの日時を使うよりは、何番目まで読んだかの方がプログラムしやすいです。 2,保持場所 cookieは容易に消去出来るし、また別のパソコンや別のブラウザからアクセスしたらその人の既読情報がないということにもなるし、なので、サーバー側の利用者情報に含めるべきでしょう。 3,仕様 まずは、どんなデータが必要かを洗い直した方がよいでしょうね。 また、誰にとっての未読情報なのかも考えましょう。 通常は、サーバー側データベース内に、掲示板書き込みデータtableと利用者情報(IDやパスワード、未読位置など)のtableとが最低必要でしょう。 4,閲覧中の新規書き込み 閲覧開始時に、まだ、データとして確定していないものは未読処理。1の処理をじっくり考えれば解るはず。 研修ならば、いっぺんに全部盛り込もうとせずに、まずは単純な読み書き型のを作ってから、一つ一つ機能を増やしていくのがいいでしょう。 version up番号を付けると励みになります。 未読情報の前に利用者登録作業が必要だと思います(パスワードは付けないにしても)。
お礼
お礼が遅くなってしまってごめんなさい(> <)
補足
回答ありがとうございます! 何点か補足させてください。 >1・・・または表示した最終番号+1を未読位置保持しておけば、その番号から表示開始です。 何時読んだかの日時を使うよりは、何番目まで読んだかの方がプログラムしやすいです。 説明が足りておらず、申し訳なかったのですが、この掲示板には、編集機能というものがあります。 投稿内容を編集すると編集した部分と、書き込み日時だけがupdataされて、 自動割り振りされた投稿No.は同じ番号のままです。 一覧表示では、新着順に表示したいので、日時順にソートし表示しています。 何番目まで読んだ~だと、番号を2個つけなきゃですかね?。。。 それから、日時・番号、どちらで未読ポインタを指定するにせよ、 一番新しい書き込みを閲覧してしまうと、全て既読になってしまうのです。 やはり、No.2の方が仰るとおり、ポインタよりも、フラグをたてた方がいいのでしょうか・・・。 今、DB設計の段階なんで、ここが決まらないと進めないんですよね(困) >3,仕様 まずは、どんなデータが必要かを洗い直した方がよいでしょうね。 また、誰にとっての未読情報なのかも考えましょう。 通常は、サーバー側データベース内に、掲示板書き込みデータtableと利用者情報(IDやパスワード、未読位置など)のtableとが最低必要でしょう。 ログイン機能は既に設けてあります(^ ^) 社員マスタもあります。
お礼
詳しく教えていただいて、本当にありがとうございます! そうなると、 社員50名分のtableを、書き込み分増やしてくってことですか。。。 DBはoracleなのですが、そんなにたくさんtableを作った経験が無かったので、 思いつきもしませんでした。 上手くいったらご報告しますね!