반응형

이 블로그는 수포자 디자이너에서 개발자로 성장해가는 저의 개발 스토리입니다.

[개발 환경] iTerm2로 터미널 커스텀하기

이번 포스팅에선 Mac에서 사용하는 터미널을 꾸며보도록 하겠습니다. 사실 오래전에 작성한 글이지만, 꾸준하게 조회수가 있는 포스팅이라 좀 더 상세한 내용과 최근에 추가한 커스텀 항목을 추가해서 다시 업로드하였습니다. 😊 ⚠️해당 포스팅은 다양한 기술 블로그의 iTerm2의 커스텀 글을 토대로 저의 입맛에 맞게 소스들을 선택하여 작성되었습니다. 포스팅 최하단에 참고한 블로그의 링크를 첨부하였으니 상세한 내용은 아래 링크를 확인해주시기 바랍니다. 아래 이미지가 해당 포스팅에서 최종적으로 만들게 될 터미널의 모습입니다. 🏖 iTerm2 Install 터미널을 꾸민다고 했지만, 정확히 말하면 terminal이라는 이름의 앱을 커스텀 하는게 아니라 터미널과 같은 기능을 하지만, 더 다양한 기능을 제공해주는 ite..

개발 환경 2021.02.07 40

[Python] Stack 사용하기

파이썬에서의 스택 = list를 사용 파이썬은 스택 자료구조는 따로 제공하지 않는다. 다만 기본 클래스인 list를 통해 스택을 흉내 낼 수 있다. 스택은 어떤 자료구조인가요? 스택은 가장 나중에 들어온 자료가 가장 먼저 처리되는 LIFO(Last-In-First-Out) 자료구조이다. 구멍이 하나밖에 없는 병이라고 생각하면 이해하기 쉽다. Reference https://www.youtube.com/watch?v=whVUYv0Leg0 스택이 지원하는 operation 스택은 다음 operation을 지원해야 한다. Operation 구현 Time Complexity - Average Case Pop item my_list.pop O(1) Push item my_list.append O(1) Stack ..

Python 2019.10.09 0

[Network] Port와 포트 포워딩(Port-Forwarding)이란?

Port란 예를 들어 하나의 서버가 있을 때 이 서버는 다양한 역학을 하게 되는 경우가 있습니다. 웹사이트를 전달해주는 역할, 그리고 파일을 요청하는 역할이 있다고 해보겠습니다. 이럴 경우 클라이언트가 서버에 요청을 보냈을 때, 웹사이트 요청인지 파일 요청인지 구분할 수 있는 방법이 필요하게 됩니다. 이때 바로 Port를 사용하게 됩니다. 포트는 숫자로 표현하게 되어 있으며 65535번까지 존재하며 아래와 같이 3종류로 표현이 됩니다. 0번 ~ 1023번: 잘 알려진 포트 (well-known port) 1024번 ~ 49151번: 등록된 포트 (registered port) 49152번 ~ 65535번: 동적 포트 (dynamic port) 잘 알려진 포트 번호의 대표적 예는 다음과 같습니다. 20 :..

Network 2020.04.10 6

[Error Log]Python: No module named _tkinter에 관한 이슈

Issue 설명 _tkinter는 Python의 GUI 모듈이다. 그런데 간혹 Mac이나 Linux에서 모듈을 설치했음에도 tkiner를 찾을 수 없다는 에러가 뜰 때가 있다. 에러명은 다음과 같다. error: ImportError: No module named _tkinter backend 변경해보기 mac에서의 경우 기본 backend가 TkAgg로 설정되어있지 않아서 에러가 난다. 그럴 경우에 스크립트상에 다음 코드를 추가해준다. import matplotlib matplotlib.use(“TkAgg”) 매번 코드를 추가하기 귀찮으므로 bash상에 설정을 바꾸어주는 방법도 있다. echo "backend: TkAgg" >> ~/.matplotlib/matplotlibrc 여기서 말하는 backen..

Error Log 2019.10.11 4

2020, 2021 2년 간의 짧은 회고

2022년을 맞아서 지난 2021년을 회고하고자 오랜만에 블로그에 글을 쓴다. 사실 2021년이라고 이야기 했지만 2020년 회고글을 따로 적지 않았기 때문에 2년간의 회고를 요약한 글이 되지 않을까 한다.ㅎㅎ 후~ 할 말이 정말 많고 어떻게 이 이야기를 풀어내야 할지 모르겠어서 의심에 흐름대로 편안하게 적어볼까 한다. 이직 2020년 여름 나는 우리나라에서 가장 큰 IT기업 중 한 곳에 신입으로 입사했다. 내 블로그에서 가장 잘 팔리는 글 중 하나인 취업 후기 글이 그 주인공이다. 그 후로 내 근황을 블로그에 올리지 않아서 요즘도 가끔 카카오에서 만나자는 비밀 댓글이 달리곤 하는데 사실 난... 이직했다 ㅎ 그것도 꽤 오래전에 이직했다. 약 8개월? 쯤 전의 시기였던 것 같다. 전 회사에 있었던 시기로..

