1. thunk를 사용하면 함수형 action을 dispatch 했을때action을 단순히 실행하는 것으로 보이는데요. 그렇다면 아래 두 코드처럼 함수형 action을 dispatch하는 방식과 함수로 감싸지 않고 하는 방식과 결과는 같다고 생각되는데 맞나요? const loginAction = () => { return (dispatch) => { dispatch(loginRequestAction()); axios.post('/api/login') .then((res) => { dispatch(loginSuccessAction(res.data)); }) .catch((err) => { dispatch(loginFailureAction(err)); }) } } const onClickLogin = () => { dispatch(loginAction()); } const onClickLogin = () => { dispatch(loginRequestAction()); axios.post('/api/login') .then((res) => { dispatch(loginSuccessAction(res.data)); }) .catch((err) => { dispatch(loginFailureAction(err)); }) } 2. 1이 맞다면 함수 action을 dispatch하는 방식은 편의성 때문이라고 봐도 될까요? 3. 강의 10:40 쯤에 thunk는 한번에 dispatch를 여러번 할 수 있게 해준다고 하셨는데 thunk없이 아래처럼 여러번 쓰는 것은 문제가 될 수 있나요? // action은 임의로 지었습니다 const onClickButton = () => { dispatch({type: 'CHANGE_ID'}); dispatch({type: 'CHANGE_PASSWORD'}); }
큰돌님 안녕하세요! gcc 설치 후 vscode에 설정하는 중 일부 에러가 발생하여 질문 드립니다. 현재 homebrew를 통해 gcc 설치 후 해당경로로 헤더파일을 만들어놓은 상태입니다. 그 후, vscode a.cpp 파일의 터미널에 g++ -std=c++14 -Wall a.cpp -o test.out 를 입력하였을 때, 에러가 발생합니다. 어떻게 수정해야할까요...
[무료 MS RPA를 활용한 업무 자동화] Power Automate Desktop Basic
선생님, 안녕하세요. 갑자기 사진먼저 올라가게 되었네요 ^^;; 제가 일단 새브라우저를 열고 -> 새탭 만들고 -> 웹페이지 버튼 누르기 1 -> 웹페이지 버튼 누르기 2를 설곟고 싶어서, 위와 같이 진행을 했습니다. 웹페이지버튼 누르기 1,2의 ui요소는 문제 없이 잘 선택했는데요, 왜 자꾸 아래와 같은 오류가 생기면서 웹페이지 버튼 누르기에서 런타임 오류로 실패하는걸까요? 로직에 무슨 문제가 있나요?
안녕하세요. 저는 비전공자인데요. 혼자 컴퓨터구조 / 운영체제론 / 네트워크 공부는 한 상태인데.. 클라우드랑 도커, 리눅스 이렇게 3가지를 배우고싶은 마음이 있는데 어떤거 부터 시작해야 하는지, 연관이 있는건지 모르는 초보에요. 세세하게 공부할 생각은없고, 그냥 맛보기도 아닌? 적당히 공부를 해보고 싶은데 뭐 부터 해야하나요? 즉 리눅스를 알아야 도커를 배울 수 있는거같긴한데, 리눅스의 명령어가 도커를 배우는데 의미가 없는건가요? 리눅스 운영체제가 어떻게 되어있는지를 공부해야하는건지.. 또 클라우드는 그냥 사전지식없이 배울 수 있긴한거 같으면서도? 뭔가 어따쓰지? 이런 느낌이라서, 클라우드는 그냥 사전지식보다는 실무 경험을 쌓고, 비용절감을 위해 필요한 존재구나~ 라고 꺠달아야 하는건지, 아니면 클라우드를 어떤식으로 제대로 공부해야하는지 궁금합니다. ㅠㅠ
안녕하세요 강사님, 제 github에서 learn-TS라는 레퍼지토리를 따로 생성한 뒤 해당 폴더에 git clone을 해서 형상관리를 하고싶은데 warning: adding embedded git repository: learn-typescript hint: You've added another git repository inside your current repository. hint: Clones of the outer repository will not contain the contents of hint: the embedded repository and will not know how to obtain it. hint: If you meant to add a submodule, use: hint: hint: git submodule add <url> learn-typescript hint: hint: If you added this path by mistake, you can remove it from the hint: index with: hint: hint: git rm --cached learn-typescript hint: hint: See "git help submodule" for more information. 라는 에러가 뜨면서 git에 업로드를 하지 못하고 있습니다. 혹시 해결방법을 알고 계시다면 답변 부탁드립니다.
WebMvcTest 를 위해 하나의 추상 클래스를 만들고 거기에 필요한 컨트롤러와 모킹한 서비스, 레포지토리들을 추가하셨는데요. 통합 테스트의 관점에서 보면 테스트 컨텍스트가 한번만 뜨기 때문에 좋겠지만 컨트롤러 하나에 대한 단위 테스트를 고려할땐 불필요하게 모킹한 서비스, 레포지토리, 컨트롤러들까지 띄우는데 시간이 더 걸리는데 이건 어떻게 해결 할순 없을까요? 강의 해서 제안 하신 것처럼 현업에서 쓰고 있긴 한데 컨트롤러가 100개가 넘어가니... 하나의 컨트롤러 테스트를 위해 테스트 컨텍스트를 띄우는데 걸리는 시간도 상당히 오래 걸리더라구요. 혹시 좋은 방법이 있다면 알려주시면 감사하겠습니다.
강의를 보고 생각한 구조가 맞는지 궁금합니다. 데이터베이스를 연결하기 위해 추상화한 인터페이스 Connection, Statement, ResultSet가 있고 이 3가지는 데이터베이스 드라이버에서 구현을 하고 있습니다. 그리고 DriverManager가 드라이버를 사용해 커넥션을 얻어옵니다. 하지만 이렇게 매번 커넥션을 얻어오면 비용이 많으들어가서 커넥션풀이 생겨납니다. 그래서 커넥션 풀이 생겨났고 DataSource인터페이스가 생겨났고 각 커넥션풀은 이것을 구현합니다. 그러면 DataSource에서는 DriverManager를 이용해 커넥션을 얻어오는것이고 Connection, Statement, ResultSet는 데이터베이스 구현체 드라이버에서 구현하는게 맞을까요?
안녕하세요 널널한 개발자님! 강의 정말 잘 듣고 있습니다. 해당 강의의 컴퓨터가 곱셈을 하는 법에서 궁금한 점이 있어서 질문 남기게 되었습니다. 8*2로 예를 들자면, 십진수 8을 이진수로 표현하면 1000인데, 여기서 왼쪽으로 한칸 밀면 10000에서 오버플로우 된 부분은 버리면 0000이라 십진수로 표현하면 16이 아닌 0이 되잖습니까? '오버플로우는 버린다'의 기준이 어떻게 되는지, 곱셈에서도 오버플로우는 버리는 게 맞는 건지가 헷갈립니다..! - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
답변 감사드립니다! 강의를 통해 Head 수에 따라 다양한 영역에 대한 Attention 이 가능하다고 이해했습니다. 이에 따른 추가적인 궁금한 부분이 있습니다. (아래 질문은 배치 사이즈를 배제하고 질문드립니다.) U msa 를 통한 Linear Projection 이전의 shape는 (N x D h x k) 이고, 이후의 shape는 (N x D)로 k가 사라져서 다양한 영역을 Attention 하고자 하는 의도가 사라지는 것 아닌지, 그렇다면 U msa 의 역할이 무엇인지 헷갈렸습니다. U msa 를 통한 Linear Projection을 진행한 후에도 다양한 영역을 Attention하고자 하는 Head의 특성이 반영되기에 상관이 없는건지 궁금합니다. U msa 도 무작위로 주어지고 학습을 통해 최적화되는 것이 맞을까요?
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
[ ...TABS, ...TSBS, ...TSBS].map(~) 여기에서 ...TABS의 의미가 무엇인지 궁금합니다! 그냥 TABS로 적으면 e가 List type의 TABS를 불러와서 e.icon에 오류가 발생하는데, ...TABS로 적으면 map이 실제로 TABS안에 있는 리스트 요소를 e로 가져오는거같은데 ...의 의미가 궁금합니다!