묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결공공데이터로 파이썬 데이터 분석 시작하기
질문 있습니다!
안녕하세요. 좋은 강의 정말 잘 듣고 있습니다. 궁금한 게 하나 있어 여쭤보고 싶습니다. 행과 열이 column, row 이고 가로줄, 세로줄 이라고 알고 있었는데 수업에서 월 컬럼을 추가하고, 연도 컬럼을 추가한다 라고 들어서 제가 잘못 알고 있는 건지 궁금합니다! 지역명, 기간, 가격 등을 컬럼이라 하는 건가요?? 이게 너무 헷갈리네요ㅜㅜ 감사합니다!
-
미해결현존 최강 크롤링 기술: Scrapy와 Selenium 정복
SELENIUM 과 SCRAPY 의 사용과 관련하여 문의 드립니다.
scrapy 프레임워크 정말 감사합니다. selenium을 하다 보면 처리 속도가 문제가 되는데 이 부분에 대해 많은 도움이 되었읍니다. 하지만 scrapy 에서도 한가지 단점이 있는데 사용자가 입력해야 하는 부분의 처리 입니다. 이를 위해 selenium과 scrapy를 결합한 형태로 사용해야 할 거 같은데 이 경우에도 scrapy의 장점을 취할 수 있는지 궁금합니다. 가능하시면 양 솔루션의 장점을 같이 얻을 수 있는 예제 샘플 제공해 주시면 너무 감사하겠습니다. 강사님 덕분에 그동안 어려웠던 부분 많이 해결하고 있습니다. 아울러 적은 비용으로 수준높은 지식을 주시는 강사님 감사합니다. 늘 많은 지식 주시고 항상 발전 있으시길 기원 드립니다.
-
미해결레트로의 유니티 C# 게임 프로그래밍 에센스
드롭다운
드롭다운에 처음에 Color Red로 되어 있고 스크립트 다 해놨는데 플레이 누르면 시작하자마자 이미 처음부터 설정되어 있는 Color Red에 따른 스크립트를(박스를 빨간색으로 시작부터 변경) 실행할 수는 없는 건가요? 따로 그런 기능은 없고 그냥 따로 스크립트 만들어서 Start() {} 안에서 또 번거롭게 처음 선택되어 있는 드롭다운 밸류값에 맞춘 스크립트를 짜야 하는 건가요? ㅜㅠ
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
KFold와 StratifiedKFold에 대해 질문 드립니다
KFold와 SKFold는 본고사 전에 모의고사를 보는 거라고 했죠. 이걸 cross_val_score로 편하게 할 수 있구요. 위 세 기능들은 test 데이터에 대한 예측 전에 내가 만든 classifier가 어느정도 성능을 내는지 확인하기 위한거라고 생각해도 될까요? 그리고 저 세 기능들로 데이터를 나눠서 fitting을 시킬 수 있나요? train_test_split으로 train 데이터와 test 데이터를 만들어서 classifier에 입력하듯이, KFold를 이용해서 학습데이터와 검증데이터를 만들수 있는지 궁금해요. 위 세 기능들은 단순히 모의고사를 쳐보는 목적인가요??? cross_validation.train_test_split이라는걸 봤는데, 여기서 stratify = y_label 이런 식으로 SKFold가 샘플링 하듯 균일하게 데이터를 나누는 것 같더라구요. 만약 검증과정을 건너뛰고 skfold처럼 균일하게 데이터를 균일하게 학습데이터와 검증데이터로 나누려면 이 기능을 써도 되는건지 궁금합니다. 공부할수록 궁금한게 많아지네요ㅜ
-
미해결스프링 기반 REST API 개발
link에 query추가
( 메소드 ) ResponseEntity getMembers(@PageableDefault Pageable pageable) ( link부분 ) linkTo(methodOn(MemberController.class).getMembers(PageRequest.of(pageable.getPageNumber()+1, pageable.getPageSize(), pageable.getSort()))) 이런식으로 methodOn을 통해서 url에 query를 추가하는거같은데 String이나 Long같은 기본객체에 대해서만 쿼리가 추가되는거같고 새로정의한 객체나 위의 Pageable같은경우는 쿼리가 추가가안되는데 혹시 해결방법 아시는지요 ? ㅠㅠ
-
해결됨남박사의 파이썬으로 실전 웹사이트 만들기
으아...서버 접속이 안되네요...
14:30초 과정까지 따라가서 IP/board/list로 접속해봤지만 접속이 안됩니다... 뭐가 문제일까요...로그 기록 남겨드립니다.. 강의하고 한가지 다른점은..저는 강의 내내 파이썬 3.8을 썼는데 도커 이미지가 3.8이 지원이 안되는거 같아서 3.7로 바꿔서 했습니다...그게 원인인건지... /usr/lib/python2.7/dist-packages/supervisor/options.py:298: UserWarning: Supervisord is running as root and it is searching for its configuration file in default locations (including its current working directory); you probably want to specify a "-c" argument specifying an absolute path to a configuration file for improved security. 'Supervisord is running as root and it is searching ' 2020-03-09 12:59:12,918 CRIT Supervisor running as root (no user in config file) 2020-03-09 12:59:12,918 INFO Included extra file "/etc/supervisor/conf.d/supervisord.conf" during parsing 2020-03-09 12:59:12,935 INFO RPC interface 'supervisor' initialized 2020-03-09 12:59:12,936 CRIT Server 'unix_http_server' running without any HTTP authentication checking 2020-03-09 12:59:12,936 INFO supervisord started with pid 1 2020-03-09 12:59:13,939 INFO spawned: 'nginx' with pid 9 2020-03-09 12:59:13,941 INFO spawned: 'uwsgi' with pid 10 [uWSGI] getting INI configuration from /app/uwsgi.ini [uWSGI] getting INI configuration from /etc/uwsgi/uwsgi.ini ;uWSGI instance configuration [uwsgi] cheaper = 2 processes = 16 ini = /app/uwsgi.ini module = main callable = app i = /etc/uwsgi/uwsgi.ini socket = /tmp/uwsgi.sock own-socket = nginx:nginx chmod-socket = 664 hook-master-start = unix_signal:15 gracefully_kill_them_all need-app = true die-on-term = true show-config = true ;end of configuration *** Starting uWSGI 2.0.18 (64bit) on [Mon Mar 9 12:59:14 2020] *** compiled with version: 6.3.0 20170516 on 14 October 2019 23:20:32 os: Linux-5.0.0-1031-gcp #32-Ubuntu SMP Tue Feb 11 03:55:48 UTC 2020 nodename: 6abf79646e76 machine: x86_64 clock source: unix pcre jit disabled detected number of CPU cores: 1 current working directory: /app detected binary path: /usr/local/bin/uwsgi your memory page size is 4096 bytes detected max file descriptor number: 1048576 lock engine: pthread robust mutexes thunder lock: disabled (you can enable it with --thunder-lock) uwsgi socket 0 bound to UNIX address /tmp/uwsgi.sock fd 3 uWSGI running as root, you can use --uid/--gid/--chroot options *** WARNING: you are running uWSGI as root !!! (use the --uid flag) *** Python version: 3.7.4 (default, Sep 12 2019, 16:02:06) [GCC 6.3.0 20170516] *** Python threads support is disabled. You can enable it with --enable-threads *** Python main interpreter initialized at 0x55e9b9a27f50 uWSGI running as root, you can use --uid/--gid/--chroot options *** WARNING: you are running uWSGI as root !!! (use the --uid flag) *** your server socket listen backlog is limited to 100 connections your mercy for graceful operations on workers is 60 seconds mapped 1239640 bytes (1210 KB) for 16 cores *** Operational MODE: preforking *** WSGI app 0 (mountpoint='') ready in 1 seconds on interpreter 0x55e9b9a27f50 pid: 10 (default app) 2020-03-09 12:59:15,182 INFO success: nginx entered RUNNING state, process has stayed up for > than 1 seconds (startsecs) 2020-03-09 12:59:15,182 INFO success: uwsgi entered RUNNING state, process has stayed up for > than 1 seconds (startsecs) uWSGI running as root, you can use --uid/--gid/--chroot options *** WARNING: you are running uWSGI as root !!! (use the --uid flag) *** *** uWSGI is running in multiple interpreter mode *** spawned uWSGI master process (pid: 10) spawned uWSGI worker 1 (pid: 15, cores: 1) spawned uWSGI worker 2 (pid: 16, cores: 1) running "unix_signal:15 gracefully_kill_them_all" (master-start)... {} [2020-03-09 12:59:50,638] ERROR in app: Exception on /board/list [GET] Traceback (most recent call last): File "/usr/local/lib/python3.7/site-packages/flask/app.py", line 2446, in wsgi_app response = self.full_dispatch_request() File "/usr/local/lib/python3.7/site-packages/flask/app.py", line 1951, in full_dispatch_request rv = self.handle_user_exception(e) File "/usr/local/lib/python3.7/site-packages/flask/app.py", line 1820, in handle_user_exception reraise(exc_type, exc_value, tb) File "/usr/local/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise raise value File "/usr/local/lib/python3.7/site-packages/flask/app.py", line 1949, in full_dispatch_request rv = self.dispatch_request() File "/usr/local/lib/python3.7/site-packages/flask/app.py", line 1935, in dispatch_request return self.view_functions[rule.endpoint](**req.view_args) File "./main/board.py", line 45, in lists tot_count = board.find(query).count() File "/usr/local/lib/python3.7/site-packages/pymongo/cursor.py", line 787, in count cmd, self.__collation, session=self.__session) File "/usr/local/lib/python3.7/site-packages/pymongo/collection.py", line 1600, in _count _cmd, self._read_preference_for(session), session) File "/usr/local/lib/python3.7/site-packages/pymongo/mongo_client.py", line 1454, in _retryable_read read_pref, session, address=address) File "/usr/local/lib/python3.7/site-packages/pymongo/mongo_client.py", line 1253, in _select_server server = topology.select_server(server_selector) File "/usr/local/lib/python3.7/site-packages/pymongo/topology.py", line 235, in select_server address)) File "/usr/local/lib/python3.7/site-packages/pymongo/topology.py", line 193, in select_servers selector, server_timeout, address) File "/usr/local/lib/python3.7/site-packages/pymongo/topology.py", line 209, in _select_servers_loop self._error_message(selector)) pymongo.errors.ServerSelectionTimeoutError: localhost:27017: [Errno 111] Connection refused 175.211.252.65 - - [09/Mar/2020:12:59:50 +0000] "GET /board/list HTTP/1.1" 500 290 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36" "-" [pid: 15|app: 0|req: 1/1] 175.211.252.65 () {44 vars in 1942 bytes} [Mon Mar 9 12:59:20 2020] GET /board/list => generated 290 bytes in 30083 msecs (HTTP/1.1 500) 2 headers in 84 bytes (1 switches on core 0)
-
미해결선형대수학개론
선형대수학 배우는이유
저가 컴퓨터공학 1학년인데 지금 코로나 때문에 수업이 미뤄줘서 미리 예습을 하고 있습니다. 선형대수학을 수강신청했습니다. 그런데 선형대 수학이 컴퓨터 공학에 어떤 영향을 주고 어디 분야에서 활용하는지 궁금합니다. 즉 왜 배우는지 궁금합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
rebuild 해도 bootstrap 적용 안 되시는 분들께
크롬 브라우저 기준으로 다음과 같은 에러를 만나셨다면 아래 내용을 참고하시면 좋을 것 같습니다:) "Failed to find a valid digest in the 'integrity' attribute for resource 'http://localhost:8080/css/bootstrap.min.css' with computed SHA-256 integrity 'L/W5Wfqfa0sdBNIKN9cG6QA5F2qx4qICmU2VgLruv9Y='. The resource has been blocked." PDF에서 제공되는 소스를 복붙하시고 bootstrap 버전을 강사님과 동일한 버전을 쓰지 않았을 때 부트스트랩이 적용되지 않을 수 있습니다. == fragments/header.html 중== <link rel="stylesheet" href="/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous"> 해당 태그의 속성 중 "integrity"의 값이 현재 사용중인 부트스트랩 버전의 것과 일치하지 않으면 브라우저에서 block됩니다. 만약, 최신버전의 부트스트랩을 사용중이시라면 부트스트랩 다운로드 페이지 아래쪽에 "Bootstrap CDN" 항목이 있습니다. 그곳에서 제공하는 소스 중 위에서 언급한 "integrity" 속성의 값을 복사해서 프로젝트의 것과 교체해주시면 됩니다. * css파일이랑 js파일 둘의 integrity 값이 다르니깐 잘 보시고 복사하세요.
-
미해결실전 JSP (renew ver.) - 신입 프로그래머를 위한 강좌
java8이 아닌 java13으로 진행해도 문제 없을까요?
java8이 아닌 java13으로 진행해도 문제 없을까요?
-
미해결Vue.js 끝장내기 - 실무에 필요한 모든 것
nvm으로 node 설치시 오류가 납니다.ㅠㅠ
$ nvm install 10.16.3 Can not determine how many core(s) are available, running in single-threaded mode. Please report an issue on GitHub to help us make nvm run faster on your computer! Local cache found: ${NVM_DIR}/.cache/src/node-v10.16.3/node-v10.16.3.tar.xz Checksums match! Using existing downloaded archive ${NVM_DIR}/.cache/src/node-v10.16.3/node-v10.16.3.tar.xz $>./configure --prefix=/c/Users/juwon/.nvm/versions/node/v10.16.3 < which: no python2.7 in (/mingw64/bin:/usr/bin:/c/Users/juwon/bin:/c/Program Files (x86)/Intel/Intel(R) Management Engine Components/iCLS:/c/Program Files/Intel/Intel(R) Management Engine Components/iCLS:/c/Windows/system32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0:/c/Windows/System32/OpenSSH:/c/Program Files (x86)/Intel/Intel(R) Management Engine Components/DAL:/c/Program Files/Intel/Intel(R) Management Engine Components/DAL:/c/Program Files (x86)/NVIDIA Corporation/PhysX/Common:/c/Program Files/Intel/WiFi/bin:/c/Program Files/Common Files/Intel/WirelessCommon:/cmd:/c/WINDOWS/system32:/c/WINDOWS:/c/WINDOWS/System32/Wbem:/c/WINDOWS/System32/WindowsPowerShell/v1.0:/c/WINDOWS/System32/OpenSSH:/c/Python27:/c/Program Files/nodejs:/d/Dev/cocos2d-x/templates:/d/Dev/cocos2d-x/tools/cocos2d-console/bin:/c/Ruby26-x64/bin:/c/Users/juwon/AppData/Local/Microsoft/WindowsApps:/c/Program Files/Intel/WiFi/bin:/c/Program Files/Common Files/Intel/WirelessCommon:/c/Program Files/Bandizip:/c/Users/juwon/AppData/Local/atom/bin:/c/Users/juwon/AppData/Local/GitHubDesktop/bin:/c/Users/juwon/AppData/Roaming/npm:/c/Users/juwon/AppData/Local/Programs/Microsoft VS Code/bin:/c/Users/juwon/AppData/Local/Microsoft/WindowsApps) which: no python2 in (/mingw64/bin:/usr/bin:/c/Users/juwon/bin:/c/Program Files (x86)/Intel/Intel(R) Management Engine Components/iCLS:/c/Program Files/Intel/Intel(R) Management Engine Components/iCLS:/c/Windows/system32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0:/c/Windows/System32/OpenSSH:/c/Program Files (x86)/Intel/Intel(R) Management Engine Components/DAL:/c/Program Files/Intel/Intel(R) Management Engine Components/DAL:/c/Program Files (x86)/NVIDIA Corporation/PhysX/Common:/c/Program Files/Intel/WiFi/bin:/c/Program Files/Common Files/Intel/WirelessCommon:/cmd:/c/WINDOWS/system32:/c/WINDOWS:/c/WINDOWS/System32/Wbem:/c/WINDOWS/System32/WindowsPowerShell/v1.0:/c/WINDOWS/System32/OpenSSH:/c/Python27:/c/Program Files/nodejs:/d/Dev/cocos2d-x/templates:/d/Dev/cocos2d-x/tools/cocos2d-console/bin:/c/Ruby26-x64/bin:/c/Users/juwon/AppData/Local/Microsoft/WindowsApps:/c/Program Files/Intel/WiFi/bin:/c/Program Files/Common Files/Intel/WirelessCommon:/c/Program Files/Bandizip:/c/Users/juwon/AppData/Local/atom/bin:/c/Users/juwon/AppData/Local/GitHubDesktop/bin:/c/Users/juwon/AppData/Roaming/npm:/c/Users/juwon/AppData/Local/Programs/Microsoft VS Code/bin:/c/Users/juwon/AppData/Local/Microsoft/WindowsApps) [1mERROR: Did not find a new enough assembler, install one or build with --openssl-no-asm. Please refer to BUILDING.md nvm: install v10.16.3 failed!
-
미해결C 프로그래밍 - 입문부터 게임 개발까지
정수실수
%d는 정수 %f 는 실수인거죠 ? %d = 1 %f = 1.1
-
미해결웹 게임을 만들며 배우는 TypeScript
강의 후반부에 esmoduleInterop 키는걸 비추하신다고하셨는데 왜그런건가요?
라이브러리를 임포트해서사용할떄 esmoduleInterop을 켜지않으면 어떤건import * as hi from './module'또 어떤건 import hi from './module' 이 되는지 확인해봐야되는데 왜 인터롭을 키는걸 추천하지않으시나요?
-
해결됨실전! 스프링 데이터 JPA
API 통신 시, @Transactional 사용 관련 질문 드립니다.
안녕하세요. 강사님 매번 질문을 남겨 볼까, 말까 고민하다가 처음으로 질문 드립니다. 저는 SpringDataJpa를 먼저 사용하다가, 강사님 강의를 통해 JPA와 queryDSL을 공부하고 있습니다. 또한, 사내에서 신규 프로젝트 또는 레거시 프로젝트를 작업할 때 SpringDataJpa를 도입해 나가고 있습니다. 현재 API 통신을 하는 메서드를 작성할 때, API 통신 전 과 후 히스토리를 남기고 있는데 @Transactional 없이 한 메서드에서 사용을 하고 있습니다. 제가 생각할 때 잘못 사용 하다가, 원치 않는 결과를 초래할 수도 있을 것이라 생각이 들어서 아래 예제 코드와 같이 사용하고 있습니다. 그러나 요즘 들어 제가 작성하는 코드가 효율적이지 못하다는 것과 update와 관련된 부분은 영속성컨텍스트 내에서 이뤄져야 하지 않을까란 생각이 들었습니다. 조언을 얻을 수 있는 분이 주위에 많이 안 계셔서 이렇게 부끄럽지만 질문 드립니다. 감사합니다. @Transactional에 noRollback 옵션을 주고, 적절한 timeOut 시간을 정의해서 사용하면 괜찮을까요?? ex) //API 통신 전 히스토리 생성 Hist updHist = histRepository.save(hist); //API 통신 ResponseEntity<Result> exampleResult = restTeamplte.postForEntity(uri,HttpEntitiy,Result.class); result = exampleResult.getBody(); //API 통신 후, 히스토리 업데이트를 위한 값 변경 메서드 (setter) updHist.updateResult(result.getCd(),result.getMsg()); //히스토리 업데이트 historyRepository.save(updHist);
-
해결됨[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
함수 실행 후 None 이 출력
함수 실행 후 None 이 마지막에 출력이 되는데 이유를 알고 싶습니다 ㅠㅠ 그리고 None이 안나오게 하는 방법도 알고 싶습니다 ㅠ 감사합니다
-
미해결레트로의 유니티 C# 게임 프로그래밍 에센스
이제 눈치 챘는데
2019.3 버젼 씁니다만, Text Button Dropdown Input Field 이 네 개에 '- TextMeshPro'라는 글자가 붙은 같은 놈들이 각기 또 있는데 얘네들은 뭔가요??ㄷ
-
미해결React로 NodeBird SNS 만들기
닉네임 include관련 질문입니다
이 부분 관련 오류입니다. include 할 때 nickname 관련 부분을 불러오지 못하고 있습니다. 저와 같은 문제가 있으신 분들 질문을 봤는데 참고해도 해결이 되지 않습니다. const express = require('express'); const db = require('../models'); const router = express.Router(); router.get('/', async (req, res, next) => { //게시글 가져옴 try { const posts = await db.Post.findAll({ include: [{ model : db.User, attributes : ['id', 'nickname'], }], order : [['createdAt', 'DESC']], //DESC는 내림차순 ASC는 오름차순 }); res.json(posts); } catch (e) { console.error(e); next(e); } }); module.exports = router; / <Card.Meta avatar={<Avatar>{post.User.nickname[0]}</Avatar>} title = {post.User.nickname} description = {post.content} /> card.meta 부분의 avatar, title 파트를 주석처리하면 원활하게 돌아갑니다. nickname 부분도 원활하게 저장되고 있는 것 같은데 어디서 문제가 발생하는지 알 수가 없습니다.
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
eval_set가 뭐하는건가요??
eval_set=[(X_train, y_train), (X_test, y_test)] 이부분이 잘 이해가 가지 않습니다. eval_set의 역할이 뭔지 알고싶어요. 피팅에 이미 xtrain, ytrain 다 들어갔는데, eval_set에는 전 데이터가 다 들어가네요 train 데이터로 학습을 시키고 test데이터로 검증을 한건가요?? test데이터 빼고 train 데이터만 eval_set에 넣어도 돌아가는데 어떤차이가 있는지 알고싶습니다.
-
미해결대세는 쿠버네티스 (초급~중급편)
kubectl 대시보드 설치시 에러 관련 문의 드립니다.
쿠버네티스 워크숍 보며 실습을 하는데 위와 같이 대시보드 설치하여 접속시 에러가 나옵니다. 어떻게 해결해야 할까요? <설치> kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml <실행> kubectl proxy --port=8080 --address='0.0.0.0' --disable-filter=true & <브라우저 뒤에 아래 붙여서 접속> /api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/ 여기까지 했을 때 위의 스샷처럼 나옵니다... 버젼은 1.10.1 로 나옵니다. 위 설치시의 apply 대신 delete 를 주어 삭제 후, 공식 홈페이지의 2.0 beta 버전을 설치 후, kubectl proxy & 로 실행 후, 공식 홈페이지에서 말하는 http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/ 접속을 하려고 시도해 보았으나, 제대로 접속이 되지 않아 문의를 남깁니다. 도와주세요 선생님...
-
미해결C 프로그래밍 - 입문부터 게임 개발까지
감사합니다 잘 보고 있습니다. 교재는...
혹시 이 강의 교재는 따로 없는건가요?
-
해결됨React로 NodeBird SNS 만들기
Field 'content' doesn't have a default value
강의를토대로 게시판 작성을 실습중인데요! ㅠ ㅠ 게시판 작성을 누르면 "Field 'content' doesn't have a default value"라는 에러가 발생합니다. 검색해보니 mysql 특정 버전에서는 디폴트값이 없으면 에러가 날수있다고해서 마이그레이션을 작성해주었습니다. "use strict"; module.exports = { up: (queryInterface, Sequelize) => { queryInterface.changeColumn("Posts", "content", { type: DataTypes.TEXT, allowNull: false, defaultValue: "" }); }, down: (queryInterface, Sequelize) => { /* Add reverting commands here. Return a promise to correctly handle asynchronicity. Example: return queryInterface.dropTable('users'); */ } }; 명령프로세서에서 실행해주면 다음과 같이 나옵니다. 강의와 똑같은 환경과 비슷한 코드를 작성했는데 왜 에러가 나는걸까요??.. postForm.js import React, { useCallback, useState, useEffect } from "react"; import styled from "styled-components"; import Link from "next/link"; import { useSelector, useDispatch } from "react-redux"; import { media } from "../components/StyleUtils"; import { ADD_POST_REQUEST } from "../reducers/post"; const postForm = () => { const dispatch = useDispatch(); const [titleText, setTitleText] = useState(); const [text, setText] = useState(); const { imagePaths, isAddingPost, postAdded } = useSelector( state => state.post ); const onSubmitForm = useCallback( e => { e.preventDefault(); if (!titleText || !titleText.trim()) { return alert("제목을 작성하세요."); } if (!text || !text.trim()) { return alert("게시글을 작성하세요."); } dispatch({ type: ADD_POST_REQUEST, data: { title: titleText.trim(), content: text.trim() } }); }, [titleText, text] ); const onChangeTitleText = useCallback(e => { setTitleText(e.target.value); }, []); const onChangeText = useCallback(e => { setText(e.target.value); }, []); return ( <Container> <PageTitle>게시글 작성</PageTitle> <Form onSubmit={onSubmitForm} enctype="multipart/form-data"> <Label htmlFor="title">제목</Label> <Title id="title" placeholder="제목을 입력해주세요" value={titleText} onChange={onChangeTitleText} /> <Label htmlFor="content">내용</Label> <Content id="content" placeholder="내용을 입력해주세요" value={text} onChange={onChangeText} /> <ButtonBox> <Button type="primary" htmlType="submit" style={{ marginRight: 10 }}> 작성하기 </Button> <Link href="/board"> <a> <ButtonSecond>목록으로</ButtonSecond> </a> </Link> </ButtonBox> </Form> </Container> ); }; export default postForm; models => post module.exports = (sequelize, DataTypes) => { const Post = sequelize.define( "Post", // 테이블명은 posts { title: { type: DataTypes.STRING(20), allowNull: false } }, { views: { type: DataTypes.INTEGER, allowNull: false, defaultValue: 0 } }, { content: { type: DataTypes.TEXT, // 매우 긴 글 allowNull: false, defaultValue: "" } }, { charset: "utf8mb4", // 한글+이모티콘 collate: "utf8mb4_general_ci" } ); Post.associate = db => { db.Post.belongsTo(db.User); // 테이블에 UserId 컬럼이 생겨요 db.Post.hasMany(db.Comment); db.Post.hasMany(db.Image); db.Post.belongsToMany(db.User, { through: "Like", as: "Likers" }); }; return Post; }; routes=>post.js const express = require("express"); const db = require("../models"); const router = express.Router(); router.post("/", async (req, res, next) => { try { const newPost = await db.Post.create({ title: req.body.title, content: req.body.content, UserId: req.user.id }); return res.json(newPost); } catch (e) { console.error(e); next(e); } }); router.post("/images", (req, res) => {}); router.get("/:id/comments", async (req, res, next) => {}); module.exports = router; .