본문 바로가기

분류 전체보기

(249)
맥에서 파이썬 설치부터 가상환경까지 Mac 에서 파이썬 가상환경을 설치하는 과정에서 겪었던 시행착오들을 정리해본다. 나는 macOS Catalina 10.15.3 버전을 사용중이다. 하드웨어는 19년도 16' 실버 사용하고 있다. (네.. 다음 TMI) Mac 에서의 파이썬 먼저 위 버전으로 Mac 을 설치하면 기본 파이썬이 OS 에 딸려있다. 터미널에서 다음 명령어로 확인해보면 된다. $ which python /usr/bin/python $ which python3 /usr/bin/python3 실제로 /usr/bin 에 가서 해당 명령어 파일들을 확인해보면 다음과 같다. 정리하면 python 입력 -> python2.7 을 실행시킨다. (즉 python 과 python2 는 동일하다.) python3 입력 -> python3 을 실행..
[디자인 패턴 14편] 행동 패턴, 책임 연쇄 (Chain of responsibility) 1. 개념 책임 연쇄 패턴은 요청을 처리하는 동일 인터페이스 객체들을 체인 형태로 연결해놓는 패턴이다. 앞의 객체의 요청을 처리하지 못할 경우, 같은 인터페이스의 다른 객체에게 해당 요청을 전달한다. 1.1. 구조 Handler 요청을 처리하는 목적의 추상 클래스 ConcreteHandler 가 이를 상속받아 HandleRequest() 를 구현한다. ConcreteHandler Handler 를 상속받아 요청 처리를 구현하는 구체적인 클래스 1.2. 장단점 이것도 역시 상황에 맞게 사용되는거라 딱히 장단점을 말할 수 는 없을 듯? 1.3. 활용 상황 말 그대로 객체가 동일한 인터페이스(기능)을 갖되 요청을 처리는데, 이 요청을 처리하지 못할 시, 이걸 처리해줄 그 다음 객체를 지정해야 할 때. 요청을 ..
[디자인 패턴 13편] 행동 패턴, 상태 (State) 1. 개념 상태 패턴은 상태 자체를 객체화함으로써, 상태에 따른 액션도 상태 객체에 내부에 구현하는 패턴이다. 덧붙이면, 보통 객체를 추상화할 때 행동의 주체가 클래스, 대상이 하는 행동이 메쏘드로 정의되고,해당 대상의 상태는 속성으로 정의된다. 따라서 현재 주체의 상태에 따라 행동이 다를 경우, 상태에 조건문을 두어 행동을 다르게 하는 경우가 많다. 그런데 이러면 상태의 종류가 많아질수록 조건문도 많아지게 되고, 코드의 가독성이 떨어지게 된다는 단점이 있다. 이를 보완하고자, 상태 자체를 객체로 만들고 상태에 따른 액션도 이 객체에다가 포함시킨다. 이러면, 주체는 상태를 일일이 조건문으로 검사하지 않고, 올바른 상태 객체의 액션만 실행시키면 원래 원하던 일을 수행할 수 있다. 1.1. 구조 State ..
[디자인 패턴 12편] 행동 패턴, 옵저버(Observer) 1. 개념 옵저터 패턴은 하나의 관찰대상 - 여러 개의 관찰자 구조가 필요할 때 쓰는 패턴이다. 1.1. 구조 Subject 관찰 대상이 되는 객체 자신을 관찰하는 옵저버들 리스트를 가지고 관리도 함. 옵저버 붙이기(attach), 떼기(detach), 알리기(notfiy) 를 가지고 있어야 함. Observer Subject 를 관찰하는 객체 Subejct 가 notify 를 호출하면 Observer 의 update 도 호출됨. 즉 Observer.update() 에 관찰 대상이 notify 했을 때의 할 일들을 적으면 됨. 1.2. 장단점 딱히 장단점 가릴게 없는 패턴인거 같다. 필요에 따라 쓰는 패턴. 1.3. 활용 상황 관찰대상 - 관찰자의 구조를 가질 때 쓰면 된다. 이벤트 핸들러가 대표적인 옵..
[디자인 패턴 11편] 행동 패턴, 템플릿메쏘드(Template method) 1. 개념 템플릿메쏘드 패턴은 상위 클래스가 뼈대가 되는 로직을 구성하고, 하위 클래스들이 이 로직의 요소들을 각각 구현하는 패턴이다. 1.1. 구조 AbstractClass ConcreteClass 가 상속받아야 할 추상 클래스 templateMethod() 에 클라이언트가 사용할 로직을 담는다. 각 로직의 요소는 method1(), method2() 에 담기며, 이는 ConcreteClass 에서 구현한다. ConcreteClass AbstractClass 를 상속받아, 필요한 로직 요소 method() 를 필요에 맞게 구현한다. 1.2. 장점 로직과 로직요소를 분리하여, 전체 로직은 동일하되 로직 요소를 각각 다르게할 수 있다. 1.3. 단점 추상 클래스와 구현 클래스가 강하게 연결되어 있다. 상속..
[디자인 패턴 10편] 행동 패턴, 스트레티지(Strategy) 1. 개념 스트레티지 패턴은 행동/전략 등 동일계열의 알고리즘들을 인터페이스-캡슐화하고, 알고리즘들을 컴포지션(위임 형태로) 가지는 패턴이다. 1.1. 구조 Context 클라이언트가 직접 사용하는 클래스 Strategy 인터페이스를 위임하고(has) 하고 있음. Strategy 구체적인 알고리즘들의 공통 스펙을 정의하는 클래스 ConcreteStrategy 구체적인 알고리즘들을 구현하는 클래스 1.2. 장점 상황에 따라 사용할 알고리즘을 쉽게 바꿀 수 있다. 알고리즘 구현부와 사용부가 분리되어 있다. 인터페이스로 사용자는 일관성있게 알고리즘을 가져다 쓸 수 있고, 각 알고리즘들은 동일한 인터페이스를 가지되, 각각 목적에 따라 구현은 다르게할 수 있다. 1.3. 단점 다 사용하지 않는 정보들을 모든 알고..
쿠버네티스(kubernetes) 기본 개념 정리 조대협님 블로그의 쿠버네티스 시리즈 를 공부하며 정리한 글입니다. 자세한 내용은 생략하고 핵심만 담았습니다. 1. 쿠버네티스란? 컨테이너 운영환경에서, 컨테이너들을 적절하게 매니징하는 솔루션 예를 들어, 서비스 요청이 많아지는 경우 이에 대한 부하를 줄이기 위해 노드 수를 동적으로 늘림. 대표적으로 다음과 같은 역할을 함. 스케쥴링 컨테이너별 자원 최적화 적절한 위치(클러스터 내 노드)에 배포 정상/비정상 상태 체크 및 재기동 컨테이너 리소스 모니터링 컨테이너 동적으로 삭제 관리 이러한 일들을 자동화하게끔 하는 솔루션임. 2. 기본 개념 이해 1) 구조와 오브젝트 클러스터 구조 마스터 / 머신 노드가 존재. 마스터는 하나, 머신은 여러개 쿠버네티스 오브젝트 기본적으로 오브젝트와 컨트롤러로 구성 오브젝트 ..
신입 데이터 엔지니어로 취업했다. 취업했다. 저번 주 초에 최종 합격 연락을 받았고, 다음 주 월요일부터 출근하게 되었다. 쏘카라는 회사에서 데이터팀의 데이터 엔지니어로 일하게 되었다. 가고 싶던 곳이라 매우 기쁘다 :) 여기에는 입사하게 된 과정과 짧지만 내가 생각해본 것들을 적어보려 한다. 1. 과정 작년 12월, '프로그래머스 머신러닝 잡페어' 에서 공고를 처음 보았다. 쏘카는 '데이터 분석가' / '데이터 사이언티스트' 직군을 채용하고 있던 걸로 기억한다. 이후 최종 면접까지의 과정은 다음과 같았다. (위부터 순서대로) 프로그래머스 과제(대회) 전화 면접 실무 면접 임원 면접 12월 시작부터 했고 채용은 2월 말에 됐으니 대략 3개월 좀 안 되는 프로세스였다. 나는 사실 중간에 연락이 안 와서 떨어진 줄 알았다. 그런데 기다리니까..