CLI 명령어git깃에는 3가지 공간이 있다.작업 디렉토리 working dirctorytree스테이지 index저장소 repository \- 로컬 : 내 컴퓨터 \- 원격 : 인터넷, GitHubHEAD : 현재 작업중인 브랜치checkout : HEAD의 위
웹 종합반 강의 3~4주차 완강
오늘 한 일
✔️미니 프로젝트
미니 프로젝트 발표
오늘 한 일
2주차 완강, 2주차 숙제3주차 완강
4주차 완강콜백함수동기, 비동기
숙제: async, await로 리팩토링DOM클래스클로저4주차 숙제를 어제 저녁 포함 두시간 정도 고민했지만 안 풀려서 정답을 확인하고 5주차로 넘어갔다.5주차 숙제는 4주차보다 쉬웠다. 클로저라는 개념은 이해가 잘 안됐지만 그걸 사용하는 과제는 아니었던 것 같다.숙제
1주차~3주차
바닐라 JS로 구현얻어온 영화 정보를 화면에 띄우기까지 구현❗주의: innerText를 사용하면 텍스트 이외에 전부 없어진다. 사용한다면 처음에 사용해야 할 것.
영화카드 클릭 시 alert로 id값 알려주는 기능 구현받아온 영화 중에서 검색하는 기능 구현데이터를 한글로 받아오기조금씩이라도 매일 하는게 좋다.알고리즘을 공부하면 컴퓨터적 사고를 기를 수 있다.처음에는 fetch의 url부분을 변수url에 담고, 검색어에 따라 쿼리
오늘 한 일
오늘 한 일 ✔️알고리즘 세션 ✔️팀원들과 개인 과제 코드 리뷰 ✔️개인 과제 제출 ✔️execute context, closure 공부
콜백함수함수 선언문과 표현식의 차이구조 분해, 전개 구문예제 4주차,5주차 풀기함수가 다른 함수의 입력값으로 들어가서 그 함수가 원할 때 호출할 수 있다.
✔️
리뷰 삭제, 수정
전체 코드 합치기CSS 수정카카오 지도 api 추가
checkout이 정확히 뭘 하는지 몰랐는데 HEAD를 움직이는것이라는 걸 알았다. 지금까진 작업하는 디렉토리를 옮기는 것이라고만 알았다. 다른 브랜치로 checkout하는 것은 다른 브랜치로 HEAD를 옮기는 것이다. 또 브랜치도 커밋을 참조하고 있는 것이었다. HE
노드 입문 주차가 시작됐다. 27개의 강의를 듣고 개인 과제를 금요일까지 만들어야 한다.모듈을 가져올 때commonJS는 requireES6는 importES6를 쓸려면 package.json에 "type" : "module"을 입력해야 함.
📌노드 입문 강의 듣기어제 학습한 내용을 실습하느라 시간이 오래 걸려서 진도를 많이 못 나갔다.mongoDB를 설치하고 실행하는 과정에서 오류가 났다.
📌노드 입문 강의 듣기
게시글, 댓글 CRUD
비동기 작업을 수행하기 위해 비동기 함수가 호출되면 자바스크립트 엔진이 아닌 Web API에 의해 처리된다.비동기 작업이 완료되면 이벤트를 생성한다. 비동기 작업이 완료된 순서대로 이벤트 큐에 이벤트가 저장된다.이벤트 루프가 이벤트 큐에서 대기 중인 이벤트를 가져와서
AWS EC2에 대해 잘못 알고 있었다.SSH로 인스턴스에 접속하는걸 인스턴스를 켜는(빌린 컴퓨터를 켜는) 행위라고 알고 있었다.AWS console 사이트에서 인스턴스를 켰기 때문에 항상 켜져 있다.SSH를 통한 접속은 인스턴스에 레포지토리를 클론하거나 파일을 삭제하
오늘 한 일 ✅ 노드 숙련 강의 듣기
✅ 회원가입, 로그인 구현하기이 에러는 라우트 핸들러 함수 내에서 응답을 두번 보내게 되면 나온다.예외 처리 함수에서 return을 하거나 if else 문으로 해결했다.DB에 없는 닉네임으로 조회를 했는데 if(existUser) 가 자꾸 true가 되길래확인해보니
find()는 조건에 맞는 객체의 배열을 반환한다.findOne()은 조건에 맞는 객체 하나를 찾아서 반환한다.
\-attributes UserId:integer,name:string,age:integer,gender:string,profileImage:string\--name : 모델의 이름\--attributes : 모델의 컬럼, :뒤에 타입을 적는다.options : 수정할
아이디어 구상API 명세 작성ERD 작성와이어프레임 작성프로젝트 레포지토리 기본파일 세팅.gitignore (config.json 추가).prettierrcsettigs.json디렉토리 구조 설계하기커밋 컨벤션프로젝트 시작 시 올리는 기본 파일에 빠뜨린게 많아서 자주
sequelize를 설치하면 config.json 파일이 자동으로 생긴다.그 안에 데이터베이스에 접속하는 비밀번호와 다른 정보들을 입력한다.그래서 이걸 gitHub에 올리면 아무나 나의 데이터베이스에 접속할 수 있게 되기 때문에gitignore로 추적하지 않게 해야 한
오늘 한 일
오늘 한 일
오늘 한 일
오늘 한 일
트랜잭션accessToken, refreshToken트랜잭션은 DB의 상태를 바꾸는 하나의 작업 단위이다.만약 트랜잭션으로 처리되는 여러 단계중에서 에러가 나면모든 단계는 롤백된다.예 : 통장에서 돈을 차감한다와 다른 통장에 돈을 추가하는 두가지 변경은 따로 존재해선
객체지향이벤트 루프실행 컨텍스트액세스 토큰은 '인증'을 위한 토큰리프레쉬 토큰은 액세스 토큰의 '재발급'을 위한 토큰액세스 토큰의 유효 기간이 짧으면 자주 로그인을 해야 한다.하지만 리프레쉬 토큰이 만료되지 않으면 다시 로그인 하지 않고도 재발급 받을 수 있다.여전히
도메인Layered Architecture Pattern댓글 CRUD
좋아요 API좋아요 등록, 취소좋아요 누른 게시글 조회전체 게시물을 조회한다.조회한 결과를 반복문을 돌면서 postId로 각 게시물의 좋아요 개수를 받아온다.그런데 result를 console.log로 찍어보면이렇게 나온다.map 메서드 내에서 async 함수를 사용했
레이어드 아키텍처제출하고 난 후에 sequelize query에서 include를 사용하면 좋아요 개수를 한번에 조회할 수 있는걸 알게됐다.아래는 include를 사용해본 예시이다.모델의 관계설정\-> 실행된 쿼리\-> 응답받은 결과위처럼 쿼리로 하나의 모델에 다른 모
오늘 한 일 - lv5 과제 - passport로 구글 로그인 구현방법 공부
오늘 한 일 lv5 과제 프로젝트에 구글 로그인 구현해보기 OAuth 학습 후발대 강의 OAuth 2.0을 통해 서비스가 구글(리소스 서버)에 로그인하는 과정 권한 부여 방식 4가지 Authorization code Grant Implicit Grant Resour
오전, 오후를 lv5를 하는데 모두 썼다.구글 로그인 구현이 너무 느리다.일단 따라하면서 익숙해지자.구글에 로그인기능 허용구글에서 (사실은 인증서버에서?) 인증 코드 발급사용자를 콜백 URL로 보내서 클라이언트가 인증 코드를 알게 됨.클라이언트 id, secret, 인
lv4 과제 피드백을 확인하고 lv5에 적용했다.comments와 likes API의 URL을 /posts로 시작하게 했다. 댓글과 좋아요는 게시글에 종속적이기 때문이다. 게시글이 있어야 댓글과 좋아요가 있을 수 있기 때문.게시글과 1:N관계를 갖고 있는 댓글을 joi
ERD, API명세, 와이어프레임prettierrc, gitignore, 라우트파일마이그레이션, 모델레포지토리 클론 후 API 개발 시작실무에서 제품이 만들어지는 과정, 직군의 역할펫 시터 매칭 서비스와 음식 배달 서비스 중에서 후자를 선택했다.ERD를 만들면서 이전
오늘 한 일 백오피스 프로젝트
오늘 한 일
오늘 한 일
오늘 한 일 백오피스 프로젝트
백오피스 프로젝트 발표
오늘 한 일 발제 키오스크 과제 4기 수료생 Q&A
customer 테이블의 모든 내용을 조회menu테이블에서 id가 4번인 메뉴의 이름을 “이베리코 양념모듬” 으로 업데이트food_category 테이블에서 “간편식” 카테고리를 추가seller (판매자) 테이블에서 email과 reg_num만 조회하기menu(메뉴)의
발주 상태 수정상품 주문 (미완성)삭제되지 않은 order_review의 모든 내용과 리뷰를 작성한 메뉴의 이름을 조회❌ is_deleted = null✅ is_deleted = 0정답order(주문) 주문한 고객의 이름과 주문 메뉴 이름, 주문 메뉴의 가격, 주문 메
오늘 한 일
오늘 한 일 키오스크 과제 SQL 복습
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce키오스크 프로젝트에서 상품 주문 API를 수정하고 있었다.주문에는 여러 item(상품)\_id 가
오늘 한 일 타입스크립트 강의 듣기 SQL 실습 ID가 3번인 고객의 이름과, 이메일 그리고 즐겨찾기한 메뉴 이름을 출력하는 목록의 2페이지 내용을 모두 출력하시오(단, 페이징 처리를 해야하고 1페이지당 10개의 목록을 가져온다고 가정합니다, 또한 메뉴이름을 오름차순
lodash 설치 명령어tsconfig.json 속성 추가 "esModuleInterop": true 추가 ES6 모듈 사양을 준수하여 CommonJS 모듈을 가져올 수 있게 합니다. Delete ␍ eslint (prettier/prettier) 에러가 날 경우
Soft Delete는 논리 삭제라고도 부른다.실제 DB에서의 작업은 update와 같다. 삭제 여부를 저장하는 컬럼을 업데이트하는 것이다.Typeorm으로는 @DeletedDateColumn() 데코레이터를 써서 soft delete를 구현할 수 있다.1\. 엔티티에
간단해서 서브용 DB레디스1차적으로 램에 저장(빠르니까)( 하드에 백업은 해둠)메인DB에서 자주쓰는걸 redis에 복사해두어서 빠르게 조회가 가능하다자주쓰는 데이터 캐싱영상 스트리밍로그인 기록 저장채팅을 위한 pub/sub표, 엑셀 형식정규화데이터 중복이 싫어서 테이블
MVC란? model, view, controller의 약자이다. 이 패턴을 지키면서 코드를 작성하면 책임이 분리되어 코드의 유지보수가 쉬워진다. m: model 데이터와 비즈니스 로직을 처리하는 부분이다. v: view UI, 사용자에게 보여지는 부분이다. c:
이상현상(Anormaly) 데이터 중복으로 인해 삽입, 삭제, 갱신 시 발생하는 예기치 못한 현상 삽입 이상(Insertion Anomaly), 삭제 이상(Deletion Anomaly), 갱신 이상(Update Anomaly)이 있다. RDBMS에서 정규화는 데이터
localhost:3000/api 접속시SwaggerModule이 자동으로 모든 엔드포인트를 가져온다.아래같은 @ApiResponse decorator를 상속하는 API response decorator들과 다른 데코레이터들을DTO, 컨트롤러, 메서드 앞에 붙여주면
CORS(Cross-Origin Resource Sharing)는 웹 페이지들이 보안 정책인 SOP(Same-Origin Policy)로 인해 제약을 받는 문제를 해결하기 위해 도입된 기술이다.SOP는 웹 페이지 자원들이 같은 출처에서만 접근을 허용하는 원칙이다. 즉,
전체 조회where절만 옵션을 줄때는 findBy로 where생략이 가능하다.검색어로 조회정렬, 선택, 조인order : 정렬select : 조회할 컬럼 선택relations : 외래키로 연결된 테이블 중 조인할 테이블 선택엔티티에 eager:true라는 옵션을 주면
프로세스 생명주기(process lifecycle)는 컴퓨터 시스템에서 프로세스가 생성되고 실행되며 종료되는 과정을 나타냅니다. 프로세스 생명주기에는 일반적으로 다음과 같은 단계가 포함됩니다:: 프로세스가 생성되는 단계입니다. 이 단계에서 운영 체제는 필요한 자원을 할
TCP (Transmission Control Protocol)와 UDP (User Datagram Protocol)는 인터넷 프로토콜 스위트의 핵심 프로토콜 중 두 가지입니다. 이들은 컴퓨터 네트워크에서 데이터를 전송하는 방법을 정의합니다.: TCP는 연결 지향적인
쓰레드 풀은 프로그램 내에서 여러개의 작업을 동시에 처리할 수 있게 한다.쓰레드 풀(thread pool)은 프로그램이 동시에 여러 작업을 수행할 수 있게 하는 방법 중 하나입니다. 쓰레드 풀은 미리 생성된 쓰레드의 집합으로, 이들 쓰레드는 요청된 작업을 처리합니다.일
DI(Dependency Injection)와 IoC(Inversion of Control)를 사용하는 주요 이유는 코드의 결합도를 낮추고, 유지보수성과 테스트 용이성을 향상시키기 위함입니다. 이 두 가지 패턴을 적용하면 다음과 같은 이점들을 얻을 수 있습니다
s3에 이미지 파일을 업로드하고 반환받은 데이터에서 URL을 DB에 저장할 것이다.사용자가 이미지를 업로드한다.프론트에서 이미지를 formData에 담는다.서버에서 이미지를 s3에 업로드한다.업로드 후 반환 데이터 안에서 URL에 접근해 DB에 저장한다.type이 fi
@nestjs/platform-socket.io@nestjs/websocketssocket.iosocket.iows나의 요구에 맞는 것을 선택하라고 하는데, 나의 요구가 뭔지 아직 모르고 둘이 어떻게 다른지도 모르겠다.chat.gateway.ts 를 만들라고 한다.웹소
nest.js 서버에 request가 들어오고 response가 나가는 과정을 알아보자. 지금까지 미들웨어, 가드, 컨트롤러, 파이프, 예외필터를 사용해보았지만 어떤 순서로 돌아가는지 완벽하게는 알지 못했다. 요청이 미들웨어를 거친다. 미들웨어를 지나고부터 예외필터
nest.js에서 데이터를 생성하려할 때 이런 에러가 떴다.이 호출과 일치하는 오버로드가 없습니다.오버로드 1/3('(entityLikeArray: DeepPartial\[]): EasyPassword\[]')에 다음 오류가 발생했습니다.'{ bankAccountNum
사용할 OS 선택, 무료로 사용하려면 프리 티어 선택우분투 22.x 버전은 최신버전이어서 자동배포 툴인 codeDeploy가 제대로 동작하지 않을 수 있다여기서 .pem 확장자의 키페어 파일이 저장됨. 인스턴스에 연결할때 사용된다.위치 무관 대신 내 IP로 바꾸면 S
nest.js 프로젝트를 만들면서 소셜 로그인을 구현해보았다.소셜 로그인은 이미 가입하고 있는 소셜 미디어 계정(예: 페이스북, 구글, 트위터 등)을 이용해 로그인하는 방식이다. 사용자가 구글 계정으로 로그인할때 1\. 구글 이메일로 가입된 계정이 있다면 로그인
구글에서 profile, email, name등의 정보를 받아오는데 성공했다.이제 토큰을 발급할 차례이다. 먼저 구글 이메일로 유저를 조회하고 이메일로 가입된 유저가 존재하면 토큰을 발급하여 로그인시키고, 없다면 회원가입을 시킨 후에 토큰을 발급할 것이다.이전 게시글에
EC2에 접속할 때마다 ssh -i {키 페어 파일} {ubuntu}@{탄력적 IP}를 입력하는 것은 번거롭다.호스트를 등록하여 간편하게 접속하는 방법을 알아보자..ssh는 사용자의 홈 디렉토리에 있는 숨겨진 디렉토리입니다. 이 디렉토리는 Secure Shell(SSH