묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
- 
      
        
    미해결Vue.js 시작하기 - Age of Vue.js
Local Cracking Vue.js API 질문있어요
강사님!~vue-camp/vue/다운받을수있나요?
 - 
      
        
    미해결데이터베이스 중급(Modeling)
json 구조의 데이터를 저장할 때 재귀 관계가 맞는 방법인지 궁금합니다.
선생님 안녕하세요. 테이블 설계 중 고민 중인 부분이 있어 강의 복습하다가 의견을 여쭙고자 질문드립니다.제가 하려는 것은json 구조로 내려오는 데이터를 key, value 모두 각각 저장하려고 합니다.구조를 예를 들면,{"resReferenceList": [{"resTriglyceride": "mg/dL","resALT": "U/L","resType": "단위","resSight": ""},{"resTriglyceride": "150미만","resALT": "35이하","resType": "정상(A)","resSight": ""}],"resResultList": [{"resQuestionInfo": "","resInfantsCheckupList": [ ],"resQuestionInfoList": [{"resSmokingList": [{"resPeriod": "","resType": "일반담배(궐련)"},{"resPeriod": "","resType": "궐련형 전자담배","resPeriod1": ""}],"resApplicableYN1": "0","resSmokingStatus": "0","resDiseaseHistoryList": [{"resApplicableYN": "0","resType": "0","resDisease": "뇌졸중(중풍)"},{"resApplicableYN": "0","resType": "0","resDisease": "심장병(심근경색/협심증)"}],"resApplicableYN": "0","resAlcoholAmtList": [{"resUnit": "병","resNumber": "0.5","resType": "평균","resType1": "소주"}]}],"resOriGinalData": "","resInfantsDentalList": [ ]},{"resQuestionInfo": "","resInfantsCheckupList": [ ],"resOriGinalData": "","resInfantsDentalList": [ ]}],"resCheckupTarget": "홍길동"} (json 구조가 잘 보이게 하고 싶은데 붙여넣기 하면 계속 이렇게 되네요ㅠ죄송합니다.)이렇게 Object 형태에 List 형태도 포함되어 있습니다.그런데 좀 더 까다로운게 위의 Object 가 [] List 에 담겨 여러개 나오는 경우도 있습니다. (이거까지 생각하면 복잡해서 일단 위 구조만 고려했습니다.)이러한 형태가 계속해서 테이블에 쌓이게 하려고 합니다.우선 트리 구조라고 생각했기 때문에 재귀 관계 테이블을 떠올려서 그렇게 작업을 하려고 했는데요.-Id (pk, auto increment)-부모테이블Id (fk, 위 데이터의 부모격인 메인 테이블이 있습니다. (1:M 관계))-상위Id(id 와 fk 관계, 재귀)-리스트 번호(Obejct 가 리스트로 같은 상위 id 에 포함될 수 있는데, 그러면 각 Object 묶음이 구분이 되어야 하므로 구분하기 위한 번호)-key_name-value이렇게 생각을 했는데 조회시 상당히 불편해서 다른 방법이 있을지 고민되어 질문드리게 되었습니다.단순히 데이터를 쌓고 통계를 위한 조회 정도로 사용할 예정입니다.위와 같은 데이터 구조의 key, value 를 모두 저장해야 할 때 재귀 관계를 사용하는게 최선인지 아니면 다른 고민해볼 포인트도 있는지 의견 여쭙고 싶습니다.감사합니다.
 - 
      
        
    해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
면접볼 떄 알아햐 하는 것
CS는 기본으로 물어볼테고,node 개발자라면 node,자바스크립트 개념,뜻,장점,단점,예시 같은거 알면 되나요?
 - 
      
        
    해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3 - B 카테고리 질문
안녕하세요, 3-B가 최단거리를 구하는 문제이기에 BFS를 활용한 것까지는 이해가 됐습니다! 그런데 이 문제가 왜 완전탐색 파트로 분류되어 있는지 궁금합니다. 일반적인 BFS 문제들과 다르게 모든 경우에 대해 BFS 탐색을 하고, 매 탐색마다 원복을 해줘야 하기 때문에 완전탐색 문제로 분류된 것인가요?
 - 
      
        
    해결됨떠먹는 Three.js
