#  원티드 프리온보딩 백엔드 인턴십 7th : 231106 TIL

- Author: @laetipark
- Published: 2023-12-02
- Updated: 2023-12-31
- Source: http://blex.me/@laetipark/%EC%9B%90%ED%8B%B0%EB%93%9C-%ED%94%84%EB%A6%AC%EC%98%A8%EB%B3%B4%EB%94%A9-%EB%B0%B1%EC%97%94%EB%93%9C-%EC%9D%B8%ED%84%B4%EC%8B%AD-7th-231106-til
- Tags: 백엔드, til, nodejs, nestjs, 원티드, github, 프리온보딩

---

### 1️⃣ 할당된 업무에 대한 진행상황.
`In Progress`: 맛집 조회 API  
`Done`: 마이그레이션, 사용자 회원가입 및 로그인 API  
`Not Started`: 사용자 정보와 정보 변경 및 맛집 조회 API

### 2️⃣ Today I Learned
- 프로그램에서 제공해준 두 좌표 간의 거리 구하기 코드를 보고, Haversine 공식을 이용한 지구 두 좌표 사이 거리 구하기에 대해 정리해보았습니다.
- [Typescript : 지구 두 좌표 사이 거리 구하기](https://blex.me/@laetipark/typescript-%EC%A7%80%EA%B5%AC-%EB%91%90-%EC%A2%8C%ED%91%9C-%EC%82%AC%EC%9D%B4-%EA%B1%B0%EB%A6%AC-%EA%B5%AC%ED%95%98%EA%B8%B0)
```typescript
/** 두 지점 위치의 거리 반환
  * @param point1 좌표 1
  * @param point2 좌표 2
  */
latLonToKm(point1: [number, number], point2: [number, number]) {
	// 두 좌표를 각각 위도와 경도 변수로 저장
	const lat1 = point1[1];
	const lon1 = point1[0];
	const lat2 = point2[1];
	const lon2 = point2[0];

	const R = 6371; // 지구의 반지름 길이 상수
	// 위도 및 경도 차이를 라디안 값으로 계산
	const dLat = this.toRadians(lat2 - lat1);
	const dLon = this.toRadians(lon2 - lon1);

	// 각 지점의 위도를 라디안 값으로 변환
	const radLat1 = this.toRadians(lat1);
	const radLat2 = this.toRadians(lat2);

	// Haversine 공식을 사용하여 두 지점 사이의 거리 계산
	const a =
				Math.sin(dLat / 2) * Math.sin(dLat / 2) +
				Math.sin(dLon / 2) *
				Math.sin(dLon / 2) *
				Math.cos(radLat1) *
				Math.cos(radLat2);
	const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));

	// 거리 반환 (단위: 킬로미터)
	return R * c;
}

/** 각도 라디안 값을 반환 */
private toRadians(degrees: number) {
	return degrees * (Math.PI / 180);
}
```

### 📁 수행 기업 과제 Repository
- [[ 여기가자 ] 지리기반 맛집 추천 서비스 RESTful API 서버, laetipark, github](https://github.com/laetipark/lets-go-here)
