RSS

Arquivo da tag: software livre

Esquentando os motores para Algoritmos

Depois de alguns semestres lecionando disciplinas mais avançandas nos cursos de Informática (Integrado e Licenciatura) do IFRN, em 2014.2 voltarei a lecionar uma básica. Aquela que eu considero como a mais importante do curso: Fundamentos de Lógica e Algoritmos. Sim, considero com a mais importante porque faça uma boa disciplina (aprenda de verdade, não é só ser aprovado) e tenha um restante de curso tranquilo. Não aprenda de verdade (embora seja aprovado) e padeça o resto do curso.

Justamente por isso, as discussões sobre como “ensinar algoritmos?” são sempre muito constante. Qual a melhor linguagem? Fazer no papel? Usar computador? O que mais pode ser usado? O que os outros fazer? São questões comuns. Por outro lado, existem várias iniciativas ao redor do mundo para o ensino de programação. Incluindo para pessoas comuns, que não usarão programação no seu dia-a-dia. Sou um grande fã delas.

Atualmente, minha linguagem preferida para ensino de programação é Python. E será utilizada como linguagem de programação para praticar o que veremos nas aulas de Algoritmos. Importante destacar que o objetivo não é o ensino de Python, ou uma outra linguagem de programação qualquer, mas sim os fundamentos de lógica de programação. A linguagem aqui é meio e não fim.

Mas antes irei utilizar outras ferramentas mais lúdicas, como o Code.org, uma das iniciativas citadas anteriores. O site em si é em inglês mas os tutoriais estão em portugês do Brasil. Os vídeos com as instruções do que fazer em cada aula estão legendados, mas parecem estar bugados. Na janela onde o vídeo aparece tem uma aba “Nenhum vídeo? Mostrar notas.” Clicando ali, é exibido o texto do que eles falam.

Outra ferramenta bem parecida com essa, é o Scratch. Sendo que essa você deverá baixar e instalar. Além de não ter o acompanhamento que tem no Code.org. Mas tem liberdade para criar mais coisas. O céu é o limite.

Evoluindo para Python, também usaremos uma ferramenta online para auxiliar o processo de aprendizado, Codecademy. Ele tem cursos de várias linguagens, não só Python. Em disciplinas futuras, podemos usar outras, como HTML/CSS e JavaScript. Álias, onde mais tenho utilizado o Codecademy é em disciplinas de desenvolvimento web. Com um bom retorno.

Um recurso que eu sinto falta no Codecademy é a possibiliade de fazer um cadastro como professor e montar turmas com alunos, pra facilitar o acompanhamento. O Code.org tem esse recurso, mas ainda preciso ver até onde vai.

Anúncios
 
3 Comentários

Publicado por em 29/09/2014 em Profissional

 

Tags: , , ,

Dois anos de professor efetivo do IFRN

Hoje, 01/03/2014, completam exatos dois anos que assumi o cargo de Professor Efetivo do IFRN. Mas minha história com essa instituição começou bem antes. Podendo ser cronologicamente resumida da seguinte forma:

  • 1998-2001 – Aluno do curso Técnico em Informática Integrado com o Ensino Médio
  • 2002-2006 – Aluno do curso Tecnologia em Desenvolvimento de Software
  • 2011-2012 – Professor Substituto no Campus Parnamirim
  • 2012-atual – Professor Efetivo no Campus Ipanguaçu

Vez ou outra me perguntam o porquê de que virei professor. Não existe um motivo único (o financeiro é um deles, já que meu cargo anterior era o de nível médio, e este de nível superior), mas talvez o que mais me atraiu foi a possibilidade de influenciar positivamente a vida de pessoas através da educação.

Anos antes de vislumbrar essa possibilidade, eu me envolvi ativamente com o Movimento (Social) de Software Livre, quando era aluno do curso tecnólogo. Organizei eventos, participei como expectador e palestrantes de outros. Sempre na intenção de atrair mais usuários e colaboradores.

Nessa época, ficou claro para mim que software livre é a melhor solução no que diz respeito ao ensino e aprendizagem. No entanto, havia, e ainda há, uma certa resistência pela adoção de uma política pró-software livre nas instituições de ensino. Foi aí que pensei, juntamente com outros vários colegas do movimento:

Nós precisamos ‘tomar’ o lugar dos atuais professores. Temos de mudar o sistema por dentro.

Esse é um dos aspectos pontuais pelo qual tenho trabalhado para influenciar meus alunos, mas não se restrigindo a ele. Fico extremamente feliz  quando um aluno me diz que fez isso ou aquilo por minha influência, ou quando vem me pedir opinião sobre algo, inclusive sobre vida pessoal e profissional.

O exemplo recente mais marcante que tenho/lembro é de um aluno do Campus Natal Central do IFRN que conversei sobre a carreira/vida de professor e dias depois ele veio me agradecer por essa conversa ter sido motivação para o mesmo fazer o atual concurso para professor do Instituto, inclusive ficando em 1º lugar na prova escrita. Certamente será um novo colega de trabalho nos próximos meses.

Ainda tenho muito o que fazer e aprender sobre o ofício da docência, mas avalio que tenho feito um bom trabalho nesse período, em particular com ensino e extensão. Que muitos anos venham pela frente.

 

 
Deixe um comentário

Publicado por em 01/03/2014 em pessoal, Sem categoria

 

Tags: , ,

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

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

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

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

 
15 Comentários

Publicado por em 04/02/2009 em Tutorial

 

Tags: , , ,