domingo, 26 de fevereiro de 2017

Lógica de Programação - OpenKarel - Desafio 1

Karel é um robô que vive em seu mundo retangular com "Avenidas" (nas horizontais) e "Ruas" (nas verticais). OpenKarel é sua mais nova versão que permite rodar o programa em qualquer ambiente Java (antigamente estava limitado a versão Java SE 6.0) e assim é possível dar nova vida a Karel.


Para iniciarmos na programação de Karel é necessário conhecermos alguns comandos de Java:
  • Comando de Decisão SE, em Java este comando é reconhecido pela palavra chave if e sua estrutura é a seguinte:
  • if (decisão_lógica) {
      instruções_caso_verdadeiro;
    }
  • Comando de Repetição PARA, em Java este comando é reconhecido pela palavra chave for e sua estrutura é a seguinte:
  • for (variável_inicial; decisão_lógica; incremento) {
      instruções_caso_verdadeiro;
    }
  • Comando de Repetição ENQUANTO, em Java este comando é reconhecido pela palavra chave while e sua estrutura é a seguinte:
  • while (decisão_lógica) {
      instruções_caso_verdadeiro;
    }
Outro detalhe que devemos nos ater na lógica de Karel a necessidade de construirmos métodos para realizarmos as ações e não mantermos tudo fechado dentro do método principal de execução (run). Um método em Java possui a seguinte estrutura:
[modificador] retorno nome_método([parâmetros]) {
  instruções_do_método;
}
O tipo da variável de retorno de um método é sempre obrigatório, caso não retorne nada a palavra chave void deve ser usada nesta posição.

No vídeo abaixo mostrarei como fazer para que Karel dê a volta completa em seu mundo, preste bastante atenção as dicas do vídeo e tente realizar a mesma tarefa ao final será lançado seu primeiro desafio.


Até a próxima
Fernando Anselmo

domingo, 19 de fevereiro de 2017

Lógica de Programação - O que é Karel?

Antigamente para ensinar Lógica de Programação os professores não tinham muitos recursos então deveriam colocar seus conhecimentos para trabalhar, assim surgiu muitas das coisas que usamos até hoje.

Um exemplo simples é a definição da Orientação a Objetos criada por Kristen Nygaard quando concebeu a Linguagem Simula. Do Brasil surgiu o Visualg para edição e execução de algoritmos em uma linguagem próxima ao Português estruturado. Dos laboratórios do MIT surgiu o Scratch para ensinar como um programa funciona usando blocos. Com uma ideia similar surgiu o GreenFoot para ensinar a linguagem Java.


Nenhuma delas tem o apelo de um simpático robozinho conhecido por Karel. Não pretendo contar toda sua história pois já fiz isso neste documento. Aconteceu que Karel ficou defasada em relação a linguagem Java, chegando ao ponto de só poder rodar com a JSE 6. Resolvi então recriá-la e da-lhe uma nova chance. Só que para isso estabeleci 2 regras:

  • O programa fonte de Karel deveria ser escrito totalmente em linguagem Java sem viciá-lo para determinada versão podendo ser compilado (com algumas mudanças simples) até para JSE versão 1.2.
  • Karel deveria permanecer com todas as funcionalidades como modificar e criar novos mapas, aumentar ou diminuir suas ruas e avenidas, recolher ou deixar sinalizadores e principalmente continuar a ser simples.
No meu site criei uma página para distribuir essa nova versão que chamei de OpenKarel. Sendo que é possível encontrar todo o material disponível sobre Karel. E pretendo (a partir desta publicação) criar uma série de desafios (e resolvê-los) para ajudar a entender como funciona o mundo da Lógica de Programação.


O primeiro vídeo já está disponível no meu canal no YouTube e nele você aprenderá como instalar o OpenKarel no BlueJ que será o nosso editor de códigos Java para os desafios.


Obrigado e até a próxima
Fernando Anselmo

domingo, 12 de fevereiro de 2017

DevOps - Vue.js no Docker

Quarto artigo da série DevOps, continuação do livro Docker que pode ser acessado através do site Academia.edu. Em postagens passadas mostrei três opções de bancos de dados que podem ser hospedadas em contêineres do Docker,  agora quando se trata de ambientes ou linguagens de programação a figura muda um pouco.

Um exemplo simples é o NPM, um gerenciador de pacotes para aplicações JavaScript, não é viável mantê-lo em um contêiner a menos que se deseje programar exclusivamente dentro do contêiner, ou caso similar é do Node.js, um servidor de aplicações JavaScript. Em ambos os casos é ideal instalar na máquina física pois não obteríamos qualquer vantagem colocando-os em contêineres.


Agora, pensemos no Vue.js, um framework para visão da página (é um pouco mais que isso), devido a sua flexibilidade pode muito bem estar amarrado a um contêiner e utilizado apenas quando necessário (o mesmo caso se aplica ao Yeoman e outros frameworks). Porém seu contêiner é um pouco diferente pois de vez em quando necessitamos executar um determinado comando.

Antes de começar é necessário ter a última versão instalada do: npm e nodejs.

