• Revista PROGRAMAR: Já está disponível a edição #55 da revista programar. Faz já o download aqui!

Revista PROGRAMAR

  • artigos
    94
  • comentários
    30
  • visualizações
    120947

Autores deste blog

  • staff 51
  • jpaulino 17
  • anolsi 16
  • apocsantos 6
  • Rui Carlos 4
  • Hipnoted 2
  • HecKel 1
  • pedrotuga 1
  • _JR_ 1

Sobre este blog

Artigos neste blog

staff

Docker: Overview

Sou muito apologista da metodologia “set it and forget it”, configurar as coisas uma vez e reutilizar vezes sem conta a mesma configuração, infraestrutura. Abstrairmos de tal forma, que o foi configurado sirva para o uso geral da nossa aplicação ou projeto. Isto é muito giro, mas pouco realista se tivermos em mente a montanha de projetos e aplicações que estão montadas por Portugal (e não só) a fora.

Tipicamente, a forma como eu fazia, seria criar uma máquina virtual (principalmente em virtualbox) montava a infraestrutura da forma que queria e depois trabalhava sobre ela e partilhava a imagem com quem quisesse. Apesar de funcionar a solução não era em nada elegante, tinha uma imagem com cerca de 20GB, com um sistema operativo (que poderia estar ou não a usar as suas potencialidades), mais o conjunto de ferramentas e ainda tinha que me preocupar com as configurações de rede (para estar exposto para fora da máquina virtual) e ter mounting points para poder partilhar ficheiros entre o host e a máquina virtual. Quem já fez isto pelo menos uma vez sabe a chatice que dá.

Ler mais…

The post Docker: Overview appeared first on Revista PROGRAMAR.


staff

Nesta segunda parte, vamos então adicionar ao nos- so projecto um sistema que nos permita criar logs personalizados sobre o acesso à nossa API.

Sempre que desenvolvemos uma aplicação, devemos logo de inicio tratar de providenciar um bom sistema de logs já que ele é uma parte fundamental, seja durante o desenvolvimento, seja durante a operação da aplicação. É através das mensagens de log (em ficheiro ou no ecrã) que podemos determinar o que realmente está a acontecer na nossa aplicação e mais rapidamente determinar a origem de qualquer problema.

Ler mais…

The post API REST com Spring Boot (parte 2) appeared first on Revista PROGRAMAR.


staff

JavaFX: Passos Seguintes

No artigo anterior dei uma breve introdução sobre como programar com JavaFX, conceitos simples que permite começar a desenvolver aplicações gráficas. Neste artigo vou explorar outros temas interessantes do ponto de vista de desenvolvimento e de manutenção de projetos de software com interfaces gráficas de desktop.

Ao longo da minha carreira já desenvolvi e participei em projetos de software de raiz, mas grande parte dela foi a manter e a melhorar aplicações legacy, e deixem-me que diga que existem programadores muito imaginativos. Um dos temas que mais urticária me causa é o facto de o software desenvolvido não poder ser mantido com facilidade, e ao ripple effects das alterações simples que são realizadas.

Ler mais…

The post JavaFX: Passos Seguintes appeared first on Revista PROGRAMAR.


staff

Num mundo com tantas aplicações de chat instantâneo, o Telegram destaca-se pela rica API que disponibiliza para criação de bots. Os bots são pequenos programas que podem interagir com os utilizadores e prestar serviços, como executar comandos, gerir arquivos ou imagens e até mesmo propor jogos!

Há já algum tempo que a comunidade Python explora bibliotecas como a Telebot e mais recentemente, a Telepot. Embora a diferença no nome das duas seja apenas uma letra, o desenho da Telepot parece-me mais robusto e o melhor de tudo: integra chamadas assíncronas!

O objetivo deste tutorial é mostrar como criar um bot assíncrono, usando a Telepot em Python 3.6. Ele é divido em quatro partes: por que assíncrono? obtenção da chave para rodar o bot, criação do bot, o jogo da velha em si (com minimax).

Ler mais…

The post Um bot para Telegram com o jogo da velha (Jogo do Galo) appeared first on Revista PROGRAMAR.


staff

Num mundo com tantas aplicações de chat instantâneo, o Telegram destaca-se pela rica API que disponibiliza para criação de bots. Os bots são pequenos programas que podem interagir com os utilizadores e prestar serviços, como executar comandos, gerir arquivos ou imagens e até mesmo propor jogos!

