Skip to content

TAETAEHO/TIL

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TIL

  • 매일 학습한 것을 기록하기 위함.

링크

  • 알고리즘

    • 알고리즘

      2021.09.10 : sort()
      • sort((a, b) => a-b)
        • 반환값이 0보다 작으면 a를 b보다 앞에 위치시킨다.
      2021.09.11 : robotPath
      • robotPath
        • Y좌표 = DIR[i][0], X좌표 = DIR[i][1]
        • queue 이용
  • 프로젝트

    • MunjiOut (Codestates First Project)

    • M4M (Codestates Final Project)

      2021.09.14 : 특정 문자열 선택
      • 특정문자열 선택

        • 전체선택 : ctrl + shift + l
        • 선택 : ctrl + d
        • sequelize
          • 들어가는 값을 고유한 id값과 동일하게 맞추고 싶을 때
          • 테이블.findAll({order: [["createdAt", "DESC"]],});
      2021.09.15 : csv파일 bulk insert
      • csv 파일 mysql에 insert 하는 방법
      2021.09.27 : git pull 취소
      • git pull 취소
        • git reset --hard ORIG_HEAD
      • 해당되는 모든 occurence 변경
        • .replace(/[해당되는 것]/g, '변경하고자 하는 것')
      2021.09.28 : git fetch
      • git fetch
        • Remote Repository에 branch 내용을 Local Repository에 가져온다. (자동병합 x)
      2021.09.29 : 배포환경에서 flat() 에러 핸들링
      • A cross-origin error was thrown. React doesn't have access ~ 에러
        • JSON.parse()로 데이터를 받아오면 JSON.stringify() 해줘야한다
      • arr.flat()과 같은 개념
        • arr.reduce((acc, val) => acc.concat(val), []);
      2021.09.30 : cloudfront accessdenied 에러 핸들링
      2021.10.1 : cloudfront 배포 자동화 에러 핸들링
      • AWS CloudFront를 사용하여 배포 자동화를 진행할 경우 수정사항이 적용되지 않은 문제
        • CloudFront의 캐시 정책을 수정한다
          • S3 권장 옵션(CachingOptimized)를 사용하게 되면 24시간이 지나야 수정사항이 반영된다. 이를 disabled로 설정하면 바로 적용된다.
      • Nodemailer
      • ejs
      2021.10.2 : HTTPS 적용
      • HTTPS 적용
        • 커스텀 도메인을 이용하는 경우 S3, EC2 모두 커스텀 도메인으로 연결해줘야한다.
      2021.10.6 : window.location.replace
      • window.location.replace('경로')
        • 기존 페이지를 새로운 페이지로 변경시킨다. (새로고침)
      2021.10.9 : node mailer 에러 핸들링
      • Node mailer를 통해 메일 전송 구현 시 메일이 2번 가는 현상
        • mail option이라는 변수를 만들어서 sendMail 메서드에 담아 보냈다.
      2021.10.10 : flat() -> reduce
      • arr.flat()과 같은 개념
        • const flattened = arr => [].concat(...arr);
    • Ha_Za (with TypeScript, Prisma, Graphql)

      2021.10.27 : prisma 세팅(관계 설정, migrate)
      2021.10.28 : schema.prisma, React/Graphql/Prisma로 회원가입 구현, Graphql resolver
  • 타입스크립트

  • 기타

    2021 학습
    2021.10.14 : raw query vs orm
    • raw query vs orm

      • orm은 query를 작성하지 않아도 데이터 추가 / 삭제 / 수정가능
      • 특정 DB에 한정되지 않기 떄문에 migration이 자유롭다
      • 성능을 요구하는 raw query가 필요하지 않은 경우 orm을 사용하는게 좋다(사견)
    2021.10.16 : cors란, node.js기반 웹 서비스에서 설정 방법
    • cors란 무엇이고 Node.js기반 웹 서비스에서 어떻게 설정하는지
      • same origin이 아닌 cross origin에 대해서 리소스를 요청하는 것.
      • spa, 고도화 어플리케이션 등장으로 서버 뿐만 아니라 여러 곳의 리소스를 활용하기 위한 목적
      • 응답헤더에 Access-Control-Allow-Origin을 사용하여 허용하고자 하는 도메인 또는 포트를 추가할 수 있다. *를 사용하여 전체 도메인에 대해 허용할 수 있다.
      • cors 확장 라이브러리를 사용해서 설정할 수 있다.
    2021.10.18 : node.js에서 비동기의 개념
    • Node.js에서 비동기의 개념
      • node는 비동기 IO를 지원하며 Single Thread 기반으로 동작하는 서버이다.
      • node는 비동기 처리를 이벤트 방식으로 처리한다.
      • 클라이언트측의 요청을 비동기로 처리하기 위해 요청을 서버 내부에 메시지 형태로 전달한다.
      • 서버 내부에서 이 메시지를 이벤트 루프가 처리하게 된다.
      • 이벤트 루프가 처리하는 도중 제어권은 다음 요청에게 넘어가며 이전 요청이 완료됐을 경우 콜백 함수를 호출하여 처리완료를 호출측에 전달한다.
    2021.10.19 : 객체지향 3대 특징
    • 캡슐화 : 객체의 속성, 메서드를 하나로 묶음
    • 상속 : 기존 클래스 재사용
    • 다형성
      • 오버로딩 : 같은 이름의 메서드를 여러 개 정의하고 다양하게 호출해서 사용.
      • 오버라이딩 : 상위 클래스의 메서드도 하위 클래스에 상속되어 사용할 수 있다.
    2021.10.20 : 클러스터, 넌 클러스터
    • 클러스터 인덱스
      • 데이터가 정렬되어 있는 상태로 디스크에 저장
      • 검색 속도 빠르지만 update/delete/insert 느림
    • 넌 클러스터 인덱스
      • 데이터가 정렬되어 있지 않은 상태로 디스크에 저장
      • 테이블당 여러개 생성 가능
    2021.10.21 : node의 장, 단점
    • 장점
      • React, Vue 등 스크립트 언어 기반으로 프론트엔드가 개발되었다면 node도 스크립트 기반 언어로 개발하기 때문에 유지보수가 쉬워진다.
      • 규모가 작은 프로젝트에서 싱글 스레드 기반으로 하기 때문에 퍼포먼스 향상이 있다.
    • 단점
      • 출시된지 얼마 되지 않았기 때문에 Java, PHP 등과 같은 신뢰도 문제(현업 개발자님 의견)
      • 싱글 스레드 기반이기 때문에 대규모 프로젝트와 현업에서 사용하는 서비스를 감당하기 버거울 수 있다.
    2021.10.22 : 개발 방법론
    • 폭포수 모델(waterfall)
      • 선형 순차적 모델
      • 이전 단계 수행 완료 시 까지 다음 단계를 수행할 수 없으므로 규모가 큰 프로젝트나 고객의 요구사항이 자주 변경되는 프로젝트에 부적합
    • 애자일
      • 일정한 주기로 프로토타입을 만들어 고객의 요구사항이 있을때마다 반영하는 방식
      • 스크럼 : Sprint 중심, 매일 정해진 장소 정해진 시간에 팀 단위 개발
    2021.10.23 : sequelize.define
    • const users = sequelize.define('user', { name : { type : DataTypes.STRING, allowNull : false } }, {timestamps : false})
    2021.10.24 : tsconfig.json
    • npm install -D typescript nodemon ts-node
    • npx tsc -init
    2021.11.2 : react-addons-update
    • npm install react-addons-update
    • 참고자료 : https://velopert.com/1015
      • 원소 제거하기 : $splice
      • 원소 수정하기 : $set
    2021.11.3 : toISOString
    • toISOString() 메서드는 단순화한 확장 ISO 형식(ISO 8601)의 문자열을 반환
    2021.11.5 : Spread syntax
    • ex -> return {...obj, something}
      • something이 이미 있을 경우 대체해줌
    2021.11.8 : Mocha vs Jest
    2021.11.9 : toLocaleString
    2021.11.18 : Redux
    2021.11.20 : Java - abstract, interface
    2021.11.23 : dom-to-image
    2021.11.24 : SQL - replace into vs insert into
    2021.11.25 : react life cycle
    2021.12.04 : componentWillReceiveProps(newProps)
    2021.12.05 : Bitbucket에서 git clone하기(app password)
    2021.12.15 : MySQL NULL 처리
    2021.12.19 : 이벤트 루프, 태스크 큐, 호출 스택
    • 이벤트 루프
      • 이벤트 발생 시 호출할 콜백함수를 관리
      • 호출할 콜백함수의 순서를 결정한다.
    • 태스크 큐
      • 이벤트 발생 후 호출되어야 할 콜백함수들이 기다리는 공간
    • 호출 스택
      • 현재 어떤 함수가 실행되고 있는지, 함수내에 어떤 함수가 동작하고 있는지 등을 제어한다.
    2021.12.21 : react-csv
    • csv파일로 내려받을 수 있는 모듈
    • import { CSVLink } from "react-csv";
      
      <CSVLink
        header={header}
        data={data}
        filename={"file.csv"}
        className="btn btn-primary"
        target="_blank"
      >
        csv파일 내려받기
      </CSVLink>;
    2021.12.25 : rest api PUT vs PATCH
    • PUT : 요청 시에 변경되지 않는 데이터가 같이 보낸다. 보내지 않은 데이터는 null 처리
    • PATCH : 요청 시에 변경되지 않는 데이터를 보내지 않아도 null 처리 되지 않는다. 변경할 데이터만 변경하고 나머지 데이터 값들은 유지된다.
    2022 학습
    2022.01.16 : HTML Tag (datalist, picture, progress, meter)
    2022.02.01 : Restful API 원리원칙
    • 클라이언트와 서버가 분리되어야한다.

    • stateless

      • Token 등 3자 인증방식으로 session을 사용하지 않는다.
    • cashable

    • 계층적 구조로 구성되어야한다.

      • 클라이언트 -> 컨트롤러 -> 서비스 -> 레파지토리 -> DB

    2022.02.02 : 트랜잭션, MSA
    • MSA란?? (Microservice Architecture)

      • 하나의 큰 어플리케이션을 만들기 위해 여러개의 어플리케이션으로 잘게 쪼개서 합치는 방식
    • 트랜잭션이란?

      • DB 결과에 영향을 줄 수 있는 작업의 단위

      • 원자성(Atomicity)

        • 트랜잭션이 DB에 모두 반영되던지 아니면 모두 반영 안되던지
      • 일관성(Consistency)

        • 도중에 DB가 업데이트 되어도 트랜잭션의 처리 결과가 달라져서는 안된다.
      • 독립성(Isolation)

        • 하나의 트랜잭션의 처리 결과가 다른 트랜잭션의 처리 결과에 영향을 줘서는 안된다.
      • 지속성(Durability)

        • 트랜잭션이 성공적으로 마무리 되었을 때 그 결과는 영구적으로 반영되어야 한다.
    2022.02.16 : ALGORITHM=INPLACE, LOCK=NONE으로 테이블변경하기
    2022.03.03 : Intellij 단축키
    • generate something : command + n

    • 클래스, 패키지 등 생성 : command + 1 -> command + n

    • 편집기로 이동 : ESC

    2022.03.23 : 에러처리 동기 vs 비동기
    • 동기 : try ~ catch문으로 에러 처리
    • 비동기 : 콜백함수 내에서 에러처리 (try ~ catch문으로 잡아도 외부에서 확인이 불가능함)
    2022.03.24 : express 유용한 내부, 외부 middleware
    2022.03.28 : Mongoose
    2022.03.29 : MongoParseError: options usecreateindex, usefindandmodify are not supported
    • Mongoose 버전 6.0이상부터 useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true, useFindAndModify: false는 디폴트
    • 따라서 작성하지 않아도 되며 제거 시 정상 동작
    2022.03.31 : SQL 최대값 행 한개 출력
      SELECT *
      FROM TABLE
      ORDER BY A DESC
      LIMIT 0, 1;
    2022.04.06 : mongodump, mongorestore
    2022.04.07 : 'node_env'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다
    2022.04.11 : Azure, Azure App Service
    2022.04.12 : Azure 관련 용어
    2022.04.13 : Azure Pipelines
    2022.04.14 : MongoDB Sharding
    2022.04.18 : Mongoose Schema enum
    2022.04.19 : Mongoose Schema 생성
    2022.04.22 : mongoDB compass query
    2022.04.29 : Azure Partner Center
    • Partner Center
      • MS와 Customer 사이의 비즈니스 프로세스를 관리
      • 계정관리, 보안, 데이터 관리 등
    2022.05.02 : PowerShell에서 Azure 명령어 사용하기
    2022.05.03 : Graph API를 사용하기 위한 Token 발급
    2022.05.09 : mongoose.Schema : default: () => []
    2022.05.10 : MongoDB Aggregation : $arrayElemAt, $ifNull
    2022.05.11 : express router methods
    2022.05.25 : Joi로 validation check
    2022.06.16 : MongoDB에서 필드 update하기
    2022.07.05 : MongoDB 사칙연산 쿼리
    2022.07.26 : MongoDB 배열 필드 update
    2022.08.29 : MongoDB : Argument "docs" must be an array of documents 에러 해결
    2022.08.30 : JavaScript heap out of memory 에러 해결
    2022.09.01 : JavaScript delete 연산자
    2022.09.20 : MongoDB Query for documents array size is greater than
2023 학습
2023.01.26 : mongodb findOne without _id, mongodb find performance compare to aggregate
2023.02.21 : joi 버전 업데이트로 인한 email() 메서드 에러
2023.03.16 : DDD란?
2023.03.21 : Mongoose를 사용하는 이유
2023.08.08 : Hadoop이란

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published