전체 글
rabbitmq-및-nodejs를-사용한-비동기-마이크로-서비스
메세지와 이벤트를 통한 확장성과 내결함성. 이 글은 Asynchronous Microservices with RabbitMQ and Node.js를 번역한 글입니다. 해당 글은 2019년 2월 19일에 작성되었습니다. 웹의 거인 (Netflix, Amazon…)은 10 년 이상 마이크로 서비스를 사용해 왔습니다. 그러나 최근에 이러한 기술은 소규모 소프트웨어 프로젝트에서 더 쉽게 접근 할 수 있게 되었습니다. 이제 신생 기업은 이를 활용하여 강력하고 확장 가능한 클라우드 소프트웨어를 구축할 수 있습니다. 이 문서에서는 RabbitMQ 및 Node.js를 사용하여 마이크로 서비스를 시작하는 간단한 방법을 살펴봅니다. 마이크로 서비스란 무엇인가요? 저는 Martin Fowler의 간단한 정의를 좋아합니다.:..
kibana-dark-theme-설정-방법
Kibana는 Dark theme가 없어서 구려요😐 사내 로그 수집용으로 ELK 스택을 구축했다. 수집된 로그를 Kibana를 이용해 시각화하고 있는데 다른 분이 Grafana를 추천해주셨다. Kibana vs Grafana kibana와 Grafana 모두 훌륭한 시각화 도구인데 추천해주신 분 말씀 중에 이런 말이 있었다. Kibana는 Dark theme가 없어서 구려요 😐 그 말을 듣고 궁금증이 생겼다. **Kibana는 검은색 테마가 없을까?? ** Kibana Dark theme? kibana dark theme으로 검색해보니 아래와 같은 페이지를 찾을 수 있었다. Kibana 7.0.0 released | Elastic Blog Kibana 7.0.0부터 Dark theme이 지원된다는 이야기..
마이크로서비스---rabbitmq를-사용하는-이유
이 글은 Microservices - why use RabbitMQ?를 번역한 글입니다. 다소 오역이 있을 수 있습니다. RabbitMQ as a Service를 제공하는 CloudAMQP의 글이기 때문에 RabbitMQ를 사용하는 경우의 장점이 다소 부각되어 있을 수 있습니다. 오늘날 개발자들은 단일 시스템이 아닌 Microservices 아키텍처를 사용하여 애플리케이션을 구축하기로 선택합니다. 그 이유를 이해하기 위해서 Message Queue와 함께 Microservices 아키텍처에서 RabbitMQ같은 메시지 브로커를 사용하는 이점에 대해 자세히 살펴봐야 합니다. 이 글에서는 Microservices 시스템과 Message Queue 사용간의 상관 관계를 자세히 살펴보고 다음 질문에 답합니다. ..
pm2를-이용한-프로그램-실행-및-시작프로그램-등록
이 글은 어떤 사람들을 위한 글인가요? 리눅스에서 시작프로그램을 등록하고 싶어요 (라즈베리파이) 윈도우에서 사용하시려면 링크를 참조해주세요 그 프로그램이 예상치 못한 런타임에러로 중단되어도 알아서 다시 시작했으면 좋겠어요 따로 로깅을 하지 않더라도 해당 프로그램의 로그를 확인하고 싶어요 다른 방법도 있지 않아요? 단순 시작프로그램 등록만을 원한다면 rc.local 파일을 수정하거나 데몬으로 추가할 수 있지만 프로그램이 알 수 없는 문제로 종료되면? 해당 프로그램의 로그를 확인하고 싶다면? 같은 문제는 따로 처리해야합니다. 😦 PM2를 사용한다면 간단한 방법으로 위와 같은 문제들을 해결 할 수 있습니다. PM2는 무엇인가요? 사용자의 프로그램을 항상 동작하도록 도와주는 프로세스 관리자입니다. 기본적으로 N..
릿코드(leetcode)---42 Trapping-Rain-Water
문제 링크 42. Trapping Rain Water 그림과 같은 지형에 비가 왔다고 가정했을 때 고여있을 물의 부피를 구하는 문제 풀이 지형을 3가지 영역으로 나눠서 볼 수 있다. 발그림 ㅈㅅ 가장 높은 봉우리를 기준으로 영역을 구분한다. 1번 영역은 시작부터 가장 높은 봉우리까지이다. 이전 가장 높은 봉우리와 차이만큼 물을 저장할 수 있다. 이전 봉우리보다 높은 봉우리가 나타면 높은 봉우리를 갱신한다. 2번 영역은 가장 높은 봉우리가 2개 이상일 때 나타난다. 2번 영역에서는 가장 높은 봉우리와의 차이만큼 물을 저장한다. 3번 영역은 1번 영역과 같다.(순서만 다르다.) 전체를 순회하며 영역에 따라 계산해주면 된다. /** * @param {number[]} height * @return {numbe..
릿코드(leetcode)---221 maximal-square
링크 Maximal Square 가장 큰 1로 이루어진 정사각형의 크기를 반환하는 문제 풀이 재귀적으로 해결 이전에 파악한 사각형에서 대각선 아래(x+1, y+1)의 요소를 확인하고 해당 요소의 위와 왼쪽 요소를 depth개 만큼 확인한다. 확인이 되지 않으면 그 전 크기를 반환한다. function maximalSquare(matrix: string[][]): number { const m = matrix.length const n = matrix[0].length let max = 0 const getSize = (x: number, y: number, depth: number): number => { if (x >= m || y >= n) return depth if (matrix[x][y] !==..
릿코드(leetcode)---200 number-of-islands
링크 Number of Islands 0을 물, 1을 땅으로 했을 때 섬의 개수를 반환하는 문제 floodfill알고리즘으로 해결할 수 있다. 주의점 grid를 복사하지 않고 사용한다면 원본으로 주어진 데이터를 오염시키게 된다. 문제를 해결하는데에는 문제 없지만 경우에 따라서 문제가 될 수도 있는 부분 되도록이면 원 데이터를 오염시키지 않도록 grid를 복사해서 사용하자. grid를 구성하는 요소들이 0, 1 숫자가 아니라 "0", "1" 문자열이다. 약타입 언어를 쓴다면 헤멜 수도 있는 부분 해결 fill 함수를 만들서어서 재귀적으로 파고든다. fill 함수는 사방의 요소를 확인하고 1인 경우 해당 요소를 0으로 바꾸고 재귀적으로 다시 fill을 호출하는 함수 0으로 바꾸는 이유는 문제의 조건상 0으로..