branch : 분기된 가지 (다른 차원) - 여러 작업들을 독립해서 진행함 -> 이것을 하나의 프로젝트 폴더에서 진행할 수 있음 1. 브랜치 생성 / 이동 / 삭제 git branch add-coach - add-coach라는 이름의 브랜치 생성 git branch - 생성된 브랜치 확인 git switch add-coach - add-coach로 이동 git switch -c new-teams - 브랜치 생성과 동시에 이동 2. 가지 합치기 merge vs rebase - merge : 병합. branch의 사용내역 남김 - rebase : branch 내역 없이 싸그리 하나를 합침 git merge add-coach - add-coach와 merge - reset 사용 가능

git status > 상태 확인 git add 파일이름 > 파일 담기 git add . > 모든 파일 담기 git commit - 위 화면이 뜨게 된다. vi 모드 - 여기서 FIRST COMMIT 입력한 뒤 저장해서 종료 - FIRST COMMIT 버전이 저장되었다는 것 확인할 수 있음 git commit -m "FIRST COMMIT" - 메시지와 함께 커밋 git diff > 세부적인 변경 내용 확인 git commit -am "메시지" - add와 commit을 한번에 할 수 있음 - 새로 추가된 파일이 없을 때 한정 깃허브에서 프로젝트를 되돌리는 방법 1. Reset - 시간을 과거로 되돌리는 것. 한 시점에서 그 이후 히스토리를 지움 2. Revert - 내역 삭제가 아닌 변화를 거꾸로 수행..

백준 1712 : 손익분기점 #include // 백준 1712번 손익분기점 int main() { int A, B, C = 0; // A : 고정비용 / B : 가변비용 / C : 판매비용 scanf("%d %d %d", &A, &B, &C); // A, B, C를 입력받음 if (B >= C) // B가 C보다 클 때 (손익분기점이 존재하지 않을 때) printf("-1\n"); // -1 else { // 판매비용에서 가변비용을 뺀 이윤으로 고정비용을 나눔 // 손익분기점이 되기 위해서는 고정비용을 넘어야 하므로 +1을 해줌 printf("%d\n", A / (C - B) + 1); } return 0; }

> 문제풀이 #include using namespace std; int main() { string s; // 문자열을 담는 s int count, n; // 문자열 개수 count, 문자열 길이 n cin >> count; // 문자열 개수 입력받음 for(int i = count; i > 0; i--){ // count 만큼 반복 cin >> s; // 문자열 입력받기 n = s.size(); // s의 문자열 길이 cout

> Git은 프로젝트의 내용을 쉽게 되돌리고 버전을 전환할 수 있다. git --version - git 버전 확인 brew install git - git 설치 CLI vs GUI CLI : Command User Interface GUI : Graphical User Interface > CLI는 터미널 GUI는 아이콘 툴바 등으로 좀 더 간결함 ❯ git config --global user.name "kwonjeong" ❯ git config --global user.email "kwonjeong9470@gmail.com" - 초기설정. 이름과 이메일 git init - 현재 폴더를 깃허브가 관리하겠다는 명령어 > 이 명령어를 실행하면 숨김 폴더 (.git)이 생성 > 이 폴더를 지우면 git 관..

1. 노드의 정의 - 노드는 서버가 아니다. 자바스트립트 엔진으로 빌드된 자바스크립트 런타임 - 실행기. 자바스크립트를 실행 서버 - 노드는 서버 애플리케이션을 실행하는 데 제일 많이 사용 - 서버 : 네트워크를 통해 클라이언트에 정보나 서비스를 제공하는 컴퓨터 또는 프로그램을 말함 - 클라이언트 : 요청을 보내는 주체 - ex) 주소창에 웹 사이트 주소를 입력(요청)하면 그 주소에 해당하는 컴퓨터 위치를 파악하고 웹 사이트 페이지를 받아와서 요청자의 브라우저(클라이언트)에 띄운다(응답) - ex) 모바일 앱 설치 ➡ 앱스토어에서 원하는 앱을 고른 후 설치 버튼을 누르면(요청) 내려받기(응답)이 시작 - 서버는 클라이언트의 요청에 대해 응답을 한다. 자바스크립트 런타임 - 노드는 자바스크립트 런타임. -..

