- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. secret을 안보내도 된다는것 자체가 약간은 의아해서 질문드립니다. PKCE, 인가코드만 있어도, challenge, verifer 를 통해서, 인가서버로 요청하는 client 가 위조되었을 가능성이 낮기 때문에 secret을 안보내도 되도록 허용하는 것인가요? 인가 코드를 탈취당해도, PKCE를 통해서 client 가 challenge, verifier 를 통해서 알 수 있으니까..?
안녕하세요. 마지막에 group by로 묶어서 입사동기로 나올 때, 뒤에 일자 + 00:00:00 까지 나오는 게 보기가 안 좋아서요. 년-월만 나오게 할 수 있을까요? 가령, select date_part ('year', hire_month )||'-'|| date_part ('month', hire_month ), counts from ( select date_trunc ('month', hiredate ) as hire_month, count (*) as counts from hr.emp_test group by date_trunc ('month', hiredate) ); 로 하면 나오긴 하는데 이건 서브쿼리를 이용한 방법이라 좀 더 간결하게 표현하고 싶습니다.
Mac PC에서 Tomcat 9점대 설치했습니다. Mac IP : ifconfig에서 en0:의 inet 주소 복붙 젠킨스 콘솔에서 http://[MacIP]:8088 or http://[네이버 내 아이피주소]:8088 2가지로 테스트해서 진행했는데, 계속 에러가 나더라구요. 1) conf/tomcat-users.xml에서 admin/deployer/tomcat : 롤 수정해서 세팅했구요. 2) webapps/host-manager/META-INF/context.xml : 해당 부분 주석 처리했습니다. 3) webapps/manager/META-INF/context.xml : 해당 부분 주석처리했습니다. ERROR: Build step failed with exception org.codehaus.cargo.container.ContainerException: Failed to redeploy [/var/jenkins_home/workspace/SsuThirdProject/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:1918) 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:509) at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:604) at java.base/sun.net.www.http.HttpClient.<init>(HttpClient.java:277) at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:376) at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:397) 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:509) at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:604) at java.base/sun.net.www.http.HttpClient.<init>(HttpClient.java:277) at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:376) at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:397) 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:1918) 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
public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("첫 번째 숫자와 두 번째 숫자 모두 0을 입력하면 프로그램을 종료합니다."); while (true) { System.out.print("첫 번째 숫자를 입력하세요:"); int num1 = scanner.nextInt(); System.out.print("두 번째 숫자를 입력하세요:"); int num2 = scanner.nextInt(); if (num1 == 0 && num2 == 0) { System.out.println("프로그램 종료"); break; } int sum = num1 + num2; System.out.println("두 숫자의 합: " + sum); } } 위 코드를 실행시켰을때 첫 번째 숫자를 입력하세요 : 10\n 이렇게 입력하고 두번째 줄에 두 번째 숫자를 입력하세요 : 20\n 이렇게 제가 입력했다고 가정했을때 큐에서 문자열이 어떻게 들어가고 나오는지 궁금합니다. 10하고 enter를 치면 num1은 정수 부분을 읽어들여서 10만 저장하고 큐에는 현재 '\n'가 남아있는 상황이고 그 이후에 20enter를 치게 된다면 20\n을 큐에 집어넣은 상황이므로 큐에는 현재 \n20\n이렇게 들어가있을텐데 여기서 num2는 바로 20을 꺼낼 수 있는 건가요?? 앞에 있는 \n 값은 무시하고 정수만 바로 뽑아내는건가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 김영한님 강의 듣는 중인데, 강의 중 나오는 단축키 중에 안먹히는 것들이 있어서요... 예를 들면 ctrl+alt+m / ctrl+o 등이 안먹힙니다 해결할 수 있는 방법이 있을까요?
model.addAttribute("item", "new Item()) 1.이 문장은 html 문서에서 th:Object를 활용하기 위해서 쓴건데 실질적으로 new Item() 기본생성자라 Item클래스안에 파라미터에는 아무런값도 없고 단지, 타임리프 문법을 쓰기위함이라고 이해했는데 맞을까요?
제가 이해한 대로 말씀드리자면 저희가 사용하는 intel의 cpu가 기본적으로 Little-Endian 방식을 채택한다고 하셨습니다.제가 사용하는 AMD의 cpu도 메모리 주소가 반대로 찍힙니다 그럼 AMD도 Little-Endian을 채택하는 것으로 이해하고 있으면 될까요??
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 https://www.inflearn.com/questions/25417/changeteam-%EA%B4%80%EB%A0%A8%ED%95%98%EC%97%AC-%EC%A7%88%EB%AC%B8-%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4 연관관계 편의 메서드 관련 질문인 위 링크의 글과 연관이 있습니다. 질문을 먼저 작성해놓고 질문 끝에 다시 언급해놓겠습니다. 1) 어쩌면 필요없는 구현일 수 있는데, 이런 습관?을 들여도 괜찮은지 2) 아니면 강의처럼 DB에 반영되지 않고 거의 문제가 발생할 가능성이 없는 부분은 간단하게 구현하고 넘어갈지 mappedBy로 read-only상태인 조회 전용 필드인 members는 변경 상태가 DB에 반영되지 않지만, 인스턴스 입장에서는(객체지향적으로는?) 어플리케이션 런타임 시점에 변경을 해주어야한다고 생각했습니다. 위 링크의 영한님 말씀처럼 데이터 변경 후 이를 즉시 재활용하는 일은 극히 드물지만 말이죠. Member 엔티티 // 연관관계 편의 메서드 public void changeTeam(Team team) { // 기존에 팀이 있다면 탈퇴 if (this.team != null) { // 탈퇴를 위한 비즈니스 로직을 Team에 구현함 this.team.removeMember(this); } this.team = team; team.getMembers().add(this); } 그래서 위와 같이 if 분기를 두고 소속 팀이 있는 회원은 해당 팀에서 회원 자신을 지우는 로직을 추가했습니다. this.team.removeMember(this) 위 로직은 this.team.getMembers().remove(this) 와 같지만 의미있는 메서드를 만들어보고 싶어서 아래처럼 removeMember 를 구현했습니다. Team 엔티티 // 비즈니스 로직 -> read-only 필드라서 DB에는 반영 안됨 public void removeMember(Member member) { this.members.remove(member); } null 확인 로직이 changeTeam() 내부에 있으므로 Member 엔티티 생성자는 다음과 같이 작성했습니다. public Member(String username, int age, Team team) { this.username = username; this.age = age; changeTeam(team); } 결론적으로 물어보고 싶은 질문은 1) 어쩌면 필요없는 구현일 수 있는데, 이런 습관?을 들여도 괜찮은지 2) 아니면 강의처럼 DB에 반영되지 않고 거의 문제가 발생할 가능성이 없는 부분은 아래처럼 간단하게 구현하고 넘어갈지 // 연관관계 편의 메서드 public void changeTeam(Team team) { this.team = team; team.getMembers().add(this); } 이렇게 두 가지 질문이 있습니다. 늘 좋은 강의 해주셔서 감사합니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. Oauth2AuthenticationToken 이라는 것이 사실은 인가서버로의 인증을 의미하는 것이지 client 서버로의 인증이라고는 볼 수 없는 것 아닌가요? 그러니까 Oauth2 과정을 거쳤다는 것은, 해당 유저의 resource 를 auth 서버든 resource 서버든 접근이 가능하다는 것이지, 우리 서버에 인증이 되었다는 것은 아니라고 저는 이해했는데요. 왜, oauth2 프로세스가 끝나면 최초 요청지 (예를들어 localhost:8081/home -> 로그인 창으로 가서 oauth2 process 끝 -> localhost:8081/home 이라고 할때, 최초 요청지는 localhost:8081/home ) 가 접근이 되는 것이죠?
예를 들어 ElectricCar extends Car, Car extends Vehicle의 상속 관계를 가질 때 new ElectricCar()를 호출하면 부모 인스턴스인 Car도 같이 생성하는데 이 경우 Car는 Vehicle 의 상속을 받으니까 Vehicle 인스턴스도 함께 생성되나요?