Já usa Value Objects?

Como garante que dois componentes falam a mesmo linguagem? Como garante que tem apenas valores válidos a viajar no software em causa? Usaria strings para representar datas internamente? Então, porque representa os conceitos do domínio como strings ou inteiros? Não faz sentido.

You should be using Value Objects

Gestão emocional quando se programa em pares

Programar em pares (pair programming ou paring) pode ser um desafio, mas compensa a médio/longo prazo, pela partilha de conhecimento e pelo progresso estável e previsível. Fazer pairing corretamente leva o seu tempo, pelo que exige paciência e uma boa gestão emocional. Vejamos algumas dicas para tirar o melhor partido desta técnica.

Ver artigo no Medium (em inglês).

O que é um programador sénior?

Ser um programador sénior não é apenas uma questão de se esperar 10 anos por uma metamorfose de júnior para sénior. Há certas atitudes e uma forma de estar a ter em conta. Neste artigo concentrei-me na minha experiência e no que mais valorizo: humildade e introspeção.

Publiquei este artigo em inglês no Medium. Espero que gostem.

Pagar com cartão de crédito usando o Stripe – Java

O Stripe é um serviço na cloud que permite que receber pagamentos pela Internet. Reduz a complexidade de receber pagamentos, pois não é preciso lidar com os dados do cartão de crédito diretamente – apenas com um token que simboliza uma autorização para cobrar.

Para isso, vamos criar um projeto Spring Boot com o Stripe Java e cobrar um valor ao cartão de crédito do utilizador (simulação).

Ler artigo na íntegra no site oficial Baeldung, onde o publiquei originalmente (em inglês).

Web scraping de HTML/XML com o jsoup [Java]

O jsoup é uma biblioteca Java usada para scraping (extração de dados) de HTML/XML para Java. Permite também manipular e gerar HTML. Tem uma linha de desenvolvimento estável, boa documentação e uma API fluente e flexível. Repare como é simples imprimir os parágrafos de uma página:

Document doc = Jsoup.connect("http://example.com").get();
doc.select("p").forEach(System.out::println);

Leia o artigo na íntegra no site oficial Baeldung, onde o publiquei originalmente (em inglês).

Colocar uma app Spring Boot no Heroku

O Spring Boot é um sub-projeto do Spring Framework (a framework Java mais conhecida) dedicado aos microserviços. A ideia é criar webapps/websites/serviços Spring rapidamente e com o mínimo de configuração. Para isso, o Spring Boot aposta fortemente na programação por convenção (convention over configuration).

O Heroku é um PaaS (plataforma como serviço) para fazer deploy de aplicações. Suporta diversos runtimes de programação (Java, Node.js, Ruby, PHP, etc.) e tem uma versão gratuita. É uma PaaS comparável ao Openshift, Google App Engine, Microsoft Azure, etc.

Vejamos como fazer deploy de uma app Spring Boot simples (demo) no Heroku ou de uma que já tenha.
tldr: basta um git push para que se auto-desencadeie um deploy em produção.

As instruções são as mesmas para Windows, Mac e Linux e são muito parecidas para outros runtimes que não o Java.

