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

Revista PROGRAMAR

  • artigos
    112
  • comentários
    30
  • visualizações
    121634

Autores deste blog

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

Sobre este blog

Artigos neste blog

staff

Esta é a 26ª edição em que vos escrevo, fez este mês cinco anos e sete meses que tenho a honra e o privilégio de editar a Revista PROGRAMAR, tantas vezes lutando conta o tempo, escrevendo até altas horas, escrevendo mais do que seria “habitual”, fazendo mais um “git push”, esticando os limites, contornando o tempo, a disponibilidade, pedindo aos autores mais um esforço, para que se faça mais uma edição!

O que seriam “demasiados ficheiros abertos”? Seriam 25 demais? Seriam antes 26? Bem, não querendo fazer profecias, mas desafiando todos aqueles que participam, já foram publicadas 55 edições, esta é a 56ª! Esperemos que falamos tantas quanto o máximo número possível de ser representado em binário com 16 bits sem sinal! Seja esse o objectivo e essa a vontade, de quem escreve e de quem lê!

Num momento de “maior sanidade”, menos ousado, mas ambicionado, num lapso de tempo que se espera não seja muito alargado, chegaremos à edição 64! Pode não parecer muito mas se fossem bits, muito se poderia representar! Façamos um “git push”, tenhamos a vontade, e daqui por um ano e alguns meses, estaremos a ler a 64ª edição!

Até lá, boas leituras e muita escrita
António Santos


staff

Os segredos do lado negro da BIOS

Introdução

A BIOS

Ao longo dos anos, muito tem sido escrito sobre possíveis vectores de vulnerabilidade utilizando a bios. No entanto, além do antigo vírus de Chernobyl, que acabou por apagar a BIOS, pouco tem sido dito.

Tal como amplamente descrito, a BIOS é um firmware de arranque designado a ser executado assim que um computador recebe corrente. A função inicial da BIOS é identificar e testar os dispositivos de sistema, como a placa gráfica, as unidades de armazenamento (disco rígido), antigamente as drives de disquetes (agora já são incomuns) e outro hardware, com o objectivo de preparar a máquina e colocá-la num estado conhecido, de forma a que os softwares armazenados nos meios de armazenamento possam ser carregados e executados, para lhes ser “entregue” o controlo do computador. Este processo é o chamado “booting”, que é a abreviatura de “bootstrapping”.

Nos computadores PC compatíveis, alguns periféricos, tais como unidades de disco rígido, placas gráficas, etc… têm a sua própria extensão da ROM da BIOS, com o objectivo de fornecer funcionalidades adicionais. Os sistemas operativos e outro software designado para o efeito, criam uma interface para as aplicações utilizarem estes dispositivos.

Ler mais…


staff

Otimizando os sistemas embebidos

Recentemente calhou em conversa com um amigo meu sobre programação de sistemas embebidos, visto que ele estava a avançar com um projeto muito interessante com um equipamento semelhante ao Arduino. Esta conversa relembrou-me os tempos em que programava em ANSI C (de 89) num LPC2106 da Phillips e aos tempos que andava a aprender ANSI C (de 89) e o belo do assembly, e surgiu a ideia para este artigo.

Quando alguém começa a programar num Arduino (ou equipamentos semelhantes) vai seguindo os exemplos que vai encontrando e vai adaptando às usa necessidades. No entanto, mais cedo ou mais tarde, vai querer implementar uma ideia que teve e, quem sabe, mais tarde transformar essa solução num produto que possa comercializar. A ideia deste artigo é oferecer um conjunto de técnicas e de pontos de interesse a ter em atenção por forma a maximizar os recursos que já têm, reduzindo o “desperdício” dos recursos.

Ler mais…


staff

Tipos em Python

Python sempre foi uma linguagem fortemente tipada, para surpresa de muitos que confundem a tipagem dinâmica com a ausência de tipos. Na realidade, os tipos em Python funcionam tão bem e de forma tão automática que muitas vezes esquecemos que eles existem.

