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