사이드 프로젝트를 앱스토어에 배포하기로 결정하면서, 애플로그인 구현이 필요하게 되었다. 과정이 생각보다 까다로워서 다음에 구현할 일이 있을 때 삽질하지 않기 위해 기록해둔다. 애플 공식문서에 나와있는 글을 보면, 타사 또는 소셜 로그인 서비스를 사용하는 앱은 특정 기능이 있는 기타 로그인 서비스를 함께 제공해야 한다. (https://developer.apple.com/kr/app-store/review/guidelines/#login-services)뭔말인지 잘 이해 안되는데, 이런 저런 글들을 찾아보니 여튼 소셜 로그인 쓸거면 애플로그인 달아야되는듯 하다. 1. 애플 개발자 사이트에서 애플 로그인에 필요한 설정 하기https://developer.apple.com/account/resources/id..
사이드 프로젝트를 하면서, 카카오 로그인을 구현하게 되어 다음에 또 헤매지 않도록 정리해 둔다.spring security는 사용하지 않고, spring boot 기반으로 구현하였다. 아래는 카카오 개발자 공식 문서에 나와있는 oauth 기반 인증 과정이다.https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api과정을 간단하게 요약해보면,1. 카카오 인증서버로부터 인가 코드를 받는다.2. 받은 코드로 access, refresh Token을 받는다.3. 받은 토큰으로 카카오 유저 정보를 가져온다.4. 유저정보를 이용해 내 서비스에서 로그인/회원가입을 처리한다. (선택) Resource Server - OAuth 2.0 서비스를 제공하고 Resour..
failover 관련된 학습을 하면서 추가로 공부한 설정값이다. DNS는 도메인 이름과 매핑된 IP 주소를 저장해 놓고 요청이 오면 해당 도메인에 맞는 IP를 반환해 주는 역할을 한다. (CNAME으로 도메인과 도메인을 매핑해주기도 함) 그리고 어플리케이션에서는 도메인에 해당하는 IP를 가져오기 위해 DNS 에 요청을 보내고 이 과정을 dns lookup 이라고 한다.IP를 가져오는 과정은 비용이 많이 들기 때문에, JVM의 경우 가져온 IP를 캐싱하고 있는데, 이 캐싱 유지 시간을 DNS Cache TTL 이라고 한다.AWS 에서는 캐싱 시간을 5초 정도로 설정해 둘것을 권장하고 있다. (https://docs.aws.amazon.com/ko_kr/sdk-for-java/latest/developer-..
pnpm 을 사용하는데 8 버전대라서 9버전으로 업그레이드 해야하는 일이 있었다.간단하게 할 수 있을줄 알았는데, 구글링해서 찾은 이런저런 명령어를 다 따라 쳐봐도 삭제가 안되는 문제가 있었다. npm install -g pnpmnpm -g ls위 명령어를 사용해 pnpm 최신 버전이 설치되어있는걸 확인했다. 그런데도 pnpm -v로 확인하면 8버전대가 보이는 문제가 계속 발생했다.which pnpm으로 확인해보니 nvm에 있는 pnpm을 사용하고 있는게 문제였다. 기존에 nvm으로 노드 20.11 버전대를 사용하고 있었는데, 이 때 pnpm이 8버전대로 자동 설치되어 있고 이 pnpm에 환경변수?가 연결되어 있어 아무리 설치해도 8버전대가 보이는 것이었다. 노드 버전도 업그레이드 해야하기 때문에 노드 ..
@PostMapping public ResponseEntity saveGame(@Validated @RequestBody GameDto.Request gameDto) { gameService.saveGame(gameDto); return ResponseEntity.status(HttpStatus.CREATED).build(); }위와같이 컨트롤러를 구현한 뒤 postman을 사용해 post request를 요청해 주었는데, 자꾸 데이터가 null로 나오는 문제가 발생했다. 도대체 왜이러나 하면서 빼먹은 부분이 있는지 생각해봤다. 이유는 바로 DTO에 setter가 없었던 것이였다. 데이터를 setter를 이용해 객체를 넣기 때문에 setter가 없으면 값을 할당하지 못해 null이 나오는 것으로 생각..
https://www.acmicpc.net/problem/2212 2212번: 센서 첫째 줄에 센서의 개수 N(1 ≤ N ≤ 10,000), 둘째 줄에 집중국의 개수 K(1 ≤ K ≤ 1000)가 주어진다. 셋째 줄에는 N개의 센서의 좌표가 한 개의 정수로 N개 주어진다. 각 좌표 사이에는 빈 칸이 하나 있 www.acmicpc.net 문제풀이 사고력이 필요한 문제다. 문제를 간단히 요약해보면, N개의 센서가 정수 좌표이 있으며 중복해 있을 수 있다. K개의 집중국이 있고 집중국은 아무데나 놔도 되고 모든 센서를 수신하면서 수신 가능영역이 최소인 위치에 놓아야 한다. 문제 접근은 이런 방식으로 해 보았다. 센서가 이리저리 놓여있을 텐데, 어느 지점 마다 끊어서 집중국을 설치해야 할까? 센서 사이의 거리가..
반복문을 사용하지 않고 removeIf 를사용하면 코드를 얼마나 줄일 수 있는지 알아보자. 리스트가 주어졌을 때 리스트의 원소를 삭제하기 위해 아래와 같은 방법으로 작성하는 경우가 많다. 아래 예시는 referenceCode의 맨 앞자리가 정수인 객체를 삭제한다. class Transaction { String referenceCode; public Transaction(String referenceCode) { this.referenceCode = referenceCode; } public String getReferenceCode() { return referenceCode; } @Override public String toString() { return referenceCode; } } 반복을 돌..