バイオレットの音楽コミュニティ - 概要

プロジェクトリンク

参加

データフローを描きます

クラスの描画

マッピングシーケンス

バックエンドの開発

1.親指モジュール

点のような、すなわち、三つの機能モジュールを含み判断用户是否对某个内容点赞点赞该内容取消点赞该内容

ファンクションモジュール

  • query_like(user_id, item_type, item_id)
    ユーザコンテンツ親指かどうかを決定します
    :PARAMのuser_id:ユーザーID
    :のparam ITEM_TYPE:コンテンツカテゴリ
    :PARAMのitem_id:コンテンツオブジェクトID
    :リターン:
    戻り値は真が好きなドット記録の存在を示す
    戻り値がFalseでは、記録親指の不在を示し、

  • like(user_id, item_type, item_id)
    親指
    PARAM USER_ID:前記ID上記親指ユーザー
    :PARAM ITEM_TYPE:コンテンツ(曲、等)の種類親指
    :PARAM ITEM_ID:前記ID上記の親指目的
    :リターン:jsonify

  • dislike(user_id, item_type, item_id)
    嫌い
    :PARAM USER_ID:前記ID上記嫌いユーザー
    :PARAM ITEM_TYPE:コンテンツ(曲、等)の種類の嫌い
    :PARAM ITEM_ID:上記IDの嫌いオブジェクト
    リターン:jsonify

インターフェイスモジュール

  • @web.route('/v1/thumbs/like', methods=['POST'])
  • @web.route('/v1/thumbs/dislike', methods=['POST'])

2.コメントモジュール

レビューモジュールは、すなわち、4つの機能が含まれています加载评论发送评论删除评论修改评论

ファンクションモジュール

  • load_comment(user_id, item_type, item_id)
    コメント--->最新のコメント最初の取得
    のparamのuser_id:上記ID上記のユーザー
    :PARAM ITEM_TYPE:コメントは、種(歌、曲のリストなど)所属
    のparamのitem_idを::コメントの特定は、上記のid上記の目的
    :リターン:int型でリストを返します。
    0のリストの長さは何のコメントを示していません。各リストは、コメントレコードとして辞書タイプです

  • add_comment(user_id, item_type, item_id, content)
    コメントを送信
    PARAMのuser_idを::上記のid上記送信コメントユーザー
    :PARAM ITEM_TYPE:コメントのオブジェクト(歌、など)
    :PARAMのitem_id:上記のidコメントオブジェクト
    :PARAM内容:コメント内容
    :リターン:jsonify

  • delete_comment(user_id, comment_id)
    コメントを削除するには
    のparamのuser_id:上記ID上記のユーザー
    :PARAM comment_id:上記ID上記のレビュー
    :リターン:jsonifyを

  • modify_comment(user_id, comment_id, content)
    修正レビュー
    :のparam comment_id:言及したID上記のコメントを変更するには
    PARAM内容::改訂されたレビュー
    :リターン:jsonify

インターフェイスモジュール

  • @web.route('/v1/comment/load_comment', methods=['POST'])
  • @web.route('/v1/comment/add_comment', methods=['POST'])
  • @web.route('/v1/comment/delete_comment', methods=['POST'])
  • @web.route('/v1/comment/modify_comment', methods=['POST'])

3.ダイナミックモジュール

動的モジュールは、すなわち、4つの機能が含まれています加载动态发布动态删除动态修改动态内容

