G-Portugol 1.1 no Ubuntu 10.04 LTS
18 de Junho de 2010, 0:00 - 2 comentáriosFoi lançada este mês a versão 1.1 do G-Portugol, que é uma linguagem de programação totalmente em português,derivado do que se conhece por “portugol”, uma notação muito utilizada para o ensino de algoritmos. O diferencial do G-Portugol em relação a outras implementações do portugol, é que ele utilizada acentos e cedilhas, além de rodar em sistemas Windows e GNU/Linux.
O G-Portugol foi tema do meu trabalho de TCC. Eu não criei o G-Portugol, mas uma boa parte do código que foi adicionado nesta versão foi produzido por mim durante este trabalho de fim de curso. Particularmente, adicionei a instrução “repita… até” e a capacidade da instrução “retorne” no bloco principal, além da correção de alguns bugs. Software livre é isso.
Para instalar o G-Portugol no Ubuntu 10.04 LTS, até que seja liberada o pacote .deb, proceda da seguinte forma:
Obtendo o G-Portugol
O G-Portugol é a linguagem de programação, e como você deve saber, precisamos de um compilador para transformar essa linguagem que pode ser lida por nós humanos para a linguagem de máquina, que será lida pelos computadores. No caso do G-Portugol, esse compilador é o gpt, que você deve baixar da página do projeto, na seção Código Fonte.
Após fazer o download, clique sobre o arquivo com o botão direito e depois na opção “Extrar aqui…”
Preparação do ambiente
Instale as ferramentas necessárias para compilação/instalação e correto funcionamento do gpt
sudo aptitude install antlr libantlr-dev make g++ libpcre3-dev nasm
Compilação e instalação
Entre no diretório criado quando você extraiu o arquivo baixado e execute os seguintes comandos
./configure
make
sudo make install
Testando se instalou corretamente
Execute o comando abaixo e se a saída foi semelhante a esta, a instalação foi feita e você poderá compilador seus algoritmos
gpt -v
GPT – Compilador G-Portugol
Versão : 1.1
Website : http://gpt.berlios.de
Copyright (C) 2003-2009 Thiago Silva <tsilva@sourcecraft.info>
Fazendo o Olá Mundo
Esse pacote que você descompactou traz também um arquivo de exemplo com o velho Olá Mundo em G-Portugol, no diretório exemplos.
cd exemplos
gpt olamundo.gpt
./olamundoOlá Mundo!
Prontinho, agora você pode fazer seus programas em G-Portugol, usando seu editor de texto preferido. Eu indico o G-Edit. Para maiores informações, veja a documentação do G-Portugol.
Meme 2009 – Parte II
31 de Dezembro de 2009, 0:00 - sem comentários aindaOi, tem alguém aí?
No início do ano escrevi um artigo com 9 metas para 2009. Vamos agora ver o que aconteceu com cada um deles:
- Tirar a carteira de motorista #epicfail
Isso deveria ter acontecido naturalmente, mas após ter feito os exames médicos/psicológicos fui adiando a entrada na autoescola, adiando, adiando e acabei entrando somete em novembro. Fiquei com o prazo apertadíssimo para concluir, mas deu tempo. Fui fazer minha prova prática dia 18, e tinha até o dia 24. Só que aconteceu uma coisa que eu só acredito porque foi comigo: eu simplesmente esqueci de fazer o ziguezague nos cones. E como o meu processo venceu no último dia 24, terei que abrir um novo e repetir os exames, ainda bem que não precisa da autoescola. - Concluir o bacharelado #OK
Esta era a prioridade para este ano, o que acabou meio que atrapalhando os outros. Mas finalmente consegui concluir o bacharelado em Ciência da Computação na UERN. - Manter este blogue #fail
A meta era dois post por mês até a conclusão do item 2, e um por semana depois disso. O número de posts fala por si só. Mas eu tenho alguns rascunhos iniciados, vou tentar despachar alguns nesse mês de janeiro. - Passar no concurso para analista do IFRN #epicfail
Esse eu simplesmente não fiz a inscrição. No período da inscrição eu estava no Rio de Janeiro participando de um treinamento de um software do MEC, e aí é aquela coisa, quando eu lembrava não tava com tempo, quando tava com tempo deixava para “mais tarde” e acabou que não fiz a inscrição. Uma típico caso de epic fail.
Por outro lado, passei na seleção para professor substituto da UERN. Toda terça-feira acordo às 4h30min da madrugada para ir dar aula de Compiladores em Santa Cruz e na sexta-feira nesse mesmo horário para ir à Nova Cruz com aulas de Sistemas de Informação. Dureza. - Ir para o Fisl 10 #fail
Nem consegui as passagens pelo IFRN, e nem a ASL.org quiz pagar a minha passagem como fez no ano passado por participar da organização do evento, traduzindo o site e outras coisa que podem ser feitas a distância. - Ter uma vida mais saudável #fail
Esse é o mais difícil de mensurar. Mas posso dizer que continuo dormindo ruim, comendo ruim e não voltei à prática de exercícios físicos. A nova vida de docente tem muito a ver com isso, principalmente com o sono. - Perder menos tempo com coisas fúteis #bitfail
A situação melhorou bastante, mas considero ainda que contínuo perdendo muito tempo com coisas fúteis. Se de um lado desinstalei o Twitterfox (Echofon é um nome feio), estou viciado no Tweetree.com. E agora tenho televisão em casa. Para 2010 eu preciso melhorar o par foco/concentração. Ultimamente tenho lido sobre a técnica do pomodoro, mas ainda não sei o que aplicar de fato. - Ler mais #fail
Ano passado li muito pouco. E esse também. Depois de Helena no início do ano, não consegui terminar nem um livro que tem aqui de míseras 130 páginas, sem contar que é um livro de bolso, ou seja, com dimensões pequenas. E também não perdi nem um livro. - Cumprir todos os itens acima #fail
Já deu para perceber que esta meta também não foi alcançada, né?
Como escrevi devido um convite generalizado do Rodrigo Flores, convido-o para fazer o mesmo agora.
E Feliz Ano Novo cheio de paz e todas aquelas coisas que desejamos nesse período. Nos vemos em dois mil e dez.
Ubuntu 9.04 no Itautec W7635
13 de Maio de 2009, 0:00 - sem comentários aindaComo vocês todos devem saber, no último dia 23 foi lançado o Ubuntu 9.04. E quem me conhece sabe que eu sou um (in)feliz proprietário de um notebook Itautec Infoway Note W7635.
Quando eu instalei nele o Ubuntu 8.04, pensei em não tirá-lo tão cedo. Um motivo é por ele ser LTS e o outro é que já passei da fase de estar instalando todas as versões, principalmente o Ubuntu que tem uma a cada seis meses.
Não vi motivo para migrar para o Ubuntu 8.10, mas com o 9.04 foi diferente. Se falou tanto coisa boa dele, incluindo a ótima notícia de compatibilidade nativa com a placa de vídeo VIA Chrome, o que pude comprovar durante o Flisol em Natal rodando um live-cd, mas não cheguei a fazer a instalação. E hoje chegou o grande dia.
Sem fazer configuração alguma após a instalação, a compatibilidade foi a seguinte:
- Video – OK
- Saída para datashow – não testado
- Som – sai nas caixas e no fone de ouvido. Mas quando está com fone de ouvido continua saindo nas caixas. Porém o som está ruim. Depois vejo o que pode ser feito.
- Microfone – não testado
- Tecla Fn – OK (com exceção do controle de brilho)
- Touchpad – OK
- USBs – OK
- Placa de rede – OK
- Rede sem fio – OK
- Modem – nem enxerga o modem
- Hibernar – OK
Ao longo dos dias vou relatando outras coisas boas e ruins que encontrar por aqui.
Conversão de MySQL para PostgreSQL – Parte II
2 de Maio de 2009, 0:00 - sem comentários aindaNo artigo anterior, eu falei que um pequeno problema no script mysql2pgsql impedia de executar no pgAdmin III o arquivo gerado. E que a saída foi gerarmos o arquivo sem os ‘DROP TABLE’s. Finalizei perguntando o que fazer se precisássemos dos benditos DROP’s.
Bom, nós podemos:
- Gerar com os DROP’s e corrigir o problema manualmente substuindo o ‘\g’ por ‘;’. Usar o recurso de um editor de texto para Localizar e Substituir também ajudaria muito;
- Esperar sair uma nova versão com a correção desse erro;
- Informar aos desenvolvedores do erro, o que seria uma ajuda para o item acima;
- Desistir do mysql2pgsql e pedir novamente ajuda ao Amigoogle;
- além das anteriores, xingar o software (livre) e seus desenvolvedores
- O que mais?
Lembremos da definição de software livre. Um das liberdades é:
A liberdade de aperfeiçoar o programa, e liberar os seus aperfeiçoamentos, de modo que toda a comunidade se beneficie (liberdade nº 3). Acesso ao código-fonte é um pré-requisito para esta liberdade;
Pronto. Todos os nossos problemas acabaram-se. Basta pegar o código-fonte e fazer as alterações. Lindo isso, né? O mysql2psql é um script Perl. E eu nunca andei de camelo. Mas foi aí que eu soube que sabia programar em Perl.
Vamos pensar um pouco. A linha que continha o erro era algo do tipo:
DROP TABLE “nome_tabela” CASCADE\g
O DROP TABLE e o CASCADE são comandos SQL, portanto são fixo. Então, basicamente bastava encontrar o comando Perl que joga as coisas na tela, que no caso é print (descobri quando abri o arquivo), contendo esses termos com alguma variável no meio deles, que seria o nome da tabela, e o famigerado “\g”.
Eu gosto muito do (ou da) Geany e com ele(a) pesquisei por “DROP TABLE”, depois de alguns encontros em comentários cheguei na linha 344.
$pre_create_sql .= “DROP TABLE $table CASCADE\\g\n”; # custom dumps may be missing the ‘dump’ commands
Repare que ela não tem o print, mas certamente essa variável $pre_create_sql será impressa. Agora é só substituir o \g pelo ;. Fiz isso e funcionou perfeitamente.
Até aqui usei o direito de aperfeiçoar o programa. Mas e se outra pessoa também precisar disso? Então vamos liberar o aperfeiçoamento, enviando o script alterado para os autores. Como o caso é simples*, enviarei mesmo por email para o autor que pelo nome eu julgo ser brasileiro e ver no dá.
*Existem outras forma mais modernas de fazer isso.
Conversão de MySQL para PostgreSQL
4 de Fevereiro de 2009, 0:00 - sem comentários aindaEnquanto o banco de dados de código aberto mais popular do mundo é o MySQL, o banco de dados de código aberto mais avançado do mundo é o PostgreSQL. Não é raro termos de fazer conversões de um para outro.
Depois de alguma ajuda do Amigoogle, encontrei o script mysql2pgsql. Como o nome sugere, este script faz a conversão de bancos de dados do MySQL para o PostgreSQL. Depois de baixá-lo e atribuir permissão de execução para o arquivo, para fazer a conversão é necessário gerar um dump do banco MySQL e executar o seguinte comando:
$ ./mysql2pgsql.perl [MYSQL] [POSTGRESQL]
Onde:
- [MYSQL] é o arquivo dump que você gerou
- [POSTGRESQL] é o arquivo que será gerado. Cuidado para não sobrescrever um arquivo que já exista
Depois disso, é só você pegar o arquivo gerado, executar no psql, ou PgAdmin III e ganhar alguns pontos com seu chefe. Em tese.
Abrindo um parênteses. Quando executei foi no PgAdmin III (que é o que eu costumo usar) ele não executou pelo problema que descrevo abaixo. Estava com este artigo praticamente pronto, quando dei ouvidos a voz do além que dizia: Você não testou isso no psql! Dito e feito. Testei e o danado não reclamou de nada. Então o problema que descrevo só acontece no PgAdmin III – eu sempre achei que o PgAdmin usava o psql por baixo. Fecha parênteses.
O arquivo gerado mysql2pgadmin é um arquivo com comandos SQL de criação (CREATE) de objetos do banco (tabelas, sequências, índices etc.) e seus respectivos comandos de INSERT. Mas o padrão dele é também incluir comandos de remoção (DROP) desses objetos. Acontece que para os DROP’s das tabelas, ele gera a seguinte saída:
DROP TABLE “nome_tabela” CASCADE\g
O PgAdmin vai reclamar desse “\g”. Oh, céus. E agora?
Como todo software (livre) que se preze, o mysql2pgsql tem uma ajuda. Help para os íntimos. Basta executá-lo com o parâmetro -h, como abaixo:
$ ./mysql2pgsql.perl -h
Atenção para o que diz a descrição do parâmetro –nodrop:
–nodrop: strips out DROP TABLE statements
otherise harmless warnings are printed by psql when the dropped table does not exist
Ótimo. Podemos gerar o arquivo para o PostgreSQL sem os ‘DROP TABLE’s. E sermos felizes.
Peraí. E se precisarmos que o DROP TABLE seja gerado? Isso é assunto para o próximo artigo. Nos vemos em breve.