기타 개발 7

C++ 개발 환경 세팅

재미없는 개발 환경 세팅을 해보자. 내 컴퓨터는 M1 맥북이고 에디터는 vscode를 사용할 것이다. g++ 일본어를 할줄 몰라서 일본 여행을 갔을 때 답답했던 경험이 있다. 하지만 재밌게 여행할 수 있었는데, 말을 직접 하지는 못해도 파파고로 번역하면 의사소통이 가능했기 때문이다. 프로그래밍도 마찬가지다. 컴퓨터는 우리가 c++로 작성한 코드를 이해하지 못한다. 따라서 우리가 이해하는 프로그래밍 언어를 컴퓨터가 이해하는 기계어로 번역해주는 작업이 필요하다. 이 작업을 컴파일(compile)이라고 하고, 컴파일을 수행하는 소프트웨어를 컴파일러(compiler)라고 한다. 즉 파파고로 한국어를 일본어로 번역했다면, 컴파일러로 프로그래밍 언어를 기계어로 컴파일하는 것이다. 여러 c++ 컴파일러 중에 g++을..

기타 개발 2022.08.07

Sync vs Async / Blocking vs Non-blocking

sync(동기)와 async(비동기)에 대하여 공부를 하다 보니 항상 따라오는게 있었다. 바로 blocking과 non-blocking이었다. 이 sync와 blocking, async와 non-blocking은 의미와 상황이 자주 혼동되지만 서로 다른 개념이다. -Sync, Async sync(동기)와 async(비동기)는 시간의 관점, 실행되는 함수의 관점에서 봐야한다. 동기는 말 그대로 동시에 일어나는 것이다. 하나가 끝나면 다른 하나가 동시에 시작된다. 즉 sync는 호출한 함수가 호출된 함수의 종류를 신경쓰는 것이다. 반면에 async는 호출된 함수가 끝나든 말든 신경쓰지 않는 것이다. 보통 async는 호출된 함수가 끝나면 callback을 통해 결과값을 처리한다. - Blocking, Non..

기타 개발 2022.06.15

REST API

REST API? RESTful API? 종종 들어봤지만 헷갈리는 REST API는 도대체 무엇일까? - API 먼저 API가 무엇인지 간단히 짚고 넘어가자. UI(User Interface)가 사용자와 프로그램간의 연결이라면 API(Application Programming Interface)는 컴퓨터 프로그램간에 정보를 주고받는 방법 혹은 연결이다. 우리는 API를 통해 서로 다른 컴퓨터, 프로그램 사이에서 정보를 주고 받는다. 인터넷으로 버스 노선을 검색하면 우리의 컴퓨터는 버스 노선을 제공하는 서버와 API를 통해서 정보(버스 노선 데이터)를 주고 받는다. 그렇다면 REST API란 무엇일까? REST API는 이러한 API중 REST 구조를 따르는 API라고 한다. - REST 배경 REST의 ..

기타 개발 2022.05.25

웹소켓(Web Socket)

- HTTP의 비연결성(Connectionless) HTTP 통신은 클라이언트가 서버에 요청(request)을 해서 응답(response)을 받으면 tcp/ip 요청을 끊어 연결을 해제한다. 이것이 http의 특징인 비연결성이다. 비연결성은 서버의 자원을 효율적으로 사용할 수 있다는 장점이 있지만, 양방향 통신을 하기 어렵다는 단점이 있다. 서버는 클라이언트의 요청에 응답하는 것 뿐, 주체적으로 데이터를 보낼 수 없기 때문이다. - HTTP로 구현한 양방향 통신 그래서 양방향 통신이 필요할 땐, HTTP로 얼추 양방향 통신이 되게 만들었다. 폴링(Polling) 주기적으로 http 요청을 보내 데이터를 받아와 데이터를 갱신하는 방법이다. 갱신할 데이터가 없어도 클라이언트에서 계속 요청을 보내니 비효율적이..

기타 개발 2022.05.18

쿠키, 세션과 JWT

오늘은 쿠키, 세션, JWT를 알아보자. - 배경 http프로토콜의 특징인 stateless 때문에 서버는 유저정보를 유지하고 있지 못한다. 연결이 끊나면 서버는 이전 상태를 보존하지 않는다. 그래서 유저 입장에선 똑같은 사이트를 여러번 방문해도, 서버 입장에선 유저가 매번 처음 방문한 것처럼 받아드린다. 이 특징 때문에 불편한 상황이 발생한다. - 페이지를 이동할 때마다, 매번 로그인을 해야하나? - 쿠키(Cookie) Using HTTP cookies - HTTP | MDN An HTTP cookie (web cookie, browser cookie) is a small piece of data that a server sends to a user's web browser. The browser ma..

기타 개발 2022.05.07

1. 인터넷은 무엇일까

웹(Web)하면 가장 먼저 생각나는 것이 인터넷이다. 네이버, 구글 같은 웹페이지에 접속하라면 우리의 노트북, 스마트폰은 인터넷 네트워크에 연결되어 있어야 한다. 그럼 웹, 웹페이지는 뭐고 인터넷은 뭐고 또 무엇일까. 우리는 일상생활에서 웹, 인터넷 등을 무수히 많이 이용하지만, 이런 용어들을 명확히 구별해서 사용하지는 않는다. 따라서 처음엔 이런 개념들이 헷갈리고 완벽히 이해하긴 어렵지만, 처음부터 완벽히 이해할 수는 없다. 각자 자기 나름대로 이해하고 넘어가도록 하자. 인터넷은 1960년대 미국에서 군사용으로 처음 만들어졌다. 컴퓨터간 네트워크, 인터넷은 폭격과 사고로부터 자료를 보호하고 통신을 유지시켰다. 폭격이 하나의 컴퓨터는 파괴할 수 있을지언정 그 안에 들어 있는 각종 군사 기밀은 인터넷을 통..

기타 개발 2021.11.10

0. 시작하며

올해 5월말 개발 공부를 처음 시작해 지금까진 BOJ 문제를 풀며 알고리즘을 공부해왔고, 앞으로 웹 공부도 시작하려 한다. 목표는 궁금한 것을 찾아보며 정리하고, 직접 웹 사이트를 만들어 보는 것이다. 비전공자이기도 하고 웹 공부가 처음이여서 쪼끔은 험난할 것 같다. 아래는 참고한 사이트이다. 개발 로드맵 https://roadmap.sh/frontend 프론트엔드 뿐만 아니라 벡인드 등 다양한 분야의 로드맵이 있다. Developer Roadmaps Community driven roadmaps, articles, guides, quizzes, tips and resources for developers to learn from, identify their career paths, know what t..

기타 개발 2021.11.09