학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] <script th :inline ="javascript" > 1번) var username = [[${user.username}]]; // 자바스크립트 내추럴 템플릿 2번) var username2 = /*[[${user.username}]]*/ "test username"; </script> 위 내용에서 내추럴 템플릿을 쓰는 이유가 궁금합니다. 1번)처럼 그냥 넣어줘도 userA가 나올텐데, 굳이 /* */ 이렇게 사용하고, 뒤에 "test username" 이라는 값을 넣어야 하는 이유가 따로 있는지 궁금 합니다. 어차피 인라인 자바스크립트이고 결과값이 같은 값이 나올텐데.. 2번처럼 사용하는 때가 따로 있는지 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 여기에 질문 내용을 남겨주세요. even, odd 홀수 짝수 여부가 boolean으로 true, false로 정리가 되는것 같습니다. 여기서 말하는 홀수 짝수가 index 부분을 보고 정의를 내리는 것인가요? 아니라면 count인지 궁금합니다. 감사합니다
풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, 배포까지) [풀스택 Part3]
현재 기준 Releases · docker/compose · GitHub 최신버전 v2.1.1인데요, 그냥 다운로드 명령어 중간에 버전을 v를 빼고 2.1.1로 하면 다운이 안되더라구요. v도 포함해서 docker-compose 다운로드 받았더니 저의 경우는 해결됐습니다! ex)sudo curl -L "https://github.com/docker/compose/releases/download/v2.1.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
안녕하세요. 도메인 주도 모델을 공부하면서 강의를 복습하고 있습니다. 비즈니스 로직이 Entity 객체에 들어가는 이유 등은 조금씩 이해가 가고 있는 중입니다. 그런데 제가 경험이 없다보니 이론서와 예제를 비교하다 보니까 다른 점이 몇 가지 있어서 실제로는 반드시 이론대로 사용하는 것은 아닌가? 라는 생각도 들고 학습을 위해서 간단히 만드신 건가 잘 모르겠어서 질문드려봅니다. 도메인 주도 설계 아키텍쳐를 보면 1 프레젠테이션 계층 2 애플리케이션 계층 3 도메인 계층 4 인프라스트럭처 계층 이렇게 나누어진다고 하는데요. 여기서 1 프레젠테이션 계층이 MVC이고 영상에서 나오는 controller domain service는 3 도메인 계층으로 보입니다. 그런데 2 애플리케이션 계층은 보이지 않고 애플리케이션 계층이 와야 할 자리에 도메인 계층이 있는 것처럼 보입니다. 예를 들면 도메인 객체인 Entity나 Repository가 Controller에서 사용되고 있습니다. 이론서를 보면 컨트롤러에서는 도메인 계층의 구현을 알지 않는 것이 좋으며, 모든 도메인 계층에 대한 호출은 어플리케이션 계층 안에서(ex entityApplicationService Class 안에서) 이루어지는게 좋다고 하더라고요. 실무에서도 예제처럼 어플리케이션 계층을 생략하고 할 때가 많나요? 아니면 강의에서는 학습용으로 생략이 된 것인지 제가 무언가 간과하고 있는 부분이 있는지 궁금해서 이렇게 질문드리게 되었습니다.
처음 이동에 관한 조건문을 PlayerController Class의 Update()문에 작성하여 매 프레임마다 확인하였는데 이벤트를 사용하여 Managers에서 관리하는 것 까지는 이해를 하였습니다. 그런데 이제 이 이벤트 호출 검사를 Start()에서 하게되는데 이럴 경우 실행시 한번만 체크를 한다고 하셨는데 계속적으로 입력하는 값을 어떻게 검출하는 건가요? Managers의 Update()함수와 상관관계가 있을것 같은데 무슨 관계인지 이해가 가질않습니다. PlayerController의 Start()함수에 작성하여도 그 안에 호출하는 기능이 다른 클래스의 Update()함수에 있으면 매 프레임마다 검사하는 것인가요? 그럴경우에는 그냥 PlayerController의 Update() 함수에서 바로 검사하는 것과 성능상 차이가없을 것 같은데 이 부분이 이해가 가질않아서 문의드립니다.
N = int(input()) prime = [0, 0, 1] + [1] * (N - 2) for i in range(2, int(N ** 0.5) + 1): if prime[i]: prime[2 * i::i] = [0] * (N // i - 1) print(sum(prime)) 이런식으로 리스트 슬라이싱을 이용해서 한번에 처리해 주는 에라토스테네스의 체 구현 방법이 있었는데요. 이게 코드만 봐서 뭘 하려고 하는지 이해는 되는데 작동하는 이유가 리스트 슬라이싱을 해도 call by reference로 리스트 주소로 연결되어 있고 인덱스도 그대로 가져오기 때문이라고 이해하면 될까요??
유저 테이블(User)과 대회 테이블(Contest)이 through: 참가(Participate) 인 n:m 관계 through: 순위권(Win) 인 n:m관계 이렇게 2가지 관계를 가지고 있습니다. 대회에는 타입이 INTEGER인 참가포인트(pPoint), 순위권포인트(wPoint) 라는 칼럼이 있습니다. 이 칼럼들을 관계에 넣지않고 대회테이블에 부여한 것은 추후에 변경 될 수 있기 때문에 이렇게 설계했습니다. 이때 참가자들의 보유 포인트가 많은순으로 참가자 정보와 보유 포인트 합계 정보를 같이 받아오는 것이 목표입니다. 우선 각각의 합들을 받아오기 위해서 router . get ( '/' , async ( req , res , next ) => { try { const userList = await User . findAll ({ logging : true , include : [{ model : Contest , as : "Participated" , through : { model : Participate , attributes : [] }, attributes : [ 'pPoint' ], }, { model : Contest , as : "Won" , through : { model : Win , attributes : [] }, attributes : [ 'wPoint' ], }], attributes : [ 'name' , 'studentid' , [ fn ( 'sum' , col ( 'Participated.pPoint' )), 'totalppoint' ], [ fn ( 'sum' , col ( 'Won.wPoint' )), 'totalwpoint' ]], }); res . json ( userList ); } catch ( err ) { console . error ( err ); next ( err ); } });
안녕하세요 제로초님 항상 좋은 강의 감사드립니다 :) 유튜브로 강의를 수강하다가, 인프런/유튜브 댓글에 같은 질문이 없어 질문을 남깁니다. (사실 하나 있긴 했는데 이해가 잘 안되더군요 ㅜㅜ) 강의에서 아래와 같이 useEffect의 배열에 winBalls.length===0을 넣으면 첫번째 공과 두번째 공이 중복으로 나오고, timeouts.current로 넣으면 의도한대로 제대로 공이 중복되지 않게 나오는 것을 확인할 수 있었습니다. useEffect(()=>{ for(let i=0;i<6;i++){ timeouts.current[i]=setTimeout(()=>{ setWinBalls((prevState)=>[...prevState, winNumbers[i]]); }, (i+1)*1000); } timeouts.current[6]=setTimeout(()=>{ setBonus(winNumbers[6]); setRedo(true); }, 7000); return ()=>{ timeouts.current.forEach((v)=>{ clearTimeout(v); }) } },[winBalls.length===0]); class형에서는 winBalls.length===0으로 해도 문제없지만 hooks에서는 문제가 발생한 이유를 저는 componentDidMount와 componentDidUpdate 역할을 useEffect가 한번에 해주기 때문에 중복발생하는 것으로 이해했습니다. (useEffect에서 winBalls.length===0이라는 조건문에 mount,update할 때 각각 부합해서 중복발생하는 것으로 이해하였습니다.) 1. 그런데, timeouts.current을 배열에 넣을 때는 처음 mount될 때나 update될 때나 똑같이 빈 배열일텐데 왜 같은 공이 중복발생하지 않고 의도대로 제대로 작동하는지 궁금합니다. 2. winBalls.length===0과 같이 조건문을 useEffect 배열에 넣어도 되는건가요? 만약 가능하다면, winBalls.length===0을 배열에 넣을 경우, 위 중복 공 발생버그를 해결할 수 있는 방안도 있을까요? 항상 감사드립니다!