- Scenario one
- 저자는 3개 커밋 로그를 남겼다
- 4번째 커밋이 잘못됐다
- 3번째 커밋으로 되돌리고 싶다(로컬저장소 혹은 working directory에도 3번째 커밋으로 동기화 시키고 싶다)
- reset 혹은 revert을 할 지 햇갈린다
- 3번째 커밋으로 돌아가는 revert를 시도 하였다.
- 저자의 예상: 로컬저장소 혹은 working directory에도 3번째 커밋으로 동기화가 일어났다)
- 실제 결과: to be continued....
- revert vs reset
- reset은 Head를 변경시키고 revert는 Head를 최신상태로 유지하면 서 변경시킨다 continued....
-
Layer 1 관련 개념
- 토폴로지: 네트워크가 구성되는 위상
- 라우팅 루프: 패킷이 회로에서 무한 반복 돈다
- 트리 네트워크: 컴퓨터 네트워크가 주로 구성되는 방식, 위상
- 트레픽 엔지니어링: 패킷 충동을 방지하기 위한 기술
- 패킷: 고정 길이 이다. 왜냐하면 파일 사이즈 만큼 패킷을 지정한다면 팻킷이 누락되거나 회로를 다른 패킷과 공유하기 어렵기 때문이다.
- bandwidth delay, propagation delay, store and forward delay queuing delay은 ethernet 혹은 WIFI의 속도 혹은 성능을 측정 개념 용어이다.
-
용어 정리
- LAN(Local Area Network): 네트워크의 물리적 개념이고 컴퓨터간 상호 연결하는 네트워크이다.
- datagram forwading: NAT, 방화벽, sliding_windows, 패킷 충돌, packet based switching, routing 따위와 연관 되는 기술이다.
- data rate: kbps, mbps, 데이터 전송 성능이다. Throughput bandwith 개념과 연결되는 용어이다.
- TTL(Time To Live): 패킷이 라우터를 지날떄마다 1씩 감소한다. 주로 64로 설정되어 있으며 라우팅 루프 현상을 방지한다.
-
layer 1 정리 결론
- 네트워크가 초기에 구성될때의 모습이다. IP 프로토콜이 만들어지기 이전의 네트워크 구성이다.
-
ubuntu
-
about Ubuntu
- 유분투는 데비안 구조와 인프라를 기반으로 한다. 6개월마다 업데이트(LTS:release every two years) 되며 데스크탑 서버, IOT 와 로봇 에디션이 있다.
- 공식 웹사이트
- 데스트탑 버젼 다운로드
-
Ubuntu 권한 설정 명령어들
- 리눅스 시스템에서 보안은 먼저 시스템에 대한 사용자 계정 및 서비스 엑세스를 제한하는 것이다. 그런 후, 보안은 주위가 설정 한대로 방어가 되었다는 것을 의미한다.
- 사용자 및 그룹 작동하기
- su 혹은 sudo로 root 사용자를 사용한다
- root 로그인을 비활성화 시켜 보안을 강화한다.
- root 유저 비밀번호 변경 참고:URL
-
내장된 방화벽 추축하기
-
시스템 로그 구성하기
-
고급 보안 기능
- 보안 강화 리눅스(SELinux)
-
패키지 설치 명령어
- apt-get install [패키지명]
-
디스크 공간 체크 명령어
- df -h --total
-
그 외 Linux man pages 참고
-
로그 기록 작업: 참고
-
백업 작업: 참고
-
vim
- copy & paste: 참고
-
history 명령어 실행: 보기
-
-
centOs
- about CentOs
- 레드헷 제휴로 개발한 커뮤터 운영체제이다. 무료 기업용 컴퓨팅 플랫폼을 제공할 목적으로 만들어진 리눅스계 운영 체제 가운데 하나이다.
- 레드헷 엔터프라이즈 리눅스의 소스 코드를 그대로 가져와 빌드해 내놓으며 이과정에서 이루어지는 변형은 레드헷의 상표가 잘리고 그자리에 CentOS의 상표가 붙는(상표권 분쟁을 피하기 위해) 정도뿐이다.
- 공식 웹사이트
- CentOS 다운로드
- about CentOs
-
데비안과 레드헷 엔터프라이즈 리눅스 또는 페도라 시스템의 차이점
- 리눅스 설치 과정은 복잡하다. 우분트는 이러한 설치과정을 보편적인 사용자가 수용할 수 있는 부분만 제외하고 나머지는 자동화해 놓음으로써 몇 번을 클릭만으로 설치가 가능하다. 레드헷 시스템의 경우에는 사용자에게 워크스테이션 도는 서버, 설치할 개별 패키지 선택, 그리고 설정 옵션등 많은 설치 옵션을 제공한다.
- 소프트웨어 관리 툴
- 데비안: APT(Advanced Package Tool): 설치, 사제, 질의 업데이트 기능 사용
- 레드헷: RPM
- GUI 툴이나 드롭다운 메뉴에서의 이들의 위치 등은 완전히 다르다.
-
VPC(Virtual Private Cloud): AWS에서 제공하는 가상 컴퓨팅(네트워크) 경이다.
참고: AWS VPC란 무엇입니까? -
Region: VPC가 생성될 지리적 위치이다. 필자는 ap-northeast-1으로 설정하였다.
참고: 리젼마다 서비스 제약이 있을수 있다. -
IAM(Identity and Access Management) 에서 aws console 로그인 권한 정책을 설정할 수 잇다.
-
루트 사용자로 콘솔에 로그인한다
-
EC2 인스턴스(RedHet, t2.micro)를 생성해 보겠다.
키 페어를 생성한다.
참고: 키 페어란 public_key로서 AWS EC2에 로그인할떄의 필요한 공개키이다.
인스턴스가 특정한 아이디로 등록되었으며 생성중이다.
putty로 SSH 접속 시도해 보겠다.
- 배포 환경: AWS elastic beansstalk, docker
npx create-react-app
으로 샘플 보일러플레이트 앱을 만든다.- Dockerfile을 만든다.
FROM node:16
WORKDIR '/app'
COPY package.json ./
RUN npm install
COPY . .
RUN npm run build
#FROM nginx
#COPY --from=0 /app/build /usr/share/nginx/html
- github에 레포지토리를 만든다
- aws elastic beanstalk에 환경을 구축한다.
- github 마스터 브렌치에 푸시한다.
- github actions에 워크플로우를 세팅한다.
name: Deployment From Github To AWS
on:
push:
branches:
- master
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Latest Repo
uses: actions/checkout@master
- name: Generate Deployment Package
run: zip -r deploy.zip * -x "**node_modules**"
- name: Get timestamp
uses: gerred/actions/current-time@master
id: current-time
- name: Run string replace
uses: frabert/replace-string-action@master
id: format-time
with:
pattern: '[:\.]+'
string: "${{ steps.current-time.outputs.time }}"
replace-with: '-'
flags: 'g'
- name: Deploy to EB
uses: k89jy/beanstalk-deploy@v18
with:
aws_access_key: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws_secret_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
application_name: simple-engineer-deployment-tutorial
environment_name: SimpleEngineerDeploymentTutorial-env
version_label: "the-simple-engineer-deployment-${{ steps.format-time.outputs.replaced }}"
region: ap-northeast-1
deployment_package: deploy.zip
- github settings 에서 AWS_ACCESS_KEY_ID와 AWS_SECRET_ACCESS_KEY를 등록한다.
- 세팅을 완료한다.
- 코드를 마스터 브랜치에 푸시하면 CI/CD가 실행된다.
-
설치 과정
-
설치 확인 명령어:
node -v
현제 필자의 컴퓨터에는 12.13.0 버젼이 설치되어있다.
- 웹 프레임 워크인 express를 설치해 보겠다.
-
package.json 파일
-
npm install expresss --save
을 통해 express를 설치한다. -
다음 프로세스: 참고
-
- express 폴더 구조
npm install -g express-generator
express
명령어를 통해 folder 구조를 잡는다.- 미들웨어 작성: 참고
- html 파일 랜더링: 참고
- 라우터 파일
res.render('[파일명].html
, [json 포맷]' - app.js 파일 코드
app.use(express.static('views'));
app.use(express.static(path.join(__dirname, 'public/html')));
app.set('views', path.join(__dirname, '/views'));
app.engine('html', ejs.renderFile);
app.set('view engine', 'ejs');
hoisting
- 변수 선언이 함수 맨 위로 간다 예시 코드 ))
var a = "first"
var b = "second"
var c = "third"
console.log(d)
var d;
추측 된 결과: reference error 실제 결과 : undefined
var a = "first"
var b = "second"
var c = "third"
d = "fourth"
console.log(d)
var d;
실제 결과 : fourth
이런 현상을 hoisiting이라고 한다
hoisiting의 단점:
browser의 성능을 떨어뜨린다.
var 는 중복 선언이 가능하다
let은 중복 선언이 불가능 하므로 var를 권장하지 않는다
const 최초의 할당한 데이터를 변경 할수 없다(상수 선언)
-
파이썬3 설치
sudo apt-get install python
-
파이썬 버전(설치) 확인
python3 --version
-
파이썬 실행
python3
- 포스트맨 다운로드 다운로드 링크
- rds접속을 위해 client용으로 mySql Workbench를 사용해 보겠다.
- git pull vs git clone 참고
-
Ubuntu에서 docker 설치
- 구버전 삭제
$ sudo apt-get remove docker docker-engine docker.io containerd runc$
-
Docker repositroy를 설치 한다
sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common
-
Docker 공식 GPG키를 설치 한다.
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- 키 finger print가 있는지 검색한다
$ sudo apt-key fingerprint 0EBFCD88
- 안정적인 repository를 셋업한다
sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"
-
Docker 를 설치 한다
sudo apt-get install docker-ce docker-ce-cli containerd.io
* Docker 엔진이 설치 되어 있는지 확인한다
sudo docker run hello-world
-
Docker ngnix 설치 실습 [참고]:(https://minimilab.tistory.com/8)
- docker 프로세스 확인
docker -ps
- docker 프로세스 삭제
docker rm [container-id]
- docker 이미지 삭제
docker rmi [이미지 이름]
- docker 파일 build
docker build [OPTIONS] PATH | URL | -
- 협업 도구인 slack 사용법을 알아보자
- 협업 도구인 Trello 사용법을 알아보자