65
palais des congrès Paris 7, 8 et 9 février 2012

Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

Embed Size (px)

Citation preview

Page 1: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

palais des congrès Paris

7, 8 et 9 février 2012

Page 2: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

Mardi 7 févrierNicolas LedezArchitecte systèmeOrange Business ServicesIt&L@bs

Introduction à Ruby

Page 3: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

Nicolas Ledez

Page 4: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

Nicolas Ledez

Page 5: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

Nicolas Ledez

Page 6: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

Nicolas Ledez

Page 7: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

Nicolas Ledez

IT & L@bs

Page 8: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

Nicolas Ledez

Page 9: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

Nicolas Ledez

Page 10: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

Simon Courtois

Page 11: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

Simon Courtois

CTO chez Selectra

Page 12: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

Et maintenant Ruby

Page 13: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

Crée en 1995 Inspiré de Smalltalk, Lisp, Eiffel, Ada, etcJaponais Yukihiro Matsumoto « matz »Index TIOBE12 201210 2011

Ruby : l’histoire

Page 14: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

Toyota Production SystemGestion sans gaspillage

Japon / Lean

Page 15: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

Oh! Une lucioleje voulais crier :

« Regarde! »mais j'étais seul

Taïg

Japon / Haïku

Page 16: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

InterprétéObjetMultiparadigmeMultiplateformeLibre, gratuit, etc

Ruby 1/3

Page 17: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

Ramasse-miettesGestion d'exceptionsModification du code en « live »Expressions rationnelles (Regexp)Blocs

Ruby 2/3

Page 18: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

Héritage simpleMixin -> « héritage multiple »Extensions en CLes threads indépendants de l’OSRéflexion

Ruby 3/3

Page 19: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

Matz's Ruby Interpreter – CrubyJRubyIronRubyRubiniusMacRuby

Virtual Machine 1/2

Page 20: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

YARV (Yet another Ruby VM)XRuby - rb -> Java bytecodeRubyJS - rb -> JavascriptHotRuby

Virtual Machine 2/2

Page 21: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

On commence ?

Page 22: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

Les variables

var -> variable locale@var -> variable d'instance@@var -> variable de classe$var -> variable globaleVar -> constanteetc.

Page 23: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

def une_fonction puts "Salut tout le monde !"end

une_fonction

Le langage / Procédural 1

Salut tout le monde !

Page 24: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

def une_fonction(message) puts messageend

une_fonction "It's alive !"

Le langage / Procédural 2

It's alive !

Page 25: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

class UneClasse attr_accessor :message

def initialize(message) @message = message end

def afficher_message puts @message endend

Le langage / Objet

Salut tout le monde !Au revoir

mess1 = UneClasse.new "Salut tout le monde !"mess1.afficher_messagemess1.message = "Au revoir"puts mess1.message

Page 26: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

Array.new(5, "A")a[0]['cat'] = 'feline'a[1, 2]a[1..3]a[-3, 3]

Le langage / Tableau - bases

Page 27: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

[ 1, 2, 3 ] + [ 4, 5 ]#=> [ 1, 2, 3, 4, 5 ][ 1, 1, 3, 5 ] & [ 1, 2, 3 ]#=> [ 1, 3 ][ 1, 2, 3 ] * 3#=> [ 1, 2, 3, 1, 2, 3, 1, 2, 3 ][ 1, 1, 2, 2, 3, 3, 4, 5 ] - [ 1, 2, 4 ]#=> [ 3, 3, 5 ]

Le langage / Tableau - cool

Page 28: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

h = Hash.new("Go Fish")h["a"] = 100h["b"] = 200h["a"] #=> 100h["c"] #=> "Go Fish"

Le langage / Dictionnaires

Page 29: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

Et on pourrait y passer des heures

Page 30: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

class MyArray < Array def clean! self.each do |e| self.delete(e) if e % 2 end endend

list = MyArray.new([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ])

Classe / héritage

1 2 3 4 5 6 7 8 9 102 4 6 8 102 4 6 8 10

puts list.join " "puts list.clean!.join " "puts list.join " "

