Ruby on Rails 2.2 O QUE HÁ DE NOVO? Primeira Edição

Tamanho: px
Começar a partir da página:

Download "Ruby on Rails 2.2 O QUE HÁ DE NOVO? Primeira Edição"

Transcrição

1

2

3 Ruby on Rails 2.2 O QUE HÁ DE NOVO? Primeira Edição

4

5 Ruby on Rails 2.2 O QUE HÁ DE NOVO? Primeira Edição por Carlos Brando traduzido por Carl Youngblood

6 Copyright 2008 Carlos Brando. Todos os direitos reservados. Primeira Edição: Outubro 2008 Carlos Brando Carl Youngblood

7 Ruby on Rails 2.2 INTRODUÇÃO O Ruby on Rails 2.2 está cheio de novidades, incluindo novas funcionalidades, melhorias e correções de bugs antigos. Neste livro você encontrará uma breve descrição, acompanhada de um exemplo (na maioria dos casos) de cada uma das principais novidades deste versão. Escrever este livro foi um trabalho árduo, por isto espero que ele lhe seja muito útil, ajudando-o a usar mais plenamente cada novo recurso incluído no Ruby on Rails. À partir desta versão o Rails passa a ser políglota. Fazo uso do novo sistema de internacionalização (i18n) podemos construir aplicativos para usuários do mundo com pouquíssimo esforço. Muito trabalho foi feito para deixar o Rails thread-safety e o mais preparado possível para o futuro Ruby 1.9. Também houve uma preocupação grande para deixá-lo mais compatível com o JRuby. Embora o recurso de thread-safe ainda não esteja disponível para todos nós, já que ele apenas funcionará em máquinas virtuais com suporte a threads nativas, como o JRuby por exemplo, ele é uma grande adição ao framework. Se no passado houve muita reclamação quanto a documentação do Rails, agora ninguém poderá mais reclamar. Um grande trabalho foi feito para documentar o código e as funcionalidades do Rails. Quer um exemplo? Execute no terminal: rake doc:guides Esta tarefa criará uma pasta doc/guides na raiz do seu projeto com vários guias para auxiliá-lo durante o aprizado do Rails. 7

8 Ruby on Rails O que há de novo? Capitulo 1 ActiveRecord NOVA OPÇÃO PARA ASSOCIAÇÕES: :VALIDATE Uma nova opção foi acrescentado às associações do Rails. A opção validação de objetos associados ao modelo. Veja um exemplo: :validate class AuditLog < ActiveRecord::Base belongs_to :developer, :validate => false log = AuditLog.create(:developer_id => 0, :message => "") log.developer = Developer.new puts log.developer.valid? # => false 8 pode ser usada para ligar ou desligar a

9 Capitulo 1: ActiveRecord puts log.valid? # => true puts log.save # => true Como você pode ver no exemplo acima, embora o objeto associado ( Developer) não seja válido, ainda assim o objeto principal (AuditLog) foi salvo no banco de dados. Este não era o comportamento normal nas versões anteriores do Rails, onde um objeto pai só poderia ser gravado se todos os filhos fossem válidos. Embora no exemplo acima estamos desligando a validação de associações, para demostrar o novo recurso, este é o novo valor padrão para este tipo de relacionamento de agora em diante. Ou seja, todas as validações em associações belongs_to estarão desligadas (como no exemplo) e para habilitarmos o comportamento antigo devemos usar a expressão :validate => true. UMA NOVA FORMA DE ESPECIFICAR CONDITIONS USANDO HASH Ao realizar buscas no banco de dados, por vezes temos de fazer uso da opção :joins a fim de melhorar a performance de nosso aplicativo, em outros casos precisamos simplesmente recuperar algum tipo de informação que depe do resultado de duas tabelas. Por exemplo, se desejássemos recuperar todos os usuários do sistema que compraram itens da cor vermelha, faríamos algo assim: User.all :joins => :items, :conditions => ["items.color =?", 'red'] Este tipo de sintaxe parece incomodar já que você precisa incluir o nome da tabela (no caso items) dentro de uma string. O código parece estranho. 9

10 Ruby on Rails O que há de novo? No Rails 2.2 encontraremos uma novidade nesta questão, nos permitindo fazer a mesma coisa de uma forma um pouco diferente, usando uma chave dentro do Hash para identificar a tabela: User.all :joins => :items, :conditions => { :age => 10, :items => { :color => 'red' } } # um outro exemplo que talvez deixe o código mais claro User.all :joins => :items, :conditions => { :users => { :age => 10 }, :items => { :color => 'red' } } Na minha opinião, desta forma o código fica muito mais claro, principalmente se temos de condicionar muitos campos de várias tabelas. Só tenha em mente que a chave usada é o nome da tabela (você percebe pelo nome pluralizado) ou um alias caso você o tenha especificado na query. NOVA OPÇÃO :FROM PARA MÉTODOS DE CÁLCULO DO ACTIVERECORD Uma nova opção foi incluída aos métodos de cálculos do ActiveRecord (count, sum, average, minimum e maximum). Ao fazer uso da opção :from, podemos sobrecarregar o nome da tabela na query gerada pelo ActiveRecord, o que não parece muito útil em um primeiro momento. Mas algo interessante que esta opção nos permite fazer é forçar o MySQL a usar um índice especifico ao realizar o cálculo desejado. Veja alguns exemplos de uso: 10

11 Capitulo 1: ActiveRecord # Forçando o MySQL a usar um índice para realizar o cálculo Edge.count :all, :from => 'edges USE INDEX(unique_edge_index)', :conditions => 'sink_id < 5') # Realizando o cálculo em uma tabela diferente da classe associada Company.count :all, :from => 'accounts' MÉTODO MERGE_CONDITIONS DO ACTIVERECORD AGORA É PÚBLICO O método merge_conditions do ActiveRecord agora é um método público, o que significa que ele estará presente em todas os seus modelos. Este método faz exatamente o que o nome diz. Você pode informar várias e ele junta tudo em uma condition só. Por exemplo: conditions separadas em seus parâmetros class Post < ActiveRecord::Base a = { :author => 'Carlos Brando' } b = [ 'title =?', 'Edge Rails' ] Post.merge_conditions(a, b) # => "(\"posts\".\"author\" = 'Carlos Brando') AND (title = 'Edge Rails')" Note que ele une as conditions com um AND, sempre. 11

12 Ruby on Rails O que há de novo? DEFININDO COMO O MÉTODO VALIDATES_LENGTH_OF DEVE FUNCIONAR O método validates_length_of faz parte dos muitos métodos de validação contidos no ActiveRecord. Este método em particular serve para garantir que o valor gravado em uma determinada coluna no banco de dados terá um tamanho máximo, mínimo, exato, ou até mesmo se está em um intervalo de valores. Mas o termo "tamanho" é relativo. Hoje quando dizemos "tamanho" estamos nos referindo a quantidade de caracteres no texto. Mas imagine um caso onde eu tenha um campo em um formulário onde a limitação não seja definida pela quantidade de caracteres e sim pela quantidade de palavras, algo como "escreva um texto com no mínimo 100 palavras". Imagine uma página onde o usuário tenha de redigir uma redação, por exemplo. Hoje, para validar isto não teríamos outra escolha senão criarmos um novo método que faça esta validação. Mas à partir do Rails 2.2 poderemos personalizar o método validates_length_of para funcionar da forma como desejamos usando a opção :tokenizer. Veja um exemplo que resolveria o problema citado acima: validates_length_of :essay, :minimum => 100, :too_short => "Sua redação deve ter no mínimo %d palavras."), :tokenizer => lambda { str str.scan(/\w+/) } Este é apenas um exemplo do que podemos fazer com esta nova opção. Além disso podemos usa-lá para contar apenas a quantidade de dígitos, menções de uma única palavra, etc.. 12

13 Capitulo 1: ActiveRecord TRATANDO A OPÇÃO :LIMIT COMO BYTES À partir desta versão do Rails quando usarmos a opção :limit para colunas com números inteiros, em nossas migrations, estaremos nos referindo ao número de bytes, no MySQL e no PostgreSQL (no sqlite sempre foi assim). O tipo da coluna no banco de dados deperá da quantidade de bytes especifica. Veja o trecho de código que identifica o tipo da coluna para o MySQL: when when when when when else 1; 'tinyint' 2; 'smallint' 3; 'mediumint' nil, 4, 11; 'int(11)' # compatibility with MySQL default 5..8; 'bigint' raise(activerecorderror, "No integer type has byte size #{limit}") E para o PostgreSQL: when 1..2; 'smallint' when 3..4, nil; 'integer' when 5..8; 'bigint' INFORMANDO OUTRO PRIMARY_KEY EM ASSOCIAÇÕES Uma nova opção foi acrescentado aos métodos has_many e has_one: a opção :primary_key. Fazo uso desta opção podemos definir qual método do modelo associado retornará a chave primária que será usada na associação. Obviamente o método padrão é o id. Veja um exemplo de uso: 13

