문자열 함수 강의 요청
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
c언어, 자바, 파이썬 문자열 함수 에 대해서 알려 주실 수 있으실까요? strcpy 등등 요
- python
- java
- c
- 정보처리기사
172만명의 커뮤니티!! 함께 토론해봐요.
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
c언어, 자바, 파이썬 문자열 함수 에 대해서 알려 주실 수 있으실까요? strcpy 등등 요
미해결
자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 문제집에서 런타임 오류시에는 입력값을 안 보여주는데 보여주면 좋겠습니다!
미해결
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 아니오 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 비슷한 질문이 몇 개 올라와 있는데 해결되지 않아 질문합니다. H2에서 테이블 생성하고 데이터 insert한 후 서버에서 회원 목록을 클릭하면 Whitelabel Error가 뜹니다. 2025-03-17T22:19:31.466+09:00 ERROR 2315 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: java.lang.IllegalStateException: java.lang.IllegalArgumentException: No DataSource specified] with root cause java.lang.IllegalArgumentException: No DataSource specified at org.springframework.util.Assert.notNull(Assert.java:181) ~[spring-core-6.2.3.jar:6.2.3] at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:104) ~[spring-jdbc-6.2.3.jar:6.2.3] at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:81) ~[spring-jdbc-6.2.3.jar:6.2.3] at hello.hello_spring.repository.JdbcMemberRepository.getConnection(JdbcMemberRepository.java:119) ~[classes/:na] at hello.hello_spring.repository.JdbcMemberRepository.findAll(JdbcMemberRepository.java:77) ~[classes/:na] at hello.hello_spring.service.MemberService.findMembers(MemberService.java:42) ~[classes/:na] at hello.hello_spring.controller.MemberController.list(MemberController.java:40) ~[classes/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na] at org.springframework.web.method.support .InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:257) ~[spring-web-6.2.3.jar:6.2.3] at org.springframework.web.method.support .InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:190) ~[spring-web-6.2.3.jar:6.2.3] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) ~[spring-webmvc-6.2.3.jar:6.2.3] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:986) ~[spring-webmvc-6.2.3.jar:6.2.3] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:891) ~[spring-webmvc-6.2.3.jar:6.2.3] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-6.2.3.jar:6.2.3] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1088) ~[spring-webmvc-6.2.3.jar:6.2.3] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:978) ~[spring-webmvc-6.2.3.jar:6.2.3] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) ~[spring-webmvc-6.2.3.jar:6.2.3] at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) ~[spring-webmvc-6.2.3.jar:6.2.3] at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) ~[tomcat-embed-core-10.1.36.jar:6.0] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) ~[spring-webmvc-6.2.3.jar:6.2.3] at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) ~[tomcat-embed-core-10.1.36.jar:6.0] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ~[tomcat-embed-websocket-10.1.36.jar:10.1.36] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-6.2.3.jar:6.2.3] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.2.3.jar:6.2.3] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-6.2.3.jar:6.2.3] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.2.3.jar:6.2.3] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-6.2.3.jar:6.2.3] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.2.3.jar:6.2.3] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:397) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:905) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.tomcat.util.net .NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1743) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.tomcat.util.net.SocketProcessorBase.run (SocketProcessorBase.java:52) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.tomcat.util.threads.ThreadPoolExecutor$ Worker.run (ThreadPoolExecutor.java:659) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.tomcat.util.threads.TaskThread$ WrappingRunnable.run (TaskThread.java:63) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at java.base/ java.lang.Thread.run (Thread.java:840) ~[na:na] application.properties에는 spring.datasource.url = jdbc:h2:tcp://localhost/~/test spring.datasource.username=sa spring.datasource.password= spring.datasource.driver-class-name = org.h2.Driver 으로 작성되어 있습니다. test.mv.db를 삭제하고 다시 실행해 테이블을 만들어도 똑같은 오류가 납니다 ㅜㅜ
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
30:11 해당 부분에 나온 구조체 문제 관련 의견드립니다. 표로 설명하기보다는 아래와 같이 설명하는 것이 직관적이지 않을까 싶습니다. head = &a 이므로 head = {10, null} 이 됩니다 다음으로 a.n2 = &b라 하였으므로, a의 n2 자리에 b 값을 넣으면 됩니다. 따라서, head = {10, {20, null}} 이 됩니다. 또 다음으로 b.n2 = &c라 하였으므로, b의 n2 자리에 c 값을 넣으면 됩니다. 따라서, head = {10, {20, {30, null}}} 이 되게 됩니다. 이때 head -> n2를 보라고 하였으므로, {20, {30, null}}을 보면 되고, 다시 n2->n1으로 n1을 보라고 하였으므로, 위의 구조체에서 n1에 해당하는 20이 답이 됩니다
해결됨
스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
안녕하세요 쿠케님 강의 잘 듣고 있습니다. 아웃박스 패턴과 로그 테일링 기법은 물론 애플리케이션의 특징마다 다르겠지만 로그 테일링 기법이 선호되는 경우는 어떤게 있을까요? LLM 챗봇들과 열심히 논의해본 결과 둘은 실시간성과 구현의 단순성에서 가장 큰 차이로 느꼈는데요. 실제로도 두 가지가 핵심적인 기준 역할을 하는지가 궁금하고 이외에 제가 찾지 못한 다른 것이 있다면 무엇이 있을까요?
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
22:21 파이썬 문제의 정답 문의 드립니다. 정답은 실제로 잘린 값: ['I', 'IS', 'ES', 'S', 'RING'] S 이게 될 것 같은데, S만 표시해 주셔서 문의 드립니다.
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
09:30 해당 부분에서 설명해주신 *(parr[1] + 2)는 parr[1]에서 2를 더한것이 아닌, 두번 더 이동한 값(9)을 구하라는 의미인 것으로 설명해 주셨는데, 만약 *parr[1] + 2 로 출제되었다면, 7+2로 해석할 수 있는걸까요?
미해결
자바 ORM 표준 JPA 프로그래밍 - 기본편
1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요?예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 안녕하세요, 강의 열심히 수강 중인 취준생입니다 ! 궁금한 점이 있어 여쭤보는데, 올려주신 '2024 최신버전으로 프로젝트 설정하기-소스코드'에 들어있는 pom.xml에 대해 여쭤보고 싶습니다. 해당 코드는 https://start.spring.io/ 에서 의존성 추가 목록에서 추가할 수 있는 것일까요 ? 올려주신 pom.xml 코드를 복사 붙여넣기 식으로 계속 사용해야할지 , 혹은 이 코드를 spring.io에서 의존성 추가로 얻을 수 있는 것인지 궁금합니다 ! 좋은 강의 항상 감사드립니다 ! (인텔리제이 유저입니다 !)
미해결
김영한의 실전 자바 - 기본편
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] final 참조변수 질문드립니다. 참조변수 하나에는 참조값이 하나가 할당되는것은 final을 붙이지 않아도 해당되는 개념으로 알고 있습니다. Data data = new Data(); Data data= new Data(); 이렇게 같은 참조변수로 두개의 객체를 만드는건 원래 안되는건데 참조값 변경을 할 수 없다는게 무슨 말인가요 Data 클래스로 만들수 있는 객체가 최대 하나가 된다 이런 의미인건가요 final Data data = new Data(); 이렇게 final을 쓰게 되면 Data data1= new Data(); 이라는 또 다른 객체를 만들지 못한다는 의미인가요
해결됨
[2025] 자바 입문 부트캠프 JAVA DEEP DIVE [PART2/2 심화편]
현재 강의 잘듣고있는 수강생입니다. 궁금한게있어서요 향후 스프링 부트 포토폴리오 과정에서 소셜로그인 oath2.0인가??? 구글이나 카카오톡계정을 연동해서 로그인하는 구현기능 내용도 포함되어있는지 궁금합니다. 그리고 현재 수강신청한거 수강률 50% 넘겼어요~~~ 오라클과 자바 강의 수강 기간 연장 신청합니다.
미해결
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
이거 너무 오래된 강의 아닌가요 강의 다시 찍어야 하는거 아닌가요 -_-; 이거 하나하나 달라서 하다가 너무 빡치는 상황이 많이 나오네요 정말 질문해야 하는거 너무 많이 나올정도 입니다 로드맵으로 다 샀는데 아 정말 강의가 거의 다 그런거 같아서 너무 짜증납니다
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
안녕하세요, 7분 34초 경에 질문이 있습니다. 정적 메서드에서 인스턴스 변수에 접근할 수 없어 오류가 난다고 하셨는데, 만약, Person.callDisplayName(); 이 아니라 p1.callDisplayName(); 로 하면 에러가 나지 않고 정상 출력으로 Name: Alice가 나오는지 궁금합니다. 만약 그래도 에러가 난다면 this가 private 인스턴스 변수를 가리켜서 그런걸까요? private String name이 아니라 public String name으로 바꾸면 인스턴스 변수이지만 접근 가능한지 궁금합니다.
해결됨
기초 탄탄! 독하게 시작하는 Java - Part 1 : 절차적 프로그래밍
안녕하세요, 널널한 개발자님! 이번 강의에서 clone(), Arrays.copyOf(), System.arraycopy()가 깊은 복사를 수행한다고 설명해주셨는데, 제가 알고 있는 바로는 이 기능들이 얕은 복사를 수행한다고 알고 있어 의문이 들어 질문드립니다:) 먼저 다음은 강의의 예제를 바탕으로 작성한 코드입니다. import java.util.Arrays; public class Test_1 { public static void main(String[] args) { int[] array1 = {10, 20, 30, 40, 50}; System.out.println("array1: " + Arrays.toString(array1)); //int[] array2 = array1; int[] array2 = array1.clone(); //int[] array2 = Arrays.copyOf(array1, array1.length); //int[] array2 = new int[5]; //System.arraycopy(array1, 0, array2, 0, array1.length); System.out.println("array2: " + Arrays.toString(array2)); System.out.println(); array1[0] = 100; System.out.println("array1[0] -> 100"); System.out.println("array1: " + Arrays.toString(array1)); System.out.println("array2: " + Arrays.toString(array2)); System.out.println(); array2[1] = 200; System.out.println("array2[1] -> 200"); System.out.println("array1: " + Arrays.toString(array1)); System.out.println("array2: " + Arrays.toString(array2)); } } 위 예시에서 강의에서 설명한 대로 clone(), Arrays.copyOf(), System.arraycopy()가 깊은 복사를 수행한다고 생각할 수 있지만 사실 int[]와 같은 값 타입에서는 이를 깊은 복사보다는 단순한 값 복사로 보는 것이 더 적절하다고 생각이 듭니다.(개인적인 생각입니다!) 다음은 참조 타입을 사용한 코드입니다. import java.util.Arrays; public class Test_2 { public static void main(String[] args) { Person[] array1 = { new Person("Hello"), new Person("Hi"), }; Person[] array2 = array1.clone(); //Person[] array2 = Arrays.copyOf(array1, array1.length); //Person[] array2 = new Person[2]; //System.arraycopy(array1, 0, array2, 0, array1.length); System.out.println(array1[0].name + ", " + array1[1].name); System.out.println(array2[0].name + ", " + array2[1].name); System.out.println(); array1[0].name = "Good"; System.out.println("array1[0].name = Good"); System.out.println(array1[0].name + ", " + array1[1].name); System.out.println(array2[0].name + ", " + array2[1].name); System.out.println(); array2[1].name = "Nice"; System.out.println("array2[1].name = Nice"); System.out.println(array1[0].name + ", " + array1[1].name); System.out.println(array2[0].name + ", " + array2[1].name); } } class Person { String name; Person(String name) { this.name = name; } } 참조 타입인 Person[] 배열을 사용했을 때 clone(), Arrays.copyOf(), System.arraycopy()가 얕은 복사를 수행하는 것을 확인할 수 있습니다. clone(), Arrays.copyOf(), System.arraycopy()와 같은 기능들이 값 타입 배열에서 깊은 복사처럼 동작한다고 생각할 수 있겠지만 단순한 값 복사라고 생각이 들며, 참조 타입 배열에서는 확실하게 얕은 복사를 수행합니다. clone(), Arrays.copyOf(), System.arraycopy()가 값 타입에 대해서만 깊은 복사를 수행한다고 할 수 있는지 이에 대해 좀 더 명확한 설명을 듣고 싶습니다:)
해결됨
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 강의 마지막에 말씀하신 생성된 걸 그대로 쓰지 말라고 하셨는데 그러면 ddl-auto는 참고만 하고, DB 생성은 직접 하는 게 좋다는 의미인 거죠? 그리고 찾아보니 ddl-auto에 create-drop라는 것도 있던데, 강의에선 create로 하셨지만 create-drop을 하는 게 테이블 참고용으로는 더 편리하려나요?
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
5:26 부분 질문입니다 chmod 751 에서 chmod는 반드시 소문자여야 하나요?
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
18:26 본 문제의 case 문에서 switch 조건에 해당하는 숫자는 8이므로, case 8에서 작동을 하였는데, 밑에 있는 case 7, 6은 case8이 아닌데도 작동을 하는건가요? case 문의 위에서 작동하는게 한번 걸렸다면, 아래에는 break 등 제약을 거는게 없다면 모두 작동한다고 보면 되나요?
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
본 문제의 답변 쿼리문에 대한 질문 세 가지가 있습니다. 쿼리의 영문은 반드시 대문자로 작성해야 하나요? 실제 DBMS 작업에서는 소문자로도 작성하여도 작동하는데 문제가 없어서 문의드립니다. into 학생 (학번, 이름....) 부분에서 into 학생(학번, 이름....) 과 같이 학생과 괄호 부분에 띄어쓰기를 쓰지 않고 붙여써도 답으로 인정될지 궁금합니다. 마지막에 세미콜론(;)을 붙이지 않아도 정답이 될지 궁금합니다.
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
안녕하세요, 4분 17초에서 conn1.count(); 하면 count++가 되어 conn1에 있는 count는 1이 된다고 하였습니다. private int count; 라고 선언된 부분이 있는데, private인데 static도 없어서 클래스 외부에서 직접 접근할 수 없어 컴파일러 에러가 나지 않나요?
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
안녕하세요, (기출) 2023년 1회 코드해석 문제 중 29:16초 질문 있습니다. public Car(String Val)로 넣을 때, 앞서 부모 생성자를 거쳐야하는데, public Vehicle 이라고 되는 부분이 없어서 컴파일 오류 난다고 생각했습니다. 왜 컴파일 오류가 나지 않고 출력이 가능한건가요?
해결됨
RabbitMQ를 이용한 비동기 아키텍처 한방에 해결하기
SSE & Redis와 Pub/Sub & WebSocket을 비교하고 있는데요. 실시간성과 정확성을 위해서라면 Pub/Sub & WebSocket을 더 많이 쓰나요? 알림의 특성상 채팅과 같은 양방향은 아니기 때문에 WebSocket이 적합한 선택인지 궁금합니다.