Megazone Corp. R&D Dept. About
목 차 루비가 뭐지 ? 아하 ~! 이런 특징이 !! 뭐가 좋은 거야 ? 다 좋을 수는 없다. 이걸로 뭘 할 수 있을까 ? 기찻길 위의 루비 (Ruby on Rails)..
루비가 뭐지 ?
루비가 뭐지 ( 기본 )? 루비 ~!! 7 월의 탄생석, 결혼 15 주년 기념석, 순정 만화의 주인공 이름 태양, 정렬, 열정 스크립트 프로그램 언어 샬라
루비가 뭐지 ( 창시자 )? 마츠모토 유키히로 별칭 : Matz( 마츠 ) 1993 년 2 월 24 일 루비를 처음 선 보임 루비프로그래머들행복“ 제 삶의 목적은 즐거움입니다. 프로그래머 들은 창조적인 면에 집중할 수 있을 때 즐거워 합니다. 루비는 프로그래머들을 행복하게 하기 위해 설계 되었습니다.” - (2005 년 루비 2.0 컨퍼런스 에서 )
루비가 뭐지 ( 정의 )? SmalltalkLisp PerlSmalltalk + Lisp + Perl 의 교착점 SmalltalkSmalltalk 의 객체 지 향성 프로그래밍 Lisp Lisp 의 Closure( 블록 ) 과 메타 프로그래밍 PerlPerl 의 강력한 정규식 기능 Smalltalk LispPerl Ruby
아하 ~! 이런 특징이 !
SmalltalkSmalltalk 의 객체 지향 프로그래밍. 모든 데이터는 객체 >> 128 >> 123.+(5) 128 >>-123.abs 123 ※ 123+ ※ 123 이란 객체에 + 라는 메소드 ( 연산에 ‘.’ 을 주의깊게 ) 아하 ~! 이런 특징이 !( 객체 지향 )
아하 ~! 이런 특징이 !( 블록 ) Closure(= 블록 )Closure(= 블록 ) : 이름이 없는 함수 (=Python 의 lambda) >> [“apart”, “banana”].map{ | fruit | fruit.upcaseA } [“ApArt”, “bAnAnA”] >> [“a”, “b”, “c”].collect{ | x | x+”!” } [“a!”, “b!”, “c!”] >> a = [“a”, “b”, “c”] >> a.delete_if{ | x | x >= “b” } [“a”]
아하 ~! 이런 특징이 !( 메타 프로그 래밍 ) 프로그램 코드를 생성하는 프로그램 ( 반복 코드 생 성 ) Getter 와 setter 를 런타임에 자동 생성 >> Class Persion >> def name ⇒ gettter >> >> end >> def name=(name) ⇒ setter >> end >> attr_accessor “name” >> class_eval “def end”
아하 ~! 이런 특징이 !( 기타 ) 열린구조 ( 클래스의 재정의 ) 객체의 재정의 리플렉션 ( 형태, 메소드 등 ) 직관적이고 심플한 형태의 코드
뭐가 좋은거야 ?
레일스 레일스를 통한 빠른 웹 개발 속도 ( 자바의 5 배 이상 ) 웹 2.0 웹 2.0 에 적합한 환경 (Active Record, Action Mailer, Active Web Server) 다양한 환경에서의 스크립팅 ( 유닉스, 맥 OS, 윈 도우 )
웹 2.0 과 루비 ( 레일스 ) MVC 모델의 지원 (Active Record, Action Controller, Action View) AjaxAjax 지원하는 충분한 프레임웍
다 좋을 수는 없다.
느린 실행 속도 -> 최적화 필요 모듈은 C 언어로 개발 필요 다소 제한적인 유니코드 지원 -> 필수 메소드 중 일부 바이트 단위에서만 동작
이걸로 뭘 할 수 있을까 ?
이 것으로 만들 수 있다. 윈도우 기반의 개발 : SciTE, UltraEdit, TextPad 레일스 개발 : RadRails(Eclipse 기반 ) 맥 OS 기반의 개발 : TextMate, TextWrangler) 유닉스 기반의 개발 : Emacs, Vim 라이브러리 관리 툴 : 루비잼
이렇게 만들어 진 것 스프링 노트 ( 개인화 / 공유 웹 노트 ) ThoughtWorks( 컨설팅 ) Amazon( 인터넷 쇼핑몰 ) EarthLink( 인터넷, 네트워크 서비스 )
루비 ? 갑자기 왜이리 시끄러워. 일본, 영어와의 장벽 루비는 일본인 들 만의 것 ? 꿈틀 꿈틀 루비, 그리고 레일스. 웹의 새로운 세상 웹 2.0 과의 만 남
기찻길 위의 루비 (Ruby on Rails)…
기찻길 ?( 레일스 ?, Rails?) 루비 언어를 기반으로 한 웹 애플리케이션 프 레임워크 개발환경, 테스트 환경, 운영환경이 모두 포함 되어 있으며 또한 각각 구분되어 있는 테스트 주도적인 프레임워크 루비의 특성을 잘 살려 복잡한 웹 개발 환경에 서 유연하게 대처할 수 있는 환경을 제공
레일스가 주목 받는 이유 빠른 개발 생산성 – 레일스 프레임워크를 사용함으로써 자바보다 5 배, 다 른 프레임워크 대비 10 배 빠른 생산성 –DRY (Don’t Repeat Yourself) 원칙으로 코드의 중복을 줄임 – 메타 프로그래밍을 이용한 직관적인 코드 엔터프라이즈 환경에서 사용 – 웹서비스, SOA, 웹애플리케이션 등에 활용 중인 외국의 IT 회사가 많음 –C,.NET, 자바 등에 API 가 지원 됨으로써 폭넓은 확장성 을 가짐
간단한 블로그 제작 데모 시스템 환경 – 루비 win32 – 루비에서 설치한 레일스 –MySQL win32 데모 내용 –Scaffold 를 이용하여 CRUD 게시판 생성 –RSS, 트랙백, 태그, 오픈 API 기능 구현
참고자료 마이크로 소프트웨어 2006 년 10 월호 기사 : 웹 2.0 과 루비 온 레일스 (Ruby on Rails) Ruby on Rails 웹 애플리케이션 구축 : ect=Log&logNo= 한국 루비 사용자 포럼 :