EPI: Interfejs Graczny 2009/2010 Podstawy Rubiego 1 czerwca 2010
Plan prezentacji Wprowadzenie Hello World Sinatra
Historia Rubiego 1993 Japonia Yukihiro Matsumoto San
Historia Rubiego 1993 Japonia Yukihiro Matsumoto San 1995 pierwsze wydanie
Historia Rubiego 1993 Japonia Yukihiro Matsumoto San 1995 pierwsze wydanie 1999 bardziej popularny w Japonii ni» Python
Historia Rubiego 1993 Japonia Yukihiro Matsumoto San 1995 pierwsze wydanie 1999 bardziej popularny w Japonii ni» Python 2000 pierwsza lista dyskusyjna
Historia Rubiego 1993 Japonia Yukihiro Matsumoto San 1995 pierwsze wydanie 1999 bardziej popularny w Japonii ni» Python 2000 pierwsza lista dyskusyjna 2004 Dania Ruby on Rails, David Heinemeier Hansson
Historia Rubiego 1993 Japonia Yukihiro Matsumoto San 1995 pierwsze wydanie 1999 bardziej popularny w Japonii ni» Python 2000 pierwsza lista dyskusyjna 2004 Dania Ruby on Rails, David Heinemeier Hansson 2005, 2006 O'Reilly sprzedano wi cej ksi»ek na temat Rubiego ni» na temat Perla czy Pythona
Historia Rubiego 1993 Japonia Yukihiro Matsumoto San 1995 pierwsze wydanie 1999 bardziej popularny w Japonii ni» Python 2000 pierwsza lista dyskusyjna 2004 Dania Ruby on Rails, David Heinemeier Hansson 2005, 2006 O'Reilly sprzedano wi cej ksi»ek na temat Rubiego ni» na temat Perla czy Pythona 2010 planowane 3 wydanie frameworku Ruby on Rails (poª czonego z Merbem)
Cechy j zyka interpretowany
Cechy j zyka interpretowany dynamicznie typizowany
Cechy j zyka interpretowany dynamicznie typizowany silnie typizowany
Cechy j zyka interpretowany dynamicznie typizowany silnie typizowany w 100% zorientowany obiektowo
Cechy j zyka interpretowany dynamicznie typizowany silnie typizowany w 100% zorientowany obiektowo wspiera funkcjonalny styl programowania
Cechy j zyka interpretowany dynamicznie typizowany silnie typizowany w 100% zorientowany obiektowo wspiera funkcjonalny styl programowania garbage collector
Cechy j zyka interpretowany dynamicznie typizowany silnie typizowany w 100% zorientowany obiektowo wspiera funkcjonalny styl programowania garbage collector dziedziczenie jednobazowe
Cechy j zyka interpretowany dynamicznie typizowany silnie typizowany w 100% zorientowany obiektowo wspiera funkcjonalny styl programowania garbage collector dziedziczenie jednobazowe mechanizm wyj tków
Cechy j zyka interpretowany dynamicznie typizowany silnie typizowany w 100% zorientowany obiektowo wspiera funkcjonalny styl programowania garbage collector dziedziczenie jednobazowe mechanizm wyj tków bloki i domkni cia
Cechy j zyka interpretowany dynamicznie typizowany silnie typizowany w 100% zorientowany obiektowo wspiera funkcjonalny styl programowania garbage collector dziedziczenie jednobazowe mechanizm wyj tków bloki i domkni cia metaprogramowanie
Czego mo»na si spodziewa? brak ±redników (pod warunkiem,»e nie umieszczasz wielu polece«w jednej linii, co jednak jest odradzane)
Czego mo»na si spodziewa? brak ±redników (pod warunkiem,»e nie umieszczasz wielu polece«w jednej linii, co jednak jest odradzane) brak wymogów co do wci (oczywi±cie wªa±ciwe wci cia poprawiaj czytelno± kodu)
Czego mo»na si spodziewa? brak ±redników (pod warunkiem,»e nie umieszczasz wielu polece«w jednej linii, co jednak jest odradzane) brak wymogów co do wci (oczywi±cie wªa±ciwe wci cia poprawiaj czytelno± kodu) brak deklaracji typów wystarcza inicjowanie zmiennych
Czego mo»na si spodziewa? brak ±redników (pod warunkiem,»e nie umieszczasz wielu polece«w jednej linii, co jednak jest odradzane) brak wymogów co do wci (oczywi±cie wªa±ciwe wci cia poprawiaj czytelno± kodu) brak deklaracji typów wystarcza inicjowanie zmiennych 1-linijkowe komentarze zaczynaj si znakiem #
Czego mo»na si spodziewa? brak ±redników (pod warunkiem,»e nie umieszczasz wielu polece«w jednej linii, co jednak jest odradzane) brak wymogów co do wci (oczywi±cie wªa±ciwe wci cia poprawiaj czytelno± kodu) brak deklaracji typów wystarcza inicjowanie zmiennych 1-linijkowe komentarze zaczynaj si znakiem # specjalny obiekt reprezentuj cy warto± pust zwany nil
Czego mo»na si spodziewa? brak ±redników (pod warunkiem,»e nie umieszczasz wielu polece«w jednej linii, co jednak jest odradzane) brak wymogów co do wci (oczywi±cie wªa±ciwe wci cia poprawiaj czytelno± kodu) brak deklaracji typów wystarcza inicjowanie zmiennych 1-linijkowe komentarze zaczynaj si znakiem # specjalny obiekt reprezentuj cy warto± pust zwany nil ka»de wyra»enie ewaluuje si do warto±ci (równie» if, case, itp.)
Plan prezentacji Wprowadzenie Hello World Sinatra
Hello World w Rubim Rozpocznij interaktywn sesj Rubiego wpisuj c w linii polece«: $ irb >>
Hello World w Rubim Rozpocznij interaktywn sesj Rubiego wpisuj c w linii polece«: $ irb >> Witaj wiecie w linii polece«rubiego: >> puts "Witaj wiecie!" >> print "Witaj wiecie!"
Hello World w Rubim Rozpocznij interaktywn sesj Rubiego wpisuj c w linii polece«: $ irb >> Witaj wiecie w linii polece«rubiego: >> puts "Witaj wiecie!" >> print "Witaj wiecie!" Jaka jest ró»nica pomiedzy puts oraz print?
Hello World w Rubim Rozpocznij interaktywn sesj Rubiego wpisuj c w linii polece«: $ irb >> Witaj wiecie w linii polece«rubiego: >> puts "Witaj wiecie!" >> print "Witaj wiecie!" Jaka jest ró»nica pomiedzy puts oraz print? A teraz Witaj wiecie w wersji enterprise: >> name="mistrzu" >> puts "Witaj "+name+"!!!"
Hello World w Rubim Rozpocznij interaktywn sesj Rubiego wpisuj c w linii polece«: $ irb >> Witaj wiecie w linii polece«rubiego: >> puts "Witaj wiecie!" >> print "Witaj wiecie!" Jaka jest ró»nica pomiedzy puts oraz print? A teraz Witaj wiecie w wersji enterprise: >> name="mistrzu" >> puts "Witaj "+name+"!!!" Aby opu±ci sesj irb wrowad¹ quit: >> quit
Hello World jako skrypt Otwórz swój ulubiony edytor testu i utwórz skrypt Rubiego o nazwie hello.rb : puts "Witaj wiecie!"
Hello World jako skrypt Otwórz swój ulubiony edytor testu i utwórz skrypt Rubiego o nazwie hello.rb : puts "Witaj wiecie!" Zapisz skrypt i wywoªaj go wpisuj c: $ ruby hello.rb
Hello World jako skrypt Otwórz swój ulubiony edytor testu i utwórz skrypt Rubiego o nazwie hello.rb : puts "Witaj wiecie!" Zapisz skrypt i wywoªaj go wpisuj c: $ ruby hello.rb Popraw skrypt tak, aby zapytaª ci o imi : puts "Jak masz na imi?" name = gets puts "Witaj "+name+"!!!"
Deniowanie funkcji Zdeniujmy prost funkcj, która jako argument b dzie przyjmowaªa imi i b dzie zwracaªa ªa«cuch Hello +name: def say_hello(name) "Witaj "+name end
Deniowanie funkcji Zdeniujmy prost funkcj, która jako argument b dzie przyjmowaªa imi i b dzie zwracaªa ªa«cuch Hello +name: def say_hello(name) "Witaj "+name end Funkcja jako swój rezultat zwraca warto± ostatniego ewaluowanego wyra»enia. Mo»esz jednak bezpo±rednio u»y sªowa kluczowego return: def say_hello(name) return "Witaj "+name end
Wywoªywanie funkcji W Rubim mo»esz wywoªa funkcj w zwykªy sposób umieszczaj c argumenty w nawiasach: say_hello("janek")
Wywoªywanie funkcji W Rubim mo»esz wywoªa funkcj w zwykªy sposób umieszczaj c argumenty w nawiasach: say_hello("janek") Jednak»e nawiasy mog by opuszczone, o ile nie prowadzi to do niejednoznaczno±ci: say_hello "Janek"
Wywoªywanie funkcji W Rubim mo»esz wywoªa funkcj w zwykªy sposób umieszczaj c argumenty w nawiasach: say_hello("janek") Jednak»e nawiasy mog by opuszczone, o ile nie prowadzi to do niejednoznaczno±ci: say_hello "Janek" Teraz zmodykuj skrypt hello.rb, tak aby korzystaª z funkcji say_hello!
Argumenty funkcji Argumenty funkcji mog by : opcjonalne def say_hello(name=" wiecie") "Witaj " + name end say_hello "Andrzej" # "Witaj Andrzej" say_hello # "Witaj wiecie"
Argumenty funkcji Argumenty funkcji mog by : opcjonalne def say_hello(name=" wiecie") "Witaj " + name end say_hello "Andrzej" # "Witaj Andrzej" say_hello # "Witaj wiecie" w postaci par klucz warto± def say_hello(args) "Witaj " + args[:name] + " " + args[:surname] end say_hello :name => "Jan", :surname => "Kowalski" # "Witaj Jan Kowalski"
Uwaga na temat nazewnictwa zmienne oraz funkcje s zawsze zapisywane z_u»yciem_znaku_podkre±lenia
Uwaga na temat nazewnictwa zmienne oraz funkcje s zawsze zapisywane z_u»yciem_znaku_podkre±lenia staªe zaczynaj si od du»ej litery, najlepiej W_CAŠO CI_KAPITALIKAMI
Uwaga na temat nazewnictwa zmienne oraz funkcje s zawsze zapisywane z_u»yciem_znaku_podkre±lenia staªe zaczynaj si od du»ej litery, najlepiej W_CAŠO CI_KAPITALIKAMI klasy i moduªy zapisywane s z u»yciem NotacjiWielbª dziej
Uwaga na temat nazewnictwa zmienne oraz funkcje s zawsze zapisywane z_u»yciem_znaku_podkre±lenia staªe zaczynaj si od du»ej litery, najlepiej W_CAŠO CI_KAPITALIKAMI klasy i moduªy zapisywane s z u»yciem NotacjiWielbª dziej wypróbujmy to w irb: >> HELLO = "hello" >> HELLO = "goodbye"
Plan prezentacji Wprowadzenie Hello World Sinatra
Sinatra microframework Zamiast pisa w konsoli, mo»emy u»y prostego frameworku - pozwoli nam ogl da wyniki w przegl darce
Sinatra microframework Zamiast pisa w konsoli, mo»emy u»y prostego frameworku - pozwoli nam ogl da wyniki w przegl darce gem install sinatra sinatra-reloader
Sinatra microframework Zamiast pisa w konsoli, mo»emy u»y prostego frameworku - pozwoli nam ogl da wyniki w przegl darce gem install sinatra sinatra-reloader vim app.rb # app.rb require 'rubygems' require 'sinatra' require 'sinatra/reloader' if development? get '/' do "Witaj wiecie" end
Sinatra microframework Zamiast pisa w konsoli, mo»emy u»y prostego frameworku - pozwoli nam ogl da wyniki w przegl darce gem install sinatra sinatra-reloader vim app.rb # app.rb require 'rubygems' require 'sinatra' require 'sinatra/reloader' if development? get '/' do "Witaj wiecie" end ruby app.rb
Sinatra screenshot
Sinatra formularz (1) app1.rb require 'rubygems' require 'sinatra' require 'sinatra/reloader' if development? get '/' do erb :index end
Sinatra formularz (1) app1.rb require 'rubygems' require 'sinatra' require 'sinatra/reloader' if development? get '/' do erb :index end mkdir views
Sinatra formularz (1) app1.rb require 'rubygems' require 'sinatra' require 'sinatra/reloader' if development? get '/' do erb :index end mkdir views views/index.erb Wprowad¹ swoje imi : <form method="post"> <input type="text" name="name"/> </form>
Sinatra formularz (2) app1.rb cd. post '/' do @message = "Witaj " + params[:name] erb :result end
Sinatra formularz (2) app1.rb cd. post '/' do @message = "Witaj " + params[:name] erb :result end views/result.erb <%= @message %>
Sinatra formularz (2) app1.rb cd. post '/' do @message = "Witaj " + params[:name] erb :result end views/result.erb <%= @message %> views/layout.erb <html> <body style="width: 900px;margin: auto"> <h2>aplikacja formularz</h2> <div> <%= yield %> </div> </body> </html>
Pytania PYTANIA?