Jun 07
Digg
Stumbleupon
Technorati
Delicious

O que o IE 8 tem que o Firefox não tem

Eu nunca fui fã do IE e na maioria das vezes eu utilizo-o por necessidade seja para testar compatibilidade de sites que faço com outros navegadores ou para acessar sites que burramente só funcionam no IE.

Certa vez estudando o IE descobri que ele tem uma opção chamada “Nova sessão“.

O que o IE 8 tem que o Firefox não tem

Se você é programador web já deve fazer idéia o que é isso e como é útil. Para quem não conhece vou explicar o que é e como pode ser útil.

Uma sessão seria um bilhete, passaporte, flyer e sendo mais específico um identificador entre o seu navegador e o servidor. Esse identificador é gerado de acordo com o nome do site que você está acessando e o tipo de navegador que você está utilizando.

Geralmente sessão é utilizada em sites como o do painel da HostNet, Gmail, Orkut e etc… para permanecer logado mesmo quando você fecha a janela ou aba e reabre novamente.

A opção “Nova Sessão” do IE 8 permite que você logue no Gmail, Orkut, painel da HostNet com várias contas diferentes. Por exemplo, eu posso logar com meu usuário no Orkut em uma sessão e depois abrir uma nova sessão e logar com meu usuário Fake. Nesse caso em cada sessão só terá dados pertecentes ao perfil que eu loguei.

Exista um site que gerenciava informações de várias empresas e para você ver a informação de uma empresa você teria que logar com o usuário referente a ela. Caso você quisesse ver informações de outra empresa você teria que deslogar de uma empresa e logar na outra. Com o tempo surgiu a necessidade de comparar dados de duas ou mais empresas lado a lado porém seria trabalhoso ficar logando e deslogando toda hora que fosse necessário ver informações de uma empresa.

Uma solução rápida na época a nível de servidores foi criar um alias no Virtual Host que recebesse qualquer coisa como subdomínio. Exemplo:
*.site_comparador_de_empresas.com

Assim quando fosse necessário abrir informações de 2 empresas bastava abrir uma nova aba e digitar algo antes do domínio principal e logar com os dados da segunda empresa. Exemplo:
segunda_empresa.site_comparador_de_empresas.com

Desse jeito era criada uma nova sessão para o domínio  segunda_empresa.site_comprador_de_empresas.com.

Talvez o Firefox também adote essa solução e a que citei fique obsoleta.


Author: Noel Rocha
Jun 07
Digg
Stumbleupon
Technorati
Delicious

Tabela de Produto com preço total gerado a cada seleção

Esse foi um exercício bastante interessante que tive semana passada na faculdade durante a aula de Linguagem de Script do professor Carlos Sicsu. Nesse aplicativo que faremos será utilizado as tecnologias HTML, DOM e JAVASCRIPT.

O enunciado do exercício era o seguinte:
Construir uma página que contenha uma tabela chamada “produto-preco”. A cada selecao de um produto, o preco total de compra deve ser visualizado ao final da tabela. O preço poderá conter casas decimais.

Criando função calc_value_of_selected_products() em JavaScript que calculará o preço total dos produtos:

<script language="javascript">
function calc_price_of_selected_products() {
	// Obtendo formulário que contém os checkboxes com o valor dos produtos
	var products    = document.getElementById("product")
	// Preço será do tipo float por causa dos produtos que podem ter
	// centavos em seu valor
	var total_price = 0.0
 
	// Verificando quais checkboxes foram selecionados e somando seu valor;
  	for(i = 0; i < products.length; i++) {
		if (products[i].checked == true) {
			total_price = total_price + parseFloat(products[i].value)
		}
	}
 
	// Atualizando div que contém o preço total dos produtos
	document.getElementById("total").innerHTML = "Total: R$ " + total_price.toFixed(2)
}
</script>

Para que o valor em centavos fique com 2 casas decimais é necessário usar a função toFixed(). Exemplo de seu uso:

parseFloat("10.2").toFixed(2) // 10.20
parseFloat("100").toFixed(2) // 100.00

O preço de cada produto ficará dentro do value em cada checkbox. O checkbox deverá chamar a função calc_price_of_selected_product() que criamos toda vez que for clicado nele.

<input type="checkbox" value="135.00" onclick="calc_price_of_selected_products()">

A Construindo a estrutura da tabela em HTML com alguns produtos e seus respectivos preços:

<form id="product">
	<table border="1">
	<tr>
		<td></td>
		<td>Produtos</td>
		<td>R$</td>
	</tr>
	<tr>
		<td><input type="checkbox" value="135.99" onclick="calc_price_of_selected_products()"></td>
		<td>Oculos</td>
		<td>135.99</td>
	</tr>
	<tr>
		<td><input type="checkbox" value="53.20" onclick="calc_price_of_selected_products()"></td>
		<td>Sunga</td>
		<td>53.20</td>
	</tr>
	<tr>
		<td><input type="checkbox" value="97.30" onclick="calc_price_of_selected_products()"></td>
		<td>Biquini</td>
		<td>97.30</td>
	</tr>
	</table>
</form>

A soma de todos os valores selecionados deverá ser exibido pela div total. Essa div deverá ser inserida após o formulário.

<div id="total">Total: R$ 0.00</div>

O funcionamento desse script pode ser visto no endereço abaixo:
http://www.noelrocha.com/blog/examples/tabela_produtos_preco.html


Author: Noel Rocha
May 31
Digg
Stumbleupon
Technorati
Delicious

Função recursiva para evitar Sql Injection

Sempre gostei de fazer funções recursivas e quando posso tento utilizá-las pois acho charmosas e economizam código mas elas requerem um pouco mais de raciocíonio e atenção devido a facilidade de se criar loop/laço infinito.

A primeira função recursiva você nunca esquece. Eu lembro que a minha primeira foi uma implementação de um rm -rf em PHP.

A função recursiva que está logo abaixo é útil quando se tem um site vulnerável a Sql Injection por falta de crítica dos dados ou por causa da diretiva register_globals estar habilitada. Eu fiz e nunca mais precisei dar manutenção nessa função mas se precisarem é só falar.

<?php
function escape($var)
{
	if (!is_array($var)) {
		if(get_magic_quotes_gpc() == 1)
			$var = stripslashes($var);
		return mysql_escape_string($var);
	}
 
	foreach ($var as $chave => $valor)
		$var[$chave] = escape($valor);
 
	return $var;
}
?>

Seu funcionamento é muito simples.

1 - Receber Argumento.
2 - Se o argumento não for um array ele deverá ser escapado e retornado.
3 - Caso contrário o elemento é um array.
3.1 - Logo a função escape() deverá ser chamada para cada elemento do array.
3.2 - O resultado da chamada da função escape() deverá ser salvo na posição em que estava o elemento.
3.3 - O array deverá ser retornado com os seus elementos escapados.

O modo de usar essa função é muito simples e é orientado que seja chamada antes das queries que recebem valores externos.

<?php
// Escapando variáveis passadas por GET
$_GET = escape($_GET);
// Escapando variáveis passadas por POST
$_POST = escape($_POST);
?>

Exemplo de array escapado com essa função:

array (
  'select' => 
  array (
    0 => 'car',
    1 => '1 or \\\'\\\'',
  ),
)

Author: Noel Rocha
Mar 12
Digg
Stumbleupon
Technorati
Delicious

ERROR 1005: Can’t create table (errno: 121) - ErrorNr. 1005

Certa vez ocorreu esse erro quando um amigo restaurava backup do mysql e infelizmente não tinha muita coisa na web para auxiliar a resolver o erro. A mensagem de erro é bem clara LOL se você for um desenvolvedor do mysql rsrsrs…

Descobri depois de muita pesquisa que esse erro ocorre porque a query de criação da tabela possui uma CONSTRAINT que tem o mesmo nome de uma outra CONSTRAINT de alguma tabela existente no banco.

Para resolver isso é só alterar o nome de uma das CONSTRAINT :p

Bom, agora está mastigadinho para vocês :p


Author: Noel Rocha
Dec 24
Digg
Stumbleupon
Technorati
Delicious

Esmola para um pobre desenvolvedor

Achei muito engraçado essa propaganda que achei em uma veículo de comunicação que não me lembro. :P

esmola_site

Na HostNet por apenas R$ 39,90 você consegue abrir seu site. O registro de domínio é apenas R$ 30 anuais e a hospedagem é apenas R$ 9,90 mensais.


Author: Noel Rocha
Dec 24
Digg
Stumbleupon
Technorati
Delicious

Top 5 Erros de SEO

Li esse excelente artigo do Bruno Miranda no mestreSeo.com.br e achei interessante colocar aqui no blog. Tenho certeza que será útil a todos. Quem não conhece SEO e quer uma ajudinha, a www.hostnet.com tem um sistema que te dá uma baita mão com SEO. Maiores detalhes é só acessar o endereço http://www.hostnet.com.br/seo.php

Nesse artigo é listado 5 casos de SEO, envolvendo marcas famosas e seus respectivos sites. Falaremos desde erros graves de SEO, até casos onde foram gerados buzz negativos em relação a grandes empresas.

1-Caso do New York Times

Segundo Matt Cutts  sugere, o Google e outros search engines só podem varrer as partes que não são restritas dos sites. Por isso, essas sessões devem ter conteúdo novo e atualizado sempre.

imagem12O problema começa porque o NYT na época disponibilizou os conteúdos produzidos nos últimos sete dias a todos os visitantes, mas os conteúdos mais antigos ficaram disponíveis apenas para visitantes registrados, e os conteúdos especiais apenas para membros.

Assim, os motores de busca sabiam que o site era relevante, pois conseguiam encontrar até 20 milhões de páginas, mas não conseguiam indexar 20 milhões de vezes o formulário de login para os visitantes registrados e membros.

A solução foi passar a mostrar alguns conteúdos para os motores de pesquisa e outros para os visitantes normais, fazendo assim com que os motores de pesquisa consigam indexar corretamente todo o site, mas continuando a pedir aos outros visitantes para se registrarem.

Segundo Danny Sullivan editor do SearchEngineWatch, o New York Times mostrou ao Google que é possível fazer uso de cloaking sem objetivar spam ou qualquer outra técnica ilegal.

Depois do caso do New York Times a idéia de cloaking sem spam vem sendo muito mais aceita.

2-Google Pune site das alemãs Bmw e Ricoh

O Google deixou de exibir o site alemão da BMW e da Ricoh pelos mesmos adotarem técnicas que artificialmente os posicionavam nas primeiras posições das respostas do buscador.

Estes sites usavam uma técnica conhecida como “doorway pages”, que “exibem” um conteúdo feito sob medida para os sistemas dos buscadores e outras páginas para os visitantes reais.

  • Página da BMW mostrada para os sistemas de busca

  • BMW

Read more


Author: Noel Rocha
Dec 24
Digg
Stumbleupon
Technorati
Delicious

Os 5 maiores mitos sobre linux

5. Não vou conseguir conectar o meu Ipod ou MP3.

A maioria das pessoas têm algum tipo de MP3 player e necessitam de um computador para colocar músicas neles. Alguns MP3s necessitam de softwares próprios do desenvolvedor do produto para poder gerenciá-lo, é o caso do Ipod. Mas isso não impede que utilize Linux.

Evidentemente, não é possível usar a App Store sem o iTunes (que tem alguns problemas na instalação com WINE), mas você pode facilmente comprar músicas da loja Amazon ou copiá-las a partir de um CD e depois colocá-las no seu Ipod/MP3. Mas se você está acostumado com o iTunes, como alternativa, você pode utilizar o SongBird que tem interface semelhante.

4. Linux não é compatível com meus arquivos que tenho no Mac/Windows

Processadores de texto como Word quando salvam seus arquivos .doc é possível abri-los em qualquer sistema operacional desde que tenha um reader(Um Software que possa visualizá-lo). No linux é possível abrir arquivos .doc com o OpenOffice ou BrOffice. Arquivos de música como .mp3 podem ser ouvidos através de programas como mplayer. A maioria dos formatos são abertos em todas as plataformas de sistemas operacionais. Então não se preocupe com isso.

3. Não dá para jogar no Linux

Isto pode não ser importante para todos, mas para algumas pessoas jogos são a principal razão pela qual eles continuam usando o Windows. Mesmo que todos os desenvolvedores de jogos não querem disponibilizar versão para Linux, como é o caso do World of Warcraft, há realmente uma grande quantidade de jogos que são nativos para o Linux(Tibia por exemplo), embora a maioria não tenham gráficos tão bonitos como os jogos recentes.

Existem maneiras de jogar em Linux utilizando programas gratuitos e em alguns casos pagos. Isso pode ser feito utilizando o  Codeweaver’s Crossover and Crossover Games, Cedega e WINE(Codeweaver’s  Crossover and CrossoverGames é mais estável). Entre estes três, é possível reproduzir os jogos mais populares. Eu consigo jogar Warcraft III no Ubuntu Eee usando Wine e pode facilmente rodar outros jogos desde que seu computador suporte.

2. É díficil encontrar programas para Linux

A maioria das distribuições Linux vem com um repositório próprio de software útil, mas às vezes você pode querer algo que não tenha no repositório e você pode encontrá-los e instalá-los facilmente apenas fazendo uma busca no google. O Ubuntu tem mais de 3 mil pacotes disponíveis.

1. Tem que saber mexer no terminal e comandos

São incontáveis as vezes que eu disse que utilizava linux e imediatamente relacionaram a idéia de usar Linux com terminal. Ao longo de todos esses anos o Linux ganhou a reputação de que só é utilizável por codificadores ou por quem tem um conhecimento intermediário de programação.

