수강이 제한됩니다.
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨Node.js 교과서 - 기본부터 프로젝트 실습까지
실제 서비스에서도 cluster를 사용하나요?
보통 EC2 인스턴스에 express와 같은 백엔드 서버를 띄우고 Traffic이 많이 발생할때 앞단에 로드밸런서를 붙여서 Traffic을 부하분산시킬수 있도록 EC2를 여러개 구성하거나 Auto Scaling 그룹을 생성하는 것으로 알고 있습니다. 그런데 강좌를 보고 생각해보니 EC2인스턴스에서도 싱글스레드인 node 백엔드이기 때문에 Core를 여러개 사용하지 않고 1개씩만 사용하기때문에 나머지 Core들이 놀고 있겠구나 하는 생각이 들었습니다. 만약에 Core가 2개인 EC2 인스턴스 2개를 로드벨런서를 통해 서비스를 한다고 가정했을때, 1개의 인스턴스에서 cluster를 통해 cpu를 multi core로 활용한다고 한다면 성능상 비슷할까요? 또 실제로 cluster를 사용해서 node 서비스를 띄우는지도 궁급합니다. ㅎ :)
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
캐싱에 관하여
질문 있습니다!!, 1. 세션자체에 유저정보를 전체를 저장하는것이 서버 메모리에 부담이기 때문에 user.id 만 저장한다고 하셨는데 결국 캐싱하게 되면 서버 메모리를 사용하는 것이니까? 처음 부터 세션에 유저전체 정보를 저장하는것과 비슷한거 아닌가요?? 2. 그리고 캐싱을 구현하게 된다면 LRU 구현해서 최근에 자주 요청을 보낸 사용자들 위주로 캐싱을 진행하는 것도 좋은 방법일까요? 3. 만약 LRU 캐시를 구현한다면 캐시 사이즈 는 어느 정도로 잡으면 좋을까요?
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
salt를 실무에서 사용할때 항상 randomBytes로 만들어줘야 하나요?
안녕하세요 제로초님. randomBytes를 사용한뒤 버퍼로 base64 문자열을 랜덤하게 만들고, 해당 값을 salt로 이용하는것까지는 이해를 했습니다. 실제 비밀번호를 입력받아서 pbkdf2로 비밀번호로 넘어온 문자열을 암호화 하고 DB의 암호화된 값과 비교를 하는 것으로 이해했는데, 그때마다 randomBytes를 이용해서 salt를 만들게 되면 salt값이 비밀번호 확인 요청시마다 달라지게 되므로 interation결과도 달라지게 되지 않나요? 그렇다면 제 생각에 강의에서 나온 내용인 'salt는 암호화된 비밀번호화 같이 저장한다'라고 하는 내용은 randomBytes는 로컬에서 한번 시행을 시켜서 salt를 만들고 따로 env파일이나 안전하게 저장한 뒤에 백엔드에서는 해당 저장된 salt와 pbkbf2를 이용해서 비교를 하면 된다는 말씀이신지 궁금합니다. ~ ㅎ
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
게시물 올리기 오류
글을 쓰고 올리는 버튼을 누르면 이런식으로 되는데 어떻게 해야하나요..
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
캐슁 이후 로그인창
캐슁이후에 로그인을 하게되면 에러는 없는데 로그인창은 안바뀌고 옆에 로그인시 나오는 사진업로드 가능한 부분만 나오는데 어떻게 해야할까요?
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
kakao passport 질문있습니다.
안녕하세요 제로초님! passport를 이용해서 kakao 로그인을 구현하고 있는데 데이터를 받아올때 카카로 계정이 안넘어와서 질문을 드립니다. 혹시 빠진게 있을까요?nestjs를 사용하고 있고 모듈은 @nestjs/passport , passport-kakako 를 사용하여 구현했습니다.
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
global객체 공유 질문드립니다.
강의 보고 잠깐 혼동했던 개념이 1.global 객체는 전역으로 공유 된다 2.a.js에서 global.abc = "abc" 라고 하고 b.js에서 console.log(global.abc)라고 했을 때, "abc"가 찍힌다.로 이해했는데 실험을 해보니 undifinded가 뜹니다. ---- 조금더 실험을 해봤는데 아래의 결론이 맞을까요? b.js에 // const a = require("./a");를추가하니까 console.log(global.abc)가 출력됩니다. 제가 이해한 현 상태는 아래와 같습니다. require (해당파일) 해야만 동일한 글로벌 객체를 공유하게 되는건가요?? 강좌에서는 전역 객체이기 때문에 파일 간 global이 공유된다고 하셔서요..
- 해결됨Node.js 교과서 - 기본부터 프로젝트 실습까지
서버가 죽어버리네요
이렇게 에러 나오고 바로 죽어버려요 로컬에서 돌렸어요 맥환경이구요..
- 해결됨Node.js 교과서 - 기본부터 프로젝트 실습까지
포링키 문제..
db.User.hasMany(db.Comment, {foreignkey:'commenter', sourceKey:'id'}); db.Comment.belongsTo(db.User, {foreignkey:'commenter', targetKey:'id'}); 이걸 등록 안하고 서버 동작 했더니 알아서 생성되는데 2020년되서 바껴진건가요? 그냥 지나쳐도 되는건가요?
- 해결됨Node.js 교과서 - 기본부터 프로젝트 실습까지
커넥션 플래시 설치문제
커넥션 플레시 설치가 안됩니다.. npm ERR! code E404npm ERR! 404 Not Found - GET https://registry.npmjs.org/connent-flash - Not foundnpm ERR! 404 npm ERR! 404 'connent-flash@*' is not in the npm registry.npm ERR! 404 You should bug the author to publish it (or use the name yourself!) 중단됐나봐요?
- 해결됨Node.js 교과서 - 기본부터 프로젝트 실습까지
익스프레스 제너레이터? 설치문제
지원이 끊겼나봐요? 자꾸 이런 에러만 뜹니다.. npm WARN deprecated mkdirp@0.5.1: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.) 자꾸 설치가 안되서 express -h 이러면 헬퍼 떠야한데 안나오고.. 답답하네요
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
redis 질문입니다.
제로초님 블로그 redis 를 읽고 궁금한 점이 생겨 질문 드립니다. 예약 정보 조회 예약 상태가 예약전이면 예약성공으로 업데아트 예약 상태가 예약 성공 이면 무시 redis 는 싱글 스레드로 알고 있습니다. 그러면 예를 들어 redis 를 사용해서 두 사용자가 동시에 예약을해서(예약전 => 예약 성공) 예약상태를 변경하는 경우에 redis 를 사용하면 별도의 처리 없이도 동시성이 보장되어 동시에 두 사용자가 예약이 성공되버리는 문제는 발생하지 않는 건가요?
- 해결됨Node.js 교과서 - 기본부터 프로젝트 실습까지
9장 세션을 DB에 저장시 리다이렉션 오류 발생
9장 강의를 실습하고 나서 session을 DB에 저장하고 싶어 connect-session-sequelize를 이용하여 MySQL의 session 테이블에 저장하는 데 까지는 성공했습니다. 하지만 강의 대로 passport를 이용하여 로그인을 구현한 상태로 로그인을 시도하면 로그인이 된 상태가 새로고침을 해야 반영되는 오류가 발생하는 것을 알게되었습니다. 로그인 버튼을 누른 후 정상적으로 redirect 될 때가 있고, 로그인 후 redirect를 해도 로그인이 안된 상태의 페이지에 머무르는 상태가 될떄도 있어서 정확히 제가 무슨 실수를 했는지 판단할 수가 없습니다. 더 당혹스러운 점은 session을 DB에 저장하지 않고 진행하면 이런 현상은 나타나지 않아서 DB에 session을 저장하는 과정에서 오류가 발생한다는 것 까지만 추측한 상태입니다. 로그인 할때마다 새로고침을 강제할 수도 없는 상황이라 어떻게 해결해야 할지 정말 막막한 상태입니다. 브라우저 캐시 문제인지도 확신이 서질 않습니다. 주변에 도움을 구할 수 있는 분이 없는 상태라 이렇게 제로초님께 질문하게 되었습니다. 혹시 제 코드에 문제가 있는지 봐주시면 정말 감사하겠습니다.또 이런 현상이 왜 나타나는지 제로초님의 생각을 들어보고 싶습니다. Github
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
프레임워크 선택에 관하여 질문이 있습니다.
Node.js는 I/O에 특화되어있고 json데이터를 제공하는 api 서버에 많이 사용합니다. 이미지/비디오, 빅데이터 처리 등 cpu를 많이 사용하는 작업에는 적합하지 않다고 책(Node.js교과서)에 나와있습니다. 그렇다면 이미지 프로세싱(컴퓨터 비전관련) 작업은 Node.js로 하지않고 이미지/비디오 데이터만 저장/응답해주는 역할만 한다고 했을 때 Node.js가 적합한 프레임워크인지가 궁금합니다. 즉, 많은 사용자에게 큰데이터(이미지/비디오)를 I/O를 해준다면 Node.js가 올바른 선택인지가 궁금합니다. 예를 들면 Node.js에서는 이미지/비디오를 별도의 Storage(AWS의 S3 같은것...)에 upload하고 Storage의 url만 DB에 저장해놓습니다. 그리고 downlaod시에는 DB를 뒤져서 올바른 Storage의 url을 받아서 해당 Storage에서 직접 download 방식을 만드려고 하는데 이경우 Node.js가 효율적인 선택인걸까요?
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
시퀄라이즈 질문입니다 ! !
시퀄라이즈로 mindmap 테이블과 keyword 테이블을 다대다 관계로 설정했습니다. (매핑 테이블로는 mindmap_keyword로 설정했습니다) 그리고 http://localhost:3000/mindmap/1 와 같이 요청을 했을 때 위의 로직이 실행되는 상황입니다. 그리고 포스트맨으로 테스트를 해보았습니다. 그러면 위와 같이 원하는 결과를 얻었습니다. 그런데 데이터구조가 맘에 들지 않아서 검색해보다가 raw: true라는 것을 보아 적용해보았습니다. 그리고 다시 포스트맨으로 테스트를 해보았습니다. 그러면 위와 같이 아까보다는 데이터 구조가 단순해지기는 했는데 이름이 맘에 들지 않습니다 ㅜ ㅜ 그냥 keywordCount: 3 으로만 보내주고 싶은데 이럴 경우에는 어떻게 해야 하는지 궁금해서 질문드립니다! ! 감사합니다 ! !
- 해결됨Node.js 교과서 - 기본부터 프로젝트 실습까지
리뉴얼 강의 12강 socket.io에서 req.session접근 관련 질문
socket.request.session에서는 color에 접근할 수 없기때문에 app.js에서 sessionMiddleware를 따로 분리하여 socket.js에 넘겨주어 socket.request.session에서 color 속성에 접근할수 있게 했는데 "Cannot read property 'color' of undefined" 오류가 발생하는네요 원인을 모르겠습니다 제가 코드를 잘못작성한것 같아서 github 코드를 참고하여 수정해봤는데도 계속 이런 현상이 나타나네요 콘솔로 socket.request.session을 찍어보는데 아예 undefined가 출력되는걸 봐서 socket.request.session에 request.session이 전달되지 않는것 같습니다 https://socket.io/docs/v3/faq/index.html 혹시 express-session에 접근할 수 있는 다른 방법이 있나 공식문서를 참고해봤는데 강의내용과 다르지 않더라구요 더 찾아본 결과 express-socket.io-session 라이브러리가 존재하는걸 확인했는데 이걸 사용해야 하나 고민입니다
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
oAuth 질문입니다.
세션이 아닌 REST API로 접근을 한다고 했을 때, 어떤식으로 구현을 해야 하는지 질문을 드립니다. 우선 생각했던 방법은 로그인 시에 각 oAuth 제공 플랫폼이 주는 고유 식별 값이 있으니 그걸 DB에 저장하고, 매 Request마다, accessToken의 유효성 검사 및, 고유 식별자 값이 DB에있다면 DB에 접근, 없으면 회원가입 이러한 방식으로 구현하려 했으나, 모든 Request마다, oAuth서버에 접근해서 알아오는 것이 과연 맞는가 생각해보게 되었습니다. 혹시 accessToken과 refreshToken, expire을 DB에 저장해놓고 있고, 내부 로직으로만 확인하고 독자적으로 저만의 JWT를 구성하고 인증을한 다음 해당 플랫폼의 정보에 접근할 때만 oAuthAccessToken을 사용하면 되는 것인지요... 조언부탁드립니다...
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
GCP 질문입니다.
1. 서버를 실행하려고 sudo npm start를 하고 pm2 monit으로 로그를 보면 Error: bind EACCES null:80 위와 같은 에러가 나옵니다. sudo를 입력했는데도 왜 안될까요?? 애매한 질문입니다만 예상되는 부분만이라도 이야기 해주셨으면 합니다. 2. 80번 포트가 되지 않는 것 같아서 포트를 바꿔보기로 했습니다. package.json의 "start": "cross-env NODE_ENV=production PORT=80 pm2 start app.js -i -1"에서 PORT=8080으로 바꾸고 GCP 방화벽에서 8080번 포트 설정을 하고 실행하니까 서버에 접속은 됐습니다. 그런데 main.css가 불러와지지 않고, 크롬 개발자도구 네트워크 탭을 보니 http://(제 아이피):8080 이후에 https://(제 아이피):8080/main.css https로 시도하고 있어서 안되고 있는 것 같습니다. layout.pug에서 link(rel='stylesheet' href='/main.css')에서 href를 http://(제 아이피):8080/main.css로 바꿔도 되지가 않고... 어떻게 해야 css를 http로 요청해서 받을 수 있을까요?
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
Passport 모듈 로그인 구현관련
Passport 모듈 구현관련 다음 에러가 발생하네요... 다른곳 찾아보니 노드모듈과 패키지락제이슨을 지우고 npm install 다시하라는데 안되네요. node:internal/modules/cjs/loader:903 throw err; ^ Error: Cannot find module './Strategy' Require stack: - D:\webcoding\NodeJS_Zerocho\nodebird\node_modules\passport-kakao\dist\passport-kakao.js - D:\webcoding\NodeJS_Zerocho\nodebird\passport\kakaoStrategy.js - D:\webcoding\NodeJS_Zerocho\nodebird\passport\index.js - D:\webcoding\NodeJS_Zerocho\nodebird\app.js at Function.Module._resolveFilename (node:internal/modules/cjs/loader:900:15) at Function.Module._load (node:internal/modules/cjs/loader:745:27) at Module.require (node:internal/modules/cjs/loader:972:19) at require (node:internal/modules/cjs/helpers:88:18) at Object.<anonymous> (D:\webcoding\NodeJS_Zerocho\nodebird\node_modules\passport-kakao\dist\passport-kakao.js:6:34) at Module._compile (node:internal/modules/cjs/loader:1083:30) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1112:10) at Module.load (node:internal/modules/cjs/loader:948:32) at Function.Module._load (node:internal/modules/cjs/loader:789:14) at Module.require (node:internal/modules/cjs/loader:972:19) { code: 'MODULE_NOT_FOUND', requireStack: [ 'D:\\webcoding\\NodeJS_Zerocho\\nodebird\\node_modules\\passport-kakao\\dist\\passport-kakao.js', 'D:\\webcoding\\NodeJS_Zerocho\\nodebird\\passport\\kakaoStrategy.js', 'D:\\webcoding\\NodeJS_Zerocho\\nodebird\\passport\\index.js', 'D:\\webcoding\\NodeJS_Zerocho\\nodebird\\app.js' ] }
- 미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
카카오 로그인 관련 질문입니다!!
routes/auth.js에 위와 같이 코드를 작성하고, routes/index.js에 /auth로 연결해서 현재 URI는 /auth/kakao, /auth/kakao/callback인 상태입니다! (그리고 추가적으로 developers.kakao.com에서 필요한 설정들은 해두었습니다) ex) Redirect URI, 동의화면 ) 그리고 npm start를 한 후에 크롬에서 http://localhost:3000/auth/kakao를 요청했습니다. 그러면 이렇게 accessToken, refreshToken과 code는 URI에 담겨서 응답이 오는데 [동의화면]이 뜨지 않습니다.. (profile도 잘 응답이 오는데 캡쳐를 위해서 잠시 콘솔에서 빼놓고 캡쳐를 했습니다) 크롬에서 요청을 하면 콘솔에는 찍히지만 브라우저에는 삥삥돌아가는 표시만 나고 아무것도 뜨지 않습니다. 질문 1. [동의 화면]이 뜨지 않는 이유를 모르겠습니다,, 감사합니다!!