Há já algum tempo que a comunidade Python explora bibliotecas como a Telebot e mais recentemente, a Telepot. Embora a diferença no nome das duas seja apenas uma letra, o desenho da Telepot parece-me mais robusto e o melhor de tudo: integra chamadas assíncronas!

O objetivo deste tutorial é mostrar como criar um bot assíncrono, usando a Telepot em Python 3.6. Ele é divido em quatro partes: por que assíncrono? obtenção da chave para rodar o bot, criação do bot, o jogo da velha em si (com minimax).

Ler mais…

The post Um bot para Telegram com o jogo da velha (Jogo do Galo) appeared first on Revista PROGRAMAR.


staff

Hoje em dia a automação ajuda muito e é extremamente importante para alguns processos de gestão e administrativos. Um dos principais problemas da automação é não ser aceite por todos. A tecnologia não deve ser usada para substituir ninguém mas sim para ajudar.

Vou mostrar como podem fazer automação com o Windows PowerShell. O Windows PowerShell é uma linguagem scripting da Microsoft que estava reservada aos seus produtos mas isso mudou o PowerShell agora é OpenSource e o código está disponível no GitHub em https://github.com/PowerShell/PowerShell sendo assim possível utilizar em outros sistemas operativos da Apple e Linux. Se pretendem experimentar primeiro tem de instalar o Dot NET Core (https://www.microsoft.com/net/core) e depois o Windows PowerShell (https://github.com/PowerShell/PowerShell/releases/).

Ler mais…

The post Automação do Azure com Windows PowerShell Desired State Configuration appeared first on Revista PROGRAMAR.


staff

Introdução

O problema do emparelhamento estável (stable marriage problem), é de forma resumida o problema de encontrar um emparelhamento estável entre dois elementos de dois conjuntos de elementos, dada a ordem de preferências de cada elemento do conjunto.

Este problema é normalmente apresentado da seguinte forma: Dados n Reis e n Damas de um conjunto de cartas, cada Rei e cada Dama estabelece uma ordem de preferência para cada um dos elementos “opostos” (reis ou damas), com quem gostaria de estabelecer um “relacionamento”, ou por outras palavras, tomar um café e trocar uns bytes de código! Os pares são estabelecidos de forma a que os pares de elementos opostos prefiram estar “juntos” no par estabelecido, do que estar com qualquer outro elemento. Quando não existirem pares que cumpram estes requisitos o conjunto de pares é considerado estável.

Ler mais…

The post O problema do casamento estável utilizando o algoritmo Gale-Shapley appeared first on Revista PROGRAMAR.


staff

Introdução

Numa esmagadora maioria dos circuitos usados em IoT e em automação de uma forma geral, como o caso do Arduino/Genuino, existem algumas limitações em termos de pinos analógicos, que nos podem complicar a tarefa de ligar sensores. Por exemplo, no Arduino/Genuino Uno, apenas são disponibilizados 6 pinos analógicos que vão de A0 a A5, respetivamente.

Ler mais…

 

 

staff

Padrão de arquitetura SOLID

Introdução

Existem diversas orientações para programação orientada por objectos, no entanto, neste artigo apenas iremos focar SOLID com exemplos em C#.

SOLID é um acrónimo dos cinco primeiros princípios da programação orientada a objetos e design de código identificados por Robert C. Martin Este mesmo acrónimo foi introduzido por Michael Feathers, após observar que os cinco princípios poderiam se encaixar nesta palavra.

O que significa S.O.L.I.D. ?

  • S – Princípio de Responsabilidade Única
  • O – Princípio Open Close
  • L – Princípio de Substituição Liskov
  • I – Princípio de Segregação de Interface
  • D – Princípio de Inversão de Dependência

Ler mais…

The post Padrão de arquitetura SOLID appeared first on Revista PROGRAMAR.


staff

A Arte

Programar pode ser uma arte, apesar de ser uma acção e não necessariamente uma “expressão” no sentido mais conservador. Nesse caso um programa seria “uma forma de arte” e consequentemente os developers seriam artistas.

Ainda assim, isto nem sempre é observado desta forma! Numa atitude quase que “patológica” ou “desenquadrada” pro- gramar é muitas vezes visto como um ofício, uma tarefa, um trabalho e não propriamente uma forma de arte! Por exemplo e sem divagar muito, ensinam-se artes plásticas, expressão dramática, música, etc… nas escolas, no entanto ainda não existe de forma “massificada” a programação como matéria de ensino e estudo! Ainda que pareça precoce ver os mais novos a aprender a programar, certo será admitir que hoje em dia qua- se todos sabem usar um tablet, ou mesmo um computador!