강의 영상에서 보이는 색과 다른 색상이 나옵니다.
과일과 나무 만들기 실습 중에 있습니다. 그런데 강의에서 보이는 bodyMaterial과 THREE.DirectionalLight에 들어가는 색상 코드를 그대로 사용했는데 색이 다르게 나오는 건 왜 그런 건가요..?이전 강의들에서도 색상이 다르게 나왔었습니다.
 - 
      
        
    해결됨그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)
섹션1 배열 강의 질문드립니다
배열은 참조에는 좋지만 삽입과 삭제는 비효율적이라고 하셨는데자바스크립트 배열은 처음에 크기를 지정하지도 않고, 메모리 할당도 불연속적으로 하니까 예외라는 건가요? 감사합니다.
 - 
      
        
    해결됨코딩테스트 [ ALL IN ONE ]
시간복잡도 Big-O 표기법에 대해서
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요!질문이 2가지 있습니다.[기본]시간복잡도 Time Complexity 강의 @4:20부분에서 1/ "이처럼 입력값 n에 대한 실행시간 함수가 있다면, 최고차항의 계수만을 표기하여 Big-O(n)을 표기할 수 있다."이렇게 설명을 하셨는데, 제가 이해하기로는 계수는 숫자와 문자의 곱에서 '숫자'를 의미하는걸로 알고 있어서요!예를 들면, 3n이라고 한다면 숫자인 3이 계수라고 알고있습니다.그러면 Big-O표기법은 '최고차항의 계수만을 표기'하는게 아니라 '최고차항'을 표기하는걸까요? 2/ @4:27부분에O(n!) > O(2^n) > O(n^2)..이렇게 시간복잡도가 높은것부터 그래프로 보여주실때 '차수가 높은 순서는 다음과 같다'라고 말씀하셨는데제가 이해하기로는 '차수'는 문자가 곱해진 횟수, 즉 n^2면 2차, n^3이면 3차. 이런게 차수인걸로 알고있습니다.그렇다면 n!이 2^n보다 차수가 더 높고, 2^n이 n^2보다 차수가 더 높은걸로 이해하면 될까요? 감사합니다!
 - 
      
        
    해결됨실무에 바로 쓰자! 이커머스 데이터로 배우는 실전 SQL 분석
쿼리 질문
데이터 join 시점부터 두 번 째줄 쿼리 문인 WHERE l = l 은 왜 넣는건가요? 무슨 의미인가요?
 - 
      
        
    해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
ocx 컨트롤 지원 종료에 대한 문의
안녕하세요. 일코님강의 잘 듣고 있습니다.한컴 개발자 센터에 가보니 "ocx 컨트롤 지원 종료" 알림이 있습니다.ocx 컨트롤이 지원 및 제공 종료 되면 현재 듣고 있는 강의의 한글(hwp)과 연계 부분을 사용하지 못 하는건 아닌지요? 만일 위와 같다면 다른 방법으로 한글과 연계 해서 할수 있는 방법이 있는지요?
 - 
      
        
    해결됨Jenkins를 이용한 CI/CD Pipeline 구축