14 Ruby on Rails O que há de novo? has_many :clients_using_primary_key, :class_name => 'Client', :primary_key => 'name', :foreign_key => 'firm_name' O método has_one funciona exatamente como no exemplo acima. NOVO HELPER PARA TESTES (ASSERT_SQL) Talvez você já conheça o método assert_queries que ajuda a validar nos testes a quantidade de queries executadas. Por exemplo: assert_queries(firm.partial_updates?? 0 : 1) { firm.save! } No teste acima estou afirmando que se houver caso contrário nenhuma deve ser executada. partial_updates uma query deve ser executada no banco de dados, Agora ganhamos mais um helper para ajudar a testar o tipo de query executada, o método assert_sql. Um exemplo: def test_empty_with_counter_sql company = Firm.find(:first) assert_sql /COUNT/i do assert_equal false, company.clients.empty? No exemplo acima estou confirmando que no bloco informado ao método pelo menos uma query deve conter a palavra COUNT. Obviamente você pode ser mais especifico na expressão regular que estiver usando. Vamos pegar um outro exemplo: 14

15 Capitulo 1: ActiveRecord assert_sql(/\(\"companies\".\"id\" IN \(1\)\)/) do Account.find(1, :include => :firm) MIGRATIONPROXY Imagine que ao rodar uma série de migrations um determinado modelo seja renomeado. Agora imagine que antes disto acontecer uma outra migration faça referencia a este modelo. Isto causará um erro feio e parará a execução de suas migrations. Para evitar este tipo de problema foi criado uma nova classe chamada MigrationProxy que armazena o nome, a versão e o nome do arquivo de cada migration e usa estas informações para carregar a migration somente quando ela for necessária, evitando carregar todas elas de uma vez. POOL DE CONEXÕES NO RAILS Algo que muita gente reclama sobre o Rails é que ele é lento. Sabemos que isto não é totalmente verdade, mas também sabemos que muita coisa pode ser feita para melhorar a performance dele. Uma destas coisas acabou de se feita. Foi incluído ao Rails um Pool de Conexões com o banco de dados. Toda vez que uma requisição ao banco de dados é feita, perde-se algum tempo criando uma nova conexão e só depois é que a pesquisa ou gravação é realizada. Olhando superficialmente pode parecer algo muito rápido e simples, mas abrir uma conexão com o banco de dados não é tão simples assim. É necessário estabelecer uma conexão física com o servidor do banco, autenticar a conexão e realizar mais uma série de validações. Tudo isto consome recursos e tempo. Após criar esta conexão, o Rails a usa para todas as requisições necessárias, e queries mais pesadas podem atrasar a 15

16 Ruby on Rails O que há de novo? execução de outras requisições. Isto explica muito bem o porque de o banco de dados se tornar o vilão de alguns grandes projetos criados em Rails. A solução para este tipo de problema é criar um pool de conexões com o banco de dados e distribuir as requisições feitas entre estas conexões. O processo é o seguinte: Uma conexão com o banco de dados é aberta e utilizada para realizar uma pesquisa. Depois disso, ao invés de fecha-la, ela é armazena no pool de conexões. Quando uma outra requisição é feita, ao invés de abrir uma nova conexão, o sistema reaproveita uma que já foi aberta, diminuindo o tempo e os recursos necessários para realizar a tarefa. Várias conexões podem ser armazenadas no pool ao mesmo tempo e as requisições serão distribuídas entre elas. Isto significa que mesmo com uma querie lenta so executada no banco de dados, a aplicação continuará recebo e executando outras queries usando as demais conexões armazenadas no pool. No Rails será criado um novo pool para cada execução do método establish_connection. Em outras palavras, cada banco de dados cadastrado no arquivo database.yml terá seu próprio pool de conexões. O pool começa vazio e vai cresco até o limite de 5 conexões (padrão), mas você pode aumentar este limite acrescentando a opção pool na configuração do banco de dados. development: adapter: mysql host: localhost username: myuser password: mypass database: somedatabase pool: 10 wait_timeout: 15 16

17 Capitulo 1: ActiveRecord Se nenhuma das conexões estiver disponível, uma thread irá esperar durante 5 segundos (padrão) antes de desistir de esperar por uma conexão. Este tempo também pode ser configurado adicionando a chave wait_timeout na configuração do banco de dados. Se você desejar usar o pool de conexões fora do ActionPack, existe o método ActiveRecord::Base.connection_pool que permite que você manualmente faça o checkout/checkin das conexões. Não esqueça de fazer o checkin quando terminar de usar a conexão. connection = ActiveRecord::Base.connection_pool.checkout # faz alguma coisa no banco de dados ActiveRecord::Base.connection_pool.checkin(connection) Você também pode usar o método ActiveRecord::Base.connection_pool.with_connection que já faz o checkout/ checkin automaticamente para você, tornando-se uma opção mais segura. ActiveRecord::Base.connection_pool.with_connection do connection # faz alguma coisa no banco de dados MIGRATIONS TRANSACIONAIS NO POSTGRESQL Quando uma migration está em execução e um erro ocorre, tudo que já foi executado será aplicado ao banco de dados, mas tudo que estiver após o erro, não será aplicado. Além disso a migration será marcada como concluída. Isto pode dar uma certa dor de cabeça para corrigir. 17

18 Ruby on Rails O que há de novo? Mas, se o banco de dados que você estiver usando tiver suporte a DDL rollbacks em transações, então ele pode fazer uso deste recurso para desfazer tudo que foi feito antes do erro. O problema é que nem todos os bancos de dados possuem este recurso. O MySQL, por exemplo não possuí. Mas o PostgreSQL, SQL Server e outros bancos possuem. Neste caso o código do Rails foi atualizado para permitir o uso de transações em migrations quando você estiver usando estes bancos de dados. Embora o Rails permita este recurso, o adapter do banco deve ser atualizado (apenas fazo com que o método supports_ddl_transactions? retorne true) para fazer uso de transações. Até o lançamento deste livro somente o do PostgreSQL parecia ter sido atualizado. NOVA VERSÃO DESTRUTIVA DOS MÉTODOS DE PESQUISA DO ACTIVERECORD Os métodos dinâmicos de pesquisa do ActiveRecord receberam uma versão destrutiva, que dispara um erro do tipo RecordNotFound caso nenhum registro seja encontrado, ao invés de apenas retornar nil como acontece com a versão original. Para usar esta versão destrutiva, basta adicionar o sinal de exclamação no final do método. Veja um exemplo: Topic.find_by_title!("The First Topic!") # => ActiveRecord::RecordNotFound MELHORANDO A PERFORMANCE NOS MÉTODOS ASSOCIATION_IDS Se você tiver dois modelos: Post e Comment. Onde um post tem muitos (has_many) comentários. Se você executar: 18

19 Capitulo 1: ActiveRecord Post.first.comment_ids O Rails usará a seguinte query para recuperar os ids: SELECT * FROM `comments` WHERE (`comments`.post_id = 1) Mas neste caso, não precisamos dos objetos inteiros. A seguinte query seria mais do que suficiente para o funcionamento deste método, além de possuir uma performance melhor: SELECT `comments`.id FROM `comments` WHERE (`comments`.post_id = 1) Tanto para associações has_many, como para associações has_many incluir esta melhora de performance a partir desta versão. :through o código do Rails foi alterado para MAIS UM FINDER DINÂMICO Aumentando o número de finders dinâmicos do find_by e o find_all_by. ActiveRecord, agora temos o find_last_by. Já tínhamos os famosos Além de simplificar, ficou muito mais elegante recuperar o último comentário feito por um usuário, por exemplo. Veja: Comment.find_last_by_author("Carlos Brando") # é a mesma coisa que Comment.last(:conditions => { :author => "Carlos Brando" }) 19

20 Ruby on Rails O que há de novo? SUPORTE À OPÇÃO :LIMIT NO MÉTODO UPDATE_ALL O método update_all agora também funciona com a opção :limit. Isto é muito bom porque garante que ao usar o update_all em associações has_many que façam uso da opção :limit tudo funcionará adequadamente. NOVAS OPÇÕES PARA O MÉTODO COMPOSED_OF O método composed_of recebeu duas novas opções: :constructor e :converter. A opção :constructor pode receber um símbolo com o nome de um método ou um Proc. Por padrão, a classe de composição é criada através do método new, recebo todos os atributos mapeadas como parâmetros, exatamente na ordem que em foram mapeados. Se por algum motivo a sua classe não aceitar esta convenção, você deve fazer uso da opção :constructor. Com ela você pode alterar a forma como sua classe deve ser criada. Veja um exemplo retirado da própria documentação do Rails: composed_of :ip_address, :class_name => 'IPAddr', :mapping => %w(ip to_i), :constructor => Proc.new { ip IPAddr.new(ip, Socket::AF_INET) } No exemplo, como você pode ver, ao criar uma nova instancia da classe IPAddr é necessário informar mais um parâmetro ao construtor. Fazo uso da opção :constructor isto se torna bem simples. Quanto a opção :converter, ela também aceita um símbolo que represente um método da classe informada na opção :class_name ou um Proc, e é disparado quando um valor diferente de uma instância da classe informada for passado para a propriedade criada, o que torna necessário uma conversão. Mais um exemplo: 20

21 Capitulo 1: ActiveRecord composed_of :balance, :class_name => "Money", :mapping => %w(balance amount), :converter => Proc.new { balance Money.parse(balance) } No exemplo acima o método balance= sempre estará esperando por uma instancia da classe Money, mas caso um outro tipo de objeto seja informado ele deverá ser convertido usando o método parse do objeto Money. Com esta nova opção não devemos mais usar o bloco de conversão que o método permitia antes, a conversão deve ser feita através do uso da opção :converter. ATUALIZANDO UMA ASSOCIAÇÃO ATRAVÉS DE SUA FOREIGN KEY Não sei dizer se isto é um bug ou não, mas na minha opinião isto representava um problema. Veja o código abaixo, onde tento alterar a conta de um usuário usando sua foreign key em um projeto Rails 2.1 ou anterior: class User < ActiveRecord::Base belongs_to :account user = User.first # => #<User id: 1, login: "admin", account_id: 1> user.account # => #<Account id: 1, name: "My Account"> user.account_id = 2 # => 2 21

22 Ruby on Rails O que há de novo? user.account # => #<Account id: 1, name: "My Account"> Note que estou alterando a conta do usuário, mas a associação não foi atualizada. Mesmo depois de salvar o objeto user, se ele não for recarregado, a associação continuará mostrando a conta errada. No Rails 2.2 este problema foi corrigido. Veja: class Comment < ActiveRecord::Base belongs_to :post comment = Comment.first # => #<Comment id: 1> >> comment.post # => #<Post id: 1> >> comment.post_id = 2 # => 2 >> comment.post # => #<Post id: 2> Veja que ao alterar o post por meio de sua foreign key, automaticamente a associação foi atualizada. ALIAS_ATTRIBUTE FUNCIONANDO COM DIRTY OBJECTS Para enter esta alteração, vamos precisar analisar o mesmo código so executado em uma versão mais antiga do Rails e depois nesta nova versão. Vamos pegar um modelo como exemplo: 22

23 Capitulo 1: ActiveRecord class Comment < ActiveRecord::Base alias_attribute :text, :body Note que estou usando o método alias_attribute para criar um alias para o atributo body com o nome de text. Na teoria este método deveria replicar todos os métodos de leitura, escrita, pesquisa e qualquer outro que envolva o atributo body. Mas vejamos um exemplo so executado no Rails 2.1 ou anterior: c = Comment.first # => #<Comment id: 1, body: "my comment"> c.body # => "my comment" c.text # => "my comment" c.body = "a new message" # => "a new message" c.body_changed? # => true c.text_changed? # => NoMethodError: undefined method `text_changed?'... Ao executar o método text_changed? temos um erro, porque o alias_attribute não estava replicando os métodos de rastreamento, mas isto já foi corrigido. Veja o mesmo código executado agora em um projeto Rails 2.2: c = Comment.first # => #<Comment id: 1, body: "my comment"> c.body 23

24 Ruby on Rails O que há de novo? # => "my comment" c.text # => "my comment" c.body = "a new message" # => "a new message" c.body_changed? # => true c.text_changed? # => true c.text_change # => ["my comment", "a new message"] NOVO MÉTODO DE INSTÂNCIA MODEL#DELETE Para tornar o ActiveRecord mais consistente foi adicionado o método de instância Model#delete. Ele é similar ao método de classe com o mesmo nome. O método delete, diferente do método destroy, apaga o registro do banco de dados sem disparar callbacks, como o before_destroy e o after_destroy. Este método também não aplicará nenhuma das regras impostas na associação através de cláusulas como client = Client.find(1) client.delete 24 :depent.

25 Capitulo 1: ActiveRecord TORNANDO ATRIBUTOS DO ACTIVERECORD PRIVADOS No Rails 2.2 você poderá definir atributos do ActiveRecord como private. Como estes atributos são criados via metaprogramação, até agora isto era impossível. Para enter como isto funcionará, vamos tornar o atributo name da classe User privado: class User < ActiveRecord::Base private def name "I'm private" Agora ao tentar recuperar o valor do atributo name: user = User.first # => #<User id: 1, name: "teste"> user.name # => NoMethodError: undefined method `NoMethodError' for #<User:0x234df08> Veja que uma exceção NoMethodError foi disparada ao executar o método que agora é privado. Por outro lado eu posso alterar o nome do usuário, já que o método name= é ainda público. user.name = "Carlos" # => "Carlos" 25

26 Ruby on Rails O que há de novo? Capitulo 2 ActiveSupport ARRAY#SECOND ATÉ ARRAY#TENTH No objeto Array já tínhamos o método first e last, então porque não ter também os métodos second, third, fourth e assim por diante? É isso mesmo, foram acrescentados ao objeto Array os métodos que vão do second (segundo) até o tenth (décimo), que servem para retornar o objeto especifico dentro do Array (o terceiro objeto do array, por exemplo). Vamos aos exemplos: array = (1..10).to_a array.second array.third array.fourth 26 # => array[1] # => array[2] # => array[3]

27 Capitulo 2: ActiveSupport array.fifth array.sixth array.seventh array.eighth array.ninth array.tenth # # # # # # => => => => => => array[4] array[5] array[6] array[7] array[8] array[9] NOVO MÉTODO ENUMERABLE#MANY? Um novo método foi adicionado ao módulo Enumerable: many?. E como o nome mesmo diz, ele verifica se a coleção possui mais de um objeto, ou em outras palavras se tem muitos objetos associados. Este método é um alias para collection.size > 1. Vamos ver alguns exemplos: >> [].many? # => false >> [ 1 ].many? # => false >> [ 1, 2 ].many? # => true Além deste formato dado nos exemplos, este método também recebeu uma nova implementação permitindo que ele aceite blocos, que funciona exatamente como o método any?. Vamos aos exemplos: >> x = %w{ a b c b c } # => ["a", "b", "c", "b", "c"] 27

28 Ruby on Rails O que há de novo? >> x.many? # => true >> x.many? { y y == 'a' } # => false >> x.many? { y y == 'b' } # => true # um outro exemplo... people.many? { p p.age > 26 } Apenas para relembrar e reforçar, este método só retornará true se mais de um objeto passar nas condições quando usado o bloco, e quando a coleção tiver mais de um objeto quando usado sem condicionais. Só uma curiosidade, o método inicialmente se chamaria several?, mas foi alterado para many? depois. CRIE REGRAS PARA O STRING#HUMANIZE Já faz um certo tempo que Pratik Naik estava tentando colocar este patch no Rails e parece que finalmente conseguiu. No arquivo config/initializers/inflections.rb você tem a opção de acrescentar novas inflexões para pluralização, singularização e outros: Inflector.inflections do inflect inflect.plural /^(ox)$/i, '\1en' inflect.singular /^(ox)en/i, '\1' inflect.irregular 'person', 'people' 28

29 Capitulo 2: ActiveSupport inflect.uncountable %w( fish sheep ) No Rails 2.2 você também pode incluir inflexões para o método exemplos: humanize da classe String. Vamos aos famosos 'jargon_cnt'.humanize # => "Jargon cnt" 'nomedojogo'.humanize # => "Nomedojogo" ActiveSupport::Inflector.inflections do inflect inflect.human(/_cnt$/i, '\1_count') inflect.human('nomedojogo', 'Nome do Jogo') 'jargon_cnt'.humanize # => "Jargon count" 'nomedojogo'.humanize # => "Nome do jogo" INTRODUZINDO MEMOIZABLE PARA CACHE DE ATRIBUTOS Performance é coisa séria, e um dos métodos mais usados para aumentar a velocidade de execução em códigos é o uso de cache. Quem nunca fez algo assim? class Person < ActiveRecord::Base def = um_calculo_muito_complexo Nesta versão do Rails temos uma forma mais elegante de fazer isto usando o método memoize (é memoize mesmo e não memorize). Vamos alterar o exemplo acima para funcionar com esta nova funcionalidade: 29

30 Ruby on Rails O que há de novo? class Person < ActiveRecord::Base def age um_calculo_muito_complexo memoize :age O método age será executado apenas uma vez e o seu retorno será armazenado e retornado em futuras chamadas ao método. Só existe uma diferença entre os dois códigos acima. No primeiro, como o método é executado todas as vezes, se o valor armazenado na for nil ou false o cálculo (muito complexo) será executado novamente até termos a idade da pessoa. No segundo exemplo, o método age só será executado uma vez e o valor retornado será sempre devolvido nas próximas chamadas, mesmo que seja nil ou false. Se em algum momento você precisar desligar ou religar o cache em propriedade marcadas com o memoize, você pode fazer uso dos métodos unmemoize_all e = Person.first # Para desligar o cache do método # Para ligar novamente o cache do método age 30

31 Capitulo 2: ActiveSupport NOVO MÉTODO OBJECT#PRESENT? Um novo método foi acrescentado à classe Object. O método present? é o equivalente a!object#blank?. Em outras palavras um objeto está presente se ele não for vazio. Mas o que é um objeto vazio? class EmptyTrue def empty?() true; a b c d e g g h = = = = = = = = EmptyTrue.new nil false '' ' ' " \n\t \r " [] {} a.present? b.present? c.present? d.present? e.present? f.present? g.present? h.present? # # # # # # # # => => => => => => => => false false false false false false false false Todos estes objetos são vazios ou não estão presentes. Mas, muito cuidado, algumas pessoas tem confundido as coisas. Veja alguns exemplos de objetos que NÃO estão vazios, ou seja, estão presentes: 31

32 Ruby on Rails O que há de novo? class EmptyFalse def empty?() false; a b c d e f g h = = = = = = = = EmptyFalse.new Object.new true 0 1 'a' [nil] { nil => 0 } a.present? b.present? c.present? d.present? e.present? f.present? g.present? h.present? # # # # # # # # => => => => => => => => true true true true true true true true Qualquer objeto que contenha um valor, está presente, isto vale até mesmo para um porque o Array não está vazio. Array preenchido com um nil, STRINGINQUIRER Uma nova classe foi incluída ao Rails, a classe StringInquirer. Para enter como funciona, vou ter de explicar usando alguns exemplos. Vamos criar uma classe chamada Cliente que contém um método que retorna o status do cliente: 32

33 Capitulo 2: ActiveSupport class Cliente def status "ativo" c = Cliente.new c.status # => "ativo" c.status == "ativo" # => true c.status == "inativo" # => false Ok, até aqui tudo normal. Agora vou modificar a implementação do método status usando a classe StringInquirer, sempre lembrando que o retorno do método status pode vir de uma coluna do banco de dados (claro), isto é apenas um exemplo. class Cliente def status ActiveSupport::StringInquirer.new("ativo") c = Cliente.new c.status # => "ativo" # Agora vem a grande diferença: c.status.ativo? # => true 33

34 Ruby on Rails O que há de novo? c.status.inativo? # => false Para verificar se o status do cliente é o esperado, ao invés de comparar status e o sinal de interrogação. Strings, eu uso um método com o valor do Claro que isto já começou a ser usado no próprio Rails. Por exemplo, caso você precise verificar se o Rails foi carregado em ambiente de produção, você pode substituir o velho Rails.env == "production", por: Rails.env.production? NOVA SINTAXE PARA TESTES Uma nova forma de se declarar testes foi adicionada ao Rails, usando declarações test/do. Veja: test "verify something" do #... Este é o novo padrão para testes do Rails, veja como ficou um arquivo de teste unitário recém criado nesta versão: require 'test_helper' class PostTest < ActiveSupport::TestCase # Replace this with your real tests. test "the truth" do assert true 34

35 Capitulo 2: ActiveSupport A forma convencional, usando métodos, também continuará funcionando, então nossos testes antigos não quebrarão. LIGANDO E DESLIGANDO CARGA DE DEPENDÊNCIAS Um novo parâmetro de inicialização foi adicionado ao Rails, a fim de ligar ou desligar a carga de novas classes durante uma requisição. config.depency_loading = true # ou config.depency_loading = false Se depency_loading for verdadeiro, durante uma requisição o Rails estará apto a carregar em memória qualquer classe que não tenha sido inicialmente carregada durante a inicialização do projeto. Caso ele seja falso, estas classes serão ignoradas. Se você for executar seu projeto em um ambiente de threads concorrentes deve desabilitar esta opção e carregar todas estas classes usando eager load ou através do método require na inicialização do sistema. FILE.ATOMIC_WRITE COPIA AS PERMISSÕES DO ARQUIVO ORIGINAL Talvez alguns não conheçam o método File.atomic_write. Ele serve para escrever arquivos de forma atômica. Isto pode ser muito útil em situações onde você não quer que outros processos ou threads vejam um arquivo escrito pela metade. File.atomic_write("important.file") do file file.write("hello") 35

Omega Tecnologia Manual Omega Hosting

Omega Tecnologia Manual Omega Hosting Omega Tecnologia Manual Omega Hosting 1 2 Índice Sobre o Omega Hosting... 3 1 Primeiro Acesso... 4 2 Tela Inicial...5 2.1 Área de menu... 5 2.2 Área de navegação... 7 3 Itens do painel de Controle... 8

Leia mais

Finalizando o Pedido (Tarefa G) Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br)

Finalizando o Pedido (Tarefa G) Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br) Finalizando o Pedido (Tarefa G) Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br) Feedback do Cliente Com os itens no carrinho é hora de permitir a finalização da venda Operação conhecida como "Check Out"