Ler mais…


staff

A Arte

Programar pode ser uma arte, apesar de ser uma acção e não necessariamente uma “expressão” no sentido mais conservador. Nesse caso um programa seria “uma forma de arte” e consequentemente os developers seriam artistas.

Ainda assim, isto nem sempre é observado desta forma! Numa atitude quase que “patológica” ou “desenquadrada” pro- gramar é muitas vezes visto como um ofício, uma tarefa, um trabalho e não propriamente uma forma de arte! Por exemplo e sem divagar muito, ensinam-se artes plásticas, expressão dramática, música, etc… nas escolas, no entanto ainda não existe de forma “massificada” a programação como matéria de ensino e estudo! Ainda que pareça precoce ver os mais novos a aprender a programar, certo será admitir que hoje em dia qua- se todos sabem usar um tablet, ou mesmo um computador!

Ler mais…


staff

Introdução

Com o passar dos anos, cada vez mais os programadores consideram o C# como sendo a linguagem da plataforma .Net. A sua evolução tem sido constante e tem contribuído para a simplificação e redução do trabalho com a escrita de código em .Net. As novidades desta nova versão não são tão impressionantes como a do aparecimento do Linq, por exemplo, mas não deixam de ser úteis para aumentar a eficiência do programador.

Este livro que revemos nesta edição é constituído por cinco capítulos e explica as principais novidades introduzidas no C# 6.

Ler mais…


staff

Para a review desta edição, foi-me oferecido pelo autor, o livro Introdução à Programação com Python: Algoritmos e lógica de programação para iniciantes, 2ª edição.

Dividido em 12 capítulos, o livro apresenta uma estrutura bem organizada e de leitura suave, até para os maus adversos leitores de livros técnicos. Começa por apresentar a motivação para a aprendizagem, capaz de cativar tanto iniciantes como estudantes que recorram ao livro para consolidar conhecimentos.

Ler mais…


staff

Segredos de Numeração

Neste mundo moderno, tudo é um número (ou vários). Neste artigo veremos alguns exemplos de numerações utilizadas em aplicações de negócio, o seu significado, como construí-los e como validá-los. Uma explicação mais detalhada da matemática dos dígitos de controlo deixa-se para o leitor.

Um dígito de controlo (check digit), que pode ser numérico ou alfanumérico, é um valor que pode integrar ou ser separado do número original e que valida possíveis erros de introdução. O erro mais habitual é a troca acidental da ordem de dois dígitos. E.g. “xxxx12xx” ou “xxxx21xx”.

Ler mais…


staff

SHIFT APPens 2017

A meio do passado mês de Fevereiro, nos dias 17, 18 e 19, deu lugar no pavilhão Mário Mesquita mais uma edição do SHIFT APPens, mais propriamente a 4ª edição do Evento. Como atividade principal era pedido aos participantes que durante os três dias do evento pudessem desenvolver uma aplicação à sua escolha, formando também equipas dinâmicas onde várias personalidades de programação e design se poderiam misturar. No fim dos três dias, e sendo prometido muito código e café por parte da organização do Shift, os participantes poderiam apresentar os seus projetos ao júri do evento (Carlos Mota – Representante do Google Developers Coimbra; Alcides Marques – Representante do Laboratório de Informática do Instituto Pedro Nunes; Joana Brites – Representante da Faculdade de Letras da Universidade de Coimbra; Tiago Henriques – Representante da Wit Software), e serem então premiados pelo seu trabalho (existindo claro, o 1º, 2º e 3º prémios). Em conversa com o relações públicas do evento, Filipe Mendes, podemos perceber que este ano o Hackathon teve bastantes mais participações que nos anos anteriores.

Ler mais…


staff

Raspberry Pi Zero W

Com o intuito de comemorar o quinto aniversário da família Raspberry Pi, o fim de Fevereiro de 2017 trouxe mais uma novidade a esta conhecida família. Como não podia deixar de ser, aqui na Programar continuamos a ser fãs desta temática, motivo pelo qual não hesitamos em dedicar-lhe algumas linhas nesta edição.

Ler mais…


staff

Introdução

O presente release tem por finalidade abordar como a criação de interfaces avançadas propiciam novos avanços em diferentes áreas do conhecimento. Neste contexto, o foco discutido permeia questões sobre a criação e o desenvolvimento da nanotecnologia que pode estar direta ou indiretamente alterando a interação do homem com o computador.

