학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. http://localhost:8080/basic/hello-form.html 이라는 URL을 입력하면, 작성한 정적 파일(html 파일)이 나오게 되는데요, 즉 루트 디렉터리가 webapp에 mapping되어 해당 정적 파일이 나오게 되는 것 이라고 생각됩니다. 혹시 이부분에 관한 내용도 추후에 더 설명해 주시는건지, 아니면 그냥 루트 디렉터리가 webapp 디렉터리에 mapping되어 동작한다고 생각하면 되는 것인지 궁금합니다. 항상 좋은 강의 감사합니다.
설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 정말.. 최대한 찾아보려고 했는데 해당내용을 찾아보기 힘들어 질문을 드립니다. correct = $signed 에서 $가 의미하는 것이 어떤것인지 알수 있을까요..?? 그나마 찾아본 내용중 맞는거 같은건 함수? 를 casting 하는 명령어라는거 같은데.. 그게 맞는지 긴가민가 하여 질문드립니다.
안녕하세여 강사님 외래키에 대해서 궁금한점이 있습니다. 강의를 보던중 문득 기억난 것이 외래키를 사용안하는 이유에 관한 글들이 떠올랐는데요. 예를들어 강의내용중 위 테이블에서 MEMBER 테이블은 TEAM_ID의 외래키를 갖고있는데 이 제약조건을 이 외래키 제약조건을 빼고 사용을 한다. (join을 이용하면 된다)라는 글이 기억나서 질문드립니다. 외래키를 최대한 안쓰고 정말 꼭 필요할때 사용하는게 맞는건가요? 갑자기 머리에서 혼란이 가득하네여 ㅜ
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? ( 예 /아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? ( 예 /아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? ( 예 /아니오) [질문 내용] 강의내용에서 Map과 List를 만들고, 생성자 주입을 받았더니 자동으로 DiscountPolicy 구현객체(Fix, Rate)가 각각의 Map과 List로 Autowiring 되었는데, 이 동작이 Map<String,DiscountPolicy> policyMap = ac.getBeansOfType(DiscountPolicy.class); <- 이것과 같은 원리로 스프링 내부에서 동작했던건가요?
// store.js state: { storeNum: 10}, mutations: { modifyState(state, str, num){ console.log(str); return state.storeNum += num; } } this.$store.commit('modifyState', 'passed from payload', 20) ; 이렇게 commit 할 때 처음부터 modifyState 함수에 여러 개의 인자를 넘겨주는 건 안 되는건가요?
안녕하세요, 강사님! 강의를 보던 중에 로그인이 되지 않아서 질문 남깁니다. 터미널과 콘솔창에는 에러가 나지 않는데 데이터가 넘어가지 않아서 devtool에 아무 응답이 없어요... 원인을 정말 모르겠습니다.. 깃헙 주소 올려드립니다. 감사합니다. https://github.com/ha2ylee/Study
https://github.com/ZeroCho/sleact/blob/master/nest-typeorm/src/entities/ChannelChats.ts 제로초님 소스코드를 보면 channelChats 테이블에 mentions과 관련된 테이블이 없고 mentions테이블 칼럼으로는 그냥 chatId만 해줬는데 (@ManyToOne() 이런것없이) 어떻게 chanelchats과 mentions가 연결될수 있는지 궁금합니다.
여러분들도 포기하지말고 여기 파트 그냥 넘어가지 마시고 꼭 오류 나더라도 제로초님 강의따라서 코드따라 쳐보시고 커맨드라인으로 npx webpack 한 후에 html파일 꼭 크롬에 띄워서 확인 해보시길 바랍니다~! 저도 이걸 왜 해야 하나 처음엔 생각했지만 구동 원리를 조금은 엿볼수 있어서 좋았습니다. 꼭 꼭 해보세요~!
강의 잘보고 있습니다. 다름이아니라 지금 로그인접속정보 계속 유지하기 부분 보고있습니다 그런데 로그인 후 새로고침 후 page index.js 에서 useEffect 에 LOAD_MY_INFO_REQUEST -> 리덕스, saga 로넘어갈때 action.data : null 입니다. 그런데 브라우저 애플리케이션 단에서 쿠키는 확인 되었습니다. 쿠키가 있는 상태면 passport 로직에 의해서 두번쨰 로그인부터는 req.user에 첫 로그인시 select 했던 로그인정보가 새로고침후에 action .data에 담겨야하는거죠? 근데 안담기네용.... 어디를 봐야할까용... const passport = require ( 'passport' ) ; const local = require ( './local' ) ; const { User } = require ( '../models' ) ; module . exports = () => { passport . serializeUser ((user , done) => { //done 에 첫번째인자는 error 두번째 인자는 성공 //req.login 에 정보가 여기로들어감 done( null , user . id ) ; // 세션 저장 즉 서버에서 세션 connectSID 랑 쿠키와 함께 저장 [{id: 1, cookie : 'clhxy'}] // 그리고 쿠키에게 뿌려줌 }) ; // 로그인을 성공하고나서 그 다음 요청부터 매번실행함 // 이 부분이 라우터 실행되기 전에 매번 실행된다 . 그렇다면 성능적으론 상관없을지 몰라도 // 유지보수 측면에서 이로직을 통한 분산이 가능하다 . // 라우터 접근 전에 deserializeUser 내부적으로 한 번더 실행함 저장되어있던 아이디를 토대로 select 해서 가지고온다 . req.user 로 routes 에서 접근이 가능하다 . passport . deserializeUser ( async (id , done) => { try { const user = await User . findOne ({ where : {id} }) ; // 그래서 id 값을 where 절에 넣고 반환값 user 를 done( null , user ) ; //done(user) 넣어주고 이 값이 req.user 에 반환된다 . } catch (e) { console . error (e) ; done(e) ; } }) ; local () ; } ; const passport = require ( 'passport' ) ; const { Strategy : LocalStrategy } = require ( 'passport-local' ) ; // 비구조화 할당에서 : 를 하면 LocalStrategy 로 변수명을 변경할 수 있다 . const { User } = require ( '../models' ) ; const bcrypt = require ( 'bcrypt' ) ; module . exports = () => { passport . use ( new LocalStrategy ({ usernameField : 'email' , passwordField : 'password' , } , async (email , password , done) => { //req.body 부분 done 부분 확인 필요 done 은 callback 부분 결과값 done 을 내보낸다 . routes.post(login) 쪽으로 넘어가는 값은 done() 이다 . try { // done : e 에러 , info fail reason, user success o doen( 에러 , false-reason, user) const user = await User . findOne ({ where : { email } }) ; if ( ! user ) { return done( null , false , { reason : " 존재하지 않는 이메일입니다 .!" }) ; // 이유 info } const result = await bcrypt . compare (password , user . password ) ; //else if ( result ) { return done( null , user ) ; } return done( null , false , { reason : " 비밀번호가 일치하지 않습니다 ." }) ; //else } catch (e) { console . error (e) ; return done(e) ; //server 가 error 인 경우 } })) ; } ; 리덕스 상 diff LOAD_MY_INFO_REQUEST { type: 'LOAD_MY_INFO_REQUEST' } LOAD_MY_INFO_SUCCESS { type: 'LOAD_MY_SUCCESS', data: null }