전체 글 514

프로그램을 작성하는 33가지 방법 - Chaptor 05정리

최근 '프로그래밍 패턴 (프로그램을 작성하는 33가지 방법)' 을 읽기 시작했다. 한 가지의 기능을 Chaptor 마다 각각 다른 패턴으로 구현하여 설명한 책이다. 모두 비슷하게 동작하지만 환경과 상황이라는 제약 조건 안에서 탄생된 패턴을 직접 코드로 보여주고 있어직접 코딩을 하며 이해하고 있는 중이다. 책에서 소개하는 한 가지 기능은 '텍스트 파일을 읽어 단어 빈도 출력' 하는 프로그램이다. 가장 빈도가 높은 단어 순으로 그에 해당하는 빈도를 내림차순으로 출력하는 기능을 구현하고 있다. 이전 Chaptor 보기 :프로그램을 작성하는 33가지 방법 - Chaptor 04 정리 Chaptor 05. 파이프라인 규모가 큰 문제를 함수형(functional) 추상화를 사용해 분해한다. 함수는 입력을 취해 출력..

프로그램을 작성하는 33가지 방법 - Chaptor 04 정리

최근 '프로그래밍 패턴 (프로그램을 작성하는 33가지 방법)' 을 읽기 시작했다.한 가지의 기능을 Chaptor 마다 각각 다른 패턴으로 구현하여 설명한 책이다.모두 비슷하게 동작하지만 환경과 상황이라는 제약 조건 안에서 탄생된 패턴을 직접 코드로 보여주고 있어직접 코딩을 하며 이해하고 있는 중이다.책에서 소개하는 한 가지 기능은 '텍스트 파일을 읽어 단어 빈도 출력' 하는 프로그램이다. 가장 빈도가 높은 단어 순으로 그에 해당하는 빈도를 내림차순으로 출력하는 기능을 구현하고 있다.이전 Chaptor 보기 :프로그램을 작성하는 33가지 방법 - Chaptor 03 정리 Chaptor 04. 요리책 절차적 추상화를 이용해 규모가 큰 문제를 더 작은 단위로 분할함으로써 제어 흐름 복잡도를 완화한다. 프로시저..

프로그램을 작성하는 33가지 방법 - Chaptor 03 정리

최근 '프로그래밍 패턴 (프로그램을 작성하는 33가지 방법)' 을 읽기 시작했다. 한 가지의 기능을 Chaptor 마다 각각 다른 패턴으로 구현하여 설명한 책이다. 모두 비슷하게 동작하지만 환경과 상황이라는 제약 조건 안에서 탄생된 패턴을 직접 코드로 보여주고 있어직접 코딩을 하며 이해하고 있는 중이다. 책에서 소개하는 한 가지 기능은 '텍스트 파일을 읽어 단어 빈도 출력' 하는 프로그램이다. 가장 빈도가 높은 단어 순으로 그에 해당하는 빈도를 내림차순으로 출력하는 기능을 구현하고 있다. 이전 Chaptor 보기 :프로그램을 작성하는 33가지 방법 - Chaptor 02 정리 Chaptor 03. 일체식 명명된 추상화가 없다. 라이브러리를 전혀 또는 거의 사용하지 않는다. 저수준 프로그래밍 언어를 사용하..

프로그램을 작성하는 33가지 방법 - Chaptor 02 정리

최근 '프로그래밍 패턴 (프로그램을 작성하는 33가지 방법)' 을 읽기 시작했다. 한 가지의 기능을 Chaptor 마다 각각 다른 패턴으로 구현하여 설명한 책이다. 모두 비슷하게 동작하지만 환경과 상황이라는 제약 조건 안에서 탄생된 패턴을 직접 코드로 보여주고 있어직접 코딩을 하며 이해하고 있는 중이다. 책에서 소개하는 한 가지 기능은 '텍스트 파일을 읽어 단어 빈도 출력' 하는 프로그램이다. 가장 빈도가 높은 단어 순으로 그에 해당하는 빈도를 내림차순으로 출력하는 기능을 구현하고 있다. 이전 Chaptor 보기 : 프로그램을 작성하는 33가지 방법 - Chaptor 01 정리 Chaptor 02. 포스로 포스는 스택 개념을 핵심으로 한다. 데이터가 즉시 필요하지 않으면 힙이라고 하는 메모리에 둘 수 있..

프로그램을 작성하는 33가지 방법 - Chaptor 01 정리

