묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결토비의 스프링 부트 - 이해와 원리
intellij community edition terminal http request
intellij community edition을 사용해 실습하고 있습니다. 섹션 2. Hello API 테스트와 같이 터미널에http -v ":8080/hello?name=Spring" 요청시 다음과 같은 에러가 뜨며 요청이 제대로 이루어지지 않습니다.혹시 ultimate 버전에서만 지원하는 기능이어서 그런건지 질문 드립니다. http : The term 'http' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.At line:1 char:1+ http -v ":8080/hello?name=Spring"+ ~~~~+ CategoryInfo : ObjectNotFound: (http:String) [], CommandNotFoundException+ FullyQualifiedErrorId : CommandNotFoundException
-
미해결
인텔리제이 톰캣 실행 오류
Connected to server[2023-09-12 10:27:48,081] Artifact edu-test:war exploded: Artifact is being deployed, please wait...12-Sep-2023 22:27:50.086 INFO [RMI TCP Connection(2)-127.0.0.1] org.apache.jasper.servlet.TldScanner.scanJars 적어도 하나의 JAR가 TLD들을 찾기 위해 스캔되었으나 아무 것도 찾지 못했습니다. 스캔했으나 TLD가 없는 JAR들의 전체 목록을 보시려면, 로그 레벨을 디버그 레벨로 설정하십시오. 스캔 과정에서 불필요한 JAR들을 건너뛰면, 시스템 시작 시간과 JSP 컴파일 시간을 단축시킬 수 있습니다.SLF4J: No SLF4J providers were found.SLF4J: Defaulting to no-operation (NOP) logger implementationSLF4J: See http://www.slf4j.org/codes.html#noProviders for further details.Debug is true storeKey false useTicketCache true useKeyTab false doNotPrompt true ticketCache is null isInitiator true KeyTab is null refreshKrb5Config is false principal is null tryFirstPass is false useFirstPass is false storePass is false clearPass is falseAcquire TGT from CachePrincipal is nullnull credentials from Ticket Cache[Krb5LoginModule] authentication failedUnable to obtain Principal Name for authentication12-Sep-2023 22:27:52.196 SEVERE [RMI TCP Connection(2)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal 하나 이상의 리스너들이 시작하지 못했습니다. 상세 내역은 적절한 컨테이너 로그 파일에서 찾을 수 있습니다.12-Sep-2023 22:27:52.254 SEVERE [RMI TCP Connection(2)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal 이전 오류들로 인해 컨텍스트 [/edu_test_war_exploded]의 시작이 실패했습니다.12-Sep-2023 22:27:52.269 WARNING [RMI TCP Connection(2)-127.0.0.1] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc 웹 애플리케이션 [edu_test_war_exploded]이(가) JDBC 드라이버 [org.mariadb.jdbc.Driver]을(를) 등록했지만, 웹 애플리케이션이 중지될 때, 해당 JDBC 드라이버의 등록을 제거하지 못했습니다. 메모리 누수를 방지하기 위하여, 등록을 강제로 제거했습니다.[2023-09-12 10:27:52,282] Artifact edu-test:war exploded: Error during artifact deployment. See server log for details.12-Sep-2023 22:27:57.592 INFO [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployDirectory 웹 애플리케이션 디렉토리 [C:\Users\aoehd\Downloads\apache-tomcat-9.0.79-windows-x64\apache-tomcat-9.0.79\webapps\manager]을(를) 배치합니다.12-Sep-2023 22:27:57.681 INFO [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployDirectory 웹 애플리케이션 디렉토리 [C:\Users\aoehd\Downloads\apache-tomcat-9.0.79-windows-x64\apache-tomcat-9.0.79\webapps\manager]에 대한 배치가 [89] 밀리초에 완료되었습니다. 이 오류가 계속해서 뜨고 톰캣이 실행이 안되는데 왜 그런지 아시나요? gpt한테 물어보긴했는데 무슨 켈베로스? 같은거 인증하라던데 무슨소리인지 잘 몰라서 여기서 물어봅니다 원래 톰캣 실행할때 저런 인증해야하는게 필요한가요? 처음 실행할때는 톰캣 실행 잘됐는데 나중에 인텔리제이 자체가 아무리 눌러도 켜지질 않아서 아예 완전 삭제하고 다시 설치해서 처음상태로 시작한다음 파일 받아서 톰캣 설정하고 바로 실행 눌렀는데 지금 한참동안 저러고 있고 바뀌질 않네요.. 인텔리제이가 안켜지는상황에서 강제 완전 삭제해서 톰캣이 실행이 안되는거려나요? 잘 모르겠습니다.. 도와주시면 감사하겠습니다..
-
해결됨
hibernate 6.x 에서 batch size의 전략 변경하기 아는 분 있으신가요?(batch_fetch_style deprecated issue)
https://www.inflearn.com/questions/34469위 링크를 참조해보면, 이전에 hibernate 의 batch size 기본전략이 legacy 임을 알 수 있습니다.하지만, 현재 사용 중인 hibernate 6.2 에서 @BatchSize 를 사용하면 기본적으로 dynamic 으로 조회되고 있습니다. 참고로 글로벌 설정으로 default_batch_fetch_size 를 설정해도 동일합니다. select ... from my_table m1_0 where m1_0.id in(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) binding parameter [1] as [INTEGER] - [5] binding parameter [2] as [INTEGER] - [1] binding parameter [3] as [INTEGER] - [null] ... binding parameter [98] as [INTEGER] - [null] binding parameter [99] as [INTEGER] - [null] binding parameter [100] as [INTEGER] - [null] 그래서 batch_fetch_style 을 직접 설정하려고 봤더니 hibernate 6.0 이후부터는 deprecated 되었고, MultiKeyLoadSizingStrategy 를 사용하라고 하네요. 혹시 이 MultiKeyLoadSizingStrategy 사용해보신 분 있으신가요?또는 다른 방법으로 batch size 전략을 이전의 기본전략인 legacy 처럼 변경하신 분이나 현재 프로젝트에서 비슷한 issue 겪으신 분 있으신가요?--(아까 오전에 비슷한 질문 올리면서, spring.jpa.properties.hibernate.jdbc.batch_size 사용하면 되는 것 같다고 했었는데 착각이었습니다. 실제로는 n + 1 발생에 영향을 주지 않습니다.)--(추가)MultiKeyLoadSizingStrategy 를 사용하는 부분은 Dialect 입니다. 이때 넘겨받는 numberOfKeys 는 지정한 BatchSize 와 동일합니다. 그리고 아래 코드에 의해 최종적으로 생성하는 ? 의 개수는 최초로 딱 1번, 1개만 생성되는 것처럼 보입니다. 그러면 코드가 dynamic 처럼 작동하는 게 이해는 가네요. 동적으로 id 의 개수에 따라 다른 PreparedStatement를 사용하는 게 아니니까요.만약 BatchSize 를 10으로 정한 필드가 있다면, 해당 필드는 아래 코드에 의해 10(pad=false, column=1) 또는 16(pad=true, column=1) 둘 중 하나의 쿼리만 생성됩니다.위에서 언급한 링크에서 김영한 님 설명대로라면 10 + nlog2 개의 쿼리가 생성되는 데 반해, MultiKeyLoadSizingStrategy 는 딱 하나의 쿼리만을 생성하고 재사용하는 것 같습니다. 그런데 그 쿼리의 ? 의 개수를 '잘' 정하는 거죠.그러면 pad와 numberOfColumns 를 어떻게 바꾸느냐도 알아봐야겠네요... 그리고 최적화에 대한 새로운 패러다임? 자체도 이해할 필요가 있어 보입니다. 아래는 Dialect 추상클래스의 일부분입니다. protected final MultiKeyLoadSizingStrategy STANDARD_MULTI_KEY_LOAD_SIZING_STRATEGY = (numberOfColumns, numberOfKeys, pad) -> { numberOfKeys = pad ? MathHelper.ceilingPowerOfTwo( numberOfKeys ) : numberOfKeys; final long parameterCount = (long) numberOfColumns * numberOfKeys; final int limit = getParameterCountLimit(); if ( limit > 0 ) { // the Dialect reported a limit - see if the parameter count exceeds the limit if ( parameterCount >= limit ) { return limit / numberOfColumns; } } return numberOfKeys; };--(추가)pad 설정은 아래와 같이 하면 됩니다. 기본값은 false 인 것 같네요.spring.jpa.properties.hibernate.query.in_clause_parameter_padding=true그리고, numberOfColumns 는 굳이 건드려야 할 필요는 없어보입니다.--결론적으로 batch_fetch_style 이 deprecated 된 이후에는 기존의 legacy 처럼 여러 개의 statement 를 만들어서 사용하지 못 하고, 각 Entity 의 batch size 를 얼마나 설정하느냐에 따라 Dialect가 그에 대응하는 딱 하나의 statement 를 만드는 것 같습니다.
-
미해결스프링 부트 - 핵심 원리와 활용
tomcat runner 에러
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요, 다른 분들도 겪으셨던 것 같은데 해결방안은 딱히 없는 것 같아서 다시 글 올립니다.저도 tomcat runner를 edit configuration에서 추가하려고 하면 설정창이 안뜨고 먹통인 문제를 겪고 있습니다.(캡쳐는 다른분들이 올려주신 질문글과 동일.)기존에 IntelliJ Edu를 쓰고 있었는데 tomcat runner가 검색이 되지 않아 community 버젼을 새로 깔았고 이때문에 idea는 완전 깨끗한 상태입니다; (당연히 캐시를 삭제해봐도 개선이 되지 않습니다.환경은 아래와 같습니다.소스코드: 강의제공 코드자바 버전 : 17 (oracle jdk 17.0.7-macos-aarch64)OS : Mac (Apple M1 Ventura 13.2.1)인텔리제이 커뮤니티 버전: 2023.1.1캐시삭제 외에 시도할 수 있는게 있다면 알려주세요.감사합니다.
-
미해결
맥북 IntelliJ 재설치 후 Intellij 내 터미널(terminal)이 작동이 안돼요
Intellij 기반으로 공부하고 있는 맥북 유저입니다.원래는 terminal로 "idea ." 명령어로 Intellij를 실행하고 공부하고 IntelliJ 내부 터미널로 git 명령어를 통해 백업하고 있었습니다.그런데 오늘 intellij를 삭제 후 재설치하고 나니intellij를 터미널에서 "idea ." 명령어로 실행되는 것이 불가능해졌습니다.해당 환경설정하는 방법은 시도해봤습니다. (IntelliJ 실행 -> Tools -> Create Command-Line Launcher)이걸 누르고 나면 아래와 같은 에러가 뜹니다.환경변수에 설정하라는 뜻인 거 같은데 저 경로를 환경변수에 넣으라는 뜻인 거 같아서 시도해봤는데 별 효과가 없었습니다. (intellij -> 환경설정 -> terminal -> Path Variable에 추가해봤습니다.)그리고... IntelliJ 내부에 자체적으로 있는 터미널도 말썽입니다.git 명령어 자체도 못 알아듣고요. (PC 내부에 있는 Terminal에서는 git이라는 명령어가 잘 작동합니다.)그 외에 ls 명령어도 못 알아듣는 상황입니다.해결 방법 아시는 분 계신다면 공유 부탁드립니다...
-
미해결코딩으로 학습하는 리팩토링
필드를 감추는 것이 중요한 이유?
안녕하세요 강사님레코드 캡슐화 설명을 들으면서 궁금한 점이 생겨 질문 드립니다.강의에서, 퍼블릭 필드를 감추는 용도로 퍼블릭 메서드를 사용할 수 있는데, 그 이유로는 퍼블릭 필드(ex, String name) 와 퍼블릭 메서드(ex, String setLastName()) 의 이름이 완전히 동일하다는 보장이 없기 때문입니다.위 문장을, 퍼블릭 메서드는 퍼블릭 필드를 감추는 용도로 사용할 수 있다고 이해했습니다.궁금한 점은, 그렇다면 필드를 감추는 것이 중요한 이유는 클라이언트단에서 데이터 클래스의 필드에 무작위적인 접근을 방지하기 위함인가요? 무작위적인 필드의 접근은 데이터를 쉽게 수정할 수 있게 때문이라고 추측했습니다.감사합니다.
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Introduce Variable 자동 final
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요. 강사님 강의 도중에 option + command + v 단축키를 통해서 해당 코드의 리턴의 변수를 자동으로 생성해주는 Introduce Variable을 사용하시는데요.저는 해당 단축키를 사용하면 final 예약어가 자동으로 추가가 돼서 지워주어야 하는 번거로움이 있어 질문드리게 되었습니다.해당 내용 관련해서 해결하기 위해 검색을 해보았는데, Preference -> Editor -> Code Style -> Java -> Code Generation -> Final Modifier 에서Make generated local variables finalMake generated parameters final을 체크하게되면 발생한다고 되어있는데, 저는 체크가 되어 있지 않습니다. 혹시 다른 해결방법이 있는지 알고 싶습니다.
-
해결됨코딩으로 학습하는 리팩토링
[오탈자제보] 아주 작은 오타
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 리팩토링 자료 5페이지에 Mysterious 인데 Mysterius라고 아주 사소한 오타 제보합니다. 고생하십시오.
-
미해결IntelliJ를 시작하시는 분들을 위한 IntelliJ 가이드
단축키 정리된 파일이 따로 있을까요?
혹시 강의 별로 단축키 정리된 파일이 따로 있을까요?ㅎㅎ
-
미해결실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
빌드 툴 관련 궁금해요!
강사님 안녕하세요! 제가 원래 자바로 개발하다가 코틀린으로 강사님 강의 들으면서 열심히 배우고 있습니다. 항상 감사합니다! 제가 기존에 자바로 개발할 때는 습관적으로 IntelliJ IDEA에서 프로젝트 세팅할 때 빌드 툴을 Gradle -> IntelliJ로 설정하곤 했는데요. 강의 듣다가 중간에 그게 생각나서 IntelliJ로 바꿨더니 테스트 실행할 때 UserCreateRequest 생성자 호출 부분에서 ... too many arguments for public constructor ... 이라는 오류가 나더라구요! 다시 Gradle로 설정해서 실행한 뒤 IntelliJ로 바꿨더니 또 다시 되네요 ㅎㅎ (어리둥절합니다...) 사실 그래서 궁금한 점은 강사님께서는 어떤 빌드 툴 사용하시는지 궁금해서 질문 남겨봅니다! 감사합니다. 🙇🏻♂️
-
미해결
intellij 시작하기
intelliJ 시작이 안됩니다. 이런식으로 빨간불이 계속 뜨고 환경설정은 이렇게 진행했습니다. 어떻게 해야 실행이 가능할까요?' 다른 프로젝트는 이렇게 뜹니다ㅠㅠ
-
해결됨코딩으로 학습하는 리팩토링
리팩토링 강의 [ 일부 소스 파일 누락 ]
안녕하세요 백기선님! 강의 정말 잘 듣고 있습니다 ( 리팩토링, 패턴, 자바, 스프링 등등!! ) 지금 리팩토링 강의를 보고 있던 중, Combine Fucntion into Transform 목차 부분에서 제공 해주시는 소스와 강의에서 다루는 파일이 일치 하지 않아서 글 남겨드려요! ( ReadingClient & ReadingClientTest 파일 ) 강의를 보고 해당 파일을 만드는것은 어렵진 않지만 보완이 되면 좋을 것 같습니다! 질 좋은 강의를 만들어 주셔서 항상 감사하는 마음으로 듣고 있습니다. 감사합니다!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
인텔리제이 리턴페이지 컨트롤 클릭 기능
[질문 내용]1. 인텔리제이관련 질문사항입니다. 리턴 컨트롤 클릭으로 해당 html 로 이동하고싶은데 이동이 안됩니다..
-
해결됨[구버전] 웹 애플리케이션 개발을 위한 IntelliJ IDEA 설정 (2020 ver.)
dependency 부분에서 에러나시는분
<dependencyManagement> <dependencies> ~~ </dependencies> </dependencyManagement> 처럼 dependencyManagement 로 묶어 보세요.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
intellij 의 thymeleaf 인식오류 인가요?
일단 상품등록하는데 문제는 없습니다. 위와 연결된 Controller에 매핑과 BookForm 설정 똑같이 했는데 강의에 영한님이 한것처럼 html에서 th:object="${form}" 나 th:field="*{name}" 을 command+click 으로 연결된곳으로 갈수도 없고 Cannot resolve 'form' 오류 뜨면서 빨간줄 그어지는데 해결할수 있는 방법있을까요? 저도 그 편한 기능 쓰고 싶습니다 진짜루 ..ㅠㅠ 인텔리제이는 IntelliJ IDEA 2022.1.2 (Ultimate Edition) 쓰고 있습니다.
-
미해결[구버전] 웹 애플리케이션 개발을 위한 IntelliJ IDEA 설정 (2020 ver.)
dependency 버전오류
다른부분은 문제가 없는데 버전부분만 계속 빨간불이 들어와서요;; 확인부탁드릴게요
-
해결됨코딩으로 학습하는 리팩토링
openjdk-17 다운로드 후 Sources에서 Language level
안녕하세요. 프로젝트 설정 문의드려요~ 제목에 적은거 처럼 openjdk-17다운로드 후 Apply 누른 다음 Language level에 17버전이 보이지 않는데 어떻게 해야되나요??...
-
미해결실전! Querydsl
단축키 문의
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]영한님 강의하시다 보면 intellij 상에서 함수를 선택한 후에 단축키를 누르면, 리턴 타입과 리턴 변수가 자동 생성되던데, 해당 단축키좀 알수 있을까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
enable annotation processor에 체크가 안 되어있는데 롬복이 멀쩡히 잘 적용돼요
안녕하세요? '프로젝트 생성' 강의를 들으며 세팅하는 중에 질문이 생겨 질문 남깁니다. lombok plugin은 설치가 되어있었고 (spring boot 최신 버전은 기본적으로 세팅이 되어있다고 들었습니다) 이제 Enable annotation processing을 체크하려고 했습니다. 그래야 롬복을 사용할 수 있다고 하셨습니다. 그런데 저는 Enable annotation processing을 체크하지 않았는데도 @Getter, @Setter 등의 어노테이션이 잘 적용되어 hello.getData(), hello.setData("어쩌구");가 모두 잘 동작했습니다. Enable annotation processing을 체크하면 어떤 효과가 있는건가요? 왜 체크를 하지 않았는데도 잘 동작하는 건가요?
-
미해결스프링 핵심 원리 - 기본편
intellij grandle 오류가 납니다.
spring 강의를 듣다가 실습때 intellij 를 설치하는 과정에서 오류가 발생했습니다. 처음 사용해봤는데 프로젝트를 open한 시점부터 저 오류때문에 아무것도 하지 못하고 있습니다 ㅠㅠ 구글링도 여러번 해보고 타 질문에서의 답변도 참고해보았지만 해결이 되지 않습니다.. 오류사진과 intellij 설정 상태를 첨부합니다. 답변 기다리겠습니다ㅠㅠ