António Pedro Cunha Santos

Com uma enorme paixão por tecnologia, autodidacta desde tenra idade, cresceu com o ZX Spectrum. Tem vasta experiência em implementação e integração de sistemas ERP, CRM, ERM, BI e desenvolvimento de software por medida nas mais diversas linguagens. Diplomado do Curso de Especialização Tecnológica em Tecnologias e Programação de Sistemas de Informação pela ESTG-IPVC. Membro da Comunidade Portugal-a-Programar desde Agosto de 2007, é também membro da Sahana Software Foundation, onde é Programador Voluntário. Neste momento é aluno no Instituto Politécnico de Viana do Castelo, na Escola Superior de Tecnologia e Gestão no curso de Licenciatura em Engenharia Informática.
LinkedIn GitHub Twitter Google+

The Geeks Will Inherit the Earth

Apesar de possivelmente controverso o título deste editorial, não é para controvérsias o meu objectivo, na sua escrita.

A verdade é que possivelmente muitos dos leitores, se identificam como “geeks”! Como pessoas curiosas, dedicadas, ávidas de conhecimento, dispostas a caminhar as outras milhas, mesmo na adversidade! Pessoas extraordinárias!

Com este Verão já em curso, quente,  até por vezes demasiado quente, sonolento e complexo, entre o calor, a praia, montes de festivais, livros e notícias que dão vontade de não as ver, muitas vezes me lembro da música, que serve de título a esta edição! “Os geeks herdarão a terra”!

No passado mês de Junho, tive a oportunidade de ver como um conjunto de geeks (developers, makers, arquitectos, engenheiros, gente das mais diversas áreas), começou a organizar-se numa rede social, para usar os seus conhecimentos e talentos, para fazer tentar fazer a diferença que ´”nós geeks” podemos fazer, para mudar o mundo fazendo-o um pouco melhor!

Esta edição, gostava de a dedicar a todos os que fazem diferença, não ficando a ver “o tempo passar”, mas se inquietam todos os dias, para fazer a diferença nas mais diversas áreas , nos mais diversos sectores, nas mais diversas situações! Aqueles que independentemente de tudo, decidem estar inquietos e fazer algo!

A todos esses, dedico-vos a revista e deixo-vos o muito obrigado por serem inquietos! Pois como tive oportunidade de ler, “Muda uma vida, muda o Mundo”, obrigado por mudarem o Mundo!

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

Raspberry Pi Alexa

Introdução

Existem diversos serviços de assistente pessoal inteligente, no entanto um dos populares em IoT é a Alexa da Amazon, que vem por default do dispositivo Amazon Echo Dot.

A Alexa, denominada com base na antiga biblioteca de Alexandria, é a assistente pessoal inteligente desenvolvida pela Amazon, que permite que se comunique por voz com um dispositivo, se lhe dêem comandos e o dispositivo execute ou controle equipamentos, reproduza música, efectue pesquisas, etc… Este artigo surge após o desafio colocado pelo Bruno Horta, no grupo Movimento Maker Portugal e que eu tive o prazer de aceitar e concluir dentro do prazo previsto!

Por detrás deste serviço existe um sistema de processamento de linguagem natural, desenvolvido pela Amazon, que permite que a voz humana seja compreendida, permitindo a execução das instruções dadas pelo utilizador.

Continuar a ler

Up-ciclar a Velhinha Aparelhagem Hi-Fi

Introdução

É comum ouvir falar em reciclar objectos, equipamentos, etc… referindo-se ao envio para desmontagem e reciclagem de materiais. Claro que a reciclagem e os três Rs, são algo de bom que podemos fazer pelo ambiente. No entanto este artigo foca-se no “up-cicle”, que basicamente consiste no processo de pegar num equipamento já obsoleto, mas ainda funcional e acrescentar-lhe funcionalidades, de forma a torná-lo novamente útil.

Ao longo deste artigo iremos construir o circuito para transmissão de áudio e web-rádio para um equipamento Hi-Fi padrão, de forma a mantermos o equipamento “actualizado”, na actualidade tecnológica! No caso concreto em que isto foi feito, teve por objectivo aproveitar uma antiga aparelhagem Hi-Fi, já com uns bons anos, mas que ainda tem um bom amplificador áudio e umas boas colunas e alguns efeitos de equalização merecedores de “alguma extensão de vida”. Este projecto foi num instructable, bastante interessante, sobre este mesmo tema e inspirado no “up-cycle” do Bem Heck show.

