terça-feira, 29 de setembro de 2015

Android - Seu Telefone no Seu Computador

Para aqueles que possuem um telefone com Android, uma das coisas boas é sua integração com aplicativos do Google, é exatamente essa característica que faz essa postagem se tornar possível. Tem pessoas que não largam o celular enquanto estão no computador, seja para digitar uma mensagem no Whatsapp ou verificar outra coisa. Então ao invés de digitar com um teclado virtual e encher sua tela de marcas de dedos que tal usar o computador para isso? É fácil, indolor e são apenas quatro passos.

O primeiro passo é ativar o modo "Programador" do seu aparelho. Acesse a opção "Configurar" e a última opção é "Sobre o telefone", a penúltima deveria ser o modo "Programador", porém está desabilitada por padrão. Para habilitá-la acesse a opção "Sobre o telefone", navegue até a última opção "Número da Versão" e  (pode parecer ridículo isso) clique 7 vezes nela. Isso mesmo 7 vezes, não, não estou brincando, ao final será mostrada uma mensagem dizendo que você é um "Desenvolvedor". Retorne um tela e observe que agora existe a penúltima opção é "Programador".

O segundo passo é baixar um aplicativo no seu navegador Chrome (sim, só funciona nesse navegador) chamado Vysor. Usei o Ubuntu mas é possível utilizar qualquer sistema operacional que execute o navegador Chrome. Após sua instalação vamos passar para o terceiro passo.

Conecte seu aparelho ao PC, com um cabo "USB - Aparelho" (aquele mesmo que é usado para carregar o aparelho via USB do computador) e ative a "Depuração USB".

No quarto passo retorne ao aplicativo Vysor (através do botão Apps localizado a esquerda na sua barra de favoritos do Chrome) e pressione o botão "Find Devices", deixe-o localizar seu telefone. Uma vez localizado e conectado, no seu telefone aparecerá a mensagem: Permitir a depuração USB? E pronto o resultado no seu computador será a tela do seu celular:


Agora tudo o que você fizer nessa tela, será refletido no celular e vice-versa, inclusive se deitar o celular a tela também deitará. É possível acessar qualquer aplicativo e fazer qualquer coisa, inclusive tirar Printscreen da tela. A grande vantagem? Professores podem aproveitar isso para suas aulas ou desenvolvedores para testarem seus projetos.

O projeto Vysor ainda está na versão beta, mas promete muito mais coisas, veja o vídeo promocional e se divirta:


Obrigado e até a próxima
Fernando Anselmo

domingo, 13 de setembro de 2015

Ambiente de Desenvolvimento - Editores sem Religião

Neste blog já tratei de muitos editores de código. No meu trabalho e em casa uso vários deles, não acredito que devamos "levantar a bandeira" de nenhum, e vejo pessoas brigarem se o Eclipse é melhor que o NetBeans, se o Dreamweaver é o melhor editor de HTML e por aí vai. Olho para essas pessoas e penso em quantas oportunidades de emprego perderam com esse simples comentário (é equivalente a publicar: Eu amo às Sextas-Feiras ou Odeio meu chefe).

Certa vez, estava em um Congresso de Informática conversando com um colega, Gerente de RH de uma empresa de software, e estava me falando na dificuldade de encontrar profissionais qualificados. Um outro colega veio me saudar e durante a conversa soltou o seguinte comentário: "Fernando, você viu a palestra sobre o Eclipse? Que maravilha, não usaria outro editor nem que fosse obrigado". Após sua saída, esse gerente me falou o seguinte: "Quando vi esse seu colega pensei, poderia ser uma possível aquisição, mas..." e deixou a frase por completar para que tirasse minhas próprias conclusões.

Atualmente uso uma série de vários editores para atender minhas demandas, e não os vejo como "Religião", vejo-os simplesmente como ferramentas de trabalho. Escapando um pouco, assim como uso e encaro o Linux por gosto pessoal e nada tenho contra quem usa outro sistema operacional, assim como o LibreOffice e o Gimp. A meu ver, encarar como "Religião" é como aqueles jogadores de futebol que toda vez que marcam um Gol apontam para "Deus" como se ele fosse o responsável ou tivesse feito algo - a meu ver, se isso é verdade - então o goleiro do time contrário deve ser o discípulo de "Satanás" em pessoa. Não misture "Religião" com profissionalismo, isso sempre dá errado.

Nesta postagem pretendo mostrar como instalar uma série de editores, que nada tem a ver com: "Esse é o melhor - USE-O ou seja fulminado!", para seu uso pessoal no Linux. O Java já deve estar instalado e configurado corretamente, sendo pré-requisito para muitos desses editores, qualquer dúvida veja essa postagem.

NetBeans, criado pela Sun como editor oficial de Java (existe uma versão na qual o NetBeans vem junto com o Java), este é um editor que serve para Java, C/C++, Groovy e PHP. Para proceder sua instalação baixe o pacote SH do site oficial. Depois abra um terminal e digite os seguintes comandos:
$ chmod +x netbeans-8.0.2-linux.sh
$ ./netbeans-8.0.2-linux.sh
Fornecemos a permissão de execução para o arquivo e o executamos, pronto simples assim.

PyCharm, desenvolvido pela JetBrain é um excelente editor para Phyton. Tornei-me um amante dessa linguagem devido ao seu múltiplo uso e por preencher os buracos que procurava com o Java. Para sua instalação, é necessário baixar um arquivo compactado no site oficial. Usarei para o exemplo a versão Community que é gratuita.

