묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 핵심 원리 - 고급편
LogTrace Prototype Bean으로 설정 시
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요! LocalThread 수강 중 궁금증이 생겨 질문드립니다.다음과 같이 LogTrace를 Prototype Bean으로 등록 후 컨트롤러에서 주입받아 사용하는 상황은 Thread safe 하다고 말할 수 있는지 궁금합니다package hello.advanced.app.v3; import hello.advanced.trace.TraceStatus; import hello.advanced.trace.hellotrace.HelloTraceV2; import hello.advanced.trace.logtrace.LogTrace; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.ObjectProvider; import org.springframework.context.ApplicationContext; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequiredArgsConstructor public class OrderControllerV3 { private final OrderServiceV3 orderService; private final ObjectProvider<LogTrace> provider; @GetMapping("/v3/request") public String request(String itemId) { TraceStatus status = null; LogTrace trace = provider.getObject(); try { status = trace.begin("OrderController.request()"); orderService.orderItem(trace, itemId); trace.end(status); return "ok"; } catch (Exception e) { trace.exception(status, e); throw e; } } } 만약 그렇다면, ThreadLocal을 통해 할당하고 접근하는 것과 어떤 차이가 있는지 궁금합니다.프로토타입 빈에 대한 이해가 부족한 것 같아 터무니없는 질문일 수 있지만, 잘 이해가 가지않아 질문드립니다
-
해결됨넓고 얕게 외워서 컴공 전공자 되기
master boot record관련
컴퓨터 전원을 켰을때 하드디스크에서 0트랙 0섹터의 마스트 부트 로드 코드를 넣는다고했고, 섹터는 거의 512byte 단위라고 이해를 해서요.그럼 부트 레코드는 항상 512byte를 유지가 되는건가요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
상품 POST 등록 후 상세화면
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]넘겨받은 prameter로 item 객체를 생성하고, id 값이 null인 상태의 해당 객체를 model에 넣어주었는데, 상품등록 후 상세 화면에서 id값이 제대로 보여지는 이유가 궁금합니다.
-
해결됨쉽게 배우고, 포트폴리오로 만드는 반응형 웹! #설화수
a태그 질문!
강사님 lounge에 자세히보기로 이동하는 a태그는 div class: btn-view 태그로 한번 감싸서 사용해했는데 플래그십 스토어 스파에서(강의 4분 34초)는 div로 감싸지 않고 그냥 a태그를 사용하는 이유가 있을까요?? 같은 페이지 이동 버튼인데 div로 한번 더 감싸는 이유가 따로 있는지 궁금합니다!
-
미해결파이썬 증권 데이터 수집과 분석으로 신호와 소음 찾기
px.line 그리기에 대해서 문의 드립니다.
반복 적으로 관심 종목을 불러와서 챠트를 그리고 싶어서 while 문으로 구성 해 봤는데, 챠트가 출력되지 않습니다. 어디가 문제일까요? 문제가 된 while 문 출력 결과 입니다. 출력 결과 관심 종목을 입력 받으면 입력 받은 종목의 챠트를 출력하고, 다음 종목을 입력 받기를 기다리게 구성하였고, n or N을 입력하면 종료하는 것으로 구성하였습니다. 그런데 결과물에 챠트가 출력되지 않습니다. 한 종목 출력하면 출력이 됩니다.
-
해결됨실전! Querydsl
Controller, Serivce에서의 Querydsl, JPA 의존(?)
Querydsl 강의 <섹션 7. 스프링 데이터 JPA가 제공하는 Querydsl 기능> 강의를 들으면서QuerydslPredicateExecutor나 Querydsl Web 지원을 사용하게 되면 Controller나 Service에서Querydsl에 의존하게 되니까 사용하는걸 권장하지 않는다고 말씀해주셨습니다. 스프링 데이터 JPA에서 Pageable을 사용하면 Controller나 Service에서org.springframework.data.domain.Pageable 에 의존하게 됩니다.Spring Web과 Spring Data JPA 를 같이 사용하는 경우가 많기 때문에Spring Web이 Spring Data JPA에 의존하게 되는건 크게 문제가 되지 않는건가요?
-
미해결PHP 7+ 프로그래밍: 객체지향
라라벨(php) 배포 문의
라라벨로 backend 개발을 시작하고 있는 초보 개발자 입니다배포시 여러방법이 있겠지만 (Laravel Envoyer,Laravel Forge 등이 있지만) 이것을 사용하지 않고 무료로 개인서버(서버호스팅)배포를 고민하고 있습니다배포할 서버 : centos 7개발 : 라라벨 8강사님께서 작성한 "카페24 호스팅에 라라벨 프로젝트 배포하기" 문서도 보았습니다잘 이해가 안됩었습니다추가적으로 개인서버(production)에서 아파치 웹서버 사용시 설정을 어떻케 하면 되는지도 궁금합니다수고하세요
-
해결됨입문자를 위한 게임 프로그래머 개론
취업을 위한 공부방향
안녕하세요 저는 올해 막 대학을 졸업하고 취업 준비를 시작하게 된 학생입니다. 강사님께서 요즘 너무 바쁘신 것 같아 질문을 드려도 될까 고민이 많았는데 주변에 프로그래밍을 공부하는 사람이 전혀 없다보니 앞으로의 공부 방향에 대해 물어볼 사람이 없어 질문드리게 되었습니다ㅜㅜ저는 우선 강사님의 C#강의를 시작으로 처음 게임개발을 공부하기 시작했고, 팀 프로젝트 경험이 있으면 좋을 것 같아 주변에 관심 있는 사람들을 모아 소규모로 플레이스토어와 앱스토어에 모바일 게임(C#, 유니티 엔진)을 출시한 상태입니다. 물론 코드가 너무 지저분한 것 같고 마음에 들지는 않지만 일단 클라이언트 프로그래머로 취업을 해서 회사 코드도 보고 계속해서 공부하면 실력은 더 향상될 것이라고 생각하고 있습니다.경제적인 사정으로 인해 학원은 다니기 힘든 상황이고 생활비를 줄여가며 강의를 구매하여 공부하는 중입니다. 그렇기 때문에 우선 취업을 하는 것을 목표로 하고 취업 후 계속해서 부족한 부분들을 공부하려고 합니다. 본래 계획은 출시한 게임을 포트폴리오로 활용하려고 하였지만 C++을 선호하는 회사들이 많은 것 같아 새롭게 포트폴리오를 만들기 위해 현재 C++강의를 수강하며 공부를 하고 있습니다. 개인적으로는 Dx12강의를 수강하거나 Dx11를 공부하여 엔진을 만들고, 이를 활용하여 포트폴리오를 제작하고 싶지만 올해 말까지 시간적으로 가능한 부분인지 잘 모르겠습니다(주말에는 몰아서 아르바이트를 하고 평일 시간을 모두 공부에 투자하는 중입니다). 차라리 언리얼 엔진을 공부하여 포트폴리오를 제작하는 방향으로 가는 것이 빠른 취업에 더 도움이 될까요? (너무 많이 들으신 말이지만 아직 언리얼 엔진 강의가 없는 것이 아쉬운 상황입니다 ㅜㅜ) 마음같아서는 그래픽스 관련 지식도 쌓고, 서버도 깊게 공부해서 클라에 붙이는 작업까지 하고 싶지만 취업이 너무 늦어질 것 같아 걱정이 됩니다.질문을 요약하자면* DirectX를 공부하여 그래픽스 공부, 자체 엔진 제작, 포트폴리오 제작 vs 언리얼 엔진을 공부하여 포트폴리오 제작- DirectX를 공부한다면 강사님의 Dx12강의를 수강하는 것이 좋을지, 따로 Dx11를 공부하는 것이 좋을지 고민이 됩니다. 원래는 다음달에 Dx12강의를 결제하려고 하였는데 강사님께서 Dx12강의를 아픈손가락이라고 하셔서 여쭤봅니다. 관련 서적 또한 추천해주시면 감사하겠습니다 ㅜㅜ (물방울 책?으로 유명한 'DirectX 11을 이용한 3D 게임 프로그래밍 입문'이라는 책이 있던데 현재는 절판되어 구매할 수가 없더라구요...)- 언리얼 엔진을 공부한다면 아직 강사님 강의가 없어 관련 서적을 구매하여 공부할 생각인데 추천하시는 책이 있을까요?가 될 것 같습니다.질문이 너무 길어진 것 같아 죄송할 따름입니다... 언젠가는 저도 강사님처럼 클라뿐만 아니라 서버, 그래픽스 등 여러 지식을 쌓아 좋은 게임을 만들고 싶습니다!감사합니다!
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
데드락 어떻게 해결할 지 궁금합니다.
안녕하세요. Rookiss 강사님.덕분에 강의 아주 감사히 잘 들어가며 배우고 있습니다.다름이 아니라, 강의 중, 데드락 프로파일러를 이용하여, lock 간 사이클 여부를 확인하여사전에 어느 정도 사전에 예방 가능하지만 그래도 다 막을 수는 없다고 하셨는데,막상 발견된다면 데드락을 해결하는 것은 어렵지 않다고 알려주셨습니다. 혹시, 데드락 프로파일러를 통해 발견되지 않을 경우,데드락이 발생했는지 어떻게 확인하고, 데드락이 발견되면 어떻게 해결하는 지 궁금합니다. 스스로 생각하기로는 스핀락의 경우, 데드락이 발생하게 되면 뺑뺑이를 계속 돌게 될테니CPU가 증가하는 모습으로 나타날 것으로 보이려나 싶네요 혹여나 강의 중에 설명 주셨는데, 재질문 드리는 거라면 정말 죄송합니다.항상 좋은 강의 감사합니다.
-
미해결홍정모의 따라하며 배우는 C언어
23:30 질문입니다
char heart[] = "I love Kelly!"; char* head = "I love Kelly!"; head = heart; //Ok heart = head; // Errorhead = heart; //Okheart = head; // Error선생님 전자는 되고, 후자는 안되는 이유가 뭐죠?생각보다 포인터와 배열의 차이를 알듯하면서도 계속 헷갈려서 스스로가 너무 답답해요ㅠㅠ
-
해결됨실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
영상보면 크롬에서 자동화 메세지 안나오는 옵션을 입력한 상태인데, 메세지가 나오고 있습니다.
자동화 메세지 안나오는 코드 입력후options.add_experimental_option('excludeSwitches', ['enable-automation'])크롬을 실행하면, 자동화 메세지지가 안나옵니다. 그러나1분 58초 입니다.크롬에서 오류 메세지 안보내는, 코드를 입력하면자동화 메세지가 출력됩니다options.add_experimental_option('excludeSwitches', ['enable-logging']) 즉자동화 메세지 안나오는 코드 입력상태 이고오류 메세지 안나오는 코드 입력상태 인데위 두가지 조건을 입력하면자동화 메세지가 안나오고 and 오류 메세지도 안나와야 하는데..오류 메세지는 나오지만, 자동화 메세지가 출력됩니다. 그래서 영상을 돌려보니, 선생님 강의 영상에서도 똑같은 증상이 나오고 있습니다!아래는 선생님강의 영상 캡쳐 입니다제 생각에는add_experimental_option은 아래에 있는 코드가 적용되는게 아닐까 추측되네요. 저도 초보이지만, 저보다 늦게 공부하시는 분을 위해 남겨 둡니다.저처럼 고민하시는 분들이 있으실수도 있으니까요
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
std::future에서 사용되는 쓰레드의 개수
std::future에서 비동기적으로 함수를 처리하기 위해서 사용하는 쓰레드는 미리 생성된 쓰레드를 통해서 처리하는 건가요?만약, 미리 생성된 쓰레드를 통해서 처리한다면 미리 생성된 쓰레드의 개수는 알 수 있나요? 그리고 해당 쓰레드의 개수도 수정할 수 있을까요?답변 부탁드립니다. 감사합니다.
-
미해결데이터 분석 SQL Fundamentals
where절 서브쿼리 관련 질문
안녕하세요, 선생님 항상 친절하고 자세한 답변 감사드립니다.강의 자료 중 select *from hr.emp_salary_hist awhere todate = (select max(todate) from hr.emp_salary_hist x where a.empno = x.empno);여기서 where a.empno = x.empno 이 부분은 왜 필요한건가요? select * from hr.emp_salary_histwhere todate = (select max(todate) from hr.emp_salary_hist ) ; 이것도 결과는 같기도 하고 같은 데이터에서 값을 찾는거라 굳이 where a.empno = x.empno 이 왜 필요한지 잘 모르겠습니다. 감사합니다.
-
미해결만들면서 배우는 프론트엔드 DO IT 코딩 (Next.js, Typescript)
firebase auth 인증 질문
fireBase인증 과정에 대하여 질문있습니다. 제가 이해한 것이 맞는지 확인해주시면 감사하겠습니다.질문 1.(1) try { const signInResult = await signInWithPopup(FirebaseAuthClient.getInstance().Auth, provider); if (signInResult.user) { const idToken = await signInResult.user.getIdToken(); const { uid, displayName, photoURL, email } = signInResult.user; // uid // photoURL // displayName const resp = await memberAddForClient({ data: { uid, displayName: displayName || undefined, email: email!, screenName: email!.split('@')[0], photoURL: photoURL || undefined, provider: 'google', }, token: idToken, }); }signInWithPopup메서드를 통해 구글 로그인 후 로그인 한 유저 정보(signInResult)를 가져옵니다.(2) const idToken = await signInResult.user.getIdToken();여기서 accesstoken과 다른 유저정보 email,uid등등을 가져와서 filestore에 저장합니다(3)export default async function verifyFirebaseIdToken(token: string) { try { const id = await FirebaseAdmin.getInstance().Auth.verifyIdToken(token); return id.uid; }그후 사용자가 어떤 api요청을 보낼 때 verifyFirebaseIdToken 함수에에 있는 verifyIdToken메서드를 통해 아까 받은 accesstoken을 보내 토큰이 유효한지 검사합니다. accessotken이 유효하면 id를 주어 api에 함께 보내 api 요청을 성공시킵니다.이 과정이 맞나요?질문 2. const id = await FirebaseAdmin.getInstance().Auth.verifyIdToken(token);verifyFirebaseIdToken에서 유효성 검사를 할 때 token이 로그인할 때 받은 accesstoken과 동일한 token인가요?질문 3.firestore에 accesstoken은 저장되어 있지 않던데 어디에 저장되어 있는 건가요?질문 4.코드에 accesstoken으로 인증하고 유효성 검사하는 것이 있는데요 따로 refreshToken은 없는데 firebase auth는 refreshtoken 시나리오는 잘 안하나요?질문 5.코드에는 브라우저에 쿠키나 로컬스토리지를 사용하지 않음에도 브라우저를 껐다가 다시 켜도 로그아웃 되어있지 않고 로그인이 되어있는데 어떻게 가능한 것인가요?질문 6.지금 이 로그인이 흔히 말하는 oauth맞나요?
-
미해결[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)
안드로이드 스튜디오 버젼 바꾼 뒤 오류가 계속 생깁니다.
Can't determine type for tag '<macro name="m3_comp_assist_chip_container_shape">?attr/shapeAppearanceCornerSmall</macro>'기존에 뱀장어 그림 Android studio 사용하다가 영상 속 안내 버젼인 Fox버젼으로 바꾼 뒤 위 오류가 발생합니다.구글링을 통해 build.gradle(Module)에서 implementation 'com.google.android.material:material:1.8.0'위 코드를implementation 'com.google.android.material:material:1.6.0'이렇게 수정한 뒤에는 Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.8.0, expected version is 1.6.0.이런 오류가 발생합니다.두 오류 전부 빌드는 진행 되고 그 후에 오류가 발생하는데아무리 찾아봐도 해당 오류에 대한 해결 방법을 찾을 수가 없어서 문의드립니다
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
쓰기지연, 변경감지 매커니즘의 동작과정에 대해서 질문드립니다.
그림상에서 flush가 두번 찍혀있어서 매커니즘의 구동 순서가 조금 햇갈려서 그런데1번의 flush와 4번의 flush의 의미가 조금 다른건가요? 아니, flush가 두번 동작하는건가요?우선은 선생님께서 트랜잭션 커밋 요청 시 내부적으로 flush가 발생한다고 하셨습니다.flush의 동작과정이 1차 캐시의 최초 스냅샷과 수정된 Entity의 값을 비교하고 변경내용 있을 경우 저장소에 UPDATE쿼리 저장하고 쿼리를 실행하는것까지가 맞을까요?그렇다면 쓰기지연의 경우에도 동일한 매커니즘처럼 보이는데 해당 그림에서는 flush가 빠져있어서 조금 햇갈리네요..쓰기지연의 경우는 persist 동작과정중에 따로 flush를 하지 않고 1차캐시에 저장됨과 동시에 쓰기지연 저장소에도 저장된다고 설명해주셨고, 이후에 트랜잭션 커밋 요청시 내부적으로 flush가 발생하면서 쿼리가 실질적으로 실행된다는 순서로 이해했습니다.강의 내용상으로 요약해보면 [쓰기지연] persist호출 후 flush 호출persist에서 INSERT 쿼리 저장flush에서 저장된 쿼리 실행[변경감지] flush가 두번 작동첫번째 flush에서 변경감지후 UPDATE 쿼리 저장두번째 flush에서 저장된 쿼리 실행이렇게 차이가 나는걸로 이해를 했습니다.두 매커니즘이 위와 같이 약간의 차이가 있는게 맞을까요?그리고 추가적으로 엔티티 삭제 remove시에는 직전 내용인 변경감지와 동일한 매커니즘이라고 설명해주셨는데아무리 생각해도 delete의 경우에는 변경감지의 매커니즘보다는 쓰기지연의 매커니즘과 같다고 생각이 들어서 질문드립니다!질문드리기가 조금 까다로운내용이라 저의 궁금포인트가 이해가 되셨는지 모르겠네요...영속성 관리 파트의 모든 강의를 들어야 명확하게 이해가 가능한건지제가 너무 까다롭게 이해하려고 하는 건지 그래도 순서를 조금 철저히 명확하게 알아야 정확하게 JPA를 사용할수 있지 않을까 싶어 질문드리오니 너그러운 마음으로 답변 부탁드리겠습니다.
-
해결됨토비의 스프링 부트 - 이해와 원리
@TestPropertySource 사용에 대해서 궁금하게 있습니다.
강사님께서 application.properties는 스프링 프레임워크의 기본 동작 방식이 아니다스프링 부트 초기화 과정에서 추가 해주는 거라고 말씀해주셨는습니다. @ContextConfiguration는 통합 테스트를 위해서 ApplicationContext를 로드하고, 구성요소 클래스를 넘겨주면 빈을 등록해주는거 같더라구요 SpringApplication.run을 할경우에는Environment 구현체는 ApplicationServletEnvironment가 빈으로 등록이 되고,@ContextConfiguration로 테스트를 할경우에는Environment 구현체는 StandardEnvironment 구현체가 빈으로 등록되는걸 확인했습니다.그래서 Enviroment 구현체가 등록이 되면application.properties를 가져올수있지 않나? 라는 생각에 해당 구현체를 찾아보니StandardEnvironment 는 propertySource를 받지 않는걸 확인했습니다. 제가 궁금한건1.같은 구성 정보 클래스를 넘겨주고 빈으로 등록을 했는데 구현체가 달라지는지 궁금합니다.2.스프링부트에서 테스트를 하는데@TestPropertySource를 따로 명시적으로 메타어노테이션으로 선언해서 사용하는 이유가 궁금합니다.
-
해결됨Vue.js - Django 연동 웹 프로그래밍 (실전편)
추가영상 Index.html 자세히 알아보기 강의에서
강의에서 나와있는데로 <v-navigation-drawer> 옆에 clipped를 추가하고 <v-app-bar> 옆에 clipped-left를 추가했습니다.그렇게 해도 강의와는 다르게 페이지의 네비게이션 바가 페이지 위 Application 바 밑으로 들어가지 않습니다. 어떤게 문제인지 알려주시면 감사하겠습니다
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
스프링 MVC 어댑터의 활용
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]스프링 MVC에 대해서 공부하다가 문득 궁금한 것이 생겼습니다. 스프링 MVC의 구조 중에 어댑터 패턴을 이용해 다양한 컨트롤러를 호환해서 핸들러를 반환한다고 했는데, 솔직하게 어떤 기능은 하는지 알겠으나 감이 잘 오지 않습니다.실무에서 어댑터를 어떻게 활용하는지에 대해서 궁금증이 생겼습니다. 사실 이미 버전이 다른 컨트롤러를 어댑터를 통해서 핸들러를 찾아서 호출하는 것을 예제로 공부해 보았지만, 저에게는 조금 보충이 필요하다는 생각이 들어서 한번 질문 남겨봅니다.
-
해결됨CAN 통신 - 자동차 신입이 알아야 할 모든 것
CAN 우선순위
Q1. 여러 제어기가 있을 때, 우선 순위가 (0 1 1 1) 말고 (0 0 1 1) 이런 경우도 있나요? Q2. 버스에는 하나의 제어기 정보만 담기고 그게 빠르게 회전한다고 이해하면 되나요? 다시 말하면 버스에는 짧은 순간에 제어기 1데이터를 브로드캐스트하고 다음 짧은 순간에 제어기 2 데이터를 브로드캐스트 ... 이런 식 강의 꼭 완강하겠습니다~감사합니다.