전체 글 586

vim resize split size: vim 창 크기 조절하기

vim resize split size vim에서 split을 사용하다보면 split size를 조정해야 할 일이 생기고는 한다. 이럴 때 자주 쓰이는 명령어들을 정리해둔다. (항상 검색해서 다시 사용하곤 했음) :resize 명령어 기본적인 명령어는 :resize이다 (:res) :resize 60과 같이 숫자를 적으면 해당 숫자로 위아래 크기를 조정해준다. +5, -5같이 사용할 수도 있다. 수직 split (vertial split)을 변경하려면 :vertical resize를 사용하면 된다. # 현재 split 수평 size를 60으로 :resize 60 # 현재 split size에 +, -5 :resize +5 :resize -5 # 현재 split 수직 size를 60으로 :vertical ..

tools/vim 2021.01.01

kafka-python 사용법

kafka python usage 카프카 셋업은 이전 글인 kafka setup for ec2 server에서 설명되어있다. 해당 셋업을 완료한 후 테스트를 하면 편리하다. python client로 실제 메세지 처리하는 방법. kafka python client는 크게 세가지 정도가 있다. confluent-kafka-python: 퍼포먼스가 가장 좋음. confluent의 공식 클라이언트. kafka-python: pure python. confluent-python에 비해서는 속도가 느림 pykafka: 2018년 이후 업데이트가 잘 안됨.. 나는 다음의 이유로 kafka-python을 사용하였다. 활발한 contribution 및 활동 직관적이고 간결한 사용법 sync 기준 confluent-ka..

backend/python 2020.12.31

파이썬 싱글톤 패턴 (Singleton pattern in python)

singleton pattern in python 싱글턴 패턴: 인스턴스를 하나만 생성하여 불필요한 메모리 낭비를 방지하고 해당 클래스의 인스턴스를 바로 호출 할 수 있게 하는 패턴. 한번에 아주 많은 요청을 처리해야하는데 매번 클라이언트를 호출해야 할 일이 있어 처음에는 전역변수를 사용하였다가 싱글톤 패턴을 사용하는 김에 정리해둔다. 클래스로 직접 구현하거나 데코레이터로 구현이 가능하다. 각 방법과 장단점을 소개 # 예시 BaseClient - 공통으로 사용 class BaseClient: @classmethod def class_call(cls): return {'result': True} def call(self): return {'result': True}1. deco..

카테고리 없음 2020.12.30

도커 권한문제 해결하기: "Got permission denied while trying to connect to the Docker daemon socket"

Got permission denied issue in linux linux에서 root 권한이 아닌 상태로 docker를 실행하면 권한 문제가 발생할 수 있다. [linux@localhost ]$ docker ps Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/json: dial unix /var/run/docker.sock: connect: permi ssion denied이런 경우 docker group에 해당 유저를 추가해주어야한다. 보통은 docker gro..

카테고리 없음 2020.12.28

쿠버네티스 쉽게 디버깅하기: kuberctl alpha debug for kubernetes debugging

kubectl alpha debug command Kubecon Europe 2020 세션에서 k8s new feature 설명을 듣다가 괜찮은 alpha 기능이 있어서 정리해본다. kubernetes를 쓰면서 어렵다고 느낀 점 중 하나는 디버깅이다. logs나 describe pod로 해당 pod의 상태/로그를 확인할 수 있고 exec로 pod에 실제 명령어를 실행시켜볼 수 있지만 어디까지나 해당 pod이 running중일 때의 얘기이고, pod 자체가 잘 뜨지 않거나 exec 명령어를 사용하기 힘든 상황일 경우에는 디버깅이 정말 어렵다. shell이나 디버깅 툴이 없는 컨테이너일 경우에도 마찬가지이다. kubectl alpha debug 기능은 이럴 경우 pod 안에 디버깅에 필요한 툴들을 포함시킨 ..

카테고리 없음 2020.12.27

왜 도커를 사용해야할까? (why docker and container is arised?)

why docker and container aws immersion day에서 들은 강의를 정리한 내용. 왜 컨테이너 기술이 생겨났을까? 1. 큰 변화의 흐름 아키텍쳐의 변화 컨테이너는 변화의 흐름이 이어져서 발생한 기술 글로벌화, 디지털화 민접하고 유연한 아키텍쳐의 중요성 등장 그래서 등장하게 된 마이크로 서비스 아키텍처 운영 모델의 변화 마이크로 서비스 아키텍쳐로 여러 컴포넌트를 운영하게 됨 비즈니스 로직에 집중하고 운영 부담은 managed service로 (AWS, GCP) 소프트웨어 딜리버리 방식의 변화 개발, 릴리즈 사이클이 아주 짧아짐 자동화, 툴 표준화 수작업보다 코드 레벨로 infra structure를 관리 결국 Container는 이런 모던 애플리케이션으로 가는 좋은 방법 2. 새로..

카테고리 없음 2020.12.26

Kubernetes CRD (Custom Resource Definition)

Kubernetes CRD (Custom Resource Definition) kubernetes api에 자체 리소스를 추가할 수 있음. CRD를 통해 CLI를 지원하고 persistent storage를 제공하는 CRUD API가 제공됨. object 모델을 만들고 원하는만큼 리소스를 생성/삭제/사용 가능하다. 뿐만 아니라 이를 감시하고 컨트롤하는 컨트롤러를 가질수도 있다. (ArgoCD가 이런 방식으로 작동한다) Example superhero.yaml로 SuperHero CRD를 만들어보자. apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: # spec과 일치해야됨. (.) name: superhero..

backend 2020.12.25

리눅스 텍스트 프로세싱: sort, sed 사용법

20. Text Processing cat sort uniq cut, paste, join comm, diff, patch tr sed, aspell sort 다양한 옵션이 있음 -f: ignore case -n: numeric sort -r: reverse -k: key. 아래에서 더 자세히 설명 -o: output file -t: field seporator. default는 space나 tab du -s /usr/share/* | sort -nr | headkey를 사용하는 법 sort는 tabular data 형태로 작동한다. 아래 예시는 /usr/bin 디렉토리의 파일을 크기순으로 정렬 후 10개만 보여줌. 각각의 열은 필드처럼 작동하여 이 필드를 key로 사용할 수 있다. 아래 예제에서는 5번..

backend/ubuntu 2020.12.22