[RabbitMQ] 원격 프로시저 호출 (RPC)(using the Bunny client) 두 번째 강의에서 여러 worker들 사이에서 시간이 소요되는 작업을 분배하는 Work Queue에 관해서 배웠습니다. 하지만 만약 원격지의 함수를 실행시키고 해당 결과를 기다리는 경우에는 어떨까요? 이 경우는 약간 다른 경우입니다. 흔히 보통 이런 경우를 원격 프로시저 호출 또는 RPC(Remote Procedure Call)라고 알려져 있습니다. 이번 강의에서 RabbitMQ를 RPC 시스템을 구축하는데 사용해볼 것 입니다: 클라이언트와 확장가능한 RPC 서버로 구성됩니다. 실제의 시간이 소요되는 작업이 없기 때문에 피보나치 수열을 반환하는 가짜 RPC 서비스를 제작해볼 것 입니다. 전제조건이 튜토리얼에서 R..
[RabbitMQ] Topics(using the Bunny client) 이전 강의에서 우리의 로그 시스템을 발전 시켜봤습니다. 단순히 브로드캐스팅을 하는 fanout exchange 대신에 direct 를 이용하여 메시지 로그를 선택적으로 수신할 수 있게 해보았습니다. 비록 direct exchange를 사용하여 우리의 시스템을 진보시켜보았지만 여전히 다중 기준에 의한 라우팅을 할 수 없는 한계가 존재합니다. 우리의 로그 시스템은 info, warning, error 와 같은 규칙에 분류한 구독을 할 수 있지만 로그를 출력하는 프로그램에 따른 구독은 할 수 없습니다. 유닉스의 syslog 툴의 개념을 생각하면 됩니다. syslog는 규칙(info/warn/cri..)와 출처(auth/cron/kern..
Work Queues (using Bunny) 첫번째 강의에서 queue로 송/수신하는 프로그램을 작성했습니다. 이번 강의에서는 여러 작업 프로세스들 사이에서 일정 시간이 소모되는 작업들을 분배하는 Work Queue 를 만들것 입니다. Work Queue(Task Queues 라 불리는)의 핵심 개념은 자원소모가 많은 작업을 즉시 처리하지 않고 작업이 완료될 때까지 기다리는 것입니다. 대신 이 작업이 나중에 처리되어지도록 스케쥴해야합니다. 작업을 메시지로 캡슐화하여 queue에 전송할 것입니다. 작업 프로세스는 백그라운드로 실행되면서 작업을 queue로 부터 꺼내 수행합니다. 여러 작업 프로세스들을 실행시킬 경우 작업들은 프로세스들 사이에서 분배되어 실행될 것입니다. 이 개념은 웹 어플리케이션에서 복잡..
RabbitMQ란? RabbitMQ는 AMQP 프로토콜을 구현한 메시지 브로커입니다. producers 로부터 메시지들을 받아 consumers 에게 전달해주는 서비스로, 쉽게말해 시스템 간에 메시지를 전달해주는 서비스입니다. RabbitMQ는 사용자가 설정한 규칙에 따라 메시지들을 route, buffer, persist 할 수 있습니다. 일반적으로 메시징 시스템이나 RabbitMQ 에서 사용하는 컴퓨터 용어를 살펴보겠습니다. Producing 은 메시지를 전송한다는 의미입니다. 메시지들을 전송하는 프로그램을 producer 라 부릅니다. 앞으로 producer를 P 라고 나타내겠습니다. Queue는 mailbox를 의미하며 RabbitMQ 시스템 내에 위치하게 됩니다. 메시지들은 RabbitMQ를 통..
Rails 에서 외부 폰트의 위치 경로와 사용 시 path 입력 방법을 알아보겠습니다. 환경 : Ruby 2.0.0-p598 Rails 4.1 위의 그림과 같이 app - assets 하위에 기존의 images, javascripts, stylesheets 와 동일한 위치에 fonts 디렉터리를 생성해줍니다. 그리고 config/application.rb 에 다음과 같은 내용을 삽입해 줍니다. config.assets.paths
Rails 4 에서 Paperclip 과 Image Magick 으로 파일 업로드 및 이미지 처리를 할 수 있습니다. Paperclip 을 이용한 프로필 사진 기능을 만들어보도록 하겠습니다. Requirements1. Ruby 버전 1.9.2 이상2. Rails 버전 3.0 이상3. ImageMagick 설치 1. ImageMagick 설치$ sudo apt-get install imagemagick$ sudo apt-get instal libmagickwand-dev 2. Paperclip gem 설치Gemfile 에 추가gem "paperclip", "~> 4.1"$ bundle install 3. User 모델에 컬럼추가$ rails g paperclip user avatar$ rake db:mig..
Ubuntu 에서 Ruby & Rails 설치하기 1. RVM 설치$ curl -sSL https://get.rvm.io | bash -s stable 2. RVM 실행$ rvm get stable 3. Ruby 설치에 필요한 패키지들 설치$ rvm requirements ("Command not found" 에러시)$ source ~/.rvm/scripts/rvm 4. 패키지 management 설치$ apt-get install libyaml-dev 5. RVM의 OpenSSL 환경변수 등록$ rvm install 2.0.0 --with-openssl-dir=$HOME/.rvm/usr 6. Rails 애플리케이션을 실행하기 위한 필요한 Gemset 설정rvm use 2.0.0@railstutorial..
[Ruby on Rails] gmail gem을 이용한 이메일 전송 1. Gemfile 에 gem 'gmail' 추가 2. bundle install 로 gmail gem 설치 3. 입력 폼 작성 입력폼의 view 페이지로 email_send 페이지의 인자값으로 email, title, content를 전달한다. 4. 해당 Controller의 Action에 기능 추가 입력폼에서 전송된 인자값들을 email, title, content 변수에 저장한다. Gmail.connect()로 계정에 로그인을 하고 해당 변수에 저장된 email 주소로 이메일을 전송한다.여기서 your_gmail_id 와 your_gmail_password는 gmail 의 계정과 패스워드를 입력하면 된다. 5. 결과 view 작성 ..