RabbitMQ는 오픈소스 메세지 브로커 소프트웨어이다. 메세지 브로커를 사용하여 다양한 어플리케이션 간 통신을 지원할 수 있다. 언어와 상관없이 AMQP(Advanced Message Queuing Protocol)을 사용하므로 확장성이 좋다고 할 수 있다. 메세지 브로커는 RabbitMQ 뿐만 아니라 Redis, Apache ActiveMQ 등 다양한 소프트웨어가 존재한다. 각 소프트웨어마다 차이점이 있지만, RabbitMQ의 특징만 정리한다. RabbitMQ는 메세지 전달을 위한 큐를 가지고 있다. 큐는 하나만 구성이 될 수 있으며, 여러개의 큐를 관리할 수 있다. 뿐만 아니라 네임스페이스를 만들어서 큐를 그룹핑 할 수 있다. 토픽이라는 것이 있으며 MQTT(Message Queuing Telemetry Transport)와 같은 방식으로 메세지를 전달할 수 있다. 추후 RabbitMQ 에 대한 내용은 RabbitMQ Tutorial을 정리할 예정이다.
-
posts
-
Spring Boot에서 Amazon MQ의 RabbitMQ 연동 (1)
-
Spring Boot - static 변수에서 @Value Annotation 사용
Spring Boot에서는 초기화 과정에서 컴포넌트를 주입할 때, 어플리케이션에 대한 Key/Value 형태의 설정을 클래스 내 변수에 값을 넣어주는 @Value Annotation이 존재한다. 이러한 설정은 application.properties 또는 application.yml 과 같은 파일에서 다음과 같은 형식으로 관리할 수 있다.
-
라즈베리파이 비밀번호 초기화 방법
여러대의 라즈베리파이를 사용하다보면, 설정해둔 패스워드를 까먹기 마련이다. 라즈베리파이로 채점을 진행해야 하는데, 처음부터 설정하기가 너무 번거로워서 기존에 안쓰고 있는 라즈베리파이를 가지고 왔다. 하지만, 라즈비안의 기본 계정인
pi
계정의 패스워드가rasppbery
가 아니라서 고민을 1분 정도 했다. 결론은pi
계정의 패스워드를 초기화 하는 방법을 고안하였다. -
워드프레스 플러그인, wppb로 쉽게 개발해보기
최근에 워드프레스 기반의 프로젝트를 진행하여 워드프레스 플러그인을 개발할 필요가 있었다. 사용자는 자신이 등록한 것에 대한 진행사항을 볼 수가 있다. 이러한 진행사항은 관리자가 관리자 페이지에서 사용자 별로 입력을 해주는 시스템을 만들어야 했었다. 기본적으로 사용자에게 보여줄 페이지는 shortcode를 만들고 페이지 하나 만든 뒤에 shortcode에서 만든 템플릿을 보여주면 된다. 관리자 페이지에서는 좌측 메뉴에 진행사항을 입력할 수 있는 메뉴를 만들고, 이를 위한 페이지를 하나 만들어서 보여주면 된다. 하지만, 이러한 과정은 보기엔 간단하더라도 추후 기능이 추가되고 관리를 위해서는 구조적인 소스코드로 진행을 하는 것이 좋다. 과거에는 직접 플러그인 코드를 짜기 위해서 하나하나 만들었었는데, 최근에 아주 좋은 도구가 있어서 공유하려고 한다.
-
라즈베리파이 3에서 u-boot를 이용한 raspbian 부팅
예전에 연구실에서 라즈베리파이 캐시에 관해서 진행했던 프로젝트가 있었다. 연구실 후배가 진행했던 것이었는데, 당시에 나는 졸업 준비를 하고 있어서 제대로 도와주지 못했다. 이제 졸업 준비도 모두 마무리 했고, 시도하고 싶은 내용이 있어서 남은 시간에 확인해보려고 한다. 이를 위해서 라즈베리파이를 로우 레벨(low level)에서 다뤄봐야 하는데, 이를 위해서 u-boot를 사용하여 라즈베리파이3 B 모델에 raspbian을 부팅해보려고 한다.
-
오픈소스 활동, pull request 부터가 시작이다
최근에 작은 프로젝트에 코드를 기여하고 있다. 현재 블로그에서 사용하고 있는 테마에 새로운 기능이나 자잘한 오류를 수정해서 코드를 기여하고 있는 중이다. 현재 사용하고 있는 테마는 매우 깔끔하면서 담백해서 아주 마음에 들고 있다. 추후에는 태그 기반 모음이나 카테고리 별 글 보기 등 다양한 코드를 작성하고 기여할 예정이다. 과거 2014년도에 iOS 개발할 때도 github에 올라와 있는 코드를 사용하고 있었는데, 아주 작은 문제가 발생해서 이를 수정하고 코드를 기여한게 github에서의 첫 오픈소스 활동의 시작이라고 볼 수 있다(물론 과거 커뮤니티 활동을 했을 때 zip 포맷으로 코드를 공유하긴 했었다). 물론, 당시 일이 바쁘다는 핑계로(물론 실제로 바빴다..) 더 많이 기여는 할 수 없었지만, 최근에는 시간 관리를 하는 방법도 나름 터득도 하고 마음도 당시보다 성장하여 개인적인 여유를 만들고 있다.
-
SVG, 사파리에서 흐리게 보이다
최근에 vue.js 기반으로 Front-end 작업을 진행하고 있다. RESTful API를 연동하여 서비스를 구축하는 업무를 진행하고 있는데, 일을 모두 마무리 하고 전달을 했더니 그에 대한 QA 결과로 다음과 같은 결과를 전달 받았다.
-
valgrind 간단 사용법
C언어로 프로그래밍을 하다보면 다양한 문제에 봉착할 수 있다. 문제는 크게 두 가지로 정의할 수 있는데, 첫 번째는 문법으로 오류와 두 번째는 논리적인 오류이다. 최근의 컴파일러가 발달하면서 C언어 문법에 대한 구문 분석기가 매우 정확해지고 수정을 위한 제안을 아주 잘해주고 있다. 이는 llvm 툴이 더욱 자세하게 보여주고 있다. 이와 같은 이유로 문법으로 인한 오류는 너무 찾기 쉬워졌다. 코딩하면서 가장 큰 문제는 논리적인 오류이다. 컴파일과 오브젝트 파일에 대한 링크는 잘 되지만, 프로그램을 실행만 하면 오류가 나는 부분이다. 특히, 메모리 관리를 제대로 하지 못하면 “Segmentation Fault” 오류를 계속 볼 수 있을 것이다. 뿐만 아니라, Multi Threading 프로그래밍을 하다보면 공유 자원에 대한 동기화를 진행할 때 Mutex 또는 Semaphore를 사용할 수가 있다. 동기화를 진행하다보면 lock을 했지만, unlock을 하지 않아서 deadlock에 봉착할 수 있거나, lock이 되지 않은 상태에서 unlock을 하는 등 의도하지 않은 코딩을 할 수가 있다. 이러한 문제를 명령어 단위로 분석해주는 도구인 valgrind를 간단하게 소개하려고 한다.
-
xcode command line 도구 경로 변경
코코아 어플리케이션을 위한 패키지 관리 도구인 Carthage 를 이용하여 사용할 프레임워크를 설정하는 도중 다음과 같은 오류가 발생하였다.
-
InfiniBand OFA 드라이버 설치 및 설정 방법
이번에 InfiniBand 장비를 가지고 프로젝트를 진행해야 하는 일이 있어서 Open Fabric Allience에서 제공하는 드라이버 설치와 설정하는 과정을 남겨두려고 한다. 본 글에서는 InfiniBand OFA 드라이버 설치, InfiniBand 장비 설정 그리고 벤치마킹을 통해서 정상적으로 동작하는지 알아볼 예정이다.
-
워드프레스로부터의 이주
기존 홈페이지를 워드프레스로 구축하여 Amazon Web Service를 통해서 운영하고 있었다. 하지만, 블로깅을 자주하는 것도 아니고 서비스를 제공하고 있지 않기 때문에 매 월 나가는 AWS 비용이 나에게 있어서 고정 지출로써 너무 컸다. 약 $48가 매 월 고정 지출로 빠져나가는데 아직까지 나에게 있어서 이러한 비용을 사용하기엔 허세가 너무 심하다고 생각이 들었다. 따라서, 기존 AWS 인스턴스를 잠시 닫아두고 Github Page를 통해서 틈틈이 자료를 정리해보려고 한다… 적어도 이틀의 한 번은 글을 써보고 싶다..