Note 18

[Docker] 도커(Docker)란 무엇인가

개념적으로 정리를 한 번 해놓으면 앞으로 사용하는데 있어서 도움이 될 것 같아서 남기는 포스팅입니다. 이 글을 초보를 위한 도커 안내서 글을 참고하여 작성한 글입니다. 먼저, 도커란 컨테이너 기반의 오픈소스 가상화 플랫폼이다. 단어를 하나씩 살펴보자, 먼저 컨테이너는 위에 그림에서 직관적으로 느낄 수 있는 그 느낌과 같다고 보면된다. 무언가가 담겨있는? 혹은 담을 수 있는 공간이다. 그렇다면 오픈 소스는 무엇인가, 오픈 소스는 말 그대로 공개되어 있어서 누구나 사용할 수 있는 것이다. 다음으로 가상화이다. 가상화는 실제 환경이 아닌 가상의 환경으로 만드는 것이다. 플랫폼은 실행가능한 무언가로 간단하게 정리를 해볼 수 있다. 한 줄로 풀어서 정리를 해보면, 가상의 환경을 만들어 컨테이너에 담아 실행가능한 ..

Note 2022.02.08

[디자인패턴] Prototype Pattern - 프로토타입 패턴

프로토타입 패턴이란? 프로토타입은 보통 프로젝트에서 시제품, 시안 정도로 해석되는 공대에서 많이 쓰는 용어다. 프로그래밍에선 디테일한 의미가 조금 다르긴 하다만, 그 맥락과 뜻은 같이 하는 것 같다. 먼저, 공대에서 사용하는 프로토타입에 대해 간략하게 알아보자. (내가 이해한 부분임) 많은 전공 과목을 수강하며 프로토타입이란 단어를 한 학기도 들어보지 않았던 적이 없었다. 당시 이해했던 프로토타입은 제품의 기능을 빠르게 테스트하기 위해 만드는 시제품이라는 생각이었다. 그래서 구상하고자 하는 완성된 제품의 기능을 테스트 할 때 항상 프로토타입을 만들어서 테스트를 하곤 했다. 본격적인 프로그래밍, 디자인패턴에서의 프로토타입에 대해 살펴보자. 먼저, 가장 중요한 킹키백과의 내용은 다음과 같다. 프로토타입 패턴..

Note 2021.12.20

[디자인패턴] Singleton Pattern - 싱글톤 패턴

싱글톤 패턴에 대해 ㅇrㄹr보ㅈr. 싱글톤 패턴도 예전에 데코레이터 패턴이나 프록시 패턴처럼 이름에서부터 느낌이 오는 경우의 디자인 패턴이다. 뭔가 싱글톤하면 '하나'인 느낌이다. 싱글톤 패턴을 공부하면서 계속 싱글톤, 싱글톤을 되뇌이는데 자꾸 아래의 짤이 생각이난다. 혼자야? 어, 아직 싱글이야 싱글톤 패턴이 주는 어감에서 알 수 있듯이 한 개에 뭔가 집착을 하는 것처럼 보인다. 싱글톤 패턴은 객체를 딱 한 번만 생성해서 사용하는 패턴이다. 그렇다면 왜? 한 번만 생성해서 사용하는지 그 이유가 궁금하다. 여러 블로그를 뒤적거렸고, 사용하는 이유에 대해 공통적으로 포스팅한 것을 나름 정리를 해보았다. * 싱글톤 패턴 사용 이유 1. 최초 한 번의 new 연산자를 통해, 고정된 메모리 영역을 사용한다. 따..

Note 2021.12.19

[디자인패턴] Decorator Pattern - 데코레이터 패턴

Decorator Pattern은 단어에서 주는 느낌 그대로 받아들이면 될 듯하다. 데코레이터는 말 그대로 원래의 기본 무언가에서 추가로 꾸며주는 역할을 하는 것을 칭한다. 데코레이터 패턴도 마찬가지다. 기본 기능이 있고, 추가 기능을 덧붙일 때 사용하게 되는 패턴이다. 이 패턴을 사용하게 되면 좋은 이유는 서브 클래스 수를 늘리지 않아도 된다. 이 말이 무슨 헛소리인가. 이상한 소리처럼 들릴 수 있겠지만 차근차근 예제를 통해 살펴보도록 하자. 개인적으로 서브웨이를 참 좋아한다. 그리고 야채를 많이 넣는 것을 굉장히 좋아한다. 또 어느 누군가는 육류를 많이 넣는 것을 좋아하고 야채를 싫어하는 사람도 있다. 또 야채와 고기의 비율을 중요시 여기는 사람도 있다. 그래서 야채파, 고기파, 야채 + 고기파 이렇..

Note 2021.12.18

[디자인패턴] Composite Pattern - 복합체 패턴

