sexta-feira, 22 de junho de 2018

Uma Introducao ao Vagrant no Windows - Parte 1

O Vagrant se tornou rapidamente a ferramenta onipresente para o desenvolvimento local nos sistemas operacionais Mac, Windows e Linux.

O Vagrant ajuda você a criar máquinas virtuais on-the-fly através de um conjunto de arquivos de configuração reutilizáveis. Os desenvolvedores podem compartilhar suas configurações e scripts via GitHub e em outros lugares, para que outros desenvolvedores possam criar um ambiente e ferramentas idênticos.

É uma ótima ferramenta se você quiser criar servidores para programas de teste, aprender a usar ferramentas do Linux ou trabalhar em um ambiente de teste antes de aplicar alterações em um sistema de produção. Você quer aprender a instalar a stack PHP/Apache/MySQL a partir do zero no Ubuntu? Ou jogar com a configuração de um servidor de cache como o Varnish na frente do Apache? Tente sua mão no Nginx? Aprenda PHP 7? O Vagrant torna as coisas um pouco mais simples do que usar o VirtualBox sozinho.




Vamos dar uma olhada em como configurar o Vagrant em um ambiente Windows.

Instalando os Megabits e as Peças

Para começar, vá em frente e instale estas ferramentas principais:
  •  VirtualBox (o software que cria máquinas virtuais)
  •  Vagrant (nosso herói, o software que implanta máquinas virtuais e executa scripts de provisionamento)
  •  PuTTY e PuTTYGen (cliente SSH e um gerador para chaves de segurança)

O VirtualBox e o Vagrant são instalados como qualquer outro programa do Windows. O Vagrant se instalará em seu caminho global para que você possa executá-lo de qualquer lugar.

Crie seus projetos 

Agora que você configurou tudo, você pode iniciar seu primeiro projeto do Vagrant criando uma pasta de projeto que abrigará as várias configurações para cada uma de suas VMs. Você usará a linha de comando para executar comandos do Vagrant nessas pastas.
Crie uma pasta de projeto, use:  E:\Vagrant\sitepoint. 

Dica: Como usuário do Windows, você pode abrir rapidamente um prompt de comando no Explorer mantendo pressionada a tecla Shift e clicando com o botão direito do mouse na pasta ou no espaço em branco da pasta e escolhendo “Abrir janela de comando aqui”.

Usando o Vagrant

Os comandos primários para começar são vagrant init e vagrant up.Abra uma linha de comando e mude os diretórios para a pasta do seu projeto de teste. Execute o vagrant init e um novo arquivo vagrant será criado no diretório atual chamado “Vagrantfile” (sem extensão), que contém uma configuração inicial básica. 

Abra Vagrantfile em um editor de texto como o Notepad ++ ou Sublime-text e dê uma olhada, estude os comentários antes de cada valor de configuração. Você pode definir pastas compartilhadas entre convidado e host, ativar o encaminhamento de porta, definir o nome do host e muito mais. Observe que todos, mas talvez uma linha seja comentada: o Vagrant tem uma configuração padrão que será usada mesmo sem nenhuma configuração alterada aqui.

 Este Vagrantfile ainda não aponta para nenhum tipo de máquina virtual, então, exclua o Vagrantfile que você acabou de criar e vamos encontrar uma "caixa de base" para usar.Navegue pela Vagrant Cloud para ver as caixas básicas que você gostaria de usar. Para este exemplo, usaremos o "ubuntu / trusty64", que é a caixa de base "oficial" do Ubuntu Server 14.04 LTS (Trusty Tahr). Para que o Vagrant use essa caixa de base automaticamente, digite:   


Desta vez, se você abrir o Vagrantfile, você perceberá que ele lista a caixa de base lá para “config.vm.box”. Outras configurações ainda são comentadas.


Agora que você tem um Vagrantfile com uma caixa base configurada, você pode girar a VM com este comando incrível:





Para explicar o que está acontecendo aqui, o Vagrant primeiro importa a caixa base, se você ainda não a tiver (eu já a tinha, caso contrário, ela seria baixada primeiro). Em seguida, ele verifica se sua caixa está atualizada.

