Month: May 2010

Instalar MySQL para Python (MySQLdb) em Windows

Atualização (08/06/2011):

Acessar este outro post: http://blog.victorjabur.com/2011/06/08/compiling-mysqldb-1-2-3-on-windows-32-and-64-without-need-the-mysql-database-5-5-installed/

————————————————————————————————————-

Solução 1 – Instalação através de arquivos Egg

1 – Passos para instalar o setuptools, se você ainda não tiver instalado:

  1. Instalar o Setup Tools do Python (Instalador de pacotes em Python) – Download Aqui
  2. Incluir na sua Variável de Sistema PATH, o seguinte diretório: “C:\Python27\Scripts”
  3. Incluir na sua Variável de Sistema PATH, o seguinte diretório: “C:\Python27”

2 – Fazer o download dos arquivos egg abaixo, de acordo com sua versão de python e sistema operacional:

Versões para MySQLdb 1.2.3 e Windows 32 bits

MySQL_python-1.2.3-py2.6-win32.egg
MySQL_python-1.2.3-py2.7-win32.egg

Versões para MySQLdb 1.2.3 e Windows 64 bits:

(Em breve)

3 – Abrir um command DOS, acessar a pasta no qual os arquivos egg se encontram e executar o seguinte comando e pronto !

easy_install MySQL_python-1.2.3-py2.6-win32.egg
ou
easy_install MySQL_python-1.2.3-py2.7-win32.egg

—————————————————————————————–

Solução 2 – Alguns arquivos binários (.exe) que encontrei na web.

http://www.codegood.com/archives/4

—————————————————————————————–

Solução 3 – Preparando seu ambiente para compilar código fonte C, com esta opção você será capaz de compilar qualquer código pthon necessário para o MySQLdb e outros plugins. (um pouco trabalhoso).

O MySQLdb é um pacote desenvolvido em python, que possibilita o acesso ao banco de dados MySQL.

A missão deste post é ensinar como instalar o MySQLdb, em um ambiente Windows:
Este pacote não possui arquivo binário para instalação em um ambiente Windows, conforme a própria documentação nos diz:

Windows
…….
I don’t do Windows. However if someone provides me with a package for
Windows, I’ll make it available. Don’t ask me for help with Windows
because I can’t help you.

Portanto, será necessário compilar o código fonte em C, para só então conseguir instalar o MySQLdb.

Se fosse em Linux, Ubuntu, por exemplo, este pacote seria instalado com um simples comando: apt-get install python-mysqldb

Mas em Windows dá um trabalhinho, vamos ao trabalho:

1 – Pré-Requisitos:

  • Instalar o Microsoft Visual C++ Express Edition 2010 – Download Aqui (Algumas pessoas relatam que conseguiram compilar com o Cygwin e o Mingw, mas eu não consegui)
  • Ter o python instalado – Download Aqui
  • Ter o banco de dados MySQL instalado – Download Aqui
    • Importante: Selecionar para instalação a opção: Developer Components (Custom Setup), se você já tem o banco instalado, pode instalar este item como adicional, sem problemas.
  • Após Instalar o Microsoft Visual C++ Express Edition 2010, criar uma variável de ambiente:
    1. Botão Direito do Mouse em cima de “Meu Computador” -> Propriedades -> Avançado -> Variáveis de Ambiente -> Nova
    2. Nome da Variável: VS90COMNTOOLS
    3. Valor da Variável: C:\Arquivos de programas\Microsoft Visual Studio 10.0\Common7\Tools\ (Coloque o seu caminho de instalação, se for diferente deste)
  • Instalar o Setup Tools do Python (Instalador de pacotes em Python) – Download Aqui
  • Incluir na sua Variável de Sistema PATH, o seguinte diretório: “C:\Python27\Scripts”
  • Incluir na sua Variável de Sistema PATH, o seguinte diretório: “C:\Python27”
  • Fazer o download do MySQLdb aqui: Download Aqui e descompactar em qualquer diretório
  • Editar o arquivo site.cfg (na pasta descompactada), para a sua versão de banco de dados MySQL, escolha uma das opções abaixo:
    • “registry_key = SOFTWARE\MySQL AB\MySQL Server 5.0”
    • “registry_key = SOFTWARE\MySQL AB\MySQL Server 5.1”

2 – Instalando:

  1. Abrir um prompt do Dos
  2. Acessar a pasta descompactada (Comando cd)
  3. Executar o comando: setup.py build (Não deve aparecer nenhuma mensagem de erro)
  4. Executar o comando: setup.py install
  5. Abrir o Shell do Python e testar se a instalação funcionou, digitando o seguinte comando: import MySQLdb
    • Se funcionar não aparecerá mensagem nenhuma
    • Em caso de erro, aparecerá algo do tipo:
    • Traceback (most recent call last):
      File “”, line 1, in
      ImportError: No module named “pacote”

Créditos deste Post ao Yun Fu: http://www.fuyun.org/2009/12/install-mysql-for-python-on-windows/

Bom Pessoal, vou ficar por aqui, espero que vocês consigam instalar, apanhei bastante e por isso resolvi fazer este post.

Até a Próxima.

Victor Jabur

Validador e Gerador de Renavam (Veículos) em Java – Novo Padrão 11 Digitos – A Partir de Abril 2013

Olá Pessoal,

Seguem abaixo 2 classes java para validação e geração de código renavam para veículos:

ValidadorRenavam.java

public class ValidadorRenavam {

 public boolean validarRenavam(String renavam){
 // Pegando como exemplo o renavam = 639884962

 // Completa com zeros a esquerda se for no padrao antigo de 9 digitos
 // renavam = 00639884962
 if(renavam.matches("^([0-9]{9})$")){
 renavam = "00" + renavam;
 }

 // Valida se possui 11 digitos pos formatacao
 if(!renavam.matches("[0-9]{11}")){
 return false;
 }

 // Remove o digito (11 posicao)
 // renavamSemDigito = 0063988496
 String renavamSemDigito = renavam.substring(0, 10);

 // Inverte os caracteres (reverso)
 // renavamReversoSemDigito = 69488936
 String renavamReversoSemDigito = new StringBuffer(renavamSemDigito).reverse().toString();

 int soma = 0;

 // Multiplica as strings reversas do renavam pelos numeros multiplicadores
 // para apenas os primeiros 8 digitos de um total de 10
 // Exemplo: renavam reverso sem digito = 69488936
 // 6, 9, 4, 8, 8, 9, 3, 6
 // * * * * * * * *
 // 2, 3, 4, 5, 6, 7, 8, 9 (numeros multiplicadores - sempre os mesmos [fixo])
 // 12 + 27 + 16 + 40 + 48 + 63 + 24 + 54
 // soma = 284
 for (int i = 0; i < 8; i++) {
 Integer algarismo = Integer.parseInt(renavamReversoSemDigito.substring(i, i + 1));
 Integer multiplicador = i + 2;
 soma += algarismo * multiplicador;
 }
 
 // Multiplica os dois ultimos digitos e soma
 soma += Character.getNumericValue(renavamReversoSemDigito.charAt(8)) * 2;
 soma += Character.getNumericValue(renavamReversoSemDigito.charAt(9)) * 3;

 // mod11 = 284 % 11 = 9 (resto da divisao por 11)
 int mod11 = soma % 11;

 // Faz-se a conta 11 (valor fixo) - mod11 = 11 - 9 = 2
 int ultimoDigitoCalculado = 11 - mod11;

 // ultimoDigito = Caso o valor calculado anteriormente seja 10 ou 11, transformo ele em 0
 // caso contrario, eh o proprio numero
 ultimoDigitoCalculado = (ultimoDigitoCalculado >= 10 ? 0 : ultimoDigitoCalculado);

 // Pego o ultimo digito do renavam original (para confrontar com o calculado)
 int digitoRealInformado = Integer.valueOf(renavam.substring(renavam.length()-1, renavam.length()));

 // Comparo os digitos calculado e informado
 if(ultimoDigitoCalculado == digitoRealInformado){
 return true;
 }
 return false;
 }
}

GeradorRenavam.java

import java.util.Random;

public class GeradorRenavam {