최근 '프로그래밍 패턴 (프로그램을 작성하는 33가지 방법)' 을 읽기 시작했다.한 가지의 기능을 Chaptor 마다 각각 다른 패턴으로 구현하여 설명한 책이다.모두 비슷하게 동작하지만 환경과 상황이라는 제약 조건 안에서 탄생된 패턴을 직접 코드로 보여주고 있어 직접 코딩을 하며 이해하고 있는 중이다. 책에서 소개하는 한 가지 기능은 '텍스트 파일을 읽어 단어 빈도 출력' 하는 프로그램이다.가장 빈도가 높은 단어 순으로 그에 해당하는 빈도를 내림차순으로 출력하는 기능을 구현하고 있다. Chaptor 01. 그리운 옛날 Chaptor 01 에서는 메모리 제약으로 메모리 관리를 중요시한 시대에서 작성하는 패턴을 설명하고 있다(대략 1950~60년대).제한적인 메모리를 가지고 원하는 기능을 구현한 패턴을 간략..

SonarQube는 어떻게 Routing을 할까?

요즘 회사에서 SonarQube를 사용하며 소스 내부를 보고 있다. 예전에 React 스터디 경험이 있어서 어느 정도 파악이 쉬울 줄 알았는데, 공부를 허투루 했는지... 도통 이해가 가지 않았다. 물론 내가 처음부터 작성한 코드도 아닐뿐더러 소스양도 (내 기준에서)많기에 어려움이 있던 것으로 생각한다. 결국 빌드를 돌려보며 소스를 파악하고 감을 익혔다. 직접 뛰어 들어감으로 익힌 뒤에 관련 기술 내용을 공부하는 것이 나에게는 편하다는 것을 새삼 느끼고 있다. 계속해서 대시보드 페이지를 살펴보고 있는데(참고: https://blog.sapzape.com/941), 이번에는 어떻게 Routing 처리를 하고 있는지 살펴보려고 한다. (페이지 바로가기) 기본적으로 'Host + Path + Query'의 조..

[GCP Study Jam] Kubernetes에 MongoDB 설정

GCP를 활용한 Kubernetes 학습을 진행하며 정리하는 글입니다 (Google Cloud Study Jam 참여 중). Kubernetes에 MongoDB 설정 Headless Service와 StatefulSet 배포 MongoDB 복제본 세트를 설정하려면 StorgeClass, HeadlessService, StatefulSet 세가지가 필요합니다. (참고) 구성 파일 예제 git clone cd ./mongo-k8s-sidecar/example/StatefulSet/ Headless Service cat mongo-statefulset.yaml ## mongo-statefulset.yaml 구성내용 apiVersion: v1 kind: Service metadata: name: mongo la..

[GCP Study Jam] Kubernetes Helm 소개

GCP를 활용한 Kubernetes 학습을 진행하며 정리하는 글입니다 (Google Cloud Study Jam 참여 중). Helm Helm 소개 Helm은 Kubernetes 패키지 관리자입니다. Helm을 통해 Kubernetes 애플리케이션 관리, 업데이트, rollout, 애플리케이션 공유 옵션을 단순화하여 사용할 수 있게 되었습니다. Helm은 클라이언트(Helm)와 서버(Tiller)로 구성되어 있습니다. Helm 설치 curl > get_helm.sh chmod 700 get_helm.sh ./get_helm.sh Helm과 Tiller를 초기화하기 전에 Tiler 서비스 계정을 생성 및 clusterrole(클러스터 관련 Rule 집합)에 바인딩 해야 합니다. kubectl -n kube..

[GCP Study Jam] Kubernetes Engine으로 배포 관리

GCP를 활용한 Kubernetes 학습을 진행하며 정리하는 글입니다 (Google Cloud Study Jam 참여 중). Introduction to deployment 배포가 단일 환경 또는 지역으로 제한될 경우 다음과 같은 이슈가 발생 할 수 있습니다. Resource limits reached 단일 환경, 특히 내부 환경에서는 Resource가 Production 요구사항을 충족하지 못할 수 있습니다. Limited geographical scope 단일 환경에서 배포하면 지리적으로 멀리 떨어진 사용자들이 모두 하나의 배포에 접근해야 합니다. Limited availability 애플리케이션의 결함 감내 시스템 및 탄력성 유지에 어려움이 발생합니다. Provider-Dependent 제공업체 수..

[GCP Study Jam] Kubernetes를 통한 클라우드 조정

GCP를 활용한 Kubernetes 학습을 진행하며 정리하는 글입니다 (Google Cloud Study Jam 참여 중). Pod Pod 란? 하나 이상의 Container가 포함된 집합을 의미합니다. 일반적으로 종속도가 높은 여러 Container가 있을 경우 Container들을 단일 Pod로 패키징합니다. Volume 은 Data Disk로서 Pod의 컨테이너에서 사용할 수 있습니다. Pod는 Contents에 대한 공유 Namespace 제공합니다. Pod에 속한 두 Container가 서로 통신할 수 있으며 연결된 Volume도 공유합니다. Pod는 Network Namespace도 공유합니다(Pod마다 IP주소가 하나씩 있습니다.). Pod는 하나의 Container(Monolith)로 구성..