Ruby on Rails – 1. Ruby Aon의 공부하면서 만드는 세미나 1탄.

Slides:



Advertisements
Similar presentations
Megazone Corp. R&D Dept. About 목 차 루비가 뭐지 ? 아하 ~! 이런 특징이 !! 뭐가 좋은 거야 ? 다 좋을 수는 없다. 이걸로 뭘 할 수 있을까 ? 기찻길 위의 루비 (Ruby on Rails)..
Advertisements

Copyright © 2015 Pearson Education, Inc. 6 장 : 프로그래밍 언어.
Tcl/Tk 민 인학 한국 Tcl/Tk 커뮤니티.
멘토링 2 주차 장 프로그래밍을 위한 자바의 자료형  값이 변하지 않는 상수  메모리 기억공간인 변수.
YES C 제 1 장 C 언어의 개요 1/34 제 1 장 C 언어의 개요 문봉근. YES C 제 1 장 C 언어의 개요 2/34 제 1 장 C 언어의 개요 1.1 프로그램과 C 언어의 특징 1.2 C 언어의 프로그램 구성 1.3 비주얼 C++ 통합 환경 들어가기.
Copyright © 2006 The McGraw-Hill Companies, Inc. 프로그래밍 언어론 2nd edition Tucker and Noonan 5 장 타입 “ 타입은 컴퓨터 프로그래밍의 효소이다 ; 프로그래밍은 타입을 통해 소화할만한 것이 된다.” 로빈.
제 4 장 변수, 영역, 수명 변수 바인딩 영역 기억장소 할당과 수명 변수와 그 환경 변수 초기화 상수와 변수.
3. C++와 객체지향 C++ 코딩 방법 객체 단위로 2 개의 파일 인터페이스 파일 구현파일
8장 프로그래밍 언어 8.1 프로그램이란? 8.2 프로그램 언어의 역사 8.3 프로그램 설계 절차
Vision System Lab, Sang-Hun Han
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
C++ Espresso 제1장 기초 사항.
알기 쉽게 해설한 Java 8th edition
Java Presentation 중간 시험2 풀이
제 7 장 문장 구조화 제어문 지정문 조건문 반복문 GOTO 문 비결정적문.
제6장 제어(Control) 6.1 구조적 프로그래밍(Structured Programming)
10장 예외 처리 프로그래밍 언어론 10.6 Pascal과 C의 에러 처리 10.1 설계 주제 10.2 PL/I의 예외 처리
윤 홍 란 제3장 클래스와 객체의 사용-1 윤 홍 란
프로그래밍 언어론 2004년 가을학기 창 병 모 숙명여대 컴퓨터과학과.
Ruby 프로그래밍 1 문자열 입출력 제어구조 looping 함수 정의
Internet Computing KUT Youn-Hee Han
2주 실습강의 Java의 기본문법(1) 인공지능연구실.
제7장 제어구조 I – 식과 문장.
 13장. 배시쉘 프로그래밍.
