目次
検索ボックスの初期化:
アプリの保護
ポケモンGoのバイオームは、そこにどのような種類のポケモンスポーンに影響を与える特定の地理的領域です。たとえば、水型のポケモンは水域の近くで産卵する可能性が高く、草型のポケモンは公園や森林に産卵する可能性が高くなります。さまざまなバイオームを理解することは、特定の種類のポケモンがスポーンする可能性がある場所を予測するのに役立ちます。 1つの方法は、CouchDBなどのデータベースを使用してポケモンスポーンの場所を保存することです。これには、ポケモンGO APIを使用してスポーンデータを取得し、このデータをCouchDBに保存することが含まれます。その後、このデータを使用してスポーンパターンを分析し、将来のスポーン位置を予測できます。
サードパーティのアプリまたはウェブサイトを使用してポケモンスポーンの場所を見つけることに関連するリスクはありますか?
Tenorshare Pokemon Go Mapとは何ですか?ポケモンスポーンの場所の地図を提供します。マップはリアルタイムで更新され、産卵しているポケモンの種類とその正確な場所に関する情報が含まれています。ただし、このサービスを使用すると、ポケモンGOのサービス条件に違反し、禁止が発生する可能性があることに注意してください。 Pogomap Webサイトは、ポケモンスポーンの場所の地図を提供しています。マップはリアルタイムで更新され、産卵しているポケモンの種類とその正確な場所に関する情報が含まれています。このウェブサイトを使用して、お住まいの地域でポケモンを見つけてキャッチできます。
ポケモンスポーンの場所を見つけるための他の方法はありますか?場所。たとえば、地元のポケモンゴーコミュニティやフォーラムに参加でき、プレイヤーがスポーンの場所に関する情報を共有できます。また、ゲーム内の近くの機能を使用して、現在の場所に近いポケモンを見つけることもできます。
ホームページ バックエンド開発 PHPチュートリアル Pokemon Spawn Locations Recorderを作成する方法couchdb

Pokemon Spawn Locations Recorderを作成する方法couchdb

Feb 10, 2025 pm 12:01 PM

Pokemon Spawn Locations Recorderを作成する方法couchdb

前の記事では、CouchDBを紹介しました。今回は、学んだことを適用できる本格的なアプリを作成します。チュートリアルの最後にデータベースを保護する方法も学びます。

キーテイクアウト

    GeoCouchプラグインで強化されたCouchDBを利用して、ポケモンスポーンの位置に関する地理空間データを効率的に記録および取得します。
  • Homesteadの改善とDockerを使用して堅牢な開発環境を設定して、依存関係を処理し、異なるマシンで一貫した開発設定を確保します。
  • バックエンド開発を促進するためのスリムフレームワークと追加のPHPパッケージを実装し、ポケモンAPIおよびCouchDBとの効率的な通信を可能にします。 サーバー管理者とデータベース管理者をセットアップして、データベースへの不正アクセスと変更を防ぐことにより、CouchDBのインストールを確保します。
  • Google Maps APIを使用して、ユーザーがポケモンスポーンの正確な場所を特定して保存できるようにし、アプリのインタラクティブ性と機能を強化します。 JavaScriptとさまざまなライブラリを使用してフロントエンド機能を実装して、データ入力のためのマップインタラクション、ロケーション検索、モーダルウィンドウなどのレスポンシブユーザーインターフェイスを提供します。
  • CouchDB資格情報を使用して.ENVファイルを更新し、DBクラスコンストラクターを変更してベースURIにこれらの資格情報を含めることにより、アプリケーションが安全であることを確認してください。
  • プロジェクトの概要
  • ポケモンスポーンの場所レコーダーを構築します。
  • これにより、ユーザーはポケモンゴーで遭遇するモンスターの場所を保存できます。 Googleマップは、場所を検索するために使用され、正確な場所を特定するために配置されたマーカーが使用されます。ユーザーが場所に満足したら、マーカーを対話することができます。これにより、ユーザーがポケモンの名前を入力して場所を保存できるモーダルボックスが表示されます。次のユーザーが登場して同じ場所を検索すると、以前のユーザーによって追加された値がマーカーとしてマップにプロットされます。アプリがどのように見えるかは次のとおりです
  • プロジェクトの完全なソースコードはGitHubで入手できます。 開発環境のセットアップ
良い孤立した開発環境が設定されていない場合は、Homesteadの改善を使用することをお勧めします。

