86

0. За курса, Ruby и Rails

Embed Size (px)

DESCRIPTION

Нулева лекция от курса по Ruby и Rails.

Citation preview

Page 1: 0. За курса, Ruby и Rails
Page 2: 0. За курса, Ruby и Rails

0. За курса, Ruby и Railst

Textclass RubyAndRails < Course  speaker "Стефан Кънев"  speaker "Николай Бачийски"end

06.10.2008, ФМИ

Page 3: 0. За курса, Ruby и Rails
Page 4: 0. За курса, Ruby и Rails
Page 5: 0. За курса, Ruby и Rails
Page 6: 0. За курса, Ruby и Rails
Page 7: 0. За курса, Ruby и Rails
Page 8: 0. За курса, Ruby и Rails
Page 9: 0. За курса, Ruby и Rails

3

Page 10: 0. За курса, Ruby и Rails

3Събирания във ФМИ

Page 11: 0. За курса, Ruby и Rails

3Събирания във ФМИ

Събирания навън

Page 12: 0. За курса, Ruby и Rails

3Събирания във ФМИ

Събирания навън

Сайт на курса

Page 13: 0. За курса, Ruby и Rails

∀ понеделник и сряда

Page 14: 0. За курса, Ruby и Rails

∀ понеделник и сряда

19:00 - 21:00

Page 15: 0. За курса, Ruby и Rails

∀ понеделник и сряда

19:00 - 21:00

зала 200

Page 16: 0. За курса, Ruby и Rails
Page 17: 0. За курса, Ruby и Rails

http://fmi.rails-bg.net/

Page 18: 0. За курса, Ruby и Rails

http://fmi.rails-bg.net/

•Домашни•Споделяне на код•Въпроси и отговори•Информация за курса

Page 19: 0. За курса, Ruby и Rails

Догматичност(Не очаквахте испанската инквизиция, а?)

Page 20: 0. За курса, Ruby и Rails
Page 21: 0. За курса, Ruby и Rails
Page 22: 0. За курса, Ruby и Rails

Оценки

Page 23: 0. За курса, Ruby и Rails
Page 24: 0. За курса, Ruby и Rails
Page 25: 0. За курса, Ruby и Rails

200+• Отговори във форума

• Елегантни решения

• Втори проект през семестъра

• Допълнителни задачи

Page 26: 0. За курса, Ruby и Rails
Page 27: 0. За курса, Ruby и Rails
Page 28: 0. За курса, Ruby и Rails

Ruby

Page 29: 0. За курса, Ruby и Rails

Ruby Ruby

RubyRubyRuby

RubyRubyRuby

Page 30: 0. За курса, Ruby и Rails

Ruby Ruby

RubyRubyRuby

RubyRubyRuby Web

Page 31: 0. За курса, Ruby и Rails

Ruby Ruby

RubyRubyRuby

RubyRuby

HTTP

SQL

(X)HTML

CSSRuby Web

Page 32: 0. За курса, Ruby и Rails

Ruby Ruby

RubyRubyRuby

RubyRuby

HTTP

SQL

(X)HTML

CSSRuby Web

Rails

Page 33: 0. За курса, Ruby и Rails

Ruby Ruby

RubyRubyRuby

RubyRuby

HTTP

SQL

(X)HTML

CSS

Rails

Rails

RailsRails

RailsRails

Rails

Rails

Ruby Web

Rails

Page 34: 0. За курса, Ruby и Rails

Ruby Ruby

RubyRubyRuby

RubyRuby

HTTP

SQL

(X)HTML

CSS

Rails

Rails

RailsRails

RailsRails

Rails

Rails

Ruby Web

Rails

Ruby

Ruby

Ruby

Page 35: 0. За курса, Ruby и Rails

Ruby Ruby

RubyRubyRuby

RubyRuby

HTTP

SQL

(X)HTML

CSS

Rails

Rails

RailsRails

RailsRails

Rails

Rails

Ruby Web

Rails

JavaScript

Ruby

Ruby

Ruby

Page 36: 0. За курса, Ruby и Rails

Ruby Ruby

RubyRubyRuby

RubyRuby

HTTP

SQL

(X)HTML

CSS

Rails

Rails

RailsRails

RailsRails

Rails

Rails

AJAX

JSON

Ruby Web

Rails

JavaScript

Ruby

Ruby

Ruby

Page 37: 0. За курса, Ruby и Rails

Ruby Ruby

RubyRubyRuby

RubyRuby

HTTP

SQL

(X)HTML

CSS

Rails

Rails

RailsRails

RailsRails

Rails

Rails

AJAX

JSON

?

Ruby Web

Rails

JavaScript

Ruby

Ruby

Ruby

Page 38: 0. За курса, Ruby и Rails
Page 39: 0. За курса, Ruby и Rails
Page 40: 0. За курса, Ruby и Rails
Page 41: 0. За курса, Ruby и Rails
Page 42: 0. За курса, Ruby и Rails
Page 43: 0. За курса, Ruby и Rails

1995

Page 44: 0. За курса, Ruby и Rails

Интерпретира се

aquarius@arrakis:~$ cat sample.rb require 'date'puts "Hello world"puts "The exact time is #{DateTime.now}"aquarius@arrakis:~$ ruby sample.rb Hello worldThe exact time is 2008-10-05T14:40:14+03:00

Page 45: 0. За курса, Ruby и Rails

