반응형

전체 글 161

9.13 Dev.Feedback (컴퓨터공학 기초 #3 운영체제)

운영체제 컴퓨터나 스마트폰의 기기 그 자체(하드웨어)는 스스로 할 수 있는 일이 없다. 하드웨어의 설계를 바탕으로 하드웨어에게 일을 시켜야만 그 의미가 있는데, 그 하드웨어에게 일을 시키는 주체가 바로 운영체제이다. 운영체제를 사용하는 가장 큰 목적은 컴퓨터 하드웨어를 관리하는 것이다. 컴퓨터에는 수 많은 하드웨어가 존재한다. CPU, 메모리, 디스크, 키보드, 마우스, 모니터, 네트워크 등이 있으며 이를 잘 관리해주어야 컴퓨터를 효율적으로 사용할 수 있다. 운영체제의 성능이 좋을수록 컴퓨터의 성능 역시 좋아진다고 할 수 있다. 운영체제가 없다면, 응용 프로그램이 실행될 수 없다. 응용 프로그램은 컴퓨터를 이용해 다양한 작업을 하는 것이 목적이고, 운영체제는 응용 프로그램이 하드웨어에게 일을 시킬 수 있..

개발 R.I.P. 2021.09.13

9.12 Dev.Feedback (컴퓨터공학 기초 #2 그래픽)

그래픽 비트맵(래스터)과 벡터 이미지의 차이점 비트맵(래스터) 래스터 그래픽스 또는 비트맵이라고 하는 방식에서는 위처럼 이미지 정보를 가진 정사각형들이 모여 이미지를 구성한다. 그렇지만 왜 이름이 두 가지일까? 우리가 사용하는 대부분의 모니터를 '래스터 모니터raster-Scan Monitor'라고 하는데, 이처럼 래스터는 모니터와 연관된 용어이다. 래스터 모니터는 화면에 정보를 출력하기 위해 화면에 좌에서 우로, 위에서 아래로 빠르게 전자빔을 주사한다. 이때 이 래스터 방식으로 화면에 표현되는 데이터를 저장 및 관리하기 위해서 사용하는 양식이 바로 '비트맵bitmap>'인 것이다. 비트맵은 말 그대로 '비트bit'로 이루어진 지도map이라는 의미이다. 비트맵은 컴퓨터 정보량의 최소 단위인 비트에 이미지..

개발 R.I.P. 2021.09.12

9.10 Dev.Feedback ( 컴퓨터 공학 기초 #1 문자열)

문자열 2010년도 이후, 우리는 유니코드라고 불리우는 인코딩 방식이 통일된 시대를 살아가고 있다. 유니코드(Unicode)는 유니코드 협회(Unicode Consortium)가 제정하는 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준인데, 이 유니코드를 통해서 문자열을 다루는 것이 각 프로그래밍마다 다르기 때문에 먼저 기본적으로 다루는 방식에 대해 공부를 해야한다. 그렇다면, 먼저 유니코드가 어떤 것인지에 대해 정확히 짚어봐야 한다. 유니코드는 무엇일까? 유니코드(Unicode)는 유니코드 협회(Unicode Consortium)가 제정하는 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준이다. 이 표준에는 ISO 10646 문자..

개발 R.I.P. 2021.09.10

9.09 Dev.Feedback (OAuth 2.0)

우리가 웹이나 앱에서 흔히 찾아볼 수 있는 소셜 로그인 인증 방식은 OAuth 2라는 기술을 바탕으로 구현된다. 전통적인 방식 즉, 직접 작성한 데이터를 받은 서버에서 직접 인증해주는 것과는 달리, OAuth를 통해 인증을 중개해주는 메커니즘이다. 보안된 리소스에 액세스하기 위해 클라이언트에게 권한을 제공하는 프로세스를 단순화하는 프로토콜이다. 즉, 이미 사용자 정보를 가지고 있는 웹 서비스(GitHub, google, facebook 등)에서 사용자의 인증을 대신해주고, 접근 권한에 대한 토큰을 발급한 후, 이를 이용해 사용자가 이용하고자하는 서버에서 인증이 가능해지는 것이다. OAuth 란? OAuth2.0은 인증을 위한 표준 프로토콜의 한 종류이다. 보안된 리소스에 액세스하기 위해 클라이언트에게 권..

개발 R.I.P. 2021.09.09

9.08 Dev.Feedback (Cookie)

Cookie 쿠키는 서버에서 클라이언트에 데이터를 저장하는 방법 중 하나이다. 그러므로 서버가 원한다면 서버는 클라이언트에서 쿠키를 이용하여 데이터를 가져올 수 있다. 그러므로 쿠키를 이용하는 것은 단순히 서버에서 클라이언트에 쿠키를 전송하는 것만 의미하지 않고 클라이언트에서 서버로 쿠키를 전송하는 것도 포함된다. 이런 쿠키에는 다음과 같은 특징이 있다. 서버가 클라이언트에 데이터를 저장할 수 있다는 것 앞서 언급한 것처럼 서버는 쿠키를 이용하여 데이터를 저장하고 원할 때 이 데이터를 다시 불러와 사용할 수 있다. 하지만 데이터를 저장한 이후 아무 때나 데이터를 가져올 수 없다. 데이터를 저장한 이후 특정 조건들이 만족하는 경우에만 다시 가져올 수 있는데, 이런 조건들은 쿠키 옵션을 통해 만들어줄 수 있..

개발 R.I.P. 2021.09.08

9.07 Dev.Feedback (토큰 기반 인증)

토큰기반 인증 (Token-based Authentication) 토큰 기반 인증은 왜, 그리고 언제 쓰는 것일까? 세션 기반 인증은 서버(혹은 DB)에 유저 정보를 담는 인증 방식이다. 서버에서는 유저가 민감하거나 제한된 정보를 요청할 때마다 "지금 요청을 보낸 유저에게 우리가 정보를 줘도 괜찮은가?" 를 확인하기 위해 가지고 있는 세션 값과 일치하는지 확인한다. 아무래도 매 요청마다 데이터베이스를 살펴보게 되면, 시간이 더 걸리게 되어 불편하고, 또한 서버쪽에도 부하가 걸릴 수도 있게 된다. 이런 불편함들을 해소하기 위해 사용할 수 있는 것이 토큰기반이고, 그 토큰기반 인증 중 대표적인 JWT (JSON Web Token) 에 대해서 정리해보고자 한다. 클라이언트에서 인증 정보 보관하기 토큰이 뭐지?..

개발 R.I.P. 2021.09.07

9.06 Dev.Feedback (HTTPS, Hashing, Cookie)

HTTPS(HTTP + Secure) HTTP는 인터넷에서 데이터를 주고 받을 수 있는 통신 프로토콜인데, HTTPS는 거기에 보안 기능이 추가된 것이다. HTTPS는 Hyper Text Transfer Protocol Secure Socket layer 의 약자이다. HTTP over SSL(TLS), HTTP over Secure라고 부르기도 한다. HTTP 프로토콜 내용을 암호화하여 보안성을 추가하는데, HTTPS는 HTTP 요청을 SSL 혹은 TLS라는 알고리즘을 이용해, HTTP 통신을 하는 과정에서 내용을 암호화하여 데이터를 전송한다. 여기서 SSL과 TLS는 무엇일까? SSL과 TLS는 모두 웹 서버와 사용자의 웹 브라우저 간 통신을 암호화 하는데 사용되는 프로토콜이다. 공개 키와 개인 키를..

개발 R.I.P. 2021.09.06

9.05 Dev.Feedback(조합, 순열, 중복순열, 최대공약수, 최소공배수 Template)

순열 순서가 상관이 있기때문에, index (중심이 되는 숫자의 index)를 제외한 다른 부분들을 다음 배열에 넣어줌 const getPermutations = function (arr, selectNumber) { const results = []; if (selectNumber === 1) return arr.map((e) => [e]); arr.forEach((fixed, index) => { const next = [...arr.slice(0, index), ...arr.slice(index+1)] const permutations = getPermutations(next, selectNumber - 1); const result = permutations.map((e) => [fixed, ....

개발 R.I.P. 2021.09.05

9.03 Dev.Feedback (Mongo DB #1)

MongoDB MongoDB는 대표적인 NoSQL 도큐먼트 데이터베이스이다 NoSQL이란? NoSQL은 관계형 테이블의 방법을 사용하지 않는 데이터를 넓게 지칭한다. NoSQL 데이터베이스에서는 데이터를 행과 열이 아닌, 체계적인 방식으로 저장한다. NoSQL 데이터베이스의 예는 도서카드 목록함에서부터 MongoDB 같은 보다 정교한 데이터 저장소에 이르기까지 다양한 개념을 아우를 수 있다. 따라서 NoSQL이 의미하는 데이터베이스의 범위가 너무 넓기 때문에, 일단 이번에 공부하게 될 MongoDB로 범위를 좁히려 한다. MongoDB를 정확히 짚기 전에 NoSQL 기반의 비관계형 데이터베이스가 어떤 경우에 사용되는지 정리해봤다. 1. 비구조적인 대용량의 데이터를 저장하는 경우 (ioT 장비나 SNS에서..

개발 R.I.P. 2021.09.03

8.26 Dev.Feedback (SQL)

SQL이란? Structured Query Language ==> 구조화된 Query 언어 데이터베이스 용 프로그래밍 언어 MySQL, Oracle, SQLite, PostgreSQL등이 있다. 데이터베이스에 Query를 보내 원하는 데이터를 가져오거나 삽입할 수 있다. 또한 데이터가 구조화된 테이블을 사용하는 데이터베이스에서 활용할 수 있다. SQL을 사용할 수 있는 데이터베이스와 달리, 구조가 고정되어 있지 않는 데이터베이스가 있는데 이를 NoSQL이라고 한다. 테이블을 사용하지 않고 데이터를 다른 형태로 저장하게 되는데 대표적인 예시는 MongoDB와 같은 문서 지향 데이터베이스를 볼 수 있다. Query란? 직역을 하면 질의문 가장 친숙한 예시로는 검색창에 적는 검색어도 Query의 일종 저장되어..

개발 R.I.P. 2021.08.26
반응형