톰캣 서버를 컨테이너로 구동하려고 합니다.
안녕하세요? 강의 잘 듣고 있습니다. 톰켓 서버 설정 관련해서 질문드립니다. 현재 저는 M1을 사용하는 맥북을 쓰고 있습니다.tomcat:9-jdk21-openjdk 이미지를 통해 컨테이너로 톰캣 서버를 구성중에 있습니다. 외부 8088포트를 내부 8080포트가 응답하게 구동하였고, 컨테이너 주소도 172.17.0.3인것을 확인 했습니다. 다만 말씀하신 경로에 context.xml 파일이 존재하지 않습니다. 아래 보시는 사진과 같습니다.그래서 이 부분은 일단 넘어가고 다른 세팅을 완료 했고 젠킨스로 2강의 세번째 프로젝트를 진행하는데 다음과 같은 오류가 나타납니다. [DeployPublisher][INFO] Attempting to deploy 1 war file(s) [DeployPublisher][INFO] Deploying /var/jenkins_home/workspace/My-Third-Project/target/hello-world.war to container Tomcat 9.x Remote with context null ERROR: Build step failed with exception org.codehaus.cargo.container.ContainerException: Failed to redeploy [/var/jenkins_home/workspace/My-Third-Project/target/hello-world.war] at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:176) at hudson.plugins.deploy.CargoContainerAdapter.deploy(CargoContainerAdapter.java:81) at hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:167) at hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:136) at hudson.FilePath.act(FilePath.java:1198) at hudson.FilePath.act(FilePath.java:1181) at hudson.plugins.deploy.CargoContainerAdapter.redeployFile(CargoContainerAdapter.java:133) at hudson.plugins.deploy.PasswordProtectedAdapterCargo.redeployFile(PasswordProtectedAdapterCargo.java:95) at hudson.plugins.deploy.DeployPublisher.perform(DeployPublisher.java:113) at jenkins.tasks.SimpleBuildStep.perform(SimpleBuildStep.java:123) at hudson.tasks.BuildStepCompatibilityLayer.perform(BuildStepCompatibilityLayer.java:80) at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:47) at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:818) at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:767) at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.post2(MavenModuleSetBuild.java:1072) at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:711) at hudson.model.Run.execute(Run.java:1925) at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:543) at hudson.model.ResourceController.execute(ResourceController.java:101) at hudson.model.Executor.run(Executor.java:442) Caused by: java.net.ConnectException: Connection refused (Connection refused) at java.base/java.net.PlainSocketImpl.socketConnect(Native Method) at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:412) at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:255) at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:237) at java.base/java.net.Socket.connect(Socket.java:609) at java.base/java.net.Socket.connect(Socket.java:558) at java.base/sun.net.NetworkClient.doConnect(NetworkClient.java:182) at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:507) at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:602) at java.base/sun.net.www.http.HttpClient.<init>(HttpClient.java:275) at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:374) at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:395) at java.base/sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1253) at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1187) at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1081) at java.base/sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:1015) at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:567) at org.codehaus.cargo.container.tomcat.internal.TomcatManager.list(TomcatManager.java:882) at org.codehaus.cargo.container.tomcat.internal.TomcatManager.getStatus(TomcatManager.java:895) at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:161) ... 19 more java.net.ConnectException: Connection refused (Connection refused) at java.base/java.net.PlainSocketImpl.socketConnect(Native Method) at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:412) at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:255) at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:237) at java.base/java.net.Socket.connect(Socket.java:609) at java.base/java.net.Socket.connect(Socket.java:558) at java.base/sun.net.NetworkClient.doConnect(NetworkClient.java:182) at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:507) at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:602) at java.base/sun.net.www.http.HttpClient.<init>(HttpClient.java:275) at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:374) at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:395) at java.base/sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1253) at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1187) at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1081) at java.base/sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:1015) at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:567) at org.codehaus.cargo.container.tomcat.internal.TomcatManager.list(TomcatManager.java:882) at org.codehaus.cargo.container.tomcat.internal.TomcatManager.getStatus(TomcatManager.java:895) at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:161) at hudson.plugins.deploy.CargoContainerAdapter.deploy(CargoContainerAdapter.java:81) at hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:167) at hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:136) at hudson.FilePath.act(FilePath.java:1198) at hudson.FilePath.act(FilePath.java:1181) at hudson.plugins.deploy.CargoContainerAdapter.redeployFile(CargoContainerAdapter.java:133) at hudson.plugins.deploy.PasswordProtectedAdapterCargo.redeployFile(PasswordProtectedAdapterCargo.java:95) at hudson.plugins.deploy.DeployPublisher.perform(DeployPublisher.java:113) at jenkins.tasks.SimpleBuildStep.perform(SimpleBuildStep.java:123) at hudson.tasks.BuildStepCompatibilityLayer.perform(BuildStepCompatibilityLayer.java:80) at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:47) at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:818) at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:767) at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.post2(MavenModuleSetBuild.java:1072) at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:711) at hudson.model.Run.execute(Run.java:1925) at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:543) at hudson.model.ResourceController.execute(ResourceController.java:101) at hudson.model.Executor.run(Executor.java:442) Build step 'Deploy war/ear to a container' marked build as failure Finished: FAILURE 젠킨스 내에서 빌드는 완료가 된것 같고 배포중에 오류가 나는데 여러 시도를 해 봤는데 해결이 안되서 질문드립니다. 로컬에는 톰캣 서버를 설치하기가 좀 그래서 컨테이너 환경으로 실습을 진행하고 싶은데 해결책이 있을까요?
 - 
      
        
    미해결Vue.js + TypeScript 완벽 가이드
