Ruby
-
Programming Ruby (32) 문자 인코딩Ruby 2016. 11. 23. 22:33
출판사, 원작자의 저작권의 문제 소지가 발생하는 경우 본 게시물은 삭제될 수 있습니다. 문자 인코딩 루비 1.9 이전에는 루비 기본 인코딩이 아스키 문자 인코딩이었다. 루비 1.9 부터 인코딩 시스템을 제공하는데 그 핵심에는 Encoding 클래스가 있다. Encoding 클래스의 객체들은 각각 서로 다른 인코딩 방법을 나타낸다. Encoding.list 메서드는 내장된 인코딩 목록을 반환하며, Encoding.aliases 메서드는 키가 별칭, 값이 대응하는 베이스 인코딩으로이루어진 해시를 반환한다. encoding/list_encodings.rb encodings = Encoidng .list .each.with_object({ }) do | enc, full_list | full_list[enc.n..
-
Ruby Module 어떤 경우에 사용해야 할까요?Ruby 2016. 11. 23. 20:51
Ruby를 공부하면서 다른언어와 다르게 이해하기가 아리송한 개념이 바로 Module과 Mixin 입니다. Module은 클래스 인것 같으면서도 아닌것 같은. 대체 이놈은 뭘하는 놈인지 공부하면 할수록 더 어려운 개념입니다. RORLAB의 rinae님께서 module 개념에 대해 간략히 다시 정리를 해주신 내용을 공유하고자 합니다. Ruby Module 모듈은 기본적으로 여러 클래스에서 같은 메서드를 사용하고자 할 때 + 하지만 상속관계로 설정하고 싶지 않을 때 쓰시면 됩니다 이를테면 Bird 라는 클래스에 `fly` 가 구현되어 있다고 하면 하위클래스로 Swallow, Eagle 을 만들어서 Bird를 상속받을 수 있겠지요 다만 이 `fly` 라는 녀석이 꼭 Bird 안에 구현되어있을 필요는 없는겁니다 ..
-
Programming Ruby (31) 이름 공간, 소스 파일, 배포 - 2Ruby 2016. 11. 22. 22:20
출판사, 원작자의 저작권의 문제 소지가 발생하는 경우 본 게시물은 삭제될 수 있습니다. 코드 배포하고 설치하기 루비를 설치하면 표준적인 구조로 설치가 된다. 루비가 설치되면 루비의 명령어들(ruby, ri, irb)은 바이너리 파일들을 저장하는 디렉터리에 설치된다. 또한 루비에 포함된 라이브러리들은 다른 디렉터리에 저장되고, 문서도 또 다른 어딘가에 저장된다. 따라서 루비가 설치된 시스템 상의 이러한 표준적인 구조에 따라서 애플리케이션의 코드들을 각각 적절한 위치에 배포하는 스크립트를 작성하는 것을 고려해 볼 수 있다. 패키지 작성에 관한 규칙을 따르기 프로젝트 디렉터리 아래에는 라이브러리가 하는 일과 저작권과 관련된 사항을 담은 README 문서가 포함되어야만 한다. 설치 과정을 담은 INSTALL 문..
-
Programming Ruby (30) 이름 공간, 소스 파일, 배포 - 1Ruby 2016. 11. 22. 20:35
출판사, 원작자의 저작권의 문제 소지가 발생하는 경우 본 게시물은 삭제될 수 있습니다. 코드를 구성하는데는 크게 두 가지 측면을 고려해야 한다. 첫 번째는 서로 다른 코드가 같은 이름을 가지고 있을 때 어떻게 충돌을 방지할 것인가 하는 문제, 두 번째는 다수의 소스 파일을 어떻게 프로젝트로 구성할 것인가 하는 문제다. 이름 공간 어떤 클래스 내부에 정의된 메서드나 상수의 이름은 그 클래스의 맥락에서만 사용 가능하다. class Triangle SIDES = 3 def area # ... end end class Square SIDES = 4 def initialize(side_length) @side_length = side_length end def area @side_length * @side_len..
-
Programming Ruby (29) 루비 세팅하기 - gemRuby 2016. 11. 21. 23:51
루비가 라이브러리를 찾는 곳 특정 라이브러리를 루비 프로그램에서 사용하기 위해 require와 load를 사용할 수 있다. 루비를 특정 머신에 맞추어 빌드하면, 라이브러리 코드가 저장되는 표준 디렉터리 목록을 미리 만들어둔다. $ ruby -e 'puts $:' 위의 명령을 통해 루비 라이브러리 디렉터리 경로를 알 수 있다. 팀원 모두가 공유하는 라이브러리를 접근해야 하는 경우 선택방법이 두가지가 있다. 프로그램을 안전 수준 0에서 돌린다면 RUBYLIB 환경 변수 검색에 사용할 디렉터리를 하나 이상 추가할 수도 있다. 그리고 프로그램이 setuid를 사용하지 않는다면, 명령행 옵션 -I를 써도 같은 효과를 얻을 수 있다. $: 변수는 불러올 파일을 검색하는 경로를 담은 배열이다. 이 변수는 초기값으로 ..
-
Programming Ruby (28) 루비 세팅하기Ruby 2016. 11. 17. 23:01
명령행 인자 루비 명령행은 세 부분으로 나뉜다. 루비 인터프리터 옵션, 그리고 실행해야 할 프로그램 이름, 프로그램의 매개 변수 집합이다. ruby * 루비 옵션은 명령행 중에서 하으픈으로 시작하지 않은 부분이 나오기 전까지 또는 특별한 플래그인 --(하이픈 두 개)가 나오기 전까지다. 명령행 옵션 -0 [octal] 숫자 0 플래그는 레코드 구분 문자를 명시한다 -00으로 문단 모드가 되며 두 개의 연속되는 기본 레코드 구분자로 구분된다 -a -n이나 -p와 함께 사용하면 자동 분할을 가리킨다. 각 루프 반복 첫 부분에 $F=$_.split를 실행하는 것과 동일하다. -C 디렉터리 실행하기 전에 작업 디렉터리를 이동한다. -c 문법 검사만 실행한다. 프로그램은 실행하지 않는다. --copytight 저..
-
루비 모듈과 클래스의 차이점Ruby 2016. 11. 16. 21:00
루비 모듈 vs 클래스? 객체지향 언어인 Java에 익숙한 개발자들은 루비 언어를 이해하는데 큰 어려움이 없을 것이다. 하지만 Module 이라는 개념이 등장하면서 물음표가 하나씩 그려지는 상황들이 연출된다. Ruby의 모듈과 클래스의 개념에 대해 명쾌한 답변들이 없어 StackOverflow에 질문과 답변을 번역해보고자 한다. 모듈은 다양한 클래스에서 사용가능한 메소드를 제공하는 라이브러리라고 생각하면 된다. 클래스는 객체, 모듈은 기능이라고 생각하면 된다. 예를들어 Authentication 과 Authorization 시스템은 모듈의 좋은 예라고 할 수 있다. Authentication 시스템은 다양한 어플리케이션 레벨의 클래스에서 동작한다. 보다 명확한 비교는 아래의 그림을 참조하기 바란다. [참..
-
Programming Ruby (27) 문제해결하기Ruby 2016. 11. 15. 21:00
[출처] Programming Ruby (본 게시물은 저작권의 문제 발생시 출판사의 요청에 의해 삭제될 수 있습니다.) 루비 디버거 루비는 디버거와 함께 제공되고, 편리하게 기본 시스템에 내장되어 있다. 인터프리터를 실행할 때 스크립트의 이름, 다른 루비 옵션과 함께 -r debug 옵션을 주면 디버거를 실행할 수 있다. ruby -r debug 루비 디버거를 이용하면 보통의 디버거가 갖추고 있는 통상적인 범주의 기능을 대부분 제공한다. 중단점을 설정하거나 메서드 호출에 들어가거나(step into) 나오거나(step over), 스택 프레임과 변수를 출력할 수 있다. 또한 특정 객체 또는 클래스에 대해 정의된 인스턴스 메서드를 나열하거나 이를 제어할 수 있다. 루비 디버거 예제 세션을 살펴보자. $ r..