묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
Member와 Locker 테이블에 질문이 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]영상을 4분대까지 본 후 혼자 테스트를 해보고 있던 중 질문이 있습니다. Member 클래스에서 JoinColumn을 통해 name을 LOCKER_ID로 설정해주셨는데 이 LOCKER_ID는 어떤 것을 의미하나요? Locker 테이블의 id값이 그럼 @Column(name = "LOCKER_ID") 이렇게 되어있어야 하는 것 이라고 이해를 하고있습니다.두 번째 질문으로 Member 클래스에서 JoinColumn을 지우고 Locker 테이블에서도 따로 @Column(name ="LOCKER_ID")를 설정해주지 않고 JpaMain 클래스에서Locker locker = new Locker(); locker.setName("lockerA"); em.persist(locker); Member member = new Member(); member.setUsername("member1"); member.setLocker(locker); em.persist(member); Team team = new Team(); team.setName("teamA"); team.getMembers().add(member); em.persist(team); tx.commit();이렇게 실행을 해보았는데 어째서 Member 테이블에 LOCKER_ID 라는 이름으로 컬럼이 생기고 값이 들어가는지 궁금합니다. -> Member 클래스에서 locker변수에 @JoinColumn도 해주지 않았습니다. Member, Locker 클래스는 이렇습니다 ! @Entity public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "MEMBER_ID") private Long id; @Column(name = "USERNAME") private String username; @ManyToOne @JoinColumn(name = "TEAM_ID") private Team team; @OneToOne private Locker locker; public Locker getLocker() { return locker; } public void setLocker(Locker locker) { this.locker = locker; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public Team getTeam() { return team; } public void setTeam(Team team) { this.team = team; team.getMembers().add(this); } } @Entity public class Locker { @Id @GeneratedValue private Long id; private String name; @OneToOne(mappedBy = "locker") private Member member; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } 잘못 이해한 것이 있으면 설명 부탁드리겠습니다 ㅎㅎ
-
미해결
node.js 입문을 앞두고 있습니다.
안녕하세요. 제가 백엔드 웹 개발자로 너무 취업하고 싶어서 요즘 인프런 강의를 적극적으로 듣고 있습니다.제가 말씀드리려는 것은,제가 HTML CSS JavaScript 강의를 생활코딩님의 강의로 접해서 ES5 버전까지의 문법을 배우고 node.js를 입문해 보았는데요. 근데 제가 중간중간 생활코딩님의 nodejs 강의를 듣고 보니 '따라갈 수는' 있는데 javascript 강의처럼 쉽게 '이해가 되지는' 않아서 배움에 차질이 느껴진다는 것입니다.이게.. 제가 node.js를 배우기 위한 배경 지식이 아직 부족하지 않나 스스로 의문이 들더라구요.javascript에서 함수 스코프, 블록 스코프 이런 것을 넘겨두고 ES6+ 문법들은 제쳐두고 바로 node.js를 시작해서 그런가 어떻게 해야할 지 갈피가 잡히지 않습니다.너무 배우고 싶어서 zerocho님의 Node.js 교과서 도서도 구입해가지구요.이대로 생활코딩님의 노드 강의를 일단 완강하고나서 더 공부할지, 아니면 돌아가서 JS를 더 공부할지 선택해야 할 것 같습니다.어떻게 해야 할지 방향성만 잡아주었으면 합니다. 도움을 주셔서 감사합니다.
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
데이터 패칭 관련 질문 드립니다.
안녕하세요 이정환 강사님.인스타의 위치검색기능과 비슷한 기능을 구현하고 있습니다.조회버튼을 클릭해서 serachParams를 서버컴포넌트로 전달하는 형식이 아니라 검색어가 입력되면 바로 검색해서 결과를 출력해야 하는 페이지인 경우에는 전부 클라이언트 컴포넌트로 구성해야 하나요?어떤식으로 구성해야 Next의 장점을 최대한 살릴 수 있는지 궁금합니다.
-
미해결해외 개발자 취업 Resume 가이드
질문이 있어 글 남깁니다.
안녕하세요저는 비전공자를 위한 개발자 취업가이드를 보면서정수님을 알게되어 여기까지 보게되었네요 ㅎㅎ현재 비전공자 29살이며 일하는 직장도 it랑은 전혀 관련없는 공기업에 재직 중 입니다.아무래도 제가 지금 일하는 분야가 잘 맞지않고 미래에 쉽게 대체될 직종이라it 분야를 공부하고 싶어 자바와 스프링을 열심히 공부중입니다.공부를 하다보니 저도 커리어를 시작한다면 미국에서 시작하고 싶어 여러가지 알아보니미국 학교를 나오지 않으면 사실상 신분문제로 취업이 거의 불가능하다고 들었습니다.제가 미국에서 취업하는 방법은 석사를 하는 방법이 있는데얼마나 기간이 걸릴지도 모르고, 제가 취업을 한다는 보장도 없어서일을 그만두고 하는게 맞는가.. 고민만 하고 있습니다.그러다보니 공부도 조금씩 게을러지고있습니다 ㅎㅎ..먼저 국내 IT기업에 취업을 하고 준비를 해야할지아니면 영어공부를 하여 미국 석사를 시작할지 고민되어 이렇게 질문을 남깁니다블로그 글 올리실때마다 항상 잘 보고있습니다 감사합니다~
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
pm2 restart
만약에 수정된것을 git pull 받고 pm2 를 다시 동작시키는거면 1. git pullnpm inpm run buildpm2 reload로 해도 되는걸로 알고있는데kill 죽이고 나서 다시 restart 하는 이유가 있나요 ? 서버안에서 npm run build 하게 되면 메모리 hang 으로 서버가 뻗어버리던데 이럴땐 어떻게 해결하시나요 ?? github actions 라는 컴퓨터 한대를 빌린다고 하셔서 거기에 빌드를 하면 메모리 이슈가 없겠구나 생각이 드는데 스크립트를 보면 결국엔 ssh 로 ec2 host 접근해서 빌드 하더라고요 그러면 ec2 서버내에서 빌드하는게 아닌가 ?? 생각이 들어서요 ㅎㅎ
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
실행이 안돼요 ㅠㅠ
최신버전으로 다운 받았는데도 실행이 안돼서 강의를 진행할 수 없습니다. ㅠㅠ 어떻게 해야하나요. 자세히좀 알려주세요
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
실행이 안돼요 ㅠㅠ
최신 버전으로 다운받고 했는데 실행이 안돼요.. 공부를 진행하고 싶어도 이거때문에 시간만 보내고 진행이 안돼네요 ㅠㅠ
-
미해결카프카 완벽 가이드 - 코어편
한대의 PC 에서의 Docker container 를 통한 cluster 구성
안녕 하세요. 개발자님 궁금 한 것이 있어 문의 드립니다. 1.1대의 PC 에서 docker container 환경에서 confluent kafka를 container 로 3개 를 뛰어서, 3 개의 Broker 환경을 만든다 가정 하고 --replication-factor=3 개로 설정 해서 사용 하는 방법에 대해서 어떤 생각을 가지고 있으신가요? 2.docker image confluent kafka 를 사용 하는 것은 기존 container 환경에서 하지 않는 방시과 성능적인 차이가 있을까요? 너무 궁금 합니다.
-
미해결[게임 프로그래머 도약반] DirectX11 입문
19분 5초에 함수 구현부 한꺼번에 만드는법
한번에 어떻게 하셨는지 궁금합니다.
-
해결됨Flutter 앱 개발 실전
수강기한 연장
안녕하세요 데브스토리님! 강의 잘 듣고있습니다.수강기한이 얼마 남지않아서 수강기한 연장 부탁드리겠습니다.그리고 만약 연장신청을 놓쳐서 수강기한이 끝나버리면 어떻게되는지 여쭤봐도 될까요?
-
해결됨기초 탄탄! 독하게 시작하는 Java - Part 2 : OOP와 JVM
클래스 로딩 순서에 관해 질문이 있습니다.
10분 24초에 클래스를 로딩하기에 앞서서 검사, 준비, 해결과정을 거친다고 하셨는데 로딩을 한 후 링킹(검사,준비, 해결)과정을 수행하는 것이 아닌가요? 로딩전 링킹과정 후 로딩을 하는 것인가요? 제가 잘못이해하고 있는 것인지 궁금합니다
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
외부 내부 트랜잭션 질문
이전 내용은 내부 트랜잭션이 외부 트랜잭션에 종속된다는 내용이였는데, 지금까지 테스트를 트랜잭션 매니저로 직접 생성해서 해주셨습니다.그런데 실무에서는 트랜잭션 어노테이션을 많이 쓰는데 디폴트 트랜잭션은 기존 트랜잭션이 존재하면 그대로 이어 쓰는 걸로 알고 있습니다. 이 경우가 이어 쓰는 것임에도 논리적으로 외부 내부로 구분하는 건지, 아니면 다른 옵션의 예가 따로 있는 건지 궁금합니다. 정리하자면 기존 트랜잭션을 이어 쓰는 REQUIRED 옵션이 이제까지 설명해주신 내부가 외부에 종속되는 트랜잭션인지 아니면 다른 옵션이 있는 건지 궁금합니다.
-
미해결쿠버네티스 대신 도커 SWARM 사용 방법 핵심 강의
404 에러
traefik.yamlservices: traefik: image: traefik ports: - target: 80 published: 80 mode: host protocol: tcp - target: 443 published: 443 mode: host protocol: tcp - 9001:9001 volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - /var/log/traefik:/var/log/traefik - traefik-certificates:/certificates deploy: mode: global placement: constraints: - node.labels.traefik-public.traefik-certificates == true labels: - traefik.enable=true - traefik.docker.network=traefik-public - traefik.constraint-label=traefik-public - traefik.http.middlewares.https-redirect.redirectscheme.scheme=https - traefik.http.middlewares.https-redirect.redirectscheme.permanent=true - traefik.http.routers.traefik-public-http.rule=Host(`test.shop`) - traefik.http.routers.traefik-public-http.entrypoints=traefik-ui - traefik.http.routers.traefik-public-http.middlewares=https-redirect - traefik.http.routers.traefik-public-https.rule=Host(`test.shop`) - traefik.http.routers.traefik-public-https.entrypoints=traefik-ui - traefik.http.routers.traefik-public-https.tls=true - traefik.http.routers.traefik-public-https.service=api@internal - traefik.http.routers.traefik-public-https.tls.certresolver=le - traefik.http.routers.traefik-public-https.middlewares=admin-auth - traefik.http.services.traefik-public.loadbalancer.server.port=8080 - "traefik.http.middlewares.non-www-to-www.redirectregex.regex=^https?://(?:www\\.)?(.+)" - "traefik.http.middlewares.non-www-to-www.redirectregex.permanent=true" - "traefik.http.middlewares.non-www-to-www.redirectregex.replacement=https://www.$${1}" update_config: order: stop-first command: - --providers.swarm.network=traefik-public - --providers.swarm.constraints=Label(`traefik.constraint-label`, 'traefik-public') #v3 버전 전용 코드 - --providers.swarm.exposedbydefault=false - --providers.swarm.endpoint=unix:///var/run/docker.sock - --entrypoints.http.address=:80 - --entrypoints.https.address=:443 - --certificatesresolvers.le.acme.email=email - --certificatesresolvers.le.acme.storage=/certificates/acme.json - --certificatesresolvers.le.acme.tlschallenge=true - --accesslog.bufferingsize=100 - --accesslog.filepath=/var/log/traefik/traefik-access.log - --accesslog.fields.defaultmode=keep - --accesslog.fields.names.ClientUsername=drop - --accesslog.fields.headers.defaultmode=keep - --accesslog.fields.headers.names.User-Agent=keep - --accesslog.fields.headers.names.Authorization=drop - --accesslog.fields.headers.names.Content-Type=keep - --log - --api - --entrypoints.traefik-ui.address=:9001 networks: - "traefik-public" volumes: traefik-certificates: {} networks: traefik-public: name: traefik-public external: true app.yamlservices: flask: image: 192.168.219.114:5000/fastapi-helloworld networks: - traefik-public deploy: labels: - "traefik.enable=true" - "traefik.http.routers.flask.rule=Host(`test.shop`)" - "traefik.http.routers.flask.entrypoints=http" - "traefik.http.routers.flask.middlewares=https-redirect" - "traefik.http.routers.flask-https.rule=Host(`test.shop`)" - "traefik.http.routers.flask-https.entrypoints=https" - "traefik.http.routers.flask-https.tls=true" - "traefik.http.routers.flask-https.tls.certresolver=le" - "traefik.docker.network=traefik-public" - "traefik.constraint-label=traefik-public" - "traefik.http.services.flask-https.loadbalancer.server.port=8080" networks: traefik-public: name: traefik-public external: true stack 배포하고 test.shop 접속 시 404 에러가 발생합니다.현재 애플리케이션 컨테이너의 포트는 8080으로 설정되어있습니다.원인이 뭘까요??
-
해결됨[켠김에 출시까지] UE5 다크앤다커 스타일의 익스트랙션 RPG (D1)
ThirdPersonCPP만들어서 열면 오류가 엄청 뜹니다
Lyla파일 D1도 비슷합니다..cpp파일 하나 열때마다 오류가 엄청 생기네요언리얼 버전 재설치, 버전 5.5(두번째사진)로 해보기라이브코딩 끄고 save..,binary,inter... 폴더 제거 등이리저리 해결법을 검색해보곤 있습니다만 성과가 없네요..ㅜㅜ
-
해결됨쿠버네티스 대신 도커 SWARM 사용 방법 핵심 강의
13:00
13:00 에서 서비스의 연결 포트는 어떤 포트를 의미하는 건가요?
-
해결됨이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
28:50 에서 SetPercent 함수와 관련하여 궁금한 점이 있습니다.
파트2의 10강 28:50 에서, if 문에"ABOpponentCharacter->SetLevel(CurrentStageNum);" 구문을 추가로 넣은 후 게임을 진행하면서 다음 두번째 적이 스폰될 때, HpBar가 100/150의 비율로 렌더링이 되는 것이 이해가 잘 가지 않습니다. "HpProgressBar->SetPercent" 함수가 HpProgressBar의 비율을 계산하여 렌더링 하는것이 맞다면, 적이 스폰될 때 StatComponent에서의 beginplay를 통해 BaseStat.MaxHp 가 100 이 된 후, 위젯의 "SetupCharacterWidget" 이 호출되어 순서대로 "SetMaxHp"를 통해 위젯의 MaxHp 또한 100 이 되고 끝으로 "SetPercent(NewCurrentHp / MaxHp);" 를 실행하여 100/100 비율로 체력바가 올바르게 갱신되어 렌더링되는 것 까지는 이해했습니다. 근데 적 Level이 2가 될 때, 스텟컴포넌트의 BaseStat.MaxHp 가 "28:50"에서 추가했던 "SetLevel(CurrentStageNum);" 으로 인해 150 으로 갱신되고, 문제는 그 이후에 아래와 같은 두 추가적인 과정이 없이 어떻게 게임상에서 보이는 체력바의 비율이 100/150 의 비율로 갱신이 될수 있던 것인지 궁금합니다.HpBarWidget->SetMaxHp(Stat->GetTotalStat().MaxHp); 구문을 다시 실행시켜서 HpBarWidget 의 MaxHp 변수를 150 으로 갱신시켜주고OnHpChanged.Broadcast(CurrentHp); 를 명시적으로 호출하여, HpProgressBar->SetPercent(NewCurrentHp / MaxHp); 를 실행시켜서, 갱신이 필요한 CurrentHp의 값인 100과, 1.을 통해 150 으로 갱신된 MaxHp 두 값의 100/150 비율이 비로소 렌더링이 된다. 28:50 코드 이후에위 두가지 코드를 실행하는 구문이 명시적으로 추가되지 않다면, ABHpBarWidget의 MaxHp는 여전히 100일 것이며, 150으로 갱신되었다 하더라도 여전히 UpdateHpBar를 호출하지 않았으므로 SetPercent(NewCurrentHp/MaxHp)를 호출하지 못하여 100/100의 비율로 렌더링이 되었어야 한다고 생각이 드는데, 실제론 전혀 그렇지 않고 스텟컴포넌트에서 변경된 MaxHp가 위젯의 MaxHp에도 자동으로 적용되어 100/150의 올바른 비율로 갱신되는 이유가 궁금합니다. log 를 한번 찍어보았는데, 저는 "GetWorld()->SpawnActor" 로 월드에 적이 스폰 된후 InitWidget 을 통해 위젯이 생성된 다음, 곧바로 nativeconstruct 가 호출될 것으로 예상했으나 다음 구문인 "ABOpponentCharacter->SetLevel(CurrentStageNum);" 이 실행되고, 이 구문이 실행이 완료되고 나서야 뒤늦게 위젯의 nativeconstruct 가 실행됩니다. 만약 이 흐름이 버그가 아니라면, 뒤늦게 nativeconstruct가 호출됨으로써HpBarWidget->SetMaxHp(Stat->GetTotalStat().MaxHp);HpBarWidget->UpdateHpBar(Stat->GetCurrentHp()); 위 두 구문이 실행이 되는 것이므로 지금 보이는 체력바의 모습이 비로소 이해가 됩니다. 근데 이 nativeconstruct 의 호출타이밍이 왜 InitWidget 의 실행이 끝난 후 바로 호출이 되지 않고, 그 다음 구문인"ABOpponentCharacter->SetLevel(CurrentStageNum);" 이 실행이 끝나고 나서야 호출이 되는 것인지 궁금합니다. 혹시 몰라 해당 프로젝트를 깃허브에 올려놓았습니다.https://github.com/jaebyoung/MyArenaBattle_2_10(업로드가 처음이라 제대로 올라간 것인지 모르겠습니다..)
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
ios simulator 에러
Xcode build done. 3.1sFailed to build iOS appError (Xcode): Target debug_unpack_ios failed: Exception: Failed to codesign /Users/2sumin/Desktop/test_proj.nosync/build/ios/Debug-iphonesimulator/Flutter.framework/Flutter with identity -.Could not build the application for the simulator.Error launching application on iPhone 16 Plus. 이렇게 에러가 발생하는데,icloud에 연동되지 않게 파일을 만들면 해결된다고 하는데 어떻게 파일을 만들어도 계속 에러가 발생합니다...어떻게 해결해야 하나요?
-
미해결따라하며 배우는 리액트 네이티브 기초
android studio에서 시뮬레이터를 실행시 cpu 과도 사용 질문
안드로이드 스튜디오에서 시뮬레이터를 실행시키면 cpu와 메모리가 거의 100%프로에서 안떨어지려고 하는데 이거 낮추는 방법 없을까요..?
-
미해결실무자를 위한 구글애널리틱스(GA4+GTM) 활용법(25년 Update)
페이지 경로가 잘 안잡혀요
GTM에서 제공한 head,body값을 소스 내 등록했고, 그에따른 데이터가 들어오고 있기는 한데요. 페이지 경로가 계속 하나로만 나오고 있어요. 예를들어 https://naver.com/es/#/ 이 링크라면 페이지 경로가 계속 /es/로만 잡히고 있는데 이부분 개선 방법을 혹시 아실까요?
-
미해결Next + React Query로 SNS 서비스 만들기
게시글 삭제하기
안녕하세요 제로초님! 게시글 삭제하기 기능을 구현하고 있습니다!구현해도 안되길래 스웨거가서 테스트를 하고 서버를 봤더니 오류가 나더라구요혹시 이유를 알 수 있을까요??