개발이야기 33

[Git]Github로 branch만들어서 팀원들과 협업하기

1. 프로젝트 폴더에서 터미널로 git을 초기화해준다. 그리고 add, commit까지 진행한다. git init // 현재 변경사항 모두를 스테이징에 올린다. git add . // 스테이징에 올라와 있는 파일들을 commit 한다. git commit -m "커밋 메시지" 2.github에서 원격 저장소를 생성한다.아래 명령어로 로컬과 연결시킨다. 3. 업로드가 잘되었는지 확인한다. 4.dev 브랜치를 생성 후 원격저장소에 push 한다. main에다가 바로 작업하지 않고 dev에 하는 이유는 main은 배포용 브랜치이고 그전에 실질적으로 기능 개발하는 곳이 dev이다. // 브랜치를 생성후 바로 이동시킨다. git switch -c dev // 원격저장소 dev에 push한다. (github에 de..

개발이야기 2023.12.08

[TIL]32.타입스크립트 제네릭

제네릭이란??? 많은 프로그래밍 언어에서 제네릭이란 것을 채택하고 있다. 타입스크립트에서도 제네릭을 채택하고 있다. 타입을 고정적으로 선언하는 것이 아니라 유연하게 타입을 사용할 수 있게 한다. 이것은 엄청난 장점으로 작용한다. 타입이 유연하게 바뀐다는것은 컴포넌트를 재활용할 수도 있기 때문에 좋은 사용성을 가지게 된다. // 기존사용법 파라미터의 타입이 정해져있다. function whatValue(value: any) { return value; } const value = whatValue("test"); // 제너릭사용 파라미터의 타입이 정해지지 않고 실행시점에 정해진다. function genericWhatValue(value: T) { return value; } const genericRes..

개발이야기 2023.12.05

[TIL]31. 데이터베이스 트랜잭션란?

우리가 웹 애플리케이션을 만들 때 그 사이트에 대한 비즈니스 로직들이 존재한다. 이러한 비즈니스 로직들이 진행되다가 문제가 생기면 다시 오류가 난 시점으로 복구를 해야 하는데 그것을 가능케 하는 것이 트랜잭션이다. 자세히 알아보자 트랜잭션이란? 왜 사용하는데? 트랜잭션에 대해서 위키피디아에 검색을 하면 다음과 같이 설명하고 있다. "데이터베이스에서 데이터에 대한 하나의 논리적 실행단계"가 말을 보고 이해가 가지가 않아서 조금 더 검색해 보았다. 그리고 내가 이해한 대로 가장 쉽게 표현하자면 "데이터베이스에서 여러 작업단위를 하나의 작업단위로 묶어서 실행"이다. 가장 보편적인 예를 한번 들어보겠다. 내가 배달음식을 시켜 먹으려고 한다. 음식을 선택하고 결제를 완료하던 중 모종의 이유로 어플이 강제종료 되었..

개발이야기 2023.12.01

[TIL]30. SQL 제약조건

우리가 erd를 설계하고 실제 데이터베이스 테이블을 만들 때 해당 칼럼에 대하여 제약조건을 줄 수가 있다. 제약조건을 추가해서 해당 칼럼에 의도에 맞는 값이 올 수 있도록 하는 것이다. 그리고 칼럼들 간 제약사항을 관리하고 조건을 위반한 데이터를 방지, 무결성을 유지한다. 제약조건의 종류 고유 제약조건 (unique) 중복된 값을 가질수 없다. ex) 사용자 아이디, 이메일 등 null 제약조건 특정 컬럼이 아무런 값을 입려받지 않도록 설정한다. 필수적으로 필요하지 않은 데이터 not null 제약조건 특정 컬럼에 값이 무조건 입력되어야 한다. 기본키 제약조건(primary key) 고유하게 식별할수 있도록 보장한다. 외래키 제약조건(foreign key) 테이블관 연관 관계를 설정하는 조건 칼럼이 다른..

개발이야기 2023.11.29

[TIL]29. Node 환경에서 AWS S3에 이미지 업로드

이번 팀 프로젝트를 진행하던 중 영화 리뷰를 적어서 소통하는 사이트를 개발하기로 했다. 영화 리뷰를 작성할 때 사진을 넣는 기능이 필수라고 생각이 들어서 이미지 업로드 방법에 대하여 검색하였다. 내가 과거에 자바를 공부할때 진행했던 방식은 물리적인 파일을 내 프로젝트에 보관하고 모든 파일 정보를 DB에 저장을 했었다. 그러나 이런 방식은 파일 자체를 우리 서버에 보관하기 때문에 상당히 많은 리소스를 차지한다는 것을 알았고 보통 물리적인 파일과 같은 데이터들은 외부 스토리지를 이용하여 저장하고 그 경로만 DB에 저장하는 식으로 사용한다고 한다. 그래서 그 원격 스토리지인 S3에 이미지를 업로드하는 방법을 알아보겠다. 1.AWS S3 버킷 생성 버킷을 만들면 다음과 같이 나온다. 2.AWS IAM 계정 만들..