Leia mais

Configurando o IIS no Server 2003

Configurando o IIS no Server 2003 2003 Ser ver Enterprise Objetivo Ao término, você será capaz de: 1. Instalar e configurar um site usando o IIS 6.0 Configurando o IIS no Server 2003 Instalando e configurando o IIS 6.0 O IIS 6 é o aplicativo

Leia mais

4 O Workflow e a Máquina de Regras

4 O Workflow e a Máquina de Regras 4 O Workflow e a Máquina de Regras O objetivo do workflow e da máquina de regras é definir um conjunto de passos e regras configuráveis. Ao longo de sua execução, um usuário consegue simplificar o seu

Leia mais

Como criar e editar Blogs. Manual Básico do. Mario Roberto Barro Jerino Queiroz Ferreira Profª Drª Salete Linhares Queiroz

Como criar e editar Blogs. Manual Básico do. Mario Roberto Barro Jerino Queiroz Ferreira Profª Drª Salete Linhares Queiroz Como criar e editar Blogs Manual Básico do Mario Roberto Barro Jerino Queiroz Ferreira Profª Drª Salete Linhares Queiroz São Carlos Setembro / 2008 Sumário Introdução...3 Criando um Blog no Edublogs...4

Leia mais

Desenvolvendo Websites com PHP

