Blog do Zé Andrade

Software Livre, T.I., Eletrônica & Generalidades

Arquivo para categoria: ‘T.I.’

Mitos sobre a Internet!

quarta-feira, agosto 25th, 2010

testes seus conhecimentos sobre os mitos a respeito da  Internet, nesta interessante matéria do portal G1:

http://g1.globo.com/tecnologia/noticia/2010/08/g1-lista-mitos-sobre-internet-veja-verdades-e-mentiras.html

Circuito Celepar de Software Livre – Etapa Londrina

terça-feira, abril 27th, 2010

Estive em Londrina-PR neste último fim de semana (24/04) para efetuar uma palestra sobre segurança e software livre.

[foto de José Roberto Andrade Junior]

acompanhe as datas e obtenha os conteúdos em :
www.circuito.pr.gov.br

Eclipse Galileo no Debian Lenny

sexta-feira, abril 16th, 2010

Como eu fiz para funcionar:

baixar o Eclipse conforme sua linha de projetos (no meu caso PHP).

cd diretorio_onde_esta_o_pacote
 
tar -xzf  eclipse-php-galileo-SR2-linux-gtk.tar.gz
 
cp -R eclipse /usr/lib/eclipse
 
ln -s /usr/lib/eclipse/eclipse  /usr/bin/eclipse
 
ln  -s caminho_para_o_java_jre /usr/lib/eclipse/jre

Obs: estou usando o JRE 1.6.0-20, obtido no site do Java

Daí é só usar! Boa sorte.

XHP – uma nova forma de programar em PHP

quarta-feira, abril 14th, 2010

Em busca de desempenho, e acredito que inovação e agilidade de programação, o pessoal do Facebook surgiu este ano com algumas novidades em relação ao PHP . Uma delas é o HipHop, que seria um  compilador para os códigos em PHP.

Nas minhas andanças pela web, a implementação do XHP chamou minha atenção. Pelo que vi, eles criaram uma extensão para o PHP , permitindo uma forma  ‘hibrida’  de código com o HTML ou XML. Veja com seus próprios olhos:

Rasmus Lerdorf , um dos pais do PHP, também escreveu em seu blog um artigo com suas impressões sobre o XHP.

Será que a moda pega? Será que compensa?Hummm…

Emacs + OrgMode : Impressionante

quarta-feira, março 17th, 2010

Uma piada nerd diz que o Emacs é um excelente “sistema operacional” em que só falta um “editor de texto”.  O poder deste editor me surpreendeu esses dias.(confesso que nunca tinha usado o Emacs) . Meu camarada Leslie me apresentou o http://orgmode.org/ , que integrado ao Emacs, permite barbaridades em termos de organização. Resumindo, é a versão “bloco de notas” de uma agenda muito poderosa.

Emacs + OrgMode = um organizador para nerd nenhum botar defeito.

Python – emulando comandos shell

segunda-feira, janeiro 25th, 2010
#!/usr/bin/python
#-*- coding: UTF-8 -*-

import os

class Cmd(object):
   def __init__(self, cmd):
       self.cmd = cmd
   def __call__(self, *args):
       return os.system("%s %s" % (self.cmd, " ".join(args)))

class Sh(object):
    def __getattr__(self, attribute):
        return Cmd(attribute)

# exemplos de uso:

sh = Sh()
sh.ls('-la')
sh.free()
sh.ps('aux')
sh.uname('-a')

Python – ordenar linhas de um arquivo

segunda-feira, janeiro 25th, 2010

uma dica legal que en contrei em :

http://code.activestate.com/recipes/440612/

Um script em Pyhon para ordenar as linhas de um arquivo:

#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
map(sys.stdout.write, sorted(file(sys.argv[1]).readlines()))

Inkscape 0.47 no Debian Lenny

sexta-feira, dezembro 4th, 2009

1º – Baixe o código- fonte em :

http://downloads.sourceforge.net/inkscape/inkscape-0.47.tar.bz2

