健康%ユーザー名%を保存:スポーツゲームの検索エンジン

ITスペシャリストは、人生のかなりの部分をコンピューターの前で過ごします(こんにちはKO!)。 特に、リモートまたはフリーランスで働く人にとっては大変です。 仕事に行く必要はなく、数日間家を出ることができない日もあります。



ウィキペディア研究は 、すべてにお金を払わなければならないことを示唆しています。 コンピューターに1日12〜14時間座っていると、50歳(またはそれ以前)までに生活の質が著しく低下する可能性があります。



私は怖がりたくありませんが、考えられる結果のリストは本当に怖いようです:


解決策は、作業の中断と身体活動です。 加えて、チームではなく自宅で仕事をしている場合、活発な精神状態のために、選択されたタイプの身体活動がグループであり、社会的相互作用を伴う場合は良いでしょう。 しかし、誰とどこでサッカーをするかを見つけるのは簡単なことではありません。







すべてのサッカー、バスケットボール、バレーボール、ホッケーの試合を収集するサイトを作成することにしました。 テクノロジーを使用して、プレーヤーとゲームオーガナイザーの両方の生活を楽にします。 Habrokatの下で、プロジェクトの本質、使用されているアーキテクチャ、テクノロジーについて説明します。





プレイヤーへ



プレイヤーにとって、遊び場場所は重要です。 あなたがジムへの道に1時間半を費やす必要がある場合、この日の仕事はそれほど簡単ではありません。 したがって、サイトのメインページには、ゲームの場所マーカーとそれらのリストを含むGoogleマップがあります。 ゲームのリストは日付でソートされています。







ゲームは、スポーツおよびマップビューポートの端で検索されます。 ビューポートは、Googleマップの表示領域です。 現在、モデレートされたゲームのみが検索に表示され、データベースには信頼済みフラグが設定されています。



同様に重要なのは、 プレイヤーレベルです 。 うまくプレイする方法を知っていれば、初心者にとって面白くないでしょう。 プロフィールでゲームレベルを1〜10に設定できます。ゲームごとに、推定レベルが示されるため、自分の方向を決めることができます。







主催者へ



主催者にとっての主な問題は、 主張する人と来ない人です 。 オーガナイザーに、ホールのプレイヤーから前払い金を集める機会を提供します。 人が来るという保証です。 プレイヤーがゲームの12時間前より早く参加を放棄することに決めた場合、前払い金はアカウントに戻されます。 ゲームの前に残された時間が12時間未満の場合、前払いは主催者に行われます。



主催者は、ステータスでマークされた自分のゲームのリストを含む個人アカウントを持っています。 さらに、主催者には、ゲームの支払いページを表示したが、いくつかの問題が発生し、支払いをしなかったプレーヤーのリストが表示されます。







ゲームのステータス



3つの主要なパラメーターに応じて、ゲームには多くの状態があります。 各パラメーターは、次の3つの値のいずれかを取ります。







オーガナイザーは、一連の繰り返しゲームを作成します。







毎日、作成された一連のゲームの記録に基づいて、cronは先週のゲームを作成します。 私たちが使用するStripe.comの支払いシステムは、7日間のみ未獲得の状態でお金を保持することができます。その後、払い戻しまたは獲得します。 そのため、長期的なゲームをすぐに作成しません。



新しく作成されたゲームのステータスは次のとおりです。

MONEY_NOT_YET-払い戻しをリクエストするか、プリペイドマネーを獲得するまで

LESS_THEN_MIN_PLAYERS-プレーヤーの最小数に達するまで

BEFORE_LOCKPERIOD-ゲームの残り12時間以上



主催者がゲームを少なくとも8人の登録プレイヤーで行うことを示している場合、8人のプレイヤーが募集されるとすぐに、LESS_THEN_MIN_PLAYERSはALREADY_MIN_NOT_MAX_PLAYERSに変わります



次の重要な段階は、ゲーム開始の12時間前のロック期間の開始です。 この時点でALREADY_MIN_NOT_MAX_PLAYERSまたはMAX_PLAYERSのステータスになっている場合、ゲームが実行され、stripe.comに前払いのキャプチャのリクエストが送信され、ゲームのステータスがCAPTURED、ALREADY_MIN_NOT_MAX_PLAYERS、LOCKPERIODに変更されます。 反対の場合-払い戻しを行い、SMSとメールでゲームが行われないという通知を送信します。



シーズンチケット



主なことは、自分の怠を克服し、定期的にそれを行うことです。 これを行うために、シーズンチケットを購入する機能を追加しました-私はそれを購入したので、逃げられません。 あなたは定期的にプレーします-仕事での効率が向上し、うつ病ではなく人生の喜びがずっと増えます。

サブスクリプションにより、各レッスンはプレイヤーにとってより安価になり、オーガナイザーゲームはより安定します。



