일단 씻고 나가자
23.05.12 본문
2023. 05. 12 금요일
- putty gen이란? 우분투란?
: AWS 공식 가이드. 발급받은 private key를 활용하여 .ppk라는 파일을 만들고, 해당 파일로 바로 AWS 서버로 접근할 수 있도록 하는 프로그램을 만들어주는 역할의 프로그램.
Ubuntu. 리눅스의 여러 버전이나 프로그램 등을 묶어서 활용할 수 있도록 만들어 둔 패키지.
- 리눅스의 운영 철학 (폴더)? 쉘? 쉘의 종류?
: 모든 것은 파일이라고 생각하여 모든 인터렉션(처리)은 파일을 읽고 쓰는 것처럼 이루어짐.
즉, 마우스나 키보드 같은 모든 디바이스를 제어할 때도 읽고 쓰는 것처럼 제어함.
windows와 다르게 C드라이브같은 드라이브 개념이 없으며, 전역 네임스페이스를 사용함.
전역 네임스페이스란 모든 것을 폴더화 하여 루트 폴더 하위에 존재하는 개념이며, 드라이브 제어 내용 혹은 일반 파일 모두 루트 하위 폴더에 존재한다.
쉘(shell)이란 사용자의 명령어를 해석하여 시스템 콜로 전환하여 커널에게 전달하고 소통하는 역할.
쉘에도 종류가 있으며, 우분투가 아닌 또 다른 패키지에는 각각의 또 다른 쉘을 채택하여 구성하고 있을 수 있다. (우분투 – bash)
bash (Bourne-Again Shell) // GNU 프로젝트의 일환으로 개발. 리눅스의 거의 디폴트.
sh(Borune Shell) // bash보다 가벼우므로 작은 컴퓨터에 사용,
csh(C shell),
ksh(Korn Shell) // UNIX에서 가장 많이 사용
- bash 명령어?
clear – 화면 글 모두 지움.
whoami – 현재 로그인한 사용자의 ID 출력.
// (root : 슈퍼 관리자 아이디. 보안과 실수의 문제로 사용하지 않는다.)
sudo ~ – 슈퍼 관리자의 권한으로 실행하는 명령. 해당 접속 ID가 권한을 가진 경우,
system 접근 등의 슈퍼 관리자에서 사용할 수 있는 명령을 가능하게 해준다.
// (apt-get update – 패키지 내의 여러 프로그램들을 최신 버전으로 업데이트해줌.)
- [Git] tag의 생성 원리?
: branch와 같은 원리이다. light weight tag의 경우 단지 refs/tags 폴더의 하위에 해당 태그명 파일이 생기는 것뿐이며, 해당 파일에는 최신 commit의 로그만이 담겨 있다. 즉, 직접 해당 폴더로 가서 태그명의 파일을 생성하는 것과 다르지 않다.
단 annotated tag의 경우는 조금 다른데, annotated tag의 경우 commit의 로그를 담은 파일을 가리키는 것이 아닌 type, 태그명, 태그 작성자, 태그 메시지를 담은 파일에 대한 로그를 담고 있다.
- [Effective Java] clone의 문제와 주의점?
: 통상 배열 같은 자료구조를 복사할 때 clone 함수를 사용하는데, 이는 swallow copy가 아닌 deep copy라 하더라도 이용자의 의도를 벗어날 수 있다. 예를 들어 객체 a를 담은 배열 A를 배열 B가 clone 했더라도, 각 배열에 담긴 a는 같은 레퍼런스를 가리키고 있기에 둘 중 한 곳에서 a를 수정하면 둘 모두 반영이 된다.
이를 방지하는 방법으로는 Copy Constructor or Copy Factory method가 있다.
conversion constructor는 생성자의, conversion factory는 static method의 매개변수로 동일 클래스의 객체를 담아 복사하는 방법이다. (필드를 일일이 받아 만드는 생성자와 차이가 있다)
어쨌든 clone은 불완전하고 위험하므로, primitive type이 아닌 배열에 대해선 사용하는 것이 권장되지 않는다.