(também disponível em .gz)

2º – Descompacte o arquivo inkscape-0.47.tar.bz2

com usuário  root:

3º- Instale as dependências e bibliotecas necessário. No meu caso, que uso um Debian Lenny sempre atualizado , foram requeridas:

apt-get install intltool  libgc-dev  liblcms1-dev pkg-config  libgsl0-dev libsigc++-dev  libxslt-dev  libgsl0-dev  libgtkmm-dev  libgtkmm-2.4-dev  libboost-dev  libpopt-dev

(e  demais automaticamente atreladas)

4º – Acesse o diretório  “inkscape-0.47″   e digite  ./configure

se ele reclamara de mais alguma dependência tente encontrá-la entre as ‘libs’ – e pegue sempre a ‘dev’ . Por ex:  libpopt-dev

5º-  No diretório , digite make

esta etapa demora um pouco e mostra muita coisa na tela…

6º – Ainda no diretório , digite make install

7º – Teste o inkscape 0.47 . Espero que dê certo para você, pois para mim funcionou legal.


SQL, validações e PHP

quinta-feira, novembro 19th, 2009

Dicas quando o assunto é SQL e PHP.

<?php
/* 
	sanitizar:
	Esta função realiza :
		- remove espaços no começo e fim do parâmetro
	  - remove os caracteres *?--%'&#@"/,;
	  - remoção de acentos, torna tudo minúsculo, preserva apenas: letras, números, .:-_

 */

function sanitizar($parametro=false)
{
	$parametro=stripslashes(trim($parametro)); 
	$parametro=str_replace(array("*","?", "--", "%", "'", "&", "#", "@", "\"", "/", ",", ";"),
 "", $parametro);
	$parametro=strtolower(preg_replace('/[^[:alnum:]|_|.|:|-]/', " ",strtr($parametro,
 "áàãâéêíóôõúüçÁÀÃÂÉÊÍÓÔÕÚÜÇ-:","aaaaeeiooouucAAAAEEIOOOUUC-:")));
	return $parametro;
}	

/* 
	anti_sql:
	Esta função realiza :
		- remove caracteres e palavras reservadas de SQL.
		
		Obs: esta idéia foi retirada de um fórum de discussão.

 */
 