Passo 1. Para instalar descompactar esse arquivo na pasta /opt, dica mude o nome da pasta gerada para pycharm-community.
$ sudo tar -xvzf pycharm-community[versão].tar.gz
$ sudo mv pycharm-community[versão] pycharm-community
$ sudo rm pycharm-community[versão].tar.gz
Passo 2. Criar um arquivo .desktop na pasta /usr/share/applications, digite o comando: sudo nano pycharm.desktop. Digite o seguinte conteúdo:
[Desktop Entry]
Version=1.0
Type=Application
Name=PyCharm Community Edition
Icon=/opt/pycharm-community/bin/pycharm.png
Exec="/opt/pycharm-community/bin/pycharm.sh" %f
Comment=Develop with pleasure!
Categories=Development;IDE;
Terminal=false
StartupWMClass=jetbrains-pycharm-ce
Atom, desenvolvido pelo pessoal do GitHub, seu uso não está preso a uma única linguagem devido a seu grande número de plugins atualmente o utilizo para realizar qualquer programação HTML 5, CSS, JavaScript e seus vários clones (JQuery, Node.js, Meteor entre outros). Abra um terminal e digite os seguintes comandos:
$ sudo add-apt-repository ppa:webupd8team/atom -y 
$ sudo apt-get update 
$ sudo apt-get install atom -y
De modo similiar, adicionamos o repositório que contém os pacotes e procedemos sua instalação. De resto é apenas adicionar os plugins com a linguagem que se deseja trabalhar.

Android Studio, este virou o Editor Oficial para aplicativos do Android. Abra um terminal e digite os seguintes comandos:
$ sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make
$ sudo apt-get update
$ sudo apt-get install ubuntu-make
E mais uma vez, adicionamos o repositório que contém os pacotes e procedemos sua instalação. O Eclipse também possui plugins para desenvolver em Android mas estes estão caindo em desuso.

Astah, editor de UML, uma característica estranha de todo programador de Orientação a Objetos a de não criar qualquer espécie de documentação para seus projetos. Não me sento para codificar enquanto não tenho claramente em mente o que devo fazer e como fazer, passo às vezes quatro dias planejando para no quinto codificar tudo sabendo exatamente o que devo fazer (e confesso que raramente erro ou tenho que codificar novamente). Sua instalação no Ubuntu é muito simples, basta baixar o pacote .deb do site oficial e dar um duplo clique. A "Central de Programas" será chamada e continuará com o processo de instalação.

Acredito que o Eclipse deva ser o mais utilizado por todos e sua instalação é muito simples, basta baixar o arquivo do site oficial e descompactar, A única observação que tenho a fazer é criar um atalho para seu sistema, para isso, abra um terminal, acesse a pasta /usr/share/applications e digite o comando: sudo nano eclipse.desktop. Digite o seguinte conteúdo:
[Desktop Entry]
Name=Eclipse
Comment=Ferramenta de Desenvolvimento Java
Exec=/home/[usuário]/Aplicativos/eclipse/eclipse
Icon=/home/[usuário]/Aplicativos/eclipse/icon.xpm
Terminal=false
Type=Application
Categories=Deploy
Keywords=IDE;Desenvolvimento;Java;Editor;
Salve com Ctrl+X e pronto a partir do menu de acesso do Ubuntu é possível acessar o Eclipse.

Obrigado e até a próxima
Fernando Anselmo

sábado, 5 de setembro de 2015

Python - Fractal

O que é uma fractal? De modo simples é um desenho geométrico que se repete. Existem milhares de exemplos na natureza da ação das fractais, um floco de neve, uma imagem microscópica da água congelada, mas a olho nu podemos observar uma árvore. Isso mesmo, uma árvore é uma fractal, principalmente um Pinheiro.


O que mais me atrai nas fractais, além de seus cálculos matemáticos, é um dos recursos utilizados em programação que poucas pessoas sabem como utilizar: Recursão.

Recursão é a capacidade de um método chamar a si mesmo várias vezes, essa técnica pode ser aplicada quando realizamos cálculos fatoriais. Sabemos que 5! (cinco fatorial) é 5x4x3x2x1 e o método utilizado para este cálculo é uma recursão, escrito em Python teria a seguinte codificação:
def fatorial(num):
  if (num > 1):
    return (num * fatorial(num-1))
  else:
    return 1

print(fatorial(5))
Dentro do método fatorial enquanto o número for maior que 1 é retornado uma nova chamada ao mesmo método só que com um valor menor, ou seja, neste caso, na primeira vez é passado o valor 5, o método fará uma chamada a si mesmo só que passando o valor 4, e assim sucessivamente até chegar ao valor 1.

Isso pode ser bem complexo para o iniciante em programação mas é um excelente recurso a se usar. Voltando as fractais, a recursão é a base do desenho, já que o mesmo deve se repetir um número limitado de vezes em posições com ângulos diferentes para que possa se formar o desenho.

Eis o código Python que permite o desenho de um pinheiro:
import turtle

def drawBranch(size, angle): # Funcao recursiva para desenhar os galhos
    turtle.fd(size)
    if size > 8: # Quanto menor mais concentrado
        turtle.rt(angle/2)
        drawBranch(size*0.75, angle)
        turtle.lt(angle)
        drawBranch(size*0.75, angle)
        turtle.rt(angle/2)
    turtle.bk(size)

# Parte principal.
size = 150              # Tamanho Base da Arvore
angle = 60              # Angulo entre os galhos.
turtle.tracer(8,0)      # Velocidade do desenho.
turtle.mode('logo')     # Orientacao - Use LOGO language orientation: turtle faces upward.
turtle.pu()             # Colocar a turtle em posicao.
turtle.bk(size*2)
turtle.pd()             # Posicionar a pena de desenho.
drawBranch(size, angle) # Iniciar o desenho.
turtle.exitonclick()    # Esperar para sair
Coloquei os detalhes do código em seu comentário. E como resultado teremos a seguinte imagem:


Obrigado e até a próxima
Fernando Anselmo