분류 전체보기 90

[항해 14기] 개발일지22 (Node.js 4lv 과제)

4레벨 리뷰 1. 과제 요구 사항 1) ERD 작성 2) 댓글 추가 3) 좋아요 기능 추가 2. 구상 - 3레벨과 동일하게 댓글부분 mongoose -> sequelize로교체 - 좋아요 테이블 추가, 좋아요 라우터 추가 - 게시글 테이블에 좋아요 추가 - 유저가 좋아요를 누를 시 좋아요 테이블에 값추가, 취소시 값 삭제 - 좋아요 on/off 시 게시글 테이블의 좋아요 수 변경 3. 구현 1) ERD 2) Directory Structure 3) 댓글 기능 추가 - 3레벨에 작성했던 댓글 기능 재활용, 문법만 교체 4) 좋아요 기능 추가 - like 라우터, 모델, 테이블 추가, post테이블에 likes 추가 - like테이블에 userid와 postid 저장 및 참조 - 좋아요 on off는 테이블..

[항해 14기] 개발일지21 (Node.js 3lv 과제)

3레벨 리뷰 1. 과제 요구 사항 1) MySQL 사용 - 2레벨 과제의 MongoDB를 MySQL로 변경 - mongoose를 sequelize로 변경 2) ERD 작성 2. 구상 - API 명세서대로 진행 - 몽구스/몽고디비 부분 전부 mysql/시퀄라이즈로 교체 3. 구현 1) ERD - Users와 Posts는 1:N관계 - userid를 Users에서 참조 2) Directory Structure 3) MySQL 교체 - 몽구스crud를 시퀄라이즈crud로 교체 - 연결 db를 mysql로 교체 - 몽구스 스키마 mysql model로 교체 - migration 적용 4. 리뷰 1) 3lv - SQL의 개념과 쿼리 명령어를 익힘 - MySQL 사용법을 익힘 - sequelize 사용법을 익힘 2..

[항해 14기] 개발일지20 (Sequelize, Migration)

Node.js 숙련 1. Sequelize 1) 구성 - migration과 model - migration은 Sequelie CLI를 이용하여 MySQL에 테이블을 생성하기 위해 사용 - model은 table과 column의 속성값을 설정하고 MySql과 Express를 연결 시킴 2) 사용 방식 - 테이블 모델 생성: npx sequelize model:generate --name Posts --attributes title:string,content:string,password:string - model이 생성되고, model을 Sequelize시킨 migration 파일 생성(model의 시퀄라이즈 적용 결과 데이터) - 이후 npx sequelize db:migrate를 진행하면 위의 사항들이..

[항해 14기] 개발일지19 (SQL, Sequelize)

Node.js 숙련 1. SQL 1) 개요 - vscode my sql익스텐션에서 쿼리명령어로 진행가능 - db : 테이블/컬럼으로 구성 (고도화된 엑셀 개념) 2) 쿼리 명령어 - 테이블 생성 - 데이터 삽입 - 데이터 조회 3) 제약조건 - 컬럼들간의 제한사항을 관리하고, 조건을 위반하는 데이터를 방지하여 데이터베이스의 완전성을 보장하는 규칙 - 데이터가 결함없이 완벽한 상태인 무결성(Integrity)을 지키기 위해 만들어진 개념 - 테이블을 분석할 때 설정된 컬럼 속성들을 바탕으로 해당 테이블이 어떤 역할을 하는지 명확하게 인지 가능 4) 제약조건 종류 - 테이블 데이터의 고유성을 보장하는(Primary Key) - 빈 값을 허용하지 않는 조건(Null) - 특정 컬럼이 중복된 키를 가질 수 없는..

[항해 14기] 개발일지18 (쿠키/세션, JWT, RDS)

node.js 숙련 1. 쿠키/세션 1) cookie - 브라우저가 서버 응답으로 Set-Cookie 헤더를 받은 경우 해당 데이터를 저장한 뒤 모든 요청에 포함하여 보냄 - 데이터를 여러 사이트에 공유할 수 있기 때문에 보안에 취약 - 쿠키는 `userId=user-1321;userName=sparta` 와 같이 문자열 형식으로 존재하며 쿠키 간에는 세미콜론`(;)` 으로 구분 2) session - 쿠키를 기반으로 구성된 기술 - 클라이언트가 언제나 데이터를 확인 할 수 있던 쿠키와는 다르게 세션은 데이터를 서버에만 저장하기 때문에 보안성이 좋음 - 사용자가 많은 경우 서버에 저장해야 할 데이터가 많아져서 서버 컴퓨터가 감당하지 못하는 문제 발생 - cookie-parser : 요청된 쿠키를 req...

