Pokemon Spawn Locations Recorderを作成する方法couchdb
前の記事では、CouchDBを紹介しました。今回は、学んだことを適用できる本格的なアプリを作成します。チュートリアルの最後にデータベースを保護する方法も学びます。
キーテイクアウト- GeoCouchプラグインで強化されたCouchDBを利用して、ポケモンスポーンの位置に関する地理空間データを効率的に記録および取得します。
- Homesteadの改善とDockerを使用して堅牢な開発環境を設定して、依存関係を処理し、異なるマシンで一貫した開発設定を確保します。 バックエンド開発を促進するためのスリムフレームワークと追加のPHPパッケージを実装し、ポケモンAPIおよびCouchDBとの効率的な通信を可能にします。 サーバー管理者とデータベース管理者をセットアップして、データベースへの不正アクセスと変更を防ぐことにより、CouchDBのインストールを確保します。
- Google Maps APIを使用して、ユーザーがポケモンスポーンの正確な場所を特定して保存できるようにし、アプリのインタラクティブ性と機能を強化します。 JavaScriptとさまざまなライブラリを使用してフロントエンド機能を実装して、データ入力のためのマップインタラクション、ロケーション検索、モーダルウィンドウなどのレスポンシブユーザーインターフェイスを提供します。 CouchDB資格情報を使用して.ENVファイルを更新し、DBクラスコンストラクターを変更してベースURIにこれらの資格情報を含めることにより、アプリケーションが安全であることを確認してください。
- プロジェクトの概要
- ポケモンスポーンの場所レコーダーを構築します。
- これにより、ユーザーはポケモンゴーで遭遇するモンスターの場所を保存できます。 Googleマップは、場所を検索するために使用され、正確な場所を特定するために配置されたマーカーが使用されます。ユーザーが場所に満足したら、マーカーを対話することができます。これにより、ユーザーがポケモンの名前を入力して場所を保存できるモーダルボックスが表示されます。次のユーザーが登場して同じ場所を検索すると、以前のユーザーによって追加された値がマーカーとしてマップにプロットされます。アプリがどのように見えるかは次のとおりです
- プロジェクトの完全なソースコードはGitHubで入手できます。 開発環境のセットアップ
ボックスにはcouchdbがインストールされていないため、手動で行う必要があります。ただし、単なるcouchdbだけではありません。このアプリは、GEOデータ(緯度と長期)で動作する必要があります。Googleマップからの境界ボックス情報をCouchDBに提供します。境界ボックスは、マップに現在表示されている領域を表し、以前のすべての座標ユーザーがその領域に追加したすべての座標もマップに表示されます。 couchdbはデフォルトでそれを行うことができません。そのため、CouchDBにいくつかの空間超大国に与えるために、GeoCouchというプラグインをインストールする必要があります。
それを行う最も簡単な方法は、GeoCouch Dockerコンテナによるものです。 GeoCouchを手動でインストールすることもできますが、ソースからCouchDBをインストールして、すべて手で構成する必要があります。 Unixのひげを持っていない限り、この方法は本当にお勧めしません。先に進んで、Dockerを使用しているVMにインストールして、完了したらここに戻ってきてください。
geocouchのインストール
最初に、リポジトリをクローンして作成したディレクトリ内でナビゲートします。次に、dockerfileを開き、couchdbを次のようにするためにスクリプトを置き換えます。
これを行う必要があります。現在使用されているダウンロードURLがすでに失敗しているためです。
1 2 3 |
|
1 2 3 |
|
それが開始されたら、次のコマンドを実行して実行されているかどうかをテストできます。
VMの外で、ポートを適切に転送した場合、それは次のとおりです。1 2 |
|
以下を返す必要があります
1 2 3 |
|
プロジェクトのセットアップ
1 2 |
|
を使用して新しいプロジェクトを作成します
1 2 |
|
それぞれの簡単な概要を次に示します:
1 2 |
|
- danrovito/pokephp - ポケモンAPIと簡単に話しかけるため guzzlehttp/guzzle - couchdbサーバーへのリクエストを行うため。
- Gregwar/Image - ポケモンAPIによって返されたポケモンスプライトをサイズ変更
- vlucas/phpdotenv - 構成値を保存するため。
- データベースのセットアップ
1 2 3 |
|
次に、空間検索に応答するための設計ドキュメントを作成します。ビュードロップダウンでデザインドキュメントを選択して、新しいドキュメントをクリックすることで、それを行うことができます。デザインドキュメントを作成するためにページに入れたら、フィールドの追加ボタンをクリックして、フィールド名として空間を追加し、次の値として次のように追加します。
この設計文書は、GeoCouchが提供する空間関数を利用しています。最初に行うことは、ドキュメントにlocフィールドがあるかどうかを確認することです。 LOCフィールドは、特定の場所の座標を含む配列であり、最初のアイテムには緯度を含み、2番目のアイテムには経度が含まれています。ドキュメントがこの基準を満たしている場合、通常のビューと同じようにEMIT()関数を使用します。キーはジオイソンのジオメトリであり、値はポケモンとスプライトの名前を含む配列です。
設計ドキュメントにリクエストを行う場合、JSONアレイの形式を持つstart_rangeとend_rangeを指定する必要があります。各アイテムは、数字またはnullのいずれかです。オープンレンジが必要な場合は、nullが使用されます。これがリクエストの例です
およびその出力:
1 2 3 |
|
GeoCouchでできる特定の操作について詳しく知りたい場合は、ドキュメントまたはwikiを必ずお読みください。
プロジェクトの作成
1 2 |
|
poke輸入業者
1 2 3 |
|
1 2 3 |
|
このスクリプトは、ポケモンAPIのpokedexエンドポイントにリクエストを行います。このエンドポイントには、PokeDexバージョンのIDが必要です。 Pokemon Goは現在、プレイヤーが第1世代からポケモンを捕まえることができるため、IDとして2を供給しています。これにより、元のポケモンゲームのカント地域からすべてのポケモンが返されます。次に、データをループし、必要な情報をすべて抽出し、スプライトを保存し、抽出されたデータを使用して新しいドキュメントを作成します。
ルートsrc/routes.phpファイルを開き、次のルートを追加します:
1 2 3 |
|
ホームコントローラー
couchdb
と話しています1 2 |
|
クラス内で、新しいGuzzleクライアントを作成します。 CouchDBのPHPクライアントの一部ではなくGuzzleを使用しています。
構成は、プロジェクトのルートにある.ENVファイルからのものです。これには、couchdbのベースURLが含まれています
SearchPokemonは、自動配置機能によって使用されるデータを返す責任があります。 CouchDBは実際にはSQLで慣れている同様の状態をサポートしていないため、少しハックを使用してそれを模倣しています。ここでのトリックは、正確な一致のみを返すだけのキーの代わりにstart_keyとend_keyを使用することです。 FFF0は、基本的な多言語平面の最後に割り当てられた特別なユニコード文字の1つです。これにより、実際の文字列が検索されている列の最後にアプリがあるための適切な候補になり、残りの文字が高いためにオプションになります。このハックは短い単語でのみ機能するため、ポケモンの名前を検索するのに十分すぎることに注意してください。
1 2 3 |
|
MakeGetRequestは、couchdbへの読み取りリクエストを実行するために使用されます。
1 2 |
|
isValidCoordinates緯度値と経度値が有効な形式を持っているかどうかをチェックします。
1 2 3 |
|
FetchPokemonsは、以前に作成した空間検索のために設計ドキュメントにリクエストを行う関数です。ここでは、Start_Rangeの値としてSouthwest Coordinatesを指定し、Northeast CoordinatesはEnd_rangeの値として指定します。応答は、データがあまりにも多くのデータを要求するのを防ぐために、最初の100行に制限されています。以前は、CouchDBが実際に必要としないデータが返されたデータがあることもわかりました。フロントエンドで必要なデータのみを抽出してから返すと便利です。私はそれを別の日の最適化として任せることにしました。
1 2 3 |
|
ルートディレクトリでcomposer.jsonを開いて、要件プロパティのすぐ下に次のように追加してから、コンポーザーダンプオートロードを実行します。これにより、SRC/Appディレクトリ内のすべてのファイルを自動装着し、アプリ名空間内で使用できるようにすることができます。
1 2 |
|
最後に、ホームコントローラーをコンテナに注入します。 SRC/Dependencies.phpファイルを開き、次のことを下に追加することでこれを行うことができます。
1 2 3 |
|
ホームページテンプレート
1 2 |
|
メインJavaScriptファイル(public/js/main.js)の場合、最初にファイル全体に必要な値を保存するための変数を作成します。
次に、マップを初期化するための関数を作成します。 Min_Zoomlevelは、ユーザーが世界地図全体を見ることができるまでズームアウトできないように指定されています。 couchdbが返すことができる結果にすでに制限を追加していますが、これは、ユーザーが全世界からデータを選択できることを期待しないようにするための素晴らしい追加でもあります。
1 2 |
|
ユーザーが追加したいピンポイントの位置のマーカーを作成します。次に、マーカーが押されたときにロケーションを追加するためにモーダルを開くためのイベントリスナーを追加します。
検索ボックスの初期化:
さまざまなマップリスナーを追加:
1 2 |
|
検索ボックス内の場所が変更されたときのイベントリスナーを追加します。
1 2 |
|
フェッチポケモン関数は、以前にマップの現在表示可能な領域にプロットされていたポケモンを取得する責任があります。
1 2 3 |
|
これは、ポケモンの名前を入力するためにテキストフィールドの自動接続機能を追加するためのコードです。各提案のレンダリングに使用されるHTMLをカスタマイズするために、renderItem関数が指定されています。これにより、PokemonのIDをデータ属性として追加できます。これを使用して、提案が選択されたら、Pokemon_IDフィールドの値を設定するために使用できます。
1 2 3 |
|
スタイル
1 2 |
|
public/css/styles.cssファイルを作成し、次のスタイルを追加します
Couchdbの保護
1 2 3 |
|
couchdbのインストールにサーバー管理者がまだない場合は、応答として以下を取得します。
1 2 |
|
1 2 |
|
デフォルトでは、CouchDBにはサーバー管理者がいないため、1つを作成すると、管理者が終了します。サーバー管理者は神のような力を持っているので、おそらく1つまたは2つだけを作成する方が良いことに注意してください。次に、CRUD操作のみを実行できるデータベース管理者の一握りを作成します。次のコマンドを実行することで、
を実行できます1 2 |
|
成功した場合、次のような応答が返されます。
これで、別のデータベース名で以前から同じコマンドを試すことができます:
1 2 |
|
そして、couchdbはあなたに叫びます:
1 2 |
|
1 2 3 |
|
わかりました、それでそれですか?まあ、実際には、あなたが行った唯一のことは、サーバー管理者のみが行うことができるデータベース操作を制限することだけだからです。これには、新しいデータベースの作成、データベースの削除、ユーザーの管理、すべてのデータベース(システムテーブルを含む)への全面的なアクセス、すべてのドキュメントへのCRUD操作などが含まれます。これにより、認定されていないユーザーがまだデータベースでCRUDのことをする力を持っています。布団からログアウトして、これを試してみることができます。 couchdbは、あなたのためにそれらの操作を喜んで実行します。
では、残りの穴にどのようにパッチを当てますか?書き込み操作を実行しようとしているユーザーのユーザー名(挿入または更新)が、許可されているユーザーの名前と同じであるかどうかを確認するデザインドキュメントを作成することで、それを行うことができます。布団では、サーバー管理者またはデータベース管理アカウントを使用してログインし、操作するデータベースを選択し、新しいデザインドキュメントを作成します。 IDを_design/blockanonymouswritesとして設定し、validate_doc_updateという名前のフィールドを追加し、次の値に値を設定します。
1 2 3 |
|
secobjも4番目の議論として渡されますが、実際に作業する必要はありません。それが省略されている理由です。基本的に、SECOBJは、データベースにどのような管理特権が設定されているかを説明しています。
値を追加したら、デザインドキュメントを保存し、ログアウトして、新しいドキュメントを作成するか、既存のドキュメントを更新して、CouchDBがあなたに不満を言うのを見てください。
ユーザー名のみをチェックしているため、攻撃者はユーザー名を推測してパスワードに価値を提供し、機能すると考えているかもしれません。まあ、そうではありません。CouchDBは、設計ドキュメントが実行される前にユーザー名とパスワードが正しいかどうかを最初にチェックするからです。
または、単一のデータベースに多くのユーザーがいる場合は、その役割を確認することもできます。以下の関数は、「pokemon_master」の役割を持たないユーザーにエラーを投げかけます。
- couchdb決定的なガイド - セキュリティ
- CouchDB認証とセキュリティの決定的なガイド
- セキュリティ機能の概要
- ドキュメントの更新検証
アプリの保護
アプリを更新して、データベースに適用したセキュリティ対策を使用してラップアップしましょう。最初に.envファイルを更新します:IPアドレスとポートのみでbase_uriを変更し、作成したCouchDBユーザーのユーザー名とパスワードを追加します。
1 2 3 |
|
結論
1 2 3 |
|
それだけです!このチュートリアルでは、CouchDBを使用してポケモンスポーンロケーションレコーダーアプリを作成する方法を学びました。 GeoCouchプラグインの助けを借りて、空間クエリを実行することができ、CouchDBデータベースを保護する方法を学びました。
プロジェクトでcouchdbを使用していますか?何のために?私たちのこの小さなプロジェクトに追加する提案 /機能はありますか?コメントでお知らせください!ポケモンスポーンの場所に関するよくある質問
ポケモンゴーでポケモンスポーンの場所を見つけるにはどうすればよいですか?ポケモンゴーのポケモンスポーン位置は、通常、細胞活性が高い地域で見られます。これらのエリアには、公園、ショッピングセンター、その他の公共の場所が含まれます。ポケモンゴーアプリはGPSを使用して場所を追跡し、周囲に基づいてポケモンを生成します。また、Pokemap.netなどのサードパーティアプリまたはWebサイトを使用して、スポーンの場所を見つけることもできます。ただし、サードパーティサービスを使用すると、ポケモンGOのサービス条件に違反し、禁止が発生する可能性があることに注意してください。
ポケモンGoのバイオームは、そこにどのような種類のポケモンスポーンに影響を与える特定の地理的領域です。たとえば、水型のポケモンは水域の近くで産卵する可能性が高く、草型のポケモンは公園や森林に産卵する可能性が高くなります。さまざまなバイオームを理解することは、特定の種類のポケモンがスポーンする可能性がある場所を予測するのに役立ちます。 1つの方法は、CouchDBなどのデータベースを使用してポケモンスポーンの場所を保存することです。これには、ポケモンGO APIを使用してスポーンデータを取得し、このデータをCouchDBに保存することが含まれます。その後、このデータを使用してスポーンパターンを分析し、将来のスポーン位置を予測できます。
ポケモンスポーン位置データを使用して将来のスポーンを予測できますか?将来のスポーンを予測します。データを分析することにより、スポーンの場所と時間のパターンを識別できます。これは、特定の種類のポケモンが将来出現する可能性が高い場所を予測するのに役立ちます。
サードパーティのアプリまたはウェブサイトを使用してポケモンスポーンの場所を見つけることに関連するリスクはありますか?
はい、サードパーティのアプリまたはウェブサイトを使用してポケモンスポーンの場所を見つけることに関連するリスクがあります。これらのサービスは、ポケモンGOの利用規約に違反する可能性があり、禁止される可能性があります。さらに、これらのサービスは常に正確な情報や最新情報を提供するとは限りません。
Tenorshare Pokemon Go Mapとは何ですか?ポケモンスポーンの場所の地図を提供します。マップはリアルタイムで更新され、産卵しているポケモンの種類とその正確な場所に関する情報が含まれています。ただし、このサービスを使用すると、ポケモンGOのサービス条件に違反し、禁止が発生する可能性があることに注意してください。 Pogomap Webサイトは、ポケモンスポーンの場所の地図を提供しています。マップはリアルタイムで更新され、産卵しているポケモンの種類とその正確な場所に関する情報が含まれています。このウェブサイトを使用して、お住まいの地域でポケモンを見つけてキャッチできます。
Pogomap Webサイトに貢献できますか?これにより、マップを最新かつ正確に保つのに役立ちます。ただし、誤った情報を報告することはウェブサイトから禁止される可能性があることに注意してください。
ポケモンスポーンの場所を見つけるための他の方法はありますか?場所。たとえば、地元のポケモンゴーコミュニティやフォーラムに参加でき、プレイヤーがスポーンの場所に関する情報を共有できます。また、ゲーム内の近くの機能を使用して、現在の場所に近いポケモンを見つけることもできます。
以上がPokemon Spawn Locations Recorderを作成する方法couchdbの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

PHPでは、Password_hashとpassword_verify関数を使用して安全なパスワードハッシュを実装する必要があり、MD5またはSHA1を使用しないでください。 1)password_hashセキュリティを強化するために、塩値を含むハッシュを生成します。 2)password_verifyハッシュ値を比較して、パスワードを確認し、セキュリティを確保します。 3)MD5とSHA1は脆弱であり、塩の値が不足しており、最新のパスワードセキュリティには適していません。

PHPは、$ \ _ファイル変数を介してファイルのアップロードを処理します。セキュリティを確保するための方法には次のものが含まれます。1。アップロードエラー、2。ファイルの種類とサイズを確認する、3。ファイル上書きを防ぐ、4。ファイルを永続的なストレージの場所に移動します。

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。
