안녕하세요. 학습중 궁금한 점이 생겨서 질문 남깁니다. /api/users/login에 POST 요청을 보내면 해당 로그인 요청 정보와 일치하는 정보가 DB 내에 있는지 여부를 판독해 로그인 성공/실패가 이루어지는 것까지는 알겠습니다. 그런데 login 요청을 보내기만 해도 DB 내에 token 정보가 업데이트되는 점이 이해가 되지 않습니다. 분명 /api/users/auth에 GET 요청을 보내야 DB 내의 token 정보를 업데이트하는 것으로 코드를 작성한 것 같은데 말이죠... login시 client의 cookie에 token을 저장하긴 했으나, DB에 token 정보를 업데이트하는 것은 /api/users/auth에 GET 요청을 보내야 이루어지는 것 같은데, 도대체 왜 login 요청을 보내기만 해도 DB 내의 token 정보가 업데이트되는 것인지 궁금합니다. 답변 부탁드립니다. 항상 좋은 강의 감사드립니다.
현재 [Serializable] 필드 두개로 StatData, Stat을 Json파일과 형식을 똑같이 맞춰주는 부분이고 StatData는 ILoader<int, Stat>을 상속받는 아이여야 한다. 라는 부분이다. 현재 ILoader인터페이스를 상속받고있으니 Dictionary<Key, Value> MakeDict() 이부분을 반드시 구현해야한다. 그래서 StatData에서 public List<Stat> stats = new List<Stat>();으로 빈 List를 만들고 public Dictionary<int, Stat> MakeDict() 인터페이스를 구현을 하는 부분인데 { // 안에서 Dictionary<int ,Stat> dict = new Dictionary<int, Stat>(); int를 Key, Stat을 Value로 가지는 Dict 만들어주고 foreach를 통해서 dict의 Key값에는 stat.level을 value에는 stat을 dict.Add로 추가를 해주는 것을 구현을 하였다 } 그리고 DataManager class에서는 public Dictionary<int, Stat> StatDict { get; private set; } = new Dictionary<int, Stat>(); int를 Key로 Stat을 Value로 받는 Dict를 StatDict라고 선언을 했다 (근데 왜 얘만 { get; private set; }으로 한것인지?) 그리고 Loader타입을 반환하는 LoadJson함수를 만들었는데 LoadJson함수는 타입을<Loader, Key, Value>를 받고 인자로 string path 경로를 받게하였다. 근데 Loader라는 타입은 ILoader를 무조건 상속받는데 ILoader가 타입이 <Key, Value>인것 아무거나라도 괜찮은 Loader를 받는 다는 의미이다!! 이까지 코드분석은 된거같고 !!문제!!는 init()함수에서 int를 Key, Stat을 Value로 받는 StatDict인데 StatDict는 LoadJson에 타입을<StatData, int , Stat>을 받고 인자로는 "StatData"(경로)를 넣어주었다. 그러면 StatData LoadJson<StatData, int, Stat>("StatData") where StatData : ILoader<int, Stat> 함수를 호출하고 .MakeDict();를 한것이 StatDict에 할당이 된다는 뜻까지는 Okay! 그러면 호출 순서가 TextAsset textAsset = Managers.Resource.Load<TextAsset>("Data/StatData"); 먼저실행 textAsset에 경로를 넣어준 파일 할당 JsonUtility.FromJson<StatData>(textAsset.text);를 통해 StatData타입으로 textAsset.text를 파싱한것을 return 해준다. 그러면 LoadJson<StatData, int, Stat>("StatData")이부분까지는 위의 호출 순서대로 return을 해준것은 StatData 클래스 타입으로 textAsset.text를 파싱한것인데, StatData클래스는 ILodaer<int, Stat>을 상속받았기 때문에 MakeDict()라는 함수를 가지고있어서 StatDict = LoadJson<StatData, int, Stat>("StatData").MakeDict(); 가 가능한것이고 StatData의 MakeDict함수를 써주었기 때문에 결국에는 dict가 반환이 되는데 이것이 dict를 DataManager 39번째 줄에 선언을 해주었던 StatDict 딕셔너리에 할당을 해주는것이 된다. 1. 이렇게 정리하면서 공부했는데 위에 제가 혼자 정리한것이, 제가 이해한것이 맞나요?? 2. 이런식으로 코딩을 정리하는 습관이 유니티,씨샵을 공부하면서 효과적인 정리일까요?? 3. DataManager클래스 안에서 public Dictionary<int, Stat> StatDict { get; private set; } = new Dictionary<int, Stat>(); 이부분만 왜 { get; private set; }으로 만든것인가요? public Dictionary<int, Stat> StatDict = new Dictionary<int, Stat>(); 이렇게 선언한것이랑 차이가 무엇인가요?? 4. 함수나 딕셔너리에서 < > 안에 타입을 넣어주시는데 이것이 int, string 같은 변수의 진짜 타입을 넣어 줄 수도 있는것이고class형식이다라는 것도< > 안에 넣어 주어서 public void init() { StatDict = LoadJson<StatData, int, Stat>("StatData").MakeDict(); } 처럼 LoadJson<StatData, int, Stat>을 넣어 주었기때문에 StatData를 < > 안에 "class형식이다" 라고 넣어줘서 StatData안에 MakeDict함수를 .MakeDict()로 사용이 가능한것인가요?
안녕하세요, 코어자바스크립트 책이랑 강의를 함께 잘 보고 있습니다. 감사합니다. 1. 메모리 주소에 관한 궁금증이 생겨 질문드립니다. (강의 1:48 초) 책에서 비트는 하나의 메모리 조각이고, 각 비트는 고유한 식별자를 통해서 위치를 확인 할 수 있다고 말씀해주셨습니다. 그렇다면 강의에서 메모리 주소를 1001, 1002 이렇게 표현하셨지만 실제 메모리의 주소는 각 비트가 갖고 있는 식별자가 주소인 건가요? 2. 값의 주소를 저장에 관한 질문입니다. (강의 14:12 초) 값의 주소를 저장 시 "데이터 할당시에는 느리다"는 의미가 값을 직접 저장하는 경우와 비교했을 때 값의 주소를 저장하는 방식이 1)데이터를 넣을 빈 공간을 찾고, 2)그 주소를 다시 변수의 값으로 넣는 과정이 더 필요하듯이 값을 직접 저장하는 것보다 더 많은 단계가 필요하기 때문에 느리다는 의미인걸까요? 친절한 책과 강의 잘 보고 있습니다. 감사합니다 ;)
강의에서 나온 부분을 변형하여 엔터키를 누르는 것만으로도 메세지가 전송이 되도록 하려고 했습니다. if(event.key === "Enter") 를 사용하였을 때 메세지 전송은 정상적으로 작동했지만 자동 스크롤 기능이 실행되지 않았습니다. 이 부분을 또 변형하여 강의에 나온 것처럼 event.keyCode === 13 이라는 조건을 주어도 같은 결과가 나왔습니다. 강의대로 event.ctrlKey && event.keyCode === 13을 주면 메세지 전송과 자동 스크롤 모두 정상적으로 작동하지만 다른 키 입력을 조건으로 했을 때 다른 결과가 나오는 것은 어떠한 이유때문인지 궁금합니다.
안녕하세요. 항상 좋은 강의 감사드립니다. 실습을 진행 중 궁금한 사항이 있어 질문을 올리게 되었습니다. #include <iostream> #include <limits> short s = std::numeric_limits<short>::max(); cout << "max + 1: " << ss + 1 << endl; cout << "max + 2: " << ss + 2 << endl; s += 1; cout << "max + 1: " << ss << endl; 위 코드를 출력하면 다음과 같이 출력됩니다. max + 1: 32768 max + 2: 32769 max + 1: -32768 수의 최대 범위가 넘어갔는데도, 출력을 할 때 더 큰 수가 출력이 되는 이유가 변수에 저장을 안해서 그런 것 인가요? L-value와 R-value와 관계가 있는 것인지 궁금합니다. 감사합니다.
/usr/local/sbin/rabbitmq-server: line 154: 88899 Segmentation fault: 11 start_rabbitmq_server "$@" 라는 에러가 발생합니다. 찾아봤을때, 해결 방법을 따로 찾질 못하겠네요. 해결방법이 있을까요?
https://stackoverflow.com/questions/63124161/attempted-import-error-switch-is-not-exported-from-react-router-dom/69849271#69849271 react-router-dom v6 에서는 위와같은 수정사항이 있으니 다른 분들 참고하시면 좋을 것 같습니다.
- 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 플러터를 이용해서 큰 상용 프로젝트를 진행하려고 준비하고 있고 강의도 잘 듣고 있습니다. 늘 그렇듯이 처음 백지 상태에서 큰 프로젝트를 만들기위해서는 폴더 구조를 처음에 잘 잡는게 중요하다고 생각이 되는데요 그리고 이를 위해서는 플러터의 기본 사상에 잘 부합하는? 그런 구조로 만들어야 할듯하구요 그래서 강의내내 말씀해주신. 상태관리, bloc, respository, model 등 다양한 플러터의 개념이 잘 녹아들어있으면서 잘 최적화 되어 있는 폴더구조를 가진 참고할만한 github 소스는 어떤게 있을지 강사님께서도 참고하시는 github이나 아니면 강사님께서 주로 만드시는 최적화 된 폴더 구조를 공유해주시면 정말로 많은 도움이 될듯합니다. 감사합니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주혹시 오라클 db관련 정리 자료도 받을수 있을까요?세요.
안녕하세요 강사님 귀한 강의 잘 보고 있습니다. 질문이 있어서 글올립니다. 올려주신 코드파일을 테스트로 돌리고 있는데 robobits_bb.py와 robobits_adv2.py 파일을 3~4개 정도 생성해서 서로 다른 코인으로 동시에 실행 시키니 이 부분에서 에러가 발생합니다. 제가 아직 파이썬에 익숙치 않아 이해가 잘안되네요. 제 추축엔 업비트api를 동시에 여러번 호출해서 업비트에서 차단함으로써 값을 제대로 못받아 오는 느낌입니다. 혹시 해결법이 있는지 알고 싶습니다. 감사합니다.