Hardware

Neste projecto será usado um NodeMCU e um Módulo VS1053, ambos disponíveis na net. A corrente neste caso concreto é fornecida por uma derivação da alimentação do leitor de cassetes áudio, neste caso o equipamento “up-ciclado”, tinha uma saída de 5V DC que foi aproveitada para este efeito.

De DataTable para ficheiro CSV (mais comum do que seria agradável)

Tal como o título sugere, é mais comum do que seria “agradável”, ter de fazer transformações de dados de DataTable, para ficheiros CSV separados por vírgulas ou ponto-e-vírgula, para se transferirem dados nas mais diversas situações! Seria muito mais agradável usar um formato tipo XML ou mesmo JSON do que usar CSV! No entanto o CSV está para ficar, tendo em 2005 sido alvo de RFC para formato comum e Mime Type para transferência de ficheiros (RFC4188).

Ao longo do artigo será apresentada uma classe, bastante simples para escrever dados oriundos de uma DataTable para ficheiro em formato CSV de acordo com o RFC4180 e posteriormente em formato CSV separado por ponto-e-vírgula, conforme é comummente usado para transferência de dados entre sistemas “legados”.

Os dados armazenados num objecto do tipo DataTable, encontram-se num formato suportado pela framework .Net para armazenamento em memória. Como se trata de um objecto existem diversos métodos bastante úteis que podem ser chamados. Muitos deles bastante úteis quando se pretende trabalhar com os dados em memória. No entanto a classe DataTable não tem suporte para escrita de ficheiros CSV.

Continuar a ler

A “Arte da Guerra” e a tecnologia

É possível que para muitos o título possa parecer de uma estranheza absurda, quase atroz talvez, ou mesmo sem nexo. No entanto o título indica exactamente o que é pretendido, ao abordar a aplicação de um livro que data do século V AC, escrito por um estratega militar chinês, Sun Tzu.

O que pode ter um texto sobre guerra a ver com software? Talvez mais do que se imagina, pois muitos dos princípios descritos no livro, têm uma aplicação bastante mais vasta que a vertente bélica, havendo inclusive já estudos sobre a aplicação desses princípios a vertentes como a gestão e o negócio.

O livro, encontra-se dividido em treze capítulos, cada um dedicado a um aspecto concreto, que apesar da amplitude do texto, denota sempre a vertente bélica do mesmo. No entanto isto não invalida a sua aplicação ao software! Ora vejamos.

Continuar a ler

Como criar um programa auto-replicativo em assembly, para GNU/Linux

A arte da criação de programas auto-replicativos parece estar perdida no tempo. Não podemos confundir um programa auto-replicativo com malware, cavalos de tróia, worms, etc. Um programa auto-replicativo não executa nenhum tipo de código para danificar hardware ou software, pelo contrário apenas tenta replicar-se de diversas formas ou métodos e é por norma escrito numa linguagem de baixo nível, como por exemplo assembly. A parte mais interessante e importante do programa ao contrário de um malware não é um pedaço de código para causar danos, mas antes pelo contrário apenas o código que per- mite que o programa se replique.

Apesar de muitas vezes se confundirem as duas tarefas, um programa auto-replicativo é uma forma de criatividade, engenho e inovação, com o objectivo de criar um programa que se consiga manter num sistema informático evitando ser apagado e replicando-se de forma inteligente, evitando a sua detecção e consequente remoção. É quase como fazer um avião de papel, ajustar as “asas”, o “nariz”, colocar ou não um “leme de cauda”, etc e atirar para ver que distância é percorrida antes de inevitavelmente aterrar, ou melhor, cair! Em momento algum se pretende que o programa, tal como o avião, dure “ad aeternum”, sendo o interesse apenas no lapso de tempo que ele durará até ser totalmente removido.

Continuar a ler

04 Too many open files (no handles left)

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

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.

Continuar a ler

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.

Continuar a ler