[OFF] Confirmado: Firefox não suporta HTML e é um programa em versão Beta ainda …

January 28, 2009 at 2:24 am | In Padrões Web | 2 Comments

Pois é se confirmou mesmo, como relatei no ultimo post , FireFox não suporta HTML, e é um programa em face Beta… ISSO segundo a VIVO, na qual eu enviei um email reclamando do site delas não funcionar todo no Firefox, eis aqui a resposta um pouco mais longo que a que postei no post anterior.

 

Prezado Sr. Édipo Luis Féderle,  

Bom Dia!

 

“Em atenção ao seu e-mail, agradecemos o seu contato e conforme solicitação descrita pelo senhor, informamos que ao desenvolver o site da Vivo, pensando no conforto e acessibilidade ao cliente, o mesmo foi configurado para atuar de melhor forma no Internet Explorer, salientamos que o Mozilla Firefox não dispõe de todos os recursos necessário para o pleno funcionamento de nossa pagina.

 

Ressaltamos que, nosso site é desenvolvido em uma base de banco de dados MSDE e toda a programação é realizada em arquivos com extensão HTML. Portanto o Firefox é um programa incompatível a essa extensão, salientando que o as versões disponíveis do Firefox no mercado hoje, são versões Beta, ou seja, o fabricante do navegador não disponibilizou uma versão definitiva de seu navegador, onde após realizado, o mesmo poderá disponibilizar o acesso a todas as funcionalidades de nosso site, lembrando que isto vai depender de seus desenvolvedores.

 

Expressamos nossa intenção de esclarecer que a Vivo preocupada em atender a necessidade diferenciada de cada cliente, realiza pesquisas e busca dados que são imprescindíveis para adequar cada vez mais seus produtos e serviços ao perfil de seus consumidores, no qual em breve, clientes que possuam o navegador Mozilla Firefox, também disponibilizarão de todos os recursos utilizados em nosso site.

 

Agradecemos o seu contato e nos colocamos à sua disposição.

 

Atenciosamente,

 

Marco Aurélio Simono                          
Equipe Fale Conosco”

 

 

Resumindo, grande palhaçada isso não?

Porque eu odeio o IE e a importância dos Padrões

January 25, 2009 at 11:14 pm | In Padrões Web | 5 Comments

w3c

Ja faz um tempo que eu desejo escrever alguma coisa do porque eu odeio tanto o navegador da nossa querida e amada Microsoft. Tenho um post para fazer tambem sobre o Flash que é outra tecnologia que eu realmente não suporto ver sendo usada para desenvolver aplicações web (inteiras), mas isso é para outro post. Entao como vinha dizendo queria escrever algo sobre ele a algum tempo, mas so agora realmente me veio a inspiração que eu presisava, bom, eu e mais um amigo(Dyan), estamos trabalhando em um site para um certo cara, então acontece que como somos odiadores do IE, e estavamos programando em Linux, simplesmente esquecemos do nosso IE que infelizmente muita gente usa, tudo bem, no Firefox o site estava sendo renderizado extremamente bem, tudo perfeito, nem um pixel fora do lugar ( :) ), então pensamos, “OPS, não testamos isso no IE, aposto que quebra todo”, lá vai o teste com IE e… BINGO, quebrou completamente, lá vamos nos para o CSS que no firefox tava uma beleza concertar os inumeros Bugs do IE, ou seja, o cara perde um tempo imenso arrumando para funcionar no IE o que poderia ser resolvido se…. o que nos leva ao proximo paragrafo….Padroes Web.

PORQUE O IE NÃO SEGUE PADRÕES WEB.

Isso é uma grande questão que ainda …. bom, EU acho que a questão bem no fundo é dinheiro. Porque você veja bem, você paga para usar o IE? Não?, SIM VOCÊ paga ou ao menos devia pagar, bom, o IE vem com o Windows e você paga pelo Windows então consequentemente você paga pelo IE também. A questão da Microsoft não seguir os padrões Web o real motivo disso eu não sei, eles usam um “padrão” próprio( tem isso ? :) ) que curiosamente é diferente de todos os outros navegadores como o Firefox, o Safari e Netscape, é por isso que certos sites so são renderizados bem no IE por exemplo, no que ela deveria fazer é seguir os padrões e diretrizes da Web (Web Standards) definidaspela w3c http://www.w3.org/ e poupar muita dor de cabeça e TEMPO para desenvolvedores e Designer que tem que ficar aplicando muitos “FIX BUG” no CSS para o IE entender que quando eu digo para ele colocar um background: $F1F1F1 dentro de um fieldset é para ele COLOCAR SOMENTE DENTRO do Fieldset não passar um pouco para fora.

[Esse Bug pode ser resolvido da Seguinte forma] /*


/* FIx para o Maldito IE */
 * html fieldset{
 position: relative;
}

* html legend{
 position:absolute;
 top: -.5em;
 left: .5em;
}
 * html fieldset{
 position: relative;
 margin-top:1em;
 padding-top:.75em;
}

O IE tem a quantidade de usúario que tem porque o Windows é o sistema mais usado no mundo, não porque o IE é um navegador bom, foi o que a Microsoft fez enfiou o IE para os usúario junto com o Windows então as pessoas não se preocupavam em tentar achar algo melhor (leia isso), foi quando O IE acabaou com o Netscape no epsódio que ficou conhecido como Guerra dos Browsers(link). Então para que eles vão se importar em seguir os padrões se eles tem grande parte do mercado dos navegadores?(Veja Estátisticas abaixo) eles fazem uma coisa porca chamada IE e depois quem tem que desenvolver algo que se vire para dar um jeito de que funcione no IE e nos outros corretamente.

A importância de Padrões.

Se existe um padrão ele deve ser seguido por todos, era simples a Microsoft seguir de uma vez porque as coisas vão muito alem de simplesmente seguir os padrões porque pense bem, existe uma questão MUITO importante que é uma coisa chamada acessibilidade, falam tanto em inclusão digital mas esquecem que não é questão de simplesmente vender um PC por 900 reais e pronto as pessoas vão ter acesso a informação, existem muitas outras coisas para trás como por exemplo, pense nos deficients visuais, essas pessoas utilizam um software(Leitor de Tela), para poder navegar no site assim eles conseguem localizar cada elemento do site caso não houvesse um padrão tal coisa seria praticamente impossivel

Já pessou na seguinte situação, você vai numa loja de filmes(dvds) ai compra aquele filme seu preferido, chega em casa e coloca o disco no seu dvd e é exibida a seguinte mensagem, “Esse DVD requer a telivisão de marca X ou Y, porfavor troque a sua.”. Não seria algo bom mas com os padrões tal coisa não acontece, acho que deu para perceber o quão é importante seguir padrões.

Um exemplo de site que eu chamo com todas as letras de MERDA é esse aqui:MERDA acesse ele com o firefox para vocês verem a mensagem, isso é um absurdo sem tamanho.

Atualmente vemos cada vez mais o uso de computadores de mão, principalmente com o UAU do Iphone, usar padrões ajuda muito na hora de visualizar o site num dispositivo desses. Bom resumindo, o IE podia simplesmente seguir esses padrões e iria facilitar muita coisa, mas EU ACHO que a questão não é bem “O IE NAO SEGUE OS PADRÕES” UMA TEORIA, creio eu que na realidade ele “tenta” seguir os padroes definidos pela W3C, mas NÂO CONSEGUE, é isso mesmo pronto, tenta implementar e acabam deixando inumeros BUGS em todo o navegador, que causa essa dor de cabeça toda…. isso nos leva à proxima parte do post onde falo sobre…. IE 8 e os SEGUNDO a Microsoft Padrões Web que dizem agora tar seguindo fielmente.

IE 8 – O fim do Sofrimento?

Toda o blá blá blá da Microsoft sobre o agora IE 8(BETA ainda) que irá seguir CORRETAMENTE os padrões não começou muito bem, pois segundo eles o navegador iria vim com três engine( QUE COISA NÂO?) para a desespero de todos iria vim com a engine do 6 do 7 e com a tão falada engine do 8 que irá seguir os padrões, a festa nem começa a a Microsoft vem dizendo que a engine que irá vim por padrão habilitada será a do 7 e que para as páginas que queiram usar a 8 deveria adicionar um trecho de código(SIM NOVAMENTE) para “dizer” para o IE que ele deve usar a engine do 8, agora eu me pergunto “Mas que MERDA é essa?” qual a lógica em tal negócio? por favor se alguem souber deixe um comentário, mas com as graças de seja lá quem for(mercado) tal absurdo foi completamente rejeitado, e a Microsoft disse que irá ter somente o 8 e funcionando, será?. Esse “será” nos conduz ao próximo paragrafo… O quanto vai demorar a as pessoas que aman o IE e somente os produtos que tem o logo da Microsft são bons vai levar para mudar para o IE 8, não sei se a imagem é verdadeira, mas me parece que o IE 8 Beta passou no teste Acid2, esse teste verifica se o navegador segue os padõres, olhem:

Então acho que ainda não temos um pingo de esperança, espero que até o final eles não tenham recaidas

Mudanças são lentas….

Mudanças são lentas ainda mais por usúarios que estão usando um navegador que TEM 8 ANOS de IDADE(sim, lançado em 27 de agosto de 2001), é que ainda nem mudaram para o IE 7 iram começar usar o IE 8 ali por 2015 eu acho :) . Eu não etendo como alguem consegue usasr um navegador como o IE, eu não odeio ele só porque ele não segue…. e nem porque ele é da Microsoft, eu odeio ele porque ele simplesmente não faz o que se proponhe fazer direito… por curiosidade fiz uma pesquisa no Google por “Fix bug internet Explorer” e que quantidade de resultados foi….

Voltando ao assunto da mudança, acredito eu que irá levar muito tempo para os usário mudarem, pessoas que somente usam o computador para ler emails, entrar em alguns sites, trocar mensagens no msn e por ai vai, não estão nem ligado para padrões, eles querem simplesmente usar, isso acontece como já disse acima porque o IE vem com o Windows e o windows está em mais de……

Fonte: http://marketshare.hitslink.com/

Então creio que esse problema está longe de ser resolvido.

Outros fatos interessantes.

E não parece que é so desenvolvedores que estão preocupados com as armadilhas do IE, segundo o IDG Now o departamente respossavel pela segurança da informação da Alemanha também está, eles estão recomendando que as pessoas largem o IE e mudem para outros como o FireFox e o Opera, segundo eles o Navegador do Bill contem falhas de segurança(Não me diga?Sério?). ESSE Segundo fato é a COISA MAIS LOUCA QUE EU JA VI, e o pior vem de uma empresa quer faz a maior propaganda do Iphone, o epsódio foi relatado por Fernando Caprio, ele mandou um email para a vivo relatando que o site deles não funciona direito no Firefox, Safari Chrome, também passei por isso e tive que ir para o Windows para poder receber minha minha, bom a resposta ao cliente a ViVO disse:

“Prezado (a) Sr (a) Fernando, bom dia! Em atenção ao seu e-mail, informamos que nosso site é desenvolvido em uma base de banco de dados MSDE e toda a programação é realizada em arquivos com extensão HTML. Portanto o Firefox é um programa incompatível a essa extensão.”

Mas que merda é essa, será que foi alguem do setor da faxina que respondeu ou o pessoal de TI é ruim assim mesmo? Como eu disse a VIVO falando tanto do Iphone e o Site delas nem funciona no Safari, ai entra a questão, digamos que uma pessoa que batalhou certo tempo para conseguir comprar o tão sonhado computador, ela está toda feliz com seu novo brinquedo então, essa pessoa é usuário(a) de Linux, obviamente ele usa Firefox ou Opera, ele não irá poder acessar o site da VIVO(por exemplo caso for cliente), porque o site so funciona no IE?

O que devo fazer?

Bom primeiramente MUDE DE NAVEGADOR se você ainda usa o lixo do IE, mude para FireFox ou Opera, ou até mesmo o Safari que agora tem um versão para Windows caso este seja seu OS principal. Segundo: Evangelize o FireFox, indique para seus amigos e parentes, explique os beneficios de seu uso e os maleficios do IE, com isso todo mundo fica feliz.

Enfim, baixe o Firefox(Clicando na imagem abaixo), instale e veja como as coisas são lindas nele, instale extencões para facilitar seu dia-a-dia, navegue na Internet com segurança, e ajude a espalhar ele para o maximo de pessoas que conseguir, esse é o espirito.

OBS: Coloquei essa imagem para ver se anima um pouco o pessoal e eles baixem o FireFox :)

Rails – Testando – Test::Unit – Parte 1

January 5, 2009 at 5:39 pm | In Ruby/Rails | Leave a Comment

testing

