nacyot profile image

루비(Ruby) 목록

루비와 익명 함수 - 블록(block), Proc(절차, procedure) 객체와 람다(lambda) 함수의 차이 이해하기

프로그래밍 2015년 12월 08일 발행

루비 Advent Calendar 2015 7일차로 참석합니다.

루비에서 가장 특징적이고 많이 사용되는 문법이 바로 블록입니다. 루비에서는 블록 문법을 통해서 하나의 익명 함수를 손쉽게 함수에 넘겨줄 수 있습니다. 대부분의 반복문을 비롯해 인터페이스로도 자주 사용되기 때문에 익명 함수 개념을 이해하는 것은 매우 중요합니다. 블록을 사용하지 않더라도 루비에서는 명시적으로 익명 함수 객체를 생성할 수 있습니다. 익명 함수를 만드는 두 가지 대표적인 방법이 바로 Proc 객체와 lambda문을 사용하는 것입니다. 이 글에서는 루비에서의 익명 함수와 Proc 객체와 lambda문으로 생성된 익명 함수의 차이점을 살펴보겠습니다.

계속 읽기

루비와 파이썬에서 함수 호출과 함수 참조에 대한 차이

프로그래밍 2014년 12월 17일 발행

루비에서는 메서드를 괄호 없이 호출할 수 있습니다. 반면에 파이썬에서는 함수를 괄호 없이 사용하면, 함수 호출이 아니라 해당하는 이름을 가진 함수를 참조하게 됩니다. 이는 루비와 파이썬에서 변수와 함수가 존재하는 공간의 차이에서 비롯되는 차이로, 이 글에서는 루비와 파이썬의 함수(메서드) 호출과 함수 참조에 대한 문법 차이를 다룹니다.

계속 읽기

도커(Docker)로 루비 온 레일스 어플리케이션 배포하기 (1) 어플리케이션 이미지 만들기

프로그래밍 시스템 2014년 08월 08일 발행

이 글은 지난 6월 10일 RORLab에서 발표한 '도커(Docker)로 루비 온 레일스 어플리케이션 배포하기'를 정리한 문서입니다. 발표 자료는 페이스북 페이지를 참조해주세요. 먼저 이미지와 컨테이너 소개 및 이미지 생성에 대해서 다룬 앞 부분은 이전에 작성했던 문서 '도커(Docker) 튜토리얼 : 깐 김에 배포까지'로 대체합니다.

이 글은 두 편으로 나눠서 공개할 예정입니다. 먼저 이 글에서는 Docker를 사용해 Ruby on Rails 어플리케이션을 도커 이미지화하는 법에 대해서 다룹니다. 그리고 다음 글에서는 이미지화한 어플리케이션을 실제로 어떻게 배포하는 지와 간단한 스케일 아웃 예제를 소개합니다.

계속 읽기

루비의 꽃, 열거자 Enumerable 모듈

프로그래밍 2014년 04월 19일 발행

프로그래밍을 배우면 피해갈 수 없는 부분 중 하나가 바로 제어 추상화입니다. 그 중에서도 반복문은 특히 많이 사용되는데, 재미있는 건 루비에서는 다른 언어에서 많이 사용되는 while이나 for 같은 문법을 잘 사용하지 않는다는 점입니다. 이러한 변수 재대입에 의존한 반복문들을 사용하기보다는 컬렉션의 요소 하나하나를 블록에 넘겨 평가하는 each와 같은 열거자(Enumerable) 메서드가 주로 사용됩니다. 이러한 컬렉션 확장 메서들은 처음 사용할 때는 낯설게 느껴질 지도 모르지만, 사실은 컬렉션 없는 반복문이야 말로 특수한 경우이므로 루비의 접근이 합리적이라는 걸 금방 깨닫게됩니다. 나아가 Enumerable은 단순히 each 메서드만 제공하는 게 아닙니다. 다양한 열거자 메서드를 통해 루비에서 컬렉션을 좀 더 자유자재로 다룰 수 있습니다. 이 글에서는 Enumerable 모듈에 포함된 다양한 열거자 메서드들을 소개합니다.

계속 읽기

루비(Ruby) 테스트 프레임워크 RSpec 2.14 매쳐(Matchers)

프로그래밍 2014년 04월 07일 발행

루비에서는 테스트를 하기 위해 minitestBDD 프레임워크인 RSpec이 많이 사용됩니다. 유닛 테스트에 친숙하신 분들은 minitest를 선호하지만, 좀 더 설명적인 테스트가 가능한 RSpec도 많이 사용되고 있습니다. 이 글에서는 RSpec 테스트에서 사용할 수 있는 빌트인 테스트 매쳐(Matcher)들을 간단히 소개합니다.

계속 읽기

쿡패드(Cookpad) 루비(ruby) 스타일 가이드

프로그래밍 2014년 03월 23일 발행