Mas nem tudo é perfeito. Hoje existem programas gigantescos escritos em Python e os programadores precisam de ferramentas poderosas para entender e navegar neste código. Aí tínhamos um problema, pois ferramentas de edição mais avançadas com recursos de autocomplete (intellisense), refactoring e simplesmente de navegação no código fonte se tornaram extremamente complexas. Dadas as propriedades dinâmicas da linguagem, escrever este tipo de ferramentas para o programador Python se tornou uma tarefa complicada. Cada ferramenta era responsável por inferir o tipo de cada método ou função sendo chamada e esta não é uma tarefa simples, uma vez que temos poucas indicações de tipo no programa em si.

Ler mais…


staff

Gerir a Qualidade do Código

Vamos dar uma martelada? Quem nunca ouviu esta expressão enquanto trabalhava numa aplicação, quer seja no seu desenvolvimento, quer seja na sua manutenção. Este tipo de prática não abona em nada as nossas aplicações e com o tempo acaba por ser um procedimento, uma feature da aplicação que não nos conseguimos livrar.

Este simples exemplo, é apenas um num enorme lote de más práticas que são realizados ao longo dos tempos em muitos projetos. Como fica a nossa aplicação, a sua performance, o seu grau de manutenção, de legibilidade? Podemos dizer que a aplicação tem qualidade?

Quando falamos de qualidade, do que nos estamos a referir? O que é a Qualidade? O que é a Qualidade de uma aplicação? Como podemos medir? Como a podemos gerir?

Ler mais…


staff

Cifra Feistel

Nesta edição decidimos trazer até si, caro leitor, um artigo sobre uma cifra que data ao ano de 1973. Criada por Horst Feistel enquanto trabalhava na IBM, este algoritmo pertence à criptografia simétrica.

Para os leitores que não estão tão habituados a este tema, existem dois tipos de cifras. A simétrica e a assimétrica. Em termos práticos, a criptografia simétrica tende a ser mais rápida uma vez que exige menos capacidade computacional. Contudo é considerada menos segura uma vez que a mesma chave é usada para encriptar e desencriptar a informação é partilhada pelos diversos intervenientes (na criptografia assimétrica são usadas duas chaves distintas – a chave privada para desencriptar e a chave pública para encriptar a informação – apenas a chave pública é partilhada entre emissor e receptor sendo que a chave privada é usada para decifrar a informação).

Ler mais…


staff

NodeMCU e Telegram Bots

Introdução

Existem imensas formas interessantes de colocar um equipamento a comunicar, de forma mais ou menos simples. Na edição 51, foi abordada esta temática mais focada na utilização de sockets, para comunicar com o dispositivo. Continuando um pouco a temática, desta feita, é sobre a utilização do popular software de chat Telegram, utilizando chatbots, para comunicar com o circuito.

O Telegram, é um popular serviço de mensagens instantâneas, baseado na nuvem, disponível para a esmagadora maioria dos sistemas operativos, bem como em formato de aplicação web. Entre as muitas características que o podem destacar, convém realçar o facto de ser de código aberto, possuir criptografia ponto-a-ponto, e um serviço de APIs independentes. Além de tudo isso, existem bibliotecas para o uso do telegrama na internet das coisas (IoT), como é o caso da Universal Telegram Bot Library.

Ler mais…


staff

Introdução

Neste artigo será apresentada uma introdução básica aos testes unitários exemplificando como os escrever na linguagem C#, usando as ferramentas que acompanham o Visual Studio Community. Escrever testes de caso é uma parte importante do teste de software. Testar software é sempre um “quebra-cabeças” para programadores e testadores pois existem imensos tipos de casos de teste possíveis. Os testes unitários são um método pelo qual pedaços de um programa, módulos ou até conjuntos de módulos, são testados por forma a determinar se estão em condições de serem utilizados.

Para escrevermos bons testes unitários, devemos entender como é que um caso de teste funciona, e porque precisamos de o testar!

Ler mais…


staff

