자동설정 만들기 1부의 Holoman 관련 문의 드립니다.
미해결
스프링 부트 개념과 활용
HolomanRunner 클래스를 만들때 제가 사용하는 인텔리J 커뮤니티 버전에서는 아래 import 를 하지 않으면 오류가 발생해서 import를 했는데요 강사님은 import 없이 사용하셨는데 저는 왜 import를 해야만 되는걸까요? import org.example.Holoman;
- java
- spring
- spring-boot
172만명의 커뮤니티!! 함께 토론해봐요.
미해결
스프링 부트 개념과 활용
HolomanRunner 클래스를 만들때 제가 사용하는 인텔리J 커뮤니티 버전에서는 아래 import 를 하지 않으면 오류가 발생해서 import를 했는데요 강사님은 import 없이 사용하셨는데 저는 왜 import를 해야만 되는걸까요? import org.example.Holoman;
해결됨
[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
안녕하세요! 회원가입 과제 피드백 부탁 드립니다! 그리고 추가적으로 궁금한 점이 있는데 figma 처럼 라디오버튼의 기본 색상을 회색으로 변경할 수 있을까요? css 파일에서 반복되어 사용되는 속성, 값들이 있는데 이런 값들은 공통적으로 사용하는 것이 구조적으로 좋을까요? 예) 아래 코드에서 .inputEmail과 .input에 설정하는 css 값들이 유사하지만 분리해서 작성 아래는 과제 관련 코드입니다! 미리 답변 감사합니다. <!DOCTYPE html> <html lang="ko"> <head> <title>회원가입</title> <link href="./02-signup.css" rel="stylesheet"> </head> <body> <div class="background"> <div class="signup"> <h2 id="title">회원 가입을 위해<br>정보를 입력해주세요<br></h2> <div> <span><br>* 이메일<br><br></span> <input class="inputEmail" type="text"> </div> <div> <span><br>* 이름<br><br></span> <input class="input" type="text"> </div> <div> <span><br>* 비밀번호<br><br></span> <input class="input" type="password"> </div> <div> <span><br>* 비밀번호 확인<br><br></span> <input class="input" type="password"> </div> <br><br> <div class="radioGender"> <div> <input type="radio" name="gender">여성 </div> <div> <input type="radio" name="gender">남성 </div> </div> <br><br> <div> <input class="agreement" type="checkbox"> 이용약관 개인정보 수집 및 이용, 마케팅 활용 선택에 모두 동의합니다. </div> <br> <hr id="line"> <br> <div> <button class="signupBtn">가입하기</button> </div> </div> </div> </body> </html> * { box-sizing: border-box; } body { display: flex; justify-content: center; align-items: center; } .background { width: 670px; height: 960px; border-radius: 20px; border: 1px solid #AACDFF; box-shadow: 7px 7px 39px 0px #0068FF40; display: flex; justify-content: center; align-items: center; } .signup { width: 470px; display: flex; flex-direction: column; } .signup span { color: #797979; } .inputEmail { width: 100%; border: none; border-bottom: 1px solid #0068FF; } .input { width: 100%; border: none; border-bottom: 1px solid #CFCFCF; } .radioGender { display: flex; justify-content: center; align-items: center; gap: 30px; accent-color: #D2D2D2; } .agreement { font-size: 14px; } .signupBtn { width: 100%; height: 75px; border-radius: 10px; border: 1px solid #0068FF; background: #FFFFFF; color: #0068FF; font-size: 18px; } #title { font-size: 32px; color: #0068FF; } #line { width: 100%; height: 1px; border: none; background-color: #E5E5E5; }
미해결
김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 로그가 너무 안이쁘게 출력되는데 이거 어떻게 할 수 있을까요?.
해결됨
6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법
포트폴리오에 해당 강의들의 내용을 담으면 정말 좋은 무기가 될 거 같다는 생각이 드는데, 백엔드 포트폴리오에서 웹 디자인 없이 이러한 비지니스 로직들에 대해 고민하고 해결하는 걸 프로젝트라고 해도 괜찮을까요? 우선 챕터 2~4 내용을 합쳐서 2,3 내용으로 인터넷 배송 도메인을 동일하게 만든 다음 4내용으로 물건 수량이 50개 남은 경우 100명의 사용자가 몰린 경우 어떻게 처리할 지 확장할 생각입니다. 기업 입장에서 실제 웹사이트가 없이 API만을 이용한 대규모 처리, 각종 문제들에 대한 고민과 해결을 인정해주는지, 그것을 프로젝트라고 칭하고 포트폴리오에 담아도 되는지 잘 모르겠습니다 ㅠ
해결됨
6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법
4-12강 스케쥴러를 활용해서 5분마다 누락된 예약번호를 보정하는 방식인데요. 만약 이럴 경우 예약 직후 예약정보를 조회하는 사용자 입장에서는 예약번호가 없어서 해당 정보창에 문제가 발생할 거 같은데, 이러면 후보정 방식은 위험한 게 아닐까 하는 의문이 들었습니다.이런 건 지금 따지지 말고 수업용으로 유연하게 넘어가는 게 맞는걸까요?
해결됨
[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
확장프로그램 설치, "vscode-styled-components" ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ import styled from에서 경로 쓸 때 백틱금지 🤬
미해결
실전! 스프링 데이터 JPA
안녕하세요, 강의 10:25에서 다루신 내용에 대해 질문드립니다. 영속성 컨텍스트에 1차 캐싱된 멤버 객체들이 남아있는 상태에서 벌크 업데이트를 하면 DB를 바로 통하므로 영속성 컨텍스트와 디비의 상태가 달라 예상치 못한 에러를 겪을 수 있다는 내용입니다. 궁금한점은, Spring Data JPA에서 메소드로 정의한 벌크 연산이 결국은 @Query 어노테이션에 JPQL로 작성했으니, JPQL 실행 전 flush 처리가 되는게 아닌건가요? 그렇다면 말씀하신 에러가 없을 거 같은데...궁금합니다!
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
28:48 초 swap 으로 함수 선언으로 하고 temp 에 a 주소의 값 203 대입 / a 주소에 b주소의 값 1004 대입 /다시 temp 를 b 주소 값을 대입 후 return 값을 다시 주지 않았는데 어떻게 두번 째 print 에서 바뀌어서 나올 수 가 있는거죠 ? return 값을 주지 않으면 void swap 내 블록에서 변경된 값은 그대로 종료되고 두번째 print는 첫번째 출력값 교환전: x=203, y=1004 랑 동일 하지 않나요?
해결됨
[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
entity 등으로 생성된 tpye 에서 강의에서 사용된 코드로 예시를 들면 # product.entity.ts @JoinTable() @ManyToMany(() => ProductTag, (productTags) => productTags.products) @Field(() => [ProductTag], { nullable: true }) productTags: ProductTag[]; 위와같이 nullable 을 사용하여 #schema.gql type Product { productId: String productName: String! description: String! productPrice: Int! isSoldout: Boolean! productSalesLocation: ProductSalesLocation productCategory: ProductCategory user: User productTags: [ProductTag!] } productTags: [ProductTag!] 와 같이 할 수 있었습니다. 위에서 productTags: [ProductTag!] 를 productTags: [ProductTag] 와같이 변경 해보려고합니다. 방법이 있나요? @Field(() => [ProductTag, { nullable: true }], { nullable: true }) 에러는 발생하지 않지만 안됩니다.
해결됨
[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
yarn start:dev 를 할 경우 Many to Many 로 자동으로 생성되는 table이 자꾸 문제를 일으키네요. 서버 재 실행시 기존에 만들어진 중간테이블 강의에서는 상품_상품태그 테이블이 되겠네요. 해당 테이블을 삭제후 실행하지 않으면 에러발생시키네요. 원인을 찾아보면 아래 코드의 주석된 custom join table 이 문제였는데요. 기본 @JoinTable 사용시 문제는 사라집니다. // @JoinTable({ // name: 'PRODUCT_TO_PRODUCT_TAG', // 원하는 중간 테이블명 // joinColumn: { // name: 'PRODUCT_ID', // Product 엔티티 ID를 참조하는 컬럼명 // referencedColumnName: 'productId', // Product 엔티티의 실제 ID 컬럼명 (기본값은 PrimaryColumn 이름) // }, // inverseJoinColumn: { // name: 'PRODUCT_TAG_ID', // ProductTag 엔티티 ID를 참조하는 컬럼명 // referencedColumnName: 'productTagId', // ProductTag 엔티티의 실제 ID 컬럼명 // }, // }) @JoinTable() @ManyToMany(() => ProductTag, (productTags) => productTags.products) @Field(() => [ProductTag], { nullable: true }) productTags: ProductTag[]; 질문 1. 위의 문제를 해결할 수 있는 방법입니다. 질문 2. DB 컬럼에는 UPPER_CASE (SCREAMING_SNAKE_CASE) 로 작성하지 않나요? 그렇기 때문에 custom / 각 컬럼마다 @Column({ name: 'BOARD_TITLE', type: 'varchar', length: 50, nullable: false, }) @Field(() => String) boardTitle: string; 위와 같이 컬럼명을 하나하나 지정해줬습니다. typeorm 또는 요즘 실무 컨벤션에서는 강의에서처럼 카멜표기법으로 사용하나요? Node 강의지만 Java기준 스프링 기본설정에서 카멜케이스조차도 스네이크로 자동 변환하는데 말이죠! msa 구조에서는 테이블은 공통된걸 사용할수도 있으니 궁금해서 질문 드립니다.
미해결
자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
선생님, 선생님이 짜주신 코드로 풀었는데, 오답이 나왔는데, 만약에 같은 키가 많은 친구들중에 하나가 철수고, 바꿔준 짝꿍도 동일한 키의 사람들이 있다면 누가 철수인지, 짝꿍인지 어떻게 구분하나요?? import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner; class problem06 { // 06. 장난꾸러기 //선생님은 반 학생들에게 반 번호를 정해 주기 위해 운동장에 반 학생들을 키가 가장 작은 학생부터 일렬로 키순으로 세웠습니다. //제일 앞에 가장 작은 학생부터 반 번호를 1번부터 N번까지 부여합니다. 철수는 짝꿍보다 키가 큽니다. //그런데 철수가 앞 번호를 받고 싶어 짝꿍과 자리를 바꿨습니다. //9 //120 125 152 130 135 135 143 127 160 public ArrayList<Integer> solution(int n, int[] arr){ ArrayList<Integer> answer = new ArrayList<>(); int[] tmp = arr.clone(); // 깊은 복사해야 기존의 arr이 변하지 않음. Arrays.sort(tmp); // 오름차순 정렬 //다른애들만 그 순서를 ArrayList에 넣어준다. for(int i=0; i<n-1;i++){ if(arr[i] != tmp[i]) answer.add(i+1); } return answer; } public static void main(String[] args){ problem06 T = new problem06(); Scanner kb = new Scanner(System.in); int n = kb.nextInt(); // 캐시의 크기 int[] arr = new int[n]; for(int i=0; i<n;i++){ arr[i] = kb.nextInt(); } for(int x : T.solution(n, arr)){ System.out.print(x+" "); } } }
미해결
김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
안녕하세요 좋은 강의 감사합니다. package thread.control.printer; import java.util.Queue; import java.util.Scanner; import java.util.concurrent.ConcurrentLinkedQueue; import static util.MyLogger.log; public class MyPrinterV4 { public static void main(String[] args) { Printer printer = new Printer(); Thread printerThread = new Thread(printer, "printer"); printerThread.start(); Scanner userInput = new Scanner(System.in); while (true) { log("프린트할 문서를 입력하세요. 종료 (q): "); String input = userInput.nextLine(); if (input.equals("q")) { printerThread.interrupt(); break; } printer.addJob(input); } } static class Printer implements Runnable { Queue<String> jobQueue = new ConcurrentLinkedQueue<>(); @Override public void run() { while (!Thread.interrupted()) { if (jobQueue.isEmpty()) { Thread.yield(); // 추가 continue; } try { String job = jobQueue.poll(); log("출력 시작 : " + job + ", 대기 문서: " + jobQueue); Thread.sleep(3000); log("출력 완료"); } catch (InterruptedException e) { log("인터럽트!"); break; } } log("프린트 종료"); } public void addJob(String input) { jobQueue.offer(input); } } } 위의 코드에서요 yield() 의 의미와 취지는 알겠으나, 수업에서 말씀주셨던 위의 코드에서는 결국 printerThread 쓰레드 1개잖아요? (다른 쓰레드는 main) 그래서 yield() 를 넣더라도 다른 쓰레드에 양보할 쓰레드가 없는 것 아닌가요? (코어 갯수랑 별개로요) 감사합니다.
해결됨
한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
위처럼 콘솔찍었을때, 22번째 콘솔에서 arrC 배열 요소를 보면 0번쨰 인덱스에 "hellooo?"가 출력됩니다. 그러나 그다음 콘솔에서는 0번째 인덱스가 1로 찍힙니다. 29번째 줄에서 arrC 배열의 0번째 인덱스를 "hellooo?"로 수정한 것이 22번째줄 콘솔에서 보여지는 것 같은데, 실질적인 값은 무엇인지, 이런건 자바스크립트 자체 오류인건지 아니면 원리가 따로 있는지 궁금합니다.
미해결
실전! Querydsl
Spring Data 조직에서도 OpenFeign/QueryDSL를 공식적으로 지원(Support)한다고 합니다. 현재 공식QueryDSL 최신 버전인 5.1.0에서 아래와 같은 문제가 있습니다. CVE-2024–49203 이슈(CVSS 3.1기준 9.8 높은 심각도) Kotlin KSP 지원관련 기타 문제(Issues) 등등 공식 QueryDSL에서는 유지보수가 전혀 안되고 있기 때문에 혹시나 궁금하신 분들을 위해 정보 공유 드립니다. 1번, 2번관련 내용은 OpenFeign/QueryDSL 에서 모두 패치완료된 내용입니다. KSP - 6.9버전 이상, CVE-2024–49203 6.10.1버전 이상 Spring 공식 홈페이지 OpenFeign/QueryDSL 관련 내용 https://docs.spring.io/spring-data/jpa/reference/repositories/core-extensions.html Spring Git OpenFeign/QueryDSL 관련 내용 https://github.com/spring-projects/spring-data-jpa/pull/3859 OpenFeign/QueryDSL https://github.com/OpenFeign/querydsl
미해결
실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
getStats() 안에 쿼리 작성할 때, book에서 id와 name은 불러와지는데, type이 불러지지 않습니다. QBook 클래스에서 확인해보니 final type만 없더군요. 찾아보니 이유는 이러합니다. "Kotlin에서 type은 리플렉션/메타프로그래밍에서 자주 사용되는 예약 필드명이고, QueryDSL이 Q 클래스 생성 시 내부적으로 getType()을 쓰기 때문에 필드명 충돌이 발생했을 가능성이 높아 생성되지 않을 수 있습니다. 이러한 경우 ./gradlew clean kaptKotlin 명령어로 재빌드 한 후 Q 클래스를 다시 생성하거나 type 명칭을 bookType으로 수정하여 해결할 수 있습니다." 저는 ./gradlew clean kaptKotlin로 재빌드하니 해결됐습니다.
미해결
실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 실행시 다음과 같은 오류가 발생하는데 ... 정확히 왜 오류가 나는지 이해가 되지 않습니다. ㅠ
해결됨
한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
스크린샷에서 보는 것처럼 잘못된 페이지라고 나옵니다. "/diary"만 입력하면 문제없는데 id만 입력하면 경로를 찾지 못하는 것 같습니다.
해결됨
스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
학습 관련 질문을 최대한 상세히 남겨주세요! 고민 과정도 같이 나열해주셔도 좋습니다. 먼저 유사한 질문이 있었는지 검색해보세요. 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요! 강의 잘 들었습니다! 궁금한 점이 있어서 문의 드립니다. 강의에서는 상위 1000건에 대해서 articleId를 기준으로 Redis 캐시를 해두었는데 혹시 키워드(제목, 작성자, 내용등)에 대한 검색 페이징 처리도 캐시가 가능한걸까요? 제가 생각했을 때는 아래와 같은 방법으로 처리가 가능할 것 같은데 보통 대용량 트래픽 환경에서 해당 케이스를 어떻게 처리하는지 궁금합니다! 키워드 검색이 있을 경우 RDB에서 직접 조회 키워드 검색 조건 별로 Redis 캐시 Elasticsearch 도입 후 동기화하여 키워드 검색시 Elasticsearch에서 조회
해결됨
6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법
[4주차] 꼬임을 막는 트랜잭션과 락 전략 02.트랜잭션가 ACID 7) 초기 DDL & DML 설정 1000건인 거 같은데 50만이라고 적혀있어요
해결됨
실전! 스프링 데이터 JPA
안녕하세요. 단건 update관련 질문이 있습니다. update +연산 update Member m set m.stock = m.stock + 1 where m.id = :id 이런식으로 해야하는 연산은 어떻게 처리하나요? 벌크작업은 아니지만 개수를 증가시킬 때 할당으로 쓰면 덮어씌워질 수 있느니 + 1 로 처리하는 경우도 있는 것으로 아는데, 이런 경우는 영속성 컨텍스트에 반영이 안되는걸로 알고 있습니다. 객체를 기반으로 업데이트 하는 경우 m.stock = n으로 할당이 되어서 이런 경우는 객체지향관점에서 어떻게 처리하고 설계하시는지 궁금합니다. 업데이트 전 조회 업데이트 전에 findOne 조회를 하시던데, 전 업데이트할 때 요청받은값만 덮어쓰면 되고 그게 더 안전할때도 있다고 생각이 듭니다. 이런 경우에는 어떻게 처리하시는지 궁금합니다. 또한, 객체를 기반으로 업데이트하기에는 요청받은 데이터가 객체랑 필드가 정확히 매핑될것 같지 않아서 결국 update문 하나만 요청하는 방식으로 처리해야 할 것 같은데 어떻게 처리하시는지 궁금합니다. 감사합니다.