ファンクションモジュール

  • load_zone(user_id)
    ユーザーは--->最新の最初の動的の動的リストを取得する
    SQLのネストされた関係:ユーザーに、ユーザーの現在の関心を取得- >懸念のダイナミクスによって発行されたユーザー*注取得:自分でデフォルトのユーザーのフォーカスを、それによって発行自体を取得します動的
    :PARAM USER_ID:動的ユーザID取得
    リターン:リストを返すが、リスト0動的ない長さを示していません。各リストは、動的レコードとして、辞書の種類です。

  • add_zone(user_id, content, item_type, item_id)
    新しい動的を送る
    :PARAMのuser_id:動的なユーザーに発行述べたIDの上
    :PARAM内容:送信動的なコンテンツ
    paramはITEM_TYPE:共有動的コンテンツは、0はコンテンツがないことを示す
    :paramはITEM_ID:IDの動的な共有コンテンツ
    :リターン: jsonify

  • delete_zone(user_id, zone_id)
    動的(自身を確保するため、ユーザの動的部分)を削除
    :PARAM USER_ID:前記ID上記ユーザ
    :PARAM ZONE_ID:上記ID上に動的に削除する
    :リターン:jsonify

  • modify_zone(user_id, zone_id, content)
    動的コンテンツを変更
    :PARAM USER_ID:ユーザー前記ID上述
    :PARAM ZONE_ID:上述ID上記動的変更する
    PARAMコンテンツを:動的コンテンツ修飾
    :リターン:jsonify

インターフェイスモジュール

  • @web.route('/v1/zone/load_zone', methods=['POST'])
  • @web.route('/v1/zone/add_zone', methods=['POST'])
  • @web.route('/v1/zone/delete_zone', methods=['POST'])
  • @web.route('/v1/zone/modify_zone', methods=['POST'])

ユーザーの好みに基づいて、同じような興味勧告4.ユーザー

見つけることによって、ターゲットユーザの親指は、右の重量を設定することで、肖像画に対するユーザの関心を記述するために記録βの組み合わせを達成するために協調フィルタリングの2つの推奨方法を。データベースは、実際にこのように実際には、二値を記録し、ユーザの親指に格納されており、0,1で識別されます。user-baseditem-based

鍵方式

  • load_liked_items()
    各データベースの内容によると賞賛のユーザポイントを探す
    :リターン:ユーザIDとのキー複合キー項目を含む辞書を返します。

  • compute_common_num(row1, row2)
    2点が計算されるように、ユーザは、(両方とも1)アイテムの合計数を記録
    :PARAM ROW1:レコード1
    :PARAMのROW2:レコード2
    :リターン:アイテムの合計数

注:属性をバイナリを使用して計算されるので、コサイン類似度を使用するように、
両者の差のEucclidean適切な距離尺度、それが適切でない
スコア/類似度計算を計算するために使用されるピアソン係数は、2つに適用されません分類

  • compute_cosine_similarity(row1, row2)
    二人のユーザのコサイン類似度算出
    レコード1:PARAM ROW1を:
    :PARAMのROW2:レコード2
    :リターン:類似

  • generate_user_item_matrix(user_items)
    アイテムマトリックス-ユーザー生成
    のparam user_items:キーと値のペアのリストUSER_IDを含むドット、(アイテム)
    :リターン:ユーザ-アイテムマトリックス

  • cold_start(user_id, matrix, indexes)
    コールドスタート- >ユーザーが記録されたどのような状況の親指に応答しない
    場合より、デフォルトのような新しいユーザーの半分以上のような項目番号ならば、ここでは群れの原理を利用して

  • user_based_recommend(self, user_id, indexes, user_item_matrix, max_recommend_num=10)
    基づいてユーザ推薦アルゴリズム
    の類似度に応じて、ユーザのコンピュータの残りの推奨ターゲットユーザ類似性は、推薦を与える
    :PARAM USER_ID:ユーザーID
    :PARAMインデックス:マトリックスのID番号と実際の変換関係
    のparam user_item_matrix:ユーザ-アイテムマトリックス
    :PARAM max_recommend_num:推奨限界デフォルト10の最大数
    :リターン:推薦ユーザIDの順に類似度

  • generate_item_sim_matrix(self, user_item_matrix)
    アイテムの類似度行列生成
    :PARAM user_item_matrix:ユーザ-アイテムマトリックス
    :リターン:アイテムの類似度行列を

  • item_based_recommend(user_id, indexes, item_similarity, user_item_matrix, max_recommend_num=10)
    アイテムに基づく推薦アルゴリズム
    まず、商品や商品の類似度を計算する
    対象ユーザの以前の動作に依存して、異なるアイテムに関心の次に嗜好計算、
    物品の関心度に基づいて、他のユーザーに関心の最終的な計算
    :PARAM USER_ID:ユーザID
    :PARAMインデックス:マトリックスのID番号と実際の変換関係
    PARAM item_similarity:商品相似マトリックス
    :PARAM user_item_matrix:ユーザー-商品マトリックス
    :PARAM max_recommend_num:最大数は10に制限デフォルト推奨
    :リターン:推薦の降順に関心の度合いに応じてユーザーID

  • merge_recommend(user_based, item_based, beta=0.6)
    ユーザベースとアイテムベースの推薦結果は、特定の権利に応じて組み合わせて再
    PARAM USER_BASED:ユーザベースの推薦結果
    :paramがitem_based:アイテムベースの推薦結果
    >アイテムベースの結果は、会計- - >重量デフォルトは0.6:PARAMベータ計算β* item-based + (1-β)* user-based
    リターン:降順でスコアに基づいて、最終的な推薦結果