ボックスにはcouchdbがインストールされていないため、手動で行う必要があります。ただし、単なるcouchdbだけではありません。このアプリは、GEOデータ(緯度と長期)で動作する必要があります。Googleマップからの境界ボックス情報をCouchDBに提供します。境界ボックスは、マップに現在表示されている領域を表し、以前のすべての座標ユーザーがその領域に追加したすべての座標もマップに表示されます。 couchdbはデフォルトでそれを行うことができません。そのため、CouchDBにいくつかの空間超大国に与えるために、GeoCouchというプラグインをインストールする必要があります。

それを行う最も簡単な方法は、GeoCouch Dockerコンテナによるものです。 GeoCouchを手動でインストールすることもできますが、ソースからCouchDBをインストールして、すべて手で構成する必要があります。 Unixのひげを持っていない限り、この方法は本当にお勧めしません。

先に進んで、Dockerを使用しているVMにインストールして、完了したらここに戻ってきてください。

geocouch

のインストール

最初に、リポジトリをクローンして作成したディレクトリ内でナビゲートします。

次に、dockerfileを開き、couchdbを次のようにするためにスクリプトを置き換えます。

これを行う必要があります。現在使用されているダウンロードURLがすでに失敗しているためです。

1

2

3

<span>git clone git@github.com:elecnix/docker-geocouch.git

</span><span>cd docker-geocouch

</span>

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
docker画像を作成します:

1

2

3

# Get the CouchDB source

RUN cd /opt; wget http://www-eu.apache.org/dist/couchdb/source/${COUCH_VERSION}/a$

    tar xzf /opt/apache-couchdb-${COUCH_VERSION}.tar.gz

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
これにはインターネット接続に応じて時間がかかるので、おやつをつかみます。完了したら、コンテナを作成して起動します:

それが開始されたら、次のコマンドを実行して実行されているかどうかをテストできます。

VMの外で、ポートを適切に転送した場合、それは次のとおりです。

1

2

<span>docker build -t elecnix/docker-geocouch:1.6.1 .

</span>

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

以下を返す必要があります

1

2

3

<span>docker create -ti -p 5984:5984 elecnix/docker-geocouch:1.6.1

</span><span>docker start <container id>

</span>

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
記事全体で192.168.33.10を常に参照することに注意してください。これは、Scotchboxに割り当てられたIPです。これは、私が使用したVagrantボックスです。 Homesteadの改善を使用している場合、IPは192.168.10.10です。このIPを使用してアプリにアクセスできます。他の何かを完全に使用している場合は、必要に応じて適応してください

プロジェクトのセットアップ

1

2

<span>curl localhost:5984

</span>

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
スリムなフレームワークを使用して、アプリの開発をスピードアップします。 Composer:

を使用して新しいプロジェクトを作成します

1

2

<span>curl 192.168.33.10:5984

</span>

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
Pokespawnはプロジェクトの名前ですので、コンポーザーがインストールが完了したら、先に進んでそのディレクトリに移動します。次に、次の追加パッケージをインストールします

それぞれの簡単な概要を次に示します:

1

2

<span>{"couchdb":"Welcome","uuid":"2f0b5e00e9ce08996ace6e66ffc1dfa3","version":"1.6.1","vendor":{"version":"1.6.1","name":"The Apache Software Foundation"}}

</span>

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
  • danrovito/pokephp - ポケモンAPIと簡単に話しかけるため
  • guzzlehttp/guzzle - couchdbサーバーへのリクエストを行うため。
  • Gregwar/Image - ポケモンAPIによって返されたポケモンスプライトをサイズ変更
  • vlucas/phpdotenv - 構成値を保存するため。
  • データベースのセットアップ
ブラウザから布団にアクセスし、Pokespawnという新しいデータベースを作成します。作成したら、データベースの内側に移動して、新しいビューを作成します。ビューのドロップダウンをクリックして、一時的なビューを選択することで、それを行うことができます。マップ関数については、テキストアレア内に次のものを追加します。

1

2

3

<span>git clone git@github.com:elecnix/docker-geocouch.git

</span><span>cd docker-geocouch

</span>

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
それが完了したら、[保存]ボタンをクリックし、デザインドキュメントの名前としてポケモンを追加し、by_nameをビュー名として追加します。保存を押してビューを保存します。後で、このビューを使用して、ユーザーが入力したものに基づいてポケモン名を提案します。

Pokemon Spawn Locations Recorderを作成する方法couchdb

