기타
-
-
리눅스 기초 훑기기타/리눅스 2021. 4. 23. 11:29
목차 디렉터리 구조 쉘의 종류 기본 명령어 텍스트 에디터 vi 리다이렉트와 파이프 파일 명령어 심볼릭 링크와 하드 링크 시스템 관리 네트워크 사용자 환경 설정 경로 설정 로그 설정 마운트 디렉터리 구조 디렉터리 역할 bin 바이너리 형식의 실행 파일이나 명령이 보관되어 있다. dev 디바이스 관련 파일이 보관되어있다. etc 각종 설정 파일 등 다양한 파일이 보관되어 있다. root 루트 디렉터리와 별도로 준비된 시스템 관리자용인 홈 디렉터리이다. sbin 관리자용 시스템 표준 명령이 보관되어 있다. usr 각 사용자의 데이터나 애플리케이션이 보관되어 있는 장소이다. home 이 디렉터리 아래에 사용자별 디렉터리가 만들어지고, 그곳이 각 사용자의 홈 디렉터리이다. var 애플리케이션의 기록(로그)파일이나..
-
쉘스크립트의 셔뱅 shebang기타/리눅스 2021. 3. 29. 10:10
쉘 스크립트란 쉘에서 사용할 수 있는 명령어들의 조합을 모아서 만든 배치(batch) 파일이다. 일반적으로 Python, Perl, Ruby 등 스크립트 언어는 각각의 고유한 인터프리터가 있다. 따라서 각 언어용 인터프리터를 따로 설치해야 한다. 쉘 스크립트는 특별한 경우인데, 인터프리터가 쉘 자체에 이미 포함되어 있어서 쉘에서 인터프리트 과정을 진행한다. 쉘 스크립트는 스크립트 언어로 만든 프로그램으로, 우리가 사용하는 운영체제의 쉘과 연동시키는 데에 사용된다. 스크립트는 인터프리터가 처리하고 실행하는데, 쉘 스크립트의 경우는 쉘이 직접 스크립트를 인터프리트한다. https://vallhalla-edition.tistory.com/28 아래와 같이 test.sh 를 작성하였다. 하지만 ./test.sh..
-
행위패턴 > 템플릿 메서드 *기타/디자인패턴 2021. 2. 12. 15:42
템플릿은 틀을 의미한다. 템플릿 메서드는 알고리즘의 틀을 만들기 위한 것이다. 템플릿 메서드 패턴에서는 알고리즘의 골격을 정의한다. 템플릿 메서드는 일련의 단계들로 알고리즘을 정의한 메서드를 의미한다. 여러 단계 중 일부는 서브 클래스에서 구현할 수 있다. 템플릿 메서드를 이용하면 알고리즘 구조는 유지하면서 서브클래스에서 특정 단계를 재정의할 수 있다. 커피와 차를 만드는 과정이 각각 아래와 같다. 커피 => 1.물을 끓인다. 2. 커피를 우린다. 3. 커피를 컵에 4. 설탕과 우유 추가 차 => 1.물을 끓인다. 2. 차를 우린다. 3. 차를 컵에 4. 레몬 추가 이 때 일반화를 통해 공통으로 사용 가능한 부분을 추상화한 클래스를 만든다. "1. 끓인다.", "3. 컵에"와 같은 완전히 동일한 행동이 ..
-
행위패턴 > 상태(State) *기타/디자인패턴 2021. 2. 12. 15:41
동일한 동작을 객체 상태에 따라 다르게 처리해야 할 때 사용. 일련의 규칙에 따라 객체의 상태(State)를 변화시켜, 객체가 할 수 있는 행위를 바꾸는 패턴이다. 이렇게 하나의 객체에 여러 가지 상태(예, 정지, 상승, 하강)가 존재할 때 패턴을 사용하지 않고 프로그래밍을 하면 if 문 또는 switch 문을 사용하여 처리한다. 그런데 신규 상태(예, 문 열림, 문 닫힘)가 발생하면 프로그램을 다시 수정해야 한다. 또는 상속을 통해 만든 클래스에 새로운 기능을 추가할 때 일부 하위 클래스에서는 신규 기능이 필요하지만, 일부 클래스와는 무관할 때는? 뽑기 기계를 예시로, 동전없음, 동전있음, 알맹이 매진, 알맹이 판매 라는 네개의 상태를 가지는 뽑기 기계가 있다고 하자. public class Gambl..
-
행위패턴 > 옵저버 *기타/디자인패턴 2021. 2. 12. 15:39
객체의 상태변화에 따라 다른 객체의 상태도 연동되도록 일대다 객체 의존 관계를 구성 데이터 변경이 발생했을 경우 상대 클래스나 객체에 의존하지 않으면서 데이터 변경을 통보하고자 할 때 유용 Subject 와 Observer 는 서로를 변수로 가지고 있는다. Observer 는 생성자에서 받은 subject 를 registerObserver(this)로 등록해두고, Subject 에서는 자신에게 변화가 있을 때 Observer notify 를 호출한다. push방식, poll 방식으로 구현할 수 있다. Product 에 상태에 변화가 생기면 Observer 에서 이를 감지하고 ProductDisplay 에게 알려준다. public class ObTest { public static void main(Str..
-
행위패턴 > 이터레이터 *기타/디자인패턴 2021. 2. 11. 15:19
객체를 컬렉션에 저장할 때는 배열, 스택, 해시테이블 등 장단점을 따져 적합한 컬렉션을 선택해 이용한다. 클라이언트에서 모든 객체들에 일일이 접근하는 작업을 하고자할 때, 어떤 식으로 저장했는지 노출하지 않으면서 접근할 수 있도록 하는 방법과 객체들로 구성된 슈퍼 컬렉션에 대해 알아본다. A 식당과 B 식당이 합병하기로 했는데 A 식당은 메뉴를 ArrayList 에 B식당은 배열에 저장한다. Waitress 는 메뉴를 출력하려면 배열과 리스트 각각의 순환문을 작성해야 한다. Waitress 가 구상클래스 MenuItem[] 과 ArrayList 에 직접 연결되어있다. public class Waitress { PancakeHouseMenu pancake; DinerMenu diner; public Wai..
-
행위패턴 > 커맨드 *기타/디자인패턴 2021. 2. 11. 10:14
Invoker 와 Command 의 생명주기 같음 ConcreateCommand 는 Command 의 일반화 Client 는 ConcreteCommand 를 의존 객체의 행위( 메서드)를 클래스로 만들어 캡슐화 하는 패턴 어떤 객체(A)에서 다른 객체(B)의 메서드를 실행하기 위해 객체(B)를 의존하는 것을 방지 또한 기능이 수정되거나 변경이 일어날 때 A 클래스 코드를 수정없이 기능에 대한 클래스를 정의하면 되므로 시스템이 확장성이 있으면서 유연해진다. Client 클래스 RemoteLoader 는 concreteCommand 를 생성하고 Receiver 를 생성한다. Receiver Light, Garage 는 요구 사항을 수행하기 위해 어떤 일을 해야 하는지 알고 있는 객체이다. ConcreteCo..