A Ferramenta Idealuma questão de perspectiva
A Ferramenta Idealuma questão de perspectiva
A Ferramenta Idealuma questão de perspectiva
RicardoValeriano@sr_valerianogithub.com/ricardovalerianoruby, java, javascript, ios
GuilhermeSilveira@guilhermecaelumgithub.com/caelum
Não é especificamentesobre Ruby =(
TemÇo
Não tem código =(
Mentira, tem maspouquinho =(
QMX, miseravão duma figa.
Java é D+
Java é D+
Java
JavaList<Categoria> categorias = newArrayList<Categoria>();for(Produto p : produtos)categorias.add(p.getCategoria());for(i...
JavaList<Categoria> categorias = newArrayList<Categoria>();for(Produto p : produtos)categorias.add(p.getCategoria());for(i...
Ruby é D+
Ruby é D+
Rubyunicas = []for produto in produtos  unless(unicas.include? produto.categoria)    unicas << produto.categoria  endend
Rubyunicas = []for produto in produtos  unless(unicas.include? produto.categoria)    unicas << produto.categoria  endend
Ruby
Rubyunicas = produtos.map{|p| p.categoria}.uniqtotal = produtos.inject(0){|tot, p| tot + p.valor}
Rubyunicas = produtos.map{|p| p.categoria}.uniqtotal = produtos.inject(0){|tot, p| tot + p.valor}
Rubyunicas = produtos.map(&:categoria).uniqtotal = produtos.inject(0){|tot, p| tot + p.valor}
GORDOY U NO USE THA API?
Domine sua api  (sugestão para o bom programador)
Rubyunicos = produtos.map(&:categoria).uniq
Rubyunicos = produtos.map(&:categoria).uniqtotal   = produtos.map(&:valor).inject(:+)
Domine sua api  (sugestão para o bom programador)
JavaSet categorias = new HashSet();for(Produto p : produtos) cat.add(p.categoria());double total = 0;for(Produto p : produ...
Rubyunicos = produtos.map(&:categoria).uniqtotal   = produtos.map(&:valor).inject(:+)
Rubyunicos = produtos.map(&:categoria).uniqtotal   = produtos.map(&:valor).inject(:+) Ruby é D+
Rubyunicos = produtos.map(&:categoria).uniq                                    e,                                  ttotal ...
Scalaprodutos.map(_.categoria).uniqueprodutos.map(_.valor).sum
Scalaprodutos.map(_.categoria).uniqueprodutos.map(_.valor).sum                             !      ais                     ...
Scalaclass Compra() {  lazy val produtos = Produtos.all}
Scalaclass Compra() {  lazy val produtos = Produtos.all}           BONUS ROUND: public lazy!
Scalaclass Compra() {  lazy val produtos = Produtos.all}           BONUS ROUND: public lazy!class Compra(produtos:List[Pro...
Scalaclass Compra() {  lazy val produtos = Produtos.all}           BONUS ROUND: public lazy!class Compra(produtos:List[Pro...
Scalaclass Compra() {  lazy val produtos = Produtos.all}           BONUS ROUND: public lazy!class Compra(produtos:List[Pro...
Scala rocks
Scala rocks      #fato
Scala rocks      #fatoObrigado
Scala rocks      #fatoObrigado     The End.
Scala rocks      #fatoObrigado     The End.
RicardoValeriano@sr_valerianogithub.com/ricardovalerianoruby, java, javascript, ios
O que buscamos em uma  linguagem?Poder o que posso fazer?Expressividade como posso fazer?
O que buscamos em uma  linguagem?Poder o que posso fazer?Expressividade como posso fazer?
O que expressa mais,de maneira mais breve?
PORTUGUÊS (PT-BR)
Usei o cartão de crédito daminha mãe pois estavasem dinheiro.
Usei o cartão de crédito daminha mãe pois estava as                         absem dinheiro.          íls                  ...
INGLÊS (EN-US)
I’ve used my mom’s creditcard ‘cause I had nomoney.
I’ve used my mom’s creditcard ‘cause I had no      as                       abmoney.               íl   s                 ...
MANÊS?
Súmemo jão. Mó perreio!Utilizei do cartão dasenhora minha mãe, certo?Prá adquirir uns bens, nahumildade mêmo, táligado?
COREANO
A PRIMEIRA VISTA, QUAL VOCÊ PREFERE?
돈 없어서 엄아 카드    썼다.
돈 없어서 엄아 카드 <              < <    썼다.    AL                 s               M ba              R a             O íl        ...
Expressividade           엄카 썼다.
Expressividade           엄카 썼다.         s                         a                        b íd o                       a ...
Coreanomenos palavrasmais expressividademais poder
Coreanomenos palavrasmais expressividademais poder
LET’S USE LEARNKOREAN NOOOOOW!
안녕~ 집에 갈래?
‘A medida que diminuem  as palavras, aumenta a           ambiguidade’            José Valim - GuruSP
Então... o que queremos  afinal?MAIS poderMAIS expressividadeMAIS concisão
Então... o que queremos  afinal?MAIS poderMAIS expressividadeMAIS concisão
‘you can accomplish more   in smaller yet readable                     code’                 Matz (on Ruby)
Não é só escrever           menos
Talvez o código maissimples, seja melhor.
‘Simplicity Aint Easy’             Stuart Halloway
Contexto   Poder,   Expressividade,   Concisãosão contextuais
‘humans requiremore sophisticated tools            to program’                   Matz
Quem acha a sualinguagem perfeita?
As ferramentasmudam com otempo, elas evoluem.
Linguagens eescolhas possuemdesvantagens. #fato
(re) Conheça bem asdesvantagens.  (sugestão para o bom programador)
Para evitar abusardelas.  (sugestão para o bom programador)
MySQL   as queueNeo4J   as crud storage
O mais importanteem um projeto éescrever códigobonito.
O mais importanteem um projeto éescrever códigobom.
?
O que nãoqueremos?
      def _read_attribute(attr_name)        attr_name = attr_name.to_s        attr_name = self.class.primary_key if attr_n...
      def _read_attribute(attr_name)        attr_name = attr_name.to_s        attr_name = self.class.primary_key if attr_n...
for_attribute(attr_na  agora sim? fonte mil
23...      def _read_attribute(attr_name)        attr_name = attr_name.to_s        attr_name = self.class.primary_key if a...
23...      def _read_attribute(attr_name)        attr_name = attr_name.to_s        attr_name = self.class.primary_key if a...
mas e se...                       23...      def _read_attribute(attr_name)        attr_name = attr_name.to_s        attr_...
mas eese...                                mas se...                         23...      def _read_attribute(attr_name)    ...
mas eese...                                mas ese...                        23...                                 mas se....
mas eese...                                mas ese...                        23...                                 mas ese...
mas eese...                                mas ese...                        23...                                 mas ese...
mas eese...                                mas ese...                        23...                                 mas ese...
mas eese...                                mas ese...                        23...                                 mas ese...
Conciso?
Muito if?
Ruby?      C++?        Java?   Scala?Muito if?Basic?C#?       JavaScript?
Ruby?      C++?        Java?   Scala?Muito if?Basic?C#?       JavaScript? A nova linguagem do mês?
NovaLinguagem
NovaLinguagemnovo uso idiomáticonovo mindset
LET’S USE SCALAFOR ALL THE THINGS!
Para evitar abusardas desvantagens.  (sugestão para o bom programador)
scala   para crud
NovaLinguagemnovo uso idiomáticonovo mindset
NovaLinguagemnovo uso idiomáticonovo mindsetmesmos erros
‘o teu “overuse” é muito bomprá você mas a desgraça dos                      outros’                       Jay Fields
Quem está hámais de 2 anos nomesmo projeto?
‘pfvr néam? amanhã você              vai sair do                projeto!’              Random Scumbag
Seja o principalcrítico de suasescolhas  (sugestão para o bom programador)
‘Quando quebra o projeto em vários, fica mais fácil de ver que para uma                    parte do projeto                ...
require "sinatra"require "json"                             interestieSequel.connect ENV["DATABASE_URL"]require "interest"...
require "sinatra"require "json"                             interestieSequel.connect ENV["DATABASE_URL"]require "interest"...
Projetos pequenos   múltiplos projetos
Quando não usar o Rails?Quem melhor que o José Valim para dizer?
Não escolha semprea sua linguagempreferida.  (sugestão para o bom programador)
Caelum Online(online.caelum.com.br)
Baseado nisso
Baseado nisso      alunos    java + vraptor
Baseado nissoalumni.caelum.com.br      RoR                alunos                       java + vraptor
Baseado nisso  alumni.caelum.com.br         RoR               alunos                         java + vraptorondetrabalhar.c...
Baseado nisso  alumni.caelum.com.br         RoR               alunos                         java + vraptor               ...
Baseado nisso  alumni.caelum.com.br         RoR               alunos                         java + vraptor               ...
Baseado nisso  alumni.caelum.com.br            RoR            alunos                         java + vraptor               ...
Baseado nisso  alumni.caelum.com.br            RoR                 alunos                              java + vraptor     ...
Baseado nisso  alumni.caelum.com.br            RoR                 alunos                              java + vraptor     ...
Baseado nisso  alumni.caelum.com.br            RoR                 alunos                              java + vraptor     ...
Baseado nisso  alumni.caelum.com.br            RoR                 alunos                              java + vraptor     ...
Baseado nisso  alumni.caelum.com.br            RoR                 alunos                              java + vraptor     ...
Baseado nisso  alumni.caelum.com.br            RoR                 alunos                              java + vraptor     ...
Baseado nisso  alumni.caelum.com.br            RoR                 alunos                              java + vraptor     ...
Baseado nisso  alumni.caelum.com.br            RoR                 alunos                              java + vraptor     ...
Baseado nisso  alumni.caelum.com.br            RoR            alunos                         java + vraptor               ...
Baseado nisso  alumni.caelum.com.br            RoR             alunos                          java + vraptor             ...
Baseado nisso  alumni.caelum.com.br            RoR             alunos                          java + vraptor             ...
Baseado nisso  alumni.caelum.com.br            RoR               alunos                            java + vraptor         ...
Baseado nisso  alumni.caelum.com.br            RoR               alunos                            java + vraptor         ...
Baseado nisso  alumni.caelum.com.br            RoR               alunos                            java + vraptor         ...
Baseado nisso  alumni.caelum.com.br                                         métricas            RoR               alunos  ...
Baseado nisso  alumni.caelum.com.br                                         métricas            RoR               alunos  ...
mysql                      Baseado nisso   alumni.caelum.com.br                 mysql                       métricas      ...
mysql                      Baseado nisso   alumni.caelum.com.br                 mysql                       métricas      ...
mysql                        Baseado nisso   alumni.caelum.com.br                   mysql                       métricas  ...
mysql                        Baseado nisso   alumni.caelum.com.br                              mysql                      ...
mysql                        Baseado nisso   alumni.caelum.com.br                              mysql                      ...
mysql                        Baseado nisso   alumni.caelum.com.br                              mysql                      ...
mysql                                 Reparou?   alumni.caelum.com.br                              mysql                  ...
mysql                                 Reparou?   alumni.caelum.com.br                              mysql                  ...
Domine sua linguagem   (sugestão para o bom programador)
Domine sua linguagemapi/framework a pontode criticar os pontosnegativos   (sugestão para o bom programador)
Domine outraslinguagens...TANTO quanto.   (sugestão para o bom programador)
Nenhuma linguagemou ([framework])é ruim  (sugestão para o bom programador)
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
Nenhuma linguagemou ([framework])é ruim, salvo brain f*ck   (sugestão para o bom programador)
Todas são marotas * Contexto Pessoa Momento              * salvo brain f#ck
Domine suas escolhaspara não ser dominadopor elas.   (sugestão para o bom programador)         @sr_valeriano
Domine suas escolhaspara não ser dominadopor elas.   (sugestão para o bom programador)         Obrigado!         @sr_valer...
A ferramenta ideal: uma questão de perspectiva.
A ferramenta ideal: uma questão de perspectiva.
A ferramenta ideal: uma questão de perspectiva.
A ferramenta ideal: uma questão de perspectiva.
A ferramenta ideal: uma questão de perspectiva.
A ferramenta ideal: uma questão de perspectiva.
A ferramenta ideal: uma questão de perspectiva.
Próximos SlideShares
Carregando em…5
×

A ferramenta ideal: uma questão de perspectiva.

298 visualizações

Publicada em

Como aproveitar o que a sua ferramenta preferida tem de melhor, sem ter que lidar com o que ela tem de ruim? Esse talk é sobre uma experiência vivida durante o desenvolvimento de uma plataforma de ensino online para qual uma das soluções que se provou mais efetiva foi o uso não de uma única linguagem ou framework. Mas sim de tecnologias específicas para problemas específicos e pontuais. Um ponto importante e crítico dessa abordagem é a integração de todos esses micro sistemas.

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
298
No SlideShare
0
A partir de incorporações
0
Número de incorporações
7
Ações
Compartilhamentos
0
Downloads
1
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Definir o que &amp;#xE9; preciso: exemplo do netflix, a n&amp;#xE3;o arquitetura.\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Ent&amp;#xE3;o o que voc&amp;#xEA; recomenda?\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • A ferramenta ideal: uma questão de perspectiva.

    1. 1. A Ferramenta Idealuma questão de perspectiva
    2. 2. A Ferramenta Idealuma questão de perspectiva
    3. 3. A Ferramenta Idealuma questão de perspectiva
    4. 4. RicardoValeriano@sr_valerianogithub.com/ricardovalerianoruby, java, javascript, ios
    5. 5. GuilhermeSilveira@guilhermecaelumgithub.com/caelum
    6. 6. Não é especificamentesobre Ruby =(
    7. 7. TemÇo
    8. 8. Não tem código =(
    9. 9. Mentira, tem maspouquinho =(
    10. 10. QMX, miseravão duma figa.
    11. 11. Java é D+
    12. 12. Java é D+
    13. 13. Java
    14. 14. JavaList<Categoria> categorias = newArrayList<Categoria>();for(Produto p : produtos)categorias.add(p.getCategoria());for(int i=0;i<categorias.size();i++) { Categoria c = categorias.get(i); if(categorias.lastIndexOf(c)!=i) { categorias.remove(c); i--; }}double total = 0;for(Produto p : produtos) { total += p.getValor();}
    15. 15. JavaList<Categoria> categorias = newArrayList<Categoria>();for(Produto p : produtos)categorias.add(p.getCategoria());for(int i=0;i<categorias.size();i++) { Categoria c = categorias.get(i); e, t if(categorias.lastIndexOf(c)!=i) { n ! categorias.remove(c); i--; e s m ai }} l a mdouble total = 0; e e r dfor(Produto p : produtos) {} total += p.getValor(); é
    16. 16. Ruby é D+
    17. 17. Ruby é D+
    18. 18. Rubyunicas = []for produto in produtos unless(unicas.include? produto.categoria) unicas << produto.categoria endend
    19. 19. Rubyunicas = []for produto in produtos unless(unicas.include? produto.categoria) unicas << produto.categoria endend
    20. 20. Ruby
    21. 21. Rubyunicas = produtos.map{|p| p.categoria}.uniqtotal = produtos.inject(0){|tot, p| tot + p.valor}
    22. 22. Rubyunicas = produtos.map{|p| p.categoria}.uniqtotal = produtos.inject(0){|tot, p| tot + p.valor}
    23. 23. Rubyunicas = produtos.map(&:categoria).uniqtotal = produtos.inject(0){|tot, p| tot + p.valor}
    24. 24. GORDOY U NO USE THA API?
    25. 25. Domine sua api (sugestão para o bom programador)
    26. 26. Rubyunicos = produtos.map(&:categoria).uniq
    27. 27. Rubyunicos = produtos.map(&:categoria).uniqtotal = produtos.map(&:valor).inject(:+)
    28. 28. Domine sua api (sugestão para o bom programador)
    29. 29. JavaSet categorias = new HashSet();for(Produto p : produtos) cat.add(p.categoria());double total = 0;for(Produto p : produtos) total += p.valor();
    30. 30. Rubyunicos = produtos.map(&:categoria).uniqtotal = produtos.map(&:valor).inject(:+)
    31. 31. Rubyunicos = produtos.map(&:categoria).uniqtotal = produtos.map(&:valor).inject(:+) Ruby é D+
    32. 32. Rubyunicos = produtos.map(&:categoria).uniq e, ttotal = produtos.map(&:valor).inject(:+) n ! e s lm ai a m e e Ruby é D+ r d é
    33. 33. Scalaprodutos.map(_.categoria).uniqueprodutos.map(_.valor).sum
    34. 34. Scalaprodutos.map(_.categoria).uniqueprodutos.map(_.valor).sum ! ais H á m e m t E
    35. 35. Scalaclass Compra() { lazy val produtos = Produtos.all}
    36. 36. Scalaclass Compra() { lazy val produtos = Produtos.all} BONUS ROUND: public lazy!
    37. 37. Scalaclass Compra() { lazy val produtos = Produtos.all} BONUS ROUND: public lazy!class Compra(produtos:List[Produto]) {}
    38. 38. Scalaclass Compra() { lazy val produtos = Produtos.all} BONUS ROUND: public lazy!class Compra(produtos:List[Produto]) {}class Compra(val produtos:List[Produto]) {} BONUS ROUND: IMUTAVEL!
    39. 39. Scalaclass Compra() { lazy val produtos = Produtos.all} BONUS ROUND: public lazy!class Compra(produtos:List[Produto]) {}class Compra(val produtos:List[Produto]) {} BONUS ROUND: IMUTAVEL!class Compra(var produtos:List[Produto]) {} BONUS ROUND: public vars!
    40. 40. Scala rocks
    41. 41. Scala rocks #fato
    42. 42. Scala rocks #fatoObrigado
    43. 43. Scala rocks #fatoObrigado The End.
    44. 44. Scala rocks #fatoObrigado The End.
    45. 45. RicardoValeriano@sr_valerianogithub.com/ricardovalerianoruby, java, javascript, ios
    46. 46. O que buscamos em uma linguagem?Poder o que posso fazer?Expressividade como posso fazer?
    47. 47. O que buscamos em uma linguagem?Poder o que posso fazer?Expressividade como posso fazer?
    48. 48. O que expressa mais,de maneira mais breve?
    49. 49. PORTUGUÊS (PT-BR)
    50. 50. Usei o cartão de crédito daminha mãe pois estavasem dinheiro.
    51. 51. Usei o cartão de crédito daminha mãe pois estava as absem dinheiro. íls 20 +
    52. 52. INGLÊS (EN-US)
    53. 53. I’ve used my mom’s creditcard ‘cause I had nomoney.
    54. 54. I’ve used my mom’s creditcard ‘cause I had no as abmoney. íl s 17 +
    55. 55. MANÊS?
    56. 56. Súmemo jão. Mó perreio!Utilizei do cartão dasenhora minha mãe, certo?Prá adquirir uns bens, nahumildade mêmo, táligado?
    57. 57. COREANO
    58. 58. A PRIMEIRA VISTA, QUAL VOCÊ PREFERE?
    59. 59. 돈 없어서 엄아 카드 썼다.
    60. 60. 돈 없어서 엄아 카드 < < < 썼다. AL s M ba R a O íl F s > > 2 > 1
    61. 61. Expressividade 엄카 썼다.
    62. 62. Expressividade 엄카 썼다. s a b íd o a u s íl r 4 em s e
    63. 63. Coreanomenos palavrasmais expressividademais poder
    64. 64. Coreanomenos palavrasmais expressividademais poder
    65. 65. LET’S USE LEARNKOREAN NOOOOOW!
    66. 66. 안녕~ 집에 갈래?
    67. 67. ‘A medida que diminuem as palavras, aumenta a ambiguidade’ José Valim - GuruSP
    68. 68. Então... o que queremos afinal?MAIS poderMAIS expressividadeMAIS concisão
    69. 69. Então... o que queremos afinal?MAIS poderMAIS expressividadeMAIS concisão
    70. 70. ‘you can accomplish more in smaller yet readable code’ Matz (on Ruby)
    71. 71. Não é só escrever menos
    72. 72. Talvez o código maissimples, seja melhor.
    73. 73. ‘Simplicity Aint Easy’ Stuart Halloway
    74. 74. Contexto Poder, Expressividade, Concisãosão contextuais
    75. 75. ‘humans requiremore sophisticated tools to program’ Matz
    76. 76. Quem acha a sualinguagem perfeita?
    77. 77. As ferramentasmudam com otempo, elas evoluem.
    78. 78. Linguagens eescolhas possuemdesvantagens. #fato
    79. 79. (re) Conheça bem asdesvantagens. (sugestão para o bom programador)
    80. 80. Para evitar abusardelas. (sugestão para o bom programador)
    81. 81. MySQL as queueNeo4J as crud storage
    82. 82. O mais importanteem um projeto éescrever códigobonito.
    83. 83. O mais importanteem um projeto éescrever códigobom.
    84. 84. ?
    85. 85. O que nãoqueremos?
    86. 86.       def _read_attribute(attr_name)        attr_name = attr_name.to_s        attr_name = self.class.primary_key if attr_name == id        value = @attributes[attr_name]        unless value.nil?          if column = column_for_attribute(attr_name)            if unserializable_attribute?(attr_name, column)              unserialize_attribute(attr_name)            else              column.type_cast(value)            end          else            value          end        end      end fonte pequena?
    87. 87.       def _read_attribute(attr_name)        attr_name = attr_name.to_s        attr_name = self.class.primary_key if attr_name == id        value = @attributes[attr_name]        unless value.nil?          if column = column_for_attribute(attr_name)            if unserializable_attribute?(attr_name, column)              unserialize_attribute(attr_name)            else              column.type_cast(value)            end          else            value          end        end      end agora sim? fonte 16
    88. 88. for_attribute(attr_na agora sim? fonte mil
    89. 89. 23...      def _read_attribute(attr_name)        attr_name = attr_name.to_s        attr_name = self.class.primary_key if attr_name == id        value = @attributes[attr_name]        unless value.nil?          if column = column_for_attribute(attr_name)            if unserializable_attribute?(attr_name, column)              unserialize_attribute(attr_name)            else              column.type_cast(value)            end          else            value          end        end      end
    90. 90. 23...      def _read_attribute(attr_name)        attr_name = attr_name.to_s        attr_name = self.class.primary_key if attr_name == id        value = @attributes[attr_name]        unless value.nil?          if column = column_for_attribute(attr_name)            if unserializable_attribute?(attr_name, column)              unserialize_attribute(attr_name)            else              column.type_cast(value)            end          else            value          end        end      end
    91. 91. mas e se... 23...      def _read_attribute(attr_name)        attr_name = attr_name.to_s        attr_name = self.class.primary_key if attr_name == id        value = @attributes[attr_name]        unless value.nil?          if column = column_for_attribute(attr_name)            if unserializable_attribute?(attr_name, column)              unserialize_attribute(attr_name)            else              column.type_cast(value)            end          else            value          end        end      end
    92. 92. mas eese... mas se... 23...      def _read_attribute(attr_name)        attr_name = attr_name.to_s        attr_name = self.class.primary_key if attr_name == id        value = @attributes[attr_name]        unless value.nil?          if column = column_for_attribute(attr_name)            if unserializable_attribute?(attr_name, column)              unserialize_attribute(attr_name)            else              column.type_cast(value)            end          else            value          end        end      end
    93. 93. mas eese... mas ese... 23... mas se...      def _read_attribute(attr_name)        attr_name = attr_name.to_s        attr_name = self.class.primary_key if attr_name == id        value = @attributes[attr_name]        unless value.nil?          if column = column_for_attribute(attr_name)            if unserializable_attribute?(attr_name, column)              unserialize_attribute(attr_name)            else              column.type_cast(value)            end          else            value          end        end      end
    94. 94. mas eese... mas ese... 23... mas ese... mas se...      def _read_attribute(attr_name)        attr_name = attr_name.to_s        attr_name = self.class.primary_key if attr_name == id        value = @attributes[attr_name]        unless value.nil?          if column = column_for_attribute(attr_name)            if unserializable_attribute?(attr_name, column)              unserialize_attribute(attr_name)            else              column.type_cast(value)            end          else            value          end        end      end
    95. 95. mas eese... mas ese... 23... mas ese... mas ese... mas se...      def _read_attribute(attr_name)        attr_name = attr_name.to_s        attr_name = self.class.primary_key if attr_name == id        value = @attributes[attr_name]        unless value.nil?          if column = column_for_attribute(attr_name)            if unserializable_attribute?(attr_name, column)              unserialize_attribute(attr_name)            else              column.type_cast(value)            end          else            value          end        end      end
    96. 96. mas eese... mas ese... 23... mas ese... mas ese... mas se...      def _read_attribute(attr_name)        attr_name = attr_name.to_s        attr_name = self.class.primary_key if attr_name == id        value = @attributes[attr_name]        unless value.nil?          if column = column_for_attribute(attr_name)            if unserializable_attribute?(attr_name, column)              unserialize_attribute(attr_name)            else              column.type_cast(value)            end          else            value          end        end      end
    97. 97. mas eese... mas ese... 23... mas ese... mas ese... mas ese... mas se...      def _read_attribute(attr_name)        attr_name = attr_name.to_s        attr_name = self.class.primary_key if attr_name == id        value = @attributes[attr_name]        unless value.nil?          if column = column_for_attribute(attr_name)            if unserializable_attribute?(attr_name, column)              unserialize_attribute(attr_name)            else              column.type_cast(value)            end          else            value          end        end      end
    98. 98. Conciso?
    99. 99. Muito if?
    100. 100. Ruby? C++? Java? Scala?Muito if?Basic?C#? JavaScript?
    101. 101. Ruby? C++? Java? Scala?Muito if?Basic?C#? JavaScript? A nova linguagem do mês?
    102. 102. NovaLinguagem
    103. 103. NovaLinguagemnovo uso idiomáticonovo mindset
    104. 104. LET’S USE SCALAFOR ALL THE THINGS!
    105. 105. Para evitar abusardas desvantagens. (sugestão para o bom programador)
    106. 106. scala para crud
    107. 107. NovaLinguagemnovo uso idiomáticonovo mindset
    108. 108. NovaLinguagemnovo uso idiomáticonovo mindsetmesmos erros
    109. 109. ‘o teu “overuse” é muito bomprá você mas a desgraça dos outros’ Jay Fields
    110. 110. Quem está hámais de 2 anos nomesmo projeto?
    111. 111. ‘pfvr néam? amanhã você vai sair do projeto!’ Random Scumbag
    112. 112. Seja o principalcrítico de suasescolhas (sugestão para o bom programador)
    113. 113. ‘Quando quebra o projeto em vários, fica mais fácil de ver que para uma parte do projeto uma linguagem é mais interessante’ Alberto (oderski) Souza
    114. 114. require "sinatra"require "json" interestieSequel.connect ENV["DATABASE_URL"]require "interest"get "/" do interest = Interest.new params[:interest] interest.save ? ok_response params : error_response paramsenddef ok_response(params) respond_with paramsenddef error_response(params) respond_with(params, { errors:["unable to set up interest"] })enddef respond_with(params, json_data = {ok:"ok"}) "#{params["callback"]}(#{json_data.to_json})"end
    115. 115. require "sinatra"require "json" interestieSequel.connect ENV["DATABASE_URL"]require "interest"get "/" do interest = Interest.new params[:interest] interest.save ? ok_response params : error_response paramsenddef ok_response(params) respond_with paramsenddef error_response(params) respond_with(params, { errors:["unable to set up interest"] })enddef respond_with(params, json_data = {ok:"ok"}) "#{params["callback"]}(#{json_data.to_json})"end
    116. 116. Projetos pequenos múltiplos projetos
    117. 117. Quando não usar o Rails?Quem melhor que o José Valim para dizer?
    118. 118. Não escolha semprea sua linguagempreferida. (sugestão para o bom programador)
    119. 119. Caelum Online(online.caelum.com.br)
    120. 120. Baseado nisso
    121. 121. Baseado nisso alunos java + vraptor
    122. 122. Baseado nissoalumni.caelum.com.br RoR alunos java + vraptor
    123. 123. Baseado nisso alumni.caelum.com.br RoR alunos java + vraptorondetrabalhar.com ruby
    124. 124. Baseado nisso alumni.caelum.com.br RoR alunos java + vraptor gnarusondetrabalhar.com scala + vraptor ruby
    125. 125. Baseado nisso alumni.caelum.com.br RoR alunos java + vraptor gnarusondetrabalhar.com scala + vraptor ruby exercícios RoR
    126. 126. Baseado nisso alumni.caelum.com.br RoR alunos java + vraptor gnarusondetrabalhar.com scala + vraptor ruby exercícios RoR+ 1 projeto scala + play
    127. 127. Baseado nisso alumni.caelum.com.br RoR alunos java + vraptor gnarusondetrabalhar.com scala + vraptor ruby exercícios RoR+ 1 projeto scala + play mountable engine RoR
    128. 128. Baseado nisso alumni.caelum.com.br RoR alunos java + vraptor gnarusondetrabalhar.com scala + vraptor ruby exercícios RoR+ 1 projeto scala + play mountable engine + 1 ‘página’ RoR js
    129. 129. Baseado nisso alumni.caelum.com.br RoR alunos java + vraptor gnarusondetrabalhar.com scala + vraptor ruby analisador 1 sinatra exercícios RoR+ 1 projeto scala + play mountable engine + 1 ‘página’ RoR js
    130. 130. Baseado nisso alumni.caelum.com.br RoR alunos java + vraptor gnarusondetrabalhar.com scala + vraptor ruby pagamentos java analisador 1 sinatra exercícios RoR+ 1 projeto scala + play mountable engine + 1 ‘página’ RoR js
    131. 131. Baseado nisso alumni.caelum.com.br RoR alunos java + vraptor gnarusondetrabalhar.com scala + vraptor ruby pagamentos java analisador 1 sinatra exercícios RoR+ 1 projeto scala + play mountable engine + 1 ‘página’ RoR + 6 projetos js RoR
    132. 132. Baseado nisso alumni.caelum.com.br RoR alunos java + vraptor gnarusondetrabalhar.com scala + vraptor ruby pagamentos java analisador 1 sinatra exercícios RoR analisador 2+ 1 projeto java scala + play mountable engine + 1 ‘página’ RoR + 6 projetos js RoR
    133. 133. Baseado nisso alumni.caelum.com.br RoR alunos java + vraptor gnarusondetrabalhar.com scala + vraptor ruby pagamentos java analisador 1 sinatra exercícios RoR analisador 2+ 1 projeto java scala + play mountable engine + 1 ‘página’ RoR + 6 projetos js RoR
    134. 134. Baseado nisso alumni.caelum.com.br RoR alunos java + vraptor gnarusondetrabalhar.com scala + vraptor rubycasa do código pagamentos java java + RoR analisador 1 sinatra exercícios RoR analisador 2+ 1 projeto java scala + play mountable engine + 1 ‘página’ RoR + 6 projetos js RoR
    135. 135. Baseado nisso alumni.caelum.com.br RoR alunos java + vraptor gnarusondetrabalhar.com scala + vraptor rubycasa do código pagamentos java java + RoR analisador 1 sinatra exercícios RoR analisador 2+ 1 projeto java scala + play mountable engine + 1 ‘página’ aws tickets RoR + 6 projetos js RoR RoR
    136. 136. Baseado nisso alumni.caelum.com.br RoR alunos java + vraptor gnarusondetrabalhar.com scala + vraptor rubycasa do código pagamentos java java + RoR interestie analisador 1 sinatra sinatra + sequel exercícios RoR analisador 2+ 1 projeto java scala + play mountable engine + 1 ‘página’ aws tickets RoR + 6 projetos js RoR RoR
    137. 137. Baseado nisso alumni.caelum.com.br RoR alunos java + vraptor gnarusondetrabalhar.com scala + vraptor rubycasa do código pagamentos java java + RoR interestie analisador 1 sinatra sinatra + sequel exercícios RoR analisador 2+ 1 projeto java scala + play mountable engine + 1 ‘página’ aws tickets RoR + 6 projetos js RoR RoR
    138. 138. Baseado nisso alumni.caelum.com.br RoR alunos java + vraptor gnarusondetrabalhar.com scala + vraptor rubycasa do código pagamentos java java + RoR interestie analisador 1 + projetos sinatra + sequel sinatra sinatra + sequel exercícios RoR analisador 2+ 1 projeto java scala + play mountable engine + 1 ‘página’ aws tickets RoR + 6 projetos js RoR RoR
    139. 139. Baseado nisso alumni.caelum.com.br RoR alunos java + vraptor gnarus sugestondetrabalhar.com scala + vraptor java rubycasa do código pagamentos java java + RoR interestie analisador 1 + projetos sinatra + sequel sinatra sinatra + sequel exercícios RoR analisador 2+ 1 projeto java scala + play mountable engine + 1 ‘página’ aws tickets RoR + 6 projetos js RoR RoR
    140. 140. Baseado nisso alumni.caelum.com.br RoR alunos java + vraptor gnarus sugestondetrabalhar.com scala + vraptor java ruby promocasa do código pagamentos RoR java java + RoR interestie analisador 1 + projetos sinatra + sequel sinatra sinatra + sequel exercícios RoR analisador 2+ 1 projeto java scala + play mountable engine + 1 ‘página’ aws tickets RoR + 6 projetos js RoR RoR
    141. 141. Baseado nisso alumni.caelum.com.br métricas RoR alunos java + octave java + vraptor gnarus sugestondetrabalhar.com scala + vraptor java ruby promocasa do código pagamentos RoR java java + RoR interestie analisador 1 + projetos sinatra + sequel sinatra sinatra + sequel exercícios RoR analisador 2+ 1 projeto java scala + play mountable engine + 1 ‘página’ aws tickets RoR + 6 projetos js RoR RoR
    142. 142. Baseado nisso alumni.caelum.com.br métricas RoR alunos java + octave java + vraptor gnarus sugestondetrabalhar.com scala + vraptor java ruby promocasa do código pagamentos RoR java java + RoR interestie analisador 1 + projetos sinatra + sequel sinatra sinatra + sequel exercícios RoR analisador 2+ 1 projeto java scala + play mountable engine + 1 ‘página’ aws tickets RoR + 6 projetos js RoR RoR
    143. 143. mysql Baseado nisso alumni.caelum.com.br mysql métricas RoR alunos java + octave java + vraptor mysql gnarus sugestondetrabalhar.com scala + vraptor java ruby mysql promomysqlcasa do código pagamentos RoR java java + RoR interestie analisador 1 + projetos sinatra + sequel sinatra sinatra + sequel exercícios RoR analisador 2+ 1 projeto java scala + play mountable engine + 1 ‘página’ aws tickets RoR + 6 projetos js RoR RoR
    144. 144. mysql Baseado nisso alumni.caelum.com.br mysql métricas RoR alunos java + octave redis java + vraptor mysql gnarus sugestondetrabalhar.com scala + vraptor java ruby mysql promomysqlcasa do código pagamentos RoR java redis java + RoR interestie analisador 1 + projetos sinatra + sequel sinatra sinatra + sequel exercícios RoR analisador 2+ 1 projeto java scala + play mountable engine + 1 ‘página’ aws tickets RoR + 6 projetos js RoR RoR
    145. 145. mysql Baseado nisso alumni.caelum.com.br mysql métricas RoR alunos java + octave redis java + vraptorsolr mysql gnarus sugestondetrabalhar.com scala + vraptor java ruby mysql promomysqlcasa do código pagamentos RoR java redis java + RoR interestie analisador 1 + projetos sinatra + sequel sinatra sinatra + sequel exercícios RoR analisador 2+ 1 projeto java scala + play mountable engine + 1 ‘página’ aws tickets RoR + 6 projetos js RoR RoR
    146. 146. mysql Baseado nisso alumni.caelum.com.br mysql métricas RoR alunos java + octave redis java + vraptorsolr mysql gnarus sugestondetrabalhar.com scala + vraptor java ruby postgresql mysql promomysqlcasa do código pagamentos RoR java redis java + RoR postgresql interestie analisador 1 + projetos sinatra + sequel sinatra sinatra + sequel exercícios postgresql RoR analisador 2 postgresql+ 1 projeto postgresql java scala + play mountable engine + 1 ‘página’ aws tickets RoR + 6 projetos js postgresql RoR RoR postgresql
    147. 147. mysql Baseado nisso alumni.caelum.com.br mysql métricas RoR alunos java + octave redis java + vraptorsolr mysql gnarus sugestondetrabalhar.com scala + vraptor java ruby postgresql mysql promomysqlcasa do código pagamentos RoR java redis java + RoR postgresql interestie analisador 1 + projetos sinatra + sequel sinatra sinatra + sequel exercícios postgresql RoR analisador 2 postgresql+ 1 projeto postgresql java scala + play mountable engine + 1 ‘página’ aws tickets RoR + 6 projetos js postgresql RoR RoR postgresql
    148. 148. mysql Baseado nisso alumni.caelum.com.br mysql métricas RoR alunos java + octave redis java + vraptorsolr mysql gnarus sugestondetrabalhar.com java + vraptor java ruby postgresql mysql promomysqlcasa do código pagamentos RoR java redis java + RoR postgresql interestie analisador 1 + projetos sinatra + sequel sinatra sinatra + sequel exercícios postgresql RoR analisador 2 postgresql+ 1 projeto postgresql java scala + play mountable engine + 1 ‘página’ aws tickets RoR + 6 projetos js postgresql RoR RoR postgresql
    149. 149. mysql Reparou? alumni.caelum.com.br mysql métricas RoR alunos java + octave redis java + vraptorsolr mysql gnarus sugestondetrabalhar.com java + vraptor java ruby postgresql mysql promomysqlcasa do código pagamentos RoR java redis java + RoR postgresql interestie analisador 1 + projetos sinatra + sequel sinatra sinatra + sequel exercícios postgresql RoR analisador 2 postgresql+ 1 projeto postgresql java scala + play mountable engine + 1 ‘página’ aws tickets RoR + 6 projetos js postgresql RoR RoR postgresql
    150. 150. mysql Reparou? alumni.caelum.com.br mysql métricas RoR alunos java + octave redis java + vraptorsolr mysql gnarus sugestondetrabalhar.com java + vraptor java ruby postgresql mysql promomysqlcasa do código pagamentos RoR java redis java + RoR postgresql interestie analisador 1 + projetos sinatra + sequel sinatra sinatra + sequel exercícios postgresql RoR analisador 2 postgresql+ 1 projeto postgresql java scala + play mountable engine + 1 ‘página’ aws tickets RoR + 6 projetos js postgresql RoR RoR postgresql
    151. 151. Domine sua linguagem (sugestão para o bom programador)
    152. 152. Domine sua linguagemapi/framework a pontode criticar os pontosnegativos (sugestão para o bom programador)
    153. 153. Domine outraslinguagens...TANTO quanto. (sugestão para o bom programador)
    154. 154. Nenhuma linguagemou ([framework])é ruim (sugestão para o bom programador)
    155. 155. ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
    156. 156. Nenhuma linguagemou ([framework])é ruim, salvo brain f*ck (sugestão para o bom programador)
    157. 157. Todas são marotas * Contexto Pessoa Momento * salvo brain f#ck
    158. 158. Domine suas escolhaspara não ser dominadopor elas. (sugestão para o bom programador) @sr_valeriano
    159. 159. Domine suas escolhaspara não ser dominadopor elas. (sugestão para o bom programador) Obrigado! @sr_valeriano

    ×