次に、空間検索に応答するための設計ドキュメントを作成します。ビュードロップダウンでデザインドキュメントを選択して、新しいドキュメントをクリックすることで、それを行うことができます。デザインドキュメントを作成するためにページに入れたら、フィールドの追加ボタンをクリックして、フィールド名として空間を追加し、次の値として次のように追加します。

この設計文書は、GeoCouchが提供する空間関数を利用しています。最初に行うことは、ドキュメントにlocフィールドがあるかどうかを確認することです。 LOCフィールドは、特定の場所の座標を含む配列であり、最初のアイテムには緯度を含み、2番目のアイテムには経度が含まれています。ドキュメントがこの基準を満たしている場合、通常のビューと同じようにEMIT()関数を使用します。キーはジオイソンのジオメトリであり、値はポケモンとスプライトの名前を含む配列です。 Pokemon Spawn Locations Recorderを作成する方法couchdb設計ドキュメントにリクエストを行う場合、JSONアレイの形式を持つstart_rangeとend_rangeを指定する必要があります。各アイテムは、数字またはnullのいずれかです。オープンレンジが必要な場合は、nullが使用されます。これがリクエストの例です

およびその出力:

1

2

3

# Get the CouchDB source

RUN cd /opt; wget http://www-eu.apache.org/dist/couchdb/source/${COUCH_VERSION}/a$

    tar xzf /opt/apache-couchdb-${COUCH_VERSION}.tar.gz

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

GeoCouchでできる特定の操作について詳しく知りたい場合は、ドキュメントまたはwikiを必ずお読みください。

プロジェクトの作成

1

2

<span>docker build -t elecnix/docker-geocouch:1.6.1 .

</span>

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
今、いくつかのコードを書く準備ができました。最初に、バックエンドのコードを見てから、フロントエンドコードに移動します。

poke輸入業者

1

2

3

<span>docker create -ti -p 5984:5984 elecnix/docker-geocouch:1.6.1

</span><span>docker start <container id>

</span>

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
アプリでは、使用する前にいくつかのポケモンデータがデータベースに既にある必要があります。したがって、ローカルでのみ実行されるスクリプトが必要です。プロジェクトディレクトリのルートにpoke-importer.phpファイルを作成し、以下を追加します。

1

2

3

<span>git clone git@github.com:elecnix/docker-geocouch.git

</span><span>cd docker-geocouch

</span>

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

このスクリプトは、ポケモンAPIのpokedexエンドポイントにリクエストを行います。このエンドポイントには、PokeDexバージョンのIDが必要です。 Pokemon Goは現在、プレイヤーが第1世代からポケモンを捕まえることができるため、IDとして2を供給しています。これにより、元のポケモンゲームのカント地域からすべてのポケモンが返されます。次に、データをループし、必要な情報をすべて抽出し、スプライトを保存し、抽出されたデータを使用して新しいドキュメントを作成します。

ルート

src/routes.phpファイルを開き、次のルートを追加します:

1

2

3

# Get the CouchDB source

RUN cd /opt; wget http://www-eu.apache.org/dist/couchdb/source/${COUCH_VERSION}/a$

    tar xzf /opt/apache-couchdb-${COUCH_VERSION}.tar.gz

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
各ルートは、アプリ全体で実行できるアクションに応答します。ルートルートはホームページを返し、検索ルートはポケモン名の提案を返し、セーブロケーションルートは場所を保存し、フェッチルートはポケモンを特定の場所で返します。

ホームコントローラー

ホームコントローラーは、コンストラクターを介して渡される$レンダラーを使用して、アプリのホームページをレンダリングします。また、すぐに作成するDBクラスも使用します。

couchdb

と話しています

1

2

<span>docker build -t elecnix/docker-geocouch:1.6.1 .

</span>

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
アプリディレクトリの下にUTILS/DB.PHPファイルを作成します。ファイルを開き、クラスを作成します:

クラス内で、新しいGuzzleクライアントを作成します。 CouchDBのPHPクライアントの一部ではなくGuzzleを使用しています。

構成は、プロジェクトのルートにある.ENVファイルからのものです。これには、couchdbのベースURLが含まれています

SearchPokemonは、自動配置機能によって使用されるデータを返す責任があります。 CouchDBは実際にはSQLで慣れている同様の状態をサポートしていないため、少しハックを使用してそれを模倣しています。ここでのトリックは、正確な一致のみを返すだけのキーの代わりにstart_keyとend_keyを使用することです。 FFF0は、基本的な多言語平面の最後に割り当てられた特別なユニコード文字の1つです。これにより、実際の文字列が検索されている列の最後にアプリがあるための適切な候補になり、残りの文字が高いためにオプションになります。このハックは短い単語でのみ機能するため、ポケモンの名前を検索するのに十分すぎることに注意してください。