1. Instalar a imagem do Vue.js:
$ docker pull amurf/docker-vue-cli
2. Editar o bashrc:
$ nano ~/.bashrc
3. Adicionar a seguinte linha (no final do arquivo):
$ alias vue='docker run -it --rm -v "$PWD:$PWD" -w "$PWD" amurf/docker-vue-cli vue'
4. Sair e entrar novamente do terminal. 5. O Vue.js responderá ao seguinte comando:
$ vue
6. Visualizar as templates oficias para a criação de projetos no Vue.js:
$ vue list
7. Criar um projeto:
$ vue init [template|webpack] [nome_do_projeto]
8. As opções são:
Nome do Projeto?
Descrição do Projeto?
Autor?
Vue Build? [Runtime-only - extenções .vue]
vue-router? No
ESLint? Yes [auxilia a manter o codigo correto]
Padrão de Projeto? Standard
Teste Unitários? No
Teste? No
9. Depois do projeto gerado executar os seguintes comandos:
$ cd [nome projeto]
$ sudo npm install
$ npm run dev
Esperar o Node.js subir e podemos ver a execução do projeto através do endereço http://localhost:8080 com a seguinte tela:


Assista o vídeo para tirar quaisquer dúvida de como proceder:


Obrigado e até a próxima
Fernando Anselmo

quinta-feira, 9 de fevereiro de 2017

Vagrant - Gerencie Máquinas Virtuais no Windows

Mudei do Windows para o Linux por causa de um motivo tremendamente simples: Tudo que usava podia muito bem usar no Linux, então para que deveria ficar com o Windows? Porém existem pessoas que adoram o Windows, MS-Office, MS-SQL e todo M$ que puder encontrar (como existem pessoas que adoram coisas começadas com "i").

Estou publicando uma série de artigos sobre o Docker no qual aquelas pessoas que ainda estão neste sistema não pode aproveitar (a menos que possuia a versão 10 e com o bash). Pensando nessas pessoas resolvi publicar esse artigo sobre o Vagrant, que na minha opinião é a melhor opção em se tratando de Gestão de Virtualização de Ambientes.


Primeiro o Vagrant não gera máquinas virtuais como o VirtualBox, ao contrário, inclusive será necessário ter o VirtualBox para usar o Vagrant. Então para que serve isso? Em condições normais de virtualização de sistemas é necessário baixar o VirtualBox, ter uma ISO do sistema operacional que se deseja virtualizar e realizar um monte de configurações para ter algo aceitável. Vagrant elimina toda essa necessidade, ele baixará, gerenciará e organizará como usaremos o VirtualBox.

Vamos na prática, primeiro é necessário instalar três programas: Vagrant, Oracle VM VirtualBox e Git. Não se preocupe que como tudo no Windows é Next > Next > Next > Vendo minha Alma > Next > Confirma. Baidu instalado com sucesso (não se preocupe pois as chances disso acontecer são de apenas 50%).

Segundo passo, ir na seção de Variáveis de Ambiente e na variável PATH adicionar o seguinte caminho: C:\Program Files\Git\usr\bin.

Agora executar o comando CMD para abrir uma janela de comandos:

a. Criar uma pasta para abrigar o Vagrant:
C:\>mkdir proj
b. Acessar essa pasta:
C:\>cd proj
c. Iniciar o Vagrant:
C:\proj>vagrant init
d. Na pasta será criado um arquivo chamado VagrantFile, adicionar a este arquivo três pequenas mudanças (pode usar seu editor de códigos favorito):
config.vm.box = "ubuntu/xenial64"

config.vm.network "forwarded_port", guest: 8080, host: 8080

config.vm.provision "shell", inline: <<-SHELL 
  passwd -d -u ubuntu
  chage -d0 ubuntu
SHELL
Atenção. Existem seções respectivas para esses dados basta retirar os comentários e modificá-las.

A primeira baixa a imagem do Ubuntu 16.04 (Codinome Xenial Xerus), a segunda informa que será realizado um compartilhamento da porta 8080 entre os sistemas operacionais e por último que no primeiro acesso deve ser definida a senha para o novo sistema. Recomendo que depois olhe com calma esse arquivo pois é ele que controla a máquina disponível no VirtualBox, ou seja, usar o Vagrant é como usar o Apache basta entender como funciona o arquivo de configuração.

e. Obter a máquina virtual
C:\proj>vagrant up
f. Uma vez terminado, basta acessar:
C:\proj>vagrant ssh
Na primeira vez será definido a senha para acessar a máquina, defina-a e digite novamente o mesmo comando.

g. Digitar "exit" se deseja sair da máquina virtual e retornar ao Windows. Para pará-la completamente use o seguinte comando no Windows:
C:\proj>vagrant halt
h. Veja o status do Vagrant com:
C:\proj>vagrant status
Nessa máquina é possível instalar e usar o Docker utilizando todos os comando que já mostrei em publicações anteriores, observe que também associamos a porta 8080 assim será possível subir um site (com o Node.js ou outro servidor) e ver o resultado na máquina Windows.

Infelizmente para este tutorial não gravei nenhum vídeo pelo simples fato de ter abolido completamente o Windows do meu computador pessoal, mas no próximo retomaremos as gravações e agora mesmo com o Windows 7 não existe mais desculpa para não aprender a usar o Docker.

Sei que ficou curioso e está louco para usar o Vagrant com o Docker, mas como? Que tal começar pelo Jenkins? Acesse o blog do Giovanni Nunes e descubra como.

Obrigado e até a próxima
Fernando Anselmo