전체 글
-
[67번째 책] 생각없은 생각 (★★★★☆)1000권 독서 2016. 11. 5. 18:56
한 사람이 태어나 삶을 살아가면서 수많은 물음들과 해결되지못한 삶에 물음들에 대한 적당한 타협으로 살아간다. 저자는 종교철학과의 교수로서 삶의 본질에 대해 이야기한다. 인간이 살아가는 진정한 이유가 무엇인지에 대해 최대한 쉽게 설명하려 노력하지만 철학에 대해 잘 알지 못하는 나로서는 이해하기가 쉽지만은 않았다. 그럼에도 이 책을 손에서 놓을수 없었던 이유는 평소 가지고 있던 물음에 대한 명확한 대답들이 실려있었기 때문이다. 종교의 진짜 의미가 무엇인지. 인간에게 신앙이라는게 왜 필요한지 아니 당연히 필요하게 된 원리가 무엇인지 명쾌하게 대답한다. 종교를 가지지 않은 사람이라도 인간에게 있어 종교가 어떤 역할이고 인간이 궁극적으로 바라보아야할 목표가 무엇인지 이해를 돕는다. 사실 종교를 가진 신앙인들이..
-
Programming Ruby (20) 예외처리 - 2Ruby 2016. 11. 5. 11:38
[출처] Programming Ruby (본 게시물은 저작권의 문제 발생시 출판사의 요청에 의해 삭제될 수 있습니다.) Catch와 Throw raise와 rescue 메커니즘은 무언가 잘못되었을 때 실행을 멈추는데 효과적이다. 일반적인 실행 중에 여러 겹으로 둘러싸인 코드 밖으로 탈출할 수 있다면 유용할것이다. 이 때 사용하는 문법이 catch throw 이다. 아래의 예제는 한 번에 하나씩 단어 리스트를 읽어와 배열에 추가한다. 전부 읽어오고 나서 배열을 역순으로 출력한다. 처리 과정에서 정상적인 단어를 포함하지 않는 줄을 만나면 모든 과정을 중지한다. word_list - File.open("wordlist") catch (:done) do result = [ ] while line = word_l..
-
[66번째 책] 봄, 여름, 가을, 겨울 (★★★☆☆)1000권 독서 2016. 11. 4. 00:14
한권의 책을 읽으면서 대한민국의 산을 오랫동안 거닐다 온 것 같다. 홀로 있는 시간에 자연과 함께 할때, 사람에게 주어지는, 아니 자연이 원래 사람을 치유하던 기능을 세심히 표현한 책이다. 사람이 자연에 묻혀있을 때는 어떤 불평도, 미움도, 증오도 사라진다. 하지만 사람이 만든 제도와 틀안에 갖혀 살아가는 사람들은 스트레스와 병을 항상 지니고 살아간다. 물리적인 것 뿐만아니라 정신적인 유익까지도 제공해주는 아낌없는 자연. 어찌보면 이땅에서 사람이 살아가는 보이지 않는 든든한 뿌리가 자연이 아닐까 싶다. 그저 푸르니깐 숲이고 자연이고, 나무이고, 풀이다 라는 생각이 바뀌어서 나무의 잎사귀 하나, 나무의 줄기 하나가 달리 보이기 시작했다. 자연을 바라보는 관점을 풍부하게 갖고 싶으면 꼭 읽어보기를 추천한다.
-
Programming Ruby (19) 예외처리Ruby 2016. 11. 3. 23:59
[출처] Programming Ruby (본 게시물은 저작권의 문제 발생시 출판사의 요청에 의해 삭제될 수 있습니다.) 예외 처리 현실 세계의 프로그램에서는 에러가 발생한다. 좋은 프로그램은 이러한 에러를 예견하고 깔끔하게 해결해야만 한다. 전통적인 접근 방법은 반환 코드를 이용하는 것이다. 파일을 열고 시도하는 예를 들어보자. open 메서드는 실패를 나타내는 특별한 값을 반환한다. 이 에러값은 누군가가 처리해 줄 때까지 메서드 호출 단계를 거슬러 올라가며 전달된다. 이 접근법의 문제점은 모든 에러 코드를 관리하는 것이 어렵다는 것이다. 어떤 함수가 open을 호출하고, 그 다음 read, 마지막으로 close를 호출하는데 각각이 에러 코드를 반환하면 이 함수는 호출자에게 건넬 반환값에서 이 에러 코드..
-
Programming Ruby (18) 표현식 - 5Ruby 2016. 11. 2. 20:44
[출처] Programming Ruby (본 게시물은 저작권의 문제 발생시 출판사의 요청에 의해 삭제될 수 있습니다.) 반복 루비에는 원시적 반복구문이 내장되어 있다. 예를 들어 다음 구문은 입력이 끝날 때까지 데이터를 읽는다. while line = gets # ... end until 반복문은 반대다. 조건이 참이 되기 전까지만(until) 실행한다. until play_list.duration > 60 play_list.add(song_list.pop) end if, unless와 마찬가지로 이 두 가지 반복문 또한 구문 변경자로 이용할 수 있다. a = 1 a *= 2 while a 128 a -= 10 until a 98 범위를 일종의 플립플롭(fl..
-
Programming Ruby (17) 표현식 - 4Ruby 2016. 11. 2. 20:43
[출처] Programming Ruby (본 게시물은 저작권의 문제 발생시 출판사의 요청에 의해 삭제될 수 있습니다.) case 표현식 case표현식은 강력한 괴물이다. 첫 번째 형태는 if구문을 여러개 둔 것과 아주 비슷하다. 여러 개의 조건을 늘어놓고 구문을 실행했을 때 처음으로 참이 되는 구문을 실행한다. case when song.name == "Misty" # blabla when song.duration > 120 # blabla when time.now.hour > 21 # blabla else song.play end 두 번째 형태는 아마도 익숙할 것이다. 비교할 대상을 가장 위의 case 옆에 쓰고, 하나 이상의 when을 늘어놓아서 각각 비교한다. case command when "de..
-
Programming Ruby (16) 표현식 - 3Ruby 2016. 11. 2. 20:42
[출처] Programming Ruby (본 게시물은 저작권의 문제 발생시 출판사의 요청에 의해 삭제될 수 있습니다.) 조건적 실행 논리 표현식 루비에서는 매우 간단한 참의 정의를 가지고 있다. nil과 상수 false가 아닌 모든 것은 참(true)이다. 예를 들어 "cat", 99, 0, :a_song은 모두 true이다. nil이 false로 다뤄지는 것은 매우 편리하다. 예를 들어 IO#gets는 파일의 다음 행을 읽어오는데 더 이상 읽어올 행이 없을 때는 nil을 반환한다. 따라서 다음과 같은 반복문 작성이 가능하다. while line = gets # 처리 end 하지만 주의할 점은 숫자 0이 false로 해석되지 않는다는 점이다. 길이가 0인 문자열도 마찬가지이다. and, or, not 루..
-
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..