RSS

Ubuntu 12.04 LTS em um Asus Eee PC 1005PEB

Em meados de 2010 comprei um netbook Asus Eee PC 1005. Como foi um semi-novo, comprado de um usuário de GNU/Linux, ele já veio com o Ubuntu 10.04, que era o último LTS lançado na época. E desde então estava com essa versão.

Agora que saiu o mais novo LTS, o 12.04, fiz a atualização. Mas em vez de formatar, e fazer uma instalação limpa, fiz a atualização completa, conhecida como dist-upgrade, como já tinha feito várias outras vezes. Esse tipo de atualização lhe dá a comodidade de não precisar fazer as configurações e instalações de aplicativos que sempre são feitas depois da instalação do sistema operacional. Mas sempre há o risco de algo sair errado.

E dessa vez saiu: a rede não era inicializada junto com o restante do sistema operacional, o touchpad travava vez ou outra e algumas vezes a tela ficou toda preta, o que forçava uma resetada na máquina. Para o primeiro problema, resolvi inicializando o serviço de rede manualmente (agradeço ao John Wendell pela ajuda com isso), o segundo colocava um mouse para poder mover o cursor, mas o terceiro teve consequências*, a ponto de me obrigar a fazer uma instalação limpa.

Antes de comentar sobre como foi o reconhecimento do hardware, alguns pontos sobre o processo de instalação:

  • sempre coloque o /home em uma partição diferente do /. Isso evita inconvenintes futuros, como ter de obrigatoriamente fazer backup antes de uma instalação dessas e restaurar depois;
  • uma novidade que eu gostei no instalador do Ubuntu 12.04 é o reconhecimento do teclado. Ele vai pedindo para você apertar algumas teclas e perguntando se o teclado tem algumas outras, com base nisso seleciona o tipo de teclado para você;
  • eu iria colocar para partição / com 10GB de tamanho, mas ele só permitiu 18GB. Não sei se isso é um valor mínimo definido, baseado sabe-se lá em que pela Canonical (o meu outro computador tem o / com 6GB há um bom tempo), ou é uma porcentagem em relação ao tamanho do HD.

Sem fazer configuração alguma após a instalação, a compatibilidade foi a seguinte:

Ubuntu 12.04 no Asus Eee PC

Ubuntu 12.04 no Asus Eee

  • Vídeo OK
  • Saída para datashow – OK. Só plugar que ele já faz o ajuste, pelo menos no datashow que testei.
  • Som – OK. Caixas internas e fone de ouvido.
  • Microfone – não testado.
  • Tecla Fn – OK
  • Touchpad – OK
  • USBs – OK
  • Placa de rede – OK
  • Rede sem fio – OK
  • Suspensão – OK

É isso. Estou bastante satisfeito com o Ubuntu 12.04.

* Depois eu fui descobrir que essa apagar acontecia quando se aumentava o brilho ao máximo na tela de boot. Deve ter um bug ali que quando o brilho chega ao máximo a tela fica preta. Bizonho isso.

 
3 Comentários

Publicado por em 20/09/2012 em Sem categoria

 

Tags: , , , , ,

Investigação e Extensão de uma Ferramenta de Auxílio ao Ensino de Algoritmos em Ambientes GNU/Linux – G-Portugol

O título deste foi o título do meu trabalho de conclusão de curso para obtenção do diploma de bacharel em Ciência da Computação pela Universidade do Estado do Rio Grande do Norte (UERN).

A investigação se deu na medida em que pesquisei algumas ferramentas que pudessem ser utilizadas em disciplinas de algoritmos/introdução a programação em sistemas GNU/Linux. Em particular, refiro-me a ferramentas que pudessem compilar/executar programas escritos em portugol. O resultado dessa pesquisa pode ser resumida na tabela abaixo:

Tabela 1: Comparação entre ferramentas de auxílio ao ensino de algoritmos
Quila AlgoMais G-Portugol
Linguagem em que foi desenvolvido C++ Java C++
Licença GPL ??? GPL
Compilador x x
Interpretador x x
Editor x x
Nativo x x
Documentação Razoável Excelente
Ativo x
Usabilidade Boa Razoável Boa/Excelente
Instalação Difícil Muito difícil Difícil

