프로젝트의 전체 소스 코드는 github에서 사용할 수 있습니다.
<development> 개발 환경 설정
<have> 고립 된 DEV 환경이 양호하지 않으면 홈스테드 개선을 사용하는 것이 좋습니다.<come> 상자에는 CouchDB가 설치되어 있지 않으므로 수동으로 수행해야합니다. 그러나 평범한 couchdb는 아닙니다. 이 앱은 GEO 데이터 (위도 및 경도)와 협력해야합니다. Google지도의 경계 상자 정보를 CouchDB에 제공합니다. 경계 상자는 현재지도에 표시되는 영역을 나타내며, 해당 영역에 추가 한 이전의 모든 좌표는지도에도 표시됩니다. CouchDB는 기본적으로이를 수행 할 수 없으므로 CouchDB를 공간 초강대국을 제공하기 위해 GeoCouch라는 플러그인을 설치해야합니다.
<est> 가장 간단한 방법은 GeoCouch Docker 컨테이너를 사용하는 것입니다. 또한 GeoCouch를 수동으로 설치하려고 시도 할 수 있지만 소스에서 CouchDB를 설치하고 직접 구성해야합니다. 유닉스 수염이 없으면이 방법을 권장하지 않습니다. <p>
<install> 계속해서 Docker를 사용중인 VM에 설치하고 완료되면 여기로 돌아 오십시오.
<oc oc> GeoCouch 설치
<one> 먼저, Repo를 복제하고 생성 된 디렉토리 내부에서 탐색하십시오. </one></oc></install></p>
<p>
<the the> 다음으로 Dockerfile을 열고 CouchDB를 다음과 같이 받기위한 스크립트를 교체하십시오.
</the></p>
<do> 현재 사용중인 다운로드 URL이 이미 실패 하므로이 작업을 수행해야합니다.
<ker> 도커 이미지를 빌드 :
<p>
<a> 인터넷 연결에 따라 시간이 걸리므로 간식을 잡으십시오. 완료되면 컨테이너를 만들고 시작하십시오
</a></p>
<started> 일단 시작되면 다음 명령을 실행하여 실행 중인지 테스트 할 수 있습니다.
<h3>
<m m> VM 외부에서 포트를 올바르게 전달하면 다음과 같습니다.
</m>
</h3>
<the> 다음을 반환해야합니다
<p>
<ll> 기사 전체에서 지속적으로 192.168.33.10을 참조합니다. 이것은 내가 사용한 Vagrant 박스 인 Scotchbox에 할당 된 IP입니다. 홈스테드 개선을 사용하는 경우 IP는 192.168.10.10입니다. 이 IP를 사용하여 앱에 액세스 할 수 있습니다. 다른 것을 완전히 사용하는 경우 필요에 따라 적응하십시오. </ll></p>
<project> 프로젝트 설정
<use> 슬림 프레임 워크를 사용하여 앱 개발 속도를 높일 것입니다. 작곡가를 사용하여 새 프로젝트를 만듭니다
<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><span>git clone git@github.com:elecnix/docker-geocouch.git
</span><span>cd docker-geocouch
</span></pre><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div>
<awn> pokespawn은 프로젝트의 이름이므로 작곡가가 설치되면 해당 디렉토리로 이동하십시오. 그런 다음 다음 추가 패키지를 설치하십시오
<p>
<brief> 다음은 각각에 대한 간단한 개요입니다<ul>
<it> Danrovito/Pokephp - Pokemon API와 쉽게 대화하기 위해
<t> guzzlehttp/guzzle - couchdb 서버에 요청을 작성합니다
<ar> Gregwar/Image - Pokemon API에 의해 반환 된 포켓몬 스프라이트의 크기 조정.
<as> vlucas/phpdotenv - 구성 값 저장을위한
<li>
<dat> 데이터베이스 설정
<from> 브라우저에서 이불에 액세스하고 Pokespawn이라는 새 데이터베이스를 만듭니다. 일단 생성되면 데이터베이스 내부로 이동하여 새로운보기를 만듭니다. 뷰 드롭 다운을 클릭하고 임시보기를 선택하여 그렇게 할 수 있습니다. 지도 함수의 텍스트 주변 내부에 다음을 추가하십시오.
</from></dat>
</li>
<li> </li>
<done> 일단 완료되면 저장 버튼을 클릭하고 Pokemon을 디자인 문서의 이름으로 추가하고 by_name을보기 이름으로 추가하십시오. 뷰를 저장하려면 저장을 누르십시오. 나중에이 뷰를 사용하여 사용자가 입력 한 내용에 따라 포켓몬 이름을 제안합니다.
<li> </li>
<a> 다음, 공간 검색에 응답하기위한 설계 문서를 만듭니다. 뷰 드롭 다운에서 디자인 문서를 선택한 다음 새 문서를 클릭하여이를 수행 할 수 있습니다. 디자인 문서를 작성하기 위해 페이지에 들어가면 필드 추가 버튼을 클릭하고 필드 이름으로 공간을 추가하고 다음을 값으로 추가하십시오.
<li>
<ut>이 설계 문서는 GeoCouch가 제공하는 공간 기능을 사용합니다. 첫 번째는 문서에 LOC 필드가 있는지 확인하는 것입니다. LOC 필드는 특정 위치의 좌표를 포함하는 배열이며, 위도가 포함 된 첫 번째 항목과 경도를 포함하는 두 번째 항목을 포함합니다. 문서 가이 기준을 충족하면 일반보기처럼 emit () 함수를 사용합니다. 키는 Geojson Geometry이고 값은 Pokemon과 Sprite의 이름을 포함하는 배열입니다.
<a> 디자인 문서에 요청을 할 때는 JSON 배열 형식이있는 start_range 및 end_range를 지정해야합니다. 각 항목은 숫자 또는 널일 수 있습니다. 개방형 범위를 원한다면 NULL이 사용됩니다. 예제 요청은 다음과 같습니다
</a></ut>
</li>
<put> 및 그 출력 :
</put></a></done></as></ar></t></it>
</ul>
<to> GeoCouch로 할 수있는 특정 작업에 대해 자세히 알아 보려면 문서 또는 위키를 읽으십시오. .
프로젝트 생성
<to> 이제 코드를 쓸 준비가되었습니다. 먼저 백엔드 코드를 살펴보고 프론트 엔드 코드로 넘어갑니다. <h3>.
<orter> Poke 수입업자
<some> 앱을 사용하려면 일부 포켓몬 데이터를 사용하기 전에 이미 데이터베이스에 있어야하므로 로컬로만 실행되는 스크립트가 필요합니다. 프로젝트 디렉토리의 루트에서 poke-Importer.php 파일을 만들고 다음을 추가하십시오.<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><span>git clone git@github.com:elecnix/docker-geocouch.git
</span><span>cd docker-geocouch
</span></pre><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div>
이 스크립트는 Pokemon API의 PokedEx 엔드 포인트를 요청합니다. 이 엔드 포인트에는 PokedEx 버전의 ID가 필요합니다. Pokemon Go 만 현재 플레이어는 1 세대부터 Pokemon을 잡을 수 있으므로 2를 ID로 공급합니다. 이것은 원래 포켓몬 게임의 칸토 지역에서 모든 포켓몬을 반환합니다. 그런 다음 데이터를 반복하고, 필요한 모든 정보를 추출하고, 스프라이트를 저장 한 후, 추출 된 데이터를 사용하여 새 문서를 작성하십시오.
<p> 경로
<r> src/lours.php 파일을 열고 다음 경로를 추가하십시오
</r></p>
<rout> 각 경로는 앱 전체에서 수행 할 수있는 동작에 응답합니다. 루트 경로는 홈페이지를 반환하고, 검색 경로는 포켓몬 이름 제안을 반환하고, 저장 위치 경로는 위치를 저장하고 페치 경로는 특정 위치에서 포켓몬을 반환합니다. <h3>.
홈 컨트롤러 </h3>
SRC 디렉토리에서 앱/컨트롤러 폴더를 생성하고 내부에 homecontroller.php 파일을 만듭니다. 이것은 각 경로에 필요한 모든 작업을 수행합니다. 코드는 다음과 같습니다. <code code>
<p>
<er> 홈 컨트롤러는 생성자를 통해 전달되는 $ 렌더러를 사용하여 앱의 홈페이지를 렌더링합니다. 또한 곧 생성 할 DB 클래스를 사용합니다. </er></p>
<ouch> couchdb # 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
와 대화합니다
<il> 앱 디렉토리 아래에서 utils/db.php 파일을 만듭니다. 파일을 열고 클래스를 만듭니다 :
<p>
클래스 내에서 새로운 Guzzle 클라이언트를 만듭니다. CouchDB 용 PHP 클라이언트 대신 Guzzle을 사용하고 있습니다.
</p>
<is> 구성은 프로젝트의 루트에있는 .env 파일에서 나온 것입니다. 여기에는 couchdb의 기본 URL이 포함되어 있습니다
<h3>
SearchPokemon은 자동으로 인한 기능이 사용하는 데이터를 반환 할 책임이 있습니다. CouchDB는 실제로 SQL에 익숙한 유사한 조건을 지원하지 않으므로 약간의 해킹을 사용하여 모방합니다. 여기서 속임수는 Key 대신 START_KEY 및 END_KEY를 사용하여 정확히 일치 만 반환합니다. FFF0은 기본 다국어 평면의 끝에서 할당 된 특수 유니 코드 문자 중 하나입니다. 이것은 검색중인 실제 문자열의 끝에서 추가하는 좋은 후보자가되므로 나머지 캐릭터는 높은 값으로 인해 선택 사항이됩니다. 이 핵은 짧은 단어 만으로만 작동하므로 포켓몬 이름을 검색하기에 충분합니다.
</h3>
<qu> MakeGetRequest는 CouchDB에 대한 읽기 요청을 수행하는 데 사용됩니다.
<p>
<emon> savepokemonlocation은 이름과 스프라이트와 함께 Google 맵 마커가 현재 포인팅중인 좌표를 저장합니다. 위치와 관련된 모든 문서를 쉽게 검색하기 위해 Doc_type 필드도 추가됩니다.
</emon></p>
<id> isvalidCoordinates는 위도와 경도 값이 유효한 형식인지 확인합니다.<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><span>git clone git@github.com:elecnix/docker-geocouch.git
</span><span>cd docker-geocouch
</span></pre><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div>
<ok> fetchpokemons는 이전에 만든 공간 검색을 위해 설계 문서에 요청하는 기능입니다. 여기에서 Southwest 좌표를 START_RANGE의 값으로 지정하고 Northeast 좌표는 end_range의 값으로 지정합니다. 응답은 또한 너무 많은 데이터를 요청하지 않기 위해 처음 100 행으로 제한됩니다. 이전에는 CouchDB가 실제로 필요하지 않은 일부 데이터가 있음을 알았습니다. 프론트 엔드에서 필요한 데이터 만 추출한 다음 반환하는 것이 유용합니다. 나는 그것을 다른 날의 최적화로 남겨두기로 결정했습니다. <p>
</p>
<onse onse> handleresponse는 couchdb에 의해 반환 된 JSON 문자열을 배열로 변환합니다.
<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"># 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
</pre><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div>
<er> root 디렉토리에서 Composer.json을 열고 요구 사항 바로 아래에 다음을 추가 한 다음 Composer Dump-Autoload를 실행하십시오. 이를 통해 SRC/App 디렉토리 내의 모든 파일을 자동로드하여 앱 네임 스페이스 내에서 사용할 수 있도록 할 수 있습니다.
<p>
<in> 마지막으로 홈 컨트롤러를 컨테이너에 주입하십시오. src/fectencies.php 파일을 열고 다음을 하단에 추가하여 다음을 수행 할 수 있습니다.
</in></p>
<to>이를 통해 나뭇 가지 렌더러를 홈 컨트롤러로 전달하고 라우터에서 홈 컨트롤러에 액세스 할 수 있습니다.
<plate> 홈 페이지 템플릿 <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><span>docker build -t elecnix/docker-geocouch:1.6.1 .
</span></pre><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div>
<to> 이제 프론트 엔드를 진행할 준비가되었습니다. 먼저 프로젝트 디렉토리의 루트에서 템플릿/index.html 파일을 만들고 다음을 추가하십시오.
<p>
</p>에는 앱이 사용하는 다양한 라이브러리의 스타일과 앱 스타일이 있습니다. 에는 위치, 맵 컨테이너 및 새로운 위치를 저장하기위한 모달을 검색하기위한 텍스트 필드입니다. 아래는 앱에 사용 된 스크립트입니다. Google지도 스크립트에서 자신의 API 키로 your_googlemap_apikey를 교체하는 것을 잊지 마십시오.
<cript cript> javaScript
<j> 기본 JavaScript 파일 (public/js/main.js)의 경우 먼저 전체 파일 전체에 필요한 값을 저장하기위한 변수를 만듭니다.
</j></cript></to></plate></to></er></onse></ok></id></qu></is></il></ouch>
<span>docker create -ti -p 5984:5984 elecnix/docker-geocouch:1.6.1 </span><span>docker start <container id> </span>
<span>curl localhost:5984 </span>
Fetchpokemon 함수는 이전에 현재 볼 수있는 맵의 영역에 표시된 포켓몬을 가져 오는 일을 담당합니다.
<span>git clone git@github.com:elecnix/docker-geocouch.git </span><span>cd docker-geocouch </span>
이것은 포켓몬의 이름을 입력하기위한 텍스트 필드의 자동 검색 기능을 추가하기위한 코드입니다. 각 제안을 렌더링하는 데 사용되는 HTML을 사용자 정의하기 위해 RenderItem 기능이 지정됩니다. 이를 통해 Pokemon의 ID를 데이터 속성으로 추가하여 제안이 선택되면 Pokemon_ID 필드의 값을 설정하는 데 사용합니다.
<p>
<location> 저장 위치 버튼을 누르면 서버에 Pokemon 위치를 CouchDB에 추가하라는 요청이 이루어집니다.
</location></p>
스타일
> public/css/styles.css 파일을 만들고 다음 스타일을 추가하십시오 :
<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"># 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
</pre><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div>
<ouch> couchdb 보안
<c> 기본적으로 couchdb는 모두에게 열려 있습니다. 이것은 일단 인터넷에 노출되면 누구나 데이터베이스에서 혼란을 일으킬 수 있음을 의미합니다. 누구나 HTTP 요청을하기 위해 Curl, Postman 또는 기타 도구를 사용하여 모든 데이터베이스 작업을 수행 할 수 있습니다. 실제로이 임시 상태에는 "관리자 당사자"라는 이름이 있습니다. 이전 튜토리얼 에서이 작업을 수행했으며 새 데이터베이스,보기 및 디자인 문서를 이전에 만들었을 때조차도 보았습니다. 이러한 모든 작업은 서버 관리자에 의해서만 수행 할 수 있지만 로그인하지 않고 수행했습니다. 아직도 확신하지 않습니까? 로컬 컴퓨터에서 이것을 실행 해보십시오 : <p>
</p>
<the> CouchDB 설치에 서버 관리자가 아직 없으면 다음과 같은 응답을 얻을 수 있습니다.
<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><span>docker build -t elecnix/docker-geocouch:1.6.1 .
</span></pre><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div>
Yikes, 맞습니까? 좋은 소식은 쉬운 수정이 있다는 것입니다. 서버 관리자를 만듭니다. 다음 명령으로 그렇게 할 수 있습니다
<h3>
<creat creat> 위의 명령은 암호“mySupersecurePassword”와 함께“kami”라는 새 서버 관리자를 만듭니다.
기본적으로 CouchDB에는 서버 관리자가 없으므로 관리자 당사자가 끝납니다. 서버 관리자는 신과 같은 힘을 가지고 있으므로 하나 또는 두 개만 만드는 것이 좋습니다. 그런 다음 CRUD 작업 만 수행 할 수있는 소수의 데이터베이스 관리자를 만듭니다. 다음 명령을 실행하여 그렇게 할 수 있습니다
</creat>
</h3>
<it> 성공하면 다음과 유사한 응답을 반환합니다.
<p>
<try> 이제 다른 데이터베이스 이름으로 이전부터 같은 명령을 시도 할 수 있습니다.
</try></p>
<d d> 그리고 couchdb는 당신에게 소리 쳤다 :
<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><span>docker create -ti -p 5984:5984 elecnix/docker-geocouch:1.6.1
</span><span>docker start <container id>
</span></pre><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div>
<work>이 작동하려면 이제 URL과 같은 URL에 사용자 이름과 비밀번호를 제공해야합니다.<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><span>git clone git@github.com:elecnix/docker-geocouch.git
</span><span>cd docker-geocouch
</span></pre><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div>
<that that> 알았어, 그게 다야? 글쎄, 당신이 한 유일한 일은 서버 관리자 만 수행 할 수있는 데이터베이스 작업을 제한하는 것이 아닙니다. 여기에는 새 데이터베이스 만들기, 데이터베이스 삭제, 사용자 관리, 모든 데이터베이스 (시스템 테이블 포함)에 대한 풀 아드먼 액세스, 모든 문서에 대한 CRUD 작업 등이 포함됩니다. 이로 인해 인증되지 않은 사용자는 여전히 모든 데이터베이스에서 CRUD 작업을 수행 할 수있는 힘이 있습니다. 당신은 이불에서 로그 아웃하고, 엉망으로 만들고 싶은 데이터베이스를 선택하고 그 일을 할 수 있습니다. CouchDB는 여전히 해당 작업을 행복하게 수행 할 것입니다
<do> 그래서 나머지 구멍을 어떻게 패치합니까? Writ 이불에서 서버 관리자 또는 데이터베이스 관리자 계정을 사용하여 로그인하고 작업하려는 데이터베이스를 선택하고 새 설계 문서를 만듭니다. id를 _design/blockanonymouswrites로 설정하고 validate_doc_update라는 필드를 추가하고 다음과 같은 값을 설정하십시오.
<p>
<of> 문서의 새 버전, 기존 문서 및 사용자 컨텍스트는이 기능에 대한 인수로 전달됩니다. 확인해야 할 유일한 것은 데이터베이스 이름, 작업을 수행하는 사용자의 이름 및 사용자에게 할당 된 다양한 역할을 포함하는 USERCTX입니다.
<j> SecOBJ는 네 번째 논쟁으로 전달되지만 실제로는 작업 할 필요는 없습니다. 그래서 생략 된 이유입니다. 기본적으로 SECOBJ는 데이터베이스에서 관리자 권한이 설정된 내용을 설명합니다.
<added> 값을 추가 한 후에는 값을 추가 한 후 디자인 문서를 저장하고 로그 아웃 한 다음 새 문서를 만들거나 기존 문서를 업데이트하고 COUCHDB가 불만을 보려고합니다.
</added></j></of></p> <p>
<check> 사용자 이름 만 확인하고 있기 때문에 공격자는 단순히 사용자 이름을 추측하고 암호에 값을 제공 할 수 있다고 생각할 수 있습니다. 글쎄, CouchDB는 디자인 문서가 실행되기 전에 사용자 이름과 비밀번호가 올바른지 확인하기 때문에 실제로는 아닙니다.
또는 단일 데이터베이스에 사용자가 많으면 역할을 확인할 수도 있습니다. 아래 기능은 "Pokemon_master"의 역할이없는 모든 사용자에게 오류가 발생합니다.
</check></p>
<to> CouchDB를 보호하는 방법에 대한 자세한 내용은 다음 리소스를 확인하십시오.<ul>
<b> Couchdb 결정 안내서 - 보안
<guide> CouchDB 인증 및 보안에 대한 결정적인 안내서
<v> 보안 기능 개요
<ation> 문서 업데이트 유효성 검사 <li>
</li>
<app> 앱 보안 <li>
<ap> 데이터베이스에 적용한 보안 조치를 사용하기 위해 앱을 업데이트하여 마무리하겠습니다. 먼저 .env 파일을 업데이트하십시오. IP 주소와 포트만으로 base_uri를 변경 한 다음 생성 한 CouchDB 사용자의 사용자 이름과 비밀번호를 추가하십시오.
</ap>
</li>
그런 다음 새로운 세부 사항을 사용하려면 DB 클래스의 생성자를 업데이트하십시오.
<li>
</li> 결론
그게 다야! 이 튜토리얼에서는 CouchDB로 Pokemon Spawn 위치 레코더 앱을 만드는 방법을 배웠습니다. GeoCouch 플러그인의 도움으로 공간 쿼리를 수행 할 수 있었고 CouchDB 데이터베이스를 보호하는 방법을 배웠습니다.
<c> 프로젝트에서 couchdb를 사용하십니까? 무엇 때문에? 이 작은 프로젝트에 추가 할 제안 / 기능이 있습니까? 의견에 알려주십시오! </c></app></ation></v></guide></b>
</ul>
<questions> 포켓몬 스폰 위치에 대한 질문
Pokemon Go에서 Pokemon Spawn 위치를 찾을 수있는 방법은 무엇입니까? <p> Pokemon Go의 Pokemon Spawn 위치는 일반적으로 높은 세포 활동이있는 영역에서 발견됩니다. 이 지역에는 공원, 쇼핑 센터 및 기타 공공 장소가 포함될 수 있습니다. Pokemon Go 앱은 GPS를 사용하여 위치를 추적하고 주변 환경을 기반으로 포켓몬을 스폰합니다. Pokemap.net과 같은 타사 앱 또는 웹 사이트를 사용하여 스폰 위치를 찾을 수도 있습니다. 그러나 타사 서비스를 사용하면 Pokemon Go의 서비스 약관을 위반할 수 있으며 금지를 초래할 수 있습니다. </p> Pokemon Go의 생물체는 무엇이며 스폰 위치에 어떤 영향을 미칩니 까? <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><span>git clone git@github.com:elecnix/docker-geocouch.git
</span><span>cd docker-geocouch
</span></pre><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div> <in> 포켓몬 GO의 생물체는 어떤 유형의 포켓몬이 생성되는지에 영향을 미치는 특정 지리적 영역입니다. 예를 들어, 물 유형 포켓몬은 물 바디 근처에서 생성 될 가능성이 높으며 잔디 형 포켓몬은 공원이나 숲에서 생성 될 가능성이 높습니다. 다른 생물체를 이해하면 특정 유형의 포켓몬이 생성 될 가능성이있는 위치를 예측하는 데 도움이 될 수 있습니다. <p> 포켓몬 스폰 위치를 어떻게 녹화 할 수 있습니까? </p> 다양한 방법을 사용하여 포켓몬 스폰 위치를 녹화 할 수 있습니다. 한 가지 방법은 CouchDB와 같은 데이터베이스를 사용하여 Pokemon Spawns의 위치를 저장하는 것입니다. 여기에는 Pokemon Go API를 사용하여 스폰 데이터를 검색 한 다음이 데이터를 CouchDB에 저장하는 것이 포함됩니다. 그런 다음이 데이터를 사용하여 스폰 패턴을 분석하고 미래의 스폰 위치를 예측할 수 있습니다. <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"># 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
</pre><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div> 포켓몬 스폰 위치 데이터를 사용하여 향후 스폰을 예측할 수 있습니까? <h2> </h2> 예, Pokemon Spawn 위치 데이터를 사용할 수 있습니다. 미래의 스폰을 예측하십시오. 데이터를 분석하면 스폰 위치 및 시간에서 패턴을 식별 할 수 있습니다. 이것은 미래에 특정 유형의 포켓몬이 언제, 언제 스폰 될지 예측하는 데 도움이 될 수 있습니다.<risk> 타사 앱이나 웹 사이트를 사용하여 포켓몬 스폰 위치를 찾는 것과 관련된 위험이 있습니까? <h3> 예, 타사 앱이나 웹 사이트를 사용하여 포켓몬 스폰 위치를 찾는 것과 관련된 위험이 있습니다. 이러한 서비스는 Pokemon Go의 서비스 약관을 위반할 수 있으며 금지가 발생할 수 있습니다. 또한 이러한 서비스는 항상 정확하거나 최신 정보를 제공하지는 않을 수 있습니다. </h3> 픽셀몬 모드를 사용하여 스폰 위치를 찾을 수있는 방법은 무엇입니까? <p> 마인 크래프트 용 픽셀몬 모드를 찾을 수 있습니다. 게임 내 포켓몬 스폰 위치. 이 모드에는지도에서 포켓몬의 스폰 위치를 보여주는 기능이 포함되어 있습니다. 이 기능을 사용하여 게임 내에서 Pokemon을 찾아 잡을 수 있습니다. </p> Tenorshare Pokemon Go Map은 무엇이며 어떻게 작동합니까? <h3> </h3> Tenorshare Pokemon Go지도는 타사 서비스입니다. 그것은 Pokemon Spawn 위치의지도를 제공합니다. 지도는 실시간으로 업데이트되며 산란하는 포켓몬 유형 및 정확한 위치에 대한 정보가 포함되어 있습니다. 그러나이 서비스를 사용하면 Pokemon Go의 서비스 약관을 위반하고 금지가 발생할 수 있습니다. <p> Pogomap 웹 사이트를 사용하여 Pokemon Spawn 위치를 찾을 수 있습니까? Pogomap 웹 사이트는 Pokemon Spawn 위치지도를 제공합니다. 지도는 실시간으로 업데이트되며 산란하는 포켓몬 유형 및 정확한 위치에 대한 정보가 포함되어 있습니다. 이 웹 사이트를 사용하여 해당 지역에서 포켓몬을 찾아 잡을 수 있습니다. </p> Pogomap 웹 사이트에 기여할 수 있습니까? <h3> 예, Pokemon Spawn 위치를보고하여 Pogomap 웹 사이트에 기여할 수 있습니다. 이를 통해지도를 최신 및 정확한 상태로 유지하는 데 도움이됩니다. 그러나 허위 정보를보고하면 웹 사이트에서 금지가 발생할 수 있습니다. </h3> 포켓몬 스폰 위치를 찾는 다른 방법이 있습니까? <p> 예, 포켓몬 스폰을 찾는 다른 방법이 있습니다. 위치. 예를 들어, 플레이어가 스폰 위치에 대한 정보를 공유하는 로컬 포켓몬 GO 커뮤니티 또는 포럼에 가입 할 수 있습니다. 또한 근처의 게임 내 기능을 사용하여 현재 위치에 가까운 포켓몬을 찾을 수 있습니다.</p></risk></in></questions></to></do></that></work></d></it></the></c></ouch>
위 내용은 couchdb로 포켓몬 스폰 위치 레코더를 만드는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!