インターフェイスモジュール

  • @web.route('/v1/recommend/user', methods=['POST'])

プロジェクト概要

プロジェクトの概念の生成

  当社のエンジニアリングチームは、音楽コミュニティで達成し、アイデアは、音楽のための我々のチームの誠実な愛のすべてのメンバーとの考えの源の性質上、ラッキング私たちの脳を生成することではありません。現在、市場にはほとんど、クレソンや他のプラットフォームは、アクティブユーザーとトラフィックの大規模な数を知っている、マイクロブログ、ソーシャル・ネットワーキング・プラットフォームの世界があります。どちらのプラットフォーム、およびユーザーの多様性とまぶしい機能の導入を誘致するために、セクションの多種多様を持っています。単純に音楽自体のために、音楽の交換は、ソーシャルプラットフォームはまれで存在します。クレソンが音楽セクションがありますが、が、それはそれではないので、純粋な音楽コミュニティを作る映画のレビューや機能に焦点を行います。アイデアは交換音楽やコミュニティサービスに本質的であるように、バイオレットはされて入ってきました。それは名前が意味、縮小バイオレットフレーズをあるバイオレットのコミュニティと呼ばれる理由の「シャイ人々を。」実際の生活の中で希望を表現することを目指し、世界の音楽のコミュニティ感じの内部に表現の彼らの言う自由を持っている良い人ではありません。

類似製品の比較

  実際の商品と閉じられたドアやメイクずれ後ろ避けるために、我々は、既存のソーシャルプラットフォームとの比較や参照の一定量を持っています。そして、マイクロブログ、交換コミュニティの議論の運動エネルギーに類似クレソン円の超話題は、パーソナライゼーションを持つ多様なユーザーのニーズを満たすためにバインドされています。サークルやユーザーの特定のテーマや視聴者にトピックが存在し、これらのトピックは、ネットワーク内の時代の変化や傾向を受けている、ので、ユーザーが自由に先立ち、独立した管理領域を作成することを可能にする非常に重要です。私たちは、円内のスレッド機能で投稿と返信する無料ながら、独立したユーザの円で作成することができる融合したクレソンとBaiduのポストバーポストのブロックを、一周ようにします。ユーザー自身の個性をさらに強調するために、ボーエンとマイクロチャネル、自身をマイクロブログ、独自のダイナミックを管理するユーザーを達成するために、およびユーザの注意の動的な機能を閲覧することができ、友人の円を描画します。