aquarius@arrakis:~$ irb 001:0> names = ["Stefan", "Nikolay"]=> ["Stefan", "Nikolay"]002:0> surnames = ["Kanev", "Bachiyski"]=> ["Kanev", "Bachiyski"]003:0> names.zip(surnames).map { |f,l| "#{f} #{l}" }=> ["Stefan Kanev", "Nikolay Bachiyski"]

Интерактивен шел (IRB)

Page 46: 0. За курса, Ruby и Rails

Динамичен

Page 47: 0. За курса, Ruby и Rails
Page 48: 0. За курса, Ruby и Rails

ООП

Page 49: 0. За курса, Ruby и Rails

ФП

Page 50: 0. За курса, Ruby и Rails

+ =

Page 51: 0. За курса, Ruby и Rails

Smalltalk

LISP

CLU

Page 52: 0. За курса, Ruby и Rails

essay pic SICP

Programs must be written for people to read, and only

incidentally for machines to execute

Page 53: 0. За курса, Ruby и Rails
Page 54: 0. За курса, Ruby и Rails

Matz(Yukihiro Matsumoto, 松本行)

• Benevolent Dictator For Life• 43 годишен• Спокоен, приятен човек• Мормон

Page 55: 0. За курса, Ruby и Rails

Интерпретатори

•MRI (Matz's Ruby Interpreter)• YARV (Yet Another Ruby VM)• Rubinus (вдъхновен от Smalltalk)• JRuby (сещате се)• IronRuby  

Page 56: 0. За курса, Ruby и Rails
Page 57: 0. За курса, Ruby и Rails

Платформа

Page 58: 0. За курса, Ruby и Rails

2004-

Page 59: 0. За курса, Ruby и Rails
Page 60: 0. За курса, Ruby и Rails

MVC

Page 61: 0. За курса, Ruby и Rails

Text

class User < ActiveRecord::Base validates_presence_of :email, :name, :birthday, :gender, :city validates_uniqueness_of :email, :case_sensitivity => false belongs_to :city has_many :comments, :dependent => :destroy has_many :received, :class_name => 'Message', :foreign_key => 'recipient_id' def self.authenticate(email, password) u = find_by_email(email) u && u.authenticated?(password) ? u : nil

Active Record

Page 62: 0. За курса, Ruby и Rails

<% ERB %>

Page 63: 0. За курса, Ruby и Rails

Controller

Controller

Page 64: 0. За курса, Ruby и Rails

TDD

Page 65: 0. За курса, Ruby и Rails

Migrations

Page 66: 0. За курса, Ruby и Rails

Plugins

Page 67: 0. За курса, Ruby и Rails
Page 68: 0. За курса, Ruby и Rails
Page 69: 0. За курса, Ruby и Rails
Page 70: 0. За курса, Ruby и Rails

github

Page 71: 0. За курса, Ruby и Rails

DHH(David Heinemeier Hanson)

• Създател на Rails• 28 годишен • Нахакан, арогантен тип• Дътчанин

Page 72: 0. За курса, Ruby и Rails

I’m not here to create Rails for you. I’m here to create Rails for me and if you happen to like that version of Rails that I’m creating for

me, than you are going to have a great time

Page 73: 0. За курса, Ruby и Rails
Page 74: 0. За курса, Ruby и Rails
Page 75: 0. За курса, Ruby и Rails
Page 76: 0. За курса, Ruby и Rails
Page 77: 0. За курса, Ruby и Rails

http://poignantguide.net/

Page 78: 0. За курса, Ruby и Rails

category_sum = Hash.new(0)

File.open('spendings').each_line do |line| next unless line =~ /^\d\d\.\d\d\.\d{4}\s+\w+\s+[-0-9.]+/ date, category, amount = line.split category_sum[category] += amount.to_iend

category_sum.sort_by { |_, sum| -sum }.each do |category, sum| puts "#{sum} spent on #{category}"end

Page 79: 0. За курса, Ruby и Rails

04.10.2008 lolcat 1004.10.2008 lolcat 1

05.10.2008 iMac 2375# I am getting compulsive05.10.2008 lolcat 20

06.10.2008 bet -20# Clayderman!!! 06.10.2008 tickets 60

# Let's never play poker again07.10.2008 bet 100

Page 80: 0. За курса, Ruby и Rails

nb@creep$ ruby iamfrugal.rb 2375 spent on iMac80 spent on bet60 spent on tickets31 spent on lolcat

Page 81: 0. За курса, Ruby и Rails
Page 82: 0. За курса, Ruby и Rails
Page 83: 0. За курса, Ruby и Rails

Text

def symmetric? points = Set.new @bricks.map(&:points).sum left, right, top, bottom = WIDTH * 2, -WIDTH * 2, HEIGHT * 2, -HEIGHT * 2 points.each do |x, y| left = [left, x].min right = [right, x].max top = [top, y].min bottom = [bottom, y].max end points.all? { |x, y| points.include? [right - x + left, y] } or \ points.all? { |x, y| points.include? [right - x + left, bottom - y + top] } end

Page 84: 0. За курса, Ruby и Rails

Text

def try board, bricks if bricks.empty? board.print_me if ($c % 10000).zero? $c +=1 if board.symmetric? puts 'symmetric! '*100 p board board.print_me end #gets if board.symmetric? #board.print_me #puts "-" * 30 return end bricks = bricks.dup brick = bricks.pop brick.rotate do |rotation| board.put rotation do try board, bricks end endend

Page 85: 0. За курса, Ruby и Rails
Page 86: 0. За курса, Ruby и Rails

Ruby няма да ви нареди магнитите, но ще ви даде няколко безценни часа

забавление