이 문서는 Cookpad의 Ruby Style Guidenacyot이 한국어로 번역한 문서입니다. 번역된 문서는 Github 저장소에서 관리되고 있으며 원본은 여기에서 찾아볼 수 있습니다. 이 문서는 cc-by 라이센스를 따릅니다.

계속 읽기

우분투(ubuntu) 13.10 개발환경 준비하기

소프트웨어 2014년 01월 18일 발행

Ubuntu 13.10 개발 환경 세팅 정리. 서버면 자동화시키는 것도 좋은 방법일 듯 한데, 데스크탑은 그래픽 드라이버 같은 부분이 컴퓨터마다 다르다 보니 완전히 자동화하는 건 쉽지 않은 것 같다. 지난 번까지 우분투 13.04 써왔는데(지금 노트북도 13.04), 이번에 새로 13.10에 도전해봤다. 사실 그래픽 드라이버 문제로 13.04로 낮추고 싶었으나, 조만간 지원이 끝난다고 하길래 맘 잡고 13.10으로 개발환경 정리를 했다. 금요일 오전 내내 걸렸으니까 전체 세팅하는데 4~5시간 정도 걸린 것 같다. 이걸로 기본적인 부분은 정리가 된 듯 싶고, 어디까지나 앞으로 삽질 방지용 포스트.

참고로 본인은 Ubuntu / Terminator(터미널 프로그램) / Emacs(에디터) / Dvorak(키보드 레이아웃) 사용자.

계속 읽기

hub(허브)로 명령행에서 Github(깃허브) 풀리퀘스트 보내기

프로그래밍 소프트웨어 2013년 12월 29일 발행

오픈소스뿐만 아니라 git를 사용해 소스 코드의 버전관리를 하는 경우엔 원격 git 저장소로 Github를 많이 사용합니다. Github는 단순히 git 저장소 역할을 하는 것뿐만 아니라 웹 인터페이스를 통해서 저장소를 관리할 수 있게 도와주며, 소스코드를 공유하고 협업하기 위한 다양한 기능을 제공합니다. 또한 Github 고유의 기능을 명령행 인터페이스 사용할 수 있게 도와주는 hub라는 도구를 지원합니다. 이 글에서는 hub(허브)를 Git 명령어에 연동해서, 명령행에서 풀리퀘스트를 보내는 방법을 설명합니다.

계속 읽기

알아두면 도움이 되는 55가지 루비(Ruby) 기법

프로그래밍 2013년 11월 24일 발행

이 글은 kyoendo 씨의 55 Trivia Notations you should know in Ruby 문서를 nacyot이 번역한 글입니다. 번역된 문서는 gist에서 관리되고 있습니다. 원본은 여기에서 찾아볼 수 있으며 cc-by-nc 라이센스에 따라 공개되어있습니다. 번역본 또한 같은 라이센스를 따릅니다.

계속 읽기

Github 에코시스템 - Git을 둘러싼 유용한 서비스들

프로그래밍 서비스 2013년 10월 02일 발행

소스 관리를 위해 사용하는 Github와 바로 연동해서 사용할 수 있는 많은 좋은 서비스들이 있습니다. 이러한 서비스들의 장점은 github와 바로 연동할 수 있고 open-source에 대해서는 대개 무료로 사용할 수 있다는 점입니다. 이 서비스들을 이용하지 않아도 어차피 내부적으로 다 사용해야만 하는 기능들이기 때문에, 공개적으로 오픈소스 개발하시는 경우엔 적극 도입을 검토해보셔도 좋을 듯 합니다. 여기서는 코드 퀄리티 관리 서비스 Code Climate, 의존성 버전 관리 Gemnasium, 루비 문서 서비스 rubydoc.info, CI 서비스 Trivas, 테스트 커버리지 관리 서비스 Coveralls를 간락히 소개합니다.

계속 읽기

Rspec과 가드(Guard)를 활용한 루비(Ruby) 테스트 자동화

프로그래밍 소프트웨어 2013년 10월 02일 발행

루비 테스트로는 minitestRspec이 많이 사용됩니다. 저는 대부분 Rspec을 사용합니다만, 어느 쪽이건 이러한 테스트를 매번 직접 실행해주기는 매우 귀찮은 일입니다. 이러한 부분을 자동화하기 위해서 과거에는 Autotest 같은 툴이 사용되었습니다. Autotest는 특정 파일이 수정되면 테스트를 자동으로 실행하는 방식으로 작동합니다. 현재는 Autotest 대신에 Guard를 많이 사용하는데, Guard는 특정한 파일을 감시하다가 이러한 파일에 변화가 있을 때 특정한 명령어를 수행하는 좀 더 범용적인 툴이라고 생각하면 됩니다. 여기서는 Guard를 사용해 rspec 테스트를 자동화하는 법을 소개합니다.

계속 읽기