개발 R.I.P. 93

9.17 Dev.Feedback (Docker)

Docker 도커(Docker)는 리눅스 컨테이너(Linux Container) 기술을 기반으로 하는 오픈 소스 서비스이다. 도커를 통해 애플리케이션 실행 환경을 코드로 작성할 수 있으며, OS를 격리화하여 관리한다. 짧게 요약한 문장에서도 도커, 리눅스 컨테이너, 실행 환경, OS, 격리화라는 단어가 등장하는데, 도커에 대해 설명할 때 자주 등장하는 단어들이고 아직 생소한 단어들이다. 그래서 이런 단어들을 정리하면서 단어를 이해해보려 한다. Linux Container 란? Linux Container는 Linux 기반의 기술 중 하나로, 필요한 라이브러리와 애플리케이션을 모아서 마치 별도의 서버처럼 구성한 것을 말한다. 컨테이너를 이루는 네트워크 설정, 환경 변수 등의 시스템 자원은 각 컨테이너가 독..

개발 R.I.P. 2021.09.17

9.14 Dev.Feedback (브랜치 명령어 모음)

새로운 브랜치 생성 $ git branch 새로운 브랜치 이름 새로운 브랜치 생성 후 해당 브랜치로 전환 $ git switch -c 새로운 브랜치 이름 $ git checkout -b 새로운 브랜치 이름 브랜치 목록 확인 $ git branch 브랜치 목록과 각 브랜치의 최근 커밋 확인 $ git branch -v 브랜치 삭제 $ git branch -d 삭제할 브랜치 이름 $ git branch -D 해당 명령어는 병합하지 않은 브랜치를 강제 삭제하는 방법이다. 브랜치 전환 $ git switch 브랜치 이름 $ git checkout 브랜치 이름 브랜치 병합 master 브랜치로 dev 브랜치를 병합할 때 (master ← dev) $ git checkout master $ git merge dev..

개발 R.I.P. 2021.09.14

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