Nota: Essas caixas base estão em sua pasta %userprofile % /.Vagrant.d/boxes. Você pode listar todas as caixas instaladas digitando a vagrant box list. Você pode excluir as caixas com o comando:  vagrant box remove box/name.


Você pode ver que ela configura a porta de encaminhamento de SSH como "2222": você precisará disso para usar um cliente SSH como o PuTTY.

Observe que o nome de usuário é "vagrant", o que sempre será. Você também notará que ele gera um novo conjunto de chaves, algo que a Vagrant não fez nas versões anteriores. A chave pública é automaticamente copiada para a VM e substitui a chave padrão nela. Ele também coloca a chave privada em uma nova pasta chamada “.vagrant” na pasta do seu projeto. Se você detalhar essa pasta, encontrará "private_key", que será útil para usar no PuTTY mais tarde.

No próximo aviso, ele verifica as adições dos convidados e monta a pasta compartilhada entre o host e o convidado. Isso pode ser alterado como quiser ou pastas compartilhadas adicionais podem ser adicionadas. A primeira pasta “/ vagrant” está na VM; ele irá compartilhar com a pasta do meu projeto local. Os arquivos serão mantidos em sincronia entre as pastas enquanto você trabalha.






 

segunda-feira, 11 de junho de 2018

Melhores práticas no desenvolvimento do Android - Part 1

Vamos dar uma olhada em algumas práticas padrão que devemos aplicar ao criar aplicativos Android.

As melhores práticas são simplesmente padrões profissionais que são aceitáveis em um campo. Aqui, veremos essas práticas relacionadas ao desenvolvimento do Android.

Introducao.

A plataforma Android administra o mercado de celulares no momento. Durante o Google IO em maio de 2017, o Google anunciou que havia 2 bilhões de dispositivos Android ativos por mês. Isso é cerca de 74% da participação de mercado do sistema operacional móvel de acordo com o StatCounter em fevereiro de 2018. Esta é uma das principais razões para o grande surgimento de desenvolvedores do Android nos últimos tempos. Como resultado do grande patrocínio da plataforma móvel, a maneira como construímos soluções móveis também é muito importante.  

Se você está construindo para bilhões de usuários, nós temos que crescer acima apenas construindo apenas para as funcionalidades temos que considerar outros fatores, como escalabilidade, melhor experiência do usuário, etc.Recentemente, tem havido muitas promessas no desenvolvimento do Android desde a introdução formal do Kotlin. Em maio de 2017, ainda durante o Google IO, o Google anunciou seu apoio ao idioma. Kotlin é uma linguagem de programação estaticamente tipada que é executada na máquina virtual Java. É estaticamente digitado porque o tipo de dados das variáveis ​​é conhecido em tempo de compilação. A linguagem vem com muitos novos recursos:

  • Segurança nula. 
  • Inferência inteligente.
  • Interoperabilidade com Java. 
  • Pode ser compilado para bytecode ou JavaScript da JVM

Kotlin nos ajuda a escrever código duas vezes mais rápido do que com Java. O Android lançou um conjunto de funções de extensão para tornar o código no Android ainda mais conciso. A linguagem está em desenvolvimento desde 2010 e a versão atual no momento de escrever este artigo é v1.2.30.

Neste artigo, veremos algumas práticas recomendadas no desenvolvimento do Android para nos ajudar a criar aplicativos melhores. Nós também faremos uso de Kotlin para os trechos. Vamos pular neles imediatamente!

Padrões de design