김주균, OS? Oh Yes! (휴먼싸이언스, 2008) 프로그램을 짜고, 실행시키면서 프로그램 용량이 커서 메모리에 들어가지 못할 것이라는 걱정을 하는 사람은 없음 ➡ 시스템이 사용자 프로그램을 메모리의 어디에, 어떻게 넣을지, 수용 공간까지 알아서 해결 운영체제는 메모리 크기 아래 프로그램을 작은 조각으로 나누어 일부분만을 메모리에 적재 ➡ 보다 많은 사용자 수용, 사용자가 메모리 크기로부터 자유로움 ➡ 제한적인 크기지만 엄청나게 큰 메모리가 있는 것처럼 여겨지기 때문에 가상(Virtual) 메모리라고 함 8.1 가상 메모리 (Virtual Memory)를 위해서는 프로그램은 작은 조각으로 이루어짐 조각 크기 같도록 ➡ 페이지(Page) 조각 크기 다르게 ➡ 세그먼트(Segment) 이 크기가 메모리..

창병모, 리눅스 프로그래밍 원리와 실제(생능출판, 2022) 8.1 쉘과 프로세스 쉘 쉘 : 사용자와 운영체제 사이에 창구 역할을 하는 소프트웨어 - 사용자로부터 명령어를 입력받아 이를 처리하는 명령어 처리기(command processor) 역할 수행 - 쉘은 사용자와 운영체제 사이에 창구 역할을 하는 소프트웨어로 사용자로부터 명령어를 입력받아 이를 처리 명령어 실행 - 쉘은 사용자가 입력한 명령어를 실행하기 위해 새로운 자식 프로세스를 생성해 입력한 명령어 실행 - 자식 프로세스가 입력된 명령어를 실행하고, 쉘은 자식 프로세스 실행을 끝날 때까지 기다림 - 자식 프로세스 실행이 끝나면 기다렸다가 다시 쉘 프롬프트 출력하고 다음 명령어 기다림 명령어 열(command sequence) : 여러 명령어 ..

React - 17.1. 컴포넌트 이벤트 만들기 return ( { {this.state.subject.title} {this.state.subject.sub} */} ); - header 태그를 주석처리하고 원래 쓰던 태그 살림 - 이벤트 처리를 하고 싶다면 onChangePage 이벤트를 쓸 수 있음 - a 태그가 클릭되었을 때 설치한 함수를 실행해 줌 - 우리가 만드려고 하는 Subject 컴포넌트는 onChangePage 이벤트가 있어서 이 컴포넌트 안에서 링크를 클릭했을 때 이벤트에 설치한 함수를 만드려고 함 - App.js에 추가 - onChangePage {this.props.title} {this.props.sub} - Subject.js에 추가 - 링크 태그에 onClick 속성 추가해주..

창병모, 리눅스 프로그래밍 원리와 실제(생능출판, 2022) 7.1 파일 잠금 파일 및 레코드 잠금의 필요성 - 여러 프로세스가 하나의 파일에 동시에 접근할 때 문제점 - ex) 수정하는 순서에 따라 데이터 바뀜 ➡ 한 프로세스가 파일의 일부 혹은 전체 영역을 읽거나 수정할 때 다른 프로세스의 접근을 제한하기 위해 그 영역에 잠금(lock)을 하는 것 - 접근하는 프로세스 A가 대상 레코드에 잠금을 하는 경우 - 수행 후 프로세스 B가 대상 레코드를 접근하려고 하면 해당 레코드는 이미 잠금 상태이기 때문에 프로세스 A가 잠금을 풀 때까지 기다려야 함 Q. 파일 전체에 대해 잠금을 하지 않고 레코드 잠금을 하는 이유 - 많은 사용자들이 동시에 접근해 하나의 파일을 조작해야 하는경우, 파일 전체를 잠금하면 ..

창병모, 리눅스 프로그래밍 원리와 실제(생능출판, 2022) 6.1 파일 시스템 파일 시스템 구조 부트 블록(Boot block) - 파일 시스템 시작부 위치, 첫 번째 섹터 차지 - 유닉스/리눅스가 처음 시작될 때 사용되는 부트스트랩 코드 저장되는 블록 슈퍼 블록(Super block) - 전체 파일 시스템 대한 정보 저장 - 파일 시스템 내의 총 블록 수, 사용가능한 i-노드 개수, 사용 가능한 블록들을 나타내는 비트 맵, 블록의 크기, 사용 중인 블록 수, 사용 가능한 블록 수 i-리스트(i-list) - 각각의 파일을 나타내는 모든 i-노드들의 리스트 - 한 블록은 약 40개 정도의 i-노드 포함 데이터 블록(Data block) - 파일의 내용(데이터)을 저장하기 위한 블록 i-노드와 블록 포인..

