NAVER AI Tech/Computer Science(9)
-
3. 리눅스(Linux)
Linux : 서버에서 자주 사용하는 OS - 오픈소스(무료), 안정성, 신뢰성이 뛰어남 터미널/콘솔 : 쉘을 실행하기 위해 문자 입력을 받아 컴퓨터에 전달 쉘 : 사용자가 문자를 입력해 컴퓨터에 명령할 수 있도록 하는 프로그램 sh : 최초의 쉘 bash : Linux 표준 쉘 zsh : MacOS 기본 쉘 쉘 기본 커멘드 mkdir : make directory ls : list segments pwd : print working directory cd : change directory cp : copy mv : move(rename시에도 사용) tree : 폴더의 하위 구조를 계층적으로 표현(readme 작성시에 유용함) vi : vim 편집기로 파일 생성 - command mode, insert ..
2023.12.27 -
2. 라이브러리 버전 관리
버전(Version) : 소프트웨어 제품의 특정 릴리스에 대한 고유한 식별자 1. CalVer(Calendar Versioning) 방식 : Ubuntu 20.04(20년 4월 수정) 2. SemVer(Semantic Versioning) 방식 : python 3.11.0 - 이전 버전과 호환되지 않는 변경이 있으면 주 번호를 증가. - 이전 버전과 호환되며 새로운 기능이 추가되었으면 부 번호 증가 - 이전 버전의 버그 수정이 진행되면 패치 번호 증가. 3. HashVer(Hash Versioning) : 해시 알고리즘을 사용하여 고유 식별자를 생성 ex) Git commit 7e6d3fd 프로젝트 문서화 시 각 라이브러리의 버전은 readme 상단에 명시해주어야 한다. 가상환경 : 하나의 컴퓨터 내에서..
2023.12.27 -
1. Software Engineering
소프트웨어란? - 컴퓨터 프로그램 + 관련 문서(readme.md) + 데이터의 집합 - 하드웨어와 대조적인 개념 - 다양한 분야가 존재 : 프론트엔드, 백엔드, 머신러닝, 데이터, 모바일 앱, DevOps, 클라우드, 보안 등등 소프트웨어 엔지니어링이란? - 소프트웨어를 개발하는 과정에서 체계적이고 효율적인 방법을 사용하여 소프트웨어의 품질과 유지 보수성을 보장하는 학문 분야. 소프트웨어 개발 라이프사이클 1. Planning 2. Analysis 3. Desing(설계) 4. Implementation 5. Test, Integration 6. Maintenance 좋은 소프트웨어 설계란? 1. 모듈성 : 여러 함수가 모여 하나의 모듈을 이루고, 모듈끼리 서로 영향을 미침 2. 응집도 : 각 모듈을 ..
2023.12.27