Palestra apresentada por mim, Felipe Ribeiro, na PHP Conference Brasil 2009 mostrando os novos recursos do PHP 5.3 no que diz respeito a estruturas de dados
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/
Apresentação ministrada em 27/09/2011 no Tribeca Pub em São Paulo.
Object Calisthenics são exercícios que podem ser praticados com o objetivo de melhor
Palestra apresentada por mim, Felipe Ribeiro, na PHP Conference Brasil 2009 mostrando os novos recursos do PHP 5.3 no que diz respeito a estruturas de dados
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/
Apresentação ministrada em 27/09/2011 no Tribeca Pub em São Paulo.
Object Calisthenics são exercícios que podem ser praticados com o objetivo de melhor
educación no solo hace énfasis a contenidos, métodos, formas de hablar, etc. también es importante no pasar desapercibido de los problemas que afectan nuestra sociedad, principalmente aquellos que afectan o atentan con nuestra salud o integridad física. en esta ocasión una pandemia.
O Maneirismo foi um estilo e um movimento artísticos europeus de retomada de certas expressões da cultura medieval que, aproximadamente os anos de entre 1515 e 1610, constituíram manifesta reação contra os valores clássicos prestigiados pelo humanismo renascentista. Caracterizou-se pela concentração na maneira, o estilo levou à procura de efeitos bizarros que já apontam para a arte moderna, como o alongamento das figuras humanas e os pontos de vista inusitados. As primeiras manifestações anticlássicas dentro do espírito clássico renascentista costumam ser chamadas de maneiristas. O termo surge da expressão a maniera de, usada para se referir a artistas que faziam questão de imprimir certas marcas individuais em suas obras.
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.
Introdução a Linguagem de Programação RubyDiego Rubin
Apresentação utilizada em palestra na ETEC Prof. Armando Bayeux da Silva em 2008 e na Semana de Estudos do curso de Sistemas de Informação na faculdade Asser de Rio Claro em 2009.
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...Faga1939
Este artigo tem por objetivo apresentar como ocorreu a evolução do consumo e da produção de energia desde a pré-história até os tempos atuais, bem como propor o futuro da energia requerido para o mundo. Da pré-história até o século XVIII predominou o uso de fontes renováveis de energia como a madeira, o vento e a energia hidráulica. Do século XVIII até a era contemporânea, os combustíveis fósseis predominaram com o carvão e o petróleo, mas seu uso chegará ao fim provavelmente a partir do século XXI para evitar a mudança climática catastrófica global resultante de sua utilização ao emitir gases do efeito estufa responsáveis pelo aquecimento global. Com o fim da era dos combustíveis fósseis virá a era das fontes renováveis de energia quando prevalecerá a utilização da energia hidrelétrica, energia solar, energia eólica, energia das marés, energia das ondas, energia geotérmica, energia da biomassa e energia do hidrogênio. Não existem dúvidas de que as atividades humanas sobre a Terra provocam alterações no meio ambiente em que vivemos. Muitos destes impactos ambientais são provenientes da geração, manuseio e uso da energia com o uso de combustíveis fósseis. A principal razão para a existência desses impactos ambientais reside no fato de que o consumo mundial de energia primária proveniente de fontes não renováveis (petróleo, carvão, gás natural e nuclear) corresponde a aproximadamente 88% do total, cabendo apenas 12% às fontes renováveis. Independentemente das várias soluções que venham a ser adotadas para eliminar ou mitigar as causas do efeito estufa, a mais importante ação é, sem dúvidas, a adoção de medidas que contribuam para a eliminação ou redução do consumo de combustíveis fósseis na produção de energia, bem como para seu uso mais eficiente nos transportes, na indústria, na agropecuária e nas cidades (residências e comércio), haja vista que o uso e a produção de energia são responsáveis por 57% dos gases de estufa emitidos pela atividade humana. Neste sentido, é imprescindível a implantação de um sistema de energia sustentável no mundo. Em um sistema de energia sustentável, a matriz energética mundial só deveria contar com fontes de energia limpa e renováveis (hidroelétrica, solar, eólica, hidrogênio, geotérmica, das marés, das ondas e biomassa), não devendo contar, portanto, com o uso dos combustíveis fósseis (petróleo, carvão e gás natural).
Este certificado confirma que Gabriel de Mattos Faustino concluiu com sucesso um curso de 42 horas de Gestão Estratégica de TI - ITIL na Escola Virtual entre 19 de fevereiro de 2014 a 20 de fevereiro de 2014.
As classes de modelagem podem ser comparadas a moldes ou
formas que definem as características e os comportamentos dos
objetos criados a partir delas. Vale traçar um paralelo com o projeto de
um automóvel. Os engenheiros definem as medidas, a quantidade de
portas, a potência do motor, a localização do estepe, dentre outras
descrições necessárias para a fabricação de um veículo
Em um mundo cada vez mais digital, a segurança da informação tornou-se essencial para proteger dados pessoais e empresariais contra ameaças cibernéticas. Nesta apresentação, abordaremos os principais conceitos e práticas de segurança digital, incluindo o reconhecimento de ameaças comuns, como malware e phishing, e a implementação de medidas de proteção e mitigação para vazamento de senhas.
2. introdução ao ruby
índice de conteúdos
introdução
ferramentas cli
nomenclatura & tipos de dados
módulos & classes
blocos & iteradores
excepções & introspecção
rubygems
http://www.ruby-lang.org/pt/
3. = +
introdução ao ruby
a linguagem de programação
:definir => “origem”
criada em 1995 no Japão, por Yukihiro Matsumoto
licenciada sob a GPL – Free Software
multi-plataforma (Windows, Linux, MacOS X, *BSD)
:definir => “linguagem”
dinâmica
linguagem de alto nível, interpretada no momento de execução – facilita a extensão dos programas,
através da modificação dos objectos durante o período de execução
reflectiva
capacidade de introspecção – permite a análise e alteração da estrutura e comportamento do
programa
orientada a objectos – “everything is an object”
5.times { print “Eu *adoro* Ruby!quot; }
http://www.ruby-lang.org/pt/
5. introdução ao ruby
ferramentas CLI
:definir => “ri”
ruby information
interface de linha de comando para a documentação do Ruby -- classes, módulos, etc
steel:~ mgcm$ ri IO#puts
Writes the given objects to _ios_ as with +IO#print+. Writes a
record separator (typically a newline) after any that do not
already end with a newline sequence. If called with an array
argument, writes each element on a new line. If called without
arguments, outputs a single record separator.
:definir => “irb”
interactive ruby
shell interactiva, útil para testar pequenos programas ou avaliar expressões rapidamente
steel:~ mgcm$ irb
irb(main):001:0> def soma(n1, n2)
irb(main):002:1> n1 + n2
irb(main):003:1> end
=> nil
irb(main):004:0> soma(2, 3)
=> 5
irb(main):005:0>
http://www.ruby-lang.org/pt/
6. introdução ao ruby
conceitos base - variáveis
:definir => “nomenclatura das variáveis”
variáveis locais
foo = “bar“
a_minha_variavel_com_o_valor_pi = 3.1415
variáveis globais e constantes
$foo = “bar_global“
$COS_PI = Math.cos(Math::PI)
classes , variáveis de instância e variáveis de classe
class MyClass
def initialize
@@my_class_variable = Hash.new
@my_instance_variable = Array.new
end
end
http://www.ruby-lang.org/pt/
7. introdução ao ruby
conceitos base - estruturas de dados
:definir => “tipos de dados”
vectores hashes
irb(main):001:0> a = [] irb(main):001:0> h = {}
=> [] => {}
irb(main):002:0> a.class irb(main):002:0> h.class
=> Array => Hash
irb(main):003:0> a, b = [1, 2], [3, 4] irb(main):003:0> h = {:key => “value”}
=> [[1, 2], [3, 4]] irb(main):004:0> h.values
irb(main):004:0> a + b => [”value”]
=> [1, 2, 3, 4] irb(main):005:0> h.keys
=> [:key]
intervalos e expressões regulares
inteiros, reais e strings
irb(main):001:0> 1..100.class
irb(main):001:0> 1.class
=> Range
=> Fixnum
irb(main):003:0> /^ruby/.class
irb(main):002:0> 2.0.class
=> Regexp
=> Float
irb(main):003:0> “3.1415”.class
=> String
http://www.ruby-lang.org/pt/
8. introdução ao ruby
conceitos base - fluxo
:definir => “controlo de execução”
if-elsif-else-end while
if count > 10 while i < 100 and count > 0
puts “maior de 10” fazer_algo_util
elsif i == 3 i += 1
puts “igual a três” end
else
until
puts “outra coisa qq”
end
until a == true
a = false
case end
case my_string
for
when “hello” then puts “world”
when “goodbye” then puts “cruel world” for i in 0..100
end total += i
end
unless formas concisas
unless i > 5 puts “i maior do que 5” if i > 5
puts “i menor do que 5” i = i + 1 while i < 100
end puts “i menor do que 5” unless i > 5
8
http://www.ruby-lang.org/pt/
9. introdução ao ruby
conceitos base - oop
:definir => “classes”
conta.rb irb
irb(main):001:0> load “conta.rb”
class ContaBancaria
=> true
attr_reader :saldo
irb(main):002:0> c = ContaBancaria.new 123
=> #<ContaBancaria:0x386198 @saldo=123>
def initialize(saldo_inicial)
irb(main):003:0> c.credito 150
@saldo = saldo_inicial
=> 273
end
irb(main):004:0> c.debito 99
=> 174
def credito(valor)
irb(main):005:0> puts c
@saldo += valor
A sua conta tem um saldo de € 174
end
=> nil
def debito(valor)
@saldo -= valor if (@saldo - valor) > 0
end
def to_s
quot;A sua conta tem um saldo de € #{@saldo}quot;
end
end
http://www.ruby-lang.org/pt/
10. introdução ao ruby
conceitos base - herança
:definir => “herança simples”
conta.rb
class ContaOrdenado < ContaBancaria
attr_reader :saldo, :plafond
def initialize(saldo_inicial, plafond)
super(saldo_inicial)
@plafond = plafond if plafond <= ContaOrdenado.plafond_maximo
end
def debito(valor)
@saldo -= valor if (@saldo - valor) > plafond
end
def ContaOrdenado.plafond_maximo
10000
end
end
irb
irb(main):001:0> ContaOrdenado.plafond_maximo
=> 10000
irb(main):002:0> c = ContaBancaria.new 123
=> #<ContaBancaria:0x386198 @saldo=123>
irb(main):003:0> o = ContaOrdenado.new 0, 100
=> #<ContaOrdenado:0x343280 @saldo=0, @plafond=100>
irb(main):004:0> c.class
=> ContaBancaria
irb(main):005:0> o.class
=> ContaOrdenado http://www.ruby-lang.org/pt/
11. introdução ao ruby
conceitos base - módulos
:definir => “módulos”
Módulos::Namespaces
são uma forma lógica de agrupar métodos, classes e constantes. Permitem:
‣ o agrupamento em namespaces, evitando assim colisções de nomes
module Trig irb(main):001:0> require ‘trig’
PI = 3.141592654 => true
irb(main):002:0> y = Trig.sin(Trig::PI/4)
def Trig.sin(x) => 0.707106781186548
# ...
end
Ao contrário de uma classe, um módulo não pode ser instanciado!
def Trig.cos(x)
# ...
end
...
end
http://www.ruby-lang.org/pt/
12. introdução ao ruby
conceitos base - mixins
:definir => “módulos”
Módulos::Mixins
são uma forma lógica de agrupar métodos, classes e constantes. Permitem:
‣ a criaçao de mixins, uma técnica que substitui a herança múltipla de classes, através da
inclusão de módulos em classes
module Observable class TVChannel
def observers include Observable
@observer_list ||= []
end def subscribe(client)
add_observer(client)
def add_observer(obj) end
observers << obj end
end
def notify_observers
observers.each { |o| o.update }
end
end
http://www.ruby-lang.org/pt/
13. introdução ao ruby
conceitos base - novos conceitos
:definir => “blocos e iteradores”
for i in 0..my_array.length
return my_array[i] if my_array[i] == “ruby” my_array.find { |item| item == “ruby” }
end
bloco iterador
conjunto de instruções cujo controlo de execução é um método que pode invocar um bloco de código
passado a um método invocado, tipicamente iterador
class Array
10.times { |i| print i, “ ” }
def find
for i in 0..size
10.times do |i| value = self[i]
print i, “ “ return value if yield(value)
end end
return nil
end
end
13
http://www.ruby-lang.org/pt/
14. introdução ao ruby
conceitos base - erros
:definir => “excepções”
tratamento de excepções
begin
# código sensível
rescue Exception => ex
puts “Erro: #{ex.message}”
# código que trata a excepção caso esta ocorra
ensure
# código a executar após a ocorrência da excepção
end
levantamento de excepções
def o_meu_metodo(valor)
raise “Não aceito valores negativos” if valor < 0
end
http://www.ruby-lang.org/pt/
15. introdução ao ruby
reflexão e introspecção
:definir => “introspecção”
com recurso aos mecanismos de introspecção existentes no Ruby, é possível analisar um programa
em execução e descobrir:
‣ quais os objectos que este contêm
‣ a hierarquia das classes desses objectos
‣ os atributos e métodos desses objectos
‣ extender e alterar os módulos e classes do programa em execução
métodos de um objecto Fixnum
irb(main):043:0> 123.methods
=> [quot;%quot;, quot;inspectquot;, quot;sendquot;, quot;<<quot;, quot;prec_iquot;, quot;divmodquot;, quot;", quot;clonequot;, quot;>>quot;, quot;integer?quot;,
quot;chrquot;, quot;public_methodsquot;, quot;__send__quot;, quot;equal?quot;, quot;freezequot;, quot;*quot;, quot;+quot;, quot;truncatequot;, quot;to_fquot;,
quot;methodsquot;, quot;instance_evalquot;, quot;-quot;, quot;moduloquot;, quot;prec_fquot;, quot;zero?quot;, quot;to_intquot;, quot;/quot;, quot;sizequot;,
quot;dupquot;, quot;instance_variablesquot;, quot;extendquot;, quot;instance_of?quot;, quot;nextquot;, quot;|quot;, quot;eql?quot;, quot;hashquot;,
quot;~quot;, quot;idquot;, quot;stepquot;, quot;singleton_methodsquot;, quot;remainderquot;, quot;taintquot;, quot;nonzero?quot;, quot;id2namequot;,
quot;frozen?quot;, quot;instance_variable_getquot;, quot;^quot;, quot;methodquot;, quot;kind_of?quot;, quot;floorquot;, quot;to_aquot;, quot;+@quot;,
quot;-@quot;, quot;quoquot;, quot;displayquot;, quot;typequot;, quot;**quot;, quot;downtoquot;, quot;<quot;, quot;protected_methodsquot;, quot;<=>quot;, quot;==quot;,
quot;absquot;, quot;>quot;, quot;===quot;, quot;to_symquot;, quot;instance_variable_setquot;, quot;coercequot;, quot;is_a?quot;, quot;ceilquot;, quot;>=quot;,
quot;respond_to?quot;, quot;uptoquot;, quot;between?quot;, quot;to_squot;, quot;<=quot;, quot;precquot;, quot;divquot;,
quot;singleton_method_addedquot;, quot;object_idquot;, quot;timesquot;, quot;classquot;, quot;tainted?quot;, quot;=~quot;,
quot;private_methodsquot;, quot;__id__quot;, quot;nil?quot;, quot;succquot;, quot;untaintquot;, quot;[]quot;, quot;roundquot;, quot;to_iquot;]
http://www.ruby-lang.org/pt/
17. introdução ao ruby
bibliotecas de código
:definir => “gems”
RubyGems
são formas de distribuir e instalar aplicações e bibliotecas de código ruby, alojadas em repositórios centrais
Exemplos:
‣ rake - uma espécie de Make para Ruby
‣ ruby-net-ldap - cliente LDAP para ruby
‣ rails - plataforma de desenvolvimento web
‣ etc...
‣ mais de 2000 disponíveis online: $ gem list --remote
require ‘rubygems’
require ‘gem_xyz’
http://www.ruby-lang.org/pt/
18. introdução ao ruby
exercício prático
:definir => “exercícios”
valores.csv
formato: fruto, unidades, preço unitário
‣ guardar num vector todos os frutos distintos e ordenar por
ordem alfabética
‣ criar em tempo de execução um objecto para cada uma das
linhas, cuja classe seja do tipo da fruta adequada
http://www.ruby-lang.org/pt/