본문 바로가기

분류 전체보기

[백엔드TIL] 객체지향 프로그래밍 (66일차) 객체지향 프로그래밍이란 무엇이고 어떻게 활용할 수 있나요? 먼저, 객체는 실제 세계에서 존재하는 사물이나 개념 등을 프로그래밍에서 표현한 것입니다. 객체 지향 프로그래밍은 데이터와 해당 데이터를 처리하는 메소드를 하나로 묶어서 객체를 만들고, 이러한 객체들이 서로 상호작용하면서 프로그램을 구성하는 것입니다. 객체 지향 프로그래밍은 코드의 재사용성과 유지보수성을 높이는 등 많은 장점을 가지고 있습니다. 객체지향 프로그래밍에서는 데이터와 이를 처리하는 메소드를 하나의 단위로 묶어서 클래스라는 개념으로 정의합니다. 클래스는 객체를 생성하기 위한 객체가 가져야할 속성과 행위르 정의합니다. 객체지향 프로그램의 특징 중 하나는 상속입니다. 상속은 부모 클래스의 특성을 물려받는 개념으로 이미 만들어진 클래스를 상속받.. 더보기
[백엔드TIL] github Actions 개념 (65일차) 도입 배경 1. #PR 을 올림 2. #코드리뷰 완료 3. Merge 시킴 4. development 브랜치를 빌드 & 배포 5. development 테스트 후 통과 6. master 브랜치로 머지 후 빌드 & 배포 ​ 이런방식으로 개발을 하는데, 4번 dev 브랜치에 머지된 코드를 배포하기전 빌드를 하면 타입스크립트 에러가 난다거나 컴파일에러가 나는 경우가 종종 발생했다. 사실 PR을 올리기전에 개발자가 각자 build를 해보고 올리면 좋으려만 ... 하고 있었는데 ​ #github 에서 #Action이라는 기능이 추가된 것이다. ​ 그래서 우리 프로젝트에도 PR을 올리면 #CI (npm run build 실행)가 돌도록 적용해 보았다. ​ 적용 방법 ​ 한줄 요약 .github/workflows/n.. 더보기
[Nextjs, Typescript] 프로젝트에 Prettier + ESlint 설정하기 Prettier + ESlint 설정 팀 프로젝트는 Prettier 포맷터 설정과 ESlint 린터 설정이 필수인 것 같다. 따움표 스타일 정도는 맞출 수 있을지 모르지만, 띄어쓰기나 들여쓰기, 개행 등 불필요한 diff가 발생할 수 있어 생산성이 떨어질 수 있다. 또한 인터프리터 언어인 자바스크립트인 경우엔 컴파일 과정이 없으니, 사전에 에러를 잡아 줄 수 있는 린터의 역할이 크다. Prettier 다양한 포맷터를 사용해보지 않았는데, 그도 그럴 것이 개발을 시작할 때부터 formatter === Prettier 줄 알았다. 항상 vscode의 확장으로 쓰다가 팀 프로젝트를 위해 local 환경에서 설치하면서 Prettier 라이브러리에 대해 더 알아보았다. prettierrc는 json과 yaml, .. 더보기
[백엔드TIL] 비트와 바이트 개념그리고 http와 https (64일차) cs 공부 비트는 컴퓨터에서 정보를 표현하는 가장 기본적인 단위입니다. 비트는 "binary digit"의 줄임말로, 이진수 체계에서 0과 1 두 가지 값을 가질 수 있는 최소한의 단위입니다. 비트는 컴퓨터의 모든 데이터를 표현하는 데 사용됩니다. 텍스트, 숫자, 이미지, 음악, 비디오 등 모든 종류의 정보는 비트로 변환되어 저장되고 처리됩니다. 컴퓨터는 비트를 이해하고 다룰 수 있는 회로와 알고리즘을 사용하여 정보를 처리하고 표현합니다. 바이트는 컴퓨터에서 데이터를 저장하고 처리하는 데 사용되는 단위입니다. 바이트는 여러 개의 비트를 모아놓은 형태로, 보통 8개의 비트로 이루어져 있습니다. 컴퓨터 메모리는 주로 바이트 단위로 관리됩니다. 메모리의 각 주소는 바이트 단위로 접근되며, 프로그램이나 데이터는.. 더보기
[백엔드스터디WIL] Refresh Token을 쓰는 이유 (13주차) Refresh Token을 사용하는 이유 access token은 발급된 이후, 서버에 저장되지 않고 토큰 자체로 검정을 하며 사용자 권한을 인증한다는 stateless(무상태)라는 특징이 있는데요. 때문에 access token이 탈취되면 토큰이 만료되기 전까지 토큰을 가진 사람은 누구나 권한 인증이 가능해진다는 문제점이 발생할 수 있으며, 이러한 문자점을 보완하기 위해서 액세스 토큰의 만료 기간을 짧게 주는 방식이 적용되고 있습니다. 설정하기에 따라 다르지만 일반적으로 access token의 유효 기간은 30분에서 1시간 정도로 발급되며, 유효 기간이 짧은 만큼 사용자의 측면에서는 토큰이 만료될 때마다 다시 로그인을 하여 액세스 토큰을 발급받아야 하는 불편함이 생기게 됩니다. 이러한 이유 때문에 r.. 더보기
[백엔드온라인TIL] database종류 (63일차) DBMS란 Database Management system의 준말로 데이터를 한곳에 모은 저장소를 만들고 그 저장소에 여러 사용자가 접근하여 데이터를 저장 및 관리 등의 기능을 수행하며 공유할 수 있는 환경을 제공하는 응용 소프트웨어 프로그램 튜플(Tuple)- 테이블에서 행을 의미합니다. - 같은 말로는 레코드(Record) 혹은 로우(Row) 어트리뷰트(Attribute)- 테이블에서 열 릴레이션(Relation=Table)- 관계형 데이터베이스에서 정보를 구분하여 저장하는 기본 단위 키(Key)- 테이블에서 행의 식별자로 이용되는 테이블의 열을- 주키(PK) : 현재 테이블에서 행을 식별하는 식별자 - 외래키(FK) : 현재 테이블과 연관되어있는 외부 테이블과 연관된 행을 식별하는 식별자nosql .. 더보기
[백엔드온라인TIL] JWT의 Refresh Token과 Access Token은 어디에 저장해야 할까? 그리고 successfulAuthentication (62일차) JWT에서 가장 중요한 점은 '보안'입니다. 어떤 공격에도 토큰을 탈취당하면 안되고 어떤 방식으로도 악용당하면 안되기 때문에 이 토큰을 어디에 어떻게 저장할 지를 고민해 보았습니다. 1. Access Token 먼저 Access Token은 말 그대로 인증 인가 서비스를 구현하기 위한 것입니다. 사용자가 로그인을 하면 백엔드 서버에서 토큰을 만들어서 헤더에 담아 클라이언트에 전송합니다. 클라이언트는 서버에 요청을 할 때 서버로부터 받았던 토큰을 함께 전송합니다. 서버는 요청과 토큰을 함께 받고 서버에서 토큰을 디코딩하여 로그인한 사용자를 확인합니다. Access token은 서버에서 사용자를 로그아웃시키는 권한을 가질 수가 없기 때문에 일정 기간이 지나면 사용자가 자동으로 로그아웃되도록 만료 기간을 짧게.. 더보기
refresh token도 결국 JWT인데 왜 "Bearer"을 안쓰는걸까? https://velog.io/@cada/%ED%86%A0%EA%B7%BC-%EA%B8%B0%EB%B0%98-%EC%9D%B8%EC%A6%9D%EC%97%90%EC%84%9C-bearer%EB%8A%94-%EB%AC%B4%EC%97%87%EC%9D%BC%EA%B9%8C 토근 기반 인증에서 bearer는 무엇일까? 본 글은 MDN - HTTP 인증, Veloport님의 게시글을 참고하여 작성되었습니다. 자세하게 알고싶으신 분은 해당 링크를 참고해주세요.토큰 기반 인증인증 타입마치며토큰 기반 인증은 쿠키나 세션을 이 velog.io 참고 ✅ 상황 로그인 요청을 날리고, AccessToken과 RefreshToken이 정상적으로 돌아오는 것을 확인했다. ✅ 의문 JWT 토큰 인증을 구별하기 위해 Bearer을.. 더보기
[백엔드온라인TIL] OAuth란? / OAuth 2.0 인증 과정 (61일차) 1. OAuth(Open Authorization)란? OAuth의 사전적 정의는 다음과 같습니다. OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹 사이트 상의 자신들의 정보에 대해 웹 사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는 접근 위임을 위한 개방형 표준 쉽게 말하면, 어플리케이션을 이용할 때 사용자가 해당 어플리케이션에 ID, PW등의 정보를 제공하지 않고, 신뢰할 수 있는 외부 어플리케이션(Naver, Google, Kakao, Facebook 등)의 Open API에 ID, PW를 입력하여 해당 어플리케이션이 인증 과정을 처리해주는 방식입니다. 2. OAuth의 탄생 배경 OAuth이 없을 때의 상황을 생각해보자. 'A' 어플리케이션에서 Na.. 더보기
[백엔드온라인TIL] jwt 개념 (60일차) 1. JWT(JSON Web Token)란? JWT는 인증에 필요한 정보들을 암호화 시킨 JSON 토큰을 의미합니다. 따라서 JWT를 이용한 인증은 유저를 인증하고 식별하기 위한 Token 기반 인증입니다. JWT는 JSON 데이터를 Base64 URL-safe Encode를 통해 인코딩하여 직렬화한 것이고, 토큰 내부에는 개인키를 통한 전자서명이 들어있습니다. ※ Base64 URL-safe Encode란, 일반적인 Base64 Encode를 URL에서 오류 없이 사용하도록 '+'와 '/'를 각각 '-', '_'으로 표현한 것입니다. 토큰 기반 인증에서 토큰은 토큰 자체에 사용자의 정보들이 포함되어 있다는 점(Self-contained)이 특징입니다. 클라이언트의 상태를 알아야했던 Stateful했던 .. 더보기