チームワーク

  実際には、チームワークが最も重要な側面です。プロジェクトの完了は、各ステップが一人で行うことができない、特定の機能の改善と実施を添付しなければなりません。凝集および効率的なチームは、信頼関係が不可欠です。この手段は、凝集し、効率的なチームのメンバーは、自分の過ちや弱点を認めることを迅速かつ冷静に学ぶ必要があること。しかし、また、他人の長所を認識して喜んで。エラーが発生した場合は、担当の最も適切な人物によって行われ、各モジュールの動作を助長している、との問題はすぐに修正することができます。また、凝集チームになるために、管理者が重要な役割を果たし、彼は完璧な情報が存在しない場合に意思決定を行う必要があり、そこには統一された見解ではありません、そして行動に入れます。包括的な情報と絶対的なコンセンサスは非常にまれである傾向があるので、しっかりと行動は、最も重要な行動の一つになるためにチームを強制します。私は、チームのすべてのメンバーを実行しているとの長期的な協力の下でのより深い理解を持って、そして多かれ少なかれ私たちは、彼らに私の未来は学習の価値がある場所を明るいスポットを発見されました。

知識獲得

  エンジニアリングプロジェクトの実際の開発では、私の知識レベルを豊かに。このソフトウェアは、モデルと実践をできるように設計された私たちは、MVC(コントローラ(コントローラ) - - ビュー(ビュー)モデル(モデル))理解しています。前回のバックエンドのJSONインタラクティブな側面の特定のアプリケーションを学習し、Ajax技術の基本的な知識を持っています。また、実際の開発プロセスはで達成しようとするプロセスに基づいて、このような協調フィルタリング推薦システムなど、プロジェクトの開発に関連したドメイン知識を学ぶ必要があり、需要にない技術的準備金を、発生する可能性があります私はたくさんの恩恵を受け。良いコーディングスタイルも非常に重要な比喩的かつ現実的な変数の命名で、書き込みノートに勤勉の習慣も異なるジョブの転送の恩恵を受けることができ、読み、コードを維持することが容易にできます。

コメントや提案

講義

  教師は、ソフトウェアエンジニアリングの知識の過程は、多くの場合、実際の生活の多くの例が点在します教えて、これらのケースでは、教師の社会的経験と個人的な経験は非常に豊富で、そして幸せであることを示す、非常に有益になる傾向があり、私たちはあまり歩くように、生徒たちは、これらの経験を共有します回り道。おそらく先生の考え方、あまりにも積極的に、制御不能に共有し、さらに、さらに離れて、最終的にはメインラインの教えから外れたときしかし、それはよくあるケースです。コンテンツがない音退屈を行いますが、正式な教育内容に戻すには、この時間は非常に多くの講義の質感に影響を与えますが、連続性が影響を受けている講義時にはそれは、濃縮することが困難となります。確かに、教師の指導スタイルは、はっきりとした個性を持っていますが、一貫性の講義を教えるの未来に集中したい、またはわずかに例数が点在し、行き過ぎないようにコントロールしようと、逸話やコミュニティ缶の人生経験実際には、共有に行くために学生に残しました。

スケジュール

  明確な期限の不足のすべての段階で、最終的な大きな仕事。タスクが来週の誰もが行うことに努めてまいります決定することであるとき、この用語の運転配置と大正しい初め以来、私たちはほとんど今週何各クラスを知っています。以下のような明確な取り決めがある場合:最初のY週間の完成描画シーケンス図であるべき最初の週のX要件文書中に完了しなければならないが、Zの週には、プロトタイプの設計を完了する必要があり、直接各セット自身のスケジュール把握のために、初めにリリース作業はより友好的になります。この文脈では、実質的な進展は、拡大し、より良い学習成果を達成するために、いくつかの興味深い機能を先に達成することができれば、チームの予備容量は、事前にクラスのコンテンツへの道を開くために、不意に関連する知識に用意されています。

おすすめ

転載: www.cnblogs.com/BackPropagationXCX/p/12006068.html