Muito se tem falado desde a passada sexta-feira sobre cyber-segurança, mas antes disso pouco se dizia. Isso faz lembrar o ditado português, “depois da casa roubada, trancas na porta”. Ora bem, na passada sexta-feira, um ransomware, infectou imensos sistemas, colocando os dados reféns de um resgate a ser pago aos criadores do malware. Até aqui, nada de inédito, este tipo de ataques tem sido cada vez mais co- mum! O estranho é o “pânico” gerado em volta da situação e mais estranha será a falta de uma política “pró-activa” de prevenção!

Um ransomware, encripta os dados contidos nos discos rígidos e solicita um pagamento de um resgate! Bem, se existirem cópias de segurança, para quê pagar resgate? Restaura-se a cópia de segurança e recomenda-se aos “autores” do “dito cujo” que vão “plantar nabos num qualquer deserto”, porque os dados continuam disponíveis e o ataque foi apenas mais um fracasso! Situação em que se poderia dizer que “venha de lá o assalto” que as trancas estão na porta! Mas infelizmente numa grande quantidade de situações tal não aconteceu!

Ler mais…


staff

Nesta edição vamos fazer a review do Livro Android com C# – Introdução ao Desenvolvimento escrito por Henrique Loureiro.

O livro introduz o programador que tem conhecimentos em .NET, nomeadamente em C#, ao paradigma de desenvolvimento em mobile, utilizando o Visual Studio com plataforma de desenvolvimento e utilizando o Xamarin para o desenvolvimento mobile.

O livro está organizado em duas partes, a primeira mais teórica com alguns exercícios para consolidar os conhecimentos no final de cada um dos capítulos e uma segunda parte com alguns projetos completos mais abrangentes.

Ler mais…


staff

Desde há anos que se têm vindo a desenvolver equipamentos e soluções com ligação à internet e intranets, para as mais diversas funcionalidades. Muito do que anteriormente era conhecido como automação agora é chamado de internet das coisas.

Neste livro o autor apresenta a temática da internet das coisas (IoT), mantendo um foco bastante prático ao longo dos capítulos. Começa com uma introdução, que incluiu uma breve história da internet das coisas, e procede apresentando algumas das tecnologias disponíveis, abordando alguns pontos de maior interesse, como o caso de machine learning.

Ler mais…


staff

Apesar do conceito de qualidade poder ser “mensurado” este é, em essência, abstrato. A mensuração da qualidade depende do nível de satisfação que se deseja atingir junto ao cliente. Um produto de qualidade, aos olhos do cliente é aquele que atende suas expectativas e necessidades e não necessariamente se este produto é ou não durável aos olhos de outrem.

O desenvolvimento de melhores interfaces desde o início da era da computação eletrônica com o advento do computador ENIAC de 1945/46 construído para o exército Norte-Americano com o objetivo de ser usado no seu laboratório de pesquisa balística (MORENO, 2011) tornou-se matéria de estudo, mais aprofundada, aos longos dos anos sub- sequentes na medida em que a computação passou a ser mais popular e acessível a seres humanos comuns da sociedade. Ao longo dos anos posteriores a partir de meados da década de 1940 nota-se que há uma maior preocupação com as questões de usabilidade dos computadores.

Ler mais…


staff

A Gateway SeeMe pretende apresentar uma solução de baixo custo para a obtenção de videochamada, videoconferência de qualidade. No decorrer do artigo mostra-se que uma solução IP é independente das características de rede, tanto corre sobre uma rede de pacotes, como sobre uma rede de circuitos. Explicam-se as diferenças entre a comunicação de voz e a de videoconferência.

Ler mais…


staff

Tinker Board

Tinker BoardHoje trago até vós caros leitores, um artigo sobre a Tinker Board. Os leitores mais acérrimos certamente sabem que sou uma fã incondicional da família Raspberry Pi. Ora a Tinker Board, é uma concorrente séria ao Raspberry Pi 3. Capaz de desviar o olhar dos fãs mais convictos, como é o meu caso. De uma forma rápida e sem rodeios, esta nova aposta da ASUS desvia-nos o olhar porque apesar de ser ligeiramente mais cara que o Pi 3, as vantagens são maiores do que a diferença de preço entre os dois modelos.

Lançada em Fevereiro de 2017 (de uma forma um pouco “atabalhoada” uma vez que houve distribuidores que a começaram a vender antes da data oficial de lançamento, o que obrigou a um rápido lançamento por parte do departamento de Marketing da ASUS), está disponível na Europa por valores entre os 65€ e 70€. Este micro computador tem um processador quad-core Rockchip RK3288 e gráficos ARM Mali-T764.

Ler mais…


staff

Programar Saturday 2017

No passado dia 1 de Abril teve lugar o Programar Saturday 2017 na Microsoft Lisbon Experience. Foram várias as sessões técnicas assim como workshops que estiveram ao dispor de todos os participantes. Cerca de cinquenta pessoas estiveram presentes, tornando este evento um sucesso. Nesta edição não podíamos deixar de deixar um agradecimento “oficial” a todos os que contribuíram desde a organização, voluntários, oradores e participantes.

Ler mais…


staff

Introdução

Pouco tempo depois do lançamento do Windows 10 Anniversary Update, mais propriamente a 11 de agosto de 2016, a Microsoft lançou a Build 14901, a primeira Development Branch da “Redstone 2” e cujo nome de código que viria mais tarde a ser oficializado como Creators Update. Após 8 meses de desenvolvimento e do lançamento de 47 Builds (28 para PC e 19 para Mobile), a Microsoft deu como terminado o trabalho em torno desta atualização e anuncia o dia 11 de abril como a data da disponibilização geral para todos os utilizadores na versão PC e 25 de abril para a versão Mobile.O Creators Update foi criado para potenciar a criatividade, transformar as ideias em realidade e permitir que qualquer utilizador possa deixar a sua marca no mundo. Também aqui foi fundamental a participação dos cerca de 10 milhões de Windows Insiders que, através do seu feedback, ajudaram a construir mais uma grande atualização.

Vejamos então de forma resumida algumas das novidades mais importantes disponíveis para o consumo e também para empresas.

Ler mais...

 

staff

A Revista PROGRAMAR está de volta com mais uma edição. Desta vez temos como tema de capa o artigo Os segredos do lado negro da BIOS, da autoria de António C. Santos. Adicionalmente, nesta edição poderá encontrar mais 13 artigos, que listamos de seguida:

  • Otimizando os sistemas embebidos (Nuno Cancelo)
  • Tipos em Python  (Nilo Menezes)
  • Gerir a Qualidade do Código  (Nuno Cancelo)
  • Cifra Feistel (Rita Peres)
  • NODEMCU E TELEGRAM BOTS  (António C. Santos)
  • C# – C# – Introdução aos testes Unitários em C# com MS Unit Test (António C. Santos)
  • Kernel Panic – Kernel Panic ( Depois da casa roubada, trancas na porta!)(António C. Santos)
  • Análise ao livro Android com C# – Introdução ao desenvolvimento (Nuno Cancelo)
  • Internet das Coisas – Introdução Prática (Sara Freixo)
  • Interface Humano-Computador, Nanotecnologia e a dependência tecnológica  Parte II(Augusto Manzano)
  • VIDEOCHAMADA/VIDEOCONFERÊNCIA O PROJECTO SEEME  (João Pereira Rosa)
  • Tinker Board (Rita Peres)
  • PROGRAMAR Saturday 2017 (Rita Peres)

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


staff

Poderia começar o editorial por escrever o resto do comentário em código, mas seria quase um “abuso” ao qual não me vou dar!

Como um dia disse, um incontornável personagem da história da tecnologia, não se conectam os pontos olhando para a frente, mas sim para traz. A tecnologia é isso mesmo, um movimento “perpétuo”, em frente, sem parar, sem esperar, sem pausas, a uma velocidade cada vez mais estonteante. Cheio de surpresas e segredos, cheio de revezes e avanços, cheio de tudo um pouco! Mas acima de tudo, cheio! Cheio porque tem um pouco de todos os que nele trabalham, participam, se envolvem! Sem distinção de géneros, classes ou outras que possam existir!

Ler mais…


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…

 

 

 

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…

 

 

 

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…

 

 

 

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.