A cloud

  1. Registe-se no Heroku
  2. Crie uma app no dashboard de criação de apps (guarde-o nos favoritos). Para tal, clique em “New” > “Create new app”:

  • Dê um nome à app, escolha uma região e confime em “Create App”.
    Será reencaminhado para a página da app criada.
    Explore as diferentes tabs da mesma.

  • Saque e instale o Heroku CLI
    Este é o cliente do Heroku para a sua linha de comandos. Permite gerir as apps (criar, listar, apagar, ver logs, fazer deploy, etc.) da sua conta a partir da linha de comandos do seu S.O.
  • Para testar a instalação do Heroku CLI, numa nova linha de comandos corra:
    > heroku --version
  • Execute agora:
    > heroku login
    Faça login com a sua conta Heroku
  • (Nota: também é possível criar apps com o Heroku CLI, mas decidi mostrar como se faz com a GUI para que a conheça)

    O código

    1. Se já tiver um projeto, vá até à sua pasta numa linha de comandos e vá para o Passo 4:
      Caso contrário, crie um projeto Spring Boot em Spring Initializr (uma espécie de construtor de projetos Spring Boot)
    2. Descompacte-o para uma pasta
    3. Na linha de comandos, faça cd para o seu projeto
    4. Inicialize aí um repositório git:
      > git init
    5. Adicione um remote (use o nome da app que deu no serviço do Heroku):
      > heroku git:remote -a NOME_DA_SUA_APP
      (isto é equivalente a adicionar um repositório git)
    6. Para configurar o Git no seu IDE e/ou cliente Git, não pode usar a sua password do Heroku. Em vez disso, deverá usar a “API Key” como password. Vá atá aos “Account Settings“:

    O deploy

    1. Adicione toda a pasta atual e faça commit+push para o remote heroku com o seu cliente Git, IDE ou na consola:
      > git add .
      > git commit -am 'First commit'
      > git push heroku master

    2. Após alguns instantes, terá a sua app “deployed”.
      O URL da mesma será exibido no fim do processo.

      Opcionalmente, este repositório pode ser utilizado para o seu controlo de versões. Caso contrário terá de ter dois remotes.
    3. Parabéns! A sua app Spring Boot está na online na cloud Heroku. Se por acaso tiver ocorrido algum problema, pode sempre ver os logs:
      > heroku logs --tail

    O primeiro projeto em Ruby on Rails (Windows)

    O Ruby on Rails, mais conhecido por Rails (e às vezes RoR), corre no runtime – e usa a linguagem de programação – Ruby. O Rails é uma web application framework, estando para o Ruby como o Spring Framework está para o Java ou o Laravel para o PHP. Estas frameworks facilitam grandemente a criação de websites, web apps e serviços web, oferecendo para tal, uma série de recursos reutilizáveis.

    • Assume-me que já sabe o básico de Ruby e quer agora experimentar Ruby on Rails (caso não saiba nada de Ruby, pode fazer o curso na Codecademy);
    • O Rails geralmente não suporta a última versão do Ruby mas sim a penúltima. Por isso, talvez o melhor seja desinstalar o Ruby, para evitar ter duas versões.
    • Como editor de Ruby, Rails (entre outros), pode considerar o Sublime Text ou o Atom.

    1. Ir a RailsInstaller.com;
    2. Rodar para baixo (até aos Downloads) e sacar o Windows Ruby 2.X;
    3. Instalar o Rails (caso não tenha o Git, aproveite para instalá-lo durante o processo);
    4. Ir até à pasta de instalação, rubyx.y.z, bin para corrigir um bug de instalação grave:
      Edite o ficheiro rails.bat e substitua todo o conteúdo por:

      @ECHO OFF
      IF NOT "%~f0" == "~f0" GOTO :WinNT
      ECHO.This version of Ruby has not been built with support for Windows 95/98/Me.
      GOTO :EOF
      :WinNT
      @"%~dp0ruby.exe" "%~dpn0" %*

      Edite o bundle.bat e substitua tudo por:

      @ECHO OFF
      IF NOT "%~f0" == "~f0" GOTO :WinNT
      @"%~dp0ruby.exe" "bundle" %1 %2 %3 %4 %5 %6 %7 %8 %9
      GOTO :EOF
      :WinNT
      @"%~dp0ruby.exe" "%~dpn0" %*
      
    5. Abra uma linha de comandos e faça:
      > gem update --system

    Parabéns. Está pronto para criar projetos Rails! Vamos criar um projeto de exemplo, apenas para testar a instalação efetuada:

    1. Abra uma linha de comandos e vá até ao lugar onde guarda os seus projetos de software;
    2. Para criar um projeto Rails, faça:
      > rails new ProjetoOla
      Isto irá criar uma série de ficheiros e pastas dentro de ProjetoOla. Este é o ponto de partida para qualquer projeto Rails.
    3. Entre na pasta criada;
      > cd ProjetoOla
    4. Corra agora:
      > bundle install
      Com isto terá todas as dependências sacadas (no mundo Rails chamadas as gems).
    5. Está na altura de correr a aplicação. Corra com:
      > rails server
    6. Finalmente, abra o browser em localhost:3000
      Parabéns. Tem o projeto a correr.

      Ainda não verá nada de especial porque não tem rotas e controladores definidos no projeto. Para tal, seria preciso aprender mais sobre MVC em Rails. Uma das formas é fazer o curso “Learn Ruby on Rails” da Codecademy.

    Como escolher uma biblioteca/framework?

    No desenvolvimento de projetos de software, saber quando recorrer a uma biblioteca/framework e como optar por uma entre muitas, não é tão óbvio quanto parece. Neste artigo decidi sintetizar o processo. Tentarei abstrair-me da linguagem/runtime (PHP, Java, .NET, etc.) em causa, visto que os conceitos são transversais.

    Artigo escrito originalmente no Pplware

    Read in english at MediumComo escolher uma biblioteca ou framework

    Create your website at WordPress.com
    Get started