묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 핵심 원리 - 기본편
request Scope 질문. 다른 강의에서 더 활용하는지?
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 궁금증이 생겨서 질문을 드립니다.requset scope가 웹 스코프 에서 중요한 역할을 한다는것을 어느 정도 인지가 되는 상황이지만, 여러 번을 들어도 "모르겠다"라는 는 말이 저절로 나옵니다...그래서 일단은 그냥 넘어 갈려고 합니다.여기서 질문입니다.requset Scope를 더욱더 활용하거나 공부하는 강의가, 다음 강의 및 다른 강의에서 있나요?추가1만약에 없다면 어떤 것을 들어야(해야지) 이해 할수 있을까요?답변 부탁드립니다.
-
미해결김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
병렬 프레임 병목 현상 해결책에 대해 궁금한 점
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]Fork/Join 공용 풀(및 병렬 스트림)을 I/O 대기 작업에 사용하면 스레드 병목으로 요청이 밀려서 그 해결책으로 로직 전용 스레드 풀을 만들었잖아요.ExecutorService logicPool = Executors.newFixedThreadPool(400);다른 해결책으로 다음과 같이 공용이 아닌 그냥 Fork/Join 풀을 써도 되나요? 공용이 아니니깐 스레드 병목 현상도 없으니깐요.ForkJoinPool logicPool = new ForkJoinPool(400);아니면 이것도 여전히 안 좋나요?
-
미해결앱 개발 기초부터 실전까지 하나로 끝내는 Swift & iOS 마스터 클래스
타이머 오차
안녕하십니까? 강사님강의를 열심히 듣고 있는 중입니다.363강 Step #29 - Timer를 실습하던중 의문점이 생겨서 문의 드립니다.30초에 타이머가 일시정지하게끔 하거나 중지시키게 하면 항상 2-3초의 오차가 발생합니다.이게 소스상의 문제인지 아님 다른 문제인지 알수가 없어서 문의 드립니다.
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
아이템 시스템 강의
현재 강의랑은 관련없는 질문글 죄송합니다.올해 봄 출시 에정이라고 하셨던 아이템시스템 강의의 데이터테이블 관리방식이 궁금해서 계속 기다려왔는데, 혹시 언제쯤 나오는지 알 수 있을까요?
-
미해결[리뉴얼] 처음하는 파이썬 머신러닝 부트캠프 (쉽게! 실제 캐글 문제 풀며 정리하기) [데이터분석/과학 Part2]
test / train 데이터 나누기
안녕하세요, 선생님.좋은 강의 항상 감사히 잘 듣고 있습니다.train 데이터와 test 데이터를 미리 파일로 나누어 작업하시는 것을 보았는데, 실제 회사에서도 이렇게 작업하는지 궁금합니다.보통 어느 단계에서 train과 test 데이터를 나누는 것이 맞는지도 알고 싶습니다.예를 들어,결측값이나 이상치 처리, NaN 값을 처리한 후에 데이터를 나누는 것이 맞는지,아니면 처음부터 비율(예: 8:2)로 나누고 시작하는 것이 맞는지 궁금합니다.답변해 주실 수 있을까요?
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
3:32 추상클래스와 추상메서드 예제2
예제2 abstract가 붙으면 재정의한 자식거 출력하고 이문제에서 stopEngine이 자식이 상속받지안호았으므로 부모것이 출력된건가요?설명 자세히 부탁드립니다
-
미해결토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
intellij에 diagrams.net 관련 플러그인이 있네요.
editor가 랜더링 되지 않으면 vm option을 추가해야 합니다. Help > Edit Custom VM Options...-Dide.browser.jcef.out-of-process.enabled=false해당 옵션 설정에 대한 Copliot 설명➡JCEF 브라우저를 IDE 프로세스 내(in-process)에서 실행하겠다는 의미입니다.기본적으로 JetBrains IDE는 JCEF 브라우저를 별도의 프로세스(out-of-process)로 실행해서 안정성과 보안성을 높이려고 해요. 하지만 이 옵션을 false로 설정하면:브라우저가 IDE와 같은 프로세스에서 실행됩니다.일부 환경에서는 성능 향상이나 디버깅 편의성을 위해 이렇게 설정하기도 해요.반면, 브라우저 충돌 시 IDE 전체가 영향을 받을 수 있는 위험도 있어요.
-
미해결김영한의 실전 자바 - 기본편
helloshop
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.com.helloshop이라 쓰면 그냥 패키지 하나로 뜨고 그 밑에 product를 만들어도 helloshop패키지 이름이 바뀝니다. 뭐가 문제일ㄲ?ㅏ요
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
createGlobalStyle의 위치와 영향범위
createGlobalStyle이 컴포넌트 형태로 적용되다보니 마치 현재 컴포넌트 하위만 적용될 것 같은 느낌이 있는데요 실제 영향범위는 class 수정이므로 페이지 전체에 영향을 끼치다보니 개인적으로 비직관성이 느껴집니다 createGlobalStyle을 실제로 사용하신 경험이 있는지와 사용하셨다면 _app 외에 다른 위치에서도 쓰셨는지 궁금합니다
-
미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
카프카 클러스터에서 감당 가능한 파티션(레플리카) 수 문의
안녕하세요.카프카 클러스터 규모를 추산하던 중 감당 가능한 토픽/파티션 수가 궁금하여 질문드립니다. 예를 들어,Replication Factor를 3으로 가정할 때 레플리카 개수가 대략 10,000개가 나옵니다(3,000 파티션 × replication factor 3)파티션 10개인 토픽 100개: 1,000개파티션 20개인 토픽 100개: 2,000개총 파티션: 3,000개RF가 3일 때 전체 클러스터 레플리카 수: 9,000개추후 토픽 추가에 따라 레플리카 수가 최대 18,000개까지 늘어날 수 있음토픽과 파티션 규모가 이 정도라면 카프카 클러스터를 적절한 단위(도메인)로 나눠야 할지,아니면 한 클러스터에서 충분히 운용 가능한지 궁금합니다.클러스터를 하나로 구성하여 사용하자니 레플리카 수가 감당 가능할지 고민되고클러스터를 여러개로 구성하여 사용하자니 그에 따른 비용과 오버 엔지니어링이 고민됩니다.파티션이 많을수록 파일 같은 자원을 더 사용하고 각 클라이언트로부터 수많은 요청을 받게 되는데, 브로커를 충분히 늘리면 감당 가능한 정도일까요?큰 규모의 카프카 클러스터를 운용해본 적이 없어 강사님께서 카프카 클러스터를 어떻게 운용하셨는지 여쭤봅니다. (이정도 수준의 레플리카를 운용해본적이 있는지 등)참고로 카프카는 3.x (KRaft 모드) 버전을 사용하려고 합니다.아래는 참고한 자료입니다.참고1) 컨플루언트 개발자 가이드에 따르면 토픽은 KRaft일 때 수백만 개 생성 가능하다고 하지만결국 각 토픽당 파티션 수에 따라 달진다고 언급하고 있습니다.참고2) 컨플루언트 블로그에 따르면 가용성을 고려하면 2,000~4,000개를 권장하고, 지연시간을 고려하면 100 × b × r (b: 브로커 수, r: 복제 팩터) 공식을 제안하고 있습니다.그런데 10년 전에 작성된 글이라 현재는 더 많이 지원하지 않을까 싶습니다.
-
미해결AI 에이전트로 구현하는 RAG 시스템(w. LangGraph)
agent_executor 실행시 JSONDecodeError에러가 발생해요.
문제가 발생하는 코드 ㄴ LLM모델만 gemini-2.5-pro로 사용하고 있고 다른 부분은 다른게 없는데 아래의 에러가 발생하네요...혹시 도와주실 수 있을까요? # AgentExecutor 실행 query = "시그니처 스테이크의 가격과 특징은 무엇인가요? 그리고 스테이크와 어울리는 와인 추천도 해주세요." agent_response = agent_executor.invoke({"input": query})에러로그 Entering new AgentExecutor chain... Invoking: search_menu with {'query': 'Signature Steak'} [Document(metadata={'menu_name': '시그니처 스테이크', 'menu_number': 1, 'source': './data/restaurant_menu.txt'}, page_content='1. 시그니처 스테이크\n • 가격: ₩35,000\n • 주요 식재료: 최상급 한우 등심, 로즈메리 감자, 그릴드 아스파라거스\n • 설명: 셰프의 특제 시그니처 메뉴로, 21일간 건조 숙성한 최상급 한우 등심을 사용합니다. 미디엄 레어로 조리하여 육즙을 최대한 보존하며, 로즈메리 향의 감자와 아삭한 그릴드 아스파라거스가 곁들여집니다. 레드와인 소스와 함께 제공되어 풍부한 맛을 더합니다.'), Document(metadata={'menu_name': '안심 스테이크 샐러드', 'menu_number': 8, 'source': './data/restaurant_menu.txt'}, page_content='8. 안심 스테이크 샐러드\n • 가격: ₩26,000\n • 주요 식재료: 소고기 안심, 루꼴라, 체리 토마토, 발사믹 글레이즈\n • 설명: 부드러운 안심 스테이크를 얇게 슬라이스하여 신선한 루꼴라 위에 올린 메인 요리 샐러드입니다. 체리 토마토와 파마산 치즈 플레이크로 풍미를 더하고, 발사믹 글레이즈로 마무리하여 고기의 풍미를 한층 끌어올렸습니다.')] Invoking: search_wine with {'query': 'steak'} [Document(metadata={'menu_name': '사시카이아 2018', 'menu_number': 3, 'source': './data/restaurant_wine.txt'}, page_content='3. 사시카이아 2018\n • 가격: ₩420,000\n • 주요 품종: 카베르네 소비뇽, 카베르네 프랑, 메를로\n • 설명: 이탈리아 토스카나의 슈퍼 투스칸 와인입니다. 블랙베리, 카시스의 강렬한 과실향과 함께 허브, 가죽, 스파이스 노트가 복잡성을 더합니다. 풀바디이지만 우아한 타닌과 신선한 산도가 균형을 잡아줍니다. 오크 숙성으로 인한 바닐라, 초콜릿 향이 은은하게 느껴집니다.'), Document(metadata={'menu_name': '샤토 디켐 2015', 'menu_number': 9, 'source': './data/restaurant_wine.txt'}, page_content='9. 샤토 디켐 2015\n • 가격: ₩800,000 (375ml)\n • 주요 품종: 세미용, 소비뇽 블랑\n • 설명: 보르도 소테른 지역의 legendary 디저트 와인입니다. 아프리콧, 복숭아, 파인애플의 농축된 과실향과 함께 꿀, 사프란, 바닐라의 복잡한 향이 어우러집니다. 놀라운 농축도와 균형 잡힌 산도, 긴 여운이 특징이며, 100년 이상 숙성 가능한 와인으로 알려져 있습니다.')]--------------------------------------------------------------------------- JSONDecodeError Traceback (most recent call last) Cell In[163], line 4 1 # AgentExecutor 실행 3 query = "시그니처 스테이크의 가격과 특징은 무엇인가요? 그리고 스테이크와 어울리는 와인 추천도 해주세요." ----> 4 agent_response = agent_executor.invoke({"input": query}) File c:\Users\jangi\AppData\Local\pypoetry\Cache\virtualenvs\langgraph-agent-AGzdf7hx-py3.11\Lib\site-packages\langchain\chains\base.py:170, in Chain.invoke(self, input, config, kwargs) 168 except BaseException as e: 169 run_manager.on_chain_error(e) --> 170 raise e 171 run_manager.on_chain_end(outputs) 173 if include_run_info: File c:\Users\jangi\AppData\Local\pypoetry\Cache\virtualenvs\langgraph-agent-AGzdf7hx-py3.11\Lib\site-packages\langchain\chains\base.py:160, in Chain.invoke(self, input, config, kwargs) 157 try: 158 self._validate_inputs(inputs) 159 outputs = ( --> 160 self._call(inputs, run_manager=run_manager) 161 if new_arg_supported 162 else self._call(inputs) 163 ) 165 final_outputs: Dict[str, Any] = self.prep_outputs( 166 inputs, outputs, return_only_outputs 167 )... 339 if end != len(s): --> 340 raise JSONDecodeError("Extra data", s, end) 341 return obj JSONDecodeError: Extra data: line 1 column 29 (char 28)Output is truncated. View as a scrollable element or open in a text editor. Adjust cell output settings...
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
Snowflake처럼 동적으로 생성되는 ID, Mock 테스트가 올바른 접근법일까요?
14:42 에서 Snowflake 알고리즘으로 articleId를 생성한 후 DB에 저장된 121530268440289280L값을 사용해서 테스트 코드를 작성하시는 것을 보고,실제로 Snowflake를 도입해서 Id를 생성하고 같은 방식으로 테스트 코드를 작성한다면 DB에 종속적이라서 반복적으로 테스트 코드를 실행할 때 테스트 코드의 유지보수에서 문제가 발생할 수 있을 거라는 생각이 들었습니다.이런 문제를 막기 위해서 테스트 시에는 Mock 객체를 사용해 미리 정해진 Snowflake가 고정 ID 값을 반환하도록 하는 방식으로 테스트 코드를 작성하는게 맞는건지 궁금해서 질문글을 남기게 되었습니다.
-
미해결토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
@NaturalIdCache에 대한 보충 설명 및 사용법 공유
'25. 엔티티의 자연키 지정' 영상의 후반부에 적용한 @NaturalIdCache에 대해 추가로 학습한 내용이, 저처럼 해당 애노테이션을 처음 접한 분들에게 도움이 될 것 같아서 글을 작성합니다. 강의에서 오해가 있을 수 있는 부분, 그리고 자연키에 캐시를 적용하는 방법을 정리해 보았습니다. 강의 내용과 실제 동작의 차이점강의에서는 “같은 트랜잭션 안에서 같은 아이디 값을 가지고 여러 번 조회 시 Persistence Context 에 캐시된 값을 꺼내오는 것 처럼. @NaturalIdCache를 적용하면 이것도 영속 컨텍스트에 캐싱이 된다.”고 말씀하셨습니다. 해당 내용에 대한 이해를 돕기 위해 Hibernate의 두 가지 캐시에 대해 간단히 짚고 넘어가겠습니다.1차 캐시 (First-Level Cache): 세션(영속성 컨텍스트) 범위의 캐시입니다. 같은 트랜잭션 안에서만 유효하며, 트랜잭션이 끝나면 사라집니다. Spring Data JPA에서는 기본적으로 @Id 에 대한 조회를 1차 캐시합니다. 2차 캐시 (Second-Level Cache): 세션 팩토리 범위의 캐시로, 여러 세션에서 데이터를 공유할 수 있습니다. 적용하려면 별도의 의존성 추가 및 캐시 관련 설정(@Cache 등)이 필요합니다. 따라서, "같은 트랜잭션 안에서 캐시된 값을 꺼내온다."는 말은 세션 범위의 1차 캐시로 해석됩니다. 하지만 제가 직접 테스트해 본 결과, @NaturalIdCache는 1차 캐시가 아닌 2차 캐시와 관련이 있었으며, 1차 캐시를 적용하기 위해서는 다른 방법이 필요했습니다. 테스트를 통한 확인자연키에 대한 1차 캐시 동작을 확인하기 위해, 강의에서 적용한 Member 엔티티의 @NaturalIdCache 를 제거하고, 자연키(Email)에 @NaturalId만 적용한 상황에서 두 가지 방식으로 테스트를 진행했습니다. 테스트1: findByEmail 메서드를 사용한 조회Java@Test void NaturalIdFirstLevelCache() { Member member = Member.register(createMemberRegisterRequest(), createPasswordEncoder()); memberRepository.save(member); entityManager.flush(); entityManager.clear(); System.out.println("회원 저장 및 persistence context 초기화 완료"); // 같은 email(Natural ID)로 두 번 조회 Member findMember1 = memberRepository.findByEmail(member.getEmail()).get(); Member findMember2 = memberRepository.findByEmail(member.getEmail()).get(); assertThat(findMember1).isSameAs(findMember2); } Spring Data의 쿼리 메서드를 사용하여 이메일로 조회하는 findByEmail 메서드를 만들고, 한 트랜잭션에서 같은 회원을 두 번 조회했습니다. 자연키에 대한 1차 캐시가 동작한다면, SELECT 쿼리는 한 번만 실행되어야 합니다.결과는 SELECT 쿼리가 두 번 실행되었습니다. 즉, 자연키에 대한 1차 캐시가 동작하지 않았습니다. 테스트2: Hibernate의 자연키 관련 API를 사용한 조회@NaturalId를 다루는 글들을 찾아본 결과 Hibernate가 제공하는 자연키 관련 API가 있다는 것을 확인했고, 이를 적용하기 위해 커스텀 리포지토리를 구현했습니다.Java@Repository @RequiredArgsConstructor public class CustomizedMemberRepositoryImpl implements CustomizedMemberRepository { private final EntityManager entityManager; @Override public Optional<Member> findByNaturalId(Email naturalId) { return entityManager.unwrap(Session.class) .bySimpleNaturalId(Member.class) .loadOptional(naturalId); } } 그리고, 테스트 1과 같은 방식으로 테스트를 진행하였습니다. @Test void NaturalIdApi() { Member member = Member.register(createMemberRegisterRequest(), createPasswordEncoder()); memberRepository.save(member); entityManager.flush(); entityManager.clear(); System.out.println("회원 저장 및 persistence context 초기화 완료"); Member findMember1 = memberRepository.findByNaturalId(member.getEmail()).get(); Member findMember2 = memberRepository.findByNaturalId(member.getEmail()).get(); assertThat(findMember1).isSameAs(findMember2); }결과는 SELECT 쿼리가 한 번만 실행되었습니다. 이를 통해 자연키에 대한 1차 캐시는 @NaturalIdCache 애노테이션과 무관하게, 전용 API를 사용해야만 동작하는 것을 확인했습니다. @NaturalIdCache의 용도@NaturalIdCache Javadoc에는 다음과 같은 설명이 있습니다.Specifies that mappings from the natural id values of the annotated entity to the corresponding entity id values should be cached in the shared second-level cache.…중략This annotation is usually used in combination with Cache, since a round trip may only be avoided if the entity itself is also available in the cache.대략 “natural id와 상응하는 id에 대한 매핑을 2차 캐시에 저장하는 애노테이션이고, 엔티티가 캐시되어있어야 하기 때문에 일반적으로 Cache와 함께 사용된다.”라고 해석됩니다. 즉, 1차 캐시가 아닌 2차 캐시를 위한 애노테이션입니다. 정리2차 캐시 관련 설정 및 테스트를 마저 진행한 후 최종 정리한 내용은 다음과 같습니다. 자연키의 1차 캐시@NaturalIdCache 애노테이션과 관련 없습니다. 자연키에 @NaturalId만 붙이면 됩니다.반드시 Hibernate Session의 bySimpleNaturalId() 같은 전용 API를 사용해야 적용됩니다. 자연키의 2차 캐시@Cache와 @NaturalIdCache를 함께 사용해야 동작합니다.@Cache만 사용 시 @Id로 조회할 때만 2차 캐시가 동작합니다.@NaturalIdCache만 사용 시 자연키와 ID에 대한 매핑 정보는 캐시 히트되는 걸 확인했지만, ID와 엔티티에 대한 캐시가 없어서 캐시가 적용되지 않았습니다. @Cache와 @NaturalIdCache 모두 사용 시 ID를 통한 조회와 자연키를 통한 조회 모두 2차 캐시가 적용됩니다. 참고 자료Hibernate6.6 공식 문서NaturalCache javadocsbaeldung: Hibernate Natural IDs in Spring BootSpring Custom Repository 글의 오류나 부족한 내용을 알고 계신 분은 코멘트를 달아주시면 감사하겠습니다.
-
미해결악성코드 분석 중급과정 (유형별분석)
2025년 로컬 컴퓨터(윈도우11)에서 가상환경으로 드래그앤드롭 안됨
선생님이 강의하신 환경 구성을 그대로 했습니다.클립보드 공유, 드래그 앤드롭 다 양방향으로 설정했습니다. 근데 실습파일을 가상환경에 옮길려고 했는데 드래그앤드롭이 되지 않아서 질문드립니다!이런 경우 어떻게 해야될까요?버츄얼박스 버전은 7.0입니다..!!
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
인라인 스타일 리렌더링 관련
인라인 스타일 사용 시 style이라는 객체 prop이 매번 달라져 리렌더링이 발생한다고 해주신 부분 관련하여 질문드립니다 부모가 리렌더링되는 상황이라 이와 무관하게 자식의 리렌더링도 유발하게 될텐데요자식 컴포넌트 자체에 memo를 적용하는 경우가 아니라면, useMemo를 쓰더라도 최적화 효과가 없을 것으로 보이는데 맞을까요?
-
해결됨[Rookiss University] UE5 Lyra 클론 코딩 (Haker)
UPROPERTY매크로 AllowedType이 동작하지 않습니다.
사진에 보이는 에디터 화면은 UserFacingExperience상속받아 만든 DataAsset인데 MapId나 Experienceid를 눌렀을때 AllowedType대로 동작하지 않고 에셋매니저에 등록된 모든 에셋을 불러옵니다.혹시 제가 사진에 올린거 말고도 다른것들을 해줘야했나요?
-
미해결
코딩 소모임에서 같이 공부하실 분 구합니다!
🔥 같이 성장할 사람 찾습니다 - [코딩존]에서 신규부원 모집합니다!! 🔥 혼자 공부하다 멘붕 온 사람 토이 프로젝트 같이 만들 사람 찾는 사람 CS 기본기나 알고리즘, 면접 준비까지 하고 싶은 사람 그런 당신을 위한 진짜 실속형 스터디,<코딩존>에서 같이 공부해요!! 💻 스터디 소개💡 목적: 실력 있는 개발자 되기 위한 꾸준한 성장💡 방식: 오프라인 OT, 온라인 + 선택적 오프라인 / 협업 툴 활용💡 대상: 개발을 진지하게 공부하고 싶은 누구나 (초보도 환영!)💡 스터디 커리큘럼:CS 기본기 (운영체제, 네트워크, 자료구조 등)알고리즘 문제풀이 (백준/프로그래머스 중심)토이 프로젝트 기획 및 협업코드리뷰 & 발표 스킬 향상개인 목표 점검 및 피드백※ 주제별 소그룹 운영 예정 💻 모집대상서울 거주하는 분들 중 자격증이나 취준 준비 중인데 같이 공부할 팀이 필요한 분 “혼자 공부는 잘 안 돼요…” 싶은 동기부여가 필요한 분 사이드 프로젝트 하고 싶은데 디자이너/프론트/백 구하는 중인 분 단순 스터디가 아닌, 함께 성장하는 커뮤니티를 원하는 분 📌 신청 방법📅 마감: 선착순 6명 (진짜로 소수 정예로 갑니다)📍 지원링크: [https://docs.google.com/forms/d/1aoKEz2ppgUvGmC5jf_jgeid0BjBk6CwVMROEp503Zv0/edit]📩 문의사항은 댓글에 남겨주세요!
-
해결됨넓고 얕게 외워서 컴공 전공자 되기
format 시 0-0트랙 섹터에 관해
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 빠른 포멧 후에 0-0트랙 섹터에 존재 했던 운영체제에 관한 메모리들도 사라지게 될텐데 그 후 부팅은 어떻게 가능한지 궁금합니다
-
해결됨2025 언리얼 공인강사 – UE5 스파르타 클래스: 실전편
수강 전 질문
안녕하세요.강의 초반 버전 관련 영상을 보고 질문 드립니다. 강의마다 언리얼 버전이 바뀌는데, 영상에서 언리얼 버전을 올리면 다시 내릴 수 없다고 말씀 주셨습니다.그럼 강의를 따라가며 버전을 올렸을 경우, 다음 파트가 낮은 버전이 필요 할 때는 어떻게 진행하면 될까요?언리얼버전을 5.0버전 부터 5.6버전까지 다 깔아둬야하나요?유료강의와 다르게 무료강의(실전편)에는 파트마다 버전 표시가 안되어있는데, 이는 전체 버전이 다 호환되는건가요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
검증 실패 후 값이 빈칸인 이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 아니오3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]@PostMapping("/add") public String addItemV1(@ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes, Model model) { //검증 오류 결과를 보관 log.info("item.price1 = {}", item.getPrice()); //검증 로직 if (!StringUtils.hasText(item.getItemName())) { bindingResult.addError(new FieldError("item","itemName","상품 이름은 필수입니다.")); } if (item.getPrice() == null || item.getPrice() < 1000 || item.getPrice() > 1000000) { bindingResult.addError(new FieldError("item","price","가격은 1,000 ~ 1,000,000 까지 허용합니다.")); } if (item.getQuantity() == null || item.getQuantity() >= 9999) { bindingResult.addError(new FieldError("item", "quantity", "수량은 최대 9,999 까지 허용합니다.")); } //특정 필드가 아닌 복합 룰 검증 if (item.getPrice() != null && item.getQuantity() != null) { int resultPrice = item.getPrice() * item.getQuantity(); if (resultPrice < 10000) { bindingResult.addError(new ObjectError("item","가격 * 수량의 합은 10,000원 이상이어야 합니다. 현재 값 = "+resultPrice)); } } //검증에 실패하면 다시 입력 폼으로 if (bindingResult.hasErrors()) { log.info("errors = {} ", bindingResult); log.info("item.price2 = {}", item.getPrice()); return "validation/v2/addForm"; } //성공 로직 Item savedItem = itemRepository.save(item); redirectAttributes.addAttribute("itemId", savedItem.getId()); redirectAttributes.addAttribute("status", true); return "redirect:/validation/v2/items/{itemId}"; }addItemV1에서 폼의 가격에 1원을 입력 후 저장했을 때 log.info("item.price1 = {}",item.getPrice()) 와 log.info("item.price2 = {}",item.getPrice())로 검증시작 전과 검증 실패 후(뷰 반환 직전)에 item.getPrice()의 값을 로그로 확인했는데, 둘다 1이 뜨더라구요.그럼 검증 실패후 뷰로 넘어갔을 때 뷰에서는 똑같이 1이 남아있어야 하는거 아닌가요? 뷰의 th:field="*{price}"는 item.getPrice()로 값을 가져오는데 왜 1이 아니라 null인건지 이해가 안됩니다..!-> 강의뒷편에 내용이 나오네요 ㅎㅎ해결했습니다.