안녕하세요 교수님, 이번 겨울 교수님 덕분에 C++ 공부 즐겁게 하고 있는 학생입니다. 다름이 아니오라 제가 이 코드를 실행하다가 막히는 부분이 있어서 질문드립니다. 우선 실행 환경은 - macOS Catalina - CLion / Clang 입니다. VS 위주로 수업이 진행되고, 이외의 플랫폼과 툴에 대해서는 답변이 어려울 수 있다는 말씀을 소개 페이지에 하셨지만 혹여나 제가 놓치고 있는 부분이 있을까 해서 질문 드립니다. < 수정 > main 함수 위쪽의 int Something::s_value = 1234; 로 변수의 값을 초기화 해주지 않은 걸 뒤늦게 발견했습니다. _init 이라는 내부 클래스를 만들고, Something의 멤버 변수(?)로 s_initializer 라는 인스턴스를 생성한 이유가 이 인스턴스가 생성되면서 생성자가 호출 -> 생성자가 s_value를 9876이라는 값으로 초기화 인 것 같습니다만, s_initializer 호출 전에 s_value를 초기화시키지 않으면 아래의 오류가 발생하는 이유가 무엇인가요? (너무 질문이 길어져 죄송합니다...) #include <iostream> using namespace std; class Something { public: class _init // inner class { public: _init() // constructor { s_value = 9876; } }; private: static int s_value; int m_value; static _init s_initializer; public: Something() // constructor : m_value(123) {} // static member function static int getValue() { /* * in static member function, you CANNOT use 'this pointer' * since both static member variable & function are independent * to the instances constructed using the class definition. */ return s_value; } }; // THIS IS NOT WORKING!! Something::_init Something::s_initializer; int main() { Something st1; // cout << st1.getValue() << endl; /* fptr -> temp * and the function temp NEEDS 'this' pointer as its input. */ /* In contrast, * static member functions are independent to the instances, * since it has its own address on memory so we don't need to * pass the pointer of instance('this') to it. */ int (*fptr2)() = &Something::getValue; cout << (*fptr2)() << endl; return 0; } 위에 첨부해드린 코드를 실행시키면 다음과 같은 에러를 볼 수 있습니다. < 에러 메시지 > Undefined symbols for architecture x86_64: "Something::s_value", referenced from: Something::getValue() in main_8_11.cpp.o Something::_init::_init() in main_8_11.cpp.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)getValue() 라는 정적 멤버 함수에 의해 정적 멤버 변수 s_value가 참조되는 과정에서, 이 변수를 컴파일러가 찾을 수 없다는 내용인 것 같습니다.(제가 생각한 게 맞나요?) 교수님의 강의 코드와 요점 정리를 해주신 분 블로그의 코드까지 참고해서 작성했는데도 오류가 사라지지 않아서 이렇게 질문을 드립니다. 추가적으로 문제 상황을 설명드리는데 있어 도움이 될까 싶어 한 가지 덧붙입니다: Something::_init Something::s_initializer; (main 함수 위) 에서 s_initializer 아래 노란줄이 표시되는데, 커서를 갖다대면 이런 메시지가 나옵니다. Clang-Tidy: Initialization of 's_initializer' with static storage duration may throw an exception that cannot be caught 교수님의 친절한 설명 덕분에 처음 배울 때엔 어렵게만 느껴졌던 참조자와 포인터 개념을 잡고 여기까지 올 수 있었습니다. 긴 질문 읽어주셔서 감사드립니다!
안녕하세요? 잘듣고있습니다. 매우 많은 도움이 되고있어 감사하게 생각하고 있습니다. 따라 가서면 하다보니 개발되어있거나 외부에서 제공받은 각종 Javascript 라이브러리나 Util들을 vue에서 include 하는 방법들을 찾아보고 있습니다. 수많은 js 파일들을 일일히 열어 export하여 사용하긴 어려움이 있어 /public/js/*.js 이 위치에 파일들을 올려놓고 index.html안에 <script src="/js/common000.js"></script>이런식으로 등록하고 실제 사용할 component vue에서 해당 스크립트의 함수를 호출하면 되더라구요. 물론 실행은 되나 eslint에 걸려 오류가 나서 아래와 같이 같은 스크립트를 vue 넣으니 eslint엔 걸리지 않더라구요 <template>...</template> <script src="/js/common000.js"></script> <script src="/js/common001.js"></script> <script> export default { ... } </script> <style></style> 이런식으로 했을 때 Vue문법에 어긋나거나 잘못된점이 있나요? 아니면 다른 괜찮은 방법이 있나해서 질문드립니다.
안녕하세요? 아직 본 강의의 앞 부분만 수강하고 있는 개발자라, 향후 내용을 수강하면 답이 나올지 모르겠으나, 당장 DB 설계가 진행되고 있어서 기초적인 질문 드립니다. 클래스에 @Entity를 해서 JPA에 인식(?)시켜주던데 변수(컬럼)에 @Id 하지 않으면 에러가 나더라구요. 즉, PK가 없으면 JPA를 사용할 수 없다(?)라고 생각했습니다. 혹시 컬럼 두 개가 PK가 된다면 JPA 기술을 사용하는데 문제가 없는지 답변 부탁 드립니다. 혹시 강의 뒷 부분에 이런 이슈도 다뤄주시는지 모르겠습니다. 덕분에 좋은 강의 수강하고 있습니다. 감사합니다.
안녕하세요 . reduce 2에서 공부한 함수에서 궁금한 점이 생겨서 질문 드립니다. 먼저 제가 시도하려던 방향은 iter를 비우고 파라미터를 2개만 받아서 함수를 구현하려고 했는데 비구조화 함수를 쓰면서 되게 복잡하게 함수가 구현이 되었습니다. 그러면 acc가 optional이 아니라 필수처럼 보이게 되어서 그런데 이를 좀 더 간단하게 만들거나 추상적인걸 잘 만족시킬 수 있는 방법이 있을까요? const reduce = ( f , acc , iter ) => { if ( ! iter ) { iter = acc [ Symbol . iterator ]() ; [ acc , ... iter2 ] = iter ; } for ( const a of iter2 ) { acc = f ( acc , a ) ; } return acc ; }; console . log ( reduce ( ( a , b ) => { return { price : a . price + b . price }; }, products) ) ;
안녕하세요? 강사님.... 따끈따끈한 강의 정말 도움이 많이 되고 있습니다. 그런데, konlpy를 윈도우에서 설치하려고 하는데 많이 어렵네요... 윈도우환경에서 Jupyter, pycham 에서 설치하고 싶습니다. 감사합니다. ps: 또다른 크롤링 강의 개설하신다면 기꺼이 수강하고 싶은 1인입니다.
안녕하세요. 강의 잘 보고있습니다~ naming 관련하여 간단하게 질문이 있습니다. 이번 강의에서는 다른 강의에서 사용했던 method naming rule과는 다르게 actions의 로그인 함수명을 upper case로 작성하셨는데, vue.js, vuex 에서 사용하는 함수명들에 대한 naming rule이 따로 있는건가요? 아니면 프로젝트별로 naming을 정하는건가요?
http://34.64.201.196/board/list 로 접속하면 접속이 됩니다. rightlife.kr/board/list로 하면 안됩니다. 강의하고 다른 점이라면 네임서버를 등록할 때 강의에서는 옆에 IP 입력란이 자동으로 입력이 됐는데 저는 그게 안떠서 뭘 입력해야 하는지 몰라서 검색해보니 커맨드라인에서 nslookup 명령어를 이용해서 IP를 확인할 수 있다고 하여 확인한 IP 주소를 직접 입력했습니다. 그 외에는 동일합니다.