안녕하세요? 강의 잘 듣고 있습니다. 톰켓 서버 설정 관련해서 질문드립니다. 현재 저는 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 젠킨스 내에서 빌드는 완료가 된것 같고 배포중에 오류가 나는데 여러 시도를 해 봤는데 해결이 안되서 질문드립니다. 로컬에는 톰캣 서버를 설치하기가 좀 그래서 컨테이너 환경으로 실습을 진행하고 싶은데 해결책이 있을까요?
잘 되고 있다가 카테고리별 검색에 필요한 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) } 선생님 왜 에러가 난건가요?
강사님, 안녕하세요. S520 실습 시, __NVIC_SetPriorityGrouping에서 breakpoint를 설정하는 부분에서 강의와 같이 SFRs -> All register 에서 SCB register가 아예 존재하지 않았습니다. (SCB resigter가 없어서 내부 저장된 값도 확인할 수 없음) 그래서, S520 강의의 후반부도 동일한 문제로 실습을 진행할 수 없었는데 혹시 해결방법이 있을까요? 참고로, 이전 인터럽트 강의들은 실습 시 문제가 없었고, pinout 설정이나, NVIC 설정도 Enabled 된 것을 확인하였습니다. 감사합니다.
변수 명은 편한대로 변경했습니다. numberOfPageForGroup = currentGroup === lastGroup ? totalPages % limit : limit; 처음 알려주신 코드 로직 그대로 사용하면 totalPages가 limit으로 나누어 떨어져서 나머지가 0인 경우 버그가 발생합니다. const numberOfPageForGroup = currentGroup === lastGroup && totalPages % limit !== 0 ? totalPages % limit : limit; 나누어 떨어지는 경우도 처리해줘야 정상 작동합니다.
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> 이렇게 짜도 정상적으로 작동이 되는데 더 깊이 들어가서 문제가 생기는 경우일까요??
안녕하세요! 영한님 강의를 들으면서 추가적으로 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 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' 에러 해결법이 뭔가요?
1 섹션 수업을 따라가다가 막히는 부분이 있어 질문 드립니다. 수업 내용대로 페이퍼 캐릭터를 상속받아 BP_Knight 클래스를 생성하고 스프라이트에 소스 플립북을 적용시켰습니다. 이후 스프링암과 카메라 컴포넌트를 추가 했습니다. 에디터에서는 이런 모습입니다. 아직 빙의를 하지 않은 상태에서는 수업 내용대로 중력의 영향을 받아 낙하가 되었습니다. 그런데 BP_Knight 에 플레이어 자동 빙의를 Player 0 으로 설정하고 실행하면 수업 내용대로 라면 실행했을 때 카메라가 BP_Knight에 빙의되어 낙하되는 걸 따라가며 찍어야하는데 왜 인지 원래는 낙하가 되었던 BP_Knight 가 낙하도 되지 않고 카메라가 빙의도 되지 않는 것 같습니다. 수업 내용을 그대로 따라하며 진행했는데 제가 실수한 부분이 어디 인지를 모르겠습니다.
http://boj.kr/54cbfbf55f6946edbeb3beb93d88f6bc 안녕하세요 강사님! 여태 틀린 문제 다시 한번 풀어보고 있습니다. 백조 문제에서 메모리 초과가 나서 제가 생각하기에 의심되는 부분들 (queue에 중복 좌표를 여러번 푸시하는 경우)을 없애고도 메모리 초과가 나길래 어느 부분이 문제일지 한번 봐주시면 감사하겠습니다.. 로직 자체는 강사님 코드와 거의 비슷하게 떠올린 것 같은데 2차원 배열을 너무 많이 쓴 것이 문제인지.. 특정 케이스에서 queue가 너무 커지는 것이 문제일지 잘 감이 안 옵니다 ㅜ
[질문 내용] 안녕하세요. 개인 토이 프로젝트를 JPA를 활용하여 개발하다가 복합키와 관련하여 질문 드립니다. 현재 계좌라는 테이블에 1:N 매핑되어 거래 이력을 관리하는 이력 테이블을 설계했습니다. 해당 엔티티에 대한 기본키를 복합키로 설정했는데요. 식별관계 복합키로 계좌번호(FK)+거래날짜+시퀀스로 방향을 잡았습니다. 복합키 설정 중, 더 객체지향적인 방식이라는 @EmbeddedId 방식을 채택해서 사용했는데요. 복합키를 정의한 클래스의 필드에 시퀀스 필드에@GeneratedValue를 붙여 db에 저장될 시에 시퀀셜하게 번호가 채번될 거라고 생각했는데 결과는 널값이 들어 가더군요. 구글링을 해보니, 마찬가지 경우를 겪은 분들의 글을 보았고, @EmbeddedId 방식에서는 해당 @GeneratedValue를 사용 못한다는 것을 알게 되었습니다. 이에 대한 대안으로 다른 분들은 아예 복합키를 사용하지 않고, @GeneratedValue를 적용한 ID필드로 하나의 기본키를 두거나, 복합키의 또 다른 방법 중 하나인 @IdClass를 활용하고, @SequenceGenerator를 적용하여 시퀀스를 따로 관리해주는 식으로 하여 제가 처음 원하던대로 복합키에서도 시퀀스를 사용하는 것을 보았습니다. 질문은 실무에서는 이런 이력성 엔티티에 대해 어떤 방식은 사용하는지 궁금합니다. 사실 별도의 기본키 하나를 두고, 구현을 하자면.. 결과적으로 나중에 이력을 조회하고자 한다면 기본키가 아닌 값들로 조건을 줘서 쿼리가 나가게 될텐데.. DB 성능적인 부분에서 비효율적이지 않을까 싶고,,, @IdClass로 복합키를 설정하자니 이렇게 하는게 적절한 방법인가 싶습니다. 긴 질문 읽어주셔서 감사합니다!! :)
worldPosition을 따로 저장해야하는 이유는 버텍스 쉐이더로 넘어가게 되면 결국 스크린좌표계로 까지 변환이되어서 원하는 좌표로 남지 않아서 된다는 것은 이해했습니다. 강의에서보면 output.worldPosition = input.position; 로 저장하게 되는데 이렇게 저장하게되면 로컬 좌표계로 저장이되기 때문에 output.position = mul(input.position, W); output.worldPosition = output.position; 이렇게 저장해야 해당 모델의 월드좌표계가 저장되는 것이 맞는것 같은데 혹시 제가 잘못 이해한 부분이 있을까요?
아래 화면과 같이 문의드렸던 질문에 대하여 답변을 주셔서 감사합니다 설명해주신데로 아래의 화면과 같이 Anaconda Prompt 창의 맨 아래줄에 있는 웹 주소를 아래 화면과 같이 브라우저 주소란에 복사 후 붙여넣고 엔터를 치니까 jupyterlab 화면이 아래와 같이 열렸습니다 이제 앞으로 jupyterlab 공부를 하려면, 매번 공부할때마다 계속 http://localhost~~~ 주소를 브라우저의 주소란에 입력해서 jupyterlab화면을 열고 공부해야 하나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요 성능 테스트를 해보고 QueryHint 를 적용할지 고민하라고 하셨는데 성능 테스트란 정확하게 어떤 걸 의미하나요? 부하 테스트 인지 맞다면 예시가 뭐인지 궁금합니다. 그리고 성능 테스트를 하면 QueryHint 를 쓰는게 더 성능이 좋게 나올텐데 그럼 쓰는 게 낫지 않나 하는 궁금증이 듭니다.
안녕하세요. 해당 강의를 보다가 궁금증이 생겨서 글을 남기게 되었습니다. Entity는 디비 테이블의 컬럼들을 작성(실제 컬럼 및 디비에 없는 컬럼들까지)하고 Dto는 요청에서 받는 타입들을 작성하고 해당 타입들을 Controller 전에 검증해주는 클래스라고 알고 있었습니다. 궁금한건 아래 2가지 인 것 같습니다. Entity는 디비 테이블의 컬럼을 / Dto는 타입 검증을 위한 데코레이터들을 작성하는 클래스로 분리되는 개념으로 생각해왔었는데 잘 못 생각하고 있었던건가요?? 만약, Dto 클래스에 있는 컬럼들을 생략하면 nickName?: string; 처럼 선택적 옵션들과 @IsString()등 타입 검증을 해주는 데코레이터들을 전부 Entity에 작성해주는 건가요?? 저는 Entity는 건들이지 않고 Dto에서 선택적 옵션과 타입 검증들의 데코레이터를 사용하고 있었어서 궁금해졌습니다..!