Fórum de Software Livre do Serpro RJ 2009

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    Fórum de Software Livre do Serpro RJ 2009 - Presentation Transcript

    1. Tuesday, September 15, 2009
    2. Tuesday, September 15, 2009
    3. Tuesday, September 15, 2009
    4. Tuesday, September 15, 2009
    5. Tuesday, September 15, 2009
    6. Tuesday, September 15, 2009
    7. Tuesday, September 15, 2009
    8. Tuesday, September 15, 2009
    9. Tuesday, September 15, 2009
    10. Tuesday, September 15, 2009
    11. Tuesday, September 15, 2009
    12. Tuesday, September 15, 2009
    13. Tuesday, September 15, 2009
    14. Tuesday, September 15, 2009
    15. Tuesday, September 15, 2009
    16. Tuesday, September 15, 2009
    17. Tuesday, September 15, 2009
    18. Tuesday, September 15, 2009
    19. Tuesday, September 15, 2009
    20. Tuesday, September 15, 2009
    21. Tuesday, September 15, 2009
    22. Tuesday, September 15, 2009
    23. Tuesday, September 15, 2009
    24. Tuesday, September 15, 2009
    25. Filosofia Ruby Tuesday, September 15, 2009
    26. Tuesday, September 15, 2009
    27. Tuesday, September 15, 2009
    28. Tuesday, September 15, 2009
    29. Tuesday, September 15, 2009
    30. Tuesday, September 15, 2009
    31. Tuesday, September 15, 2009
    32. Tuesday, September 15, 2009
    33. Tuesday, September 15, 2009
    34. Tuesday, September 15, 2009
    35. Tuesday, September 15, 2009
    36. “Eu inventei o termo ʻorientação a objetosʼ, e posso lhes dizer que eu não estava pensando em C++.” Tuesday, September 15, 2009
    37. Tuesday, September 15, 2009
    38. by Dave Thomas Tuesday, September 15, 2009
    39. Tuesday, September 15, 2009
    40. Tuesday, September 15, 2009
    41. Tuesday, September 15, 2009
    42. Tuesday, September 15, 2009
    43. Tuesday, September 15, 2009
    44. Tuesday, September 15, 2009
    45. Tuesday, September 15, 2009
    46. Tuesday, September 15, 2009
    47. Tuesday, September 15, 2009
    48. Tuesday, September 15, 2009
    49. Tuesday, September 15, 2009
    50. Tuesday, September 15, 2009
    51. Tuesday, September 15, 2009
    52. Tuesday, September 15, 2009
    53. Tuesday, September 15, 2009
    54. Tuesday, September 15, 2009
    55. Tuesday, September 15, 2009
    56. Tuesday, September 15, 2009
    57. Tuesday, September 15, 2009
    58. Tuesday, September 15, 2009
    59. Tuesday, September 15, 2009
    60. Tuesday, September 15, 2009
    61. Tuesday, September 15, 2009
    62. Tuesday, September 15, 2009
    63. class Product < ActiveRecord::Base after_create :set_initial_inventory has_many :variants, :dependent => :destroy has_many :images, :as => :viewable, :order => :position, :dependent => :destroy has_many :properties, :through => :product_properties belongs_to :tax_category validates_presence_of :name validates_presence_of :master_price validates_presence_of :description make_permalink :with => :name, :field => :permalink end Tuesday, September 15, 2009
    64. class Product < ActiveRecord::Base after_create :set_initial_inventory has_many :variants, :dependent => :destroy has_many :images, :as => :viewable, :order => :position, :dependent => :destroy has_many :properties, :through => :product_properties belongs_to :tax_category validates_presence_of :name validates_presence_of :master_price validates_presence_of :description make_permalink :with => :name, :field => :permalink end Tuesday, September 15, 2009
    65. class Product < ActiveRecord::Base after_create :set_initial_inventory has_many :variants, :dependent => :destroy has_many :images, :as => :viewable, :order => :position, :dependent => :destroy has_many :properties, :through => :product_properties belongs_to :tax_category validates_presence_of :name validates_presence_of :master_price validates_presence_of :description make_permalink :with => :name, :field => :permalink end Tuesday, September 15, 2009
    66. class Product < ActiveRecord::Base after_create :set_initial_inventory has_many :variants, :dependent => :destroy has_many :images, :as => :viewable, :order => :position, :dependent => :destroy has_many :properties, :through => :product_properties belongs_to :tax_category validates_presence_of :name validates_presence_of :master_price validates_presence_of :description make_permalink :with => :name, :field => :permalink end Tuesday, September 15, 2009
    67. class Product < ActiveRecord::Base after_create :set_initial_inventory has_many :variants, :dependent => :destroy has_many :images, :as => :viewable, :order => :position, :dependent => :destroy has_many :properties, :through => :product_properties belongs_to :tax_category validates_presence_of :name validates_presence_of :master_price validates_presence_of :description make_permalink :with => :name, :field => :permalink end Tuesday, September 15, 2009
    68. class Product < ActiveRecord::Base after_create :set_initial_inventory has_many :variants, :dependent => :destroy has_many :images, :as => :viewable, :order => :position, :dependent => :destroy has_many :properties, :through => :product_properties belongs_to :tax_category validates_presence_of :name validates_presence_of :master_price validates_presence_of :description make_permalink :with => :name, :field => :permalink end Tuesday, September 15, 2009
    69. class Product < ActiveRecord::Base after_create :set_initial_inventory has_many :variants, :dependent => :destroy has_many :images, :as => :viewable, :order => :position, :dependent => :destroy has_many :properties, :through => :product_properties belongs_to :tax_category validates_presence_of :name validates_presence_of :master_price validates_presence_of :description make_permalink :with => :name, :field => :permalink end Tuesday, September 15, 2009
    70. <div id="product-listing"> <%= breadcrumbs(@taxon) %> <br/> <%= render :partial => "shared/products.html.erb", :locals => {:products => @products, :taxon => @taxon } %> </div> <% content_for :sidebar do %> <td id="shop-by-col" valign="top"> <%= render :partial => "shared/taxonomies" %> </td> <% end %> <%= render :partial => 'shared/paginate', :locals => {:collection => @products, :options => {}} unless @products.empty? %> Tuesday, September 15, 2009
    71. <div id="product-listing"> <%= breadcrumbs(@taxon) %> <br/> <%= render :partial => "shared/products.html.erb", :locals => {:products => @products, :taxon => @taxon } %> </div> <% content_for :sidebar do %> <td id="shop-by-col" valign="top"> <%= render :partial => "shared/taxonomies" %> </td> <% end %> <%= render :partial => 'shared/paginate', :locals => {:collection => @products, :options => {}} unless @products.empty? %> Tuesday, September 15, 2009
    72. <div id="product-listing"> <%= breadcrumbs(@taxon) %> <br/> <%= render :partial => "shared/products.html.erb", :locals => {:products => @products, :taxon => @taxon } %> </div> <% content_for :sidebar do %> <td id="shop-by-col" valign="top"> <%= render :partial => "shared/taxonomies" %> </td> <% end %> <%= render :partial => 'shared/paginate', :locals => {:collection => @products, :options => {}} unless @products.empty? %> Tuesday, September 15, 2009
    73. #product-listing =breadcrumbs(@taxon) %br =render :partial => "shared/products.html.erb", :locals => {:products => @products, :taxon => @taxon} -content_for :sidebar do %td#shop-by-col(:valign => "top") =render :partial => "shared/taxonomies" =render :partial => 'shared/paginate', :locals => {:collection => @products, :options => {}} unless @products.empty? Tuesday, September 15, 2009
    74. Tuesday, September 15, 2009
    75. @Transient public BigDecimal getTotal() //$Id: Booking.java 5579 2007-06-27 00:06:49Z gavin $ { package org.jboss.seam.example.booking; return hotel.getPrice().multiply( new BigDecimal( getNights() ) ); } import java.io.Serializable; import java.math.BigDecimal; @Transient import java.text.DateFormat; public int getNights() import java.util.Date; { return (int) ( checkoutDate.getTime() - checkinDate.getTime() ) / import javax.persistence.Basic; 1000 / 60 / 60 / 24; import javax.persistence.Entity; } import javax.persistence.GeneratedValue; import javax.persistence.Id; @Id @GeneratedValue import javax.persistence.ManyToOne; public Long getId() import javax.persistence.Temporal; { import javax.persistence.TemporalType; return id; import javax.persistence.Transient; } public void setId(Long id) import org.hibernate.validator.Length; { import org.hibernate.validator.NotNull; this.id = id; import org.hibernate.validator.Pattern; } import org.jboss.seam.annotations.Name; @NotNull @Entity @Basic @Temporal(TemporalType.DATE) @Name("booking") public Date getCheckinDate() public class Booking implements Serializable { { return checkinDate; private Long id; } private User user; public void setCheckinDate(Date datetime) private Hotel hotel; { private Date checkinDate; this.checkinDate = datetime; private Date checkoutDate; } private String creditCard; private String creditCardName; @ManyToOne @NotNull private int creditCardExpiryMonth; public Hotel getHotel() private int creditCardExpiryYear; { private boolean smoking; return hotel; private int beds; } public void setHotel(Hotel hotel) public Booking() {} { this.hotel = hotel; public Booking(Hotel hotel, User user) } { this.hotel = hotel; @ManyToOne @NotNull this.user = user; public User getUser() } { return user; } Tuesday, September 15, 2009
    76. public int getBeds() public void setUser(User user) { { return beds; this.user = user; } } public void setBeds(int beds) @Basic @Temporal(TemporalType.DATE) { @NotNull this.beds = beds; public Date getCheckoutDate() } { @NotNull(message="Credit card name is required") return checkoutDate; @Length(min=3, max=70, message="Credit card name is required") } public String getCreditCardName() public void setCheckoutDate(Date checkoutDate) { { return creditCardName; this.checkoutDate = checkoutDate; } } public void setCreditCardName(String creditCardName) @NotNull(message="Credit card number is required") { @Length(min=16, max=16, message="Credit card number must 16 digits long") this.creditCardName = creditCardName; @Pattern(regex="^d*$", message="Credit card number must be numeric") } public String getCreditCard() { public int getCreditCardExpiryMonth() return creditCard; { } return creditCardExpiryMonth; } public void setCreditCard(String creditCard) { public void setCreditCardExpiryMonth(int creditCardExpiryMonth) this.creditCard = creditCard; { } this.creditCardExpiryMonth = creditCardExpiryMonth; } @Transient public String getDescription() public int getCreditCardExpiryYear() { { DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM); return creditCardExpiryYear; return hotel==null ? null : hotel.getName() + } ", " + df.format( getCheckinDate() ) + " to " + df.format( getCheckoutDate() ); public void setCreditCardExpiryYear(int creditCardExpiryYear) } { this.creditCardExpiryYear = creditCardExpiryYear; public boolean isSmoking() } { return smoking; @Override } public String toString() { public void setSmoking(boolean smoking) return "Booking(" + user + ","+ hotel + ")"; { } this.smoking = smoking; } } Tuesday, September 15, 2009
    77. class Booking < ActiveRecord::Base belongs_to :hotel belongs_to :user validates_presence_of :hotel validates_presence_of :user validates_presence_of :credit_card validates_presence_of :credit_card_name validates_length_of :credit_card, :within => 16..16 validates_format_of :credit_card, :with => /^d*$/ validates_length_of :credit_card_name, :within => 3..70 def total hotel.price * nights end def nights ((checkout_date - checkin_date) / 1.day).round end def to_s "Booking(#{user},#{hotel})" end end Tuesday, September 15, 2009
    78. class Booking < ActiveRecord::Base belongs_to :hotel belongs_to :user validates_presence_of :hotel validates_presence_of :user validates_presence_of :credit_card validates_presence_of :credit_card_name validates_length_of :credit_card, :within => 16..16 validates_format_of :credit_card, :with => /^d*$/ validates_length_of :credit_card_name, :within => 3..70 def total hotel.price * nights end def nights ((checkout_date - checkin_date) / 1.day).round end def to_s "Booking(#{user},#{hotel})" end end Tuesday, September 15, 2009
    79. class CreateBookings < ActiveRecord::Migration def self.up create_table :bookings do |t| t.references :user t.references :hotel t.datetime :checkin t.datetime :checkout t.string :credit_card t.string :credit_card_name t.integer :credit_card_expiry_month t.integer :credit_card_expiry_year t.boolean :smoking t.integer :beds t.timestamps end end def self.down drop_table :bookings end end Tuesday, September 15, 2009
    80. class CreateBookings < ActiveRecord::Migration def self.up create_table :bookings do |t| t.references :user t.references :hotel t.datetime :checkin t.datetime :checkout t.string :credit_card t.string :credit_card_name t.integer :credit_card_expiry_month t.integer :credit_card_expiry_year t.boolean :smoking t.integer :beds t.timestamps end end def self.down drop_table :bookings end end Tuesday, September 15, 2009
    81. class CreateBookings < ActiveRecord::Migration def self.up create_table :bookings do |t| t.references :user t.references :hotel t.datetime :checkin t.datetime :checkout t.string :credit_card t.string :credit_card_name t.integer :credit_card_expiry_month t.integer :credit_card_expiry_year t.boolean :smoking t.integer :beds t.timestamps end end def self.down drop_table :bookings end end Tuesday, September 15, 2009
    82. Tuesday, September 15, 2009
    83. “Eles servem mais de 23 milhões de visitantes/mês. A conversão resultou em 20 mil linhas de Ruby em vez de 125 mil linhas de Java e, mais importante, facilitou a dificuldade que tinham em manutenção. Eles também finalizaram a reescrita do sistema em apenas 3 meses com 4 desenvolvedores. Uma vez completo e otimizado, o site deles agora é mais rápido que antes.” http://www.railsonwave.com/railsonwave/2008/6/4/yellowpages-com-migrates-to-rails Tuesday, September 15, 2009
    84. “Eles servem mais de 23 milhões de visitantes/mês. A conversão resultou em 20 mil linhas de Ruby em vez de 125 mil linhas de Java e, mais importante, facilitou a dificuldade que tinham em manutenção. Eles também finalizaram a reescrita do sistema em apenas 3 meses com 4 desenvolvedores. Uma vez completo e otimizado, o site deles agora é mais rápido que antes.” http://www.railsonwave.com/railsonwave/2008/6/4/yellowpages-com-migrates-to-rails Tuesday, September 15, 2009
    85. “Eles servem mais de 23 milhões de visitantes/mês. A conversão resultou em 20 mil linhas de Ruby em vez de 125 mil linhas de Java e, mais importante, facilitou a dificuldade que tinham em manutenção. Eles também finalizaram a reescrita do sistema em apenas 3 meses com 4 desenvolvedores. Uma vez completo e otimizado, o site deles agora é mais rápido que antes.” http://www.railsonwave.com/railsonwave/2008/6/4/yellowpages-com-migrates-to-rails Tuesday, September 15, 2009
    86. “Eles servem mais de 23 milhões de visitantes/mês. A conversão resultou em 20 mil linhas de Ruby em vez de 125 mil linhas de Java e, mais importante, facilitou a dificuldade que tinham em manutenção. Eles também finalizaram a reescrita do sistema em apenas 3 meses com 4 desenvolvedores. Uma vez completo e otimizado, o site deles agora é mais rápido que antes.” http://www.railsonwave.com/railsonwave/2008/6/4/yellowpages-com-migrates-to-rails Tuesday, September 15, 2009
    87. Tuesday, September 15, 2009
    88. Tuesday, September 15, 2009
    89. Tuesday, September 15, 2009
    90. Tuesday, September 15, 2009
    91. Tuesday, September 15, 2009
    92. Tuesday, September 15, 2009
    93. Tuesday, September 15, 2009
    94. Tuesday, September 15, 2009
    95. Tuesday, September 15, 2009
    96. Tuesday, September 15, 2009
    97. Tuesday, September 15, 2009
    98. Tuesday, September 15, 2009
    99. Tuesday, September 15, 2009
    100. Tuesday, September 15, 2009
    101. Tuesday, September 15, 2009
    102. Tuesday, September 15, 2009
    103. Tuesday, September 15, 2009
    104. Tuesday, September 15, 2009
    105. Tuesday, September 15, 2009
    106. Tuesday, September 15, 2009
    107. Tuesday, September 15, 2009
    108. Tuesday, September 15, 2009
    109. Tuesday, September 15, 2009
    110. Tuesday, September 15, 2009
    111. Tuesday, September 15, 2009
    112. Tuesday, September 15, 2009
    113. Tuesday, September 15, 2009
    114. Tuesday, September 15, 2009
    115. Tuesday, September 15, 2009
    116. Tuesday, September 15, 2009
    117. Blaine Cook http://www.akitaonrails.com/2008/6/17/chatting-with-blaine-cook-twitter Tuesday, September 15, 2009
    118. Para colocar as coisas em perspectiva, o Friendster foi escrito em Java e eles mudaram para PHP. MySpace foi escrito em ColdFusion e eles mudaram para ASP.NET. Blaine Cook http://www.akitaonrails.com/2008/6/17/chatting-with-blaine-cook-twitter Tuesday, September 15, 2009
    119. Para colocar as coisas em perspectiva, o Friendster foi escrito em Java e eles mudaram para PHP. MySpace foi escrito em ColdFusion e eles mudaram para ASP.NET. Quando as pessoas caem em problemas de escalabilidade, normalmente acham que a linguagem é o problema, mas eu acho que isso raramente é a realidade. Blaine Cook http://www.akitaonrails.com/2008/6/17/chatting-with-blaine-cook-twitter Tuesday, September 15, 2009
    120. “O The New York Times usou Ruby on Rails para agregar, analizar e mostrar os resultados das eleições em quase tempo real em um de seus sites mais acessados de todos os tempos.” http://www.computerworld.com.au/article/268003/ruby_rails_rolls_into_enterprise?fp=16&fpid=1 Tuesday, September 15, 2009
    121. “O The New York Times usou Ruby on Rails para agregar, analizar e mostrar os resultados das eleições em quase tempo real em um de seus sites mais acessados de todos os tempos.” http://www.computerworld.com.au/article/268003/ruby_rails_rolls_into_enterprise?fp=16&fpid=1 Tuesday, September 15, 2009
    122. Tuesday, September 15, 2009
    123. x mais lento que C++ Tuesday, September 15, 2009
    124. x mais lento que C++ 0 50 100 150 200 Python 2 Ruby 1.9 Perl JRuby Python 3 PHP Ruby 1.8.6 Tuesday, September 15, 2009
    125. Tuesday, September 15, 2009
    126. Tuesday, September 15, 2009
    127. Tuesday, September 15, 2009
    128. Tuesday, September 15, 2009
    129. Tuesday, September 15, 2009
    130. Tuesday, September 15, 2009
    131. Tuesday, September 15, 2009
    132. Tuesday, September 15, 2009
    133. Tuesday, September 15, 2009
    134. Tuesday, September 15, 2009
    135. Robert C. Martin Tuesday, September 15, 2009
    136. Tuesday, September 15, 2009
    137. Tuesday, September 15, 2009
    138. Tuesday, September 15, 2009
    139. Tuesday, September 15, 2009
    140. Tuesday, September 15, 2009
    141. Tuesday, September 15, 2009
    142. Funcionalidade: Adição Para evitar erros bobos Como um péssimo matemático Eu quero saber como somar dois números Cenário: Adicionar dois números Dado que eu digitei 50 na calculadora E que eu digitei 70 na calculadora Quando eu aperto o botão de soma Então o resultado na calculadora deve ser 120 Tuesday, September 15, 2009
    143. Funcionalidade: Adição Para evitar erros bobos Como um péssimo matemático Eu quero saber como somar dois números Cenário: Adicionar dois números Dado que eu digitei 50 na calculadora E que eu digitei 70 na calculadora Quando eu aperto o botão de soma Então o resultado na calculadora deve ser 120 Tuesday, September 15, 2009
    144. Tuesday, September 15, 2009
    145. Tuesday, September 15, 2009
    146. Tuesday, September 15, 2009
    147. “Cowboy” Profissional Tuesday, September 15, 2009
    148. “Cowboy” Profissional 70.00 52.50 Produtividade 35.00 17.50 0 1 2 3 4 5 6 7 8 9 10 Tempo Tuesday, September 15, 2009
    149. “Cowboy” Profissional 70.00 52.50 Produtividade 35.00 17.50 0 1 2 3 4 5 6 7 8 9 10 Tempo Tuesday, September 15, 2009
    150. “Cowboy” Profissional 70.00 52.50 Produtividade 35.00 17.50 0 1 2 3 4 5 6 7 8 9 10 Tempo Tuesday, September 15, 2009
    151. “Cowboy” Profissional 70.00 52.50 Produtividade 35.00 17.50 0 1 2 3 4 5 6 7 8 9 10 Tempo Tuesday, September 15, 2009
    152. “Cowboy” Profissional 70.00 52.50 Produtividade 35.00 17.50 0 1 2 3 4 5 6 7 8 9 10 Tempo Tuesday, September 15, 2009
    153. “Cowboy” Profissional 70.00 52.50 Produtividade 35.00 17.50 0 1 2 3 4 5 6 7 8 9 10 Tempo Tuesday, September 15, 2009
    154. “Cowboy” Profissional 70.00 52.50 Produtividade 35.00 17.50 0 1 2 3 4 5 6 7 8 9 10 Tempo Tuesday, September 15, 2009
    155. “Cowboy” Profissional 70.00 52.50 Produtividade 35.00 17.50 0 1 2 3 4 5 6 7 8 9 10 Tempo Tuesday, September 15, 2009
    156. “Cowboy” Profissional 70.00 52.50 Produtividade 35.00 17.50 0 1 2 3 4 5 6 7 8 9 10 Tempo Tuesday, September 15, 2009
    157. “Cowboy” Profissional 70.00 52.50 Produtividade 35.00 17.50 0 1 2 3 4 5 6 7 8 9 10 Tempo Tuesday, September 15, 2009
    158. “Cowboy” Profissional 70.00 52.50 Produtividade 35.00 17.50 0 1 2 3 4 5 6 7 8 9 10 Tempo Tuesday, September 15, 2009
    159. “Cowboy” Profissional 70.00 52.50 Produtividade 35.00 17.50 0 1 2 3 4 5 6 7 8 9 10 Tempo Tuesday, September 15, 2009
    160. “Cowboy” Profissional 70.00 52.50 Produtividade 35.00 17.50 0 1 2 3 4 5 6 7 8 9 10 Tempo Tuesday, September 15, 2009
    161. “Cowboy” Profissional 70.00 52.50 Produtividade 35.00 17.50 0 1 2 3 4 5 6 7 8 9 10 Tempo Tuesday, September 15, 2009
    162. “Cowboy” Profissional 70.00 52.50 Produtividade 35.00 17.50 0 1 2 3 4 5 6 7 8 9 10 Tempo Tuesday, September 15, 2009
    163. “Cowboy” Profissional 70.00 52.50 Produtividade 35.00 17.50 0 1 2 3 4 5 6 7 8 9 10 Tempo Tuesday, September 15, 2009
    164. “Cowboy” Profissional 70.00 52.50 Produtividade 35.00 17.50 0 1 2 3 4 5 6 7 8 9 10 Tempo Tuesday, September 15, 2009
    165. “Cowboy” Profissional 70.00 52.50 Produtividade 35.00 17.50 0 1 2 3 4 5 6 7 8 9 10 Tempo Tuesday, September 15, 2009
    166. “Cowboy” Profissional 70.00 52.50 Produtividade 35.00 17.50 0 1 2 3 4 5 6 7 8 9 10 Tempo Tuesday, September 15, 2009
    167. “Cowboy” Profissional 70.00 52.50 Produtividade 35.00 17.50 0 1 2 3 4 5 6 7 8 9 10 Tempo Tuesday, September 15, 2009
    168. “Cowboy” Profissional 70.00 52.50 Produtividade 35.00 17.50 0 1 2 3 4 5 6 7 8 9 10 Tempo Tuesday, September 15, 2009
    169. Tuesday, September 15, 2009
    170. Tuesday, September 15, 2009
    171. Tuesday, September 15, 2009
    172. Tuesday, September 15, 2009
    173. Tuesday, September 15, 2009
    174. Tuesday, September 15, 2009
    175. Tuesday, September 15, 2009
    176. Tuesday, September 15, 2009
    177. Tuesday, September 15, 2009
    178. Tuesday, September 15, 2009
    179. Tuesday, September 15, 2009
    180. 2008 Tuesday, September 15, 2009
    181. 2008 Tuesday, September 15, 2009
    182. Tuesday, September 15, 2009
    183. Tuesday, September 15, 2009

    + Fabio AkitaFabio Akita, 2 months ago

    custom

    190 views, 0 favs, 0 embeds more stats

    Esta palestra é muito parecida com a que eu també more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 190
      • 190 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 6
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories