0
palais descongrèsParis7, 8 et 9février 2012
Introduction à RubyMardi 7 févrierNicolas LedezArchitecte systèmeOrange Business ServicesIt&L@bs
Nicolas Ledez
Nicolas Ledez
Nicolas Ledez
Nicolas Ledez
Nicolas Ledez
Nicolas Ledez
Simon Courtois
Et maintenant Ruby
Ruby : l’histoire  Crée en 1995   Inspiré de  Smalltalk, Lisp, Eiffel, Ada, etc  Japonais Yukihiro Matsumoto « matz »  Ind...
Japon / Lean  Toyota Production System  Gestion sans gaspillage
Japon / Haïku        Oh! Une luciole je voulais crier : « Regarde! »        mais jétais seul               Taïg
Ruby 1/3  Interprété  Objet  Multiparadigme  Multiplateforme  Libre, gratuit, etc
Ruby 2/3  Ramasse-miettes  Gestion dexceptions  Modification du code en « live »  Expressions rationnelles (Regexp)  Blocs
Ruby 3/3  Héritage simple  Mixin -> « héritage multiple »  Extensions en C  Les threads indépendants de l’OS  Réflexion
Virtual Machine 1/2  Matzs Ruby Interpreter –  Cruby  JRuby  IronRuby  Rubinius  MacRuby
Virtual Machine 2/2  YARV (Yet another Ruby VM)  XRuby - rb -> Java bytecode  RubyJS - rb -> Javascript  HotRuby
On commence ?
Les variables  var -> variable locale  @var -> variable dinstance  @@var -> variable de  classe  $var -> variable globale ...
Le langage / Procédural 1 def une_fonction  puts "Salut tout le monde !" end une_fonction Salut tout le monde !
Le langage / Procédural 2 def une_fonction(message)  puts message end une_fonction "Its alive !" Its alive !
Le langage / Objet class UneClasse            mess1 = UneClasse.new "Salut  attr_accessor :message                        ...
Le langage / Tableau - bases Array.new(5, "A") a[0][cat] = feline a[1, 2] a[1..3] a[-3, 3]
Le langage / Tableau - cool [ 1, 2, 3 ] + [ 4, 5 ] #=> [ 1, 2, 3, 4, 5 ] [ 1, 1, 3, 5 ] & [ 1, 2, 3 ] #=> [ 1, 3 ] [ 1, 2,...
Le langage / Dictionnaires h = Hash.new("Go Fish") h["a"] = 100 h["b"] = 200 h["a"]       #=> 100 h["c"]       #=> "Go Fish"
Et on pourrait y passer des heures
Classe / héritage class MyArray < Array  def clean!    self.each do |e|                 puts list.join " "     self.delete...
Classe / Monkey 1 Class Array  def clean!   self.each do |e|                     puts list.join " "    self.delete(e) if e...
Classe / Monkey 2 - map Class Array  def double                                   puts list.double.join " "   self.map { |...
Classe / Monkey 3 - reduce Class Array  def clean   self.reduce([]) do |a, e|                puts list. clean.join " "    ...
Classe / Mixin Module MyClean               class Array  def clean!                   include MyClean   self.each do |e|  ...
Autour du langage
Autour de Ruby / Dev  Rspec, Cucumber, Minitest, ...  Spork, Guard, ...  Bundler, RVM, Rbenv, Pik, ...  http://www.bonjour...
Autour de Ruby / Prod  Rails, Sinatra, ...  Spork, Guard, ...  HAML, SASS, Compass, ...  Capistrano, Pupetts, Cheff, ...  ...
ORM
ORM / Active record 1 class CreateTickets < ActiveRecord::Migration  def change    create_table :tickets do |t|     t.stri...
ORM / Active record 2 class Ticket < ActiveRecord::Base  validates_presence_of :name  validates_presence_of :status  belon...
ORM / DataMapper class LineItem  include DataMapper::Resource  property :order_id, Integer, :key => true  property :item_n...
Framework Web
Rails                    Uglifier                               Rack                  ERB   ActiveRecord                js...
Demo Rails Par Simon Courtois
Sinatra require sinatra get /hi do  "Hello World!" end
Templates
Templates / ERB <p id="notice"><%= notice %></p> <p>  <b>Name:</b>  <%= @region.name %> </p> <%= link_to Edit, edit_region...
Templates / HAML %p#notice= notice %p   %b Name:   = @region.name = link_to Edit, edit_region_path(@region) | #{link_to Ba...
J’ai Windows, je fais      comment
Rails Installer
Rails Installer / DevKit
JRuby
IronRuby
IronRuby
RubySteel
RubySteel
RubySteel
RubySteel
Les ressources
Essayer maintenant  http://ironruby.net/try/  http://tryruby.org/  http://rubymonk.com/  http://railsforzombies.org/
Pour apprendre  http://ruby.railstutorial.org/  http://railscasts.com/
A suivre  http://nicolas.ledez.net/ @nledez  Github : simonc @happynoff  http://www.camilleroux.com/ @CamilleRoux  http://...
La communautée  http://rubylive.fr/ @RubyLiveFR  http://www.rubyfrance.org/  http://www.railsfrance.org/  Google groups:  ...
Conclusion
Introduction à Ruby 2
Introduction à Ruby 2
Introduction à Ruby 2
Upcoming SlideShare
Loading in...5
×

Introduction à Ruby 2

149

Published on

Dans cette session vous apprendrez tout sur Ruby. Le langage, les frameworks, la communauté, mais surtout un esprit. Passé le teaser, Nicolas Ledez vous présentera comment Ruby peut vous apporter tous les jours une méthodologie dans votre travail, et des outils pour réaliser un prototype rapidement. Quel que soit votre langage d'origine, Ruby complète parfaitement votre boite à outils de développeur/administrateur système.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
149
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Paradigme de programmation -&gt; style fondamentalParadigmes Objet, impératif, concurrent, fonctionnel
  • Réflexion, -&gt; les programmes et les objets de s&apos;inspectenteux-mêmes et de se modifie
  • Transcript of "Introduction à Ruby 2"

    1. 1. palais descongrèsParis7, 8 et 9février 2012
    2. 2. Introduction à RubyMardi 7 févrierNicolas LedezArchitecte systèmeOrange Business ServicesIt&L@bs
    3. 3. Nicolas Ledez
    4. 4. Nicolas Ledez
    5. 5. Nicolas Ledez
    6. 6. Nicolas Ledez
    7. 7. Nicolas Ledez
    8. 8. Nicolas Ledez
    9. 9. Simon Courtois
    10. 10. Et maintenant Ruby
    11. 11. Ruby : l’histoire Crée en 1995 Inspiré de Smalltalk, Lisp, Eiffel, Ada, etc Japonais Yukihiro Matsumoto « matz » Index TIOBE  12 2012  10 2011
    12. 12. Japon / Lean Toyota Production System Gestion sans gaspillage
    13. 13. Japon / Haïku Oh! Une luciole je voulais crier : « Regarde! » mais jétais seul Taïg
    14. 14. Ruby 1/3 Interprété Objet Multiparadigme Multiplateforme Libre, gratuit, etc
    15. 15. Ruby 2/3 Ramasse-miettes Gestion dexceptions Modification du code en « live » Expressions rationnelles (Regexp) Blocs
    16. 16. Ruby 3/3 Héritage simple Mixin -> « héritage multiple » Extensions en C Les threads indépendants de l’OS Réflexion
    17. 17. Virtual Machine 1/2 Matzs Ruby Interpreter – Cruby JRuby IronRuby Rubinius MacRuby
    18. 18. Virtual Machine 2/2 YARV (Yet another Ruby VM) XRuby - rb -> Java bytecode RubyJS - rb -> Javascript HotRuby
    19. 19. On commence ?
    20. 20. Les variables var -> variable locale @var -> variable dinstance @@var -> variable de classe $var -> variable globale Var -> constante
    21. 21. Le langage / Procédural 1 def une_fonction puts "Salut tout le monde !" end une_fonction Salut tout le monde !
    22. 22. Le langage / Procédural 2 def une_fonction(message) puts message end une_fonction "Its alive !" Its alive !
    23. 23. Le langage / Objet class UneClasse mess1 = UneClasse.new "Salut attr_accessor :message tout le monde !" def initialize(message) mess1.afficher_message @message = message end mess1.message = "Au revoir" puts mess1.message def afficher_message puts @message end end Salut tout le monde ! Au revoir
    24. 24. Le langage / Tableau - bases Array.new(5, "A") a[0][cat] = feline a[1, 2] a[1..3] a[-3, 3]
    25. 25. Le langage / Tableau - cool [ 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 ]
    26. 26. Le langage / Dictionnaires h = Hash.new("Go Fish") h["a"] = 100 h["b"] = 200 h["a"] #=> 100 h["c"] #=> "Go Fish"
    27. 27. Et on pourrait y passer des heures
    28. 28. Classe / héritage class MyArray < Array def clean! self.each do |e| puts list.join " " self.delete(e) if e % 2 puts list.clean!.join " end end " end puts list.join " " list = MyArray.new([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]) 1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 2 4 6 8 10
    29. 29. Classe / Monkey 1 Class Array def clean! self.each do |e| puts list.join " " self.delete(e) if e % 2 puts list.clean!.join " end end " end puts list.join " " list = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] 1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 2 4 6 8 10
    30. 30. Classe / Monkey 2 - map Class Array def double puts list.double.join " " self.map { |e| e * 2 } puts list.join " " end end list = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] 2 4 6 8 10 12 14 16 18 20 1 2 3 4 5 6 7 8 9 10
    31. 31. Classe / Monkey 3 - reduce Class Array def clean self.reduce([]) do |a, e| puts list. clean.join " " a << e unless ((e % 2) == 1) a puts list.join " " end end end list = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] 2 4 6 8 10 1 2 3 4 5 6 7 8 9 10
    32. 32. Classe / Mixin Module MyClean class Array def clean! include MyClean self.each do |e| end self.delete(e) if e % 2 end class Hash end include MyClean def double end self.map { |e| e * 2 } end Array.new.double End Hash.new.double
    33. 33. Autour du langage
    34. 34. Autour de Ruby / Dev Rspec, Cucumber, Minitest, ... Spork, Guard, ... Bundler, RVM, Rbenv, Pik, ... http://www.bonjourgem.com/ +33,500 RubyGems.org
    35. 35. Autour de Ruby / Prod Rails, Sinatra, ... Spork, Guard, ... HAML, SASS, Compass, ... Capistrano, Pupetts, Cheff, ... 15% Ruby Github (2eme place)
    36. 36. ORM
    37. 37. ORM / Active record 1 class CreateTickets < ActiveRecord::Migration def change create_table :tickets do |t| t.string :name t.text :description t.timestamps end end end
    38. 38. ORM / Active record 2 class Ticket < ActiveRecord::Base validates_presence_of :name validates_presence_of :status belongs_to :status end
    39. 39. ORM / DataMapper class LineItem include DataMapper::Resource property :order_id, Integer, :key => true property :item_number, Integer, :key => true end
    40. 40. Framework Web
    41. 41. Rails Uglifier Rack ERB ActiveRecord json i18n
    42. 42. Demo Rails Par Simon Courtois
    43. 43. Sinatra require sinatra get /hi do "Hello World!" end
    44. 44. Templates
    45. 45. Templates / ERB <p id="notice"><%= notice %></p> <p> <b>Name:</b> <%= @region.name %> </p> <%= link_to Edit, edit_region_path(@region) %> | <%= link_to Back, regions_path %>
    46. 46. Templates / HAML %p#notice= notice %p %b Name: = @region.name = link_to Edit, edit_region_path(@region) | #{link_to Back, regions_path}
    47. 47. J’ai Windows, je fais comment
    48. 48. Rails Installer
    49. 49. Rails Installer / DevKit
    50. 50. JRuby
    51. 51. IronRuby
    52. 52. IronRuby
    53. 53. RubySteel
    54. 54. RubySteel
    55. 55. RubySteel
    56. 56. RubySteel
    57. 57. Les ressources
    58. 58. Essayer maintenant http://ironruby.net/try/ http://tryruby.org/ http://rubymonk.com/ http://railsforzombies.org/
    59. 59. Pour apprendre http://ruby.railstutorial.org/ http://railscasts.com/
    60. 60. A suivre http://nicolas.ledez.net/ @nledez Github : simonc @happynoff http://www.camilleroux.com/ @CamilleRoux http://matthieusegret.com/ @MatthieuSegret
    61. 61. La communautée http://rubylive.fr/ @RubyLiveFR http://www.rubyfrance.org/ http://www.railsfrance.org/ Google groups: Rennes on Rails Apéros Ruby Railsfrance Ruby on Rails: Core @RubyJobsFR
    62. 62. Conclusion
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×