segunda-feira, 27 de junho de 2016

Como compilar python 2.7 32bits no Ubuntu 15 64bits

Siga os passos abaixo que não tem erro

# sudo su
# apt-get install libc6-dev:i386 libx11-6:i386 libxext6:i386 libxft2:i386 libxcursor1:i386 libstdc++6:i386 libglib2.0-0:i386 libsm6:i386 libffi-dev:i386 zlib1g-dev:i386 zlib1g:i386 libssl-dev:i386 libssl-dev libsqlite3-dev libqlite3-dev:i386 libbz-dev libbz-dev:i386 libgdm-dev libgdm-dev:i386

# apt-get install gcc-multilib g++-multilib
# cd /tmp
# wget http://www.python.org/ftp/python/2.7.7/Python-2.7.7.tgz
# tar xzvf Python-2.7.7.tgz
# cd Python-2.7.7/
# mkdir -p /opt/Python-2.7.7
# CFLAGS=-m32 LDFLAGS=-m32 ./configure --prefix=/opt/Python-2.7.7 --enable-shared LD_RUN_PATH=/opt/Python-2.7.7/lib
# make
# make install

Se o sistema não localizar o arquivo libpython2.7.so.1.0 apresentando a seguinte mensagem:

/opt/Python-2.7.7/bin/python: error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory

faça o seguinte
# cd /etc/ld.so.conf.d/
# nano libpython2.7.conf
cole a linha abaixo
/opt/Python-2.7.7/lib
Salve e saia do arquivo
execute o comando
#ldconfing

domingo, 22 de junho de 2014

MySQL 5.6 consumindo memoria (CentOS)

Ontem (21/06/2014) ao tentar acessar o WHM (CPanel) da minha VPS vi que o serviço estava fora do ar com código de erro 500. Depois de acessar via SSH percebi que o servidor estava quase sem memória RAM disponível. Diante disso ao executar o comando "top" percebi que o MySQL estava consumindo quase toda memória disponível no sistema. A causa do problema não era clara e depois de muita pesquisa e muita paciência encontrei em algum site (não lembro qual era) alguém dizendo que havia desabilitado a variável do mysql performance_schema, então fui até a  documentação do mySQL e vi que essa variável por padrão é desabilitada até a versão 5.5 já na versão 5.6 esta habilitada como padrão. 
Veja se esta habilitada em seu sistema com o seguinte comando:


mysql> SHOW VARIABLES LIKE 'perf%'; 

+--------------------------------------------------------+---------+
| Variable_name                                          | Value   |
+--------------------------------------------------------+---------+
| performance_schema                                  | ON      |
| performance_schema_accounts_size                       | 100     |
| performance_schema_digests_size                        | 200     |
| performance_schema_events_stages_history_long_size     | 10000   |
| performance_schema_events_stages_history_size          | 10      |
| performance_schema_events_statements_history_long_size | 10000   |
| performance_schema_events_statements_history_size      | 10      |
| performance_schema_events_waits_history_long_size      | 10000   |
| performance_schema_events_waits_history_size           | 10      |
| performance_schema_hosts_size                          | 100     |
| performance_schema_max_cond_classes                    | 80      |
| performance_schema_max_cond_instances                  | 1000    |
  
 Na dúvida resolvi desabilitar para ver se o problema era realmente esse então fiz o seguinte:



Abra o arquivo my.cnf (normalmente esse arquivo esta em /etc/my.cnf, depois de uma atualização do mysql no CentOS 6.5 o meu arquivo foi parar em /usr/my.cnf)

# nano /etc/my.cnf

procure por [mysqld]
e adicione a seguinte linha
performance_schema=off

Salve o arquivo e reinicie o mysql e veja se o consumo de memoria agora é baixo.
Nesse momento o mysql e minha VPS consome apenas 3.8% da memoria, bem melhor do que os 43% que estava consumindo antes.

Saiba mais sobre essa  configuração em:
http://dev.mysql.com/doc/refman/5.6/en/performance-schema-startup-configuration.html

Obs: Antes de desabilitar veja se não existe nenhum banco de dados com tabelas corrompidas ou se há algum usuário com query mal escritas que possa estar causando o problema de consumo da memória do servidor.

Uma forma de visualizar os processos que estão em execução no mysql é utilizando o seguinte comando:

# mysqladmin processlist
 Saiba mais em http://dev.mysql.com/doc/refman/5.5/en/show-processlist.html

segunda-feira, 9 de dezembro de 2013

Sistema de login sem banco de dados

Não é muito recomendado, mas esse post existe apenas para ajudar um amigo que precisava para o trabalho da facu.

1- Crie um documento do tipo texto com as informações:

nomedousuario;senha

e salve com o nome usuarios.txt 

2- Agora vamos criar o codigo PHP para ler o arquivo texto e autenticar o usuário. Lembre-se essa pagina será a pagina que receberá o POST do formulário de login. Pode salvar a pagina PHP como autentica.php

$senha="";
$handle=fopen("/pastadaaplicação/usuarios.txt","r");
 