1

2

3

<span>docker create -ti -p 5984:5984 elecnix/docker-geocouch:1.6.1

</span><span>docker start <container id>

</span>

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

MakeGetRequestは、couchdbへの読み取りリクエストを実行するために使用されます。

1

2

<span>curl localhost:5984

</span>

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
savepokemonlocationは、Googleマップマーカーが現在指している座標と、名前とスプライトを保存します。 DOC_TYPEフィールドは、場所に関連するすべてのドキュメントを簡単に取得できるように追加されています。

isValidCoordinates緯度値と経度値が有効な形式を持っているかどうかをチェックします。

1

2

3

<span>git clone git@github.com:elecnix/docker-geocouch.git

</span><span>cd docker-geocouch

</span>

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

FetchPokemonsは、以前に作成した空間検索のために設計ドキュメントにリクエストを行う関数です。ここでは、Start_Rangeの値としてSouthwest Coordinatesを指定し、Northeast CoordinatesはEnd_rangeの値として指定します。応答は、データがあまりにも多くのデータを要求するのを防ぐために、最初の100行に制限されています。以前は、CouchDBが実際に必要としないデータが返されたデータがあることもわかりました。フロントエンドで必要なデータのみを抽出してから返すと便利です。私はそれを別の日の最適化として任せることにしました。

1

2

3

# Get the CouchDB source

RUN cd /opt; wget http://www-eu.apache.org/dist/couchdb/source/${COUCH_VERSION}/a$

    tar xzf /opt/apache-couchdb-${COUCH_VERSION}.tar.gz

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
Handleresponseは、couchdbによって返されたjson文字列を配列に変換します。

ルートディレクトリでcomposer.jsonを開いて、要件プロパティのすぐ下に次のように追加してから、コンポーザーダンプオートロードを実行します。これにより、SRC/Appディレクトリ内のすべてのファイルを自動装着し、アプリ名空間内で使用できるようにすることができます。

1

2

<span>docker build -t elecnix/docker-geocouch:1.6.1 .

</span>

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

最後に、ホームコントローラーをコンテナに注入します。 SRC/Dependencies.phpファイルを開き、次のことを下に追加することでこれを行うことができます。

1

2

3

<span>docker create -ti -p 5984:5984 elecnix/docker-geocouch:1.6.1

</span><span>docker start <container id>

</span>

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
これにより、Twigレンダラーをホームコントローラーに渡すことができ、HomeControllerをルーターからアクセスできるようにします。

ホームページテンプレート

1

2

<span>curl localhost:5984

</span>

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
フロントエンドを進める準備ができました。まず、プロジェクトディレクトリのrootでテンプレート/index.htmlファイルを作成し、次のものを追加します。

には、アプリが使用するさまざまなライブラリのスタイルと、アプリのスタイルがあります。 には、場所を検索するためのテキストフィールド、マップコンテナ、および新しい場所を保存するモーダルがあります。これらの以下には、アプリで使用されているスクリプトがあります。 GoogleマップスクリプトのYour_Googlemap_apikeyを独自のAPIキーに置き換えることを忘れないでください。

javascript

メインJavaScriptファイル(public/js/main.js)の場合、最初にファイル全体に必要な値を保存するための変数を作成します。

次に、マップを初期化するための関数を作成します。 Min_Zoomlevelは、ユーザーが世界地図全体を見ることができるまでズームアウトできないように指定されています。 couchdbが返すことができる結果にすでに制限を追加していますが、これは、ユーザーが全世界からデータを選択できることを期待しないようにするための素晴らしい追加でもあります。

1

2

<span>curl 192.168.33.10:5984

</span>

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

ユーザーが追加したいピンポイントの位置のマーカーを作成します。次に、マーカーが押されたときにロケーションを追加するためにモーダルを開くためのイベントリスナーを追加します。

検索ボックスの初期化:

さまざまなマップリスナーを追加:

1

2

<span>{"couchdb":"Welcome","uuid":"2f0b5e00e9ce08996ace6e66ffc1dfa3","version":"1.6.1","vendor":{"version":"1.6.1","name":"The Apache Software Foundation"}}

</span>

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

検索ボックス内の場所が変更されたときのイベントリスナーを追加します。

1

2