이름부터 아리송한 복합체 패턴(Composite Pattern)은 일괄적인 관리를 위해 고안된 패턴이다. 복합 개체와 단일 개체를 같은 방법으로 사용하고자 할 때 사용하는 패턴이다. 이게 무슨 말일까 ? 역시 추상화를 해보면 조금 이해하기 쉬울 듯 하다. 도형 삼각형, 사각형, 원을 그리고 삼각형과 사각형을 그룹화 지었다고 가정하자. 그렇다면 (삼각형, 사각형) / 원 이런식의 두 그룹으로 나뉘게 된다. 이제 이 도형들에게 색을 입힐 것인데 색을 입히는 행위는 그룹이 되어 있건 안되어 있건 하나의 버튼으로 동작하게 된다. 이처럼 하나의 객체처럼 동작하는 다수의 객체가 있는 경우에 적용이 가능하다. 이 말을 위의 예제에 빗대어 설명하자면 색을 칠하는 동작(하나의 객체처럼 동작)하는 삼각형, 사각형, 원(다..

Note 2021.12.17

[디자인패턴] Factory Pattern - 팩토리 패턴

팩토리 패턴은 말 그대로 공장이다. 공장은 무엇을 하는가를 생각해보면 조금 이해가 쉽다. 공장은 무언가를 생성하는 곳이고, 그것을 대량으로 찍어내기도 한다. 핵심 키워드를 조금 더 좁혀본다면, 생성과 찍어내기이다. 그래서 학문적으로 팩토리 패턴은 어떤 상황에서 조건에 따라 객체를 다르게 생성해야 할 때, 분기에 따른 객체의 생성을 직접하지 않고, 팩토리 라는 클래스에 위임해서 이를 처리하게 한다. 라고 적혀있다. 역시, 학문적인 접근은 굉장히 투박한 것 같다. 역시 추상화를 적용해보자. 색칠 공부를 하려고 한다. 색칠 공부를 하기 위해선 스케치만 되어있는 밑 그림이 필요하다. 이러한 밑 그림을 개인이 그리고 색칠까지 하려면 굉장히 많은 프로세스를 본인이 부담하게 된다. 따라서, 밑 그림을 다양하게 제공하..

Note 2021.12.16

[디자인패턴] Proxy Pattern - 프록시 패턴

프록시 패턴을 알기 위해선, 먼저 프록시(Proxy)가 무엇을 의미하는 것인지 알아야 한다. Proxy는 대리, 대신이라는 뜻을 갖고 있다. 그 말인 즉슨, 프로그래밍에서 프록시는 무엇인가를 대신, 대리로 처리해준다는 것이다. 이를 현실 추상화하여 빗대어보면 비서의 역할과 많이 닮아있다. 그래서 학문적으로 프록시 패턴은 어떤 다른 객체로 접근하는 것을 통제하기 위해 그 객체의 대리자 역할을 수행하게 하는 객체라고 정의하고 있다. 프록시는 자신의 의견 반영을 할 수 없고, 단지 제어의 흐름을 변경하거나, 다른 로직 수행 시 사용한다. 이를 다시 추상화하여 비서의 역할로 빗대어 보면 비서는 회장에게 의견을 반영해서 수정 작업을 할 수 없다. 오로지 전달만 할 뿐이다. 회장이 각 부서 팀장에게 전달을 하고자 ..

Note 2021.12.15

[디자인패턴] Template Method Pattern - 템플릿 메서드 패턴

Template Method Pattern은 일 처리의 단계를 미리 정해놓고 자세한 내용은 나중에 처리하도록 강제하고 싶을 때를 위한 패턴이다. 이를 위해 자바에서 제공하는 추상클래스를 살펴보자. * Abstract Class vs Interface의 비교 public interface Interface { public String showName(); } public abstract class AbstractClass { public String showName(); // body가 없으므로 Error! } * 자바의 인터페이스는 원하는 메서드를 미리 선언하고, 선언된 메서드를 상속받은 객체(구현체)가 구현하도록 강제하는 역할을 한다. * 자바의 추상클래스는 인터페이스와 같은 의도이지만, 컴파일러는 "..

Note 2021.12.08

[MacOS] 응용프로그램을 열 수 있는 권한이 없습니다.

본격적으로 코드 작성을 위해 STS를 실행했더니, 맥린이에게 시련이 닥쳤다. 처음보는 화면이었다..놀라서 캡쳐를 못했지만 문구는 다음과 같았다. 응용 프로그램을 열 수 있는 권한이 없습니다. STS라는 프로그램이었고, STS 응용 프로그램을 열 수 있는 권한이 없다고 나오더라..그래서 구글링을 열심히 해보았고, 총 세 가지 방법을 시도해보았다. 첫 번째 방법은 응용프로그램의 모든 권한 기록을 삭제하고 다시 부여하는 과정이었다. 근데 STS가 디렉토리에서 보이질 않아서...실패했고 두 번째 방법은 애플 공식 서포트 사이트를 참고해보았다. App Store 외부에서 배포된 모든 앱은 Apple에서 발급한 개발자용 ID 인증서(개인 키와 조합)로 서명해야 하며 기본 Gatekeeper 설정으로 앱을 실행하기 ..

Note 2021.10.22

[정보처리기사] 2021년 정보처리기사 3회 실기 기출

실제 문제 순서는 본 포스팅의 순서와 다르니, 이 점 참고하시길 바랍니다. 1. class Connection { private static Connection _inst = null; private int count = 0; static public Connection get() { if (_inst == null) { _inst = new Connection(); return _inst; } return _inst; } public void count() { count++; } public int getCount() { return count; } } public class Testcon { public static void main(String[] args) { Connection conn1 = C..

Note 2021.10.18