IT Study/CS 9

[CS] 절차지향 vs 객체지향 프로그래밍

언어를 처음 배우기 시작하면, "객체지향 프로그래밍이다"는 말을 자주 볼 수 있다. 내가 아는 객체라면 { } 객체 타입 이것밖에 안떠오르는데 객체지향 프로그래밍이 도대체 무엇일까? 객체지향와 절차지향를 비교해서 이해해볼 수 있다. 두 개념을 알기 위해서는 '프로시저'와 '의존'을 알아야 한다. '프로시저 '와 '의존성 '을 먼저 짚고 넘어가보자. 프로시저 프로시저는 데이터를 활용해서 로직을 처리하는 함수를 말한다. 특정 프로세스를 절차적으로 기술해놓은 것으로 절차적으로 처리하고자 하는 명령어들의 집합을 의미한다. 추가적으로, 프로시저와 함수의 차이는 무엇일까? 함수도 '명령어 집합'이라는 의미에서 일종의 프로시저로 볼 수 있다. 둘을 비교하는 것이 애매하기는 하나 강력한 차이라면 'side effect..

IT Study/CS 2024.01.11

[Backend] UUID vs ULID vs snowflake ID

UUID 범용 고유 식별자(Universally Unique Identifier)로 고유하게 식별하는데 사용되는 레이블이다. 주로 분산 컴퓨팅 환경에서 사용된다. 중앙에서 관리되지 않는 분산 환경이라면 개별 시스템이 id를 발급하더라도 유일성이 보장되어야 하기 때문에 등장하게 되었다. 전역적으로 고유하지는 않으나 중복의 가능성은 거의 적다. 36자의 문자열로 표시되는 128비트의 값이다. 하이픈으로 구분된 32개의 16진수 문자열의 패턴을 보인다. uuid의 버전 버전은 1, 3, 4, 5가 있다. 1버전: 타임스탬프를 기준으로 생성 3버전: MD5 해시기반으로 생성 4버전: 랜덤 생성 5버전: SHA-1 해시를 이용해 생성 => 1버전과 4버전을 많이 사용하나 1버전도 중복값 존재의 가능성이 있어서 주..

IT Study/CS 2023.12.16

[Frontend] nginx를 사용해서 VM에서 배포하기 (+ CodeSpliting)

1차 프로젝트에서 직접 VM 배포에 관여하지는 않았지만, 각 팀에서 배포 과정에 많은 어려움들을 겪었었다. 우리 팀은 발표 전날에 VM 서버가 문제가 생겨서 늦은 밤까지도 코치님들이 총 출동해서 해결해주셨다. 2차 프로젝트 때는 우선 프론트만 초기 틀 잡고는 바로 배포를 진행해보았다. 로컬에서 build 파일을 생성한 후에 VM 서버로 보내서 배포를 하려고 했으나, 로컬에서 생성한 build 파일을 VM 서버로 보내는 방식에서 막혀서 한참을 헤멨다. 그렇게해서 찾은 방식은 VM 서버에서 git clone으로 파일들을 가져오고 VM서버에서 build 파일을 생성을 하고 nginx로 배포를 진행했다. VM 이란? Virtual Machine의 약자로 가상 머신 OS로 리눅스가 있어서 유닉스 커맨드로 작업을 ..

IT Study/CS 2023.11.29

[Front] 디바운싱과 쓰로틀링

프론트에서의 상태 변경과 관련해 매번 백에 API를 요청하는 것이 아닌 일정 시간을 두고 요청하는 것과 관련해, 코치님께서 '디바운싱과 쓰로틀링'을 언급해주셨다. '디바운싱과 쓰로틀링'을 개발과정에서 사용해보고자 정리를 해본다. 디바운싱 함수 실행 요청이 연속적으로 들어온 경우 가장 마지막(혹은 제일 처음) 요청만 수행 ex. 검색창에 "front"를 검색한다고 해보자. 일반적인 경우에는 글자를 입력할 때마다 API 요청을 하게 된다. 이 경우에는 너무 많은 요청이 들어가게 되고 서버에서는 자원 부담 및 부하로 이어질 수 있다. 더불어 아무 글자나 마구잡이로 계속해서 입력하다보면 그 때마다 API 요청이 되어 호출 낭비가 된다. 디바운싱의 경우, 정해진 시간이 지나기 전에 입력이 들어온다면 기존 시간은 ..

IT Study/CS 2023.11.22

[CS] Stateful vs Stateless 차이

세션 상태 - 클라이언트와 서버간 통신 인증이 된 상태 - 인증된 상태에서 데이터 송수신 가능 세션 정보 - 한 세션 내에서 클라이언트가 서버에 전송할 데이터 정보 Stateful (상태유지) 서버가 클라이언트의 상태를 보존 -> 세션 정보를 서버에 저장 서버에서 클라이언트가 이전 단계에서 제공한 값을 저장하고 다음 단계에서도 저장하는 상태 ex. 홈페이지에서 로그인하고 페이지 이동해도 로그인이 풀리지 않은채 유지되는 것 Stateful한 구조를 따르는 프로토콜 ex. TCP의 3-way handshaking 1) 클라이언트는 서버에 접속 요청하는 SYN 패킷을 보냄 2) 서버는 SYN 요청을 받고 클라이언트에게 요청을 수락한다는 ACK와 SYN 패킷을 발송 3) 클라이언트는 서버에게 다시 ACK 패킷을..