개발이야기 2023.11.29

[TIL]28. node sequelize 에서 관계 맺기

우리가 RDB를 사용하다 보면 테이블 간 관계를 맺어서 사용하는 경우가 생긴다. 이 부분을 sequelize에서 사용하려 할 때 저번 과제에서는 상당히 헤매었는데 이번 팀 프로젝트에선 강의를 참고해서 하니 금방 해결했던 것 같다. 프로젝트 진행시 ERD를 작성하고 이 ERD를 바탕으로 데이터베이스를 설계한다. Migration으로 데이터 베이스를 생성한 경우 마이그레이션 파일내 외래키로 사용할 칼럼에 다음과 같이 선언해주어야 한다. userId: { type: Sequelize.INTEGER, allowNull: false, references: { model: 'Users', key: 'id', }, }, references라는 객체 안에 참조할 모델을 명시하고 그 모델의 기본키를 명시해 준다. 그리고..

개발이야기 2023.11.23

[TIL]27.타입스크립트 Type Predicate

타입스크립에서 Type Predicate라는 개념이 있다. 다음과 같은 함수가 있다고 하자. // 왜 이렇게 사용하면 안될까?? function isNumberBool(input: any): boolean { return typeof input === "number"; } isNumberBool 함수의 리턴값을 boolean으로 선언하였다. 그냥 보면 문제가 없어보인다. 그러나 사용하면 조금 불편한 점이 생긴다. let num: any = 5; if (isNumberBool(num)) { num; // type이 any임 } num에 대한 체크후 num을 number로 사용하려고 할때 문제가 생긴다 any타입으로 되어서 또 casting이 필요하다. function isNumber(input: any)..

개발이야기 2023.11.21

[TIL]26.타입스크립트 Type,Interface

타입스크립트에선 타입을 개발자가 만들 수 있다. 크게 두 가지 방식이 있는데 Type키워드로 내가 원하는 명칭으로 타입을 선언할 수 있고 Interface도 비슷하게 타입을 선언할 수 있어서 두 개념에 대해 많이 혼동한다고 한다. Type과 Interface의 차이점에 대해 알아보자 Type으로만 할 수 있는 것 primitive 타입으로 선언할 수 있다. union 타입으로 선언할 수 있다. primitive 배열, 튜플을 선언할 수 있다. // 타입 정의하는 방법와 사용법 type MyString = string; let mystring1: MyString = "안녕하세요". // Type만의 특징 // primitive 타입 선언 type MyString = string; // union 타입선언 ..

개발이야기 2023.11.20

[TIL]25.bcrypt로 암호화를 해보자!

개인정보를 DB에 저장할 때 비밀번호 같은 중요한 정보를 그대로 저장하는 것은 상당히 위험한 행위이다. 저장 전 암호화를 해주는 bcrypt 패키지 사용법에 대해 알아보자 https://www.npmjs.com/package/bcrypt bcrypt A bcrypt library for NodeJS.. Latest version: 5.1.1, last published: 3 months ago. Start using bcrypt in your project by running `npm i bcrypt`. There are 4218 other projects in the npm registry using bcrypt. www.npmjs.com 사용법 1.npm을 이용하여 설치를 진행한다. npm insta..

개발이야기 2023.11.16

[TIL]24.Node sequelize mysql 연결 + model 정의하기

오늘은 과제를 위해 sequelize를 이용하여 mysql을 연결을 해보았다. 처음으로 하는 연결이어서 헤매는 부분이 많았다. Sequelize mysql 세팅하기 일단 sequelize가 설치되어있다는 가정하에 진행해 보겠다. 프로젝트를 생성 후 다음과 같은 명령어를 입력한다. 그럼 다음과 같은 3개의 폴더가 생성된다. seeder에 대해서는 지금 당장 사용하지 않을 것이다. npx sequelize-cli init config migrations seeder config 폴더 내에는 DB접속을 위한 config.json 파일이 생성되어있을것이다.(최초 생성은 json파일이지만 나는 ES6 모듈을 이용하여 세팅을 하여서 자바스크립트 형식으로 변경된 상태이다.) 내부에는 DB접속 정보가 있다.env로 환..

개발이야기 2023.11.15
728x90