#!/usr/bin/env python #-*- encoding: utf-8 -*- # Autor: Thiago Monteiro # Data: 10/10/2012 # Local: Goiânia/Goiás/Brasil import os, sys def is_prime(number): divisions = 0 response = False number = int(number) if number: for i in range(1, number + 1): if number % i == 0: divisions = divisions + 1 if divisions == 2: response = True if divisions > 2: response = not response return response if __name__ == '__main__': while(True): os.system('clear') print 'PROGRAMA QUE VERIFICA E MOSTRA QUAIS OS NÚMEROS PRIMOS DE UM INTERVALO NUMÉRICO DE 1 ATÉ 100.' quantidade = int( raw_input('QUANTIDADE DE NÚMEROS A SEREM VERIFICADOS: ') ) if quantidade == 0: break for numero in range(1, quantidade + 1): resposta = is_prime(numero) if resposta: print '%d => É INTEIRO' % numero else: print numero print 'FINALIZAR => Informe 0 como sendo a quantidade de números a serem verificados.' print 'CONTINUAR => Pressione a tecla ENTER.' sys.stdin.read(1) print '\n\nO autor (Thiago Monteiro) fica agradecido por você utilizar esse programa.' print 'Para mais informações acesse meu blog http://www.bytespace.wordpress.com\n' print '=> Pressione ENTER para finalizar a execução do programa.' sys.stdin.read(1) os.system('clear')
Conversor de Temperaturas em Python
Olá pessoal!
Segue um simples script na maravilhosa linguagem de programação Python para converter temperaturas de graus Celsius para Fahrenheit e vice-versa.
#!/usr/bin/env python #-*- encoding: utf-8 -*- # Autor: Thiago Monteiro # Data: 10/10/2012 # Local: Goiânia/Goiás/Brasil import os, sys def celsius_to_fahrenheit(celsius): ''' Função: celsius_to_fahrenheit Argumentos: 1 - celsius (temperatura em graus celsius) Retorno: fahrenheit (temperatura em graus fahrenheit) ''' fahrenheit = (9 / 5) * celsius + 32 return fahrenheit def fahrenheit_to_celsius(fahrenheit): celsius = (9 / 5) * fahrenheit - 32 return celsius if __name__ == '__main__': while(True): os.system('clear') print 'CONVERSOR DE TEMPERATURAS' print ''' \rCOMO USAR: \rAo informar uma temperatura use por exemplo 1C para 1 grau Celsius ou 1F para 1 grau Fahrenheit. \rPara finalizar a execução do programa informe sair como a temperatura a ser convertida. ''' print 'INFORME OS DADOS A SEGUIR:' temperatura_a_converter = raw_input('1 - [TEMPERATURA A SER CONVERTIDA] => ') temperatura_convertida = None funcao_de_conversao = None escala_temperatura = None if temperatura_a_converter.lower() == 'sair': break if temperatura_a_converter[:-1].isdigit(): if temperatura_a_converter[-1].upper() == 'C': funcao_de_conversao = celsius_to_fahrenheit escala_temperatura = 'F' elif temperatura_a_converter[-1].upper() == 'F': funcao_de_conversao = fahrenheit_to_celsius escala_temperatura = 'C' else: print ''' \rERRO => A escala informada para a temperatura é inválida! \rComo escala informe C para graus Celsius ou F para Fahrenheit. ''' else: print ''' \rERRO => A temperatura informada é inválida! \rUma temperatura válida consiste de um número inteiro seguido de C para graus Celsius ou F para Fahrenheit. ''' if funcao_de_conversao: temperatura_convertida = funcao_de_conversao( int(temperatura_a_converter[:-1]) ) if temperatura_convertida: print '2 - [TEMPERATURA CONVERTIDA] => %s%s' % (temperatura_convertida, escala_temperatura) print '=> Para FINALIZAR a execução do programa digite sair como temperatura a ser convertida ou a tecla ENTER para CONTINUAR.' sys.stdin.read(1)
O que é uma localização (locale)?
De maneira bem simplista:
Uma localização (locale) é uma região do planeta Terra apelidada por um código.
Esse código por sua vez representa um conjunto de variáveis tais como: moeda, fuso horário e etc. Na composição do código é representado o idioma e a região.
Por exemplo:
en_US – inglês dos Estados Unidos da América
en_GB – inglês da Grã-Bretanha
en_CA – inglês do Canadá
en_AU – inglês da Austrália
Apesar do inglês ser o idioma dessas regiões, há diferenças na moeda, no fuso horário e etc.
Abraços a todos.
Como criar um banco de dados latin1(iso8859-1) no PostgreSQL?
Problema: Criar um banco de dados ISO8859-1 no PostgreSQL.
Contexto:
Meu Ubuntu 9.10 está configurado com o idioma inglês dos Estado Unidos da América e com encoding ISO8859-1/LATIN1 para suportar os caracteres acentuados do idioma português.
Solução:
A solução é composta de 3 passos.
São eles:
1 – Verificar quais as localizações (se tiver dúvidas quanto a este termo há um post neste blog sobre ele) disponíveis no Ubuntu.
2 – Criar o banco de dados.
3 – Verificar a codificação de caracteres utilizada no editor de texto.
1 – Verificando as localizações disponíveis no Ubuntu
No shell (prompt de comando) digite: locale -a
Será apresentada uma lista de locales disponíveis. No meu caso havia en_US.iso88591, isso significa suporte ao inglês dos Estados Unidos da América e caracteres do alfabeto latino. Isso me poupa a dor de cabeça de tentar criar um banco de dados pt_BR.iso88591 sem meu sistema operacional dar suporte ao mesmo.
2 – Criando o banco de dados
No shell digite:
sudo su – postgres
Crie o banco de dados com:
createdb testebd –encoding ISO88591 –tablespace pg_default –lc-collate en_US.iso88591 –lc-ctype en_US.iso88591 –template template0
ou digite no shell:
psql -h localhost -U postgres -W
para logar no cliente de linha de comando do PostgreSQL.
Crie o banco com:
CREATE DATABASE testebd ENCODING ‘ISO88591′ LC_CTYPE=’en_US.iso88591′ LC_COLLATE=’en_US.iso88591’ TEMPLATE template0;
3 – Verificando a codificação de caracteres utilizada no editor de texto
Por fim, quando criar um programa em um editor de texto verifique se a codificação utilizada está de acordo com a do banco de dados. em questão. Não adianta nada criar um banco de dados en_US.iso88591 e salvar o arquivo do script com caracteres em UTF-8.
Abraço a todos.
Como configurar LATIN1 (ISO8859-1) no Ubuntu
Se o idioma escolhido foi português do Brasil faça:
echo pt_BR.ISO-8859-1 ISO-8859-1 > /var/lib/locales/supported.d/local
echo LANG=”pt_BR.ISO-8859-1″ > /etc/default/locale
echo LANG=”pt_BR.ISO-8859-1″ >> /etc/environment
locale-gen -purge
dpkg-reconfigure locales
Senão se o idioma foi o inglês americano
basta substituir na lista de comandos anterior o pt_BR por en_US.
Senão substitua pt_BR pelo código do idioma que você escolheu.
Gerador de senhas em C
#include <stdio.h> #include <stdlib.h> #include <string.h> /* * * passwdgen 1.0 * * Copyright (C) 2009 Free Software Foundation, Inc. * License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. * This is free software: you are free to change and redistribute it. * There is NO WARRANTY, to the extent permitted by law. * * Autor: Thiago Alexandre Martins Monteiro * Local: Goiania/Goias/Brasil * Data: 16/04/2011 * * Este programa tem como objetivo gerar senhas simples. Tenho plena certeza de que este * codigo pode e deve ser melhorado. Respeito a criatividade dos outros e mantenha a autoria. * * OBS: Esse programa pode ser portado para Windows com pouco esforco. * * Compile com: gcc passwdgen.c -o passwdgen */ /* Protótipo das funções */ int validarComprimentoSenha(int len); int validarQuantidadeDeVezes(int vezes); void mostrarAjuda(void); void mostrarVersao(void); void gerarSenha(int len); int main(int argc, char *argv[]) { int len = 8; /* comprimento da palavra */ int vezes; int register i = 0; system("clear"); /* no RuWindows use system(“cls”); */ puts("\033[32m\tPASSWDGEN (Gerador de Senhas)\033[0m\n"); /* Inicializa gerador de números randômicos com a hora atual do sistema */ srand(time(NULL)); if (argc != 2) { puts("\033[34mProcessando...\033[0m\n"); sleep(2); } switch (argc) { case 1: gerarSenha(len); break; case 2: if ((strcmp(argv[1], "-h") == 0) || (strcmp(argv[1], "--help") == 0)) { mostrarAjuda(); } if ( (strcmp(argv[1], "-v") == 0) || (strcmp(argv[1], "--version") == 0) ) { mostrarVersao(); } break; case 3: /* -l de length (comprimento da senha) */ if ( (strcmp(argv[1], "-l") == 0) || (strcmp(argv[1], "--length") == 0) ) { /* Converte de string para inteiro */ len = atoi(argv[2]); gerarSenha(len); } /* -a de amount (quantas senhas devem ser geradas) */ if ( (strcmp(argv[1], "-a") == 0) || (strcmp( argv[1], "--amount") == 0) ) { vezes = atoi(argv[2]); if ( validarQuantidadeDeVezes(vezes ) ) exit(1); for (i = 0; i < vezes; i++) { gerarSenha(len); } } break; case 4: if (strcmp(argv[1], "-al") == 0) { vezes = atoi(argv[2]); len = atoi(argv[3]); } if (strcmp(argv[1], "-la") == 0) { len = atoi(argv[2]); vezes = atoi(argv[3]); } if ( validarQuantidadeDeVezes(vezes) ) { exit(1); } for (i = 0; i < vezes; i++) { gerarSenha(len); } break; case 5: /* -l de length (comprimento da senha) */ if ( (strcmp(argv[1], "-l") == 0) || (strcmp(argv[1], "--length") == 0) ) { /* Converte de string para inteiro */ len = atoi(argv[2]); } else { /* -a de amount (quantas senhas devem ser geradas) */ if ( (strcmp(argv[1], "-a") == 0) || (strcmp( argv[1], "--amount") == 0) ) { vezes = atoi(argv[2]); if ( validarQuantidadeDeVezes(vezes ) ) exit(1); } } /* -l de length (comprimento da senha) */ if ( (strcmp(argv[3], "-l") == 0) || (strcmp(argv[3], "--length") == 0) ) { /* Converte de string para inteiro */ len = atoi(argv[4]); } else { /* -a de amount (quantas senhas devem ser geradas) */ if ( (strcmp(argv[3], "-a") == 0) || (strcmp( argv[3], "--amount") == 0) ) { vezes = atoi(argv[4]); if ( validarQuantidadeDeVezes(vezes ) ) exit(1); } } for (i = 0; i < vezes; i++) { gerarSenha(len); } break; default: printf("\n\033[32m\tDigite: passwdgen --help para obter ajuda.\033[0m\n\n"); } puts(""); return 0; } int validarComprimentoSenha(int len) { if (len < 1 || len > 50) { printf("\t\033[31mErro: O comprimento da senha e invalido.\n\tComprimentos validos vao de 1 ate 50 caracteres.\033[0m\n\n"); return 1; } else return 0; } int validarQuantidadeDeVezes(int vezes) { if (vezes < 1 || vezes > 1000) { printf("\t\033[31mErro: A quantidade de senhas a serem geradas e invalida.\n\tA quantidade de vezes valida \ vai de 1 ate 1000.\033[0m\n\n"); return 1; } else return 0; } void mostrarAjuda(void) { printf("\n\t\033[34mPASSWDGEN\033[32m\n"); printf("\n\t\033[34mNOME: passwdgen - gera senhas simples e imprime na saida padrao.\n\033[0m"); printf("\n\t\033[34mSINOPSE: passwdgen [OPTION] … [NUMBER] …\n\033[0m"); printf("\n\t\033[34mDESCRICAO: Gera senhas simples e imprime na saida padrao.\033[0m\n"); printf("\n\t\033[34m -a, --amount\n\t\t Define a quantidade de senhas a serem geradas.\033[0m"); printf("\n\n\t\033[34m -h, --help\n\t\t Apresenta a tela de ajuda do sistema.\033[0m"); printf("\n\n\t\033[34m -l, --length\n\t\t Define o comprimento (quantidade de caracteres) da senha.\033[0m"); printf("\n\n\t\033[34m -v, --version\n\t\t Apresenta o numero de versao do programa.\033[0m"); printf("\n\n\t\033[34m EXEMPLOS:\033[0m"); printf("\n\n\t\t\033[34mpasswdgen -a 5\n\t\tGera 5 senhas de 8 caracteres.\033[0m"); printf("\n\n\t\t\033[34mpasswdgen -l 20\n\t\tGera uma senha de 20 caracteres.\033[0m"); printf("\n\n\t\t\033[34mpasswdgen -al 3 5\n\t\tGera 3 senhas de 5 caracteres.\033[0m"); printf("\n\n\t\t\033[34mpasswdgen -la 3 5\n\t\tGera 5 senhas de 3 caracteres.\033[0m"); printf("\n\n\t\033[34m AUTOR: Thiago Alexandre M. Monteiro\033[0m\n"); return; } void mostrarVersao(void) { printf("\n\t\033[34mpasswdgen 1.0\n\n\tCopyright (C) 2009 Free Software Foundation, Inc. \ \n\tLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. \ \n\tThis is free software: you are free to change and redistribute it. \ \n\tThere is NO WARRANTY, to the extent permitted by law.\033[0m\n\n"); return; } void gerarSenha(int len) { int register i; char alfabeto[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'X', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '*', '#' }; char palavra[len]; /* srand( time( NULL ) ); Definir a semente aqui faz com que a senha se repita */ if ( validarComprimentoSenha(len ) ) exit(1); for (i = 0; i < len; i++) { palavra[i] = alfabeto[rand() % 64]; /* 64 é o tamanho do alfabeto */ } palavra[i] = '\0'; /* terminador de string */ printf("\t%s\n", palavra); return; }
Quem bebe da água de sua própria fonte não morre de sede no deserto da solidão nem se engana na miragem da paixà o.
Amamos as coisas e ignoramos Deus o Senhor de todas as coisas.
Há uma fonte de água cristalina em teu interior. Bebe desta água.
Comendo salgadinho de milho, bebendo coca-cola e ouvindo U2.