일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- typescript
- Django
- 트랜잭션
- pm2
- javascript
- nodeJS
- on_delete
- 스코프
- crud2
- TypeError: this.boardRepository.createBoard is not a function
- JWT
- rebase
- 실행 컨텍스트
- OSI7계층
- 호이스팅
- status code
- wecode
- 자바스크립트
- manytomanyfield
- django westagram
- async/await
- 장고초기세팅
- westagram
- bcrypt
- node
- docker
- Jest
- CORS
- 프로미스
- 노드
- Today
- Total
목록학습/Node.js (22)
될때까지
노드관련 자료들을 찾다보면, 어떤 사람은 npx를 사용하라 또 어떤 강의에서는 npm을 사용하라그러네? 비슷하게 생겼는데 이 둘의 차이점이 무엇이고 💎 NPM node package manager NodeJS설치하면 따라서 설치된다. npm install을 실행하면 package.json이 생성되고 여기에 의존성을 지정함으로써 패키지를 관리한다. 지역설치(local) : 해당 프로젝트 내에서만 사용 가능 전역설치(global) : 모든 프로젝트에서 공통으로 사용 가능(자주 사용되는 패키지 or 변경이 없는 패키지) 패키지를 관리하지만, 바로 패키지를 실행시킬 순 없다. package.json파일안의 Scripts를 통해서 설치된 패키지들을 실행시킨다. 단점 npm으로 설치한 모듈들은 업데이트 시기를 매번..
1. KaKao Developers에서 등록하기 https://developers.kakao.com/에서 시작하기 버튼 눌러서 개발자 계정 가입 후, 맨 위 오른쪽의 '내 어플리케이션' 클릭 애플리케이션 추가하기를 누르고, 앱 이름과 사업자명을 입력한다. 생성한 앱 이름을 선택하면, 앱키가 자동 발급된다. 여기서 REST API키는 환경변수로 등록할 예정! 그다음에는 플랫폼으로 이동해서 Web 플랫폼 등록을 누르고 사이트 도메인을 입력한다. 그러면 Web하단에 Redirect URI를 등록하라고 한다. 등록해준다. 카카오 서버에서 어느 주소로 REST API GET요청을 보내줄까? 적는 곳이라고 생각하자. 주소 뒤에 /auth/kakao/callback이라고 적어주자. 나는 포스트맨으로 테스트할 예정이기..
😭 intro 우왕 머리 뽀개질거같다 ^^ 원래 이런가? 장고로 구현할때는 기본 개념이 머리에 안잡혀서 일주일 걸렸는데.. 개념을 이해했는데 왜 하루만에 끝내지 못하는거지 소셜로그인 어제 도전했다가 다른 사람 코드보고 어우 왜이렇게 왔다갔다해 못하겠다싶어서 포기했는데 어제 밤에 계속 구글링해보니까 하면 할 수 있을 것 같기도 하고..? 그래서 열심히 깨작깨작 여러가지 레포 참고해보면서 작성했는데 포스트맨 통신은 왜 안돼크아아아아아악!!!!! 웹사이트에서 테스트도 계속 삥삥 돌고 왜구래 우아아아아아악!!!!!! 후 - 침. 착. 해. 침. 착. 해. 카카오 소셜 로그인 진행 과정은 아래와 같다. 카카오 인가 코드 받기 (GET /oauth/authorize) redirect url로 인가코드 전달받기 카카..
🐯 intro 오늘은 로그인 기능을 구현했다. 카카오 소셜 로그인 기능도 구현하고 싶었는데 자바스크립트 문법도 모르니까 참고한 블로그들의 코드들이 이해가 안간다. 해당 개념 Oauth도 다시 공부하면서 진행해야겠다. DB에 저장된 아이디인지 검사 아이디가 일치하는 유저의 비밀번호인지 검사 (bcrypt.compare) 모두 일치하면 access token, refresh token 발급 소셜로그인은 조금 더 개념 및 논리를 공부한 다음에, 내일 재도전..!!! 딱 기다려 🐯 쿠키, 세션, 토큰 Stateless한 프로토콜(HTTP)을 stateful한 서비스로 구현하기 위해 사용된다. 매 요청마다 로그인하라 한다면 너무 성가시다. 따라서 누가 로그인 중인지 상태를 기억하기 위해 쿠키,세션,토큰을 사용한..
🌸 intro 오늘은 회원가입을 구현했다. 이메일 양식 검증 비밀번호 양식 검증 이메일 중복 => 409 에러 비밀번호 암호화 => bcrypt사용 관심사 분리 원칙 + mvc패턴 적용 router -> controller -> service -> model 순으로 간다. router : url을 기능과 연결해주는 부분 controller : 사용자의 요청을 받아 서비스로 전달하고 응답을 받아 프론트로 전달한다. 프론트와 백을 연결하는 어댑터역할 service : 컨트롤러에서 넘어온 데이터를 검증하는 비즈니스 로직을 작성하고 모델로 넘겨준다. model : DB와 연결해서 CRUD하기 위한 로직을 구현하고 컨트롤러에게 전달한다. 맡은 기능만 구현해야한다. 모델에서 요청을 처리하거나 컨트롤러에서 비즈니스 ..
💗 Intro 오늘부터 다시 개발 공부를 시작했다. 추석 잘쉬었으니까... 내년 추석때는 명절 상여금에 명절 뽀너스로 올해보다 풍족했음 좋겠다😄 아침 일찍 일어나서 하루를 시작했지만 진짜 뻥안치고 이력서 쓰는데 하루를 다 할애했다. 진짜 이력서 작성 너무 어렵다 ^^ 오전 10시에 시작했는데 오후 6시가 지나서야 이력서 작성을 완료했다. 그래도 오늘은 이력서 작성하고, 인성 면접이라고 해야하나 왜 개발자가 되고 싶어, 어떤 개발자가 되고 싶어와 같은 면접에 대비하기 위해 회고록도 작성하고 나니까 취준이 실감난다. 근데 뭐.. 뭐라고 해야하나 원초적인 질문?들은 지어내야한다던데 그게 너무 어렵다. 날 소개하고 싶지 자소설을 작성하고 싶지 않은데 말야.정말 저는 재미있어요. 흥미 있어요.. 꾸준히 잘 할 수..
예외(exception) : 처리하지 못한 에러 노드 스레드를 멈춘다. 노드는 기본적으로 싱글스레드라 스레드가 멈춘다는 것은 프로세스가 멈추는 것을 의미한다. 에러 처리는 필수다! 기본적으로 try catch문으로 예외를 처리한다. 에러가 발생할만한 곳을 try catch로 감싼다. 노드 비동기 메서드의 콜백에러는 따로 처리하지 않아도 된다. 콜백 함수에서 에러 객체를 제공하기 때문이다. const fs = require('fs'); setInterval(() => { fs.unlink('./abcd.js', (err) => { if(err) { console.error(err); } }) }, 1000); 프로미스의 에러는 현재 catch를 안붙여도 프로세스가 멈추지 않지만 경고를 준다. 왠만하면 ca..
버퍼와 스트림 버퍼 : 일정한 크기로 모아두는 데이터 일정한 크기가 되면 한 번에 처리 버퍼링 : 버퍼에 데이터가 찰 때까지 모으는 작업 버퍼의 단점 : 용량이 100MB인 파일이라면 읽을때에도 메모리에 100MB의 버퍼를 만들어야한다. 이때 서버같이 여러명이 이용하는 환경에서는 메모리문제가 발생할 수 있음. 그리고 모든 내용의 버퍼를 다 쓴 후에야 다음 동작으로 넘어가기때문에 동작이 느리다. 스트림 : 데이터의 흐름 일정한 크기로 나눠서 여러번에 걸쳐서 처리 버퍼(또는 청크)의 크기를 작게 만들어서 주기적으로 데이터를 전달 스트리밍 : 일정한 크기의 데이터를 지속적으로 전달하는 작업 const fs = require("fs"); const readStream = fs.createReadStream('...
fs 파일 시스템에 접근하는 모듈 파일/폴더 생성, 삭제, 읽기, 쓰기 가능 웹 브라우저에서는 제한적이었으나 노드는 권한을 가지고 있음 파일 읽기 const fs = require("fs"); fs.readFile('./readme.txt', (err, data) => { if (err) { throw err; } console.log(data); // 2진법을 16진법으로 바꾼 출력 // buffer는 0,1과 같은 컴퓨터가 다루는 언어라고 생각하기 => 사람이 읽는 언어로 변화시키려면 toString해줘야함 console.log(data.toString()); }) 콜백말고 프로미스를 사용하면 코드를 조금 더 간략하게 작성할 수 있다. const fs = require("fs").promises; f..
단방향 암호화(crypto) 암호화 : 평문을 암호로 만든다 복호화 : 암호를 평문으로 만든다. : 암호화는 가능하지만 복호화는 불가능하다. : 단방향 암호화의 대표 주자는 해시 기법이다. 해시 : 문자열을 고정된 길이의 다른 문자열로 바꾸는 방식 Hash 사용하기(sha512) createHash(알고리즘) : 사용할 해시 알고리즘을 넣어준다. md5, sha1, sha256, sha512등이 가능하지만 md5와 sha1은 이미 취약점이 발견됐다. 현재는 sha512정도로 충분하지만 나중에는 더 강화된 알고리즘이 필요할 수도 있다. update(문자열) : 변환할 문자열을 넣어준다. digest(인코딩) : 인코딩할 알고리즘을 넣는다. base64, hex, latin1이 주로 사용되는데 base64가..