Desenvolvendo Websites com PHP Desenvolvendo Websites com PHP Aprenda a criar Websites dinâmicos e interativos com PHP e bancos de dados Juliano Niederauer 19 Capítulo 1 O que é o PHP? O PHP é uma das linguagens mais utilizadas na Web.

Leia mais

Novell Vibe 4.0. Março de 2015. Inicialização Rápida. Iniciando o Novell Vibe. Conhecendo a interface do Novell Vibe e seus recursos

Novell Vibe 4.0. Março de 2015. Inicialização Rápida. Iniciando o Novell Vibe. Conhecendo a interface do Novell Vibe e seus recursos Novell Vibe 4.0 Março de 2015 Inicialização Rápida Quando você começa a usar o Novell Vibe, a primeira coisa a se fazer é configurar sua área de trabalho pessoal e criar uma área de trabalho de equipe.

Leia mais

PHP Profissional. Alexandre Altair de Melo / Mauricio G. F. Nascimento. Editora Novatec

PHP Profissional. Alexandre Altair de Melo / Mauricio G. F. Nascimento. Editora Novatec Introdução Como a idéia deste livro é ir direto ao ponto, vou fazer isso já na introdução. A idéia desse livro não é explicar a teoria e filosofia do PHP, da orientação a objetos, as maravilhas dos design

Leia mais

Controle de acesso. http://www.larback.com.br. .com.br

Controle de acesso. http://www.larback.com.br. .com.br http://www.larback Controle de acesso Construiremos um sistema simples para cadastro de links. O sistema terá uma página pública (onde serão exibidos os links) e uma área administrativa, onde os usuários

Leia mais

Conecta S_Line. 2.2 Downloads Para instalar o Conecta S_Line, basta acessar www.sline.com.br/downloads.aspx

Conecta S_Line. 2.2 Downloads Para instalar o Conecta S_Line, basta acessar www.sline.com.br/downloads.aspx 1 Introdução O Conecta S_Line permite que o laboratório envie à Central S_Line os resultados de exames gerados pelo Sistema de Informação Laboratorial (LIS) em forma de arquivos digitais. Todo o processo

Leia mais

Scriptlets e Formulários

Scriptlets e Formulários 2 Scriptlets e Formulários Prof. Autor: Daniel Morais dos Reis e-tec Brasil Programação Avançada Para Web Página1 Meta Permitir ao aluno aprender a criar um novo projeto Java para web no Netbeans IDE,