Power Java 제4장 자바 프로그래밍 기초.
10장 객체-지향 프로그래밍 II ©창병모.
프로그래밍언어론 2nd edition Tucker and Noonan
자바 5.0 프로그래밍.
제 1 장 C 언어의 개요 Google 공동 창업자, 래리 페이지와 세르게이 브린.
명품 Java Programming.
Ruby 프로그래밍 한글 로마자화 한국어 정보의 전산 처리
2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램
윤 홍 란 4 장 클래스 작성 윤 홍 란
Power Java 제7장 클래스와 객체.
Y. Daniel Liang 길준민 · 정재화.
DataScience Lab. 박사과정 김희찬 (월)
C ++ 프로그래밍 시작.
3 장 Visual Basic 2010 기본 문법 3.1 변수 3.2 데이터 형식 3.3 연산자 3.4 제어문
-제어문, 함수, 클래스- IS lab. 김건영 Python -제어문, 함수, 클래스- IS lab. 김건영
제1장 서론.
5장 이름, 바인딩, 영역(2) 순천향대학교 컴퓨터공학과 하상호.
adopted from KNK C Programming : A Modern Approach
프로그램 식 조합 방법 <expr> ::= <constant> | <name>
프로그래밍 보고서 작성법 순천향대학교 컴퓨터공학과 하 상 호.
자바의 신 Volume 1 1부(1~3장) 자바의 신 메인 홈 : 자바의 신 페이스북: 자바의 신 문제 풀이 :
자전거를 배우려면 안장에 올라가 페달을 밟아라.
메소드와 클래스 정의 및 문제 풀이 Method and Class Define and Problem Solve
제 2장 어휘구조와 자료형 토 큰 리 터 럴 주 석 자 료 형 배 열 형.
Introduction to Programming Language
[INA470] Java Programming Youn-Hee Han
컴퓨터공학실습(I) 3주 인공지능연구실.
Java IT응용시스템공학과 김형진 교수 5장. 객체지향 개념 public class SumTest {
자바 5.0 프로그래밍.
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
Chapter 02. 소프트웨어와 자료구조.
객체지향 패러다임에서의 코드 재사용을 위한 응집도 레벨 식별 모범 사례
Signature, Strong Typing
Signature, Strong Typing
Chapter 13 – 객체 지향 프로그래밍 Outline 13.1 소프트웨어의 재사용과 독립성
3장,4장 발표 서정우.
Part 3 객체지향 Chapter 5 : 객체지향 개념 Chapter 6 : 클래스 : 속성
Signature, Strong Typing
Ruby 프로그래밍 4 자료구조 응용 한국어 정보의 전산 처리
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
창 병 모 숙명여대 전산학과 자바 언어를 위한 CFA 창 병 모 숙명여대 전산학과
Java 5장. 객체지향 개념 public class SumTest {
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
제 1장 프로그래밍 언어 소개 1.1 프로그래밍 언어란 무엇인가 1.2 프로그래밍 언어를 배워야 하는 이유
C++ 언어의 특징
프로그래밍 기법 최적화 프로그래밍.
Presentation transcript:

Ruby on Rails – 1. Ruby Aon의 공부하면서 만드는 세미나 1탄

Ruby는 어떤 언어 인가요? Perl + Smalltalk + Ada + Eiffel + Lisp => Ruby 왼쪽의 사진에 있는 분이 만든 언어입니다 (그래서 가장 최신자료는 일본어 ㅡㅡ) Perl + Smalltalk + Ada + Eiffel + Lisp => Ruby Imperative, Functional, following OOP Yukihiro Matsumoto

Ruby는 어떤 언어 인가요? Ruby = an interpreted scripting language for quick and easy object-oriented programming!

Ruby는 어떤 언어 인가요? Ruby = an interpreted scripting language for quick and easy object-oriented programming! - OS call을 직접적으로 할 수 있다 - 문자열 연산이나 정규표현식에 큰 장점 - 개발하는 동안 즉각적인 피드백을 받을 수 있다

Ruby는 어떤 언어 인가요? Ruby = an interpreted scripting language for quick and easy object-oriented programming! - 변수 선언이 필요 없고 타입 정할 필요도 ㄴㄴ - 문법이 단순단순 - 메모리 관리가 자동

Ruby는 어떤 언어 인가요? Ruby = an interpreted scripting language for quick and easy object-oriented programming! - 모든 것이 객체객체해(class, method, inheritance) - module 사용 - singleton method

Ruby는 어떤 언어 인가요? Ruby = an interpreted scripting language for quick and easy object-oriented programming! - 기타… - 예외처리가 편리함 - 숫자 담을 수 있는 범위가 존나 큼!(40!도 담을 수 있을 정도?) - 쓰레드처리가 편리함

이제부터 본격적으로 시작!

Ruby를 사용하는 방법 대화형 interpreter를 이용하면 코드에 대한 결과를 바로 볼 수 있다 아래와 같이 shell에 irb를 입력하면 실행된다.(irb = interactive ruby)

Ruby를 사용하는 방법 파일명.rb에 스크립트를 작성해서 사용할 수도 있다. 파일 가장 윗줄에 #! /usr/bin/env ruby를 추가하면 ./파일명.rb로 스크립트를 실행할 수 있다. (물론 그 전에 chmod +x 파일명.rb 해야 되는건 알고 계시죠? ㅎㅎㅎ)

Ruby를 사용하는 방법

Ruby를 사용하는 방법

자 이제 진짜 시작!! 참고로 puts는 java에서의 println과 동일합니다 print는 java에서의 print와 동일합니다 #는 주석입니다

Ruby의 숫자

Ruby의 숫자 다른 언어에서의 Integer 범위 내 숫자 : Fixnum 다른 언어에서의 Integer 범위 외 숫자 : Bignum 1234 => Fixnum 123412341234123412341234123412341234 => Bignum 23.5432 => Float 12_23 => Fixnum (숫자 사이의 underscore는 무시)

Ruby의 숫자 Math module의 대표적인 method들 - cos(x), sin(x) : 삼각함수 - log(x), exp(x) : 로그함수, 지수함수 - sqrt(x) : 제곱근 함수 - 참고로 abs는 없어요

Ruby의 String 큰 따옴표와 작은 따옴표의 차이 => Escape 문자를 인식하냐 못하냐 문자열을 +로 합치고 *로 늘린다! Ruby는 문자를 숫자로 인식하여 ASCII 코드값을 내놓는다

Ruby의 String Substring을 얻는 방식 [시작점, 길이], .. : 끝을 포함, … : 끝을 포함하지 않음 “123#{2+2}” => “1234” String의 equality 참고) “”안에 #{코드}를 넣으면 코드의 결과가 String에 삽입된다.

Ruby의 String String 관련된 method들 - to_c, to_i, to_f, to_r : string에서 각각 복소수, 정수, 소수, 분수로 형변환 => string.to_c와 같이 씀 - length : string의 길이 - split(pattern) : parameter로 들어온 문자 혹은 패턴을 기준으로 string을 나눔 - strip : 문자열 앞뒤로 whitespace를 제거함 - reverse : string을 뒤집음 - replace : 문자열을 다른 문자열로 대체함 - 여타 다른 method들은 http://ruby-doc.org/core-2.0/String.html에서 직접 찾아보는 걸로

Array, Hash

Control Structure - if if bool_expression1 #your code here elsif bool_expression2 or your code if bool_expression else end

Control Structure - case case x when case1 #your code here when case2 … end

Control Structure - while while bool_expression expression end your code while bool_expression

Control Structure - for for element in collection #your code here end

Iteration string을 위한 iterator => each_byte : string의 각 문자에 대한 iterator => each_line : strin의 각 줄에 대한 iterator Array, Hash 등은 each, each_key, each_value등을 활용하면 된다 yield와 retry를 이용하여 특정 code를 반복실행할 수 있다. "abc".each_byte{|c| printf "<%c>", c}; print "\n“ "a\nb\nc\n".each_line{|l| print l} ruby> def repeat(num)     |   while num > 0     |     yield     |     num -= 1     |   end     | end    nil ruby> repeat(3) { puts "foo" } foo foo foo    nil ruby> def WHILE(cond)     |   return if not cond     |   yield     |   retry     | end    nil ruby> i=0; WHILE(i<3) { print i; i+=1 } 012   nil

Block, Procs, Lambda Block {} 내에 있는 코드 Procs Function object lambda {block} == Proc.new {block} 5.times {puts "I'm a block!"} [1, 2, 3].each { |num| puts num } fibs = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]# Add your code below!doubled_fibs = fibs.collect {|x| x*2} def block_test puts "We're in the method!" puts "Yielding to the block..." yield puts "We're back in the method!"endblock_test { puts ">>> We're in the block!" } def yield_name(name) puts "In the method! Let's yield." yield name puts "Block complete! Back in the method."endyield_name("Eric") { |name| puts "My name is #{name}." }# Now call the method with your name!yield_name("Jongwook Chae") { |name| puts "My name is #{name}."} multiples_of_3 = Proc.new do |n| n % 3 == 0end(1..100).to_a.select(&multiples_of_3) floats = [1.2, 3.45, 0.91, 7.727, 11.42, 482.911]# Write your code below this line!round_down = Proc.new { |x| x.to_i }# Write your code above this line!ints = floats.collect(&round_down) hi = Proc.new {puts "Hello!"}hi.call def lambda_demo(a_lambda) puts "I'm the method!" a_lambda.callendlambda_demo(lambda { puts "I'm the lambda!" })

Function Definition def foo(param) # your code here end

Class Definition class class_name function1 function2 function3 end class Song   def initialize(name, artist, duration)     @name     = name     @artist   = artist     @duration = duration   end end class Song  def to_s    "Song: #{@name}--#{@artist} (#{@duration})"  endend class KaraokeSong < Song   def initialize(name, artist, duration, lyrics)     super(name, artist, duration)     @lyrics = lyrics   end end class Song   @@plays = 0   def initialize(name, artist, duration)     @name     = name     @artist   = artist     @duration = duration     @plays    = 0   end   def play     @plays += 1     @@plays += 1     "This  song: #@plays plays. Total #@@plays plays."   end end

Class Definition class Person end

Class Definition class Person def initialize(name) @name = name end => arteta = Person.new(“Mikel Arteta”)

Class Definition class Person @@count = 0 # class variable(다른 언어에서의 static과 같음) def initialize(name) @name = name @@count += 1 end def count @@count

Class Definition class Car $my =“a” end puts $my => global variable을 위와 같이 class 내부에서 정의할 수 있음

Reader and writer class person def initialize(name) @name = name end def read_name @name def write_name(name)

Reader and writer class person def initialize(name) @name = name end attr_reader :name attr_writer :name

public private protected class MyClass       def method1    # default is 'public'         #...       end   protected          # subsequent methods will be 'protected'       def method2    # will be 'protected'         #...       end   private            # subsequent methods will be 'private'       def method3    # will be 'private'         #...       end   public             # subsequent methods will be 'public'       def method4    # and this will be 'public'         #...       end end Alternatively, you can set access levels of named methods by listing them as arguments to the access control functions.   def method1   end   # ... and so on   public    :method1, :method4   protected :method2   private   :method3 end

Inheritance class subclass_name < class_name function1 function2 end class KaraokeSong < Song   def initialize(name, artist, duration, lyrics)     super(name, artist, duration)     @lyrics = lyrics   end end class KaraokeSong < Song  # Format ourselves as a string by appending  # our lyrics to our parent's #to_s value.  def to_s    super + " [#{@lyrics}]"  endendaSong = KaraokeSong.new("My Way", "Sinatra", 225, "And now, the...")aSong.to_s»"Song: My Way--Sinatra (225) [And now, the...]"

Module (= constant + functions) module Circle PI = 3.14 def Circle.area(radius) PI* radius ** 2 end def Circle.circumference(radius) 2* PI * radius

Module Using constant => Circle::PI Using function => Circle.area(4) Using module not present in interpreter => require ‘date’ puts Date.today

Module in Class class Angle include Math => instance level attr_accessor :radians def initialize(radians) @radians = radians end def cosine cos(@radians)

Module in Class module Simple def say puts “I’m simple” end Class SimpleMan extend Simple => class level SimpleMan.say

Exception Handling raise “message” => raise method의 default exception인 RunTimeError exception을 message와 함께 띄움 raise exception, “message” => 주어진 exception과 message를 함께 띄움

Exception Handling 다른 언어에서의 try catch가 ruby에서는 begin rescue이다. def foo raise “something” rescue #begin 내에서 raise가 실행되면 여기로 이동한다. end

세미나는 여기까지입니다 앞으로 이 세미나 내용을 숙지하고도 모르는 내용이 생긴다면 날카로운 통찰력과 매서운 구글링으로 위기를 헤쳐나가시길 바랍니다

다음 세미나 예고 다음주 이 시간! 추석을 끝내고 돌아오면! 이제 rails를 공부해본다

Ruby 후기 여기 세미나 내용을 공부하는데 걸리는 시간 : 최대 3시간 (왜냐면 발표자가 이거 공부하는데 3시간 걸렸기 때문) Python이랑 다소 흡사하다는 느낌을 받음 => Python을 잘 아는 우리 스팍스 회원들은 까다롭지 않게 공부할 수 있을 것이라고 믿음!!

질문 받겠습니다

오타나 부족한 부분 있으면 jwchae8@gmail.com으로 알려주세요~