Learning Log 68

[알고리즘] 프로그래머스 콜라 문제(js)

Q. 오래전 유행했던 콜라 문제가 있습니다. 콜라 문제의 지문은 다음과 같습니다. 정답은 아무에게도 말하지 마세요. 콜라 빈 병 2개를 가져다주면 콜라 1병을 주는 마트가 있다. 빈 병 20개를 가져다주면 몇 병을 받을 수 있는가? 단, 보유 중인 빈 병이 2개 미만이면, 콜라를 받을 수 없다. 문제를 풀던 상빈이는 콜라 문제의 완벽한 해답을 찾았습니다. 상빈이가 푼 방법은 아래 그림과 같습니다. 우선 콜라 빈 병 20병을 가져가서 10병을 받습니다. 받은 10병을 모두 마신 뒤, 가져가서 5병을 받습니다. 5병 중 4병을 모두 마신 뒤 가져가서 2병을 받고, 또 2병을 모두 마신 뒤 가져가서 1병을 받습니다. 받은 1병과 5병을 받았을 때 남은 1병을 모두 마신 뒤 가져가면 1병을 또 받을 수 있습니다..

[cs] 운영체제의 역할, PCB, 메모리 계층

1. 운영체제의 역할 운영체제의 역할은 크게 4가지가 있습니다 * CPU 스케줄링과 프로세스 관리 : CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 자원 할당 및 반환을 관리 * 메모리 관리 : 한정된 메모리를 어떤 프로세스에 얼만큼 할당해야 하는지 관리 * 디스크 파일 관리 : 디스크 파일을 어떠한 방법으로 보관할지 관리 * I/O 디바이스 관리 : I/O 디바이스들인 마우스, 키보드 등과 컴퓨터 간에 데이터를 주고받는 것을 관리 2. PCB(프로세스 제어 블록) * 개념 : process control block은 운영체제에서 프로세스에 대한 메타데이터를 저장한 데이터를 의미 * 과정 프로그램이 실행 => 프로세스가 생성되고 운영체제는 해당 PCB를 생성 => 프로세스의 메타데이..

Learning Log/CS 2023.07.31

[cs] 쿠키, 세션, 토큰이란

쿠키, 세션, 토큰은 모두 로그인과 같은 행동을 반복적으로 작업하지 않도록 데이터를 저장하는 방식입니다 1. 쿠키 * 의미 : 브라우저에 저장되는 정보 브라우저는 사용자의 컴퓨터에 설치된 소프트웨어임으로 쿠키는 사용자가 갖고 있는 정보 ex) 장바구니에 담은 내역, 검색 내역 등 => 조작되어도 문제되지 않을 정보 다만, 쿠키는 제 3자가 조회하는 것도 가능하기 때문에 개인정보를 담은 내용이나 보안상 민감한 정보를 저장하는데 적합하지 않음 1-1. 쿠키의 보안을 높이려면? 백엔드 코드 중 쿠키에 httpOnly / secure/ Samesite 옵션을 사용한다 => 이렇게 하면 자바스크립트 코드 상에서 접근이 불가능하고, http 요청에만 포함되어 보내진다 Set-Cookie: 쿠키명=쿠키값; path=..

Learning Log/CS 2023.07.27

[cs] 프로세스와 스레드

0. 프로그램 * 의미 : 프로그램이란 우리가 작성한 코드를 빌드하여 생성하는 결과물을 의미 더해서, 프로그램을 실행하기 위해서 메모리라는 자원을 할당 받아야 하는데, 이때 자원을 할당받아 실행되는 프로그램을 프로세스라고 함 => 프로그램이란 프로세스(실행 중인 프로그램)의 생성 및 실행 규칙들로 엮어진 파일 1. 프로세스 * 의미 : 운영체제로부터 자원을 할당받은 작업의 단위이며, 메모리에 올라와 실행중인 프로그램 => 실행 중인 프로그램!! * 특징 - 작업을 수행하기 위해 cpu/메모리 등의 자원이 필요함 - 프로세스 별로 독립된 메모리 공간을 사용함 - 하나의 프로세스 안에는 최소한 하나 이상의 스레드가 있음 - 새로운 프로세스를 생성하는 프로세스를 부모 프로세스, 새롭게 생성된 프로세스를 자식 ..

Learning Log/CS 2023.07.27

[cs] RESTful API란

1. RESTful API란* 의미 : 두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스 * 특징 : 안전하고 신뢰할 수 있으며 효율적인 소프트웨어 통신 표준을 따르므로 고객의 데이터 교환 등을 지원 1-1. API란* 의미 : 애플리케이션 프로그래밍 인터페이스는 다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙을 정의 => 웹 API는 클라이언트와 웹 리소스 사이의 게이트웨이라고 생각할 수 있음 (메뉴판과 같은 역할을 한다고 비유하기도 함!!) * 클라이언트 : 웹에서 정보에 엑세스하려는 사용자 * 리소스 : 다양한 어플리케이션이 클라이언트에게 제공하는 정보 1-2. RESTful API의 이점* 확장성 : REST가 클라이언트-서버 상호 작용을 최적화하기 때문..