Leia mais

O essencial do comando mysqladmin, através de 18 exemplos

O essencial do comando mysqladmin, através de 18 exemplos O essencial do comando mysqladmin, através de 18 exemplos Elias Praciano O mysqladmin é uma ferramenta de linha de comando que vem junto com a instalação do servidor MySQL e é usada por administradores

Leia mais

INTRODUÇÃO À TECNOLOGIA SERVLETS

INTRODUÇÃO À TECNOLOGIA SERVLETS PROGRAMAÇÃO SERVIDOR EM SISTEMAS WEB INTRODUÇÃO À TECNOLOGIA SERVLETS Prof. Dr. Daniel Caetano 2012-1 Objetivos Apresentar o conceito aplicações orientada a serviços via web Apresentar o papel dos contentores

Leia mais

P S I 2. º A N O F 5 M E S T R E / D E T A L H E E P E S Q U I S A. Criar uma relação mestre-detalhe. Pesquisa de informação

P S I 2. º A N O F 5 M E S T R E / D E T A L H E E P E S Q U I S A. Criar uma relação mestre-detalhe. Pesquisa de informação P S I 2. º A N O F 5 M E S T R E / D E T A L H E E P E S Q U I S A Módulo 18 Ferramentas de Desenvolvimento de Páginas Web Criar uma relação mestre-detalhe 1. Cria uma cópia da página «listaferram.php»

Leia mais

Parte I. Demoiselle Mail

Parte I. Demoiselle Mail Parte I. Demoiselle Mail Para o envio e recebimento de e-s em aplicativos Java, a solução mais natural é usar a API JavaMail [http:// www.oracle.com/technetwork/java/java/index.html]. Ela provê um framework

Leia mais

Instalando o IIS 7 no Windows Server 2008

Instalando o IIS 7 no Windows Server 2008 Goiânia, 16/09/2013 Aluno: Rafael Vitor Prof. Kelly Instalando o IIS 7 no Windows Server 2008 Objetivo Esse tutorial tem como objetivo demonstrar como instalar e configurar o IIS 7.0 no Windows Server

Leia mais

[MANUAL DE INTEGRAÇÃO PARA SITES DE MEMBROS]

[MANUAL DE INTEGRAÇÃO PARA SITES DE MEMBROS] 2011 [MANUAL DE INTEGRAÇÃO PARA SITES DE MEMBROS] Destinado a usuários que desejam vender conteúdo premium, disponível em sites de membros, através da plataforma Hotmart. Versão do documento: 1.0, 11/04/2011.

Leia mais

Instalando o IIS 7 no Windows Server 2008

Instalando o IIS 7 no Windows Server 2008 Goiânia, 16/09/2013 Aluno: Rafael Vitor Prof. Kelly Instalando o IIS 7 no Windows Server 2008 Objetivo Esse tutorial tem como objetivo demonstrar como instalar e configurar o IIS 7.0 no Windows Server

Leia mais

Exibindo o Catálogo (Tarefa C) Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br)

Exibindo o Catálogo (Tarefa C) Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br) Exibindo o Catálogo (Tarefa C) Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br) Iteração C1: CRIANDO A LISTAGEM DO CATÁLOGO Feedback do Cliente O cliente foi queseonado sobre prioridades Gostaria de ver

Leia mais

1 REQUISITOS BÁSICOS PARA INSTALAR O SMS PC REMOTO

1 REQUISITOS BÁSICOS PARA INSTALAR O SMS PC REMOTO 1 ÍNDICE 1 REQUISITOS BÁSICOS PARA INSTALAR O SMS PC REMOTO... 3 1.1 REQUISITOS BASICOS DE SOFTWARE... 3 1.2 REQUISITOS BASICOS DE HARDWARE... 3 2 EXECUTANDO O INSTALADOR... 3 2.1 PASSO 01... 3 2.2 PASSO

Leia mais

FRWTC800 - Desenvolvimento Web com Ruby on Rails

FRWTC800 - Desenvolvimento Web com Ruby on Rails FRWTC800 - Desenvolvimento Web com Ruby on Rails SOBRE A FRAMEWORK A Framework (www.frwtc.com) atua diretamente com profissionais do segmento de tecnologia em busca de capacitação, atualização e certificação,

Leia mais

SSE 3.0. Guia Rápido. Módulo Secretaria. Nesta Edição

SSE 3.0. Guia Rápido. Módulo Secretaria. Nesta Edição SSE 3.0 Guia Rápido Módulo Secretaria Nesta Edição 1 Acessando o Módulo Secretaria 2 Cadastros Auxiliares 3 Criação de Modelos Definindo o Layout do Modelo Alterando o Layout do Cabeçalho 4 Parametrização

Leia mais

Novell Vibe 3.4. Novell. 1º de julho de 2013. Inicialização Rápida. Iniciando o Novell Vibe. Conhecendo a interface do Novell Vibe e seus recursos

Novell Vibe 3.4. Novell. 1º de julho de 2013. Inicialização Rápida. Iniciando o Novell Vibe. Conhecendo a interface do Novell Vibe e seus recursos Novell Vibe 3.4 1º de julho de 2013 Novell Inicialização Rápida Quando você começa a usar o Novell Vibe, a primeira coisa a se fazer é configurar sua área de trabalho pessoal e criar uma área de trabalho

Leia mais

www.coldfusionbrasil.com.br

www.coldfusionbrasil.com.br www.coldfusionbrasil.com.br 2000 PASSANDO VARIÁVEIS ATRAVÉS DE FORM E URL 3 ALTERA.CFM 3 FORMALTERA.CFM 4 ALTERA.CFM 4 FORMALTERA.CFM 4 CRIANDO E MANIPULANDO VARIÁVEIS COM CFSET 4 VALORES ESTÁTICOS 5 PARÂMETROS

Leia mais

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões Prof. MSc. Hugo Souza Se você precisar manter informações sobre seus usuários enquanto eles navegam pelo seu site, ou até quando eles saem

Leia mais

PHP (Seções, Cookies e Banco de Dados)

PHP (Seções, Cookies e Banco de Dados) PHP (Seções, Cookies e Banco de Dados) André Tavares da Silva andre.silva@udesc.br Seções Basicamente, as seções são métodos que preservam determinados dados ativos enquanto o navegador do cliente estiver

Leia mais

Ave: Manual do usuário

Ave: Manual do usuário As iniciais no canto superior esquerdo indicam a atual lista de espécies em uso. Clique neste campo para abrir uma grade com todas Ave: Manual do usuário Introdução A Janela Inicial O botão Listas Sobre

Leia mais

Cartilha. Correio eletrônico

Cartilha. Correio eletrônico Cartilha Correio eletrônico Prefeitura de Juiz de Fora Secretaria de Planejamento e Gestão Subsecretaria de Tecnologia da Informação Abril de 2012 Índice SEPLAG/Subsecretaria de Tecnologia da Informação

Leia mais

Seu manual do usuário BLACKBERRY INTERNET SERVICE http://pt.yourpdfguides.com/dref/1117388

Seu manual do usuário BLACKBERRY INTERNET SERVICE http://pt.yourpdfguides.com/dref/1117388 Você pode ler as recomendações contidas no guia do usuário, no guia de técnico ou no guia de instalação para BLACKBERRY INTERNET SERVICE. Você vai encontrar as respostas a todas suas perguntas sobre a

Leia mais

AULA APLICAÇÕES PARA WEB SESSÕES E LOGIN E SENHA

AULA APLICAÇÕES PARA WEB SESSÕES E LOGIN E SENHA Sumário Construção de sistema Administrativo... 1 Sistema de Login... 2 SQL INJECTION... 2 Técnicas para Evitar Ataques... 2 Formulário de Login e Senha fará parte do DEFAULT... 5 LOGAR... 5 boas... 6

Leia mais

Rational Quality Manager. Nome: Raphael Castellano Campus: AKXE Matrícula: 200601124831

Rational Quality Manager. Nome: Raphael Castellano Campus: AKXE Matrícula: 200601124831 Rational Quality Manager Nome: Raphael Castellano Campus: AKXE Matrícula: 200601124831 1 Informações Gerais Informações Gerais sobre o RQM http://www-01.ibm.com/software/awdtools/rqm/ Link para o RQM https://rqmtreina.mvrec.local:9443/jazz/web/console

Leia mais

Bruno Jurkovski Lucas Fialho Zawacki. Site do curso: www.inf.ufrgs.br/pet/cursos/ruby

Bruno Jurkovski Lucas Fialho Zawacki. Site do curso: www.inf.ufrgs.br/pet/cursos/ruby Bruno Jurkovski Lucas Fialho Zawacki Site do curso: www.inf.ufrgs.br/pet/cursos/ruby Por que Ruby? Sintaxe limpa e intuitiva: Por que Ruby? Fortemente orientada à objetos Note que não temos os tipos primitivos,