if ($handle) {
   while (!feof($handle)) {
     $buffer = explode(";",trim(fgets($handle,4096)));

            if($_POST["login"]==$buffer[0])){

                $senha=$buffer[1];

                break;

            } 

    }

}

if($senha!=$_POST["senha"] || $senha==""){
    echo ("Erro, Usuário ou senha inválidos!");
}else{
    echo "Usuário autenticado com sucesso!";
} 

fclose($handle);



sexta-feira, 29 de março de 2013

Converte Campo Varchar ou Char para Integer no PostgreSQL

Altere os valores salvos na coluna para o valor integer correspondente e depois rode o comando abaixo e pronto. Alterado de CHAR para INTEGER.
  1. ALTER TABLE the_table ALTER COLUMN col_name TYPE integer USING (trim(col_name)::integer);
     

quarta-feira, 12 de dezembro de 2012

Instalando Inkscape no Windows em Português

A instalação é simples e rápida, comece baixando o Inkscape do site www.inkscape.org Link direto (http://sourceforge.net/projects/inkscape/files/)

Após o download execute o arquivo baixado.

Mantenha em English e clique clique em OK
Na próxima tela clique em Next até chegar a tela que temos na imagem abaixo


Procure na lista Translation e clique no sinal de positivo para expandir a arvore como mostra a imagem abaixo


Procure na lista Brazilian Portuguese(pt_BR) e selecione. Depois é só ir clicando em Next até o fim.


Pronto. Inkscape 0.48 em Português instalado. A instalação para o Windows 7 é a mesma coisa.

quarta-feira, 7 de novembro de 2012

Configurando o PostFix com SMTP externo no ubuntu 12.04

A grande vantagem de ter o postfix configurado é que alguns serviços de monitoramento do servidor podem enviar informações importantes para seu e-mail relatando algum problema com o hardware ou a rede.
Veremos aqui como configurar o Postfix com um servidor SMTP externo (Realy).

Comece instalado o postfix
sudo apt-get install postfix

Quando a tela de configuração do tipo de servidor aparecer escolha a opção SITE DA INTERNET.

No campo, Nome de email do sistema preencha com seu domínio.

Agora acesse a pasta do postfix em /etc/postfix faça uma copia do arquivo main.cf

cp main.cf main.cf.original

# nano main.cf 

Apague tudo que esta no arquivo e copie o que esta abaixo e altere apenas o que esta em negrito para sua configuração.

# See /usr/share/postfix/main.cf.dist for a commented, more complete version


# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# SASL
smtp_sasl_auth_enable=yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/saslpass

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

myhostname = hostname_do_seu_servidor
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = seudominio.com.br, hostname_do_seu_servidor, localhost.localdomain, localhost
relayhost = smtp.seudominio.com.br
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

Salve o arquivo.

Ainda na pasta do postfix (/etc/postfix), crie um arquivo chamado saslpass com seu editor de texto e adicione as seguinte linha

smtp.seudominio.com.brcontadeemail@seudominio.com.br:senhadaconta

Salve o arquivo e volte para a pasta do postfix
Agora compile o arquivo


sudo postmap /etc/postfix/saslpass
sudo postfix reload

Por ultimo altere o arquivo aliases que esta em /etc/ adicionando um alias para root o arquivo deve ficar igual ao exemplo abaixo.

# See man 5 aliases for format
postmaster:    root
root: seu_email@dominio.com.br

Saida do arquivo e execute o seguintes comandos:

sudo newaliases
sudo postfix reload

Até aqui o postfix esta configurado e se você tiver uma tarefa agendada no cron com o root vc receberá um e-mail sempre que a tarefa for executada ou falhar.

É isso ai, se tiverem dúvidas deixem seu comentário para que possamos ajudar.
Até a próxima.

terça-feira, 25 de setembro de 2012

Como obter o último ID após o INSERT no POSTGRES

Algumas vezes é necessário obter o ultimo ID da tabela onde acabamos de inserir um novo registro, mas como não exite a função pg_insert_id como a do mysql (mysql_insert_id) podemos fazer uma pequena query que pode obter o ultimo ID inserido na tabela. Vejamos o exemplo abaixo

Estrutura da Tabela

CREATE TABLE cliente(

id_cliente SERIAL NOT NULL PRIMARY KEY,

nm_cliente VARCHAR(50) NOT NULL,

dtniver_cliente DATE,

genero_cliente CHAR(1) NOT NULL,

);

Vamos pegar o seguinte comando:

$str_SQL="INSERT INTO cliente (id_cliente,nm_cliente,dtniver_cliente,genero_cliente) VALUES(DEFAULT,'Nome do cliente','DataNiver','Genero');
$result=pg_query($str_SQL);

if(pg_affected_rows($result)>0){

$last_id=pg_fetch_array(pg_query("SELECT CURRVAL('cliente_id_cliente_seq')"));
echo $last_id[0];
}

Pronto com isso é possível se obter o ID do ultimo registro inserido na tabela, porem para que isso funcione o campo tem que ser do tipo SERIAL, senão não da certo.