본문 바로가기

분류 전체보기119

[WEB] 인증 방식 종류 1_Cookie & Session 1. 쿠키와 세션을 사용하는 이유 - 쿠키와 세션은 HTTP 가 Connectionless와 Stateless라는 특징을 가지고 있어 등장하게 되었습니다. - 비연결지향은 클라이언트에서 서버에 요청을 보내면 서버는 클라이언트에 응답을 하고 접속을 끊는 특성을 말합니다. - HTTP 통신은 요청을 응답하고 접속을 끊기 때문에 클라이언트의 상태정보를 알 수 없습니다. 이를 Stateless하다고 합니다. - 만약 로그인을 하고 그 상태를 유지한 채로 웹 서비스를 제공하려면 어떻게 해야할까요? HTTP프로토콜에서 상태를 유지하기 위해 쿠키와 세션이라는 방법이 존재합니다. 2. 쿠키 1) 개념 - 쿠키는 클라이언트 로컬에 저장되는 Key-Value쌍의 작은 데이터 파일입니다. - 클라이언트가 어떤 웹사이트를 방.. 2022. 8. 3.
[자료구조] 최고의 자료구조는 무엇일까? * JavaScript 알고리즘 & 자료구조 마스터클래스 강의를 듣고 정리한 게시물입니다. 왜 이런 많은 자료 구조들이 존재하고, 그것들은 대체 무슨 일을 하는 것일까? 이진 검색 트리, 큐, 단방향 연결리스트, 비방향(undirected)/비비중(unweighted) 그래프 이진 힙, 우선순위 큐, 방향 그래프, 해쉬 테이블, 양방향 연결리스트, 스택 등 특정 유형의 문제에 있어서 특정한 자료 구조가 효율적이기 때문입니다. 자료구조들은 모두 다른 일을 합니다. 일부 자료 구조는 매우 특화되어 있는 반면, 배열이나 자바스크립트 객체와 같이 자주 사용되고 있는 일부 자료구조들은 매우 일반적입니다. 이런 일반적인 자료 구조들의 경우 우리가 직접 구현할 필요가 없습니다. (무료로 제공되니까) 그러나 RB (R.. 2022. 8. 1.
[프로그래머스] 문자열 내 마음대로 정렬하기 - 자바스크립트 문제설명 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다. 제한조건 strings는 길이 1 이상, 50이하인 배열입니다. strings의 원소는 소문자 알파벳으로 이루어져 있습니다. strings의 원소는 길이 1 이상, 100이하인 문자열입니다. 모든 strings의 원소의 길이는 n보다 큽니다. 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다. 입출력 예 strings n return ["sun", "bed.. 2022. 7. 27.
[프로그래머스] 비밀지도 - 자바스크립트 문제 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다. 지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 "공백"(" ") 또는 "벽"("#") 두 종류로 이루어져 있다. 전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각 "지도 1"과 "지도 2"라고 하자. 지도 1 또는 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽이다. 지도 1과 지도 2에서 모두 공백인 부분은 전체 지도에서도 공백이다. "지도 1"과 "지도 2"는 각각 정수 배열로 암호화되어 있다. 암호화된 배열은 지도의 각 가로줄에.. 2022. 7. 27.
[React] 클래스형 컴포넌트와 함수형 컴포넌트 클래스형 컴포넌트와 함수형 컴포넌트 (Feat. 클래스형만 파본다...) 컴포넌트는 데이터가 주어졌을 때 이에 맞추어 UI를 만들어 주는 기능을 하는 것은 물론, 라이프 사이클 API를 통해 컴포넌트가 화면에 나타날 때, 사라질 때, 변할 때 작업들을 수행할 수도 있습니다. 컴포넌트의 목적에 따라 프리젠테이션(presentational) 컴포넌트와 컨테이너(container) 컴포넌트로 나누기도 합니다. 리액트를 사용하여 프론트 개발을 할 때 클래스형, 함수형 두 가지 방법으로 컴포넌트를 선언할 수가 있습니다. 과거엔 클래스형 컴포넌트를 주로 사용했지만, 2019년 v16.8 부터 함수형 컴포넌트에 리액트 훅(hook)을 지원해 주어서 현재는 공식 문서에서 함수형 컴포넌트와 훅을 함께 사용할 것을 권장하.. 2022. 7. 26.
[프로그래머스] 모의고사 - 자바스크립트 문제 설명 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작.. 2022. 7. 26.
[TIL] (22.07.22) 타입스크립트를 쓰는 이유, 모듈, Node.js, npm,자바스크립트 데이터 타입, 배열과 연결리스트 새로 정리한 개념 1. 타입스크립트를 쓰는 이유 1) 데이터 타입을 엄격하게 지켜주기 위해 사용한다. 자바스크립트는 다이나믹 타이핑을 제공하는 언어이기 때문에 데이터 타입을 알아서 변경하는 경우가 있고, 오류를 발생시키는 경우가 있다. 2) 타입을 체크하기 때문에 명확한 에러 메시지를 받을 수 있다. 자바스크립트는 에러메시지가 추상적인 경우가 많은데 비해, 타입스크립트는 ‘여기 숫자가 들어와야 하는데 문자가 들어왔다’라던지 오타 교정 등의 작업을 수행한다. 2. 모듈 모듈은 애플리케이션을 구성하는 개별 요소로, 파일 단위로 분리되어 있다. 모듈은 대개 클래스 하나 혹은 특정한 목적을 가진 복수의 함수로 구성된 라이브러리 하나로 구성된다. 모듈은 아래와 같은 이유로 사용한다. 유지보수성 : 기능들이 모듈화.. 2022. 7. 22.
[트러블슈팅] npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead. 문제상황 npm create-react-app 이나 npm test 같은 명령어를 터미널에 입력 시 아래 오류 메시지가 뜸 npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead. 해결 Step 1: C 드라이브 / Program Files / nodejs 폴더에 들어가서 파일 npm 을 텍스트 에디터(저는 VSCode 사용) 로 연다. Step 2: npm.cmd 파일의 12번째 줄, npm 파일의 23번째 줄에서 prefix -g 로 되어있는 것을 prefix --location=global 으로 고쳐 저장한다. (관리자 권한으로 수정) 참고 https://stackoverflow.com/q.. 2022. 7. 19.
[네트워크] CDN 이 뭔가요? 개념 Content Delivery Network 또는 Content Distribution Network 의 약자. 협력하여 인터넷 콘텐츠를 고속 전송하는 지리적으로 분산된 서버 집단을 의미합니다. 지리적 제약 없이 전 세계 사용자에게 빠르게 콘텐츠를 전송할 수 있게 만듭니다. 원리 CDN은 콘텐츠를 가능한 한 빠르고, 저렴하고, 신뢰할 수 있고, 안전하게 전송하기 위해 상호 연결된 서버의 네트워크입니다. CDN은 속도와 연결을 개선하기 위해 다양한 네트워크 사이의 익스체인지 포인트에 서버를 배치합니다. 이러한 인터넷 익스체인지 포인트(IXP)는 다른 네트워크에서 발생한 트래픽에 대한 상호 액세스를 제공하기 위해 다양한 인터넷 제공자들이 연결하는 주요 위치입니다. CDN 제공자는 이러한 고속 대규모 상.. 2022. 7. 11.