function anti_sql($varivel)
{
  $varivel = preg_replace("/(from|union select|select|insert|delete|
where|drop table|show tables|#|\*|--|;|=|@|\\\\)/i","",$varivel);
  $varivel = trim($varivel);
  return $varivel;
}
	
	
	/*
	Para evitar XSS, ao exibir valores recuperados na tela, utilize a função nativa htmlentities
	exemplo:
	*/
	
	$str="não encontrei o valor";
	echo $str."<br />";
	$str="não encontrei o valor <img src='uma_imagem_nao autorizada.png' />";
	echo $str."<br />";
	echo htmlentities($str)."<br />";

	
	/* Inserir valor de campos numericos não tratados sempre oferecem risco de SQL Injection
		devido a não utilização da aspa na composição da query 
		
		ex: SELECT titulo,mensagem FROM noticia WHERE noticia_id=234;
		
		já em campos text/string a SQL Injection torna-se dificultada pela existência da aspa
		
		ex: SELECT titulo,mensagem FROM noticia WHERE noticia_titulo='Meu titulo';
		
		porém pode ser contornada, se o interpretador  não estiver habilitado para escapar aspas
		
		logo seguem algumas forma de evitar a SQL Injection:
		*/
		
		//campo numérico:
		
		/* ---- ERRADO: ---- */
		
		$numero = $_GET['numero'];
		
		$sql= "SELECT titulo,mensagem FROM noticia WHERE noticia_id=".$numero;
		
		/* ---- Fazer: ---- */
	
		$numero = (int) $_GET['numero'];
		//ou
		$numero = intval($_GET['numero']);
		
		$sql= "SELECT titulo,mensagem FROM noticia WHERE noticia_id=".$numero;
		
		/*   ou  então pode-se usar o sprintf */
		
		
		$sql= sprintf( "SELECT titulo,mensagem FROM noticia WHERE noticia_id = %u",$numero);
		
		/*   inclusive para casos compostos */
		
		$numero=22;
		$titulo='Minha noticia';
		$sql= sprintf( "SELECT titulo,mensagem FROM noticia WHERE noticia_id = %u OR titulo = '%s'",$numero, $titulo);
		
		/* a SQL Injection no meio da string irá exigir a entrada de uma aspa 
		
		Ex:
		 "SELECT titulo,mensagem FROM noticia WHERE titulo = 'Meu Teste'
		 
		 SQL Injection:
		   "SELECT titulo,mensagem FROM noticia WHERE titulo = 'Meu Teste' OR 1=1 --'
		   
		   a entrada deverá ser:  Meu Teste' OR 1=1 --
		   
		   para resolver esta entrada, usar as funções pertinente conforme o banco de dados 
		
		Ex:
		
		pg_escape_string
		pg_escape_bytea
		dbx_escape_string
		db2_escape_string
		maxdb_escape_string
		mysql_escape_string
		sqlite_escape_string
		mysqli_escape_string
		ingres_escape_string
		maxdb_real_escape_string
		mysql_real_escape_string
		
		*/
		$titulo = @pg_escape_string($_POST['titulo']);
		
		/* o 'arroba' à frente da função é usado para evitar warning oyu fatal error  */
		
		$sql="SELECT titulo,mensagem FROM noticia WHERE titulo = '".$titulo."'";
		
		/* 
			o uso das funções de preparação de query também é recomendado 
			pois faz o trabalho de escapar e validar dados antes da execução
			
			ex: 
				pg_prepare
				mysqli_stmt_prepare
				ingres_prepare
				pg_send_prepare
				ovrimos_prepare
				maxdb_stmt_prepare
				db2_prepare
				ifx_prepare
				odbc_prepare
				maxdb_prepare
				swish_prepare
				ibase_prepare
				sdo_das_relational_executepreparedquery
		
			
			
			exemplo retirado de:
			
			http://br2.php.net/manual/pt_BR/function.pg-prepare.php
			
			$dbconn = pg_connect("dbname=mary");

			$result = pg_prepare($dbconn, "my_query", 'SELECT * FROM shops WHERE name = $1');

			//---> Execute the prepared query.  Note that it is not necessary
                        to escape the string "Joe's Widgets" in any way:
			
			
			$result = pg_execute($dbconn, "my_query", array("Joe's Widgets"));

			//---> Execute the same prepared query, this time with a different parameter:
			
			$result = pg_execute($dbconn, "my_query", array("Clothes Clothes Clothes"));
		
		*/
		
		
		/* 
		
			alguns padrões podem ser verificados com o uso de expressões regulares 
			
			seguem exemplos para uma máscare de telefone e uma máscara de CPF 
			- mas sem validação dos dados, apenas do padrão.
			
			
			
			*/
		
		
	/*verdadeiro se o parâmetro for algo como (99)9999-9999 */
		
		function checar_padrao_telefonico($valor=false)
	{
		return preg_match('/^\([0-9]{2}\)[0-9]{4}-[0-9]{4}$/',$valor)?true:false;
	}
	
	/*verdadeiro se o parâmetro for algo como 999.999.999-99 */
	
	function checar_padrao_cpf($valor=false)
	{
		return preg_match('/^([0-9]{3}\.){2}[0-9]{3}-[0-9]{2}$/',$valor)?true:false;
	}
		

?>

FISL 10

quinta-feira, junho 18th, 2009

Na próxima semana ocorre a 10ª edição do Fórum Internacional de Software Livre.  De 24 a 27 de Junho de 2009,  em Porto Alegre – RS – Brasil.  Mais detalhes em www.fisl.org.br.