Retrospect 2022.01.27 9

[Spring] Reactive programing: WebFlux, WebClient

이전 포스팅에서 비동기 처리를 하게 될 경우 non blocking 하게 servlet thread를 사용하는 방법에 대해서 살펴보았습니다. 하지만 여전히 문제가 남아있는 부분이 존재합니다. 바로 비동기 처리를 하는 worker thread입니다. worker thread가 만약 또 다른 서비스의 API를 호출하게 된다면 servlet thread는 반환되었지만 worker thread는 api 응답이 올 때까지 blocking 되어 대기상태가 되어야 합니다. Spring 4.0에선 이러한 문제를 AsyncRestTemplate을 사용해서 해결할 수 있었습니다. implementation("org.springframework.boot:spring-boot-starter-webflux") val async..

[Spring] 비동기 처리시 blocking 되는 servlet thread 관리

Tomcat에서의 IO는 HttpServletRequest와 HttpServletResponse를 사용하고 있고, 이 둘은 InputStream과 OutputStream을 구현하고 있습니다. 즉 IO가 이루어질 때마다 blocking이 발생한다는 뜻입니다. tomcat에서 NIO connector가 구현된 이후부터 connection을 nonblocking하게 맺고 있지만, 결국엔 servlet을 실행하는 순간 servlet thread가 필요로 하기 때문에 근본적인 문제의 해결책이 되지 않습니다. 서버에서 일어나는 작업들, 흔히 req - logic - res가 이루어질 때 빠르게 thread가 작업을 처리하고 pool로 반납하면 이러한 방식도 문제가 되진 않습니다. 다만 최근 많이 가져가고 있는 MS..

[Kubernetes] CRD(Custom Resource Definition)와 Custom Controller 사용하기

이번 포스팅엔 Kubernetes에 Custom Resource를 사용하는 방법에 대해서 살펴보도록 하겠습니다. Custom resource를 정의하고 사용하기 위해선 기반 지식이 조금 필요한데요. 이전의 포스팅에서 조금씩 언급한 부분이지만 시간이 지나고 나니 저의 설명이 너무 부실....^^한 포스팅이 많은 것 같아서 관련된 부분들을 조금씩 다시 언급하며 포스팅을 진행하도록 하겠습니다. Custom Resource를 사용하기 위해서 알아야 하는 가장 중요한 지식이 있는데 바로 Object와 Controller입니다. Object Kubernetes에서 관리하는 리소스를 말합니다. 여기서 리소스란 Container, Network Config, Storage Config 등이 있습니다. 예를 들어 noa..

Kubernetes 2021.04.08 0

[Error Log] Elasticsearch: ERROR: [1] bootstrap checks failed[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

Elasticsearch 5.0 이후부터 config 내 network.hosk가 loopback이 아닌 경우 bootstrape 체크 시 아래와 같은 에러가 발생하며 elasticsearch가 정상적으로 뜨지 않는 문제가 발생합니다. ERROR: [1] bootstrap checks failed [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] 원인 Elasticsearch는 mmapfs라는 디렉토리를 사용하여 색인하는데, 이때 os가 제공하는 mmap 수 제한이 너무 낮으면 메로리 부족 예외가 발생하게 됩니다. 위와 같은 문제가 발생했다면 아래의 명령어로 현재 서버의 vm.max..

Error Log 2021.02.18 0

[Prometheus] Exporter 배포하기 (node-exporter, kube-state-metrics, actuator)

전 포스팅에서 봤듯이 prometheus는 exporter를 배포하지 않더라도 이미 많은 metric을 수집하고 있다는 것을 알 수 있었습니다. 특히 kubernetes 안에 배포된 container와 기본적인 node에 관한 metric도 수집되는 것을 알 수 있는데, 이는 kubernetes가 자체적으로 cluster 내의 모든 노드에 metric을 수집하는 cAdvisor라는 모니터링 에이전트를 배포하기 때문입니다. cAdvisor만으로도 많은 data를 얻을 수 있지만, 이번 포스팅에서는 더 다양한 exporter를 배포하여 cAdvisor에서 수집하지 않는 metric을 추가적으로 scrape 해보도록 하겠습니다. 해당 포스팅에선 아래의 version을 사용했습니다. kubernetes:v1.1..

Prometheus 2021.02.12 0
반응형