[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? ( 예 /아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? ( 예 /아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? ( 예 /아니오) [질문 내용] MemberServiceTest에서는 MemoryMemberRepository형으로 변수를 할당하여 MemoryMemberRepository memberRepository; @BeforeEach public void beforeEach() { memberRepository = new MemoryMemberRepository(); memberService = new MemberService(memberRepository); } MemberService에 주입하고 있고 MemberService에는 MemberRepository형으로 변수가 선언되어 있습니다. private final MemberRepository memberRepository; public MemberService(MemberRepository memberRepository) { this.memberRepository = memberRepository; } 이 둘이 통일되지 않고 다른 이유가 있을까요? MemberService에서 private final MemoryMemberRepository memberRepository; public MemberService(MemoryMemberRepository memberRepository) { this.memberRepository = memberRepository; } 이렇게 변경하여도 오류가 나지 않는데 위의 2번째 사진처럼 구현하신 이유가 따로 있는 것인지 궁금합니다.
안녕하세요 ! 강의 중 [필독] 모바일 웹 퍼블리싱 - 퍼블리싱 레이아웃 세팅 하기 7:07 에 있는 핸드폰으로 테스트 하는건 다운로드를 따로 해야되나요 ? 어떻게 하면 볼 수 있나요? f12 키 눌러서 -" 기기 툴바 전환" 누르면 디바이스에 맞게 나오는 것은 알고 있습니다. 근데 휴대폰 까지는 안나오는데 혹시 어떻게 하신건가요 ?
강의에선 body{ margin: 0; font-size: 15px; background-color: #fff; color: #222328; } a{ color: #222328; text-decoration: none; } 로 입력하라고 하셨는데 body color, a color 따로 시험지에 지정 되지 않고 이렇게 입력하면 됩니까?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 이 부분에서 끝부분에 useState({}) 와 useState([]) 차이가 어떻게 되는지 정확히 알 수 있을까요? 둘다 movie의 정보를 가져오는 배열인줄 알았는데 달라서요.. onClick에서 ArrowFunction을 사용하는데 그냥 onclick={handleClick(movie)} 하면 안될까요? 위 사진처럼 arrow Function을 사용하지도 handleChange() 처럼 빈괄호를 넣지도않을 때가 있는데 어떤 경우에서 어떤 형식을 써야하는 건가요?? 제가 자바스크립트를 제대로 못배워서..죄송합니다..ㅠㅠ 3.세미콜론을 붙이건 안붙이건 오류가 안보여서 잘 작동이 되는건지 세미콜론을 무조건 붙이는게 맞다고 생각했는데 가끔 자동완성기능을 사용하면 리액트 자체에서 세미콜론을 안붙이더라구요.. 그래서 리액트는 세미콜론이 상관없는건지 잘 모르겠어요..ㅠㅠ 이 강의에서 자동완성 [ rfce ]로 한 이유와 index.js파일에 function이름을 MovieModal로 한 이유가 있을까요?? 뒤에 강의에서도 설명하실 수도 있지만 혹시 알려주실 수 있으면 감사드립니다!
강의 내용과 살짝 벗어난 질문일 수 있는데 궁금하여 문의 드립니다. 마이크로 서비스가 모놀리식에 비해서 여러면에서 자원을 효율적으로 사용 가능 한 것으로 알고 있습니다. 하지만 실제 운영 하다보면 JVM 힙 설정에서 오히려 모놀리식보다 과하게 메모리가 사용 될 수 밖에 없는 상황이 있을 수 있을 거 같아 좀 더 효율적으로 관리 할 수 있는 방안이 있는지 문의 드립니다. 예를 들어 모놀리식에서는 heap 최대최소 4G의 (G1 GC 정책) 으로 큰 문제 없이 운용하다가 (CPU 및 기타 자원의 사용량은 충분다하고 할 경우) 마이크로서비스 20개로 변경 을 하여 각 1개의 서비스(도커내 WAS)에 개당 1G (Palllel GC)로 적용 할 경우 총 20G의 힙메모리가 필요 하여 메모리로 인한 자원이 부족해 질수 있을텐데요. (그렇다고 1G 이하로 설정하면 너무 비정상적으로 Full Gc가 발생하여 설정이 힘들다면) 이러한 상황인 경우 서비스가 지속적으로 늘어나는 상황에서는 오히려 많은 메모리 확장 혹은 추가의 서버(EC2) 증설이 필요한 상황 이 발생할 텐데 힙메모리 관리 측면에서 모놀리식보다 효율적인 관리할 수 있는 방안이 있을까요?
안녕하세요. 수강자입니다. 첫번째 의존성 주입 화살표가 이해가 되지 않아서 질문합니다. 의존성 주입전 그림은 메인모듈이 하위모듈에 의존하고 있다고 생각합니다. 즉 화살표 방향이 의존 방향이라고 생각합니다. 그런데 의존성 주입후 화살표 방향이 의존성 주입자가 왜 메인모듈에 의존하고 있는 것인지 잘모르겠습니다. 제가 생각하고 있는 것이 틀린걸까요? ㅠㅠ
혹시나 에러가 나신다면, package.json폴더에 "scripts": { "start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test --transformIgnorePatterns \"node_modules/(?!axios)/\"", "eject": "react-scripts eject" }, 로 변경 후 test를 종료 후 재 실행시키면 됩니다. 방법은 test에서 직접 스크립트 수정하거나 jest.config.js파일을 만들어 moduleNameMapper을 사용하시면 됩니다! 참고 https://stackoverflow.com/questions/73958968/cannot-use-import-statement-outside-a-module-with-axios https://jestjs.io/docs/configuration#modulenamemapper-objectstring-string--arraystring
큰돌님 혼자서 교안을 공부하다가 몇 번을 읽어보아도 이해가 잘 되지 않아 질문드립니다. #include<bits/stdc++.h> using namespace std; int n, m, a[10][10]; string s; int main(){ cin >> n >> m; for(int i = 0; i < n; i++){ cin >> s; for(int j = 0; j < m; j++){ a[i][j] = s[j] - '0'; } for(int i = 0; i < n; i++){ for(int j = 0; j < m; j++){ cout << a[i][j]; } cout << '\n'; } }0 위 코드에서 4 4 1000 0000 0111 0000 값이 들어간다고 할 때 n , m, s 에는 각각 어떤 값이 들어가는건가요? 그리고 s[j] - '0'이 의미하는 것이 무엇인가요?
선생님 섹션 8의 9번 동전교환 문제를 복습하면서 풀어보니 손에 익어서 이젠 풀 수 있게 되었습니다. 여기서 문제를 변형시켜서 가장 적은 동전갯수를 반환하는게 아닌, 가장 작은 동전 갯수를 가진 동전 종류의 배열 (해당 문제의 경우 [5,5,5])를 반환하도록 문제를 풀고있는 중인데요. 간단할 거 같았는데 의외로 잘 안풀리네요 ㅠㅠ 출력해보면서 이리저리 해보는데 접근 방법과 풀이를 알려주실 수 있을지 여쭙습니다. 아래는 여태 작성한 제 코드입니다. let answer = Number.MAX_SAFE_INTEGER let len = arr.length let tmp = [] function DFS(L , sum){ if (sum > m) return if (L > answer) return if (sum === m) { answer = Math.min(answer, L) console.log(answer) console.log(tmp) tmp = [] } else { for (let i=0; i<len; i++){ DFS(L+1 , sum+arr[i]) if (!tmp.length || tmp.reduce((a,b)=>a+b) <= m) tmp.push(arr[i]) } } } DFS(0, 0) return answer } let arr=[1, 2, 5]; console.log(solution(15, arr));
안녕하세요. 강의를 통해 알고리즘을 재미나게 공부 중입니다. 감사합니다. 알고리즘을 풀다보면 맞는데 왜 틀리지.. 싶은 속칭 '맞왜틀'들이 있습니다. 이런 경우 오랜 시간 문제를 두고 고민하고, 강의와 강의에서 전개하는 논리, 제 코드의 논리를 비교하며 해결하고 있었습니다. 하지만 최근 혼자 오랜 시간 고민하고 강의와 강의의 논리를 보며 비교해봐도 '맞는데 왜 틀리지'하는 경우가 여러 번 발생하여 '맞왜틀'의 경우 어떠한 식으로 문제를 해결해나가면 좋은지 조언을 구하고자 질문을 올리게 되었습니다. 제가 맞왜틀이라고 고민하게 되는 경우는 공통적으로 전체 논리는 강의와 유사하지만, 그 전개 순서 및 코드 진행의 순서가 다른 경우였습니다. 5주차 개념강의를 설명하시면서 '최초 아이디어가 틀리면 우디르급 다른 방식 접근해보자'라고 하셨지만 큰 틀에서 논리가 동일한 경우 논리 자체가 틀린게 아닌 이상 발상의 전환을 할 생각조차 안 나게되더라구요. 같은 맥락에서 강의의 논리와 코드를 봐도 '맞왜틀'이라는 생각과 함께 실전에서의 자신감?마저 떨어지게 됩니다.. 반례 찾는 법을 몇 번 안내해주시긴 했지만 반례를 찾는 다른 팁이나 맞왜틀을 극복하는 팁? 같은게 있다면 조언해주시면 감사하겠습니다 ㅠㅠ. 감사합니다! ps 아래는 맞왜틀로 오래 고민했던 대표적인 문제 5-H와 5-J 중 5-J의 코드입니다. (참고용으로 업로드하며 번거로우시다면 제 코드의 어떤 부분이 틀렸다 확인해주지 않으셔도 됩니다!) 강의코드 제 코드 입니다. 아래는 강의코드와 제 코드를 비교하며 사용된 코드의 논리를 정리한 것입니다. <강의코드> <제 코드>
김영한님께서 처음에 TCP/IP는 기본적으로 연결을 유지한다고 하셨습니다. 그런데 HTTP는 기본적으로 연결을 유지하지 않는다고 하셨는데, HTTP는 기저에 tcp/ip프로토콜을 깔고 그 위에 http통신을 하는 것으로 알고 있거든요...? tcp/ip프로토콜 위에 http프로토콜까지 얹게 되면 기존에 연결을 유지하는 성질이 연결을 유지하지 않는 conectionless한 특징으로 바뀌는건가요?
(f) Second Derivative Test for Local Extrema(part2)에서 헤시안 행렬의 고유값으로 헤시안의 Definiteness를 판별하는 방법이 이해가 안 됩니다ㅠㅠ 선형대수학 개론을 잠시 보고 왔는데요, Q(x) = x^TAx = y^TDy=lambda1*y1^2 + ... +lambdan*yn^2 이 식에서 Q(x)가 0보다 크면, y1^2, ... , yn^2이 모두 양수이기 때문에 lambda1~n(고유값)이 모두 양수라고 하는데... 헤시안의 고유값 중 하나가 음수여도 나머지가 다 양수이면 Q(x)는 양수가 나올 수도 있는 거 아닌가요??ㅠㅠ 왜 두 명제가 동치인지 이해가 잘 안 됩니다ㅠㅠㅠㅠ
threshold = 0.1 learning_rate = 0.1 iteration_num = 0 # loss를 이용해서 gradient descent update # loss 가 threshold 밑으로 내려가면 loop 중지 while loss > threshold: iteration_num += 1 # 갱신된 미분값을 이용해서 W와 b 업데이트 W = W - learning_rate * W.grad b = b - learning_rate * b.grad print (iteration_num, loss, z, y) # detach_() : 텐서를 기존 방향성 비순환 그래프(DAG; Directed Acyclic Graph)로부터 끊음 # .requires_grad_(True) : 연결된 Tensor 로부터의 계산된 자동미분 값을, 다시 현 텐서부터 시작하도록 만듬 # 기존 그래프에서 끊어낸 후 기억한 자동 미분값을 이용해서 현 텐서부터 갱신할 수 있게 함 # 미분을 계산한 이후 DAG로 부터 왜 detach를 한 후 requires_grad를 다시 해야하는지..? 정확히 이해가 잘 안감 W.detach_().requires_grad_(True) b.detach_().requires_grad_(True) # 갱신된 미분값을 이용해서 예측값과 loss 값 갱신 => 갱신된 loss를 이용해서 미분값 다시 계산 z = torch.matmul(x, W) + b loss = F.mse_loss(z, y) loss.backward() print (iteration_num + 1, loss, z, y) detach 메소드가 깊은 복사 시 신경망으로부터 텐서를 분리하는 것은 이해가 갑니다..! W.detach_().requires_grad_(True) b.detach_().requires_grad_(True) 미분을 계산한 이후 DAG로 부터 왜 detach를 한 후 requires_grad를 다시 해야하는지..? 처음에 require_grad가 되어 있으니 매번 미분 값 계산할 때마다 grad가 갱신되기 때문에 굳이 detach로 분리를 해야하는지 해당 부분이 이해가 잘 안갑니다. -> 강사님의 다음 강의를 듣고 이해했는데 제가 이해한 것이 맞는지 확인받고 싶습니다 매 iteration마다 loss에 대한 각각 은닉층 노드들에 대한 가중치를 계산해주는데 detach를 안하면 전의 기울기 계산한 기록에 새로운 iteration 계산분이 누적된다. 즉 미분 식이 누적되서 해당 iteration 값이 아닌 과거 iteration 미분식까지 가져와서 다른 미분값이 산출되어버림 매 iteration마다 기울기 계산 값이 누적되지 않도록 detach를 통해 끊어내 주는 것