두번째 프로젝트 권한 요청 드립니다.
이메일 : qkqh34k@gmail.com
 - 
      
        
    미해결자바스크립트 : 기초부터 실전까지 올인원
타임즈뉴스 401에러
잘 되고 있다가 카테고리별 검색에 필요한 URL 입력 하면서부터 에러가 났어요. const getNewsByTopic = (event) => { console.log("클릭됨", event.target.textContent); let topic=event.target.textContent.toLowerCase() let url=new URL(`https://api.newscatcherapi.com/v2/latest_headlines?countries=KR&page_size=10&topic=${topic}`); console.log(url) }선생님 왜 에러가 난건가요?
 - 
      
        
    해결됨ARM Cortex-M 프로세서 프로그래밍
S520 실습 시, SCB register가 표시되지 않는 문제
강사님, 안녕하세요.S520 실습 시, __NVIC_SetPriorityGrouping에서 breakpoint를 설정하는 부분에서강의와 같이 SFRs -> All register 에서 SCB register가 아예 존재하지 않았습니다.(SCB resigter가 없어서 내부 저장된 값도 확인할 수 없음)그래서, S520 강의의 후반부도 동일한 문제로 실습을 진행할 수 없었는데 혹시 해결방법이 있을까요?참고로, 이전 인터럽트 강의들은 실습 시 문제가 없었고, pinout 설정이나, NVIC 설정도 Enabled 된 것을 확인하였습니다.감사합니다.
 - 
      
        
    해결됨[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
api 서버 만들기: 도메인주소, 클라이언트비밀키가 화면에 표시되지 않습니다.
무료/프리미엄 고르고 도메인주소 입력하면 밑에 화면에 주소와 타입 비밀키가 표시되지 않습니다. 로그는 계속 이렇게만 뜨고, 워크벤치 들어가보면 키는 보입니다.키가 발급은 되었는데, 브라우저로 못 띄우는 것 같다고 판단했습니다.어떤 부분을 확인해봐야 될까요?
 - 
      
        
    미해결프로젝트로 배우는 React.js
페이지네이션 버그 있습니다.
변수 명은 편한대로 변경했습니다.numberOfPageForGroup = currentGroup === lastGroup ? totalPages % limit : limit;처음 알려주신 코드 로직 그대로 사용하면totalPages가 limit으로 나누어 떨어져서 나머지가 0인 경우 버그가 발생합니다. const numberOfPageForGroup = currentGroup === lastGroup && totalPages % limit !== 0 ? totalPages % limit : limit;나누어 떨어지는 경우도 처리해줘야 정상 작동합니다.
 - 
      
        
    미해결한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
setState관련
20분경 나온 setState관련해서 미리 코드를 짜보았었는데용 <div className="DiaryEditor"> <h2>오늘의 일기</h2> <div> <input value={state.author} onChange={(e) => { setState(e.target.value); }} /> </div> <div> <textarea value={state.content} onChange={(e) => { setState(e.target.value); }} placeholder="내용을 입력해주세요" /> </div> </div> 이렇게 짜도 정상적으로 작동이 되는데 더 깊이 들어가서 문제가 생기는 경우일까요??
 - 
      
        
    해결됨스프링 DB 2편 - 데이터 접근 활용 기술
DTO를 Result<T> 클래스에 담아서 반환할 때의 예외처리
안녕하세요!영한님 강의를 들으면서 추가적으로 RestTemplate에 대해 알게되어 지금까지 배운 것을 복습할 겸 api와 DTO 통신에 대해 연습하고 있었습니다.DTO를 반환할 때, 그냥 주기보다는 Result<T>의 data같은 속성에 담아서 주는 것이 바람직하다고 하여 그 응용을 연습해 볼겸 Result<T>에 status 속성을 추가해보았습니다.status 속성은 외부 api에서 조건을 충족하는 api를 찾아 와서 반환할 DTO가 있을 경우 "success"를, 조건을 충족하는 api를 찾지 못하여 HttpClientErrorException 예외가 발생할 경우 "fail"을 담아서 반환하고자 하였습니다.아래의 코드를 통해 구현은 성공하였으나, Service 클래스에서 try-catch문을 사용하는게 좀 찜찜하여 혹시 try-catch문 없이 구현하는게 더 좋을지 아니면 그냥 사용해도 좋은지가 궁금하여 질문을 하게 되었습니다.(status가 "fail"이면 data는 null을 반환하게끔 설계해보았습니다) @RestController @RequiredArgsConstructor @RequestMapping("/summoners") public class SummonerController { private final SummonerService summonerService; @GetMapping public ResponseEntity<Result<SummonerDTO>> findSummonerApi(@RequestParam String name) { SummonerDTO summonerDTO = summonerService.findSummonerApi(name); if (summonerDTO == null) { return ResponseEntity.ok().body(new Result<>("fail", null)); } return ResponseEntity.ok().body(new Result<>("success", summonerDTO)); } }@Slf4j @Service @RequiredArgsConstructor public class SummonerService { @Value("${apiKey}") private String apiKey; private final SummonerRepository summonerRepository; private final RestTemplate restTemplate; // riot에서 소환사 정보 api를 받아오는 메서드 public SummonerDTO findSummonerApi(String name) { String url = "https://kr.api.riotgames.com/lol/summoner/v4/summoners/by-name/{summonerName}"; HttpHeaders headers = new HttpHeaders(); headers.set("X-Riot-Token", apiKey); try { return restTemplate.exchange(url, HttpMethod.GET, new HttpEntity<>(headers), SummonerDTO.class, name).getBody(); } catch (HttpClientErrorException e) { return null; } } }Controller와 Service의 코드는 위와 같습니다. (restTemplate은 별도의 설정파일에 빈으로 구현하였습니다)
 - 
      
        
    해결됨비전공자를 위한 진짜 입문 올인원 개발 부트캠프
git 수업 부분 오류 발생했습니다
git remote add origin https://github.com/JIWONKIMS/grab-market-client.git git branch -M main git push -u origin main터미널에 입력했을 때 마지막 git push -u origin main 부분을 실행하면 아래 에러가 뜹니다fatal: failed to load library 'libcurl-4.dll' 에러 해결법이 뭔가요?
 - 
      
        
    미해결[입문자를 위한 UE5] Part2. 언리얼 엔진 2D 게임 개발 입문
페이퍼 캐릭터 빙의 관련 질문
1 섹션 수업을 따라가다가 막히는 부분이 있어 질문 드립니다.수업 내용대로 페이퍼 캐릭터를 상속받아 BP_Knight 클래스를 생성하고 스프라이트에 소스 플립북을 적용시켰습니다. 이후 스프링암과 카메라 컴포넌트를 추가 했습니다. 에디터에서는 이런 모습입니다.아직 빙의를 하지 않은 상태에서는 수업 내용대로 중력의 영향을 받아 낙하가 되었습니다. 그런데 BP_Knight 에 플레이어 자동 빙의를 Player 0 으로 설정하고 실행하면 수업 내용대로 라면 실행했을 때 카메라가 BP_Knight에 빙의되어 낙하되는 걸 따라가며 찍어야하는데 왜 인지 원래는 낙하가 되었던 BP_Knight 가 낙하도 되지 않고 카메라가 빙의도 되지 않는 것 같습니다.수업 내용을 그대로 따라하며 진행했는데 제가 실수한 부분이 어디 인지를 모르겠습니다.
 - 
      
        
    미해결재고시스템으로 알아보는 동시성이슈 해결방법
테스트 실패 후 tryLock waitTime 설정 변경 뒤 테스트 성공에 대한 질문
waitTime을 10초로 설정했어도 leaseTime이 1이기 때문에 테스트는 성공했어야 할 것 같은데 왜 실패하나요?그리고 waitTime을 10초에서 15초로 변경하면 왜 성공하나요?