Breizh camp intro ruby

  • 264 views
Uploaded on

 

  • 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
264
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
3
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
  • 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

Transcript

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