[항해 14기] 개발일지17 (Node.js 1LV 과제, 2LV 과제)

2레벨 리뷰(1레벨 포함) 1. 과제 요구 사항 1) 개요 - express, 몽고디비, jwt, 쿠키파서 이용 - 게시판 게시글/댓글 CRUD 구현, 예외처리, 로그인/회원가입 구현 2) 로그인/회원가입 API - 닉네임 조건, 비밀번호 조건, 예외처리, req조건 - jwt,와 cookie이용 3) 게시글 CRUD - 특정 조건으로 조회, 상세 조회 구현 - 작성/수정/삭제 시 상요자 인증진행, 예외처리 4) 댓글 CRUD - 게시글과 동일 2. 구상 - API 명세서대로 진행 - 게시글이 지워질 경우 소속된 댓글도 삭제하는 기능 추가 3. 구현 1) Directory Structure 2) 스키마 - user : 닉네임과 패스워드, 닉네입은 유니크값 지정 - index : 생략 - post : 명세..

[항해 14기] 개발일지16 (Git, EC2)

Git, AWS - EC2 1. Git 1) git - 체계적인 개발과 프로그램의 배포를 도와주는 형상 관리 도구, 또는 버전 관리 시스템 2) 형상 관리 도구 - 프로젝트의 개발 단계에서 소스 코드의 버전을 효과적으로 관리하기 위함 - 같은 파일을 여러명이서 동시에 작업할 수 있음 3) repository - 모든 파일의 변경 사항을 저장할 수 있는 저장소 - Local Repository : local저장소 - Remote Repository: GitHub와 같이 Git 서버에서 제공되는 Repository 4) commit - 이전 변경사항 기준으로 새로 변경된 내용을 기록하는 단위 5) branch - 공동 작업시 충돌 방지를 위한 시스템 6) git ignore 자동 생성 사이트 https://..

[항해 14기] 개발일지15 (몽고디비, npm 명령어)

몽고디비, npm 세팅 명령어 1. DB 1) DB - 데이터를 저장하고 잘 찾기 위해 만들어진 소프트웨어(Database Management System(DBMS)) - DBMS가 설치된 서버 컴퓨터를 DB 서버라고 부름 - 데이터베이스에 저장한다는 것은 DBMS가 설치된 서버에 데이터를 저장한다는 것 2) Relational Database(RDB) - 데이터 형식이 정해져 있고, 데이터 끼리 관계를 맺어 모순이 없는 데이터(무결성과 정합성이 높은 데이터)를 유지하는 것에 집중 3) Non-relational Database (NoSQL) - 관계형 데이터베이스에 속하지 않는 모든 데이터베이스 - 데이터의 형태가 고정되어 있지 않고 유연하게 확장할 수 있지만, 그만큼 관리에 신경을 써야됨 2. 몽고디..

[항해 14기] 개발일지14 (Node.js 입문)

Node.js 입문 1. 익스프레스 - Express.js는 Node.js로 서버를 빠르고 간편하게 만들 수 있게 도와주는 웹 프레임워크 - Express.js 이외에 다양한 웹 프레임워크가 존재하지만 가장 많이 사용됨(Nest.js도 많이 씀) - Express.js는 웹서버 자체가 아닌 Node.js를 위한 웹 프레임워크, 웹 서버를 구현하기 위해 사용 되는 것. - npm init, npm i express 이후 app.js 예시 2. Route 1) Routing - Routing은 클라이언트의 요청 조건(메서드, 주소 등)에 대응해 응답하는 방식 2) Router - 클라이언트의 요청을 쉽게 처리 할 수 있게 도와주는 Express.js 기본 기능중 하나 - 라우터 구조 3. Module 1) ..

[항해 14기] 개발일지13 (Node.js 입문)

Node.js 입문 1. 에러 핸들링 1) 개요 - 에러를 관리하는 방법, 예상치 못한 상황에 대처하는 방식 - 에러는 예상할 수 있는 에러와 예상치 못한 에러로 구분 가능, 일반적인 어플리케이션을 설계할 때는 예상치 못한 에러 상황이 더욱 많이 일어날 것으로 가정해야함 - 프로그래머가 작성한 코드에서 예상치 못한 에러가 일어날 가능성은 언제나 존재 2) try/catch - 예외 처리 방식, 일반적으로 try/catch문을 사용 - 에러가 발생하더라도 프로그램이 멈추지 않고 에러를 기록할 수 있음 3) throw - 고의적으로 에러를 발생시켜야 할 경우 - ex) 은행 어플리케이션의 현금 인출 서비스를 만든다고 할 때, 계좌의 잔고가 요청받은 금액보다 적다면 현금 인출을 막고 예외를 발생시켜야함 - t..