php <span>composer create-project slim/slim-skeleton pokespawn

</span>

ログイン後にコピー
ログイン後にコピー

フェッチポケモン関数は、以前にマップの現在表示可能な領域にプロットされていたポケモンを取得する責任があります。

1

2

3

<span>git clone git@github.com:elecnix/docker-geocouch.git

</span><span>cd docker-geocouch

</span>

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

これは、ポケモンの名前を入力するためにテキストフィールドの自動接続機能を追加するためのコードです。各提案のレンダリングに使用されるHTMLをカスタマイズするために、renderItem関数が指定されています。これにより、PokemonのIDをデータ属性として追加できます。これを使用して、提案が選択されたら、Pokemon_IDフィールドの値を設定するために使用できます。

1

2

3

# Get the CouchDB source

RUN cd /opt; wget http://www-eu.apache.org/dist/couchdb/source/${COUCH_VERSION}/a$

    tar xzf /opt/apache-couchdb-${COUCH_VERSION}.tar.gz

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
[位置]ボタンを押した場合、サーバーにリクエストが行われ、ポケモンの場所をCouchDBに追加します。

スタイル

1

2

<span>docker build -t elecnix/docker-geocouch:1.6.1 .

</span>

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

public/css/styles.cssファイルを作成し、次のスタイルを追加します

Couchdb

の保護

1

2

3

<span>docker create -ti -p 5984:5984 elecnix/docker-geocouch:1.6.1

</span><span>docker start <container id>

</span>

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
デフォルトでは、CouchDBはすべての人に開かれています。これは、インターネットに公開すると、誰でもデータベースに大混乱をもたらすことができることを意味します。 HTTP要求を行うために、Curl、Postman、またはその他のツールを使用するだけで、誰でもデータベース操作を行うことができます。実際、この一時的な状態には、「管理者」という名前さえあります。これは、以前のチュートリアルで、そして以前に新しいデータベース、ビュー、デザインドキュメントを作成したときでさえ、これを実行しています。これらのアクションはすべて、サーバー管理者によってのみ実行できますが、ログインすることなく先に進み、実行しました。まだ納得していませんか?ローカルマシンでこれを実行してみてください:

couchdbのインストールにサーバー管理者がまだない場合は、応答として以下を取得します。

1

2

<span>curl localhost:5984

</span>

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
yikesよね?良いニュースは、簡単な修正があることです。あなたがしなければならないのは、サーバー管理者を作成することだけです。次のコマンドでこれを行うことができます:

1

2

<span>curl 192.168.33.10:5984

</span>

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
上記のコマンドは、パスワード「mysupersecurepassword」を使用して「kami」という名前の新しいサーバー管理者を作成します。

デフォルトでは、CouchDBにはサーバー管理者がいないため、1つを作成すると、管理者が終了します。サーバー管理者は神のような力を持っているので、おそらく1つまたは2つだけを作成する方が良いことに注意してください。次に、CRUD操作のみを実行できるデータベース管理者の一握りを作成します。次のコマンドを実行することで、

を実行できます

1

2

<span>{"couchdb":"Welcome","uuid":"2f0b5e00e9ce08996ace6e66ffc1dfa3","version":"1.6.1","vendor":{"version":"1.6.1","name":"The Apache Software Foundation"}}

</span>

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

成功した場合、次のような応答が返されます。

これで、別のデータベース名で以前から同じコマンドを試すことができます:

1

2

php <span>composer create-project slim/slim-skeleton pokespawn

</span>

ログイン後にコピー
ログイン後にコピー

そして、couchdbはあなたに叫びます:

1

2

<span>composer require danrovito/pokephp guzzlehttp/guzzle gregwar/image vlucas/phpdotenv

</span>

ログイン後にコピー
これが機能するためには、URLにユーザー名とパスワードを提供する必要があります。

1

2

3

<span>git clone git@github.com:elecnix/docker-geocouch.git

</span><span>cd docker-geocouch

</span>

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

わかりました、それでそれですか?まあ、実際には、あなたが行った唯一のことは、サーバー管理者のみが行うことができるデータベース操作を制限することだけだからです。これには、新しいデータベースの作成、データベースの削除、ユーザーの管理、すべてのデータベース(システムテーブルを含む)への全面的なアクセス、すべてのドキュメントへのCRUD操作などが含まれます。これにより、認定されていないユーザーがまだデータベースでCRUDのことをする力を持っています。布団からログアウトして、これを試してみることができます。 couchdbは、あなたのためにそれらの操作を喜んで実行します。