Os padrões de projeto são soluções gerais e reutilizáveis ​​para problemas comuns em um determinado contexto no design de software. É mais como um modelo para uma solução. Além de ser apenas uma possível solução para um problema, ajuda a comunicação entre os desenvolvedores, pois fica mais fácil trabalhar em equipes quando todos estão familiarizados com os padrões acordados a seguir. Padrões de design não saíam da bolsa, eles existiam desde então. De acordo com Javamann no StackOverflow: "Nós usamos padrões de design nos anos 80, nós simplesmente não sabíamos que eles eram padrões de design".
Image result for Android patterns design 
Alguns padrões praticados durante o desenvolvimento de aplicativos para Android incluem injeção de dependência, o padrão singleton, o padrão de separação de interesses entre outros. Vamos olhar brevemente para dois deles.Injeção de dependênciaA injeção de dependência (DI) é um conceito em que um objeto não precisa configurar suas próprias dependências (objetos). Em vez disso, as dependências são passadas por outro objeto. DI sugere que objetos sejam inicializados em outro lugar e dados ao objeto solicitante. Existem várias formas de injeções:


  • Injeção de construtor - onde as dependências são passadas através do construtor. 
  • Injeção de campo - onde as dependências são enviadas para os campos de classe diretamente, etc.

O último é muito difícil de implementar por si mesmo e, portanto, o uso de uma biblioteca DI Dagger2 é recomendado. Abaixo está um trecho rápido para mostrar uma instância de injeção de dependência:  


..
Aqui, esta classe MainActivitySample possui uma dependência MainActivityRepo e não é responsável por inicializá-la. Em vez disso, o objeto está sendo inicializado em outro lugar e servido à classe por meio do construtor. Este é um exemplo de injeção de construtor. O DI, a longo prazo, nos ajuda a criar aplicativos levemente acoplados e testáveis. Isso porque, se um objeto mudar, digamos, alterações de MainActivityRepo, é mais fácil reconfigurar o objeto de uma única fonte, em vez de ir para todas as classes que o usam para fazer isso.

Separação de Preocupações (SoC)

Este é um padrão que incentiva a dissociação do seu código em unidades distintas com responsabilidades bem definidas. Em uma plataforma como o Android, onde há componentes como atividades, fragmentos, serviços, provedores de conteúdo e receptores de transmissão sendo controlados pelo sistema operacional Android, negligenciar isso tem repercussões nos aplicativos que criamos. É aqui que entram os padrões de arquitetura. Os padrões arquiteturais podem ajudar a separar nossa apresentação de dados do processamento de dados. Existem vários padrões de arquitetura que existem, como Model View ViewModel (MVVM), Model View Presenter (MVP), etc.

Vamos dar uma breve olhada na arquitetura do MVP. Essa arquitetura é composta de três partes distintas:


  • The View: esta é a parte que exibe o conteúdo para o usuário, como uma barra de progresso, diálogos, etc.
  • The Model: é responsável por fornecer dados ao aplicativo, seja do DB ou de um serviço da web. Esta deve ser sua única fonte de verdade (dados).
  • The Presenter: essa parte lida com a lógica de negócios, como chamar o modelo para obter dados e, em seguida, atualiza a exibição.

Um típico fluxo de MVP funciona assim:

Seu aplicativo começa mostrando um diálogo de progresso. É responsabilidade do View fazer isso. Ao mostrar a caixa de diálogo, ela precisa exibir dados na interface do usuário, informa o presenter. O presenter chama o model e depois que os dados são obtidos, ele é retornado ao presenter que, por sua vez, retorna os dados para a View. Ao usar uma arquitetura, certifique-se de manter essa estrutura em todo o aplicativo. Quando você separa com sucesso seu código dessa forma, fica fácil manter, enviar novos recursos e testar. Os documentos do Android fornecem um tutorial detalhado sobre um guia para a arquitetura apropriada usando os componentes da arquitetura. Aqui está outro guia que oferece uma boa visão geral dos padrões de design no Android.

Experiência de usuário

A experiência do usuário nesse contexto refere-se à satisfação da interação de um usuário com seu aplicativo. Todos concordamos que, recentemente, houve um aumento na demanda por melhores experiências em dispositivos móveis. Aqui estão algumas coisas a serem observadas para melhorar a experiência de nossos aplicativos:

UI excelente

Uma sensação encantadora e experiência de um aplicativo começa com um bom design. Certifique-se de obter um que corresponda aos princípios de design de materiais do Google. Alguns desses princípios incluem:

  • Fornecendo um botão de navegação para cima.
  • Consistência em combinações de cores.
  • Uso de ícones apropriados para retratar a funcionalidade, etc. 



Continua na parte 02