	public static void main(String[] args) throws Exception {
		int maximo = 0;
		try {
			maximo = Integer.valueOf(args[0]);
		} catch (Exception e) {
			throw new Exception("Especifique um valor de entrada válido");
		}
		for (int i = 0; i < maximo; i++) {
			String renavam = GeradorRenavam.geraNumeroRenavamValido();
			System.out.println(renavam);
		}
	}

 public static String geraNumeroRenavamValido() {
 Random randomizador = new Random();
 String renavamGeradoAleatoriamente = "";
 for (int i = 0; i < 10; i++) {
 renavamGeradoAleatoriamente += Math.abs(randomizador.nextInt(8));
 }

 String renavamSemDigito = renavamGeradoAleatoriamente.substring(0, 10);

 String renavamReversoSemDigito = new StringBuffer(renavamSemDigito).reverse().toString();

 int soma = 0;
 for (int i = 0; i < 8; i++) {
 Integer algarismo = Integer.parseInt(renavamReversoSemDigito.substring(i, i + 1));
 Integer multiplicador = i + 2;
 soma += algarismo * multiplicador;
 }

 soma += Character.getNumericValue(renavamReversoSemDigito.charAt(8)) * 2;
 soma += Character.getNumericValue(renavamReversoSemDigito.charAt(9)) * 3;

 int mod11 = soma % 11;
 int ultimoDigitoCalculado = 11 - mod11;
 ultimoDigitoCalculado = (ultimoDigitoCalculado >= 10 ? 0 : ultimoDigitoCalculado);
 return renavamGeradoAleatoriamente + ultimoDigitoCalculado;
 }
}

Créditos deste Post para ViniGodoy: Link : http://www.guj.com.br/posts/list/149379.java

Espero que ajude alguém, …
Abraços.

Victor Jabur.

Instalando e Configurando Plugin Python no Eclipse (Pydev)

Sejam Bem Vindos,

Neste post estou ensinando como instalar e configurar um ambiente para a programação da linguagem Python na IDE Eclipse:

Segue o link para download do Python:
http://www.python.org/download/

1- Download do Eclipse:
http://www.eclipse.org/downloads
2- Selecione o menu help -> Install New Software …
3- Clicar no botão Add
4- Preencher com as seguintes informações:
Name: Pydev
Location: http://pydev.org/updates/
5- Selecionar apenas a opção PyDev e clicar em Next
6- Clicar em Next
7- Aceitar a licença e clicar em Finish
8- Aceitar a mensagem e clicar em OK
9- Selecionar o checkbox e clicar no botão OK (Aceitar o certificado)
10- Clicar no botão Yes para reiniciar o Eclipse
11- Assim que o Eclipse reiniciar, acessar Window -> Preferences
12- Acessar a opção Python -> Interpreter-Python e clicar no botão New
13- Clicar no botão Browse e informar o caminho onde o Python está instalado
14- Escolher o arquivo python.exe (para windows) ou opção similar para demais sistemas operacionais
15- Clicar no botão OK
16- Confirmar com o botão OK
17- Clicar OK Novamente
18- Pronto ! Agora o seu Eclipse já pode usar todos os recursos do plugin Pydev. Tais como Debug, AutoCompletar, Criação de Projetos e etc …
19- Vamos experimentar alguns destes recursos, criando um projeto exemplo.
20- Clique em File -> New -> Project
21- Selecione Pydev -> Pydev Project, clique em Next
22- Deixe as configurações conforme tela abaixo e clique em Finish
23- Clique em Yes para acessar a Perspectiva para programação em Python no Eclipse
24- Clique com o botão direito do mouse sobre a pasta src e selecione New -> Pydev Module
25- Segue abaixo um código que atribui uma string Hello World a uma variavel e depois imprime na tela
26- Segue abaixo a utilização do recurso AutoCompletar
27- Segue abaixo um exemplo de Debug, colocando um breakpoint e rodando o debug através de Debug As -> Python Run
28- Observe abaixo o exemplo de Debug
29- Para aqueles que ficaram curiosos em relação à mensagem em vermelho na imagem acima, vou explicar:
Existe um plugin para debug na linguagem python, chamado psyco, responsável por acelerar o processo de Debug, para aqueles que quiserem instalar (é opcional), segue o link para download:

http://psyco.sourceforge.net/download.html

30- É isto pessoal, espero ter ajudado com este post e até a próxima …