Leia mais

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2 SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2 1.1 Introdução... 2 1.2 Estrutura do IP... 3 1.3 Tipos de IP... 3 1.4 Classes de IP... 4 1.5 Máscara de Sub-Rede... 6 1.6 Atribuindo um IP ao computador... 7 2

Leia mais

TUTORIAL: MANTENDO O BANCO DE DADOS DE SEU SITE DENTRO DO DOMÍNIO DA USP USANDO O SSH!

TUTORIAL: MANTENDO O BANCO DE DADOS DE SEU SITE DENTRO DO DOMÍNIO DA USP USANDO O SSH! UNIVERSIDADE DE SÃO PAULO (USP) ESCOLA DE ARTES, CIÊNCIAS E HUMANIDADES (EACH) TUTORIAL: MANTENDO O BANCO DE DADOS DE SEU SITE DENTRO DO DOMÍNIO DA USP USANDO O SSH! Autoria e revisão por: PET Sistemas

Leia mais

DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0

DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0 DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0 Índice 1 - Objetivo 2 - Descrição do ambiente 2.1. Tecnologias utilizadas 2.2. Estrutura de pastas 2.3. Bibliotecas já incluídas 3 - Características gerais 4 - Criando

Leia mais

O sistema está pedindo que eu faça meu login novamente e diz que minha sessão expirou. O que isso significa?

O sistema está pedindo que eu faça meu login novamente e diz que minha sessão expirou. O que isso significa? Que tipo de navegadores são suportados? Preciso permitir 'cookies' O que são 'cookies' da sessão? O sistema está pedindo que eu faça meu login novamente e diz que minha sessão expirou. O que isso significa?

Leia mais

Módulo Básico. Assando Sites. Relacionamentos, Validação, Consultas e Páginas Dinâmicas. Assando Sites http://assando-sites.com.

Módulo Básico. Assando Sites. Relacionamentos, Validação, Consultas e Páginas Dinâmicas. Assando Sites http://assando-sites.com. Assando Sites Relacionamentos, Validação, Consultas e Páginas Dinâmicas Módulo 4 Dê adeus aos JOINs 1 Relações entre Models 1.1 Definição Relações O CakePHP te dá quatro formas de relacionar (ligar) os

Leia mais

Dicas para usar melhor o Word 2007

Dicas para usar melhor o Word 2007 Dicas para usar melhor o Word 2007 Quem está acostumado (ou não) a trabalhar com o Word, não costuma ter todo o tempo do mundo disponível para descobrir as funcionalidades de versões recentemente lançadas.

Leia mais

WF Processos. Manual de Instruções

WF Processos. Manual de Instruções WF Processos Manual de Instruções O WF Processos é um sistema simples e fácil de ser utilizado, contudo para ajudar os novos usuários a se familiarizarem com o sistema, criamos este manual. Recomendamos

Leia mais

Presskit Guia Rápido. Release 2.0. Presskit

Presskit Guia Rápido. Release 2.0. Presskit Presskit Guia Rápido Release 2.0 Presskit 06/07/2009 Sumário 1 Login 2 Login e Senha...................................... 2 Esqueci minha senha.................................. 2 Fale Com o Suporte...................................

Leia mais

Segurança de Acesso a Banco de Dados no MS SQL Server

Segurança de Acesso a Banco de Dados no MS SQL Server Segurança de Acesso a Banco de Dados no MS SQL Server Para efetuar com sucesso os exemplos que serão mostrados a seguir é necessário que exista no SQL Server uma pessoa que se conecte como Administrador,

Leia mais

Transações Seguras em Bancos de Dados (MySQL)

Transações Seguras em Bancos de Dados (MySQL) Transações Seguras em Bancos de Dados (MySQL) Índice Entendendo os storage engines do MySQL 5 1 As ferramentas 1 Mais algumas coisas que você deve saber 1 Com a mão na massa 2 Mais ferramentas Usando o

Leia mais

Manual de Atualização de Versão Fornece as orientações necessárias para efetuar a atualização da versão do Citsmart no ambiente Linux.

Manual de Atualização de Versão Fornece as orientações necessárias para efetuar a atualização da versão do Citsmart no ambiente Linux. Fornece as orientações necessárias para efetuar a atualização da versão do Citsmart no ambiente Linux. Versão 2.5 10/03/2015 Visão Resumida Data Criação 10/03/2015 Versão Documento 2.5 Projeto Responsáveis

Leia mais

Manual de Instalação. SafeNet Authentication Client 8.2 SP1. (Para MAC OS 10.7)

Manual de Instalação. SafeNet Authentication Client 8.2 SP1. (Para MAC OS 10.7) SafeNet Authentication Client 8.2 SP1 (Para MAC OS 10.7) 2/28 Sumário 1 Introdução... 3 2 Pré-Requisitos Para Instalação... 3 3 Ambientes Homologados... 4 4 Tokens Homologados... 4 5 Instruções de Instalação...

Leia mais

Resumo da Matéria de Linguagem de Programação. Linguagem C

Resumo da Matéria de Linguagem de Programação. Linguagem C Resumo da Matéria de Linguagem de Programação Linguagem C Vitor H. Migoto de Gouvêa 2011 Sumário Como instalar um programa para executar o C...3 Sintaxe inicial da Linguagem de Programação C...4 Variáveis

Leia mais

Manual 2010 Webmaster

Manual 2010 Webmaster Manual 2010 Webmaster Menu 1. Acesso ao sistema 2. Campanhas 2.1 Ver Campanhas Disponíveis 2.2 Minhas Campanhas 3. Formatos 3.1 Banners Automáticos 3.2 Banners Manuais 3.3 E-mail Marketing 3.4 Vitrines

Leia mais

Instalando o WordPress em localhost

Instalando o WordPress em localhost Instalando o WordPress em localhost WordPress sem Mistério LEE ARAUJO htto://wordpresssemmisterio.com.br Sumário Instalando o WordPress em Localhost... 2 O Servidor web... 3 Iniciando o servidor... 6 Criação

Leia mais

Conceitos de extensões Joomla!

Conceitos de extensões Joomla! capítulo 1 Conceitos de extensões Joomla! Entendendo o que é extensão Extensão pode ser entendida como uma pequena aplicação desenvolvida com regras de construção estabelecidas pelo ambiente Joomla!. É

Leia mais

Mais sobre uso de formulários Site sem Ajax

Mais sobre uso de formulários Site sem Ajax Mais sobre uso de formulários Site sem Ajax Página com busca padrão 1 Página com o resultado da busca carregada no local da anterior (o formulário está vazio) Site com Ajax 2 Site usando Ajax para preencher

Leia mais

Integração entre o IBM HTTP SERVER, APACHE WEB Server e IBM Websphere Application Server

Integração entre o IBM HTTP SERVER, APACHE WEB Server e IBM Websphere Application Server Integração entre o IBM HTTP SERVER, APACHE WEB Server e IBM Websphere Application Server Índice Resumo sobre este documento... 3 Integrando o IBM HTTP Server com o IBM WebSphere Application Server... 3

Leia mais

Instalando servidor Apache com MySQL e as linguagens ColdFusion e PHP. XAMPP 1.6.7 (xampp-win32-1.6.7-installer.exe), veja aqui.

Instalando servidor Apache com MySQL e as linguagens ColdFusion e PHP. XAMPP 1.6.7 (xampp-win32-1.6.7-installer.exe), veja aqui. Instalando servidor Apache com MySQL e as linguagens ColdFusion e PHP. Escrito por Marcio Nakano (marcionakano.com.br) Data: 29/09/2008 Disponível em http:///blog/post/instalando-apache-mysql-coldfusionphp.pdf

Leia mais

Notas de Versão. Versão 6.0 SP1

Notas de Versão. Versão 6.0 SP1 Notas de Versão Versão 6.0 SP1 2013 Pitney Bowes Software Inc. Todos os direitos reservados. Esse documento pode conter informações confidenciais ou protegidas por direitos autorais pertencentes à Pitney

Leia mais

Programação Web Aula 10 - Testes, Javascript, Ajax

Programação Web Aula 10 - Testes, Javascript, Ajax Programação Web Aula 10 - Testes, Javascript, Ajax Bruno Müller Junior Departamento de Informática UFPR 28 de Abril de 2014 1 Ambientes de Execução 2 Testes Um exemplo Acrescentando Validação Validação

Leia mais

Os objetivos indicados aplicam-se a duas linguagens de programação: C e PHP

Os objetivos indicados aplicam-se a duas linguagens de programação: C e PHP AGRUPAMENTO DE ESCOLAS DE SANTA COMBA DÃO CURSO PROFISSIONAL DE TÉCNICO DE GESTÃO E PROGRAMAÇÃO DE SISTEMAS INFORMÁTICOS 2012-2015 PROGRAMAÇÃO E SISTEMAS DE INFORMAÇÃO MÓDULO 2 Mecanismos de Controlo de