As mesmas pessoas que acham isso são as mesmas pessoas que são surpreendidas quando eu lhe mostro o Ubuntu Eee. É possivelmente ainda mais simples do que o Windows.

Algumas distribuições como o openSUSE tem o menu iniciar semelhante ao do Windows e outras como o Ubuntu, tem um menu drop de aplicações que enumera todas as suas aplicações para fazer um ambiente que deve ser fácil para qualquer um.

A maioria das distribuições utilizam o GNOME e KDE que tem em seu ambiente gerenciadores de arquivo que são tão fáceis de utilizar como no Windows Explorer. Se você acreditava nesses mitos eu recomendo utilizar o Ubuntu ou Ubuntu Eee(EEE pc).

Oriundo e traduzido de [gadgetell]


Author: Noel Rocha
Dec 24
Digg
Stumbleupon
Technorati
Delicious

PhotoShop CS4 na vida real

photoshop

Oriundo de [Flickr]


Author: Noel Rocha
Dec 22
Digg
Stumbleupon
Technorati
Delicious

Se as linguagens de programação fossem religiões

Esse artigo foi postado em inglês no slashdot.org. Então mãos a obra:

  • C seria o Judaísmo - É velho e restritivo, mas a maior parte do mundo está familiarizado com as suas leis e respeitando-as. Você não pode se converter, você tem que nascer com um, senão você achará que é uma loucura. Além disso, quando as coisas correm mal, muitas pessoas estão dispostas a culpar essa linguagem por causa dos problemas do mundo.
  • C + + seria Islã - Pega algumas caracteristicas do C porém não mantém todas as suas leis mas acrescenta um novo conjunto muito complexo de leis em cima. É tão versátil que pode ser usado para ser o alicerce de tudo, desde grandes atrocidades a belas obra de arte. Seus seguidores estão convencidos de que é a derradeira linguagem universal e são irritados por aqueles que discordam disso. Além disso, se você insultá-la, ou a seu fundador, provavelmente vai ser ameaçado de morte pelos mais radicais seguidores.
  • Java seria O fundamentalismo Cristão - Trata-se de uma base teórica sobre C, mas vazios de tantos das antigas leis que não são originais em tudo. Em vez disso, ela adiciona o seu próprio conjunto de regras rígidas, que seus seguidores acreditam ser muito superior ao original. Não só eles estão certos de que essa é a melhor linguagem do mundo mas que estão dispostos a queimar aqueles que discordam disso.
  • PHP seria Cristianismo - Combate o Java para o mercado web. Inspira-se alguns conceitos de Java e C mas fica somente com aqueles conceitos que são bons para ela. Talvez não é tão coerente quanto as outras línguas mas pelo menos ela deixa  mais liberdade e ostensivamente mantém a idéia de tudo junto. Além disso, todo o conceito de “goto inferno” foi abandonada.
  • Perl seria Voodoo - Uma série de encantações incompreensíveis que envolvem o sangue de cabras e permanentemente corrompem sua alma. Muitas vezes usado quando o seu patrão exige que você faça uma tarefa urgente a 21:00 de sexta-feira à noite.
  • Lua seria Wicca - Uma panteísta linguagem que é facilmente adaptada para diferentes culturas e locais. Seu código é muito liberal e permite a utilização de técnicas que poderiam ser descritas como os usados por mágicos de linguagens mais tradicionais. Tem uma forte ligação com o “mundo da lua”.
  • Ruby seria Neo-Paganismo - Uma mistura de línguas diferentes e idéias que foram empacotadas em conjunto em algo que possa ser identificada como uma linguagem. Seus seguidores estão crescendo rápido, e embora a maioria das pessoas olha para ela com suspeitas são quase todas as pessoas que mexe com Ruby bem-intencionadas e que não tem a intenção de prejudicar ninguém.

Parece que quem fez o artigo era católico :p mas nos comentários do post original não faltaram comparações de linguagens como Delphi, FORTRAN e JavaScript com o catolicismo porém não é minha intenção fugir mais do que fugi do post original.


Author: Noel Rocha
Dec 22
Digg
Stumbleupon
Technorati
Delicious

O melhor tradutor online, nicetranslator.com

Algumas palavras em inglês nos deixa confuso e as vezes seu amigo Google Tradutor te deixa ainda mais confuso.

Pesquisando, encontrei um tradutor rápido, eficaz, fácil de mexer, visual bonito e pelo que sei ele não é do google(para quem é paranóico).

nicetranslator

Vou traduzir um post do slashdot utilizando somente o nicetranslator.com para vocês terem uma idéia de como ele é bom.

Clique aqui para acessar o nicetranslator.com


Author: Noel Rocha