묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
값타입 쓰는 이유, 값타입의 한계와 해결방법
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]값 타입을 공부하며 정리한 생각입니다.제가 올바르게 생각했는지 검토해주시면 감사드리겠습니다개인적으로 정리한 글이라 존댓말이 아닌 점 양해주시면 감사드리겠습니다 값타입은 왜 쓰는가?엔티티는 서로 공유하는 것이 목표이다그래서 엔티티 필드를 다른 엔티티 필드와 연관관계 매핑(@ManyToOne 등)을 하는 것이다하지만 모든 엔티티 필드를 서로 공유한다고 하면 너무 복잡하지 않겠는가?필드가 해당 엔티티에만 소속되어 다른 엔티티와는 연관(공유)되지 않는 값이 있으면 조금이라도 단순해질 수 있지 않을까?그래서 값 타입을 사용하는 것이다!값 타입의 한계는 무엇인가?Wrapper type(기본 값 타입), String type(기본 값 타입), 임베디드 타입은 객체 타입이다.그래서 기본값 타입과 임베디드 타입은 참조 공유가 가능하다.객체 타입의 참조 공유가 문제라고 생각하면 문제일 순 있겠지만자바에서 참조 공유를 막을 수 있는 방법은 없다. 그래서 참조 공유의 문제(두 객체가 하나의 참조를 바라볼 수 있는 문제)는 차치하자.그러면 발생할 수 있는 문제는 무엇이냐면하나의 참조를 바라보는 두 객체가 존재할 때, 해당 참조의 실제 값이 바뀌면 두 객체의 값이 모두 변경될 수 있다는 것이다.(참고로, 만약 참조의 실제 값이 바뀔 때 두 객체의 값이 모두 변경되길 의도했다면 값타입이 아니라 엔티티 타입을 써야 한다. 왜냐하면 공유가 목표였다면 값타입이 아니라 엔티티를 사용하는 것이 옳기 때문이다.)물론 Wrapper type(기본값 타입), String type(기본값 타입) 은 setter 가 없기 때문에 값 변경이 불가능하다.그래서 기본값 타입은 참조 공유의 문제로부터 어느정도 자유로울 수 있다.그럼 진짜 문제는 임베디드 타입이다.왜냐하면 임베디드 타입은 만약 개발자가 setter 를 만들면 값 변경이 가능하기 때문이다.어떻게 임베디드의 참조 공유의 문제(두 객체가 하나의 참조를 바라볼 때, 참조의 실제값이 변경되어 두 객체의 값이 동시에 변경될 수 있는 문제)를 해결할 수 있을까?불변 객체를 만드는 것이다불변 객체는 말 그대로 한번 생성한 이후에 값을 변경하지 못하는 객체이다불변 객체를 만들기 위해1. 생성자로만 필드 초기화2. setter 금지를 준수하면 된다만약 값을 변경하고 싶다면 객체를 통째로 새롭게 만들어야 한다
-
미해결[코드팩토리] [입문] 9시간만에 끝내는 코드팩토리의 Javascript 무료 풀코스
sort 함수에 대해 궁금한 점이 있습니다.
sort 함수의 예시에서[1, 9, 7, 5, 3] 을 내부적으로 비교하게 될 텐데비교하는 순서가1, 91, 71, 51, 3 다 비교한 후에9, 79, 59, 3이런 식으로 순차적으로 비교하나요?
-
미해결Practical Testing: 실용적인 테스트 가이드
git 주소
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요. 안녕하세요. 강의관련 소스받을 수 있는 git 주소가 있을까요?? 감사합니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
실행
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요. 프로젝트 버전 17, gradle 버전도 17로 동일하게 맞췄는데 실행이 되지 않아요 ㅠㅠ 뭐가 문제인거죠? ㅠ
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
오류 문제...
그 전까지는 잘 되었는데 강의 교재에 있는 메뉴얼대로 dependencies를 수정했더니 자꾸 이런 에러가 납니다....계속 해결 방법을 찾고 있는데 잘 모르겠습니다... 도와주세요
-
해결됨PWA 시작하기 - 웹 기술로 앱을 만들자
깃허브 권한 부여 요청합니다
인프런 아이디 : study2845인프런 이메일 : study2845@naver.com깃헙 아이디 : kimmy100b@gmail.com깃헙 Username : kimmy100b
-
해결됨실전 인공지능으로 이어지는 딥러닝 개념 잡기
전이학습 강의 중 질문이 있어서 남깁니다.
전이학습 부분에서 질문이 있습니다! 전이학습 종류는 총 네 가지로 나눌 수 있다고 하셨는데, network-base를 제외하고는 모두 Imagenet 과 같은 대용량의 데이터를 직접 받아 학습에 사용하는 것인가요?저도 지금 딥러닝 관련 분야에서 일을 하고 있는데, network-base 전이학습을 제외하고는 사용해본 적이 없어서 신기해서 여쭤봅니다!
-
미해결스프링 부트 - 핵심 원리와 활용
window gradlew build 에러
The supplied javaHome seems to be invalid. I cannot find the java executable. Tried location: C:\Program Files\Java\jdk-11.0.13\bin\java.exe에러위와 같은 에러가 발생합니다. 하지만 사진에서 보듯 JAVA_HOME은 jdk17로 설정이 되어있고,환경 변수 설정이 제대로 동작하고 있음을 확인할 수 있습니다. 그러나 gradlew build를 진행하면 변경전 jdk11을 계속 실행하려고 해서 오류가 발생합니다. settings -> gradle 도 17로 잘 설정되어있습니다.Project Structure -> Project에 들어가도 잘 설정되어있습니다. 삽질 중인데... 도와주시면 감사하겠습니다 === 질문을 하고 한번더 실행해봤는데 성공하였습니다.Q) 왜 성공했는지 알 수 있을까요? cache 떄문에 그런것이었는지.. 아니면 환경변수 변경이 적용되기까지 시간이 걸리는 것인지요? 이 질문은 다른 분들을 위해 남겨두겠습니다!
-
미해결Kevin의 알기 쉬운 Spring Reactive Web Applications: Reactor 1부
RestTemplate과 Webclient
webflux를 사용할때, webClient를 사용하게 되는데, non-blocking하게 동작해서,,, 란 추상적인 의미 때문에 사용합니다. webclient는 왜 non-blocking 하게 작동하는 걸까요?.. 제대로 이해하지 못하고 사용하는것 같은데, 강사님께 설명 부탁드립니다. 그에 반해 RestTemplate, openFeign은 사용하지 않는데,예제코드를 보니 다음과 같이 사용해도 똑같이 non-blocking 하게 작동할까요?Mono.just(restTemplate.get()).subscribe() Mono.just(feign.get()).subscribe()
-
해결됨[리뉴얼] React로 NodeBird SNS 만들기
팔로잉, 팔로워 목록에 사용자 이름과 StopOutlined 아이콘이 화면에 표시되지 않는 문제 질문합니다!(에러 메시지x)
안녕하세요! React로 NodeBird SNS 만들기섹션4 팔로우/언팔로우 강의를 끝까지 수강한 수강생입니다!항상 강의 잘 보고 있습니다! 제로초님 감사합니다! 김블루 계정으로 핑크공주 계정을 팔로우 했을 때팔로잉, 팔로워 사용자의 이름과 금지 표시 아이콘이 목록 화면에 보이지 않습니다!(아이콘이 들어가는 위치에 다른 아이콘을 넣었을 때도 아이콘이 표시되지 않았습니다!)리덕스와 네트워크 탭을 확인했을 때 팔로워, 팔로잉 목록 불러오기는 성공했습니다.vsCode 터미널, 콘솔, 리덕스, 네트워크 항목에도 에러가 없으며앤트 디자인 아이콘 버전도 아이콘에 맞게 수정하고, item도 추가했지만 해결되지 않았습니다!구글 검색 및 제로초님 강의와 트위터 클론 깃허브를 확인 후에도 원인을 알 수 없어 질문 글 올립니다! [김블루 계정의 팔로잉 목록][핑크공주 계정의 팔로워 목록]FollowList.js// Ant Design 아이콘 불러오기 import { StopOutlined } from '@ant-design/icons'; ... return ( <List style={{ marginBottom: '20px' }} /* 격자 모양 */ grid={{ gutter: 4, xs: 2, md: 3 }} /* 목록 크기 */ size="small" /* 팔로잉 목록, 팔로워 목록 헤더 */ header={<div>{header}</div>} /* 더보기 버튼 */ loadMore={ <div style={{ textAlign: 'center', margin: '10px 0px' }}> <Button>더 보기</Button> </div> } /* 팔로잉 목록, 팔로워 목록 전체 테두리 */ bordered /* 목록용 데이터소스 : 팔로잉 목록, 팔로워 목록 더미데이터 배열 전달 */ dataSource={data} renderItem={(item) => { <List.Item style={{ marginTop: '20px' }}> <Card actions={[<StopOutlined key="stop" onClick={onCancel(item.id)} />]}> <Card.Meta description={item.nickname} /> </Card> </List.Item> }} />/* List 닫음 */ ); };
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
nosuchmethod 문제해결
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]세팅을 하는 도중, Junittest를 하려고하는데 Nosuchmethod 오류가 발생해 구글링 후 window - preferences - gradle - advanced option- program argyments 에 -Pjunit-jupiter.version=5.10.0 이 코드를 추가했는데 상관이 없는지 여쭤보려고 글 작성하였습니다. 해당 답변은 https://stackoverflow.com/questions/77110882/i-cant-run-junit-5-9-x-tests-in-eclipse-2023-09-4-29-0/77150487#77150487여기서 얻었습니다.[추가질문]기존 sts4로 공부를하는데 강사님이 사용하시는 intelliJ를 사용하는게 좋은지도 궁금합니다!
-
해결됨Windows 소켓 프로그래밍 입문에서 고성능 서버까지!
스마트포인터 사용여부 및 가능성
안녕하십니까 선생님. 훌륭한 강좌 잘 들었습니다. 비동기 콜백 부분에서 버퍼와 오버랩드구조체를 동적할당하고 콜백함수에 주소를 주고 다쓴후에 딜리트를 하는 방식을 유니크나 쉐어드포인터 같은 스마트포인터로 대체가 가능할까요?특히 쉐어드는 잘만쓰면 정말유용할것 같긴한데 서버개발할때 레퍼런스 카운팅에 대한 아토믹연산의 오버헤드에 대해 감당할만하다고 생각하시는지요?또한 스마트포인터를 쓰고싶어도 콜백함수로 등록가능한 함수형태가 정해져있어서 스마트포인터 그 자체를 넘겨줄순없는것같은데혹시 방법이있다면 조언좀 부탁드리겠습니다.감사합니다.
-
미해결Do It! 장고+부트스트랩: 파이썬 웹개발의 정석
장고 개발 준비.
안녕하세요 강사님, 섹션 4 장고 개발 준비에서 .idea파일을 ignore에 적으라고 하셨는데, 제 맥북에는 .idea파일이 없는데 그럼 그냥 무시하고 진행하면 되는 걸까요? (이전단계는 강사님이 하신대로 똑같이 따라 했습니다.)
-
해결됨Backend 멀티쓰레드 이해하고 통찰력 키우기
코틀린으로 해당 C# 예제를 비슷하게 만들어봤는데, 제가 잘못 작성한 걸까요?
<상황>지식 공유자님께서 작성해주신 C# 코드 예제를 코틀린으로 비슷하게 작성해서 시도해보았지만 같은 상황이 재현되지 않습니다. <질문 의도>제가 지식 공유자님의 코드를 잘못 이해하고 작성한 것인지, 아니면 JVM의 의도치 않은 최적화 때문에 의도와 다르게 동작하는 것인지 궁금합니다. <작성한 코드>fun main (args: Array<String>) { Example().startUp() } class Example() { private var shouldStop = false fun startUp() { println("process start") val thread = Thread(Runnable { doWork() }) thread.start() Thread.sleep(1000) shouldStop = true thread.join() println("process end") } // shouldStop에 @Volatile을 붙이지 않으면 무한 루프를 돌 것이라고 생각했으나 // graceful shutdown이 잘 되어버림 private fun doWork() { while (!shouldStop) { println("doWork..") Thread.sleep(1000) } } } 좋은 강의 만들어주셔서 감사합니다!
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
파트 6 서버연동에 대해 질문합니다.
파트4에서는 5장에서 간단하게 다루고 파트 6에서 연동에 대해서 제대로 다루는 것으로 알고 있는데 혹시 파트 6는 언제 나올까요?부트캠프로 하신다고 하셨는데 제가 대학생이라 부트캠프를 참가할 여력이 안되는데혹시 온라인 강의로는 언제 공개될까요?
-
미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
GCP 환경 실습
현재 vm 이 아닌 GCP 환경에서 실습을 진행중입니다. 와중에 마스터 노드에 jenkins 포드를 생성하고 외부에서 접근할때, 마스터 노드가 띄워져있는 인스턴스에서가 아닌 제 정말 로컬에서 접근하고자 합니다. 하여 GCP 에서 할당해준외부ip:8888 로 접근하려고 하자 접근이 잘 되지 않습니다. ping 을 보내어봐도 핑은 잘 가는것으로 보아 서버ip 는 잘 열려있는데 포트가 막힌것인지 궁금합니다. 혹시 이게 맞다면 따로 방화벽룰 을 설정한다거나 해야할까요?
-
해결됨김영한의 실전 자바 - 기본편
실무와 this, 멤버변수와 매개변수 이름 짓기
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요! 실무와 관련해서 궁금한 점이 있습니다.IDE 가 발전하면서 매개변수와 멤버변수를 색으로 구분할 수 있게 되어서 this를 잘 쓰지 않는다고 하셨는데요, 그렇다면 매개변수와 멤버변수명을 일부러 다르게 설정을 하나요? 감사합니다.
-
해결됨재고시스템으로 알아보는 동시성이슈 해결방법
redisson lock을 AOP로 변경하는 경우 실무 사용 방법 문의드립니다!
강사님 안녕하세요!해당 강의 수강 후 실무에 재고 동시성 처리 코드를 개발하고 있는데 궁금한 부분이 있어서 문의드립니다! redisson lock 으로 구현하였는데, 중복 코드가 많아서 AOP로 작업 작업을 하려합니다.aop를 작업 하는 경우 facade가 아니라 stockService에 직접 어노테이션을 추가하는 형태로 하는게 맞을지 혹시 해당 부분은 실무에서 사용하실때 어떤 형태로 하시는지 문의드립니다.구글 검색을 하다보니 AOP로 트랜잭션 new로 한다는 이야기가 있는데 실무에서 어떻게 쓰셨는지 궁금해서 문의드립니다!감사합니다! @Component public class RedissonLockFacade { private RedissonClient redissonClient; private StockService stockService; public RedissonLockFacade(RedissonClient redissonClient, StockService stockService) { this.redissonClient = redissonClient; this.stockService = stockService; } public void decrease(Long id, Long quantity) { RLock lock = redissonClient.getLock(id.toString()); try { boolean available = lock.tryLock(10, 1, TimeUnit.SECONDS); if (!available) { System.out.println("lock 획득 실패"); return; } stockService.decrease(id, quantity); } catch (InterruptedException e) { throw new RuntimeException(e); } finally { lock.unlock(); } } }
-
해결됨스프링 핵심 원리 - 기본편
섹션3. 스프링핵심원리 이해 강의내용질문
의존관계 주입을 사용하면 클라이언트 코드를 변경하지 않고, 클라이언트가 호출하는 대상의 타입 인스턴스를 변경할 수 있다. 의존관계 주입을 사용하면 정적인 클래스 의존관계를 변경하지 않고, 동적인 객체 인스턴스 의존관계를 쉽게 변경 할 수 있다. 결국 이 두문장은 똑같은 말 아닌가요? 클라이언트 코드를 변경하지 않는다 == 정적인 클래스 의존관계를 변경하지 않는다클라이언트가 호출하는 대상의 타입 인스턴스를 변경할수있다 == 동적인 객체 인스턴스 의존관계를 쉽게 변경할수있다. 결국 실행이 되는부분은 클라이언트코드니까 동적으로 실행될때 정적인 클래스 의존관계가 유지가 되겠고,인스턴스가 변경할 수 있다는 의미는 런타임중에 정률 할인 정책으로 될지, 정액 할인 정책으로 될지가 동적인 인스턴스의 관계를 변경할수있다는 의미로 들려서 결국 두문장은 같은의미로 사용되지않았나 싶습니다
-
미해결Next + React Query로 SNS 서비스 만들기
Error: CredentialsSignin
백엔드소스 받아 로컬에 서버 가동시켰고, 레디스 서버도 켜두었고강사님이 올려주신 클라이언트 ch4소스에서 실행시켜, 회원가입 도중 에러가 발생합니다. postresql 디비에는 정상적으로 회원정보가 등록되긴 하였습니다만, 프론트에서 아래와 같은 에러가 있는데요원인이 무엇일까요? Error: CredentialsSignin at signIn (webpack-internal:///(action-browser)/./node_modules/next-auth/lib/actions.js:62:22) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async $$ACTION_0 (webpack-internal:///(action-browser)/./src/app/(beforeLogin)/_lib/signup.ts:53:9) at async /Users/yhj/Desktop/yhj_projects/next-app-router-z-master/ch4/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:38:489 at async tX (/Users/yhj/Desktop/yhj_projects/next-app-router-z-master/ch4/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:37:5313) at async rl (/Users/yhj/Desktop/yhj_projects/next-app-router-z-master/ch4/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:38:23339) at async doRender (/Users/yhj/Desktop/yhj_projects/next-app-router-z-master/ch4/node_modules/next/dist/server/base-server.js:1406:30) at async cacheEntry.responseCache.get.routeKind (/Users/yhj/Desktop/yhj_projects/next-app-router-z-master/ch4/node_modules/next/dist/server/base-server.js:1567:28) at async DevServer.renderToResponseWithComponentsImpl (/Users/yhj/Desktop/yhj_projects/next-app-router-z-master/ch4/node_modules/next/dist/server/base-server.js:1475:28) at async DevServer.renderPageComponent (/Users/yhj/Desktop/yhj_projects/next-app-router-z-master/ch4/node_modules/next/dist/server/base-server.js:1852:24) at async DevServer.renderToResponseImpl (/Users/yhj/Desktop/yhj_projects/next-app-router-z-master/ch4/node_modules/next/dist/server/base-server.js:1890:32) at async DevServer.pipeImpl (/Users/yhj/Desktop/yhj_projects/next-app-router-z-master/ch4/node_modules/next/dist/server/base-server.js:902:25) at async NextNodeServer.handleCatchallRenderRequest (/Users/yhj/Desktop/yhj_projects/next-app-router-z-master/ch4/node_modules/next/dist/server/next-server.js:266:17) at async DevServer.handleRequestImpl (/Users/yhj/Desktop/yhj_projects/next-app-router-z-master/ch4/node_modules/next/dist/server/base-server.js:798:17)