컴퓨터 과학(6)
-
Docker) 초보자를 위한 도커 설명회
Docker는 어플리케이션을 구성하는 여러 서비스가 독립적인 환경에서 실행되도록 관리하는 오픈 소스 프로젝트입니다. Docker를 사용함으로써 어플리케이션의 개발, 운영, 확장, 유지보수, 배포를 빠르고 쉽게 할 수 있습니다. 도커란? 도커는 libcontainer라는 자체 기술을 통해 필요한 최소한의 의존성(lib, bin) 등을 가진 경량 컨테이너를 도커 엔진을 통해 실행합니다. 도커와 기존 컨테이너와의 가장 큰 차이는 LXC는 init 프로세스를 통해, 여러 프로세스를 하나의 컨테이너에서 관리할 수 있으나, 도커에서는 세분화된 프로세스를 standard-alone으로 실행하도록 권장하고 지원하며, Host OS 위에 도커 엔진이라는 컨테이너 런타임을 두어 다양한 플랫폼에서 동일한 환경으로 컨테이너를..
2023.01.30 -
git) 프라이빗 레포 다른 컴퓨터에서 사용하기
로컬에서 서버 작업해놓고 깃에 프라이빗으로 올렸는데 서버 컴퓨터에서 ssh 만들고 쌩난리쳐도 클론이 안됨 private repo가 뭐 다른 사람이랑 작업하는거면 그 사람 초대하고 하는데 나는 초대할 수가 없다. 보통 서버 컴에 모니터 안달아두고 헤드리스로 ssh 연결할텐데 로컬에서 서버로 id_rsa 자체를 가져오자. ftp를 써도 대고 방법은 상관없다. 본인은 scp 사용 예정 그리고 ssh 접속하는 것과 같은데 내 서버에서 방화벽으로 막아놨는데 설정 건들기 귀찮으니 로컬 > 서버 push가 아니라 서버에서 pull 해오겠음 scp [src의 IP@호스트:$PATH] [dest의 IP@호스트:$PATH] 혹시 sshd_config에서 포트 번호를 바꿔두었다면 -P 옵션으로 ssh 포트를 옵션으로 줌 위..
2021.10.16 -
CS 50 - 메모리와 데이터의 저장
메모리는 프로그램의 동작에 필요한 데이터들을 저장하는 공간으로, 아무렇게나 쓰는 것이 아니라, 용도에 따라 구분지어 사용된다. 메모리 영역의 도식도 RAM위의 각 메모리는 프로그램의 코드가 들어가는 Code 영역, 전역, Data 영역, 그리고 힙, 스택영역이 있다. CPU는 CODE 영역의 메모리 중 함수, 분기문, 상수 등을 읽어와 그에 따라 RAM에서 메모리를 관리한다. CPU가 다루는 메모리 영역 중 Data Memory 영역은 global 변수, static 변수를 할당하는 공간이며, 프로그램의 실행과 동시에 생성되며 프로그램의 종료와 동시에 소멸한다. 그 밑에는 Heap 영역과 Stack 영역이 존재하는데, Stack 영역은 프로그램이 필요에 따라 임시로 사용하는 영역이며, 함수의 호출 시 필..
2021.07.18 -
CS 50 - 16진법과 포인터, Call by reference
현재 카테고리의 첫 글에서 binary와 컴퓨터가 값을 표현하는 방법에 대해 설명했다. 컴퓨터는 8비트(1바이트)를 기준으로 8개의 0과 1로 표현을 하게 되는데, 이를 사람이 어느 정도 보기 편하게 바꿔놓은 것이 16진수이다. 16진수는 대부분 알 것 같으니 패스하고, 10진수는 0과 1로 이루어진 코드를 직관적으로 보기 힘들지만, 2^4 = 16이라는 사실로 1바이트를 16진수 숫자 2자리로 표기하는 것이다. 그런데 10진법 10과 16진법 10은 서로 "10"이지만 나타내는 값은 10과 16이다. 이런 모호함을 방지하기 위해 사람들은 16진수 수의 앞에는 0x를 붙이도록 약속했음. 예를 들어 1111 1111은 0xFF로, 0010 1100은 0x2C 이런 식으로.. 이 정도 설명하면 16진수는 끝..
2021.07.18 -
CS 50 - 코드가 동작하는 과정, 컴파일링
컴파일링이란 무엇인가? 우리가 C언어로 이루어진 .c를 작성하고 ./ 을 입력하면 컴파일러는 전처리 - 컴파일 - 어셈블 - 링크의 과정을 거쳐 실제 사용할 수 있는 파일을 만들어낸다. 인간 친화적으로 작성된 코드를 컴퓨터가 이해할 수 있는 코드로 변환시켜주는 과정을 컴파일이라고 한다. 예시로 헬로월드 컴파일링 과정이나 보자꾸나 전처리 전처리는 컴파일 전 전처리기에 의해 실행되며, 코드 내의 #으로 시작되는 모든 것은 전처리기에 의해 변환된다. 예를 들어 #include 는 lib의 stdio.h에 있는 모든 코드를 #include 의 위치에 작성하며, #include "a.h"같은 사제 헤더는 해당 .c 파일이 위치한 디렉토리에서 상대경로를 통해 a.h라는 헤더의 모든 코드를 복사해넣으며, #defin..
2021.07.16 -
CS 50 - 컴퓨터 과학과 컴퓨팅 사고
컴퓨터 과학이란 무엇인가? 컴퓨터 과학이란 문제 해결에 대한 학문으로, 정보 자체보다는 정보의 수집, 전달, 축적, 가공 등에 대해 다루는 기계, 즉 컴퓨터를 다루는 학문이다. 실생활에서 컴퓨터 과학과 컴퓨터 공학에 대해 헷갈려하는 사람들이 많은데, 컴퓨터 과학은 응용수학과 전산학 이론 등 자연 과학의 Theory를 다루는 학문이라면, 컴퓨터 공학은 그 Theory를 이용해 실제 application을 만들어내는 학과라고 생각하면 쉽다. 컴퓨팅 사고 binary, 2진법 만약 당신이 "123"이라는 글자를 본다면 본능적으로 백의 자리 1, 십의 자리 2, 1의 자리 3이라는 계산을 해서 10진수 123으로 읽을 것이다. 당신도 모르는 사이 100 * 1 + 2 * 10 + 3 * 1 => 100 + 20..
2021.07.16