O documento resume as principais mudanças na versão 1.9 do Ruby em relação à versão 1.8, incluindo:
1) Mudanças na representação de strings e codificações, como a remoção do $KCODE e a introdução de m17n;
2) Melhorias no desempenho de expressões regulares e símbolos;
3) Alterações na classe Date e nos métodos de hash.
Yet Another Ruby Framework - Como o Rails funciona por dentroCarlos Brando
“Yet Another Ruby Framework – Como o Rails funciona por dentro”: Minha palestra tratará exatamente deste tema: o processo de construção de um framework utilizando Ruby. Se você realmente quer entender como o Rails funciona, então crie o seu próprio framework. Nesta palestra vou comentar sobre algumas das dificuldades que encontrei durante este projeto e quais as soluções encontradas. O processo de renderização, geradores de códigos, helpers e banco de dados estão entre os assuntos que serão tratados. Acredito que ao analisar este tópicos de um ponto de vista mais simplista fará com que você entenda melhor como algumas coisas funcionam internamente no Rails.
Doctrine é uma ferramenta de ORM (mapeamento objeto-relacional) para
PHP que sobrepõe a poderosa DBAL (camada de abstração de Banco de
Dados) PDO do PHP.
Um de seus principais recursos é a possibilidade adicional de escrever
consultas à base de dados através de um dialeto-SQL OO (orientado à
objeto) chamado DQL inspirado no HQL do Hibernate. Isto provê aos
desenvolvedores uma alternativa poderosa ao SQL que mantém o máximo de
flexibilidade sem qualquer necessidade de duplicação de código.
O tema da palestra é apresentar a ferramenta como uma solução ágil
para problemas recorrentes.
Introdução á linguagem Ruby com aplicativo em Railsoverduka
Apresentação sobre a linguagem de programação Ruby, introdução á linguagem suas vantagens e principais características.
A apresentação inclui casos de uso de sucesso e exemplos de código com a criação de um aplicativo usando o framework Ruby on Rails e Twitter Bootstrap.
Por que e como montamos um meio de pagamentos inteiramente em Node.js? Nessa palestra, falarei sobre o que aprendemos construindo um projeto relativamente grande em Node. Primeiro, os motivos que nos levaram a usá-lo no Pagar.me e porque Node foi a ferramenta certa para nós. Depois, sobre como montamos uma infraestrutura que une Node.js com tecnologias diferentes (MongoDB, MySQL e ElasticSearch) para usar a melhor parte de cada uma delas e ganhar versatilidade e escalabilidade.
Também abordarei os cuidados com código (patterns, code style, modules, etc), testes, integração contínua e segurança na stack que precisamos ter para criar algo grande com Node. Além disso, contarei um pouco sobre ele em produção, incluindo as ferramentas que usamos para rodar e monitorar nossa aplicação e a infraestrutura por trás dela. O objetivo é mostrar quando, como e porque utilizar o Node, e provar até onde ele pode chegar.
Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010lucashungaro
Palestra apresentada na RubyConf Brasil 2010 mostrando dicas de bibliotecas úteis para aplicações web escritas em Rails e maneiras para conseguir código flexível, fácil de testar e modificar utilizando SOLID, defensive programming e outras técnicas.
Palestra ministrada por mim e pelo Marcelo Akira no VI Forum Goiano de Software Livre. Aborda o que é ORM e como utilizar Doctrine para abstrair a camada de dados da sua aplicação.
Yet Another Ruby Framework - Como o Rails funciona por dentroCarlos Brando
“Yet Another Ruby Framework – Como o Rails funciona por dentro”: Minha palestra tratará exatamente deste tema: o processo de construção de um framework utilizando Ruby. Se você realmente quer entender como o Rails funciona, então crie o seu próprio framework. Nesta palestra vou comentar sobre algumas das dificuldades que encontrei durante este projeto e quais as soluções encontradas. O processo de renderização, geradores de códigos, helpers e banco de dados estão entre os assuntos que serão tratados. Acredito que ao analisar este tópicos de um ponto de vista mais simplista fará com que você entenda melhor como algumas coisas funcionam internamente no Rails.
Doctrine é uma ferramenta de ORM (mapeamento objeto-relacional) para
PHP que sobrepõe a poderosa DBAL (camada de abstração de Banco de
Dados) PDO do PHP.
Um de seus principais recursos é a possibilidade adicional de escrever
consultas à base de dados através de um dialeto-SQL OO (orientado à
objeto) chamado DQL inspirado no HQL do Hibernate. Isto provê aos
desenvolvedores uma alternativa poderosa ao SQL que mantém o máximo de
flexibilidade sem qualquer necessidade de duplicação de código.
O tema da palestra é apresentar a ferramenta como uma solução ágil
para problemas recorrentes.
Introdução á linguagem Ruby com aplicativo em Railsoverduka
Apresentação sobre a linguagem de programação Ruby, introdução á linguagem suas vantagens e principais características.
A apresentação inclui casos de uso de sucesso e exemplos de código com a criação de um aplicativo usando o framework Ruby on Rails e Twitter Bootstrap.
Por que e como montamos um meio de pagamentos inteiramente em Node.js? Nessa palestra, falarei sobre o que aprendemos construindo um projeto relativamente grande em Node. Primeiro, os motivos que nos levaram a usá-lo no Pagar.me e porque Node foi a ferramenta certa para nós. Depois, sobre como montamos uma infraestrutura que une Node.js com tecnologias diferentes (MongoDB, MySQL e ElasticSearch) para usar a melhor parte de cada uma delas e ganhar versatilidade e escalabilidade.
Também abordarei os cuidados com código (patterns, code style, modules, etc), testes, integração contínua e segurança na stack que precisamos ter para criar algo grande com Node. Além disso, contarei um pouco sobre ele em produção, incluindo as ferramentas que usamos para rodar e monitorar nossa aplicação e a infraestrutura por trás dela. O objetivo é mostrar quando, como e porque utilizar o Node, e provar até onde ele pode chegar.
Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010lucashungaro
Palestra apresentada na RubyConf Brasil 2010 mostrando dicas de bibliotecas úteis para aplicações web escritas em Rails e maneiras para conseguir código flexível, fácil de testar e modificar utilizando SOLID, defensive programming e outras técnicas.
Palestra ministrada por mim e pelo Marcelo Akira no VI Forum Goiano de Software Livre. Aborda o que é ORM e como utilizar Doctrine para abstrair a camada de dados da sua aplicação.
Slides da palestra sobre Redis apresentada no Dev in Santos. Modifiquei apenas o "classe A" para "sensacional" e corrigi o código do slide "Utilizando sets".
Palestra também apresentada no NoSqlBahia e no TDC 2012
JS Experience 2017 - WebAssembly na PráticaiMasters
Alan Cezar, Lead JavaScript Engineer da Concrete fala sobre WebAssembly na Prática no JS Experience'17
Saiba mais em https://eventos.imasters.com.br/jsexperience
Minicurso de Ruby on Rails que ocorreu de 25/11/2014 até 28/11/2014 no Instituto Federal de Educação Ciência e Tecnologia do Sudeste de Minas Campus Barbacena
Lightning talk apresentada no MeetUp PHPRS subseção Canela/Gramado no dia 26/11/2016 - hotel Klein Ville de Canela (RS):
http://www.meetup.com/pt-BR/PHP-RS/events/234978772/
Entre na fila. Processamento distribuído usando GearmanElton Minetto
Nesta palestra é apresentado o Gearman, framework Open Source desenvolvido inicialmente pela Danga Interactive. O Gearman é um framework genérico para gerenciar filas de tarefas de forma que possam ser executadas em paralelo, com balanceamento de carga e acessíveis a múltiplas linguagens de programação. É de extrema utilidade em sites e aplicativos com grande carga de processamento e necessidades de escalabilidade.
Guilherme Blanco, Lead Architect da Carmigo, fez a palestra "Keynote: PHP-7", no PHP Experience 2016.
O iMasters PHP Experience 2016 aconteceu nos dias 21 e 22 de Março de 2015, no Hotel Tivoli em São Paulo-SP
http://phpexperience2016.imasters.com.br/
A criação de uma loja virtual não é uma tarefa realizada apenas por desenvolvedores experientes e com um currículo extenso. Michael, que desenvolve, junto com o UOL, pacotes e soluções para a plataforma de pagamento digital PagSeguro vai mostrar isso ao vivo e a cores.
Palestra gratuita: E-commerce: mais fácil do que parece
Dia 12 de junho, das 10h às 13h
Local: Faculdade Impacta
Slides da palestra sobre Redis apresentada no Dev in Santos. Modifiquei apenas o "classe A" para "sensacional" e corrigi o código do slide "Utilizando sets".
Palestra também apresentada no NoSqlBahia e no TDC 2012
JS Experience 2017 - WebAssembly na PráticaiMasters
Alan Cezar, Lead JavaScript Engineer da Concrete fala sobre WebAssembly na Prática no JS Experience'17
Saiba mais em https://eventos.imasters.com.br/jsexperience
Minicurso de Ruby on Rails que ocorreu de 25/11/2014 até 28/11/2014 no Instituto Federal de Educação Ciência e Tecnologia do Sudeste de Minas Campus Barbacena
Lightning talk apresentada no MeetUp PHPRS subseção Canela/Gramado no dia 26/11/2016 - hotel Klein Ville de Canela (RS):
http://www.meetup.com/pt-BR/PHP-RS/events/234978772/
Entre na fila. Processamento distribuído usando GearmanElton Minetto
Nesta palestra é apresentado o Gearman, framework Open Source desenvolvido inicialmente pela Danga Interactive. O Gearman é um framework genérico para gerenciar filas de tarefas de forma que possam ser executadas em paralelo, com balanceamento de carga e acessíveis a múltiplas linguagens de programação. É de extrema utilidade em sites e aplicativos com grande carga de processamento e necessidades de escalabilidade.
Guilherme Blanco, Lead Architect da Carmigo, fez a palestra "Keynote: PHP-7", no PHP Experience 2016.
O iMasters PHP Experience 2016 aconteceu nos dias 21 e 22 de Março de 2015, no Hotel Tivoli em São Paulo-SP
http://phpexperience2016.imasters.com.br/
A criação de uma loja virtual não é uma tarefa realizada apenas por desenvolvedores experientes e com um currículo extenso. Michael, que desenvolve, junto com o UOL, pacotes e soluções para a plataforma de pagamento digital PagSeguro vai mostrar isso ao vivo e a cores.
Palestra gratuita: E-commerce: mais fácil do que parece
Dia 12 de junho, das 10h às 13h
Local: Faculdade Impacta
Rust é uma linguagem estremamente rápida que não tem runtime, portanto pode ser integrada a qualquer outro runtime. Descubra como é fácil estender Python com Rust!
Esta apresentação aborda os tópicos introdutórios da Linguagem de Programação Ruby, considerando que o leitor já possui conhecimentos de técnicas de programação. Ruby é uma linguagem de programação dinâmica, de tipagem forte e implícita, orientada a objetos, que tem ganho cada vez mais espaço dentro da comunidade de desenvolvedores, principalmente por conta do projeto mais famoso desenvolvido nela: o framework de desenvolvimento Web Ruby on Rails.
O mercado de internet evolui em uma velocidade muito rápida, se não formos capazes de acompanhar as evoluções e apresentar inovações, ficamos para trás. Ruby e Rails vem trazer ao mundo do desenvolvimento web a produtividade e alegria necessária!
10. m17n
em todos os lugares
Em IO
f = File.open("file.txt", "r:utf-8")
f.external_encoding #=> utf-8
f = File.open("file.txt", "w+:utf-8:iso-8859-1")
f.external_encoding #=> utf-8
f.internal_encoding #=> iso-8859-1
f = File.open("img.png", "r:binary")
f.encoding #=> ASCII-8BIT
11. strings
codificação
"maçã".length
1.8 #=> 6
"abcd"[0]
#=> 97
"maçã".length
1.9 #=> 4
"abcd"[0]
#=> a
"abcd".codepoints.to_a[0]
Retorna a representação
#=> 97 numérica dos caracteres
"abcd"[0].ord
#=> 97
14. símbolos
string-wannabe
• pode ser comparado com regexes
• pode ser acessado como strings
• possui muitos métodos da classe String
• :symbol.to_s é menos frequente
16. símbolos
blocos
• to_proc agora é nativo
• é muito rápido
chars = %w(a b c d)
1_000_000.times { chars.collect(&:upcase) }
user system total real
1.8 16.380000 3.700000 20.080000 20.333704
user system total real
1.9 5.300000 0.040000 5.340000 5.365868
27. lambda
funções anônimas
sum = lambda {|*args| args.reduce(:+) }
1.8 sum = lambda {|*args| args.inject(0) {|s,n| s += n; s } }
1.9 sum = -> *args { args.reduce(:+) }
sum.call(1,2,3)
#=> 6
sum[1,2,3]
#=> 6
sum.(1,2,3) Ruby 1.9
#=> 6
28. basic object
começando do zero
BasicObject.superclass
#=> nil
Object.superclass
#=> BasicObject
BasicObject.instance_methods
#=> [:==, :equal?, :!, :!=, :instance_eval, :instance_exec, :__send__]
class MyClass < BasicObject; end
29. object
#tap
user = User.new.tap do |u|
1.9 u.name = "Nando Vieira"
u.blog = "http://simplesideias.com.br"
end
30. bloco
escopo de variáveis
n = 0
1.8
(1..10).each do |n|
end
#=> n = 10
n = 0 n = 1
1.9
(1..10).each do |n| lambda {|;n| n = 2 }.call
end
#=> n = 1
#=> n = 0
31. suporte
como lidar com ambas as versões
class Sample
if String.method_defined?(:encode)
def some_method
end
else
def some_method
end
end
end
32. suporte
como lidar com ambas as versões
unless String.method_defined?(:encode)
class String
def encode(*options)
end
end
end
33. mais mudanças
operador *splat
def group(a, b, *c)
1.8 [a, b, c]
end
group(1,2,3,4,5)
#=> [1, 2, [3, 4, 5]]
def group(a, *b, c)
1.9 [a, b, c]
end
group(1,2,3,4,5)
#=> [1, [2, 3, 4], 5]
34. mais mudanças
valor padrão de argumentos
def color(type, value)
1.8 end
Como fazer "type" ser "hex" por padrão?
color(:rgb, [255, 255, 255]) a) Precisa mudar a ordem dos parâmetros
color([255, 255, 255]) b) Sempre especificar os 2 parâmetros (?)
def color(type=:hex, value)
1.9 end
color(:rgb, [255, 255, 255])
color("#fff")
35. mais mudanças
standard library + bundles
• rubygems, rake, rdoc
• fiber, enumerator, json (ext + pure), minitest,
ripper, securerandom, probeprofiler
• csv foi substituída por fastcsv
• soap e wsdl foram removidas
36. mas e aí?
migrar ou não migrar para o Ruby 1.9?
• todas as gems foram portadas
• uma parte do sistema pode ser portada
isitruby19.com
37. mas e aí?
migrar ou não migrar para o Ruby 1.9?
testes
pelo menos as partes críticas