Page 31: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

Class Array def clean! self.each do |e| self.delete(e) if e % 2 end endend

list = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]

Classe / Monkey 1

1 2 3 4 5 6 7 8 9 102 4 6 8 102 4 6 8 10

puts list.join " "puts list.clean!.join " "puts list.join " "

Page 32: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

Class Array def double self.map { |e| e * 2 } endend

list = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]

Classe / Monkey 2 - map

2 4 6 8 10 12 14 16 18 201 2 3 4 5 6 7 8 9 10

puts list.double.join " "puts list.join " "

Page 33: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

Class Array def clean self.reduce([]) do |a, e| a << e unless ((e % 2) == 1) a end endend

list = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]

Classe / Monkey 3 - reduce

2 4 6 8 101 2 3 4 5 6 7 8 9 10

puts list. clean.join " "puts list.join " "

Page 34: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

Classe / Mixin

Module MyClean def clean! self.each do |e| self.delete(e) if e % 2 end end def double self.map { |e| e * 2 } endEnd

class Array include MyCleanend

class Hash include MyCleanend

Array.new.doubleHash.new.double

Page 35: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

Autour du langage

Page 36: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

Rspec, Cucumber, Minitest, ...Spork, Guard, ...Bundler, RVM, Rbenv, Pik, ...

http://www.bonjourgem.com/

+33,500 RubyGems.org

Autour de Ruby / Dev

Page 37: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

Rails, Sinatra, ...Spork, Guard, ...HAML, SASS, Compass, ...Capistrano, Pupetts, Cheff, ...

15% Ruby Github (2eme place)

Autour de Ruby / Prod

Page 38: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

ORM

Page 39: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

class CreateTickets < ActiveRecord::Migration def change create_table :tickets do |t| t.string :name t.text :description

t.timestamps end endend

ORM / Active record 1

Page 40: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

class Ticket < ActiveRecord::Base validates_presence_of :name validates_presence_of :status belongs_to :statusend

ORM / Active record 2

Page 41: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

class LineItem include DataMapper::Resource

property :order_id, Integer, :key => true property :item_number, Integer, :key => trueend

ORM / DataMapper

Page 42: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

Framework Web

Page 43: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

Rails

Uglifier

ActiveRecordERB

i18n

Rack

json

Page 44: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

Demo Rails Par Simon Courtois

Page 45: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

Sinatra

require 'sinatra'

get '/hi' do "Hello World!"end

Page 46: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

Templates

ERB

Page 47: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

<p id="notice"><%= notice %></p>

<p> <b>Name:</b> <%= @region.name %></p>

<%= link_to 'Edit', edit_region_path(@region) %> |<%= link_to 'Back', regions_path %>

Templates / ERB

Page 48: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

%p#notice= notice%p %b Name: = @region.name= link_to 'Edit', edit_region_path(@region)|\#{link_to 'Back', regions_path}

Templates / HAML

Page 49: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

J’ai Windows, je fais comment

Page 50: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

Rails Installer

Page 51: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

Rails Installer / DevKit

Page 52: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

JRuby

Page 53: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

IronRuby

Page 54: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

IronRuby

Page 55: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

RubySteel

Page 56: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

RubySteel

Page 57: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

RubySteel

Page 58: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

RubySteel

Page 59: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

Les ressources

Page 60: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

http://ironruby.net/try/http://tryruby.org/http://rubymonk.com/

http://railsforzombies.org/

Essayer maintenant

Page 61: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

http://ruby.railstutorial.org/http://railscasts.com/

Pour apprendre

Page 62: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

http://nicolas.ledez.net/ @nledezGithub : simonc @happynoff

http://www.camilleroux.com/ @CamilleRouxhttp://matthieusegret.com/ @MatthieuSegret

A suivre

Page 63: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

http://rubylive.fr/ @RubyLiveFRhttp://www.rubyfrance.org/http://www.railsfrance.org/Google groups:Rennes on RailsApéros RubyRailsfranceRuby on Rails: Core@RubyJobsFR

La communautée

Page 64: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

Conclusion

Page 65: Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby