[네이버 부스트캠프 AI Tech] 7주차 학습정리
소프트웨어 공학의 중심적인 목표
- 유지보수와 확장이 쉬운 소프트웨어를 설계하는 것
- 시간이 지나면서 발생할 수 있는 변화에 쉽게 적응하고, 필요에 따라 기능을 추가하거나 수정할 수 있어야 함
- 해당 소프트웨어가 장기적으로 효과적으로 작동하고, 기술 발전이나 사용자의 요구 변화에 유연하게 대응할 수 있도록 보장하게 됨
버저닝 (버전을 정의하는 방법) 세 가지
1. CalVer (Calendar Versioning)
- 날짜 기반 시스템 사용
- 번호 구성 : 연도.월.{패치버전}
ex. Ubuntu 22.04
2. SemVer (Semantic Versioning)
- 주 번호.부 번호.패치 번호
- 주 번호 증가 : 이전 버전과 호환되지 않은 변경이 있는 경우
- 부 번호 증가 : 이전 버전과 호환되며 새로운 기능이 추가된 경우
- 패치 번호 증가 : 이전 버전의 버그 수정이 진행된 경우
ex. Python 3.12.0
3. HashVer (Hash Versioning)
- SHA-1, SHA-256 해시 알고리리즘을 사용해 버전에 대한 고유 식별자 생성
- 코드가 변경될 때마다 해시가 변경됨 → 모든 버전이 고유한 식별자를 가짐
ex. GIt commit 7e6d3fd
리눅스 쉘 커맨드 - 기본
# 쉘 커맨드 매뉴얼 문서 보기 (종료 ':q')
man python
# 폴더 생성 (Make directory)
mkdir folder-name
# 파일 확인 (List segments)
ls
ls -a # 전체 파일 출력
ls -l # permission, 소유자, 생성 날짜, 용량 출력
ls -lh : human 이 잘 읽도록 GB, MB 표현 (-l 과 같이 사용)
# 현재 폴더 경로 표시 (Print working directory)
pwd
# 폴더로 이동하기 (Change directory)
cd fodler-name
# 터미널에 텍스트 출력
echo "hi"
echo `pwd` # 쉘 커맨드의 결과 출력
# 파일 / 폴더 복사 (Copy)
copy vi-test1.sh vi-test2.sh # -r : 재귀, -f : 강제
# 관리자 권한으로 실행 (superuser do, substitute user do)
# sudo rm -f / # 절대... 쓰지 말 것...
# 파일 / 폴더 이동 (또는 이름 변경, move)
mv vi-test.sh vi-test3.sh
# 특정 파일 내용 출력 (Cancatenate)
cat vi-test.sh
cat vi-test2.sh vi-test3.sh # concat
cat vi-test2.sh vi-test3.sh > new_test.sh # overwrite)
cat vi-test2.sh vi-test3.sh >> new_test.sh # append)
# 터미널 내용 지우기
clear
# 쉘 커맨드 history 출력
history # !number 입력 시 해당 커맨드 다시 사용 가능
# 파일 / 디렉토리 검색
find . -name "File" # 현재 폴더에서 File 이란 이름의 파일/디렉토리 검색
# 환경 변수 설정 (터미널 끄면 사라짐)
export water="물" # 설정
echo $water # 확인
# 환경 변수 설정 (저장)
vi ~/.zsh # vi ~/.bash
export water="물" # Esc :wq
source ~/.zshrc # source ~/.bashrc
# 명령어의 별칭 설정
alias # 현재 별칭들 출력
alias ll = 'ls -l' # 이미 설정되어 있음
# 폴더의 하위 구조 계층적으로 출력
tree -L 1 # 1단계까지 보여주기
tree -L 2 # 2단계까지 보여주기
# 파일의 앞/뒤 n행 추력
head -n 3 vi-test.sh
tail -n 3 vi-test.sh
# sort : 행 단위 정렬
vi fruits.txt # 파일 생성
banana
apple
orange
apple # 입력
ESC :wq # wirte and quit
cat fruits.txt | sort # 오름차순 정렬
> apple
> apple
> banana
> orange
cat fruits.txt | sort -r # 내림차순 정렬
> orange
> banana
> apple
> apple
# uniq : 중복 제거 (sort 와 함께 사용, -c : 중복 행의 개수 출력)
cat fruits.txt | uniq
cat fruits.txt | sort | uniq
cat fruits.txt | uniq | wc -l
cat fruits.txt | sort | uniq | wc -l
# 파일에 주어진 패턴 목록과 매칭되는 라인 검색
grep [옵션] [패턴] [파일명]
[옵션]
-i : insensitively하게, 대소문자 구분x
-w : 정확히 그 단어만
-v : 특정 패턴 제외한 결과 출력
-E : 정규 표현식 사용
[정규 표현식 패턴]
^단어 : 단어로 시작하는 것 찾기
단어$ : 단어로 끝나는 것 찾기
. : 하나의 문자 매칭
grep -i "boost" grep_file
> boostcamp
grep -i "^b" grep_file
> boostcamp
grep -i "p$" grep_file
> boostcamp
# cut : 파일에서 특정 필드 추출
-f : 잘라낼 필드 지정
-d : 필드 구분자 (default : \t)
vi cut_file
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
ESC :wq
cat cut_file | cut -d : -f 1,7
> root:/bin/bash
> bin:/sbin/nologin
> daemon:/sbin/nologin
vim
# vim 편집기로 파일 생성
vi vi-test.sh
# i 로 insert 모드 변경
# ESC :wq (write and quit)
# ESC :wq! (강제 저장 후 나가기)
# ESC :q (그냥 나가기)
세 가지 모드
1. Command Mode (기본 모드)
- 방향키로 커서 이동 가능
dd # 현재 위치한 한 줄 삭제
i # insert 모드로 변경
x # 커서가 위치한 곳의 글자 1개 삭제 (ex. 5x : 문자 5개 삭제)
yy # 현재 라인 복사
p # 다음 줄에 붙여넣기
k # 커서 위로
j # 커서 아래로
l # 커서 오른쪽으로
h # 커서 왼쪽으로
2. Insert Mode
- 파일 수정 가능
- ESC 입력 시 Command mode 로 전환
3. Last Line Mode
- ESC + : 입력시 나옴
w # 현재 파일명으로 저장
q # vi 종료 (저장x)
q! # vi 강제 종료
wq # write and quit
/문자 # 문자 탐색 (n : next 탐색 실행)
set nu # print vi 라인 number
bash
# bash 로 쉘 스크립트 실행
bash vi-test.sh # 실행 시 앞서 작성한 'hi' 출력
- 터미널에서 Tab 입력 시 자동 완성
리눅스 쉘 커맨드 - 서버에서 자주 사용
# 현재 실행 프로세스 출력 (Process Status)
ps
ps -e # 모든 프로세스
ps -f # full format
# Data Transfer (Client URL)
curl -X localhost:5000/ {data}
- httpie, postman 등도 있음
# Disk 용량 확인 (Disk free)
df -h
# ssh 를 이용해 네트워크로 연결된 호스트 간 파일 주고 받기 (secure copy)
-r : 재귀적으로 복사
-P : SSH port number 지정
-i : SSH 설정을 활용해 실행
## local -> remote
scp local_path user@ip:remote_directory
## remote -> local
scp user@ip:remote_directory local_path
## remote -> remote
scp user@ip:remote_directory user2@ip2:target_directory
# 백그라운드 실행 (터미널 종료 후에도 작업 유지)
nohup python3 app.py & # 해당 파일 permission 755 여야함
ps ef | grep appy.py
kill -9 $pid
> nohup.out 에 로그 저장
- screen 도 있음
# 파일 권한 변경 (chagne mode)
r (read) : 4
w (wirte) : 2
x (execute) : 1
- (denied)
r-x : read write O, 수정 x
chmod 755 vi-test.sh # 755 로 퍼미션 변경
'🖤네이버 ai tech' 카테고리의 다른 글
[네이버 부스트캠프 AI Tech] 5주차 회고 (2) | 2023.12.08 |
---|---|
[네이버 부스트캠프 AI Tech] 4주차 회고 (0) | 2023.12.01 |
[네이버 부스트캠프 AI Tech] 3주차 회고 (0) | 2023.11.24 |
[네이버 부스트캠프 AI Tech] 2주차 회고 (0) | 2023.11.17 |
[네이버 부스트캠프 AI Tech] 1주차 회고 (0) | 2023.11.10 |
댓글
이 글 공유하기
다른 글
-
[네이버 부스트캠프 AI Tech] 5주차 회고
[네이버 부스트캠프 AI Tech] 5주차 회고
2023.12.08 -
[네이버 부스트캠프 AI Tech] 4주차 회고
[네이버 부스트캠프 AI Tech] 4주차 회고
2023.12.01 -
[네이버 부스트캠프 AI Tech] 3주차 회고
[네이버 부스트캠프 AI Tech] 3주차 회고
2023.11.24 -
[네이버 부스트캠프 AI Tech] 2주차 회고
[네이버 부스트캠프 AI Tech] 2주차 회고
2023.11.17