Learning Log/CS 2023.07.27

[react] 클래스형 컴포넌트와 함수형 컴포넌트의 차이

요즘은 대부분 함수형 컴포넌트를 사용하지만 클래스형 컴포넌트가 무엇인지는 알고 있어야 합니다! 두 컴포넌트를 구분짓는 차이점은 클래스형 컴포넌트의 경우 state, lifeCycle 관련 기능 사용이 가능하지만, 함수형 컴포넌트의 경우 state, lifeCycle 관련 기능 사용이 불가하고 Hook을 통해 해결합니다. 1. 클래스형 컴포넌트 import React, {Component} from 'react'; class App extends Component { render() { const name = 'react'; return {name} } } export default App; // state 사용 시 예시1 constructor(props){ super(props); this.state =..

Learning Log/React 2023.07.24

[javascript] 모던 자바스크립트 딥다이브 스터디 3강 제어문/타입변환과 단축평가

https://www.inflearn.com/course/모던-자바스크립트-딥다이브 [무료] 모던 자바스크립트 딥다이브 스터디 - 인프런 | 강의 《모던 자바스크립트 딥다이브》 책 내용을 그대로 따라가는 스터디 영상입니다. 함께 공부하면 훨씬 쉬워질 거에요!, 혼자가 외롭다면 시간차 스터디는 어때요?함께하는 모던 자바스크립트 스 www.inflearn.com 인프런에서 강의를 듣고 정리하는 글입니다. 3강 제어문 / 타입변환과 단축평가 1. 제어문 * 블록문 - 아래 예시에서 위는 블록문이고 아래는 객체 * 제어문 - 프로그램의 순차적 흐름을 제어해야 할 때 사용하는 실행문 - 조건문(if~else), 반복문(for) 등이 있음 * 함수 선언문 - 함수 선언과 비슷한 형식 - ex) function 함수..

[javascript] 모던 자바스크립트 딥다이브 스터디 2강 데이터 타입/연산

https://www.inflearn.com/course/모던-자바스크립트-딥다이브 [무료] 모던 자바스크립트 딥다이브 스터디 - 인프런 | 강의 《모던 자바스크립트 딥다이브》 책 내용을 그대로 따라가는 스터디 영상입니다. 함께 공부하면 훨씬 쉬워질 거에요!, 혼자가 외롭다면 시간차 스터디는 어때요?함께하는 모던 자바스크립트 스 www.inflearn.com 인프런에서 강의를 듣고 정리하는 글입니다. 2강 데이터 타입 / 연산 1. 테이터 타입(대소문자 구분해야 함) * 숫자 타입 - 정수, 실수, 음의 정수 - 2진수, 8진수, 16진수 ... - 숫자 타입은 모두 실수로 처리 => 1 === 1.0 // true - Infinity, -Infinity, NaN * 문자열 타입 - '', "", 백틱(..

[javascript] 모던 자바스크립트 딥다이브 스터디 1강 변수/표현식과 문

https://www.inflearn.com/course/모던-자바스크립트-딥다이브 [무료] 모던 자바스크립트 딥다이브 스터디 - 인프런 | 강의 《모던 자바스크립트 딥다이브》 책 내용을 그대로 따라가는 스터디 영상입니다. 함께 공부하면 훨씬 쉬워질 거에요!, 혼자가 외롭다면 시간차 스터디는 어때요?함께하는 모던 자바스크립트 스 www.inflearn.com 인프런에서 강의를 듣고 정리하는 글입니다. 1강 변수 / 표현식과 문 1. 변수 * 변수 - 변수는 하나의 값을 저장하기 위한 수단 - 객체나 배열 같은 자료구조를 사용하면 여러 개의 하나로 그룹화해서 하나의 값처럼 사용할 수 있다 * 변수 선언 - var을 이용해 변수 선언을 하면 값을 할당하지 않아도 undefined가 기본 값이 된다 - 변수 ..

[next.js] 원티드 프리온보딩 챌린지 사전과제

1. CSR(Client-side Rendering)이란 무엇이며, 그것의 장단점에 대하여 설명해주세요. CSR는 클라이언트가 모든 것을 처리하는 방식입니다. app.js를 서버로부터 다운받아 이것들을 기반으로 동적으로 HTML을 생성해 사용자에게 최종적인 애플리케이션을 보여줍니다. 아래 코드와 같이 서버에서는 body에 app과 script 태그를 보내주고 클라이언트에서 이것들을 동작시켜 완성된 페이지를 보여주는 방식입니다. 장점은 첫 번째 이후 페이지 렌더링이 빠르고 데이터 비용을 아낄 수 있는 여지가 높습니다. 하나의 동작이 이루어질 때마다 필요없는 부분까지 한번에 불러와야하는 SSR과 달리 CSR는 변화된 부분만을 로딩해올 수 있어 빠르고 효율적입니다. 단점은 사용자가 첫 화면을 보기까지 로딩 시..