[PHP/NODE.JS] 신우편번호(기초구역번호) 검색 예제
말 그대로 신우편번호 검색 예제로, PHP와 Node.js로 만들어진 것이다.
참고로 위 예제는 아톰서버에서 돌아가고 있다는 사실을 알아야 한다.
사용방법은 우선 DB파일을 받은 뒤 압축을 풀어준다.
이후 첨부파일 중 PostalCodeConverter.exe를 다운받아 실행하여(.NET Framework 4.0 이상 필요) 압축을 풀어준 폴더를 지정하면 목록에 파일이 뜬다.
이때 지역이 잘못 표시되었거나 했으면 선택 후 우측 지역선택을 골라 정정하면 된다. (‘지정 안 함’으로 하면 해당 파일은 건드리지 않고 건너뛴다.)
테이블을 지역별로 분리하면 insert 구문의 테이블명이 postal_code_지역 식으로 나온다. 예제를 적용하려면 체크하지 말고 그냥 둔다.
변환을 누르고 기다린다.
한참을 두면 압축을 풀었던 폴더에 postal_code_뭐시지.sql 형식으로 나온다.
이걸 첨부파일 중 postal_code.structure.sql 을 이용하여 만든 테이블에 넣어주고 (데이터 넣는 것 외에도 인덱싱을 해야 하기 때문에 굉장히 오래 걸린다.) 이후 php 혹은 Node.js 파일을 올려서 실행해보면 끝. 참쉽죠?
참고로 node.js의 경우, express, ejs, mysql등의 모듈이 필요하다. 뷰엔진은 당연히 ejs사용(다만 편집의 용이성을 위해 임시로 뷰파일 확장자는 jsp로 해놓은 상태다.)
PHP의 경우, mysqli 익스텐션이 필요하다. (물론 최신 버전의 PHP라면 다 설치되어 있음)
사실 이거 당초 계획은 PHP, Node.js, ASP.NET(C#)으로 만들고 DB도 MySQL, MongoDB, SQL Server등 3개를 타깃으로 잡고 PostalCodeConverter를 만들려 했으나… 귀찮은 것도 귀찮은 것이었지만 성능이 제대로 안 나와서 일단 MySQL만 되도록 했다. 이것도 어떻게 잘 만들면 훨씬 더 빨리 만들 수 있을 것 같긴 한데…
그리고 변경분도 적용하는 것을 목표로 했으나 그냥 보류했다. 나중에 다시 만들어 올려야 할 듯… 사실 이게 더 중요하다. 이전과 달리 데이터 양이 방대하고 시행한지 오래되지 않았기 때문에 변경되는 데이터가 적지 않은 편이다. 일단 개별적으로 편집할 수 있도록 소스를 올려놨다(PostalCodeConverter_src.zip) Visual Studio 2013으로 작성. 간단한 C#이니 어렵진 않을 듯… 그게 아니라면 적어도 1년마다 한 번씩 데이터를 통째로 업데이트 하던지 해야한다.
이전에는 PostalCodeConverter를 Flash Builder로 짰지만 그냥 C#으로 짠게 더 성능이 잘 나와서 이걸로 교체
PostalCodeConverter 소스는 여기에 있음. git clone을 하거나 아니면 다운로드에서 Download Repository 하면 됨.
P.S. 지번의 경우 행정동만 검색되는 듯. 근데 일부는 아예 동 데이터가 빠져서 존재하는 주소임에도 안 나오는 경우가 있음… 그럴땐 교차검색 하면 다 나옴.