Leia mais

Guia de instalação para ambiente de Desenvolvimento LINUX

Guia de instalação para ambiente de Desenvolvimento LINUX Guia de instalação para ambiente de Desenvolvimento LINUX Conteúdo deste manual Introdução O guia de instalação... 3 Capítulo 1 Instalando o servidor Web Apache... 4 Teste de instalação do Apache... 9

Leia mais

Estratégia para fazer cópias de segurança ( backup ) em nuvem

Estratégia para fazer cópias de segurança ( backup ) em nuvem 1 de 20 Estratégia para fazer cópias de segurança ( backup ) em nuvem Resolvi documentar uma solução que encontrei para fazer minhas cópias de segurança. Utilizo um software gratuito chamado Cobian Backup

Leia mais

Gravando uma Áudio Conferência

Gravando uma Áudio Conferência Gravando uma Áudio Conferência Para iniciar a gravação da áudio conferência, digite *2. Você ouvirá a seguinte mensagem: Para iniciar a gravação da conferência pressione 1, para cancelar pressione * Ao

Leia mais

Como Criar uma Aula? Na página inicial do Portal do Professor, acesse ESPAÇO DA AULA: Ao entrar no ESPAÇO DA AULA, clique no ícone Criar Aula :

Como Criar uma Aula? Na página inicial do Portal do Professor, acesse ESPAÇO DA AULA: Ao entrar no ESPAÇO DA AULA, clique no ícone Criar Aula : Como Criar uma Aula? Para criar uma sugestão de aula é necessário que você já tenha se cadastrado no Portal do Professor. Para se cadastrar clique em Inscreva-se, localizado na primeira página do Portal.

Leia mais

MANUAL DO USUÁRIO SUMÁRIO

MANUAL DO USUÁRIO SUMÁRIO SUMÁRIO 1. Home -------------------------------------------------------------------------------------------------------- 7 2. Cadastros -------------------------------------------------------------------------------------------------

Leia mais

Introdução a Banco de Dados

Introdução a Banco de Dados Introdução a Banco de Dados Ricardo Henrique Tassi - Departamento de Replicação Índice 1- Introdução... 03 2- Quais são os bancos de dados mais conhecidos hoje em dia...04 3- Quais são os tipos de banco...05

Leia mais

Microsoft Office 2007

Microsoft Office 2007 Produzido pela Microsoft e adaptado pelo Professor Leite Júnior Informática para Concursos Microsoft Office 2007 Conhecendo o Office 2007 Visão Geral Conteúdo do curso Visão geral: A nova aparência dos

Leia mais

Configuração dos Controles Remotos do KDE. Michael Zanetti Tradução: Marcus Gama

Configuração dos Controles Remotos do KDE. Michael Zanetti Tradução: Marcus Gama Configuração dos Controles Remotos do KDE Michael Zanetti Tradução: Marcus Gama 2 Conteúdo 1 Introdução 5 1.1 Requisitos.......................................... 5 2 Uso 6 2.1 Controles remotos e modos................................

Leia mais

Características do PHP. Começando a programar

Características do PHP. Começando a programar PHP Introdução Olá pessoal. Desculpe o atraso na publicação da aula. Pude perceber pelas respostas (poucas) ao fórum que a realização da atividade do módulo I foi relativamente tranquila. Assistam ao vídeo

Leia mais

Solução de acessibilidade. Guia do administrador

Solução de acessibilidade. Guia do administrador Solução de acessibilidade Guia do administrador Julho de 2014 www.lexmark.com Conteúdo 2 Conteúdo Visão geral...3 Configurando o aplicativo...4 Configurando o acesso do usuário...4 Desativando funções

Leia mais

Manual de Atualização de Versão

Manual de Atualização de Versão Fornece as orientações necessárias para efetuar a atualização da versão do Citsmart no ambiente Windows. Versão 1.5 10/03/2015 Visão Resumida Data Criação 10/03/2015 Versão Documento 1.5 Projeto Responsáveis

Leia mais

INSTALANDO E CONFIGURANDO O MY SQL

INSTALANDO E CONFIGURANDO O MY SQL INSTALANDO E CONFIGURANDO O MY SQL Este tutorial tem como objetivo mostrar como instalar o banco de dados My SQL em ambiente Windows e é destinado aqueles que ainda não tiveram um contato com a ferramenta.

Leia mais

Inicialização Rápida do Novell Vibe Mobile

Inicialização Rápida do Novell Vibe Mobile Inicialização Rápida do Novell Vibe Mobile Março de 2015 Introdução O acesso móvel ao site do Novell Vibe pode ser desativado por seu administrador do Vibe. Se não conseguir acessar a interface móvel do

Leia mais

Capture Pro Software. Introdução. A-61640_pt-br

Capture Pro Software. Introdução. A-61640_pt-br Capture Pro Software Introdução A-61640_pt-br Introdução ao Kodak Capture Pro Software e Capture Pro Limited Edition Instalando o software: Kodak Capture Pro Software e Network Edition... 1 Instalando

Leia mais

(Nota Fiscal Eletrônica no Power Systems AS/400) Projeto Nacional Versão 1.0

(Nota Fiscal Eletrônica no Power Systems AS/400) Projeto Nacional Versão 1.0 Manual do usuário (Nota Fiscal Eletrônica no Power Systems AS/400) Projeto Nacional Versão 1.0 29-03-2011 1 de 32 Í ndice 1. Descrição Geral do Sistema 1.1 Descrição 1.2 Desenho do Processo 2. Aplicação

Leia mais

Versionamento de Código. Núcleo de Desenvolvimento de Software

Versionamento de Código. Núcleo de Desenvolvimento de Software Versionamento de Código Núcleo de Desenvolvimento de Software Por quê? Facilidades de utilizar um sistema de versionamento de código. Várias versões Quando se salva uma nova versão de um arquivo, a versão

Leia mais

FERRAMENTAS DE COLABORAÇÃO CORPORATIVA

FERRAMENTAS DE COLABORAÇÃO CORPORATIVA FERRAMENTAS DE COLABORAÇÃO CORPORATIVA Manual de Utilização Google Grupos Sumário (Clique sobre a opção desejada para ir direto à página correspondente) Utilização do Google Grupos Introdução... 3 Página

Leia mais

Manual das funcionalidades Webmail AASP

Manual das funcionalidades Webmail AASP Manual das funcionalidades Webmail AASP 1. Configurações iniciais 2. Regras 3. Histórico da conta 4. Autorresposta 5. Dados de acesso (alterando senha de acesso) 6. Identidade (assinatura) 7. Redirecionamento

Leia mais

V1.1 SITE EM UM SITE 11/2015 MINUTOS APRENDA A PROGRAMAR IMAGINE FAZER O SEU PRIMEIRO PROGRAMA EM 180 SEGUNDOS WWW.DESAFIO3MINUTOS.COM.

V1.1 SITE EM UM SITE 11/2015 MINUTOS APRENDA A PROGRAMAR IMAGINE FAZER O SEU PRIMEIRO PROGRAMA EM 180 SEGUNDOS WWW.DESAFIO3MINUTOS.COM. 11/2015 UM SITE SITE EM EM UM 3 APRENDA A PROGRAMAR IMAGINE FAZER O SEU PRIMEIRO PROGRAMA EM 180 SEGUNDOS MINUTOS V1.1 WWW.DESAFIO3MINUTOS.COM.BR ELIELBARONE RUBY ON RAILS O que é? Ruby on Rails é um framework,

Leia mais

INSCRIÇÃO ON- LINE A PARTIR DE 2015 INDICADO PARA ATLETAS E ASSOCIAÇÕES

INSCRIÇÃO ON- LINE A PARTIR DE 2015 INDICADO PARA ATLETAS E ASSOCIAÇÕES INSCRIÇÃO ON- LINE A PARTIR DE 2015 INDICADO PARA ATLETAS E ASSOCIAÇÕES 2015 ABMN Escrito por Julian Romero jromero@abmn.org.br Revisão: 9 February 2015 CARACTERÍSTICAS DO SISTEMA ACESSO ATRAVÉS DE MATRÍCULA

Leia mais

ADOBE FLASH PLAYER 10.3 Gerenciador de configurações locais

ADOBE FLASH PLAYER 10.3 Gerenciador de configurações locais ADOBE FLASH PLAYER 10.3 Gerenciador de configurações locais PRERELEASE 03/07/2011 Avisos legais Avisos legais Para consultar avisos legais, acesse o site http://help.adobe.com/pt_br/legalnotices/index.html.

Leia mais

A CMNet disponibilizou no dia 24 de junho para download no Mensageiro a nova versão do Padrão dos Sistemas CMNet.