Olá, não sou um cara que sabe tudo sobre testes,( não sei quase nada :) , mas vejo a importância que eles tem no bom desenvolvimento, tendo isso em mente começei a estudar testes não escolhi um framework específico para fazer isso como o Rspec, ou algum outro, optei por escolher o framework que vem junto com o Rails que é o Test::Unit, então resolvi escrever aqui um pouco sobre isso e compartilhar, isso é algo simples, sendo que é o primeiro post de um série que eu acredito que será, então fazam bom proveito, e me desculpem os erros( deixem comentários).


1 – Começando: Criando um CRUD simples para os exemplo

Criei apenas um pequeno projeto rails como um CRUD normal para realizar algumas demos aqui, criei um modelo product, contendo o titulo do produto e a quantidade.

2 – Testes de Unidade.

Teste de Unidade são testes realizados nos models.

class ProductTest < Test::Unit::TestCase

ProductTeste é uma subclasse da classe  Test::Unit::TestCase que é onde fica o framework Test::Unit que esta pré-instalado com o rails.

require File.dirname(__FILE__) + '/../test_helper' 

class ProductTest < Test::Unit::TestCase 
  fixtures :products 

  # Replace this with your real tests. 
  def test_truth 
    assert true 
  end 
end 

aqui está o codigo que o rails gerou para nós, então: (veremos fixtures no proximo post)

fixtures :products 

Permite pré-pencher o banco de dados apenas com os dados de testes corretos e o método test_truth,
tudo que começa com test quer dizer que ele irá ser executado como teste pelo framework  a linha assert
true que é de fato o teste, mas o que ela simplesmente faz aqui é um teste se true é verdadeiro :)
______________________________________________________________

OBS 1: Definir um nome de teste como por exemplo:

	def teste_valide_empty_price
		# . . .
	end
isso gera um erro de sintaxe, pois testes devem começar com test e não teste
______________________________________________________________

Porque testar se true é verdaderiro?, Isso serve maior ou menos como um “verificador” para você se
assegurar que tudo está funcionando corretamente com o framework de testes. Bom você pode pensar o que
poderia dar errado mesmo antes de você começar a escrever os seus teste?

Bom tente executar então o teste de unidade:

Loaded suite test/unit/product_test
Started
EE
Finished in 0.014967 seconds.
1) Error:
test_truth(ProductTest):
Mysql::Error: Unknown database 'demo_test' 

2) Error:
test_truth(ProductTest):
Mysql::Error: Unknown database 'demo_test' 

1 tests, 0 assertions, 0 failures, 2 errors 

Viu?? Falhou, facilmente vimos que que ele não conseguiu localizar o banco de dados demo_test, e não
é de menos, não criamos esse banco ainda, como poderia achar?

mysql >> create database demo_test;

Agora rodando novamente o teste:

ruby test/unit/product_test.rb Loaded suite test/unit/product_test
Started
E
Finished in 0.599951 seconds. 

  1) Error:
test_truth(ProductTest):
ActiveRecord::StatementInvalid: Mysql::Error: Table 'demo_test.products' doesn't exist: DELETE FROM
products 

1 tests, 0 assertions, 0 failures, 1 errors 

E BUM, falhou de novo, agora vimos que a tebela não existe, então o rails tem uma tarefa rake que  faz isso:

rake db:test:prepare

Agora sim, rode novamente o teste e tudo deverá funcionar:

ruby test/unit/product_test.rb
Loaded suite test/unit/product_test
Started
.
Finished in 0.014913 seconds. 

1 tests, 1 assertions, 0 failures, 0 errors 

__________________________________________________________
Teste de Unidade são teste que testam models, o que testa uma acão em um controller são testes
funcionais, e o que testa o fluxo por um ou mais controllers são testes de integracão.
__________________________________________________________

o camando rake prenche o esquema de banco de dados igual a do de desevolvimento. 

Agora rodando o teste e vemos que tudo esta certo: 

ruby test/unit/product_test.rb
Loaded suite test/unit/product_test
Started
.
Finished in 0.017633 seconds. 

1 tests, 1 assertions, 0 failures, 0 errors

:) ok.

Agora que esta tudo OK, podemos começar a escrever uns pequenos testes.

O primeiro teste que vamos fazer é assegurar que esses dois campos não passem por um teste onde
seus atributos são vazios.

Como Fazer isso?

