Introduction à Ruby - MS Techdays 2012

  • 888 views
Uploaded on

Ma présentation d'introduction à Ruby pour les Techdays 2012.

Ma présentation d'introduction à Ruby pour les Techdays 2012.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
888
On Slideshare
0
From Embeds
0
Number of Embeds
3

Actions

Shares
Downloads
14
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • Paradigme de programmation -> style fondamentalParadigmes Objet, impératif, concurrent, fonctionnel
  • Réflexion, -> les programmes et les objets de s'inspectenteux-mêmes et de se modifie

Transcript

  • 1. palais descongrèsParis7, 8 et 9février 2012
  • 2. Introduction à RubyMardi 7 févrierNicolas LedezArchitecte systèmeOrange Business ServicesIt&L@bs
  • 3. Nicolas Ledez
  • 4. Nicolas Ledez
  • 5. Nicolas Ledez
  • 6. Nicolas Ledez
  • 7. Nicolas Ledez
  • 8. Nicolas Ledez
  • 9. Simon Courtois
  • 10. Et maintenant Ruby
  • 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. Japon / Lean Toyota Production System Gestion sans gaspillage
  • 13. Japon / Haïku Oh! Une luciole je voulais crier : « Regarde! » mais jétais seul Taïg
  • 14. Ruby 1/3 Interprété Objet Multiparadigme Multiplateforme Libre, gratuit, etc
  • 15. Ruby 2/3 Ramasse-miettes Gestion dexceptions Modification du code en « live » Expressions rationnelles (Regexp) Blocs
  • 16. Ruby 3/3 Héritage simple Mixin -> « héritage multiple » Extensions en C Les threads indépendants de l’OS Réflexion
  • 17. Virtual Machine 1/2 Matzs Ruby Interpreter – Cruby JRuby IronRuby Rubinius MacRuby
  • 18. Virtual Machine 2/2 YARV (Yet another Ruby VM) XRuby - rb -> Java bytecode RubyJS - rb -> Javascript HotRuby
  • 19. On commence ?
  • 20. Les variables var -> variable locale @var -> variable dinstance @@var -> variable de classe $var -> variable globale Var -> constante
  • 21. Le langage / Procédural 1 def une_fonction puts "Salut tout le monde !" end une_fonction Salut tout le monde !
  • 22. Le langage / Procédural 2 def une_fonction(message) puts message end une_fonction "Its alive !" Its alive !
  • 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. Le langage / Tableau - bases Array.new(5, "A") a[0][cat] = feline a[1, 2] a[1..3] a[-3, 3]
  • 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. Le langage / Dictionnaires h = Hash.new("Go Fish") h["a"] = 100 h["b"] = 200 h["a"] #=> 100 h["c"] #=> "Go Fish"
  • 27. Et on pourrait y passer des heures
  • 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. 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. 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. 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. 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. Autour du langage
  • 34. Autour de Ruby / Dev Rspec, Cucumber, Minitest, ... Spork, Guard, ... Bundler, RVM, Rbenv, Pik, ... http://www.bonjourgem.com/ +33,500 RubyGems.org
  • 35. Autour de Ruby / Prod Rails, Sinatra, ... Spork, Guard, ... HAML, SASS, Compass, ... Capistrano, Pupetts, Cheff, ... 15% Ruby Github (2eme place)
  • 36. ORM
  • 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. ORM / Active record 2 class Ticket < ActiveRecord::Base validates_presence_of :name validates_presence_of :status belongs_to :status end
  • 39. ORM / DataMapper class LineItem include DataMapper::Resource property :order_id, Integer, :key => true property :item_number, Integer, :key => true end
  • 40. Framework Web
  • 41. Rails Uglifier Rack ERB ActiveRecord json i18n
  • 42. Demo Rails Par Simon Courtois
  • 43. Sinatra require sinatra get /hi do "Hello World!" end
  • 44. Templates
  • 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. Templates / HAML %p#notice= notice %p %b Name: = @region.name = link_to Edit, edit_region_path(@region) | #{link_to Back, regions_path}
  • 47. J’ai Windows, je fais comment
  • 48. Rails Installer
  • 49. Rails Installer / DevKit
  • 50. JRuby
  • 51. IronRuby
  • 52. IronRuby
  • 53. RubySteel
  • 54. RubySteel
  • 55. RubySteel
  • 56. RubySteel
  • 57. Les ressources
  • 58. Essayer maintenant http://ironruby.net/try/ http://tryruby.org/ http://rubymonk.com/ http://railsforzombies.org/
  • 59. Pour apprendre http://ruby.railstutorial.org/ http://railscasts.com/
  • 60. A suivre http://nicolas.ledez.net/ @nledez Github : simonc @happynoff http://www.camilleroux.com/ @CamilleRoux http://matthieusegret.com/ @MatthieuSegret
  • 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. Conclusion