Com a digitalização dos processos brasileiros, se torna cada vez mais útil (e às vezes necessário) a obtenção de um CPF digital, chamado de e-CPF. O e-CPF tem propriedades criptográficas, permitindo dentre outras coisas, efetuar assinaturas digitais. Devido ao não-repúdio, uma vez assinado um documento com o e-CPF, essa assinatura é reconhecida legalmente no país como pertencente ao CPF correspondente.

O e-CPF é distribuído de duas formas: através de certificados A1 armazenados no próprio computador; e certificados A3 armazenados em mídias criptográficas como tokens (parecidos com um pendrive). Nesse artigo, discutimos o uso de tokens para e-CPF no Linux, para…

Assinaturas de documentos oficiais, em formato digital, tipicamente demandam algum tipo de tecnologia criptográfica que garanta a autenticidade e não repúdio do assinante. No Brasil, a Infraestutura de Chaves Públicas para Ensino e Pesquisa (ICPEdu) oferecida pela Rede Nacional de Ensino e Pesquisa (RNP) atualmente provê um serviço emissão de certificados digitais. Os certificados emitidos tem foco em pessoal (com duração atual de 12 meses), sendo atrelados ao certificado AC Pessoas.

Emissão de certificados digitais pessoais em instituições acadêmicas:

Geralmente, o suporte de assinaturas em documentos PDF no Windows é feito através do serviço proprietário da Adobe. O objetivo desse tutorial é demonstrar como assinar digitalmente documentos PDF…

Checking math exercises can be easily done in a automated way, by using GitHub Classroom together with GNU Octave. We have recently discussed how to autograde C++ programming exercises, and now we extend this knowledge for math exercises. This tutorial is intended for college teachers/professors, and if you want to learn by practice, just follow this invitation link:

As usual, you need to log-in into GitHub Classroom ( and create a new Organization that will hold the repositories (or “answers”) of all students. Personally, I recommend creating a new organization for every different course, in every year/semester (and name…

The Bazel Build system was originated from Google, being released afterward to the general public as open-source. It is important for languages such as C/C++ that depend on compile/linking phases, which often depend on other third-party projects/libraries. In this article, we demonstrate how to configure Bazel on Windows to compile and execute codes written in C/C++ (with GNU toolchain).

Note 1: The files/installers used in this tutorial are available at:

Note 2: If you want to practice directly via GitHub Classroom, follow this invitation:

To make the process even simpler, we propose installing Bazel through NPM packages (if…

Autograding tools are very important to improve feedback during programming exercises for students. Hopefully, we already have amazing (and free) tools/platforms to do that! Let’s take a look at Github Classroom for autograding C++ tests using Catch2.

If you want to start learning on practice, just click follow this link, otherwise you can keep reading:

First of all, I present the general idea. Teacher creates a template repository for the task, including:

  • (i) a construction script (GNU makefile?);
  • (ii) a set of tests (written on Catch2 test library?);
  • (iii) a README explaining exercises and rules

Each test can receive…

Novas tecnologias de transmissão são fundamentais para o retorno aos cursos emergenciais e aulas remotas, então segui os bons conselhos do meu irmão Mateus Nazário e colegas professores para dar uma olhada no Open Broadcast Studio (OBS). As vantagens do OBS são amplo suporte a plataformas (Windows/Linux/Mac) e grande flexibilidade através de plugins, além de ser uma tecnologia de código-aberto.

Em resumo: a tecnologia é ótima, funciona e vale a pena! Vou contar alguns desafios que passei para deixar tudo direitinho (vou focar no Linux neste tutorial). Como todo tutorial Linux, vou assumir familiaridade com a linha de comandos.

After many months on hard work and heat discussions, a history of dBFT has been published online at journal Future Internet, hosted at the Multidisciplinary Digital Publishing Institute (MDPI). The MDPI focuses on Open-Access research, with much faster peer-review processes than traditional academic journals. The paper had participation from researchers and active voices from distinct Neo community members, including NeoResearch and NNT, from academia (Brazilian universities UFF and UERJ) and from NGD research team.

MDPI Future Internet:

The paper entitled “Challenges of PBFT-Inspired Consensus for Blockchain and Enhancements over Neo dBFT” presents theoretical assumptions on peer-to-peer for efficient blockchain consensus, and for decentralized…

About one year ago the neopt project has started, aiming to provide Neo blockchain components for all kinds of devices. This project quickly branched into other independent subprojects, that were proven useful to Neo community projects in different languages, such as JS and Python.

Now, neopt project matured and gave birth to three new projects:

By using C++ as a strong basis for both high-performance and low-level portability, we may reach microcontrollers and low-energy devices, while also being able to provide libraries for a JavaScript SDK. …

Recently, two academic papers on Neo technology were accepted and presented in an international IEEE conference focused on High Performance Computing: SBAC-PAD 2019 (

Three members of NeoResearch community co-authored these works, that focused on two distinct scenarios: one involving NeoVM, microcontrollers and Smart Home/Smart City concepts; and another purely focused novel consensus technology and its connection to recent Timed Automata theory.

The works were done in partnership with co-authors of several recognized Brazilian universities, including: State University of Rio de Janeiro (UERJ); Fluminense Federal University (UFF); Federal University of São João del Rey (UFSJ); and Federal University of Ouro…

Newer advances on the next generation of Neo blockchain, called Neo 3, also brought a direct impact on its Virtual Machine, the NeoVM. One of these fundamental NeoVM changes was performed on May 2019, the PR 149. These changes removed CHECKSIG and CHECKMULTISIG opcodes from NeoVM, moving them to Neo Interoperability layer, but it may have passed unnoticed another fundamental change: NeoVM was finally detached from Neo.

How did this happen? On line 59 of this same PR, we note that “IScriptContainer ScriptContainer” field has vanished from VM execution engine. This was used to implicitly pass current Transaction of Neo…

Igor Machado

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store