Symantec Q&A – Enterrando de vez um banco de dados antigo

18 Julho, 2009

Achei que deveria escrever este artigo sobre esse banco de dados, para ajudar outras pessoas que algum dia possam ter o mesmo problema.
Como não encontrei muito pela internet sobre como converter os dados dele para algum banco de dados atual, escrevo aqui como fiz.
O Symantec Q&A (Questions & Answers) foi um banco de dados usado lá por meados de 1985-1990 e algo, e rodava em MS-DOS (credo).

Q&A

Recentemente comecei um projeto: estou desenvolvendo um sistema para uma empresa de venda de Navios, e esse sistema substituirá o Q&A por PHP/MySQL nessa empresa. Então tive que exportar os dados do Symantec Q&A deles para um formato que pudesse ser importado para o MySQL.

Como aqui no meu notebook uso o Arch Linux, primeiro abri o programa dentro do Prompt do MS-DOS no Windows XP instalado no Virtualbox. Depois, me lembrei do dosemu, que emula o MS-DOS no Linux, e me daria a possibilidade de abrir o Q&A sem precisar rodar o Windows XP no Virtualbox. Então instalei aqui o dosemu, e passei a utilizá-lo. Funciona da mesma forma que o Wine, ou seja, no Wine o comando seria “$ wine Programa.exe“; no dosemu, para rodar um programa, é da mesma forma: “$ dosemu Programa.exe“, e só.

Após rodar o Q&A pelo dosemu, para exportar o banco de dados de DTF (Formato do Q&A) para algum formato a ser importado para o MySQL, primeiro tive que ir em File->Utilities->Export data, e ali selecionei o formato dBase III. Em “Export to”, é só entrar com o filename para exportação e colocar a extensão .dbf (Extensão do dBase).

À partir daí, comecei a pensar em como abrir esse arquivo do dBase e exportá-lo para algo como .CSV ou .ODS (.xls do MS-Excel para os que não conhecem o OpenOffice.org).
Como no Arch Linux temos o ótimo AUR à nossa disposição, fui buscar algum pacote para fazer isso pra mim. Acabei encontrando os pacotes dbf e libdbf, que estavam como órfãos (Sem nenhum mantenedor). Então, notei também que o PKGBUILD deles estava com alguns erros, e acabei adotando esses pacotes, me tornando mantenedor dos mesmos, e pude modificar seus PKGBUILDs para ficarem corretos.

Após dar o $ makepkg e gerar os pacotes, com o simples comando

$ dbf –csv 1CLIENTS.csv 1CLIENTS.dbf

pude converter de dBase para .csv, podendo assim posteriormente abrir no OpenOffice.org, editar e organizar os campos.
Obs: –csv tem dois traços. O WordPress junta esses dois traços em um só, por isso ficou errado acima

Depois disso foi só modelar o banco de dados usando o PowerArchitect, criar as tabelas no phpMyAdmin, organizar tudo no OpenOffice e importar os arquivos .csv com os dados pelo phpMyAdmin.

Obs: Existe uma forma mais simples de converter o .dbf para .csv, que é abrindo o .dbf diretamente pelo OpenOffice.org Calc e salvando como .csv. Porém, fazendo isso alguns campos não ficaram tão corretos para mim. Então, preferi usar o .csv gerado pelo pacote chamado dbf.

Adeus Symantec Q&A.
Fiz uma boa ação ao mundo ;)


Instalando servidor LAMP com No-IP no Debian GNU/Linux e Velox

21 Abril, 2008

Neste post irei mostrar como configurar um servidor LAMP (Linux, Apache, MySQL, PHP) no seu PC, usando o Debian GNU/Linux como sistema operacional, tendo Velox como meio de conexão, com modem roteado, e usando o No-IP para ter um DNS fixo. Sempre procurei pela internet uma forma de fazer rodar um servidor aqui no meu PC, e em todos os lugares, diziam que teria que fazer um redirecionamento na porta do modem, mas nunca diziam como. Então aqui irei mostrar passo-a-passo todo o processo.

Roteando o modem

Primeiro, o seu modem já terá que estar roteado.

Tendo o modem roteado, você tem facilidade de compartilhamento. Basta ligar o modem a um hub, e pronto, todos os computadores ligados ao hub poderão acessar a internet, sem necessidade de grandes configurações. O modem estando roteado, conta com um firewall embutido, que elimina a necessidade de firewalls por software nos computadores da rede – um ganho em segurança (já que firewalls por software podem ser facilmente desabilitados por qualquer um que use o computador) e em desempenho (um programa a menos rodando na sua máquina). Não será preciso instalar nenhum cliente PPPoE no micro (esse trabalho passará a ser feito pelo modem). Ao se desligar os computadores, a conexão do modem continua ativa, a menos que o modem seja desligado. Isso pode ser útil, por exemplo, para segurar o mesmo IP por muito mais tempo. Compatibilidade de modo prático e sem dor de cabeça com outros sistemas operacionais ou arquiteturas que não possuem programas (bons) pra PPPoE. Qualquer sistema que trabalhe com TCP/IP provavelmente aceitará o modem sem maiores problemas, contanto que bem configurado.

(Partes do texto acima, retiradas daqui)

Para rotear seu modem, siga um tutorial no site ABUSAR:

Se o seu modem é o SpeedStream 4200, siga esse tutorial:
http://www.abusar.org/manuais/c_4200velox.html
Pra mim, só precisei seguir a partir do passo 2.5. O que tem antes lá, foi desnecessário. Pra acessar a interface do modem, só precisa digitar 192.168.254.254 no seu navegador, entrar com a senha de administrador criada, e fazer as configurações contidas no tutorial. Esse modelo não precisa de atualização de Firmware para ser roteado.

Caso o seu modem seja o SpeedStream 5200, siga este outro tutorial:
http://www.abusar.org/manuais/5200/torouterebridge.html
Já tive um desses também, e posso dizer que pra rotear o 4200 é bem mais simples.
Tendo o modem roteado, iremos para o próximo passo…

Baixando pacotes necessários

Atualize o conteúdo de seus repositórios com o comando:
# aptitude update

Instale os pacotes necessários:
# aptitude install apache2 mysql-server php5 php5-mysql libapache2-mod-php5

Obs1: Nas telas de configuração, escolha o padrão em todas.
Obs2: Alguns pacotes extra serão instalados automaticamente.

Instalando o MySQL

Crie o ambiente MySQL:

# mysql_install_db

Adicione uma senha para o root:

# mysqladmin -u root password ’sua_senha’

Entre como root:

# mysql -u root -p

…e informe sua senha.

Pronto! Você já tem seu servidor MySQL instalado.

Testando o LAMP

Inicie o Apache e o MySQL com os comandos:
# /etc/init.d/apache2 start
# /etc/init.d/mysql start

A pasta onde ficam as páginas, é /var/www
Crie um arquivo chamado index.php dentro dela, com o seguinte conteúdo:

<?php
phpinfo();

?>

Agora, no seu navegador, digite http://localhost
Se você visualizar uma página exibindo as configurações do PHP na tela, seu ambiente LAMP está pronto.

Caso ocorra algum problema, é só acertar algumas configurações no Apache.

Caso você não esteja conseguindo acessar suas bases de dados, tente o comando:
# dpkg-reconfigure php5-mysql

Configurando redirecionamento de porta no modem

Até este ponto, seu servidor LAMP está pronto, mas se você der o seu IP para uma pessoa acessar o servidor no seu PC, a pessoa não conseguirá, pois o Velox bloqueia a porta 80. Para isso, temos que fazer um redirecionamento de porta (Port Forwarding), acessando a página de configurações do modem, pelo mesmo endereço indicado no início desse post: 192.168.254.254

Tendo acessado a página com seu navegador, vá em “Port Forwarding” se estiver en Inglês, ou em “Redirecionamento de porta”, se estiver em Português.

Abra um terminal, e digite o comando:
# ifconfig | grep inet

Como root, e o resultado será algo parecido com:
inet end.: 192.168.254.3

Voltando ao navegador, clique na segunda opção.. “Redirect selected protocol/service to IP Address:”, e entre com esses números que você acabou de descobrir.
Em “TCP/UDP port(s):” , escreva 8080, e clique em “Apply”.
Isso fará com que ative o redirecionamento para a porta 8080.
Se não estiver marcado como “Enabled”, clique em “Enable”.
Aqui vai um screenshot de como deve estar parecendo a tela:

Agora, reinicie seu modem, clicando em “Reboot” na página de configuração, que no SpeedStream 4200 fica dentro de “Tools”.

Configurando Apache para usar a porta 8080

Agora, precisamos configurar o Apache para ser acessado pela porta 8080.
No Debian, o arquivo que deve ser editado é o /etc/apache2/ports.conf

Para isso, vamos fazer um processo para abrir o arquivo como root:

Se você usa KDE, aperte Alt+F2 e digite:
kdesu kwrite /etc/apache2/ports.conf

Se você usa Gnome, ou alguma distro GTK, aperte Alt+F2 e digite:
gksu gedit /etc/apache2/ports.conf

Obs: Note que “gedit” é o nome do editor de textos. Se você usa XFCE, por exemplo, seria “mousepad” ao invés de “gedit”. Estou explicando assim, pois muita gente não sabe os comandos para acessar pelo vi, e dessa forma é mais fácil.

Após dar um dos comandos acima, será perguntada a senha de root, e será aberto o programa com o conteúdo do arquivo /etc/apache2/ports.conf
Se tiver algo já escrito, apague ou comente, colocando um # no início da linha comentada.
Adicione ao arquivo o seguinte conteúdo:

Listen 8080

Salve e feche o programa.

Vamos reiniciar o Apache:
Abra um terminal e digite:

# /etc/init.d/apache2 restart

Note que digitando http://localhost no seu navegador, resultará em erro. Agora, você deve acessar o conteúdo do servidor entrando em http://localhost:8080

Testando acesso ao servidor

Agora pegue o número do seu IP, que pode ser obtido na página de configuração do modem, em 192.168.254.254, ou nesse site: http://www.ip-adress.com/

Diga o número do seu IP para um amigo acessar o seu servidor e checar se está tudo ok.
O endereço que você deverá passar, será algo como:
http://200.25.252.195:8080
Ou seja, protocolo http + seu número de IP + :8080, que é a porta que será acessada.

Se ele conseguir acessar o conteúdo que você deixou em /var/www, então o acesso ao seu servidor está funcionando.

Obs: Tem que ser outra pessoa pra testar, de outro PC, outro IP, pois se você mesmo tentar acessar, nada vai aparecer

Sobre o No-IP

Seu IP não mudará quando você desligar o PC, portanto, quando você ligá-lo novamente, seu amigo poderá acessar seu servidor com o mesmo endereço, pois você não desligou o modem, e ele manteve o mesmo IP. Porém, repare que se faltar luz, ou houver perda de conexão, o modem vai conectar novamente, e pegar um novo IP, e o endereço que você passou pro seu amigo, não será mais valido, pois você estará com um novo IP. Para evitar isso, temos o No-IP, que faz com que pra acessar o seu servidor, não seja necessário digitar o seu IP, e sim uma URL no navegador. Ele pega a URL e aponta pro endereço do seu IP. Como isso é feito? O No-IP disponibiliza um programa para ser instalado no seu PC, que se comunica com o servidor do No-IP, dizendo pra ele qual é o seu IP atual, e atualiza a URL que você escolheu, pra apontar pro seu IP atual.

Então, como podem ver, é algo bem prático.

Criando conta no No-IP

Faça sua conta no site do No-IP:
http://www.no-ip.com