では、残りの穴にどのようにパッチを当てますか?書き込み操作を実行しようとしているユーザーのユーザー名(挿入または更新)が、許可されているユーザーの名前と同じであるかどうかを確認するデザインドキュメントを作成することで、それを行うことができます。布団では、サーバー管理者またはデータベース管理アカウントを使用してログインし、操作するデータベースを選択し、新しいデザインドキュメントを作成します。 IDを_design/blockanonymouswritesとして設定し、validate_doc_updateという名前のフィールドを追加し、次の値に値を設定します。

1

2

3

# Get the CouchDB source

RUN cd /opt; wget http://www-eu.apache.org/dist/couchdb/source/${COUCH_VERSION}/a$

    tar xzf /opt/apache-couchdb-${COUCH_VERSION}.tar.gz

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ドキュメントの新しいバージョン、既存のドキュメント、およびユーザーコンテキストは、この関数の引数として渡されます。チェックする必要があるのは、データベースの名前、操作を行っているユーザーの名前、およびユーザーに割り当てられたロールの配列を含むユーザーCTXだけです。

secobjも4番目の議論として渡されますが、実際に作業する必要はありません。それが省略されている理由です。基本的に、SECOBJは、データベースにどのような管理特権が設定されているかを説明しています。

値を追加したら、デザインドキュメントを保存し、ログアウトして、新しいドキュメントを作成するか、既存のドキュメントを更新して、CouchDBがあなたに不満を言うのを見てください。

ユーザー名のみをチェックしているため、攻撃者はユーザー名を推測してパスワードに価値を提供し、機能すると考えているかもしれません。まあ、そうではありません。CouchDBは、設計ドキュメントが実行される前にユーザー名とパスワードが正しいかどうかを最初にチェックするからです。

または、単一のデータベースに多くのユーザーがいる場合は、その役割を確認することもできます。以下の関数は、「pokemon_master」の役割を持たないユーザーにエラーを投げかけます。 Pokemon Spawn Locations Recorderを作成する方法couchdb

couchdbを保護する方法について詳しく知りたい場合は、必ず次のリソースを確認してください。
  • couchdb決定的なガイド - セキュリティ
  • CouchDB認証とセキュリティの決定的なガイド
  • セキュリティ機能の概要
  • ドキュメントの更新検証

アプリの保護

アプリを更新して、データベースに適用したセキュリティ対策を使用してラップアップしましょう。最初に.envファイルを更新します:IPアドレスとポートのみでbase_uriを変更し、作成したCouchDBユーザーのユーザー名とパスワードを追加します。

1

2

3

<span>git clone git@github.com:elecnix/docker-geocouch.git

</span><span>cd docker-geocouch

</span>

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
次に、DBクラスのコンストラクターを更新して、新しい詳細を使用します。

結論

1

2

3

# Get the CouchDB source

RUN cd /opt; wget http://www-eu.apache.org/dist/couchdb/source/${COUCH_VERSION}/a$

    tar xzf /opt/apache-couchdb-${COUCH_VERSION}.tar.gz

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

それだけです!このチュートリアルでは、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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

PHPとPython:2つの一般的なプログラミング言語を比較します PHPとPython:2つの一般的なプログラミング言語を比較します Apr 14, 2025 am 12:13 AM

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

アクション中のPHP:実際の例とアプリケーション アクション中のPHP:実際の例とアプリケーション Apr 14, 2025 am 12:19 AM

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

PHPでの安全なパスワードハッシュ(例:Password_hash、password_verify)を説明します。 MD5またはSHA1を使用してみませんか? PHPでの安全なパスワードハッシュ(例:Password_hash、password_verify)を説明します。 MD5またはSHA1を使用してみませんか? Apr 17, 2025 am 12:06 AM

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

PHPは、ファイルを安全に処理する方法をどのように処理しますか? PHPは、ファイルを安全に処理する方法をどのように処理しますか? Apr 10, 2025 am 09:37 AM

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

PHP:Web開発の重要な言語 PHP:Web開発の重要な言語 Apr 13, 2025 am 12:08 AM

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

スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか? スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか? Apr 17, 2025 am 12:25 AM

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

PHPの永続的な関連性:それはまだ生きていますか? PHPの永続的な関連性:それはまだ生きていますか? Apr 14, 2025 am 12:12 AM

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

PHP対Python:違いを理解します PHP対Python:違いを理解します Apr 11, 2025 am 12:15 AM

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

See all articles