전체보기
-
루비 HTTP POST Request 나를 미치게 하다.Ruby 2016. 10. 26. 22:03
http://www.mudskipper-solutions.com/home/how-to-send-jsonhttp-using-ruby 위의 블로그 내용을 보면 Ruby 뿐만 아니라 다수의 언어들이 내장 HTTP 클래스의 Post 의 Body에 JSON Data를 전송할 수 없도록 한다고 한다. 이틀전. Ruby 2.0 Documentation 대로 HTTP Post Request Body에 Json String 을 넣었다가 원인을 알수 없는 헬게이트로 빠지게 되었다. 분명 Request 클래스의 Body에는 Json Data가 포함되어 있는데 서버에선 Request body 가 없다는 응답만 계속되었다. 이틀을 날려먹고 구글링하다가 결국 찾아낸 정보... 루비를 패버릴수도 없고 ;; 대체 왜 그런걸까...?..
-
Programming Ruby (10) 모듈Ruby 2016. 10. 25. 23:13
[출처] Programming Ruby (본 게시물은 저작권의 문제 발생시 출판사의 요청에 의해 삭제될 수 있습니다.) 모듈 모듈은 메서드와 클래스, 상수를 함께 하나로 묶는 수단이다. 모듈은 다음과 같은 두 가지 장점이 있다. 1) 모듈은 이름 공간을 제공해서 이름이 충돌하는 것을 막아준다. 2) 모듈은 믹스인 기능을 구현하는데 이용한다. 이름공간 서로 다른 파일에 정의된 변수의 중복을 막기 위해 모듈 구조를 사용한다. 모듈은 이름 공간을 정의하는데 이것은 다른 메서드나 상수에 의해 방해 받을 염려 없이 메서드와 상수를 정의할 수 있는 일종의 샌드박스이다. trig.rb module trig PI = 3.141592654 def Trig.sin(x) # ... end def Trig.cose(x) # ..
-
Programming Ruby (9) 상속Ruby 2016. 10. 25. 23:12
[출처] Programming Ruby (본 게시물은 저작권의 문제 발생시 출판사의 요청에 의해 삭제될 수 있습니다.) (이전 포스팅 내용 이어서) 컨테이너는 어디에나 있다 컨테이너, 블록, 반복자는 루비의 핵심 개념이다. 루비 코드를 작성하면 할수록 전통적인 반복문을 벗어나는 자신을 발견하게 될 것이다. 대신 자신의 내용을 반복하는 것을 돕는 클래스를 작성하게 된다. 이런 코드가 간결하고 읽기 쉽고, 또 관리도 편하다는 사실도 금방 깨닫게 될 것이다. 루비 라이브러리들과 프레임워크를 사용하는 과정에서 자연스럽게 많은 연습을 하게 될 것이다. 상속과 메시지 to_s 를 구현하지 않은 클래스의 객체들도 to_s 메서드 호출에 대해 무언가를 반환해준다. 이것이 어떻게 가능한지 이해하려면 상속과 자식 클래스 ..
-
Programming Ruby (8) 트랜잭션을 위한 블록, 객체로서의 블록Ruby 2016. 10. 24. 23:50
[출처] Programming Ruby (본 게시물은 저작권의 문제 발생시 출판사의 요청에 의해 삭제될 수 있습니다.) 트랜잭션을 위한 블록 트랜잭션 제어 하에서 동작해야 하는 코드를 작성할때 블록을 사용할 수 있다. 예를 들어 파일을 열고 그내용으로 어떤 작업을 하고 이 작업을 마치면 이 파일이 닫힌다는 사실을 확신하고 싶다고 하자. 블록을 사용하는 방식은 단순하게 표현할수 있다. 다음 예제는 예외처리를 포함하지 않는 간단한 구현을 보여준다. class File def self.open_and_process(*args) f = File.open(*args) yield f f.close() end end File.open_and_process("testfile", "r") do |file| while l..
-
Programming Ruby (7)루비 2의 게으른 열거자Ruby 2016. 10. 24. 23:48
[출처] Programming Ruby (본 게시물은 저작권의 문제 발생시 출판사의 요청에 의해 삭제될 수 있습니다.) 루비2의 게으른 열거자 열거자를 통해 무한한 시퀀스를 생성하는 데는 문제가 하나있다. select 와 같은 탐욕적(?)이지 않은 특별한 메서드를 만들어야 한다. 다행히도 루비 2.0에는 이러한 기능이 내장되어 있다. 어떤 루비 열거자이든 Enumerator#lazy 메서드를 호출하면 Enumerator::Lazy 객체를 반환한다. 다른 열거자와 같은 방식으로 동작하지만 무한한 시퀀스에 대해서도 정상적으로 동작하도록 select는 map과 같은 메서드들이 재정의 되어 있다. 이를 다른 방식으로 표현하자면 게으른 버전의 메서드들은 데이터가 요청되기 전까지는 어떠한 데이터도 사용하지 않는다...
-
Programming Ruby (6) 열거자와 외부 반복자Ruby 2016. 10. 24. 23:47
[출처] Programming Ruby (본 게시물은 저작권의 문제 발생시 출판사의 요청에 의해 삭제될 수 있습니다.) 열거자(Enumerator)와 외부 반복자 다른 언어에서는 컬렉션이 자신의 반복자를 포함하지 않고 외부 반복자 헬퍼 객체를 만들어 사용한다(Iterator..) 루비는 투명한 언어이다. 루비 프로그램을 작성할 때는 하고자 하는 일에만 집중하면 되고, 언어 자체적으로 지원하는 발판 코드를 작성하느라 고민할 필요가 없다. 루비 내장 Enumerator 클래스는 외부 반복자를 제공한다. 배열이나 해시에 대해 to_num 메서드를 호출하는 것만으로 Enumerator 객체를 생성할 수 있다.(enum_for도 같은 메서드다) a = [1, 3, "cat"] h = [ dog: "canine",..
-
Programming Ruby (5) 반복자Ruby 2016. 10. 24. 23:46
[출처] Programming Ruby (본 게시물은 저작권의 문제 발생시 출판사의 요청에 의해 삭제될 수 있습니다.) 반복자 구현하기 루비에서 반복자란 코드 블록을 호출할 수 있는 메서드를 이야기한다. 먼저 블록은 메서드를 호출한 다음에만 나온다는 것과 코드 블록은 루비 해석기가 이를 해석하는 순간에 실행되는 것이 아니라는 점을 설명했다. 루비는 지역변수, 현재 객체 등과 같은 블록이 나타낸 시점의 맥락을 저장해 두고 메서드를 실행해 간다. 메서드에서 yield 문을 사용해서 마치 코드 블록을 하나의 메서드인 것처럼 호출할 수 있다. yield를 사용해 메서드 안에서 언제든 코드블록 호출이 가능 하다. 다음은 yield를 사용하는 예이다. def two_times yield yield end two_t..
-
[64번째책] 인간에 대한 예의 (★★★★☆)1000권 독서 2016. 10. 24. 20:18
70, 80년대 대한민국의 사회의 부조리와 맞서싸우며 최전방에서서 국민의 잃어버린 주권을 찾기위해 발버둥 치던 바로 그 세대들의 이야기들을 모은 소설이다. 사실 역사로 배운 것 이외에 실제로 그 시대 일어났던 끔찍한 국가폭력이 일반 국민들의 삶에 대중들의 생활에 개인들의 정서에 어떠한 영향일 끼쳤는지는 전혀 알지못했지만 이 소설을 통해 조금이나마 간접적으로 깨닫게 되어 참으로 추천할만한 책이다. 상처와 아픔으로 얼룩진 인물들에 대한 세심한 묘사와 비유들이 마음을 두드리기에 부족함이 없다. 대한민국의 근현대의 시대상을 알고자 하는 이들에게는 절대추천한다.