データベースには、特定の一連のゲームのNゲームのコストが格納されます。 プレイヤーが火曜日に8ゲームのサブスクリプションを購入した場合、火曜日にデータベースに記録し、さらに8-1 = 7ゲームがあることに注意します。 このシリーズの次のゲームを探しています。もしあれば、それを記録し、さらに7-1 = 6ゲームなどがあることをマークします。



cronを使用してこのシリーズの新しいゲームを作成するとき、最後のゲームのサブスクリプションレコードを探します。 もしそうなら、我々はそれらを新しいゲームに移し、プレイヤーの残りのゲーム数を1つ減らします。



チャット



プレーヤーが詳細を把握し、主催者が最小限の労力で質問に答えられるようにするために、内部メッセージングシステムを作成する必要がありました。 正直なところ、チャットは(他の機能と同様に)まだ不安定ですが、ユーザーの問題を既に解決できており、不安定に対処することは可能です。







これは非常に簡単に実装され、PHPのすべての機能、データベースはデータウェアハウスとして使用されます。 作業を高速化するために、キャッシュが使用されます。 キャッシュは次のように機能します。新しいメッセージとルームを作成するとき、作成者自身を除く他のユーザーは、キャッシュ内の新しいイベントに関するレコードを書き込みます。 これにより、ユーザーの新しいイベントを受信するためにデータベースを再度プルすることがなくなります。



フロントエンドでも、すべてが単純です-ルームの受信、メッセージの送信などのajaxリクエスト。 特定の時間間隔で、「observer」スクリプトに要求が行われ、新しいメッセージが通知されます。 将来的には、node.jsレイヤーがチャットに使用される可能性が高くなります。



テクノロジーとアーキテクチャ



とても最初のバージョンのトピックがLivestreet cmsで書かれたことがたまたまありました。 これは、以前のプロジェクトであったかなり大きなブログサイトの遺産です。 主な仮説は、Livestreetでの開発を続けることでテストが容易になりました。



しかし、Livestreetは完全に異なるタスクのために投獄され、開発速度が望まれずに残っていたため、新機能の開発にはかなりの時間がかかりました。 そのため、プロジェクトがゆっくりと飛行していることに気付いたらすぐに、より適切なものに切り替えることにしました。



選択はYii2にかかった。 名前空間とすべてのphp 5.4グッズを使用した開発は、著しく効率的で興味深いものです。 フレームワークのアルファ版には欠点とリスクがあります。APIの変更に常に注意する必要があり、フレームワークをリファクタリングするときにコードの一部を書き換えることもあります。 しかし、私たちはこれらのリスクを十分に認識しており、生産性と開発の利益を優先して選択することにしました。



アプリケーションの基礎として、 高度なアプリケーションテンプレートが使用されます。 サイトの4つの主要部分、フロントエンド、管理者、コンソール、APIに分割されています。 テンプレートには、共通の共通の名前空間があります。 彼のフォルダーには、アプリケーションの一部、基本モジュール、コンポーネント、および拡張機能で使用するための最小限の機能を備えたモデルがあります。 また、すべての部分に共通するサイト全体の基本構成も保存します。



ほとんどすべての機能はモジュールに分割されます。これは非常に一般的な方法ですが、モジュールが基本的なモデルとコンポーネントの独自の機能を必要とする場合、モジュールのコンテキストで拡張します。



テストには、フレームワーク環境を正しく再現するため、フィクスチャなどを使用するために、yii2拡張レイヤーを介してコード受け入れ環境で単体テストと受け入れテストを使用します。 yii2 でのテストの詳細については、 こちらこちらをご覧ください 。 一般に、フレームワークはすでに非常に詳細になっていますが、一部の場所では基本的なAPIに関する不正確なドキュメントがあります。



フィードバック



私たちは最近この概念に取り組み始めましたが、まだやるべきことがたくさんありますが、ユーザーからの肯定的なフィードバックと最初の収益がすでにあります。



尊敬されるhabrasocietyに私の意見を表明してもらいたいのですが、そのようなサービスに何をしてほしいですか? あなたのゲームを組織すること/そのようなゲームに参加することを妨げることができる障害は何ですか? そして、何がプッシュできますか?



週末に自宅の近くにサイト追加し、今週末にゲームの組み立てを試みることをお勧めします。私たちは最善を尽くしてお手伝いします。 Habrafootballの良い伝統を復活させることが判明した場合、私たちは非常に幸せになります。



UPD Dmitryはサンクトペテルブルクでhabrobasketballを開始しています。 誰が参加したい-PMで彼または私に手紙を書く

ヴォロネジのUPD2 Habrabasketball / Habrafootball / Habra-volleyballが計画されています、 Andreyへの書き込み



All Articles