programming 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 (28) 루비 세팅하기Ruby 2016. 11. 17. 23:01
명령행 인자 루비 명령행은 세 부분으로 나뉜다. 루비 인터프리터 옵션, 그리고 실행해야 할 프로그램 이름, 프로그램의 매개 변수 집합이다. ruby * 루비 옵션은 명령행 중에서 하으픈으로 시작하지 않은 부분이 나오기 전까지 또는 특별한 플래그인 --(하이픈 두 개)가 나오기 전까지다. 명령행 옵션 -0 [octal] 숫자 0 플래그는 레코드 구분 문자를 명시한다 -00으로 문단 모드가 되며 두 개의 연속되는 기본 레코드 구분자로 구분된다 -a -n이나 -p와 함께 사용하면 자동 분할을 가리킨다. 각 루프 반복 첫 부분에 $F=$_.split를 실행하는 것과 동일하다. -C 디렉터리 실행하기 전에 작업 디렉터리를 이동한다. -c 문법 검사만 실행한다. 프로그램은 실행하지 않는다. --copytight 저..
-
Programming Ruby (27) 문제해결하기Ruby 2016. 11. 15. 21:00
[출처] Programming Ruby (본 게시물은 저작권의 문제 발생시 출판사의 요청에 의해 삭제될 수 있습니다.) 루비 디버거 루비는 디버거와 함께 제공되고, 편리하게 기본 시스템에 내장되어 있다. 인터프리터를 실행할 때 스크립트의 이름, 다른 루비 옵션과 함께 -r debug 옵션을 주면 디버거를 실행할 수 있다. ruby -r debug 루비 디버거를 이용하면 보통의 디버거가 갖추고 있는 통상적인 범주의 기능을 대부분 제공한다. 중단점을 설정하거나 메서드 호출에 들어가거나(step into) 나오거나(step over), 스택 프레임과 변수를 출력할 수 있다. 또한 특정 객체 또는 클래스에 대해 정의된 인스턴스 메서드를 나열하거나 이를 제어할 수 있다. 루비 디버거 예제 세션을 살펴보자. $ r..
-
Programming Ruby (26) 단위테스트 - 2Ruby 2016. 11. 14. 22:14
[출처] Programming Ruby (본 게시물은 저작권의 문제 발생시 출판사의 요청에 의해 삭제될 수 있습니다.) 테스트 구조화 다음 코드를 통해 단위 테스트를 위한 테스트 프레임워크를 읽어 들일 수 있다. require 'test/unit' 순수하게 MiniTest만을 사용하는 경우 아래와 같이 사용한다. require 'minitest/unit' 단위 테스트는 테스트케이스(test case)라 불리는 고수준 그룹과 테스트 메서드 자체인 저수준 그룹으로 나뉜다. 테스트 케이스는 일반적으로 특정코드 또는 기능에 관련된 모든 테스트를 포함한다. 테스트 케이스 안에서도, 단언문을 몇 개의 테스트 메서드로 분류하고 구성해서 넣을 수 있다. 테스트 케이스를 표현하는 클래스는 Test::Unit::TestC..
-
Programming Ruby (25) 단위테스트 - 1Ruby 2016. 11. 10. 20:13
[출처] Programming Ruby (본 게시물은 저작권의 문제 발생시 출판사의 요청에 의해 삭제될 수 있습니다.) 단위 테스트는 작은 코드 덩어리, 즉 일반적인 각 메서드와 메서드에 포함된 각 줄을 대상으로 테스트를 수행한다. 시스템 전체를 하나의 테스트 대상으로 보는 다른 테스트와는 대조된다. 소프트웨어는 결국 계층 구조를 이루고 있기 때문에 테스트 대상을 작게 잡아야 한다. 특정 위치에 있는 코드들은 그 아래 계층의 코드가 정상으로 작동해야만 문제없이 작동한다. 아래 계층의 코드에 버그가 있다면 그 위의 계층 역시 이에 영향을 받을 수 있다. 단위 테스트는 프로그래머가 더 좋은 코드를 작성하는 데 도움을 준다. 이는 코드를 실제로 작성하기 전에 테스트에 대해 생각해 보게 함으로써 자연스럽게 더 ..
-
Programming Ruby (23) 파이버, 스레드, 프로세스 - 1Ruby 2016. 11. 8. 22:01
[출처] Programming Ruby (본 게시물은 저작권의 문제 발생시 출판사의 요청에 의해 삭제될 수 있습니다.) 루비는 프로그램의 다른 부분을 '동시에' 실행하는 기본적인 두 가지 방법을 제공한다. 파이버를 사용하면 프로그램의 일부분을 정지하고 다른 부분을 실행할 수 있다. 파이버보다 작업간의 결합도가 적은 방법으로는 다수의 스레드를 사용하는 방법과 다수의 프로세스를 분리하는 방법이다. 파이버 루비 1.9에서 파이버가 도입되었다. 파이버는 단순한 코루틴 메커니즘이다. 이를 사용하면 스레드 고유의 복잡한 처리 없이도 스레드 사용하는 것처럼 프로그램을 작성할 수 있다. 다음 예제는 택스트 파일을 분석해 출현횟수를 계산한다. 먼저 파이버를 사용하지 않고 반복문으로 구현한다. counts = Hash.n..