Apresentando um pouco mais sobre cada um destas ferramentas:

  • Quila: a característica mais vantajosa dessa ferramenta é a sintaxe semelhante ao Pascal, mas com as palavras-chaves em português. Porém, esse interpretador só está disponível em formato de código-fonte, sendo necessário sua compilação para uso, que pode não ser trivial para quem está começando no mundo da computação. Atualmente o projeto está abandonado pelo seu autor original.
  • AlgoMais: é um interpretador de algoritmos que embora feita na linguagem Java, conhecida pela sua portabilidade, para ser executado em ambiente GNU/Linux é necessário uma série de ajustes manuais, o que o deixa inviável para iniciantes.
  • G-Portugol: é um projeto que envolve a definição de uma linguagem, também chamada de G-Portugol. Sua principal ferramenta é o GPT, que faz a compilação para linguagem de máquina, tradução para C e Assembly, e interpretação dos algoritmos. A outra ferramenta é o GPTEditor, editor para a linguagem com recursos de destaque de sintaxe e depuração.

Disso tudo, podemos deduzir que o projeto mais completo e bem acabado é o G-Portugol, incluindo a documentação. No entanto, a linguagem G-Portugol não é totalmente compatível com o Português Estruturado comumente apresentado nos cursos de algoritmos, não podendo ser completamente utilizado em um curso que envolvesse programação. Por exemplo, não havia o instrução “repita… até…” nem passagem de parâmetros por referência. E foi aí que entrou a “extensão”. Analisei o código fonte do GPT e fiz a inclusão do “repita… até…” e a correção de alguns bugs, além da documentação de todo esse processo, facilitando para que outros deem continuidade.

Quando propuz este trabalho, o professor da disciplina de orientação do TCC disse que compiladores são normalmente construídos durante uma disciplina. E, de fato, do ponto de vista técnico da implementação, do produto final produzido pelo meu trabalho, não há nada de grandioso ou inovador. Mas não era isso que eu tinha em mente.

Uma auto-restrição que apliquei foi a de que todo o código produzido deveria ser retornado para o projeto, já que este era um software livre. E realmente, este foi o maior trunfo deste trabalho, bastante elogiado pela banca, por sinal. Aquele não seria mais um trabalho encadernado e esquecido na biblioteca, de fato, trabalhos futuros partirão de onde parei. A partir do código que produzi. Este é o modelo que deveria ser utilizado pela instituições de ensino, principalmente pelas públicas.

Para quem tiver interesse, segue abaixo o trabalho escrito, devidamente licenciado em Creative Commons.

Até o próximo.

 
1 Comentário

Publicado por em 14/02/2011 em pessoal

 

G-Portugol 1.1 no Ubuntu 10.04 LTS

Foi 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
./olamundo

Olá 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.

 
10 Comentários

Publicado por em 18/06/2010 em Tutorial

 

Tags: , , , ,

Meme 2009 – Parte II

Oi, 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:

  1. 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.
  2. 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.
  3. Eu, esposa e a banca

    Rosiery (orientado do TCC), eu, esposa, Cláudia e Aquiles (banca de defesa do TCC)

  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. 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.
  10. 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.

 
1 Comentário

Publicado por em 31/12/2009 em pessoal

 

Tags:

Ubuntu 9.04 no Itautec W7635

Como 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.

Ubuntu 9.04 no Itautec W7635

Ubuntu 9.04 no Itautec W7635

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.

 
15 Comentários

Publicado por em 14/05/2009 em Geral

 

Conversão de MySQL para PostgreSQL – Parte II

No 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. :D

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.

 
Deixe um comentário

Publicado por em 02/05/2009 em Sem categoria

 

Tags: , , ,

Conversão de MySQL para PostgreSQL

Enquanto 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. ;)

 
13 Comentários

Publicado por em 04/02/2009 em Tutorial

 

Tags: , , ,

 
Seguir

Obtenha todo post novo entregue na sua caixa de entrada.