TIL - 0806

[프로젝트 개발] 오픈 API 사용하기 - 네이버 Geocoder를 활용한 주소 검색 API

API 적용할 곳

  • 도로명 주소를 입력하고, 상세주소는 유저가 마커를 찍으면 좌표가 나오는데 좌표를 가지고 변환하는 형식으로
    • 아니면 도로명 주소를 입력했을 때 상세주소 입력하도록

API 살펴보기

  • Maps API에 모듈 형태로 제공함 : 변환하는 역할의 모듈인 Geocoder를 사용함
  • geocoder api docs

API 사용해서 데모만들기 & 데이터 보관 생각해보기

  • 코드
    • 좌표값을 받아 저장해두고 리뷰 글을 열 때 좌표에 맞는 위치 보여주기 하면 될 듯 : Coordinate 객체?
function search(addr) {
    naver.maps.Service.geocode({
        address: addr
    }, function(status, response) {
        if (status !== naver.maps.Service.Status.OK) {
            return alert('잘못된 주소입니다!');
        }

        var result = response.result, // 검색 결과의 컨테이너
            items = result.items; // 검색 결과의 배열

        console.log(items);
    });
}
  • API 호출 결과(예시)

OS

프로세스와 쓰레드

  • 프로세스 : 프로그램이 메모리에 로드되어 CPU에 의해 실행될 수 있는 상태를 프로세스라 함
    • 코드 영역 : 프로그램의 코드가 저장되는 공간, CPU가 불러와 실행시킴
    • 데이터 영역 : 전역변수, static 변수 등이 저장되는 공간
  • 쓰레드 : CPU가 프로세스 코드를 실행시키는 흐름, 최소 1개를 가짐, 프로그램에 따라 멀티쓰레드를 지원함
    • 멀티쓰레드 프로그램일 때 1개의 코어를 사용하는게 아니라 CPU가 가진 여러개의 코어를 모두 활용하여 동시적으로 처리 : 이전에는 1개의 코어가 쓰레드를 번갈아가며 조금씩 처리하는 줄 알았는데 코어가 놀고 있으면 그만큼 활용해서 처리

자료구조

  • 데이터를 어떻게 저장할 것인가 구조를 정하는 것 : 효율적인 사용(시간, 공간)을 위해

배열

  • 연속적으로 여러 같은 타입의 데이터를 담을 때 사용하는 자료구조
  • 메모리 공간을 데이터타입의 (개수 * 크기)만큼 할당받음
    • int 4개를 저장하는 배열이라면 - 16byte(자바 기준) : byte 단위로 메모리 주소를 가짐(100부터 시작한다면 103까지 하나의 데이터….)
    • 메모리주소를 그대로 사용하지않고 인덱스를 사용함 : 0 ~ n-1까지
    • 2, 3차원 배열을 만들 수도 있음 : 관계도를 나타낼 수도 있겠음
  • 인덱스로 빠르게 찾아갈 수 있으므로 검색에는 유리하지만, 중간에 쓰기 작업을 할 수도 있는 경우에는 불리함(그 자리부터 이후에 저장된 데이터를 밀고 저장해야함)
  • 활용해보기