La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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

Présentations similaires


Présentation au sujet: "Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services Introduction à Ruby."— Transcription de la présentation:

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

2 Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs Introduction à Ruby

3

4 Nicolas Ledez

5

6

7

8

9

10

11 Simon Courtois

12 Et maintenant Ruby

13 Crée en 1995 Inspiré de Smalltalk, Lisp, Eiffel, Ada, etc Japonais Yukihiro Matsumoto « matz » Index TIOBE 12 2012 10 2011 Ruby : lhistoire

14 Toyota Production System Gestion sans gaspillage Japon / Lean

15 Oh! Une luciole je voulais crier : « Regarde! » mais j'étais seul Taïg Japon / Haïku

16 Interprété Objet Multiparadigme Multiplateforme Libre, gratuit, etc Ruby 1/3

17 Ramasse-miettes Gestion d'exceptions Modification du code en « live » Expressions rationnelles (Regexp) Blocs Ruby 2/3

18 Héritage simple Mixin -> « héritage multiple » Extensions en C Les threads indépendants de lOS Réflexion Ruby 3/3

19 Matz's Ruby Interpreter – Cruby JRuby IronRuby Rubinius MacRuby Virtual Machine 1/2

20 YARV (Yet another Ruby VM) XRuby - rb -> Java bytecode RubyJS - rb -> Javascript HotRuby Virtual Machine 2/2

21 On commence ?

22 Les variables var -> variable locale @var -> variable d'instance @@var -> variable de classe $var -> variable globale Var -> constante etc.

23 def une_fonction puts "Salut tout le monde !" end une_fonction Le langage / Procédural 1 Salut tout le monde !

24 def une_fonction(message) puts message end une_fonction "It's alive !" Le langage / Procédural 2 It's alive !

25 class UneClasse attr_accessor :message def initialize(message) @message = message end def afficher_message puts @message end Le langage / Objet Salut tout le monde ! Au revoir mess1 = UneClasse.new "Salut tout le monde !" mess1.afficher_message mess1.message = "Au revoir" puts mess1.message

26 Array.new(5, "A") a[0]['cat'] = 'feline' a[1, 2] a[1..3] a[-3, 3] Le langage / Tableau - bases

27 [ 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

28 h = Hash.new("Go Fish") h["a"] = 100 h["b"] = 200 h["a"] #=> 100 h["c"] #=> "Go Fish" Le langage / Dictionnaires

29 Et on pourrait y passer des heures

30 class MyArray < Array def clean! self.each do |e| self.delete(e) if e % 2 end 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 10 2 4 6 8 10 puts list.join " " puts list.clean!.join " " puts list.join " "

31 Class Array def clean! self.each do |e| self.delete(e) if e % 2 end list = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] Classe / Monkey 1 1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 puts list.join " " puts list.clean!.join " " puts list.join " "

32 Class Array def double self.map { |e| e * 2 } end list = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] Classe / Monkey 2 - map 2 4 6 8 10 12 14 16 18 20 1 2 3 4 5 6 7 8 9 10 puts list.double.join " " puts list.join " "

33 Class Array def clean self.reduce([]) do |a, e| a << e unless ((e % 2) == 1) a end list = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] Classe / Monkey 3 - reduce 2 4 6 8 10 1 2 3 4 5 6 7 8 9 10 puts list. clean.join " " puts list.join " "

34 Classe / Mixin Module MyClean def clean! self.each do |e| self.delete(e) if e % 2 end def double self.map { |e| e * 2 } end End class Array include MyClean end class Hash include MyClean end Array.new.double Hash.new.double

35 Autour du langage

36 Rspec, Cucumber, Minitest,... Spork, Guard,... Bundler, RVM, Rbenv, Pik,... http://www.bonjourgem.com/ +33,500 RubyGems.org Autour de Ruby / Dev

37 Rails, Sinatra,... Spork, Guard,... HAML, SASS, Compass,... Capistrano, Pupetts, Cheff,... 15% Ruby Github (2eme place) Autour de Ruby / Prod

38 ORM

39 class CreateTickets < ActiveRecord::Migration def change create_table :tickets do |t| t.string :name t.text :description t.timestamps end ORM / Active record 1

40 class Ticket < ActiveRecord::Base validates_presence_of :name validates_presence_of :status belongs_to :status end ORM / Active record 2

41 class LineItem include DataMapper::Resource property :order_id, Integer, :key => true property :item_number, Integer, :key => true end ORM / DataMapper

42 Framework Web

43 Rails Uglifier ActiveRecord ERB i18n Rack json

44 Demo Rails Par Simon Courtois

45 Sinatra require 'sinatra' get '/hi' do "Hello World!" end

46 Templates

47 Name: | Templates / ERB

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

49 Jai Windows, je fais comment

50 Rails Installer

51 Rails Installer / DevKit

52 JRuby

53 IronRuby

54

55 RubySteel

56

57

58

59 Les ressources

60 http://ironruby.net/try/ http://tryruby.org/ http://rubymonk.com/ http://railsforzombies.org/ Essayer maintenant

61 http://ruby.railstutorial.org/ http://railscasts.com/ Pour apprendre

62 http://nicolas.ledez.net/ @nledez Github : simonc @happynoff http://www.camilleroux.com/ @CamilleRoux http://matthieusegret.com/ @MatthieuSegret A suivre

63 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 La communautée

64 Conclusion

65


Télécharger ppt "Palais des congrès Paris 7, 8 et 9 février 2012. Mardi 7 février Nicolas Ledez Architecte système Orange Business Services Introduction à Ruby."

Présentations similaires


Annonces Google