Depois faça login, e vá em “Hosts/Redirects” > “Add”
Coloque o hostname escolhido, em “Host Type” selecione “Port 80 Redirect”, em “IP Address” Entre com o seu IP atual, e em “Port”, entre com 8080
E pronto, está configurada sua conta no No-IP.
A minha, por exemplo ficou como http://jonathas.no-ip.biz
Note que você não precisara digitar a URL + :8080 (http://jonathas.no-ip.biz:8080)
É só você digitar a URL, que ela vai redirecionar automaticamente para o seu IP, na porta 8080.

Agora precisamos instalar o cliente do No-IP, que vai rodar no seu PC, atualizando seu IP, enviando seu IP atual pro servidor do No-IP, para que sua URL aponte sempre para seu IP atual.

Instalando cliente do No-IP com o pacote direto do site

Vamos seguir agora com a instalação do No-IP, baseada no guia de Scott Harden.
Baixando e descompactando o No-IP

Crie uma nova pasta e baixe o No-IP:

# mkdir noip && cd noip
# wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz

Descompacte o arquivo:

# tar -zvxf noip-duc-linux.tar.gz

Para instalar execute o comando:

# make && make install

Após o termino da instalação, será apresentada na tela algumas perguntas:

“Please enter the login/email string for no-ip.com:” Digite aqui o login/email cadastrado no site no-ip.com

“Please enter the password for user `seu login/email será apresentado aqui`:” digite sua senha.

“Please enter a update interval: [30]:” intervalo de atualização em minutos

“Do you wish to run something at successful update?[N] (y/N)” “n”

Instalando cliente do No-IP pelo Aptitude

Ou simplesmente abra o terminal, e faça um
# aptitude install noip2

Faça:
# noip2 -C -U 10

-C Cria o arquivo

-U Define o tempo de atualização

Entre com os dados da sua conta no no-ip
e defina qual dominio vc quer que ele atualize o ip (isto para quando vc tem vários).

Testando servidor com No-IP

Agora passe a sua URL criada, que aponta pro seu IP, para seu amigo poder testar do PC dele.

Obs: Tem que ser outra pessoa pra testar, de outro PC, outro IP, pois se você mesmo tentar acessar, nada vai aparecer

Se ele visualizar o conteúdo do seu servidor, armazenado na pasta /var/www, utilizando a URL do No-IP pra se conectar, então tudo foi configurado da forma correta.

Tendo terminadas todas as configurações, vamos agora a uns extras…

Programas na inicialização do Sistema

Quando o Apache e o MySQL são instalados, eles são automaticamente configurados para inicializarem junto com o sistema. Se você não deseja isso, instale um programa chamado rcconf:

# aptitude install rcconf

Com o rcconf, é possível retirar programas e serviços da inicialização do sistema.
Rode-o digitando o nome no terminal:

# rcconf

Use a barra de espaço pra marcar e desmarcar ítens, e o tab para ir para os botões de “Ok” e “Cancelar”.

Retirando o Apache e o MySQL da inicialização do sistema, eles só serão inicializados quando você digitar no terminal:

# /etc/init.d/apache2 start
# /etc/init.d/mysql start

Para não precisar escrever isso tudo, criei dois scripts básicos com esses comandos: um para iniciar o LAMP, e outro para parar o LAMP.

Scripts para inicializar e parar o LAMP

Script para inicializar LAMP:
Abra seu programa favorito, como Gedit, Kwrite, vi, etc…
Digite o seguinte texto:

#!/bin/bash

/etc/init.d/apache2 start
/etc/init.d/mysql start
echo ‘Lamp inicializado…’

Salve com o nome de “lamp-start”, sem extensão mesmo.
Abra um terminal, e torne o arquivo executável:

$ chmod +x lamp-start

Logue-se como root, e mova o arquivo para /usr/local/bin/

# mv lamp-start /usr/local/bin

Isso fará com que, de qualquer pasta que você estiver, no terminal, e digitar (como root) “lamp-start” (sem as aspas, claro), irá inicializar de uma só vez o Apache e o MySQL.

Script para finalizar LAMP:

Abra seu programa favorito, como Gedit, Kwrite, vi, etc…
Digite o seguinte texto:

#!/bin/bash

/etc/init.d/apache2 stop
/etc/init.d/mysql stop
echo ‘Lamp finalizado…’

Salve com o nome de “lamp-stop”, sem extensão mesmo.
Abra um terminal, e torne o arquivo executável:

$ chmod +x lamp-stop

Logue-se como root, e mova o arquivo para /usr/local/bin/

# mv lamp-stop /usr/local/bin

Isso fará com que, de qualquer pasta que você estiver, no terminal, e digitar (como root) “lamp-stop” (sem as aspas, claro), irá finalizar de uma só vez o Apache e o MySQL.

Bem, por hoje é só. Até a próxima.