A CMNet disponibilizou no dia 24 de junho para download no Mensageiro a nova versão do Padrão dos Sistemas CMNet. Prezado Cliente, A CMNet disponibilizou no dia 24 de junho para download no Mensageiro a nova versão do Padrão dos Sistemas CMNet. No Padrão 9 você encontrará novas funcionalidades, além de alterações

Leia mais

Introdução ao PHP. Prof. Késsia Marchi

Introdução ao PHP. Prof. Késsia Marchi Introdução ao PHP Prof. Késsia Marchi PHP Originalmente PHP era um assíncrono para Personal Home Page. De acordo com convenções para atribuições de nomes recursivas do GNU foi alterado para PHP Hypertext

Leia mais

Guia de transmissão IPTV 2012 (Nova versão do IPTV)

Guia de transmissão IPTV 2012 (Nova versão do IPTV) Guia de transmissão IPTV 2012 (Nova versão do IPTV) Versão: 1.1 Data: 02/10/2012 Site do IPTV: http://www.iptv.usp.br Sumário: 1. Introdução 2. Instalação do Flash Media Encoder 3. Criando uma transmissão

Leia mais

Instalação do IBM SPSS Modeler Server Adapter

Instalação do IBM SPSS Modeler Server Adapter Instalação do IBM SPSS Modeler Server Adapter Índice Instalação do IBM SPSS Modeler Server Adapter............... 1 Sobre a Instalação do IBM SPSS Modeler Server Adapter................ 1 Requisitos de

Leia mais

Conceitos de Ajax Exemplos de uso do Ajax no braço, muitos exemplos, muito código (HTML, CSS, JavaScript, PHP, XML, JSON)

Conceitos de Ajax Exemplos de uso do Ajax no braço, muitos exemplos, muito código (HTML, CSS, JavaScript, PHP, XML, JSON) Márcio Koch 1 Currículo Formado na FURB em Ciência da Computação Pós graduado em Tecnologias para o desenvolvimento de aplicações web Mestrando em Computação Gráfica na UDESC Arquiteto de software na Senior

Leia mais

Javascript 101. Parte 2

Javascript 101. Parte 2 Javascript 101 Parte 2 Recapitulando O Javascript é uma linguagem de programação funcional Os nossos scripts são executados linha a linha à medida que são carregados. O código que está dentro de uma função

Leia mais

Aula 03 - Projeto Java Web

Aula 03 - Projeto Java Web Aula 03 - Projeto Java Web Para criação de um projeto java web, vá em File/New. Escolha o projeto: Em seguida, na caixa Categorias selecione Java Web. Feito isso, na caixa à direita selecione Aplicação

Leia mais

Vamos criar uma nova Página chamada Serviços. Clique em Adicionar Nova.

Vamos criar uma nova Página chamada Serviços. Clique em Adicionar Nova. 3.5 Páginas: Ao clicar em Páginas, são exibidas todas as páginas criadas para o Blog. No nosso exemplo já existirá uma página com o Título Página de Exemplo, criada quando o WorPress foi instalado. Ao

Leia mais

Tutorial do administrador do HelpCenterLive (Sistema de Ajuda)

Tutorial do administrador do HelpCenterLive (Sistema de Ajuda) Tutorial do administrador do HelpCenterLive (Sistema de Ajuda) Sumário Introdução...3 Entrar (Login)...3 Página Inicial (Home Page)...4 Ajuda...5 Conversação (Chat)...6 Mensagens Registradas...7 Registros...8

Leia mais

JDBC Java Database Connectivity

JDBC Java Database Connectivity 5 JDBC Java Database Connectivity Prof. Autor: Daniel Morais dos Reis e-tec Brasil Programação Avançada Para Web Página1 Meta Trabalhar com bancos de dados em aplicações web em JSP através das classes

Leia mais

PHP Material de aula prof. Toninho (8º Ano)

PHP Material de aula prof. Toninho (8º Ano) Na aula anterior entendemos como se faz o acesso aos nossos arquivos PHP; Como construir um script em php. Nesta aula (3) vamos entender: Como roda o PHP Inserindo comentários Visualizando páginas a partir

Leia mais

Programação Web Prof. Wladimir

Programação Web Prof. Wladimir Programação Web Prof. Wladimir Linguagem de Script e PHP @wre2008 1 Sumário Introdução; PHP: Introdução. Enviando dados para o servidor HTTP; PHP: Instalação; Formato básico de um programa PHP; Manipulação

Leia mais

Introdução. Nesta guia você aprenderá:

Introdução. Nesta guia você aprenderá: 1 Introdução A criação de uma lista é a primeira coisa que devemos saber no emailmanager. Portanto, esta guia tem por objetivo disponibilizar as principais informações sobre o gerenciamento de contatos.

Leia mais

G UIA DE I NSTALAÇÃO. Módulo ipagare para Magento - versão 3.3

G UIA DE I NSTALAÇÃO. Módulo ipagare para Magento - versão 3.3 G UIA DE I NSTALAÇÃO Módulo ipagare para Magento - versão 3.3 De 27/10/2011 ÍNDICE 1. PREFÁCIO... 3 Este documento... 3 Confidencialidade... 3 Histórico de atualizações... 3 2. APRESENTAÇÃO... 4 Novidades...

Leia mais

Cadastro de Orçamento Utilizando Tablet Android

Cadastro de Orçamento Utilizando Tablet Android Cadastro de Orçamento Utilizando Tablet Android Instalação, configuração e manual 1 Conteúdo Instalação... 4 Requisitos mínimos... 4 Windows 8... 5 Instalação do IIS no Windows 8... 5 Configuração do IIS

Leia mais

Inicialização Rápida do Aplicativo de Desktop Novell Filr 1.2 para Windows

Inicialização Rápida do Aplicativo de Desktop Novell Filr 1.2 para Windows Inicialização Rápida do Aplicativo de Desktop Novell Filr 1.2 para Windows Abril de 2015 Inicialização rápida O Novell Filr permite que você acesse facilmente todos os seus arquivos e pastas do desktop,

Leia mais

Procedimentos para Reinstalação do Sisloc

Procedimentos para Reinstalação do Sisloc Procedimentos para Reinstalação do Sisloc Sumário: 1. Informações Gerais... 3 2. Criação de backups importantes... 3 3. Reinstalação do Sisloc... 4 Passo a passo... 4 4. Instalação da base de dados Sisloc...

Leia mais

PASSO A PASSO PARA CADASTRAR OFERTAS, PRODUTOS E SERVIÇOS WWW.WEBLUG.COM.BR.COM.BR

PASSO A PASSO PARA CADASTRAR OFERTAS, PRODUTOS E SERVIÇOS WWW.WEBLUG.COM.BR.COM.BR PASSO A PASSO PARA CADASTRAR OFERTAS, PRODUTOS E SERVIÇOS WWW.WEBLUG.COM.BR.COM.BR 1) Acesse na página principal, ANUNCIAR. 2) Preencha todos os campo 3) Escolha o plano de veiculação 4) Digite o nome

Leia mais

CRIANDO UM BANCO DE DADOS

CRIANDO UM BANCO DE DADOS CRIANDO UM BANCO DE DADOS Bem, antes de iniciarmos propriamente no delphi, devemos aprender a usar sua ferramentas, sendo uma das mais importantes o Database Desktop, pois é com esta que construímos nossos

Leia mais

Guia da Área pessoal

Guia da Área pessoal Guia da Área pessoal A Área pessoal é uma ferramenta de gerenciamento de contas reais MetaTrader 4, depósitos e resgates. A seguir explicaremos como é fácil e prático trabalhar com sua Área pessoal. Registrar

Leia mais

www.coldfusionbrasil.com.br

www.coldfusionbrasil.com.br www.coldfusionbrasil.com.br 2000 1 O que é Cold Fusion? 3 Arquitetura Cold Fusion 3 Cold Fusion Markup Language (CFML) 4 O que devo saber para programar em CFML? 4 HTML 4 Desenho de Banco de Dados Relacionais

Leia mais

O sistema operacional recomendado deve ser o Windows 2003, Windows 2000 ou Windows XP (nessa ordem de recomendação).

O sistema operacional recomendado deve ser o Windows 2003, Windows 2000 ou Windows XP (nessa ordem de recomendação). Módulo Nota Fiscal Eletrônica Sispetro Roteiro de Instalação Módulo Autenticador NFE Pré-Requisitos O sistema operacional recomendado deve ser o Windows 2003, Windows 2000 ou Windows XP (nessa ordem de

Leia mais

Procedimento para instalação do OMNE-Smartweb em Raio-X

Procedimento para instalação do OMNE-Smartweb em Raio-X Procedimento para instalação do OMNE-Smartweb em Raio-X A primeira coisa a analisarmos é onde ficará posicionado o servidor de Raio-x na rede do cliente, abaixo será colocado três situações básicas e comuns

Leia mais