반응형

프로그래밍 PROGRAMMING 26

[RabbitMQ] 메모리 부족(Out of Memory)으로 인한 메세지 큐 서버 커넥션 오류 5xx

어느날 갑자기 평상시에 잘 작동하던 rabbitmq 서버가 갑자기 접속이 되지 않는 커넥션 오류를 마구 뿜어내기 시작했습니다. 다행히 운영이 아니라 테스트환경이었지만 커넥션 오류가 발생한 경우는 처음이었습니다. 기존에 잘 작동했던 시스템인데 커넥션 오류가 떠서 연계되어 있던 api 와 배치 서비스가 정상적으로 구동되지 않는 상황이었어요.   큐 서버의 대시보드를 확인하니 위 상황처럼 엄청난 큐가 쌓여있고 메모리도 설정된 수준을 넘어 full 로 차있는 상황이었습니다. 메세지 큐 서버의 커넥션 정보를 보니 모든 커넥션이 blocked 혹은 blocking 상태였어요. block 상태인 요청을 취소하고 다시 요청을 넣으면 connection 리스트에는 들어가지만 동일하게 blocked 이나 blocking ..

[PYTHON] 파이썬 언더스코어( _ )의 의미와 용법

파이썬에서 언더스코어(underscore, _, 혹은 언더바 underbar)는 처음에는 임시 변수를 표현하는데 사용되다가 점점 범위가 넓어져 다양한 경우에 사용되고 있습니다. 크게 파이썬에서의 언더스코어는 크게 아래와 같이 다섯 가지 용법으로 사용됩니다.  마지막으로 실행된 표현식의 결과를 저장인터프리터에서 마지막으로 실행된 표현식의 결과를 저장하는데 언더스코어가 사용됩니다. 예를 들어, 10+20을 실행하고 _를 입력하면 30을 반환합니다.>>> 10 + 2030>>> _30 값을 사용하지 않을 때값을 무시하고 싶을 때 사용합니다. 예를 들어, for _ in range(10):는 10번 반복하는데, 반복하는 값 자체에는 관심이 없을 때 사용합니다.for _ in range(10): print(..

[IOS/Swift] 아이폰/아이패드 세로모드, 가로모드 고정하기

App 을 실행할때 세로모드 혹은 가로모드로만 고정하고 싶은 경우 아래 설정화면으로 들어갑니다 설정화면은 우측 폴더구조에서 프로젝트명을 선택하면 들어가집니다. 거기서 Build Settings > Customized 를 들어가서 Supported Interface Orientation (iPhone) 을 선택하면 여러개의 옵션이 기본으로 들어가 있는 것을 확인할 수 있습니다. UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight 기본으로 위 네 개의 옵션이 들어가있는데, 수직모드로 고정하고 싶으면 UI..

[GIT] 이미 Commit 한 Author 및 Email 정보를 일괄 수정하는 방법

이미 커밋한 Author와 Email 정보를 현재 Config 설정에 맞게 수정하려면 아래와 같이 rebase 를 이용하면 됩니다. >> git rebase -r \ --exec 'git commit --amend --no-edit --reset-author' commit1, commit2, commit3, ... 과 같이 커밋 목록이 있을때 commit2, commit3, .. 의 커밋들의 author와 email 정보를 일괄로 현재 config 정보에 맞게 수정하고자 할때, commit1의 해쉬값을 위와 같이 입력합니다. 터미널에서 위 명령어를 실행하면 변경된 정보로 rebase 후에 git commit --amend 명령어가 일괄로 실행됩니다. 주의할 점은 git config --list 를 통해 ..

[GIT] git tag 조회하기

Git 에서 Tag를 조회하기 깃에서 태그를 조회하는 법은 어렵지 않습니다. 콘솔이나 git bash에서 아래 명령어를 통해서 깃 태그를 조회할 수 있습니다. $ git tag v0.1 v1.3 이렇게 조회하면 결과는 알파벳순으로 출력해줍니다. 만약 수백개의 태그에서 특정 문자열을 가진 태그를 조회하기 위해서는 쌍따옴표로 감싸서 -l 옵션을 달아 조회하면 됩니다 --list 로 붙여도 동일합니다. $ git tag -l "v1.8.5*" v1.8.5 v1.8.5-rc0 v1.8.5-rc1 v1.8.5-rc2 v1.8.5-rc3 v1.8.5.1 v1.8.5.2 v1.8.5.3 v1.8.5.4 v1.8.5.5 tag를 조회하는 것은 이처럼 간단합니다. 그런데 Tag는 왜 붙이는 걸까요? Tag를 사용하는 이..

[JAVASCRIPT] 알아두면 편리한 스프레드 spread 문법

스프레드 SPREAD 문법의 사용법 ES6에 새롭게 추가된 문법 중에 스프레드(spread) 문법이 추가되었습니다. 말줄임표처럼 생긴 이 문법은 Spread Operator(스프레드 연산자, 전개 구문, 펼침 연산자 등)라고 하는데, 배열이나 문자열과 같이 반복이 가능한 문자를 0개 이상의 인수(파라미터, 함수로 호출시) 또는 요소 (배열 리터럴의 경우)로 확장할 수 있습니다. 예를 들어서 아래와 같은 배열이 있다고 생각해봅시다. const fruits = ['apple', 'banana', 'kiwi']; const numbers = [1, 2, 3, 4, 5]; const str = 'market'; 스프레드 가능한 대상은 배열이 될 수도 있고 문자열이 될 수도 있습니다. 배열이 스프레드가 되면 아래..

[GIT] git 서브모듈(submodule) 이란 무엇일까

[ 목 차 ] 1. GIT 서브모듈이란 2. GIT 서브모듈의 활용 3. GIT 서브모듈 사용하는 방법 GIT 서브모듈 SUBMODULE 이란 깃에서 서브 모듈이란 하나의 프로젝트 안에 여러 개의 모듈이 구성되어 있을 때 개별 모듈을 각각 깃 레포지토리로 이력관리를 하고자 할 때 사용할 수 있는 기능입니다. 모듈별로 저장소의 소스를 관리하기 때문에 다른 모듈의 변경 사항과 구분하여 프로젝트의 커밋 이력을 관리할 수 있습니다. GIT 서브모듈 SUBMODULE 의 활용 소스별로 깃 레포지토리를 분리하는 것은 프로젝트 내의 복잡성을 높일 뿐만 아니라 기존 의존성 관리 프레임워크(maven, gradle, ....)를 사용하는 경우에는 모듈에 대한 의존성을 추가하면 되기 때문에 반드시 서브모듈 기능을 사용해 ..

[GIT] rebase 란 무엇인가?

Git Rebase 란 무엇인가 Git Rebase 란 말 그대로 base를 재설정한다는 의미로, 하나의 브랜치가 다른 브랜치에서 파생되서 나온 경우, 다른 브랜치에서 진행된 커밋을 다시 가져와서 base를 재설정하는 것입니다. 새로운 커밋을 기반으로 작업을 함으로써 파생된 브랜치는 병합시에 conflict 없이 자신의 브랜치에 진행된 커밋을 반영할 수 있습니다. 병합을 하면 위 처럼 main 브랜치의 커밋을 feature 브랜치로 병합을 함으로써 feature 브랜치에 새로운 커밋이 발생합니다. 반면, rebase를 하면 위 그림에서 흰색 커밋을 마지막으로 feature 브랜치가 생성되었다 하더라도, 하늘색의 새로운 main브랜치의 커밋을 포함해 rebase를 함으로써 마치 하늘색 커밋들이 처음 커밋된..

[PYTHON] 파이썬의 컨테이너(container) 객체란

파이썬에서 컨테이너란 데이터의 종류에 무관하게 저장할수 있는 자료형(Data Type)을 저장한 모델을 의미합니다. 약간 어려워보이는 말이긴 하지만 간단히 설명하면 데이터의 자료형에 상관없이 저장이 가능한 객체란 의미예요. 예를 들면 문자열(str), 튜플(tuple), 리스트(list), 딕셔터리(dictionary), 집합(set) 등은 타입에 무관하게 저장이 가능한 컨테이너 객체들이고 정수, 실수, 복소수 등은 타입이 고정되어 있는 단일 종류(Literal)한 자료형입니다. 더 간단히 말하면 컨테이너 객체는 컨테이너 타입을 상속한 객체로서 여러 데이터 객체에 대한 메모리 참조 정보를 담고 있는 객체라고 할 수 있습니다. 예를 들어 리스트가 다음과 같이 할당되어 있다면, var 는 리스트 타입의 컨테..

[PYTHON] 파이썬의 나누기와 몫과 나머지를 구하는 방법

파이썬의 기본적인 나누기는 '/' 형태로 되어 있는 연산자입니다. 아래와 같이 간단하게 사용할 수 있지만, 깔끔하게 정수형으로 리턴하는게 아니라 실수형(float)으로 리턴을 합니다. 예를 들면 다음과 같습니다. >>>> 2/3 0.6666666666666666 2와 3을 입력하면 0.66666666666.. 이라는 실수값을 리턴해줍니다. 즉, '/' 연산자는 나누기의 결과를 리턴합니다. 몫만을 구하기 위해서는 '//' 연산자를 사용합니다. >>>> 3//2 1 >>>> 412 // 4 103 '//' 연산자를 이용하면 정수형으로 몫에 대한 계산 결과를 리턴합니다. 반대로 '%' 연산자는 나머지 값을 리턴해줍니다. >>>> 2%3 2 파이썬에서는 몫과 나머지를 한번에 연산할 수 있는 divmod함수를 제..

반응형