Um ponto evidente é que o imaginário proposto nas produções cinematográficas, principalmente no que tange a ficção científica apresenta grandes possibilidades de aplicação no uso de Interfaces Humano-Computador (doravante IHC), tanto no aspecto positivo e benevolente como pode ser percebido na produção “Viagem Fantástica” (Fantastic Voyage) de 1966, como no aspecto sombrio e devastador na produção “Exterminador do Futuro” (The Terminator) de 1984. Cabe como ilustração um breve comentário sobre o filme “Minority Report” de 2002 que apresenta um estilo de interface, introduzida tempo depois no console de videogame XBOX da empresa Microsoft com o periférico Kinect o qual proporciona uma mecânica de jogabilidade semelhante à mostrada no filme.

Ler mais…


staff

A Revista PROGRAMAR está de volta com mais uma edição. Desta vez temos como tema de capa o artigo Docker: Overview, da autoria de Nuno Cancelo. Adicionalmente, nesta edição poderá encontrar mais 15 artigos, que listamos de seguida:

  • API Rest com Spring Boot (parte 2) (José Martins)
  • JavaFX: Passos Seguintes (Nuno Cancelo)
  • Um bot para Telegram com o Jogo da velha (Jogo do Galo) (Nilo Menezes)
  • Automação do Azure com Windows PowerShell Desired State Configuration (Ricardo Cabral)
  • O Problema do casamento Estável utilizando o Algoritmo Gale-Shapley (António Santos)
  • O Problema da falta de GPIO Pins (António C. Santos)
  • C# – Padrão de Arquitetura SOLID (António C. Santos)
  • SQL Curtas – SQL Curtas #2: Dúvidas Comuns (André Melancia)
  • Kernel Panic – A arte, engenho, e muita diversão (António Santos)
  • Análise ao livro C# 6 – PROGRAMAÇÃO COM PRODUTIVIDADE (Mónica Rodrigues)
  • Introdução à Programação com Python, Algoritmos e lógica de programação para iniciantes (António Santos)
  • Segredos de Numeração (André Melancia)
  • ShiftAppens 2017 (Filipa Peres)
  • Raspberry Pi Zero W (Rita Peres)
  • Interface Humano-Computador, Nanotecnologia e a dependência tecnológica (Augusto Manzano)

Clique aqui para fazer o download desta Edição!


staff

O título até parece brincadeira, mas é sério! E compila em C99! E foi assim, há muito, muito tempo, que a primeira edição da revista, foi publicada, fazia o ano de 2006, não numa “galáxia muito, muito distante”, mas num URL perto de todos nós! E assim o tempo passa! Tal qual história de ficção engraçada ou de mitologia clássica, a revista volta até aos seus leitores, como uma “fénix renascida” do famoso Albus Dumbledore, retirada de um livro conhecido de todos, ou de quase!

Não vale a pena fazer “resumos do ano passado”, porque o passado é “história que contamos”, não é mais do que isso, nem menos do que isso aqui não se tentam contar histórias, pelo contrário, tentamos “fazer história”.

Fazer história é dar uso àquela que é uma das mais elementares capacidades do ser humano e que nos distingue dos restantes mamíferos, a capacidade de criar! Para alguns pode parecer estranho, mas programar é criar “novos mundos” escrevendo código, é como pintar um quadro, como esculpir uma peça, como escrever um livro, onde a sintaxe e a semântica devem fazer um sentido inequívoco.

Ouso dizer, sem querer ser demasiado ousado, que programar, sendo um verbo transitivo, pode significar mais do que apenas a divisão de um problema entregue a um equipamento eletrónico, em instruções que este aceite. Significará imaginar algo, construir esse algo “abstrato” mentalmente, e por fim descrever esse algo em instruções capazes de serem executadas por um equipamento. Assim, de certa forma poder-se-ia dizer que programar é tão importante como escrever, ler, sonhar, pensar, definir, controlar, fazer uma complexa miríade de tarefas, dentro e fora do âmbito criativo. Isso faria de todos os programadores, entusiastas, aspirantes a programadores, verdadeiros artistas!

