Language/Java
-
전국 동/리/시군구 데이터 수집Language/Java 2025. 6. 25. 15:22
공공데이터포털공공데이터포털에서 행정안전부_행정표준코드_법정동코드 API를 사용해 보도록하겠다.이미 활용신청한 상태이고 목록을 보면 아래와 같다. 데이터 찾기 > 데이터목록 > `시군구 AND 법정동코드` 검색 데이터 찾기 > 데이터목록 > `시군구 AND 법정동코드` 검색 > 국토교통부_행정구역법정동코드 Postman 테스트 보시는것과 같이 locatadd_nm을 파라미터에서 제외하면 전지역의 데이터가 나온다.필요하면 주소를 가지고 네이버나 카카오의 지도 API로 위/경도를 가져오면 될듯하다. 나머지는 입맛에 맞게 요리하면 될듯하다.
-
대한민국 지하철 데이터 수집 - 방법2Language/Java 2025. 6. 25. 14:56
국토교통부에서 받는 방법도 있다. 1. 파일데이터개발데이터 > 파일데이터 > 표준데이터 역사정보(전체기관) 파일데이터로 내려받기이미지를 보면 알겠지만 지하철코드/명, 주소, 위도/경도 등 중요한 정보들은 모두 있다.하지만 포멧도 안맞고 급조한 파일같다.믿어도 되겠지? 2. Open API개방데이터 > Open API > 도시철도 전체노선정보 현재 활용신청은 한 상태고 바로 사용하게 해주지는 않는것 같다.아마도 승인해주면 이메일로 접속 토큰을 줄것 같은데 문제는 출력되는 리턴값들을 보니 위도/경도는 없는것 같다.주소라던가 위/경도가 없다면 다른API과 연동해서 사용해야할듯하다. `대한민국 지하철 데이터 수집 - 방법1`, `대한민국 지하철 데이터 수집 - 방법2` 등 두가지 방법을 알아 보았다. 릴리..
-
대한민국 지하철 데이터 수집 - 방법1Language/Java 2025. 6. 25. 11:46
1. 서울 열린데이터광장 데이터 수집1.1. API 키 발급서울 열린데이터광장 사이트에 접속 후 회원가입이용안내 > Open API 소개일반 인증키 신청 및 조회 1.2. OpenAPI 정보 조회공공데이터 > 공공데이터 > OPENAPI > `지하철역 정보` 검색 검색된 서울교통공사_노선별 지하철역 정보 API 주소를 기준으로 데이터를 가져올 수 있다.// 서울교통공사_노선별 지하철역 정보String service = "SearchSTNBySubwayLineInfo";String apiUrl = String.format("http://openapi.seoul.go.kr:8088/%s/json/SearchSTNBySubwayLineInfo/1/1000/", apiKey); 검색된 서울시 역사마스터 정보..
-
Spring Boot의 주요 이벤트 정리Language/Java 2024. 12. 27. 17:41
aws 서버에 소스를 배포하기 전후 처리를 appspec.yml에서 ApplicationStart 및 ValidateService hooks을 사용해서 처리하려다가 스프링에서 처리하는게 안정적이고 효과적일듯 하여 정리해 둔다. Spring Boot의 주요 이벤트이벤트 실행 순서대로 정리해 보았다.1. ApplicationStartingEvent애플리케이션이 가장 처음 시작될 때 발생환경 변수나 다른 설정들이 로드되기 전에 발생로깅 초기화 외의 어떤 처리도 하기 전 상태2. ApplicationEnvironmentPreparedEvent환경 변수들이 준비된 후 발생application.properties/yml 파일이 로드된 시점아직 ApplicationContext는 생성되기 전 상태3. Applicat..
-
logback 로그 설정Language/Java 2024. 10. 29. 10:51
P6spy문제p6spy를 활용해서 로그를 설정해서 사용을 하였더니 문제가 발생하였다.@Transactional(readOnly = true)public void testReadOnly() {}이렇게 설정하게 되면TransactionSynchronizationManager.isCurrentTransactionReadOnly()가 true이고 아래 ReplicationRoutingDataSource 로직에 따라 secondaries DB를 바로 보게 되어야 하는데 testReadOnly 메소드 안에서 TransactionSynchronizationManager.isCurrentTransactionReadOnly()를 찍어보면 true가 리턴되는데 ReplicationRoutingDataSource에 설정된 ..
-
p6spy 로그 설정 방법Language/Java 2024. 9. 27. 14:53
스프링부트 설정P6spyConfig이 클래스는 스프링 애플리케이션이 시작될 때 자동으로 실행되며, P6Spy의 로그 포맷을 P6spyPrettySqlFormatter라는 사용자 정의 포맷터로 설정하는 역할을 한다. 이로 인해, P6Spy가 데이터베이스 쿼리를 로그할 때 P6spyPrettySqlFormatter에 정의된 형식대로 로그를 출력하게 된다.import com.p6spy.engine.spy.P6SpyOptions;import jakarta.annotation.PostConstruct;import org.springframework.context.annotation.Configuration;@Configurationpublic class P6spyConfig { @PostConstruct pu..
-
Batch에서 FCM 발송 오류 트러블슈팅Language/Java 2024. 9. 12. 11:24
공지사항 및 푸시 발송 컨텐츠를 등록해두고 전송요청을 하게되면 배치에서 푸시를 받아야 할 대상건들을 추려내서 발송하는 형태로 서비스 중이었다. 그런데 한달쯤 전부터 푸시의 발송 실패건들이 늘기 시작했다. 푸시발송에 실패한 토큰들은 앱을 삭제하거나 거부하였을때 DB에서 물리적으로 삭제하도록 개발되어 있었는데 그러다 보니 매일 발송대상에 올라가는 푸시건수들이 실패한 건수만큼 줄기 시작하였다.. OTL.. 원인을 찾자! 원인파악 및 트러블슈팅com.google.firebase.messaging.FirebaseMessagingException: Operation is not implemented, or supported, or enabled.다른 오류들도 있었지만 포인트는 저거였다. 구글링 해보니 10건 전송하..