IT Study/CS 2023.11.15

[Back] 계속 헷갈리는 토큰 vs 쿠키 vs 세션

프로젝트에서는 가장 처음엔 토큰을 생성해서 '로그인을 유지' 시키기 위해 브라우저의 로컬 스토리지에 저장을 했다. 그러나 최종 프로젝트에서는 쿠키와 토큰을 사용했다 쿠키로 바꾼 이유는 ? 로컬 스토리지는 브라우저를 종료해도 데이터가 남아있다는 특성을 지니기 때문에 보안에서 취약하다. 쿠키와 토큰을 사용함으로써 만료 기간을 설정해 보안성을 높이고자 했다. 구현한 Flow를 요악하면, 첫 로그인 시 JWT 토큰을 쿠키에 담아서 클라이언트로 보내고 유저가 페이지를 접속할 때마다 클라이언트는 헤더에 쿠키정보를 담아서 서버로 보내면 서버는 JWT 토큰을 검증하고 유효하다면 요청값을 보내주는 방식으로 인증 과정을 거쳤다. 모든 데이터를 서버에서 저장해야한다는 부담과 (물론 소규모 프로젝트라 서버거 터질일은 절대절대..

IT Study/CS 2023.11.14

[Back] CORS ERROR와 CORS 옵션

"우리도 CORS에서 자유롭지는 못했다." 프로젝트를 진행하면서 그전에는 CORS 오류가 나지 않았지만 배포한 후에 CORS 에러가 발생 했고, 그 원인으로는 배포하면서 출처가 다른 url에 대한 설정이 없었기 때문으로 이해를 했었다. 📍CORS란? Cross origin Resource Sharing (교차 출처 리소스 공유) " 다른 출처로의 리소스 공유 및 사용 가능 "하도록 하는 메커니즘 출처 : 프로토콜(Protocol), 호스트(Host), 포트번호(Port) -> 서버 위치를 찾기 위해 필요한 가장 기본적인 것들 출처를 비교하는 로직은 브라우저에서 이루어진다. 브라우저가 CORS 위반 등을 분석한다. 📍CORS 이해를 위한 SOP 개념 관련한..

IT Study/CS 2023.11.12

[CS] 운영체제_프로세스, 메모리 (Feat. Elice 11주차)

운영체제(OS)등장배경처음엔 하드웨어의 종류가 적어 통제가 가능했으나 점차 하드웨어의 종류가 많아지고 다양한 용도로 사용되면서, 개발자가 모든 하드웨어의 구조와 회로를 배우는 것이 불가능하게 되었다. 프로그램이 하드웨어 위에서 잘 실행될 수 있도록 도와주기 위해서 등장한 것이 운영체제. : 하드웨어를 포함한 리소스를 제어하고 프로그램을 실행해주는 시스템 소프트웨어시스템 리소스: 시스템 자원컴퓨터에서의 자원: 어떤 목적에 이용할 수 있는 하드웨어를 포함한 모든 것‘리소스’의 99% → 메모리를 의미각 응용프로그램마다 할당된 리소스가 존재응용프로그램은 다른 응용프로그램의 리소스를 강제로 사용할 수 없음⇒ 응용프로그램이 실행되기 위해 누군가 리소스를 정해주고 각 프로그램이 다른 프로그램의 리소스를 강제로 사용..

IT Study/CS 2023.11.05

[CS] 컴퓨터 구조 (Feat. 11주차)

컴퓨터 구조의 큰그림컴퓨터 구조는 컴퓨터가 이해하는 정보와 컴퓨터의 네 가지 핵심 부품으로 이루어져 있다. 컴퓨터가 이해하는 정보는 다시 데이터와 명령어로 이루어져 있다. "전원을 켜라"라고 할 때, "전원"이 데이터이며, "데이터를 켜라"가 명령어이다. * 인코딩: 컴퓨터가 이해할 수 있는 형태로 데이터를 변환하는 것* 디코딩: 사람이 이해할 수 있는 형태로 변환하는 것 컴퓨터의 네 가지 핵심 부품에는 중앙처리장치(CPU), 주기억장치(메모리), 보조기억장치, 입출력장치가 있다. 메인보드의 구조메인보드 (혹은 마더보드): 부품들을 장착하는 토대가 되는 보드 시스템버스: 핵심 부품 간 정보(데이터, 명령어) 이동은 모두 시스템 버스를 통함 입출력장치: 마우스, 키보드, 모니터와 같이 입력 받고 출력 보여..

IT Study/CS 2023.10.31
반응형