Caso um produto inválido( vazio ) seja criado, isso deve ser considerado inválido pelo nosso teste,
e por vez um erro deve ser associado ao campo em questão.

O rails possue um método chamado invalid? Para ver se o produto é valido, e usar o método invalid?
Para ver se existem erros associados a aquele atributo em questão.

Como dizemos para o teste se ele passou ou não ? A resposta para a pergunta são as assertivas(assert),
 elas informam ao framework o que esperamos ser verdade, caso for true nada ocorre, e se for false a
assert falha.

require File.dirname(__FILE__) + '/../test_helper' 

class ProductTest < Test::Unit::TestCase 
  fixtures :products 

  # Replace this with your real tests. 
  def test_truth 
    assert true 
  end 
  
  def test_invalid_empty 
     product = Product.new 
=>assert !product.valid? 
     assert product.errors.invalid?(:titulo) 
     assert product.errors.invalid?(:quantidade) 
  end 
end

Na linha em destaque, dizemos ao framework que  o modelo product não é valido, e usamos o método invalid?
Para verificar se contém algum erro asociado a tal atributo.
Tente executar esse teste e você irá ver que ele vai falhar, então vamos até o nosso model e coloquemos a
validação dos dois campos:

class Product < ActiveRecord::Base 
   validates_presence_of :titulo 
   validates_presence_of :quantidade 
end

Rode e teste e... passou, validação está certa.

Temos um campo chamado quantidade seria interessante que esse campo fosse maior que zero, entao eu me
faço a pergunta:

1 – Quantidade pode ser menor que 0? Não.

OBS 2: Essa dica de se fazer perguntas, é um jeito mais facil de descobrir como escrever seus testes,
ela foi dita pelo Tapájos, na excelente série sobre testes feita por ele.

  def test_quantidade_positiva 
  	   product = Product.new(:titulo => "TV LCD") 
  	   		                             
  	   product.quantidade = -1 
  	   assert !product.valid? 
  	   assert_equal "Should be at least 0", product.errors.on(:quantidade) 
  	   
  	   product.quantidade = 0 
  	   assert !product.valid? 
  	   assert_equal "Should be at least 0", product.errors.on(:quantidade) 
  	   
  	   product.quantidade = 1 
  	   assert product.valid? 
  end

Aqui há uma configuração de três possíveis valores que o campo quantidade pode receber, para ele ver
válido deve ter seu valor >  0, o que o teste faz é criar um novo produto, e configurar a quantidade em 0,
-1, e 1 respectivamente, os dois primeiros asserts são inválidos, pois os valores são 0 e -1, e o último
configurado como 1 dizemos que é valido.

Rode o teste, e BUM, falhou, não estamos fazendo a validacão correta para esse campo, entao no seu model
coloque algo do tipo:

protected 
   def validate 
      errors.add(:quantidade, "Deve ser maior que 0")  if quantidade.nil? || quantidade <= 0 
  end


Criei um método validate, com o conteúdo acima, ele é protected por que não pode ser chamado fora do
contesto do model.

Agora rode o teste novamente e... OK.

Vamos à mais um pergunta:

	A quantidade pode ser um valor quebrado(float)? - Não.

Então vamos ao teste, muito similar aos outros.

def test_inteiro_value
  	   product = Product.new(:titulo => "TV LCD",
  	                                        :quantidade => 1.2 )
  	   
  	   assert !product.valid?
  	   assert product.errors.invalid?(:quantidade)
end

Certo, sem problemas, rodando o teste vemos que o teste não passou, isso significa que temos uma falha
no nosso modelo de validação.

Vamos acresentar a seguinte validação:

	validates_numericality_of :quantidade, :o nly_integer => true

Aqui dizemos que estamos aceitado apenas numero inteiros, para o campo quantidade.

Bom, esse é o fim do primeiro post sobre Testes usando Test Unit, espero que tenha ficado claro,
obviamente isso foi muito superficial, mas creio que deu para dar uma compreendida e ver o quão
importante são os teste( e legal ). Esse post falamos apenas de testes de unidade, no próximo post,
continuaremos falando de testes de unidade.... é isso ai, espero comentários com críticas e sugestões,
abraço a todos.

Referências:

	Agil Development With Rails  - 2 (Livro)

Blog at WordPress.com. | Theme: Pool by Borja Fernandez.
Entries and comments feeds.