Ruby
-
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 (28) 루비 세팅하기Ruby 2016. 11. 17. 23:01
명령행 인자 루비 명령행은 세 부분으로 나뉜다. 루비 인터프리터 옵션, 그리고 실행해야 할 프로그램 이름, 프로그램의 매개 변수 집합이다. ruby * 루비 옵션은 명령행 중에서 하으픈으로 시작하지 않은 부분이 나오기 전까지 또는 특별한 플래그인 --(하이픈 두 개)가 나오기 전까지다. 명령행 옵션 -0 [octal] 숫자 0 플래그는 레코드 구분 문자를 명시한다 -00으로 문단 모드가 되며 두 개의 연속되는 기본 레코드 구분자로 구분된다 -a -n이나 -p와 함께 사용하면 자동 분할을 가리킨다. 각 루프 반복 첫 부분에 $F=$_.split를 실행하는 것과 동일하다. -C 디렉터리 실행하기 전에 작업 디렉터리를 이동한다. -c 문법 검사만 실행한다. 프로그램은 실행하지 않는다. --copytight 저..
-
Programming Ruby (22) 기본 입출력 - 2Ruby 2016. 11. 7. 23:52
[출처] Programming Ruby (본 게시물은 저작권의 문제 발생시 출판사의 요청에 의해 삭제될 수 있습니다.) 네트워크로 통신하기 Socket 클래스를 이용해 HTTP OPTIONS 요청을 사용해서 로컬 엡 서버에 있는 사용자 웹 사이트에 대한 정보를 가져오는 예제이다. require 'socket' client = TCPSocket.open('127.0.0.1', 'www') client.send("OPTIONS /~dave/ HTTP/1.0\n\n", 0) # 0은 표준 패킷을 의미한다. puts client.readlines client.close 실행결과 HTTP/1.1 200 OK Date: Thu 14 nov ~~ Server: Apache/2.2.24 Allow: GET,HEAD,P..
-
Programming Ruby (21) 기본 입출력 - 1Ruby 2016. 11. 7. 23:50
[출처] Programming Ruby (본 게시물은 저작권의 문제 발생시 출판사의 요청에 의해 삭제될 수 있습니다.) IO 객체 루비는 입/출력을 담당하는 기본 클래스 IO를 제공한다. IO객체는 루비프로그램과 외부 리소스 사이의 양방향 채널 역할을 한다. IO객체는 결국 일과 쓰는 것이 전부이다. 파일 열고 닫기 파일 객체는 File.new 메서드를 이용해서 생성할 수 있다. file = File.new("testfile", "r") # ... 파일에 대한 처리 file.close 첫 번째 매개변수는 파일이름, 두 번째 인자는 모드 문자열, 읽기 모드, 쓰기 모드, 읽기 쓰기모드로 File 객체 생성이 가능하다. (읽기 쓰기모드는 r+, 쓰기모드는 w, 읽기 모드 r) File.open 메서드는 파일..
-
Programming Ruby (19) 예외처리Ruby 2016. 11. 3. 23:59
[출처] Programming Ruby (본 게시물은 저작권의 문제 발생시 출판사의 요청에 의해 삭제될 수 있습니다.) 예외 처리 현실 세계의 프로그램에서는 에러가 발생한다. 좋은 프로그램은 이러한 에러를 예견하고 깔끔하게 해결해야만 한다. 전통적인 접근 방법은 반환 코드를 이용하는 것이다. 파일을 열고 시도하는 예를 들어보자. open 메서드는 실패를 나타내는 특별한 값을 반환한다. 이 에러값은 누군가가 처리해 줄 때까지 메서드 호출 단계를 거슬러 올라가며 전달된다. 이 접근법의 문제점은 모든 에러 코드를 관리하는 것이 어렵다는 것이다. 어떤 함수가 open을 호출하고, 그 다음 read, 마지막으로 close를 호출하는데 각각이 에러 코드를 반환하면 이 함수는 호출자에게 건넬 반환값에서 이 에러 코드..
-
Programming Ruby (15) 표현식 - 2Ruby 2016. 10. 31. 23:38
[출처] Programming Ruby (본 게시물은 저작권의 문제 발생시 출판사의 요청에 의해 삭제될 수 있습니다.) 대입 대입문은 좌변값(lvalue)에 위치한 변수나 속성이 우변값(rvalue)을 참조하게 한다. 그리고 그 값을 대입식의 결과값으로 반환한다. 이 말은 대입문도 연결해서 쓸 수 있다는 의미다. a = b = 1 + 2 + 3 a #=> 6 b #=> 6 a = (b = 1 + 2) + 3 a #=> 6 b #=> 3 File.open(name = gets.chomp) 루비에서 대입은 두 가지 형식으로 이뤄진다. 첫째는 변수나 상수에 객체 참조(object reference)를 대입하는 것이다. 이러한 형식은 언어 자체에 내장되어 있다. instrument = "piano" MIDDLE..
-
Programming Ruby (14) 표현식 - 1Ruby 2016. 10. 31. 23:37
[출처] Programming Ruby (본 게시물은 저작권의 문제 발생시 출판사의 요청에 의해 삭제될 수 있습니다.) 표현식 루비가 다른 언어들과 다른 특징 중 하나는 값을 반환할 수 있어 보이는 모든 곳에서 값을 반환한다는 것이다. 따라서 거의 모든 것이 표현식이 된다. 이것이 실제로 의미하는 바는 무엇일까? 이러한 특징을 통해 구문을 연속해서 쓸 수 있다는(chain statements) 점은 쉽게 유추할 수 있다. a = b = c = 0 # => 0 [3, 1, 7, 0].sort.revers # => [7, 3, 1, 0] C나 자바에서의 일반적인 구문이 루비에서는 표현식이다. 예를들어 if 와 case 구문ㅇ느 둘 다 마지막에 평가된 표현식의 값을 반환한다. 연산자 표현식 루비는 기본적인 연..
-
Programming Ruby (4) 배열, 해시, 블록Ruby 2016. 10. 22. 23:27
[출처] Programming Ruby (본 게시물은 저작권의 문제 발생시 출판사의 요청에 의해 삭제될 수 있습니다.) 루비에는 컬렉션을 다루기 위한 배열과 해시라는 두개의 내장클래스가 준비되어 있다. 4.1. 배열 배열의 인덱스는 0 부터 시작한다. 배열의 위치에 아무것도 없다면 nil을 반환한다. 음수로 위치를 지정하면 배열의 뒤에서부터 위치를 계산해 해당하는 위치의 값을 반환한다. a = [ 1, 3, 5, 7, 9 ] a[-1] # => 9 a[-2] # => 7 a[-99] # => nil 배열 인덱스를 [start, count] 처럼 숫자 쌍으로 지정할 수도 있다. 이는 시작점(start)에서 count 만큼의 객체 참조를 뽑아서 새로운 배열을 만들어 반환한다. a = [ 1, 3, 5, 7,..