Parafraseando algo que li num chat, faz algum tempo, “o nosso dever para com a vida, é aprendermos o que pudermos, ensinarmos o que soubermos, melhorarmos tudo em que tocamos, ajudar tudo o que conseguirmos, criar o que nos for possível e deixar tudo melhor do que encontrarmos, para os que vierem depois de nós”, não porque seja “socialmente correto” dizer tudo isto, mas antes porque um programador, é uma “mente inquieta”, uma “mente inquisidora”, “criadora”, artista e cientista, de bits e bytes descritos! E nesses bits e bytes, aquilo que outrora lemos como ficção, poderá ser algo imprescindível no dia a dia, do amanhã! Algo que faça a diferença, para alguém, ainda que pouca seja, será sempre alguma! Será o “sabre de luz, de um personagem de cinema, ou o comunicador da ficção de 1966. Quem sabe até a “Nimbus 2000” de atleta dos livros, numa competição desencantada, numa escola onde se chega de comboio a vapor, ou um simples rodapé, de um qualquer livro escrito.

Até à próxima edição, boas leituras!
António Santos


staff

No mundo Java, o framework open source Spring, não sendo o único, é quase um standard para quem pretende adotar um padrão de injeção de dependências / MVC, que nos facilita bastante a vida pois permite que nos concentremos essencialmente nas business rules evitando ter de desenvolver as partes mais trabalhosas as quais são geridas pelo framework. De uma forma simplificada, podemos então dizer que o Spring é um framework de injeção de dependências, capaz de gerir o ciclo de vida dos diversos componentes e que inclui módulos (ou projetos), bastante robustos e com provas dadas, que nos permitem interligar um enorme número de tecnologias bastante comuns em Java.

Ler mais…


staff

A pilha protocolar TCP/IP

A pilha protocolar TCP/IP é considerada o standard de facto na área das comunicações informáticas, sendo praticamente obrigatório o seu uso em aplicações distribuídas. A referida pilha tem mecanismos próprios que possibilitam o envio, encaminhamento e receção de dados entre duas ou mais entidades comunicantes. Um dos elementos chaves da pilha TCP/ IP é o endereço IP que identifica um sistema computacional. Atualmente, existem dois tipos de endereços IP: IPv4 e IPv6. O IPv4 assenta em endereços de 32 bits (4 octetos), sendo comum a sua representação através de 4 números inteiros separados por ponto. Por exemplo, 192.168.120.12 é um endereço IPv4. O crescimento exponencial da internet tornou necessária a criação de um espaço de endereçamento alternativo, com capacidade para um maior número de endereços IP: o IPv6. Neste protocolo, cada endereço IP é composto por 128 bits (16 octetos). Exemplos de endereço IPv6 são 2001:0db8:85a3:0000:0000:8a2e:0370:7334 e ::1, este último representando o endereço local.

Ler mais…


staff

PHP 7

Neste artigo, traremos informações a respeito do PHP 7, alguns dos novos recursos e exemplos de código que podem executar de maneiras diferentes em versões anteriores à 7. O PHP 7 foi liberado em dezembro de 2015, atualmente encontra-se na versão 7.0.11 (este artigo está sendo escrito em outubro de 2016).

A linguagem PHP surgiu na década de 1990 como uma linguagem de scripting interpretada no servidor, mas seu histórico não é o foco deste artigo e pode-se encontrar mais informações no link http://php.net/manual/history.php.

A especificação do PHP pode ser encontrada em https://github.com/php/php-langspec. Possui uma sintaxe parecida com C e Perl.

Ler mais…


staff

Let’s Brainfuck in Pascal!

Com os devidos créditos à originalidade do criador desta linguagem, e ainda mais pela originalidade e não menor acertividade pelo nome dado, Brainfuck é um clássico do mundo exotérico da programação. É inegável que, numa não muito usual conversa de café acerca de linguagens exotéricas, Brainfuck é comummente a primeira referida. Com o seu princípio extremamente simples e sintaxe altamente minimalista, esta linguagem consegue fazer jus ao seu nome num piscar de olhos.

Não obstante a sua alta aplicabilidade no mundo… exotérico, talvez?, Brainfuck representa um exercício bastante apetecível para a implementação de um parser. Estando disponível na Internet o código-fonte Assembly do interpretador de Brainfuck, a sua implementação noutras linguagens recorrendo a diferentes paradigmas representa um carácter didáctico inegável.

Neste artigo – ao qual referências ao calão não irão faltar por força da circunstância – será feita a implementação de um interpretador de Brainfuck em Pascal, recorrendo unicamente ao paradigma procedural. Iniciemos então esta curiosa jornada!

Ler mais…