[[pagelist(^Ruby/2011년스터디)]]
[[TableOfContents]]

= 스터디 소개 =
 * 예제 중심으로 RubyLanguage를 공부하는 모임
 * [http://www.yes24.com/24/Goods/2314079?Acode=101 프로그래밍 루비]의 목차를 참고하여 진행

== 참가자 ==
 * [김수경], [서지혜], [강성현], --[정의정]--

= 진행 =
== 1ì›” ==
=== 출석 ===
|| || 6일 || 10일 || 13일 || 17일 || 20일 || 24일 || 27일 || 31일 ||
|| [김수경] || O || O || O || O || O || O || || ||
|| [서지혜] || O || O || O || O || O || O || || ||
|| [강성현] |||||| ''중간에 참여'' || O || O || O || || ||
|| --[정의정]-- || X || X |||||||||||| ''중간에 빠짐'' ||
=== 20일 ===
 * 과제
  * 1부 1장 ~ 6장 공부해오기
  * 위키에 내용 정리하기
   * [서지혜] - 3장
   * [김수경] - 4장
   * [강성현] - 5장, 6장

==== 정리하기 ====
 * [김수경]
  * 알게된 점
   * 객체는 freeze 메서드를 통해 수정을 막을 수 있다.
   * 블록을 통해 반복자를 구현할 수 있다.
   * 하나의 배열에 동일한 자료형이 아닌 객체들이 포함될 수 있다.
   * 음수를 배열의 인덱스로 사용할 수 있다. 
    * 이 때 음수 인덱스는 배열의 요소를 뒤에서부터 읽어온다.({{{a[-n] = a[a.length - n]}}})
    * 예를 들어 다음과 같은 배열 c = [a, b, 1, 2, 3, "Hi"] 에서 c[0] => a, c[-2] => 3, c[-7] => nil
  * 궁금한 점
 * [서지혜]
  * 알게된 점
   * 루비의 클래스는 열려있어 메소드를 추가할 수 있다.
   * 객체를 얼리면(freeze) 수정할 수 없게 된다. 단 다시 녹일 수 없다.
   * 코드블록 { ~~ } 을 객체처럼 넘길 수 있음. 혹은 yield함수가 호출한다.
  * 의문점
   * Proc객체와 lambda함수의 차이점(정확한 차이점과 사용법)
   * 루비는 왜 이렇게 한 기능에 대한 구현법이 많은거야?
 * [강성현]
  * 알게된 점
   * 숫자도 객체로 취급해서 메소드를 사용할 수 있다.
   * 배열을 묶고 풀기가 편리하다.
   * 해시 기능 (배열의 인자가 문자열)
   * 반복자를 이용하여 간단한 코딩이 가능
  * 궁금한 점
   * 블록과 객체(Proc)의 관계
   * 아직 블록과 반복자가 익숙하지 않다.
=== 24일 ===
 * 과제
  * 1부 7장 ~ 10장 공부해오기
  * 위키에 내용 정리하기
   * [강성현] - 7장
   * [서지혜] - 8장, 10장
   * [김수경] - 9장
==== 돌아보기 ====
 * 오늘 스터디의 좋았던 점
  * [김수경] - 셋 다 책이 있고, 다양한 책을 볼 수 있어서 좋았다.
  * [서지혜] - 짧아서 좋았다.
  * [강성현] - 짧고 더 이해가 잘 되어 좋았다.
 * 다음 스터디에서 하고싶은 것
  * [김수경] - 토론거리를 리스트로 작성해오겠다.
  * [서지혜] - 책에 있는 예제를 모두 실행해보겠다.
  * [강성현] - 모니터를 연결하여 같이 실습해보면서 진행하면 좋겠다.
==== 정리하기 ====
=== 27일 ===
 * 과제
  * 1부 11장 ~ 13장 공부해오기.
  * 2부 23장, 24장, 26장 공부해오기.
  * 위키에 내용 정리하기
   * [김수경] - 11장, 26장
   * [서지혜] - 12장, 23장
   * [강성현] - 13장, 24장
==== 돌아보기 ====
==== 정리하기 ====
 * [서지혜]
  * 알게된 점
   * 루비는 지역변수 기반. 모든 변수는 def ~end등의 블록 안에서 유효범위를 가진다. 전역변수는 $연산자로 선언할 수 있음
   * module은 자바의 interface와 같은 것인가?
   * 기존의 연산자중 선언되어 있는 연산자를 오버로딩하면, 이전의 연산자는 부를 수 없는것인가?
  * 궁금한 점
   * nil or false  #결과 : false 와 false or nil  # 결과 : nil인 이유
   * module 키워드로 믹스인할 수 있는 모듈을 선언할 수 있다.
   * 루비는 간편한 반복자를 많이 제공한다.

----
[2011년활동지도], [스터디분류]