일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- JavaScript
- elb
- Node.js
- AWS
- MYSQL
- nginx
- java
- TypeScript
- 항해99
- 타입스크립트
- 프로그래머스
- Joi
- 생활코딩
- 조건문
- mongoose
- ubuntu
- 노마드코더
- mongodb
- 자바스크립트
- npm
- it
- https
- 메소드
- wil
- CORS
- nomadcoder
- reduce
- Nodejs
- Load Balancer
- JWT
- Today
- Total
목록개발 (77)
V-logue
기존에 사용하던 몽고db에서 my sql로 넘어가기 위해 my sql 공부를 하던 중 다음과 같은 에러가 발생했다. 구글로 위 에러를 해결하기 위해 찾아본 결과 mySQL에서 새로운 host를 생성해서 권한을 부여하면 된다는 것을 알게 됐다. 먼저 mySQL에 로그인하고, SELECT host, user FROM mysql.user;를 입력한다. 그리고 다음과 같은 방식으로 새로운 host이자 user를 생성한다. 에.. 참고로 하얀색 부분은 '비밀번호' 를 입력하는 부분이다. 개인적인 보안상 지웠다. 참고로 – @’%’ 는 어떤 클라이언트에서든 접근 가능하게 설정하는 것이고, – @’%’ 대신 @’localhost’ 로 설정한다면 내 로컬 환경에서만 접근 가능하게 만드는 것이다. 그리고 해당 유저가 D..
Node로 코드를 짜다보면 은근히 흔하게 볼 수 있는 에러의 종류인데, Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client 에러가 뜨는 원인이 내가 찾은 해답을 제외하고도 또 있을 수 있겠지만, 아마도... 주로... 구글로 찾아보니.. 서버가 클라이언트에게 둘 이상의 응답을 보내려고 할 때 뜨는 에러일 확률이 상당히 높다. router.get('/auth', authMiddleware, async(req, res) => { try { const user = res.locals.user if(user === undefined) { res.status(401).json({ errorMessage: "로그인이 ..
클론코딩 주차가 끝났다. 하고 싶은 것도 많고, 실제로 프로젝트의 완성도를 높이고는 싶었으나 주어진 시간이 짧고.. 또 너무 못했다 내가, 이메일 인증기능을 한 번 써보고 싶어서 nodemailer를 통해 임의의 숫자를 내 메일로 보내는데는 성공 했으나 그 숫자를 어떻게 사용할지에 대해서는 깊은 고민이 이어졌고, 소셜로그인 기능을 만드는데도 거의 다 왔지만 결과적으로 서비스에는 내놓지 못했기 때문에 이번주에 시도했던 것들은 모두 미완으로 남아있다. axios와 셀레니움을 통한 크롤링으로 데이터를 긁어와 db에 데이터를 집어넣는다는 발상은 좋았으나, 오픈 api가 제공되지않는 사이트에서 데이터를 가져와 필터링해 사용하는 방식은 일단 손이 많이간다는 사실을 깨닫게 됐다. 그래서 생각한 방식이, 스키마를 자세..
에... 내 경우에는 이 에러가 기존의 몽고db 아틀라스 내의 users의 데이터에는 nickName으로 키값이 설정되 있었는데, 이번에 새로운 프로젝트를 진행하면서, nickname으로 변경됐기 때문에 schema를 바꿨었는데 새로 등록되는 nickname값과 nickName값이 다르기 때문에 발생했다고 생각해서 아틀라스내의 users폴더를 날려버리고 나서 등록하니 제대로 올라갔다. return callback(new error_1.MongoServerError(res.writeErrors[0])); MongoServerError: E11000 duplicate key error collection: test.users index: nickName_1 dup key: { nickName: null } ..
* 참고로 이런 사례도 있다는거지 이게 만병통치약 해결법은 아닙니다. 오늘의 엄청난 삽질일기... Mongo db를 로컬에 연결하거나 혹은 아틀라스로 연결 했을 때 const connect = require("./models/index") connect(); 메인이되는 app.js나 server.js에 이런식으로 추가하지 않는다면, node:internal/process/promises:279 triggerUncaughtException(err, true /* fromPromise */); ^ triggerUncaughtException(err, true /* fromPromise */);라는 프로미스오류가 난다. 일단은 validation오류로 프로미스 어쩌고 저쩌고해서 내가 사용하고 있는 Joi때문인..
Helmet은 express사용시 헤더의 설정을 바꿔주면서, 드러나면 해킹에 취약하게 될 부분들을 잡아주는 그런 패키지다. 사용법은 무척 간단한데, 일단 Helmet을 설치해주고, 미들웨어를 넣어준다. 참고로, csp, expectCt, hpkp, noCache, referrerPolicy는 따로 설정을 해줘야 사용할 수 있고 app.use만으로는 돌아가지 않는다. npm install helmet app.use(helmet()); Helmet을 이용하면 HTTP 헤더를 적절히 설정하여 몇 가지 잘 알려진 웹 취약성으로부터 앱을 보호할 수 있다. 사실 Helmet은 보안 관련 HTTP 헤더를 설정하는 다음과 같은 더 작은 크기의 미들웨어 함수 9개의 모음이다. 참고로 helmet 5버전부터는 따로 설정을..
먼저, https://developers.kakao.com에 들어가 시작하기 버튼을 누르고 애플리케이션을 추가한다. 애플리케이션 추가하기 버튼을 누르면 다음과 같은 화면이 나오는데, 앱 이름과 사업자명을 입력하고 저장버튼을 누른다. 그러면 이제 다음과 같은 화면이 나오게 된다. REST API키는 따로 저장해두고, 왼쪽 카테고리를 보면 카카오 로그인이 있을 것이다. 카카오 로그인을 누르고나서, 카카오 로그인 밑에, 활성화 설정이 있는데 이 부분의 상태값을 ON으로 바꿔준다. 그리고 밑쪽의 Redirect URI를 설정해준다. Redirect URL를 설정해주고(Local환경에서 테스트 해보는거라 저렇게 했다.) 동의항목을 누른 후 프로필정보 중 닉네임을 클릭하고 . 다음과 같이 필수동의로 바꿔준다. 그다..
이번주에는 프론트분들과 협업을 진행했다. 백엔드 팀은 CURD기능을 사용해서 기본적인 기능 구현을 실현했고, 이번에 처음으로 S3도 써봤다. https://vlogue.tistory.com/65 [Node.js] Express.multer, Multer-S3 Node와 FE에서 사용자가 이미지를 올리는 방법은 여러가지가 있는데, 개인 서버에 static 폴더를 만들어서 클라이언트로부터 요청받은 파일을 저장하는 방법과 db에 저장하는 방법이 있고, 마지막 vlogue.tistory.com 프로젝트 초기에는 프론트분들의 속도와 백엔드의 속도가 일치하지 않아, 약간의 불만이 조금 올라왔으나..... 백은 3명이고 프론트는 2명인데, 그 와중에 백에서는 원래 하던 CURD를 다시 하는 샘이니.. 당연히 프론트 ..