Breizh camp intro ruby

407 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
407
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • http://www.tiobe.com/index.php/content/paperinfo/tpci/index.htmlhttp://octoboard.com/public?languages=5
  • 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
  • Breizh camp intro ruby

    1. 1. Jeudi 13 juinNicolas LedezArchitecte systèmeOrange Business ServicesIt&L@bs
    2. 2. Nicolas Ledez
    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. Nicolas Ledez
    10. 10. Nicolas Ledez
    11. 11. Et maintenant Ruby
    12. 12. Ruby : l’histoire Crée en 1995 Inspiré de Smalltalk, Lisp, Eiffel, Ada, etc Japonais Yukihiro Matsumoto « matz » 32% Ruby sur Github (1eme place) Index TIOBE  10 2012  12 2011
    13. 13. Japon / Lean Toyota Production System Gestion sans gaspillage
    14. 14. Japon / Haïku Oh! Une luciole je voulais crier : « Regarde! » mais jétais seul Taïg
    15. 15. Ruby 1/3 Interprété Objet Multiparadigme Multiplateforme Libre, gratuit, etc
    16. 16. Ruby 2/3 Ramasse-miettes Gestion dexceptions Modification du code en « live » Expressions rationnelles (Regexp) Blocs
    17. 17. Ruby 3/3 Héritage simple Mixin -> « héritage multiple » Extensions en C Les threads indépendants de l’OS Réflexion
    18. 18. Virtual Machine 1/2 Matzs Ruby Interpreter – Cruby JRuby IronRuby Rubinius MacRuby
    19. 19. Virtual Machine 2/2 YARV (Yet another Ruby VM) XRuby - rb -> Java bytecode RubyJS - rb -> Javascript HotRuby
    20. 20. On commence ?
    21. 21. Les variables var -> variable locale @var -> variable dinstance @@var -> variable de classe $var -> variable globale Var -> constante
    22. 22. Le langage / Procédural 1 def une_fonction puts "Salut tout le monde !" end une_fonction Salut tout le monde !
    23. 23. Le langage / Procédural 2 def une_fonction(message) puts message end une_fonction "Its alive !" Its alive !
    24. 24. 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
    25. 25. Le langage / Tableau - bases Array.new(5, "A") a[0][cat] = feline a[1, 2] a[1..3] a[-3, 3]
    26. 26. 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 ]
    27. 27. Le langage / Dictionnaires h = Hash.new("Go Fish") h["a"] = 100 h["b"] = 200 h["a"] #=> 100 h["c"] #=> "Go Fish"
    28. 28. Et on pourrait y passer des heures
    29. 29. 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
    30. 30. 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
    31. 31. 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
    32. 32. 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
    33. 33. 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
    34. 34. Autour du langage
    35. 35. Autour de Ruby / Dev Rspec, Cucumber, Minitest, ... HAML, SASS, Compass, …
    36. 36. Autour de Ruby / Dev Spork, Guard, ... Bundler, RVM, Rbenv, Pik, ... Vagrant
    37. 37. Autour de Ruby / Prod Rails, Sinatra, ... Capistrano, Pupetts, Chef, …
    38. 38. Autour de Ruby / Dev http://www.bonjourgem.com/ +40 091 RubyGems.org
    39. 39. 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
    40. 40. ORM / Active record 2 class Ticket < ActiveRecord::Base validates_presence_of :name validates_presence_of :status belongs_to :status end
    41. 41. ORM / DataMapper class LineItem include DataMapper::Resource property :order_id, Integer, :key => true property :item_number, Integer, :key => true end
    42. 42. Rails Uglifier Rack ERB ActiveRecord json i18n
    43. 43. Sinatra require sinatra get /hi do "Hello World!" end
    44. 44. 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 %>
    45. 45. Templates / HAML %p#notice= notice %p %b Name: = @region.name = link_to Edit, edit_region_path(@region) | #{link_to Back, regions_path}
    46. 46. J’installe tout ça comment ?
    47. 47. Rails Installer
    48. 48. Rails Installer / DevKit
    49. 49. JRuby
    50. 50. Les ressources
    51. 51. Essayer maintenant http://ironruby.net/try/ http://tryruby.org/ http://rubymonk.com/ http://railsforzombies.org/
    52. 52. Pour apprendre http://ruby.railstutorial.org/ http://railscasts.com/ http://www.jasimabasheer.com//posts/meta_introd uction_to_ruby.html
    53. 53. A suivre http://nicolas.ledez.net/ @nledez http://www.organicweb.fr/ @organicweb @brmichel (http://linuxfr.org/) http://www.camilleroux.com/ @CamilleRoux http://matthieusegret.com/ @MatthieuSegret
    54. 54. 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
    55. 55. Conclusion
    56. 56. Questions ?

    ×