본문 바로가기

분류 전체보기149

[백준] JAVA 자바 : 회의실 배정 (1931번) 꽤 오래 걸리긴 했는데, 생각보다 되게 간단한 문제였다. 일단 배열을 정렬한 후 하나씩 넣으면서, 앞서 배정한 회의의 끝나는 시간보다 시작 시간이 더 뒤에 오면서, 회의 진행 시간이 가장 짧은 회의를 배정하면 된다. 그래서 이차원 배열의 개수를 3개로 만들고, 인덱스 0에는 시작 시간, 1에는 끝나는 시간, 2에는 회의 진행 시간을 할당했다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; import java.util.Arrays; import java.util.Comparator; public class AssignConfe.. 2024. 2. 23.
[도착 알리미 SUFY] 8. 전역 출발 시 푸시 알림 보내기 거의 막바지에 다다랐다...이제 전역을 출발하면, 해당 역에 알림이 등록된 계정에 푸시 알림을 보내면 된다.사실 6번 포스트에서 목적지 전역을 출발할 때 특정 코드를 실행하는 로직은 이미 구현해 놨고, 7번 포스트에서 푸시 알림을 전송하는 메서드도 구현해 놨기 때문에 이 둘을 그냥 합쳐주면 된다.그러니까... 6번 포스트에서 작성한 로직을 조금만 수정해주면 되는 것. ...라고 했는데, Alarm 테이블에 저장한 값이 username이 아니라 User(Account 객체)였네...?ㅋㅋㅋ... 저번 포스트에서 SendPushDTO에 username을 넣어놨어서... User로 수정해 주었다...username은 Alarm 테이블에 없어서 활용할 수 없으니까...@Getter@Setter@RequiredA.. 2024. 2. 22.
[Spring] 내가 보려고 만든 IoC와 DI 간단 정리 IoC와 DI는 스프링의 기본 중 기본이다. 사실상 스프링을 사용하는 이유가 IoC와 DI라고 봐도 무방할 정도...? 적어도 나는 그렇다 ㅋㅋ 이렇게 편리하게 자바를 쓸 줄이야 IoC (Inversion Of Controll, 제어의 역전) 내가 만든 오브젝트들을 내가 관리하는 게 아니라 스프링에서 관리한다. 예를 들어 Stringbuilder sb = new StringBuilder() 라는 코드를 통해 Stringbuilder 객체를 만들었다고 하자, 이걸 @Bean 등의 어노테이션 등으로 스프링 Bean에 등록하면, 이제 이 객체는 스프링에서 관리하게 된다! 그래서 sb를 내가 사용해야 하는 상황이 닥칠 때마다, 나는 스프링에게 "sb 내놔!" 하고 요청할 수 있는 것... 그럼 스프링한테 어떻게.. 2024. 2. 21.
[도착 알리미 SUFY] 7. FCM을 활용하여 푸시 알림 전송하기 이제... 드디어 알림을 보낼 때이다.아니 그런데 카카오 API 문서에 있는 메시지 전송은 SUFY 채널에서 사용자에게 메시지를 보낼 수 있는 게 아니라, 사용자가 자신에게 보내거나 사용자의 친구에게 메시지를 보내는 용도로 사용되는 것이라는 이슈가 있었다... 그래서... 진짜 오만 문서들을 다 찾아봤다. 푸시 알림 서비스도 찾아봤는데 이건 앱 전용인 것 같아서 못 쓰고... 알림톡 서비스는 사업자 계정이 아니면 사용하지 못하고... 진짜 이 때 멘붕 그 자체........... 결국 찾은 건 구글 FCM을 활용하여 푸시 알림을 보내는 것이었다!Firebase Cloud Messaging이라고 하는 건데... 진짜 역대급으로 힘들었다...FCM 역시 설명이 다 제각각이어서 찾는 데 힘들었지만... 지금부.. 2024. 2. 19.
[Spring] 내가 보려고 만든 URI와 URL, URN 간단 정리 URI랑 URL이 헷갈려서 찾아봤는데... URN이란 것도 있네?? 그래서 그냥 간단하게 정리했다. URI 그냥 시작은 무조건 URI에서 시작한다!! 특성 리소스를 인터넷에서 구하고자 하는데, 그럼 그 리소스의 주소를 알아야 겠지? 이렇게 인터넷에서 리소스의 주소를 나타내는 게 URI이고, 아래에 나오는 URL과 URN을 합친 것. URL "나 a라는 리소스를 인터넷에서 찾고 싶은데, 어떤 웹으로 가야 해?" 물어보면 "https://tistory.com/find으로 가!" 라고 답할 수 있겠지? 이렇게 리소스를 얻을 수 있는 특정 웹 주소를 나타내는 게 URL! URN URL에 리소스 를찾으러 갔는데, 무턱대고 찾을 수 없잖아?? 그래서 각 리소스에 고유한 이름을 부여하는데, 그게 URN이다. 그런데 .. 2024. 2. 17.
[도착 알리미 SUFY] 6. 일정 시각마다 특정 작업 수행 로직 구현하기 이제 알림 정보를 DB에 저장하는 것까지 완료했다.이제 실시간 지하철 위치 정보를 주기적으로 확인하면서, alarm 테이블에 저장된 칼럼들을 돌며 해당 목적지 역에 접근하는 열차가 있을 때마다 특정 작업(알림 전송)을 실행해주면 된다. 즉 우리와 같은 경우에는 15초 마다 한 번씩 REST API의 URI로 Http 요청을 보내서, 실시간 지하철 정보를 받아온 후 다음 로직을 작성하면 될 것...스프링에서 주기적으로 특정 작업을 하기 위해서는, 해당 함수에 @Scheduled 어노테이션을 붙여주면 된다. 우선 메인 클래스에 @EnableScheduling 어노테이션을 붙여 주자.@SpringBootApplication@EnableSchedulingpublic class SubwayNotifyApplica.. 2024. 2. 16.
반응형