창병모, 리눅스 프로그래밍 원리와 실제(생능출판, 2022) 5.1 시스템 호출 컴퓨터 시스템 구조 - 하드웨어는 CPU, 메모리, 저장장치, 주변장치 등으로 구성 - 운영체제는 하드웨어를 운영 관리하는 시스템 소프트웨어이며 유닉스/리눅스의 경우 커널(kernel)이 하드웨어를 운영 관리 운영체제 서비스 - 프로세스 관리 - 파일 관리 - 메모리 관리 - 통신 관리 - 주변장치 관리 시스템 호출 시스템 호출(system call) : 운영 체제가 제공하는 서비스에 대한 프로그래밍 인터페이스 - 시스템 호출은 커널에 서비스를 요청하기 위한 프로그래밍 인터페이스로 응용 프로그램은 시스템 호출을 통해서 커널에 서비스를 요청 가능 시스템 호출 구현 5.2 파일 파일 열기와 파일 디스크립터 - 파일 디스크립터는 ..

창병모, 리눅스 프로그래밍 원리와 실제(생능출판, 2022) 4.1 파일 및 파일 포인터 - 파일을 사용하기 위해서 응용 프로그램은 위 그림처럼 시스템 호출을 통해 필요할 때마다 커널에 서비스 요청 가능 - 하지만 파일을 보다 쉽게 사용하는 방법은 C언어가 제공하는 표준 라이브러리 함수를 사용하는 것 파일 - C 파일은 위 그림처럼 모든 데이터를 연속된 바이트 형태로 저장하는데 저장된 데이터에 따라 텍스트 파일과 이진 파일로 구분할 수 있음 텍스트 파일(text file) - 문자들만으로 이루어진 파일 - 한글, 영문, 숫자 등의 문자들을 포함 - 여러 개의 줄로 이루어지며 매 줄마다 \n을 포함 이진 파일(binary file) - 모든 데이터를 컴퓨터 내부의 이진수 표현 그대로 저장한 파일 - 이미지..

창병모, 리눅스 프로그래밍 원리와 실제(생능출판, 2022) 3.1 C 언어 요약 C 프로그램 구성 - 여러 개의 .c 파일로 구성 - 함수 외부에서 전역 변수(global variable)를 선언 가능, 전역 변수는 프로그램 내에 어디서나 사용 가능 이차원 배열 자료형 배열명[N][M] : 크기가 N X M인 이차원 배열 선언 포인터와 포인터 변수 포인터 : 메모리 공간의 주소 포인터 상수 : 메모리 주소 값 포인터 변수 : 주소 값(포인터)을 저장할 수 있는 변수로 다른 메모리 공간을 가리킴 - *p는 포인터 p가 가리키는 곳을 따라가 데이터가 저장도니 공간 참조

창병모, 리눅스 프로그래밍 원리와 실제(생능출판, 2022) 2.1 기본 명령어 날짜 및 시간 확인 - date 시스템 정보 확인 - hostname : 호스트 이름 - uname : 운영체제 확인 사용자 정보 확인 - whoami 디렉터리 내용 확인 - ls 패스워드 변경 - passwd 화면 정리 - clear 2.2 디렉터리 디렉터리 계층구조 * 리눅스의 디렉터리는 루트로부터 시작하여 계층구조를 이룸 디렉터리 사용 홈 디렉터리 - 현재 내가 사용하는 디렉터리 ex) /home/jeong pwd : 현재 작업 디렉터리 mkdir : 디렉터리 만듬 cd : 작업 디렉터리 이동 경로명 절대 경로명(absolute path name) : 대상 파일이나 디렉터리까지의 경로 이름을 루트 디렉터리로부터 시작 상..

React - 16.1 이벤트 state props 그리고 render 함수 - 목표 : WEB에 링크를 걸고 링크를 클릭하면 welcome에 해당되는 메시지가 나오게 할 것 - 클릭한 것에 해당되는 content 출력되게 함 - render() 함수 : 어떤 함수가 변경되면 같이 바뀜 import { Component } from 'react'; import TOC from './component/TOC'; import Content from './component/Content'; import Subject from './component/Subject'; import './App.css'; class App extends Component { constructor(props){ super(props..