Gamificação

Em um mundo como vivemos hoje em dia, com milhares de distrações para qualquer lado que olhamos, é incontestável a dificuldade em criar uma determinada tarefa/tema que prenda a atenção e o interesse da pessoa e que faça com que se engaje a essa tarefa/tema.

O que é Gamificação?

A Gamificação é uma metodologia que adapta os conceitos, ideias e dinâmicas dos jogos para o mundo real, que tem como alguns de seus objetivos: motivar, causar interesse, curiosidade, engajamento e incentivar as pessoas a realizar determinada atividade.

Alguns dos elementos que essa metodologia busca do mundo dos jogos para implementar no mundo real e alcançar seus objetivos, são:

• Competição;

• Cooperação;

• Aplicação de fases;

• Recompensas;

Com o uso desse método é amenizado a dor que a maioria das pessoas sente ao tentar aprender algo novo.

Por que implementar a Gamificação?

Por que essa metodologia busca resolver um dos problemas da atualidade, que é a falta de interesse e motivação das pessoas.

Diversas pesquisas comprovam que as pessoas se sentem mais motivadas, felizes e produtivas quando estão trabalhando em algo que está gamificado.

Como implementar a Gamificação?

Quando estamos falando sobre a implementação da Gamificação em algum cenário, muitos buscam algo pronto, como um jogo já pronto, embora um jogo pronto possa funcionar em várias ocasiões, implementar um projeto de Gamificação que foi estudado para um determinado cenário, sempre trará mais benefícios.

Para levantar o que é preciso fazer e implementar na hora de criar um projeto de Gamificação, depende muito do seu cenário, se é para educação, se é empresarial, se é no ramo da saúde, então o ideia é sempre consultar alguém experiente e profissional.

Entretanto, alguns passos são sempre utilizados, independente da área que esteja, são eles:

• Estabelecer missões e desafios;

• Sistema de pontuação;

• Sistema de Ranking;

• Premiações

Esses sistemas/métodos estão presente em praticamente todos os projetos de Gamificação, pois sistemas de ranqueamento e recomeças são ações que incentivam a continuar até que seus objetivos sejam alcançados, pois, se sentem empolgados a realizar uma ação ou progredir com a tarefa, além de já estarmos bem habituados a esses sistemas, que estão presente em praticamente tudo que a sociedade jovem pratica.

Benefícios da Gamificação

O uso dessa metodologia traz muitos benefícios, dentre alguns dos benefícios, estão:

– Ameniza a dor do aprendizado

No método tradicional de ensino para as pessoas de hoje em dia, é comum com que associem o aprendizado a algo chato, simplesmente obrigatório, com o uso da Gamificação tornando o ensino mais atrativo e divertido, essa dor é amenizada.

– Estimula a persistência

Com a Gamificação, o aprendizado se torna interessante, alguns dos métodos utilizados dentro da Gamificação faz com que a pessoa queira seguir, continuar com o que está fazendo.

– Melhora o foco

Com as grandes distrações dos dias atuais, juntando com o método tradicional de ensino que é associado como algo chato, qualquer mínimo detalhe é o suficiente para tirar o foco da pessoa do aprendizado, portanto, a Gamificação fazendo com que o aprendizado deixe de ser algo chato, para ser algo interessante, curioso, fazendo com que a pessoa se engaje e até mesmo divertido algumas vezes, faz com que o foco dessa pessoa não seja perdido por qualquer distração.

Conclusão

A eficácia dessa metodologia não tem como ser negada, por essa razão o crescimento no uso desta metodologia está tão em alta.

Os benefícios gerados na utilização da Gamificação são muito importantes, ao gerar motivação para uma pessoa seguir, quebra uma das maiores barreiras para o aprendizado e sucesso de uma pessoa, e essa barreira é a desmotivação.

Alguns estudos sobre a Gamificação aponta que cerca de 83% das pessoas que passaram por um treinamento que havia Gamificação responderam de maneira positiva, e que 89% se sentem mais produtivas no trabalho, quando o mesmo está gamificado.

Autor: Fabrício Vanazzi

NodeJS vs Go

NodeJS vs Golang

Nos dias atuais e na era da informação, se torna cada vez mais fácil ter acesso a um bom conteúdo para estudar e se aperfeiçoar. Isso possibilitou que nós, desenvolvedores, tenhamos uma grande quantidade de tecnologias à nossa disposição para solucionar os problemas corriqueiros de nosso dia a dia. Este texto tem como objetivo comparar duas excelentes tecnologias que empoderam milhões de desenvolvedores ao redor do mundo. Durante este post, irei  abordar diversos pontos que considerei importantes para a escolha de uma stack e espero que talvez, encurte a sua jornada.

O NodeJS é um runtime JavaScript, construído sobre o V8, um motor de renderização, criado pelo Google e considerado por muitos, um dos maiores avanços na engenharia de software, depois do Linux e do Git. Foi criado por Ryan Dahl e apresentado em 2009. É open-source e se tornou o mais popular ecossistema multiplataforma para o desenvolvimento de aplicações. De uma forma sucinta, o V8 transforma o código JavaScript em C++ e realiza sua execução.

O Go ou Golang teve seu início em 2007, originalmente por uma equipe do Google. Em 2009, foi apresentada ao público e lançada como open-source. A equipe core de criação e design da linguagem, são ícones no mundo de desenvolvimento de software. Entre eles estão: Robert Griesemer, Rob Pike e Ken Thompson. A proposta da linguagem foi trazer boa performance, segurança e aumentar a produtividade, sendo uma alternativa ao C++ e ao Java.

NodeJS – Especificações

O NodeJS, como comentando anteriormente foi construído sobre o V8, porém, ele não se limita apenas a isso. Sua arquitetura é complexa, a estrutura principal é composta por 6 módulos distintos, que comunicam-se para permitir que as aplicações sejam executadas. Esses módulos são: V8, Libuv, http-parser, c-ares, OpenSSL e zlib. Podemos ver essa disposição de dependências na imagem a seguir:

Image Source: https://dev.to/khaosdoctor/node-js-under-the-hood-1-getting-to-know-our-tools-1465

Com a utilização de JavaScript, o código é dinamicamente tipado e vem recebendo evoluções conforme novas especificações do Ecmascript são lançadas.

Não podemos falar de Node, sem mencionar que o mesmo é orientado a eventos, assíncrono e não bloqueante. Para organizar isso, utiliza uma thread principal, para que todo o processo do event loop seja controlado. Esse é o motivo de ser chamado de single-threaded, mesmo utilizando worker threads em outros processos.

Ao contrário do que muitos pensam, o NodeJS não compila o código e executa posteriormente, assim como C ou o GO. Os códigos são compilados a tempo de execução, em um processo chamado de JIT (Just-in-time), trazendo grandes benefícios como otimização dos códigos durante a execução do programa.

Go – Especificações

Go ou Golang é uma linguagem de programação procedural e fortemente tipada, com uma sintaxe parecida com C. Apesar de sua tipagem, ela permite que ocorra uma inferência de tipos, no momento da declaração de uma variável, facilitando assim a vida dos programadores. Como comentado anteriormente, ela foi desenvolvida para ser altamente escalável e ter uma curva de aprendizagem menor que o C e o C++. Diferentemente do NodeJS, é uma linguagem compilada, que permite distribuir seus binários.

Por ser uma linguagem relativamente nova, ela foi criada com o intuito de utilizar todos os núcleos de processamento dos CPU’s modernos. Para tornar essa utilização de múltiplos cores mais amigável, foram criadas as Goroutines, que abstraem a necessidade de trabalhar manualmente com as threads.

Mesmo sendo uma linguagem compilada, GO possui um garbage collector, que foi casos de polêmicas em sua utilização em grande escala. Esse garbage collector recebeu muitas melhorias desde então.

Go instaurou uma cultura diferente das demais linguagens, sempre prezando pela simplicidade e procurando ao máximo trazer o máximo de ferramentas em seu core, facilitando assim a vida dos desenvolvedores. Essa abordagem divide opiniões, onde alguns acham que torna-se inflexível e outros acreditam que isso pode prevenir algumas decisões errôneas.

Aplicações das Tecnologias

O NodeJS está em praticamente todos os lugares. Ele é comumente utilizado para realizar a criação de API’s, com express, é utilizado em projetos React, é utilizado em aplicações desktop multiplataforma através do Eletron, é utilizado em aplicativos móveis através do React Native e também pode ser utilizado em aplicações embarcadas.

GO é geralmente utilizado para construir API’s, scripts e aplicações embarcadas. É bem versátil e tem diversas bibliotecas para a utilização em interfaces para aplicações desktop. Por se tratar de algo criado e desenhado para rodar em servidores, não é suportada na Web, apesar de ter iniciativas executando através do WebAssembly.

Curva de Aprendizado

Todo e qualquer desenvolvedor, nos dias atuais, precisa saber o básico de JavaScript, com isso, ao meu ver, a curva de aprendizagem do NodeJS é menor. Porém, GO é muito simples, possui uma boa documentação e desenvolvedores originalmente de linguagens como: Java, C#, C e C++, tem grandes facilidades na evolução.

Ferramental Disponível e Gerenciamento de Dependências

O gerenciamento de pacotes do Go é infinitamente superior ao do NodeJS. Golang cria uma pasta no repositório local do usuário, e mesmo que múltiplos projetos utilizem as mesmas dependências, elas são armazenadas uma única vez. Poupando muito espaço se compararmos com o node_modules, que requer que as dependências fiquem na mesma pasta do package.json.

Quanto ao ferramental de desenvolvimento, tanto um quanto o outro é possível escolher seu editor de código favorito, atualmente os principais dão suporte a linguagem. Existem também IDEs construídas por empresas como a JetBrains para ambas as tecnologias. 

Usando como base o Visual Studio Code, o GO se destaca em possuir um Linter que é instalado e configurado automaticamente ao iniciar um arquivo da respectiva extensão. Isso facilita bastante, pois tudo é baixado diretamente pelo editor e requer apenas uma extensão. No NodeJS para termos um bom linter, é necessário baixar a extensão e configurar manualmente os arquivos no projeto.

Em questão de bibliotecas, o NodeJS tem uma grande vantagem, tendo uma comunidade maior, com mais variedade e possuindo inúmeros projetos open source maduros, bem codificados e consolidados. GO tem uma comunidade em constante crescimento, e cada vez mais, novas bibliotecas são criadas e disponibilizadas no Github.

NodeJS tem frameworks muito populares e maduros, como Express, NestJS, LoopBack, etc. Enquanto o GO possui frameworks com uma popularidade menor, porém, muito eficientes, como o GIN, Fiber, etc.

Mercado

O mercado de tecnologia como um todo está bem aquecido. Para ambas as linguagens, existem bastante vagas em aberto, a diferença existe na busca de perfil, onde as vagas para GO, buscam geralmente pessoas com mais experiência na área. Isso não quer dizer que não existam vagas, para Junior, porém, se compararmos com o NodeJS, esse número é menor.

Quanto a empresas que utilizam determinada tecnologia, para o NodeJS podemos citar, Uber, Netflix, Paypal, Trello e muitas outras. O GO também está tendo uma rápida adoção e já temos casos de uso no Mercado Livre, Twitch, SendGrid, Dropbox e o próprio Google. Também vale salientar que o Docker, Kubernetes e o Terraform são construídos nesta tecnologia.

Performance

Para comparar a performance, me baseei em dados do TechEmpower, um dos mais renomados benchmarks, com os testes mais efetivos e em diversos segmentos. No atual momento que escrevo este texto, o Round é o 19.

Acredito que um dos testes mais relevantes são os de Data Updates, onde é bem perceptível que os frameworks Go, tem grande vantagem:

Desconsiderando o es4x, que é o JavaScript rodando no Vert.x, os frameworks escritos em GO dominam o ranking da posição 2 à 20, aparecendo sutilmente o Fastify.

Em outro cenário, realizando múltiplas requisições no banco de dados, podemos perceber novamente que o Go tem uma grande vantagem:

Também dominando as 20 primeiras posições do ranking, desconsiderando novamente o es4x.

Conclusão

O GO tem claramente um melhor gerenciamento de dependências, mais performance e está em um mercado ascendente, onde aqueles que se aventurarem em seu profundo entendimento, poderão colher bons frutos. Porém, é recomendado para equipes mais maduras, que tenham a capacidade de manter uma arquitetura de microsserviços e as aplicações Frontend desacopladas. 

NodeJS tem um mercado maior, com uma curva de aprendizado menor e possibilita que desenvolvedores possam atuar em diferentes partes da arquitetura, sem ter que aprender uma nova tecnologia. Tem uma performance aceitável e uma quantidade de frameworks e bibliotecas exuberante.

Ao comparar duas tecnologias, a ideia não é definir qual é a melhor e sim explanar as diferenças para que a escolha seja a mais adequada para um determinado contexto.

Autor: Francisco Felipe de Lima.

Fonte de referências:

https://productcoalition.com/reasons-why-golang-is-better-than-other-programming-languages-4714082bb1b1#:~:text=Golang%20emerged%20as%20an%20alternative,scalable%20servers%20and%20software%20systems.

https://www.geeksforgeeks.org/golang/?ref=lbp

https://www.quora.com/What-kind-of-applications-or-software-can-you-make-with-Golang

https://github.com/gofiber/fiber

https://medium.com/@blogger.ashishsharma/golang-vs-node-js-comparison-and-why-developers-prefer-node-js-9e669319df52

https://dev.to/khaosdoctor/node-js-under-the-hood-1-getting-to-know-our-tools-1465

https://blog.bitsrc.io/the-jit-in-javascript-just-in-time-compiler-798b66e44143

https://blog.gopheracademy.com/advent-2018/go-in-the-browser/

https://docs.gofiber.io/benchmarks https://www.techempower.com/benchmarks/

Arquitetura Serverless: O que você precisa saber

logo serverless framework

Você já imaginou executar suas funções de backend sem possuir um servidor? A arquitetura serverless nos permite essa facilidade.

No entanto, como o nome da arquitetura sugere (serverless, do inglês, sem servidor), existe sim um servidor executando tais funções, ele somente não é gerenciado por você, mas pela plataforma cloud  no modelo FaaS (Function as a Service) que você irá utilizar, como por exemplo Amazon Web Services (AWS), Microsoft Azure, Google Cloud, entre outras. Com isso, evita-se a configuração de servidores complexos e/ou ambientes isolados como os containers.

Surgimento

A origem da hospedagem de recursos de computação em cloud não iniciaram a partir do serverless. Inicialmente, possuia-se três formas de aplicar serviços de computação em nuvem, sendo eles:

  • IasS (Infrastructure as a Service): Permite ao usuário selecionar um conjunto de recursos específicos para sua aplicação, e a partir disso, configurá-la de acordo com sua necessidade.
  • PaaS (Platform as a Service): Conta com os recursos da IaaS – servidores, armazenamento e rede – e acrescenta o acesso a ferramentas de gerenciamento da aplicação, como por exemplo, IDE’s, SGBD’s e middlewares.
  • SaaS (Software as a Service): Proporciona o acesso a um software completo dentro de um datacenter do provedor escolhido, incluindo a camada de apresentação da aplicação.

Todas essas estruturas possuem um valor mensal de acordo com o provedor de serviços, que nos garantem alta disponibilidade e segurança dos dados, tanto para os detentores da aplicação quanto para os usuários finais, além da escalabilidade.

Mas afinal, o que é serverless?

O serverless é uma arquitetura que utiliza como padrão o modelo FaaS, que consiste em executar funções como serviço, ou seja, as funções de nossos códigos são armazenadas na nuvem e executadas individualmente, sem necessidade de um datacenter privado executando sua camada de processamento de dados. No entanto, o serverless  não possuí somente o modelo de funções como serviço, existe também o modelo BaaS (Backend as a Service) como por exemplo o Google Firebase, que possibilita a criação da infraestrutura de dados e execução de códigos, comumente utilizados para autenticação de usuários de forma simples e segura. Além deste, temos o modelo CasS (Containers as a Service) que tem como objetivo a utilização de um container de baixo custo na nuvem, sem necessidade de um datacenter.

Como funciona e quanto custa?

Cada provedor possui seu próprio recurso de execução de códigos, como por exemplo, o AWS Lambda, o Google Cloud Functions ou o Azure Automation. Suas funções são hospedadas gratuitamente nos provedores de cloud, e o valor é variado de acordo com o número de execuções e/ou tempo de execução da função, o exemplo abaixo é disponibilizado pela AWS deixando mais evidente o calculo de custo.

calculo de custo aws lambda
Exemplo de cálculo para cobranças mensais (AWS)

Onde e como utilizar?

Tendo em vista a utilização do modelo FaaS, podemos utilizar o serverless como um facilitador para nossas aplicações, sendo recomendado para execução de funções assíncronas, ou seja, funções que podem ser executadas sem impedir a navegabilidade do usuário ou que consumam muito processamento de dados no servidor comum. Por exemplo, o envio de um e-mail, o upload de uma imagem ou a geração de um relatório. O serverless possui uma ótima sinergia com a estrutura de microsserviços, onde há facilidade ao mover uma funcionalidade específica para a arquitetura serverless. Um ponto a ser considerado, antes de começar a utilizar deste modelo, é se a função possui um objetivo bem definido e não causa um grande impacto na aplicação, pois estas funções são stateless, ou seja, não armazena seu estado. A cada execução a função será reconstruída do zero, sem considerar os dados já processados anteriormente.

Serverless framework

O framework Serverless é um framework web gratuito e de código aberto, escrito em Node.js o que facilita o desenvolvimento de funções como serviço. Serverless é o primeiro primeiro framework que foi originalmente desenvolvido para construir aplicações exclusivamente na AWS Lambda. Atualmente, aplicações desenvolvidas com o framework Serverless podem ser entregues e publicadas em outros provedores de funções como serviços, conforme consta no site do framework.

Vantagens

  • Não existe a necessidade de configuração de um servidor dedicado;
  • Os valores disponibilizados pelos provedores atuais são extremamente baratos;
  • Suas funções são auto escaláveis não importando o consumo;
  • A realização do deploy é muito simples, e existem ferramentas que automatizam isso.

Desvantagens

  • Ao possuir grande intervalo de tempo entre execuções podem ocasionar perda de performance;
  • O custo pode ficar muito alto caso suas funções demorem cerca de 300 segundos, sendo este o limite de tempo de execução.
  • Execução de testes e debug é extremamente difícil;
  • A utilização em conjunto com aplicações que possuem execuções constantes pode aumentar consideravelmente o custo.

Concluindo

O cenário atual de desenvolvimento está cada vez mais suscetível à mudança das arquiteturas tradicionais para serviços em cloud, sendo necessário uma série de adaptações de códigos. Com isso, fica visível a utilidade da arquitetura serverless, levando em conta a sua facilidade de implantação utilizando o Serverless framework.

Autor: Mateus Catel.

Links Relacionados

https://blog.rocketseat.com.br/serverless-nodejs-lambda/

https://www.riuni.unisul.br/bitstream/handle/12345/8450/TCC-FINAL-COM-ASSINATURAS.pdf

https://read.acloud.guru/six-months-of-serverless-lessons-learned-f6da86a73526

https://www.youtube.com/watch?v=FaybjGx3uQI

https://www.serverless.com/

https://aws.amazon.com/pt/lambda/

Utilização de NodeMCU em projetos IoT

Desde o princípio a tecnologia vem passando por crescente transformação. O que antes eram computadores gigantes que ocupavam salas inteiras apenas para fazer simples cálculos, se transformou em dispositivos indispensáveis para o dia-a-dia. São eles: celulares, notebooks, o computador de bordo do carro, a TV smart, o aspirador de pó inteligente, entre muitos outros. Esta grande massa de dispositivos geralmente está conectada à internet. Mas você já parou para pensar como isso funciona? Quais dispositivos podem ser conectados? Eu posso montar um projeto IoT? Aí está mais uma palavra que ouvimos muito hoje em dia. IoT significa Internet of Things (Internet das Coisas), que podemos entender como coisas conectadas na internet.

Já é possível termos um sistema de aquecimento que altera a temperatura de acordo com o clima, ou um medidor que avisa quando o gás está acabando. Para você que gosta de tecnologia, assim como eu, e quer conectar seu projeto na internet, este post é para você. Vamos falar sobre uma placa chamada NodeMCU, que pode ser conectada no Wi-Fi e é de fácil usabilidade.

O que é?

Antes de falar sobre a NodeMCU precisamos entender o que é módulo ESP-8266. Este módulo é fabricado pela Espressif Systems e contém vários elementos poderosos como CPU, RAM e Wi-Fi. A parte ruim é que para utilizá-lo, você precisa programá-lo enviando comandos com instruções de máquina de baixo nível. É aí que entra a NodeMCU.

A NodeMCU (Node MicroController Unit) é uma placa, criada para facilitar o desenvolvimento com o módulo ESP-8266. Ela já possui vários componentes que facilitarão sua vida: reguladores de tensão, leds, botão de reset, interface Serial-USB. Além disso, é possível fazer upload de sketchs do Arduino.

Como a placa tem acesso à internet, é possível fazer OTA (Over the Air) Upload, o que significa que você pode utilizar a rede Wi-Fi para atualizar o firmware da NodeMCU.

Abaixo, as principais características:

  • Processador ESP8266-12E
  • Arquitetura RISC de 32 bits
  • Processador pode operar em 80MHz / 160MHz
  • 4Mb de memória flash
  • 64Kb para instruções
  • 96Kb para dados
  • Wi-Fi nativo padrão 802.11b/g/n
  • Opera em modo AP, Station ou AP + Station
  • Pode ser alimentada com 5VDC através do conector micro USB
  • Possui 11 pinos digitais
  • Possui 1 pino analógico com resolução de 10 bits
  • Pinos digitais, exceto o D0, possuem interrupção, PWM, I2C e one wire
  • Pinos operam em nível lógico de 3.3V
  • Pinos não tolerantes a 5V
  • Possui conversor USB Serial integrado
  • Programável via USB ou WiFi (OTA)
  • Compatível com a IDE do Arduino
  • Compatível com módulos e sensores utilizados no Arduino

Como utilizar?

A utilização da NodeMCU é muito simples. Neste exemplo vamos utilizar o Platform.IO, que é uma plataforma para desenvolvimento de dispositivos embarcados. Antes de utilizar, você precisará instalar o Visual Studio Code, que é uma IDE muito utilizada hoje em dia por desenvolvedores. Aqui você encontra o passo a passo para instalar em seu computador.

Utilizando como Access Point

Um access point (ponto de acesso) é um dispositivo de rede usado no qual podemos nos conectar como se fosse um roteador wi-fi. Para utilizar a NodeMCU dessa maneira, precisaremos de duas bibliotecas: ESP8266WiFi.h e ESP8266WebServer.h. Por padrão, no Platform.io estas libs já estão instaladas.

Segue um código de exemplo que comanda dois leds de cores diferentes por meio de uma página web disponibilizada pelo access point da NodeMCU:

#include "Arduino.h"
 
#include "ESP8266WiFi.h"
#include "ESP8266WebServer.h"
 
#define PIN_LED_GREEN D4
bool ledGreenIsOn = false;
 
#define PIN_LED_RED D5
bool ledRedIsOn = false;
 
// declare server with port 80
ESP8266WebServer server(80);
 
// server main page html
const char serverPage[] PROGMEM = R"=====(
  <html>
    <button onclick="toggleLed('green')">
    toggle GREEN led
    </button>
    
    <button onclick="toggleLed('red')">
    toggle RED led
    </button>
 
    <script>
        function toggleLed(led) {
        console.log(`toggle led ${led}`);
 
        fetch("/toggleLed", {
            method: 'POST',
            headers: {
            "Content-Type": "application/x-www-form-urlencoded"
            },
            body: `led=${led}`
        });
        }
    </script>
  </html>        
)=====";
 
void setup()
{
    Serial.println(115200);

    Serial.println("init wi-fi ap mode...");
 
    // init pins
    pinMode(PIN_LED_GREEN, OUTPUT);
    pinMode(PIN_LED_RED, OUTPUT);
 
    // set wifi mode
    WiFi.mode(WIFI_AP);
 
    // define wifi configs
    IPAddress ip(10, 0, 0, 1);
    IPAddress gateway(10, 0, 0, 254);
    IPAddress subnet(255, 255, 255, 0);
 
    // set wifi configs
    WiFi.softAPConfig(ip, gateway, subnet);
 
    // init access point
    bool result = WiFi.softAP("My Network", "12345678");
 
    Serial.printf(result ? "Ready" : "Failed");
    Serial.println(WiFi.softAPIP());
 
    // define server routes
    server.on("/", HTTP_GET, []() {
        server.send(200, "text/html", serverPage);
    });
 
    server.on("/toggleLed", HTTP_POST, []() {
        String led = server.arg("led");
 
        Serial.println("toggle led \"" + led + "\"");
 
        uint8_t pinLed;
        bool state = false;
        if (led == "green")
        {
            pinLed = PIN_LED_GREEN;
            ledGreenIsOn = !ledGreenIsOn;
            state = ledGreenIsOn;
        }
        else if (led == "red")
        {
            pinLed = PIN_LED_RED;
            ledRedIsOn = !ledRedIsOn;
            state = ledRedIsOn;
        }
 
        digitalWrite(pinLed, state);
 
        server.send(200, "application/json", "{\"ok\":true}");
    });
 
    // init server
    server.begin();
}
 
void loop()
{
    server.handleClient();
}

Utilizando como Station

O modo station faz com que a NodeMCU se comporte como um outro dispositivo (celular, computador etc) conectado na rede. Assim é possível, por exemplo, fazer requisições HTTP para um servidor hospedado na web.

No exemplo vamos utilizar um LDR (Light Dependent Resistor). Segue o esquema se você quiser montar com sua NodeMCU:

O código de exemplo irá, a cada segundo, fazer uma requisição enviando a intensidade de luz no local:

#include "Arduino.h"
 
#include "ESP8266WiFi.h"
#include "ESP8266WiFiMulti.h"
#include "ESP8266HTTPClient.h"
 
#define PIN_LDR A0
 
ESP8266WiFiMulti wiFiMulti;
HTTPClient http;
 
void setup()
{
    Serial.println(115200);
 
    Serial.println("init wi-fi station mode...");
 
    // init pins
    pinMode(PIN_LDR, INPUT);
 
    // set wifi mode
    WiFi.mode(WIFI_STA);
 
    // connect to wi-fi network
    wiFiMulti.addAP("<network ssid>", "<network password>");
 
    // wait for connection
    int count = 0;
    while (wiFiMulti.run() != WL_CONNECTED)
    {
        Serial.print(".");
        delay(500);
 
        if (count >= 20)
        {
            Serial.println("wi-fi connection time out");
            return;
        }
 
        count++;
    }
 
    Serial.print("\nConnected as ");
    Serial.println(WiFi.localIP());
}
 
void loop()
{
    // run every 1000 miliseconds
    if (millis() % 1000 == 0)
    {
        int ldrValue = analogRead(PIN_LDR);
        float lightPercentage = 100 / 1024 * ldrValue;
 
        if (WiFi.isConnected())
        {
            String url = "<api end-point>";
 
            // init url
            http.begin(url);
 
            Serial.println("[HTTP] begin in " + url);
 
            // add headers
            http.addHeader("Content-Type", "application/json");
 
            // define json body
            String body = "";
            body += "{";
            body += "\"lightPercentage\": " + String(lightPercentage) + ",";
            body += "}";
 
            Serial.println("[HTTP] request body: " + body);
 
            // make http post
            int httpCode = http.POST(body);
 
            if (httpCode > 0)
            {
                Serial.println("[HTTP] POST " + String(httpCode));
 
                String response = http.getString();
                Serial.println("[HTTP] response: " + response);
            }
            else
            {
                Serial.println("[HTTP] POST failed, error: (" + String(httpCode) + ") " + http.errorToString(httpCode));
            }
 
            // end http
            http.end();
        }
        else
        {
            Serial.println("wi-fi not connected");
        }
    }
}

Considerações finais

A NodeMCU é uma excelente opção para ser utilizada em um projeto que necessita acesso à internet. A utilização é muito simples, o que proporciona um desenvolvimento bastante ágil. O preço médio fica um pouco acima o que um Arduino ou outra placa semelhante, mas o valor agregado do produto supera o seu preço.

Fontes

CURVELLO, André. Apresentando o módulo ESP8266. Embarcados. Disponível em: <https://www.embarcados.com.br/modulo-esp8266>. Acesso em 20 de junho de 2020.

GARRETT, Filipe. O que é access point? Veja para que serve o ponto de acesso de Wi-Fi. Embarcados. Disponível em: <https://www.techtudo.com.br/noticias/2018/06/o-que-e-access-point-veja-para-que-serve-o-ponto-de-acesso-de-wi-fi.ghtml>. Acesso em 20 de junho de 2020.

MURTA, Gustavo. NodeMCU – ESP12: Guia completo – Introdução (Parte 1). Blog Eletrogate. Disponível em: <https://blog.eletrogate.com/nodemcu-esp12-introducao-1>. Acesso em 20 de junho de 2020.

OLIVEIRA, Greici. NodeMCU – Uma plataforma com características singulares para o seu projeto ioT. Embarcados. Disponível em: <https://blogmasterwalkershop.com.br/embarcados/nodemcu/nodemcu-uma-plataforma-com-caracteristicas-singulares-para-o-seu-projeto-iot>. Acesso em 20 de junho de 2020.

YUAN, Michael. Conhecendo o NodeMCU e sua placa DEVKIT. IBM. Disponível em: <https://www.ibm.com/developerworks/br/library/iot-nodemcu-open-why-use>. Acesso em 20 de junho de 2020.

ESP8266. Espressif. Disponível em: <https://www.espressif.com/en/products/socs/esp8266/overview>. Acesso em 20 de junho de 2020.

Sensor de Luminosidade LDR 5mm. Filipe Flop. Disponível em: <https://www.filipeflop.com/produto/sensor-de-luminosidade-ldr-5mm>. Acesso em 20 de junho de 2020.

Como a tecnologia impacta nossas vidas?. Toikos Blog. Disponível em: <http://toikos.com.br/blog/post/tecnologia>. Acesso em 20 de junho de 2020.

Casas Inteligentes: como faço minha casa mais inteligente?. Toikos Blog. Disponível em: <http://toikos.com.br/blog/post/casas-inteligentes-como-fao-minha-casa-mais-inteligente>. Acesso em 20 de junho de 2020.


Autor: Igor Wilian Faoro

RPA – Robotic Process Automation

A automação de processos robóticos, do inglês Robotic Process Automation (RPA) é uma forma emergente de tecnologia de automação de processos de negócios baseada na noção de robôs de software ou de trabalhadores de inteligência artificial.

Em ferramentas tradicionais de automação de fluxo de trabalho, um desenvolvedor de software produz uma lista de ações para automatizar uma tarefa e interface para o sistema back-end usando interfaces de programação de aplicativos internos (APIs) ou linguagem de script dedicada. Em contraste, os sistemas RPA desenvolvem a lista de ações observando o usuário executar essa tarefa na interface gráfica com o usuário (GUI) do aplicativo e, em seguida, executa a automação repetindo essas tarefas diretamente na GUI. Isso pode diminuir a barreira do uso de automação em produtos que, de outra forma, não teriam APIs para essa finalidade.

As ferramentas do RPA têm o objetivo de substituir tarefas repetitivas, operacionais e de baixa importância. Deixando assim as pessoas livres para atuar em atividades que exigem o uso de julgamentos, da razão, de sentimentos e de fatores humanos que contribuem para a inovação de qualquer empresa. Todos os sistemas que operam sem a mínima integração e que demandam toda uma equipe para tabular dados e preencher planilhas serão manipulados por robôs, que executarão cada tarefa com uma velocidade muito maior do que uma pessoa.

Os RPA têm fortes semelhanças técnicas com as ferramentas de teste da interface gráfica do usuário. Essas ferramentas também automatizam as interações com a GUI e geralmente o fazem repetindo um conjunto de ações de demonstração executadas por um usuário. As ferramentas do RPA diferem desses sistemas, incluindo recursos que permitem que os dados sejam manipulados em e entre vários aplicativos, por exemplo, recebimento de email contendo uma fatura, extração de dados e, em seguida, digitação em um sistema de contabilidade.

EVOLUÇÃO HISTÓRICA DA RPA

Como uma forma de automação, o conceito de RPA existe há muito tempo na forma de screen scraping, mas a primeira é considerada uma evolução tecnológica significativa dessa técnica, no sentido de que novas plataformas de software estão surgindo, que são suficientemente maduras, resilientes, escalável e confiável para tornar esta abordagem viável para uso em grandes empresas. (NEW SCIENTIST, 2015).

Como exemplo de até que ponto a tecnologia se desenvolveu desde a sua forma inicial na raspagem de telas, é útil considerar o caso citado em um estudo acadêmico.  Usuários de uma plataforma da Xchanging, empresa global sediada no Reino Unido que fornece processamento de negócios, tecnologia e serviços de compras em todo o mundo, antropomorfizou seu robô em uma colega de trabalho chamada “Poppy” e até convidou “ela” para a festa de Natal.  Esse exemplo serve para demonstrar o nível de intuição, engajamento e facilidade de uso das modernas plataformas de tecnologia RPA, que leva seus usuários (ou “treinadores”) a se relacionar com eles como seres, em vez de serviços de software abstratos. (WILLCOCKS, LACITY E CRAIG, 2015).

OS IMPACTOS DO RPA

3.1 Impactos no mercado de trabalho 

De acordo com a Harvard Business Review (2014), a maioria dos grupos de operações que adotaram a RPA prometeu a seus funcionários que a automação não resultaria em demissões. Em vez disso, os trabalhadores foram realocados para fazer um trabalho mais interessante.  Um estudo acadêmico destacou que os trabalhadores do conhecimento não se sentem ameaçados pela automação: eles adotaram e viram os robôs como companheiros de equipe. O mesmo estudo destacou que, ao invés de resultar em um menor número de funcionários, a tecnologia foi implantada de forma a alcançar mais trabalho e maior produtividade com o mesmo número de pessoas.

Por outro lado, alguns analistas afirmam que a RPA representa uma ameaça para a indústria de Business Process Outsourcing (BPO). A tese por trás dessa noção é que a RPA permitirá que as empresas “repatriarem” processos de locais offshore em data centers locais, com o benefício dessa nova tecnologia.  O efeito, se for verdade, será criar trabalhos de alto valor para designers de processos qualificados em locais onshore (e dentro da cadeia de fornecimento de hardware de TI, gerenciamento de data center, etc.), mas para diminuir a oportunidade disponível para offshore de trabalhadores pouco qualificados.  Por outro lado, esta discussão parece ser um terreno saudável para o debate, já que outro estudo acadêmico se esforçou para combater o chamado “mito” de que a RPA trará muitos empregos do exterior. (SLABY, 2012).

Impactos na sociedade

Estudos acadêmicos projetam que a RPA, entre outras tendências tecnológicas, deverá impulsionar uma nova onda de ganhos de produtividade e eficiência no mercado de trabalho global.  Embora não seja atribuída diretamente à RPA, a Universidade de Oxford estima que até 20% de todos os trabalhos podem ter sido automatizados até 2035.

Em uma palestra do TEDx organizada pela UCL em Londres, o empreendedor David Moss explicou que a mão-de-obra digital na forma de RPA não apenas revolucionará o modelo de custo da indústria de serviços ao reduzir os preços de produtos e serviços, mas é provável que aumente os níveis de serviço, a qualidade dos resultados e crie maiores oportunidades para a personalização dos serviços.  (JEE, 2016).

Enquanto isso, o professor Willcocks (2015), autor do artigo de LSE, fala de maior satisfação no trabalho e estímulo intelectual, caracterizando a tecnologia como tendo a capacidade de “tirar o robô do humano”, uma referência ao “A noção de que os robôs assumirão as porções mundanas e repetitivas da carga de trabalho diária das pessoas, deixando-as reposicionadas em papéis mais interpessoais ou concentradas nas partes restantes, mais significativas, de seus dias”.

IMPLEMENTAÇÃO DO RPA EM EMPRESAS

De acordo com a iCaptor a implementação de um RPA, ao contrário de outras ferramentas de TI, é bem simples. Existem processos de pequenas e médias empresas, para as quais desburocratizar e cortar algumas fases é essencial para alcançar rápidos resultados.

Uma implementação bem sucedida começa por encontrar os processos da empresa que poderiam se beneficiar do RPA. Para começar, é necessário realizar uma avaliação de alto nível de quais processos e tarefas podem ser robotizados.

A segunda fase desse processo envolve a seleção de um provedor de RPA, começando por obter informações sobre os requisitos técnicos e os critérios de avaliação. O processo de seleção, muitas vezes, é uma oportunidade para que os fornecedores mostrem como eles atendem aos seus requisitos.

A fase seguinte inclui a facilitação do piloto para as áreas de processo selecionados na fase 1 e 2. Durante esse passo a robotização será explorada de ponta a ponta para mostrar toda a extensão da tecnologia RPA. É importante garantir que os recursos de capital humano sejam treinados e estejam prontos para executar o plano de implementação. Essa etapa também envolve o suporte e o teste do ambiente de TI. Além disso, as atividades de implementação precisarão ser documentadas, rastreadas e concluídas de acordo com o plano inicial.

Se ocorrerem erros, esse é o momento de aprimorar e fazer modificações finais antes da revisão das partes interessadas. Assim, esse momento estabelece as bases para futuros modelos operacionais para uma transição suave para a estratégia RPA de longo prazo definida na Fase 1 e gerenciada na Fase Final.

A fase final é a hora de lançar a solução RPA bem-sucedida, que inclui o lançamento inicial do RPA, bem como o planejamento do sucesso contínuo do software RPA por meio da manutenção proativa.

A estratégia deve incluir um modelo de governança, um modelo operacional, uma estrutura organizacional e uma estratégia de gerenciamento de mudanças da solução RPA. Suas principais tarefas na fase final são:

  • colocar o modelo estratégico final em vigor;
  • determinar o modelo operacional, a governança e o sistema de priorização de processos;
  • fazer a gestão do plano de gerenciamento e de comunicação de mudanças em curso. 

CONSIDERAÇÕES FINAIS SOBRE RPA

A partir dessas informações é possível considerar que um RPA pode ser uma solução definitiva para a otimização dos processos de uma empresa. Com ele, torna-se desnecessário atualizar os sistemas para outros mais pesados e complexos. O RPA é uma solução definitiva, que aproveitará todo o legado dos seus sistemas atuais.

Dessa forma, em vez de contratar um ERP que faz tudo, é possível aproveitar a ferramenta de CRM e integrá-la com outros sistemas, sem ter que se preocupar em ter a tecnologia mais recente e mais completa de gestão empresarial. Basta investir em um bom RPA e contratar novos sistemas à medida que uma demanda real surgir.

Seja RPA, chatbots ou tecnologias de planejamento de projetos, cada vez mais empresas estão tentando se preparar para o futuro do trabalho. No local de trabalho, a tecnologia ultrapassada pode prejudicar a retenção e, em um mercado de funcionários, as empresas competirão por expertise, aumentando assim o preço dos salários. Ao criar uma cultura de local de trabalho mais fluida, as empresas estarão em melhor posição para competir a longo prazo.

Saul Vilasboa

Mínimo Produto Viável – MVP

Startups são empresas em fase inicial que desenvolvem produtos ou serviços inovadores, com potencial de rápido crescimento. Neste contexto de empreendedorismo, principalmente abordando o tema startups, temos o conceito de MVP que no português significa Mínimo Produto Viável.

O MVP é a versão mais simples de um produto que pode ser lançado com uma quantidade mínima de esforço e desenvolvimento. Um MVP ajuda os empreendedores a iniciarem um processo de aprendizagem, poupando tempo e esforços.

O MVP pode ser uma das primeiras etapas do processo empreendedor. Eleger um MVP significa observar e coletar dados sobre clientes e criar situações práticas de negócio que façam com que a startup aprenda e se molde rapidamente com o intuito de lançar uma solução inovadora.

A prática ajuda a investir em um produto certeiro, que seja realmente útil para o seu público alvo. Além disso, depois de algum tempo de prática será possível prever os fatos antes que eles aconteçam, lançar novidades antes que seja tarde demais.

Desenvolver um MVP para ideia de negócio não é garantia de sucesso. Eles são projetados para testar as suposições de um problema que queremos resolver sem que haja muitos investimentos. Para tanto, existem alguns tipos de MVP para auxiliar a escolha da estratégia inicial.

 

Tipos de MVP

 

Papel

Podem ser desenhos feitos à mão, de uma interface para usar como protótipo, ou exemplos ilustrados de um projeto. Fáceis de fazer, visuais que criam entendimento compartilhado. Este tipo de MVP possui algumas limitações, a sua interação é limitada e não testa usabilidade ou hipóteses. Alguns exemplos são diagramas ou esboços.

 

Protótipo Interativo

Estes podem ser representados por maquetes interativas, clicáveis. Testa designs e usabilidades, itera soluções rapidamente e ainda usa entrevistas com clientes. Este não testa hipóteses e nem tecnologias de apoio. Exemplos são HTMLs ou maquetes clicáveis, ou ainda vídeos.

 

Concierge

É um serviço pessoal, em vez de um produto, que manualmente guia o cliente pelo processo, usando os mesmos passos propostos para resolver o problema do cliente no produto digital. Reduz a complexidade, suporta pesquisa generativa, valida suposições qualitativamente com baixo investimento. Seus contras são a escalabilidade limitada, é manual e tem uso intensivo de recursos, o cliente sabe do envolvimento humano.

 

Mágico de Oz

Este é o produto real em operação. Apesar de nos bastidores, todas as funções são executadas manualmente sem o conhecimento da pessoa que está usando o produto. Uma solução em operação da perspectiva do cliente, uma pessoa no papel do mágico pode conseguir envolvimentos mais próximos. Possibilita pesquisa de avaliação para preço e validação da proposta de valor. Alguns dos contras podem ser a escalabilidade limitada devido a um alto comprometimento de recursos.

 

Micronicho

Micronicho consiste em reduzir todas as features do produto ao mínimo, a fim de descobrir se os clientes estão interessados ou dispostos a pagar por ele. Um teste altamente focado, dedicado a qualquer tópico específico, exige mínimo esforço. Um dos contras seria a necessidade de investimento financeiro, pois um dos exemplos deste seria a disponibilização de uma página web simples com o produto oferecido.

 

Software em Operação

Como o próprio nome deste MVP já diz, trata-se de oferecer o produto em operação funcionando plenamente para resolver o problema de um cliente, equipado para medir comportamento de cliente e interações. Alguns dos benefícios são testar hipóteses em um ambiente real, valida suposições qualitativamente. Porém este é caro, precisa de investimento em pessoas e ferramentas.

 

Empresas que utilizaram MVP

 

Facebook

A rede social foi testada, inicialmente, para dentro dos muros da Universidade de Harvard. O período em que a rede atingia apenas os alunos da comunidade universitária foi importante para que o jovem Mark promovesse alterações fundamentais, em linha com o que foi se revelando necessário ao longo do processo de validação.

 

Groupon

A primeira versão do Groupon era um site extremamente simples, feito em wordpress e que gerava cupons em pdf, os quais eram enviados de forma manual a cada interessado.

 

Apple

O iPhone 1 era o típico exemplo de MVP. O aparelho não possuía algumas funções básicas, como copiar e colar, além de exigir download obrigatório do iTunes para ativação. O objetivo aqui era claramente segurar algumas funcionalidades para que fossem lançadas nas versões seguintes do equipamento, gerando ansiedade e euforia entre os clientes.

 

Foursquare

Antes de ir a campo, o serviço de localização coletou depoimentos e sugestões de possíveis usuários, por meio do Google Docs, além de disponibilizar uma versão mais restrita do produto a um grupo seleto de futuros clientes.

 

Autor: Giovani Augusto Varaschini

Um pouco sobre Bootstrap

 

 

 

 

 

 

Desenvolva com facilidade e praticidade.

Principal Framework CSS usado em front-end de aplicações web, com seus recursos, tornam o desenvolvimento de páginas mais fácil, páginas que se adaptam a diversos tamanhos de tela.

Conceito

Bootstrap é um conjunto de componentes correlacionados para ajudar a desenvolver interface com o usuário de forma ágil e fácil. Foi criado em agosto de 2011 pelos desenvolvedores do Twitter, Mark Otto e Jacob Thorton. Tem como objetivo central fornecer ao usuário uma facilidade de desenvolvimento de layouts pré-configurados, tanto para questão de produtividade como também da questão da responsividade.

Customização, responsivo e documentação são as principais características do Bootstrap. Pois a customização é rápida e fácil, responsividade torna o site mais responsivo e a documentação conforme o site do desenvolvedor, mostra que é bem simples e prático de aprender tornando a implementação fácil. Geralmente usado em frond-end, mas atualmente é utilizado em back-end, pois suas ferramentas visuais tornam o visual dos projetos avançados mais aperfeiçoado. Dessa forma, o usuário fica mais familiarizado com o sistema.

Incluso em seu conjunto de recursos, se encontram o HTML 5, CSS 3, Jquery, Node, JavaScript, Ajax. Dessa forma, ao baixar o pacote Bootstrap, não será mais preciso baixar os plug-ins do Jquery por exemplo, pois já faz parte do pacote do Bootstrap.

Rápido

Bootstrap é rápido por quatro motivos:

  1. Seus arquivos tem um tamanho bem pequeno.
    1. js tem no máximo 83kb;
    2. css tem no máximo 98kb
    3. webfont tem no máximo 144kb.
  2. Carrega só o que precisa, somente o que for utilizado no projeto.
  3. Escrever menos código, não precisará definir todo o layout do formulário, pois irá usar classes pré-definidas e melhorar o layout do formulário sem precisar codificar mais nada por exemplo.
  4. Utiliza o sistema de Grids, principal enfoco do Bootstrap, por causa das 12 colunas que se trabalha de forma dinamizada da ferramenta.

 Fases do Bootstrap:

  • Versão 1 – Somente disposto para facilitar o desenvolvimento para desktops. Não tinha os conceitos ligados a responsividade de acordo com outros dispositivos, exemplo tablets, smartphones.
  • Versão 2 – Desenvolvimento para desktop com adaptação para tablete e por fim smartphones. Foi implementado a responsividade para dispositivos móveis.
  • Versão 3 – Surgiu o conceito de mobile first, que é justamente a questão da responsividade inicial para mobile para posteriormente adaptação dos desktops. Inverso da segunda versão.
  • Versão 4 – Realizado a mudança do modelo Less para o Sass, deixando a compilação mais rápida. Fim do suporte para IE8 e lançamento do Bootstrap themes.

Sistema de grade (Grids System) é responsivel e permite até 12 colunas através da página. Tem 4 tipos de classes, dependendo do dispositivo e pode ser ntegrado com outro para criar layouts flexíveis. O layout de sites que são visualizados tanto em navegadores de desktops ou mobile, são de extrema importância, pois o uso das grids, tem o papel de ajustar o layout conforme o tamanho da tela. Assim, tornando sistemas de grade útil.

Bootstrap fornece ferramentas para a construção de sites e aplicações modernas, agregando recursos dinâmicos. Sendo uma ferramenta gratuita e de fácil acesso, vale muito a pena o uso de Bootstrap em projetos mais avançados.

Autor Douglas Beux
Fontes:
Baseado em http://www.ericplatas.com.br/artigos/introducao-bootstrap-framework/.
Adaptado de https://imasters.com.br/design-ux/design-responsivo/7-razoes-para-desenvolver-seus-web-designs-no-bootstrap/?trace=1519021197&source=single.
Adaptado de https://www.youtube.com/watch?v=0o2GWZ0uUeY&t=1839s.

Extração de dados de equipamentos em tempo real

O que é extração de dados em tempo real?

A extração de dados em tempo real é um processo realizado para captura dados de equipamentos de hardware com objetivo de empregar em aplicações de software especificas. Frequentemente utilizado em aplicações direcionadas a IoT (Internet das coisas) a extração de dados em tempo real tem algumas limitações, empregada de forma correta a extração pode se torna uma forte ferramenta para o desenvolvimento de diversas aplicações com foco em automação e controle.

A extração de dados em tempo real

O processo de extração de dados é utilizado com objetivo de reduzir o tempo e tornar mais assertivo o processo de monitoramento e utilização de dados. Por exemplo, um sistema que tem como objetivo realizar o controle de um processo industrial recebe com um frequência “x” uma informação referente ao processo que é inserida por um usuário passível de erro, essa informação gera um dado no sistema, se o mesmo sistema pudesse realizar a consulta da mesma informação no tempo em que ela foi gerada o sistema eliminaria o risco de erro durante esse pequeno processo, considerando que esse processo é realizado com frequência o tempo que usuário insere a informação reflete no tempo do monitoramento do dado, enquanto a coleta em tempo real diminui em grande parte esse tempo.

Como é realizada a coleta em tempo real

O sistema embarcado compatível com captura de dados em tempo real realiza a leitura dos sensores e se comunica com a aplicação, informando os dados capturados pelos sensores para utilização na aplicação.

Exemplos de utilização de captura de dados em tempo real.

  • Aplicativos de comunicação com computador de bordo do carro;
  • Centros de monitoramento de processos Industriais;
  • Identificação por radiofrequência RFID;
  • Sistemas de automação residencial;

Algumas vantagens na utilização de captura de dados em tempo real.

  • Elimina falhas humanas;
  • Agiliza e torna mais assertivo o processo;
  • Reduz os custos dos processos;
  • Aumenta a produtividade;

 

Autor: Tiago Spadetto dos Santos

Referências

KING ROGERS, Lorie. Data capture basics: Data capture technology can help an operation see its products in real time and take proactive steps to keep materials moving smoothly through the supply chain. Here’s a look at several basic data capture technologies.. 1. Disponível em: <https://www.mmh.com/images/site/MMH1110_EquipReport_Data.pdf>. Acesso em: 27 abr. 2018.

DO BRASIL, GE. Análise de dados e máquinas conectadas: conheça o centro de monitoramento da GE Water & Process Technologies! 1. Disponível em: <https://gereportsbrasil.com.br/análise-de-dados-e-máquinas-conectadas-conheça-o-centro-de-monitoramento-da-ge-water-process-6c4f79399132>. Acesso em: 20 abr. 2018.

O que é, onde aplicar e quais as vantagens da Linguagem R

 

R e os Carros

Você já foi impactado pela notícia de que os dados são o novo petróleo? Você já sabe que a Ciência de Dados é dita como a profissão mais sexy do século? Pois bem, para analisar os dados o Cientista de Dados se vale de diversas ferramentas. Este artigo tem a finalidade de apresentar uma destas ferramentas: a Linguagem R.

O que é o R?

R se presta a diversas funções, desde uma calculadora científica, até a realização de complexas análises estatísticas. Além disso, o R também apresenta uma série de recursos para plotagem de gráficos, como personalização de: cor, tipo e tamanho de letra, símbolos, títulos e subtítulos, pontos, linhas, legendas, planos de fundo e muito mais. Mais que um software que realiza análises estatísticas, R é um ambiente e uma linguagem de programação orientada a objeto. Nele, números, vetores, matrizes, arrays, data frames e listas podem ficar armazenados em objetos.

Origens

S é a linguagem que foi desenvolvida por John Chambers nos laboratórios da Bell Labs. S foi inicialmente desenvolvida em 1976 como um ambiente de análise estatística, originalmente implementada usando bibliotecas da linguagem de programação Fortran. Entretanto, as primeiras versões da linguagem não continham funções de modelagem estatística.
Entender a filosofia da linguagem S, ajuda a entender as raízes que geraram a linguagem R. O fator mais importante a notar, é que a linguagem S nasceu como uma ferramenta de análise de dados e não como uma linguagem de programação tradicional. Os inventores de S tinham como objetivo tornar a análise de dados mais fácil, inicialmente para eles e então para os outros.

A linguagem R surgiu um pouco depois da linguagem S. Uma das limitações de S era o fato da linguagem estar disponível apenas através do pacote comercial S-PLUS. Em 1991, R foi criada por Ross Ihaka e Robert Gentleman no Departamento de Estatística da Universidade de Auckland. Em 1993 a linguagem R foi anunciada em público pela primeira vez. Em 1995, Martin Mahler fez uma importante contribuição, convencendo Ross e Robert a usarem a licença GNU General Public e tornar R um software livre. Isso permitiu que o código fonte da linguagem R se tornasse disponível para toda a comunidade. Em 1996 as listas públicas R-help e R-devel foram criadas e em 1997 foi formado o grupo R Core, com profissionais associados ao S e S-PLUS, estatísticos e cientistas da computação. Atualmente o grupo R Core controla o código fonte de R. Em 2000, finalmente a versão 1.0.0 do R foi liberada ao público.

Funções da Linguagem R

60% do tempo de um Cientista de Dados é usado no processo de limpeza, transformação e organização dos dados, ou seja, na manipulação. Analisar grandes conjuntos de dados, agrupá-los, aplicar modelos estatísticos, importar/exportar os dados para bancos de dados relacionais, tudo isso pode ser feito com R. A linguagem pode ser usada em todo o processo analítico, desde a coleta de dados, passando pela manipulação, Machine Learning, até a apresentação dos dados com a criação de gráficos a partir dos resultados das análises de dados.

Aplicações

A linguagem R pode ser aplicada nas mais diversas áreas, tais como: Pesquisa Científica, Business Analytics, Desenvolvimento de Software, Relatórios Estatísticos, Análise Financeira, Ciência Sociais e Big Data Analytics.

Autor: Diego Ribeiro

Artigo baseado em materiais do curso e no blog da Data Science Academy.

Comunicando com sistemas embarcados

Se você já precisou integrar sistemas embarcados com aplicação de terceiros, servidores e banco de dados, a primeira idéia que vem naturalmente é o uso de WebService. Imagine agora, como isso era feito na época que não existia essa tecnologia, e dessa forma você poderá ter uma pequena dimensão do impacto gerado por ela no mundo da automação e dos sistemas embarcados.

O presente artigo objetiva uma breve abordagem sobre o conceito da tecnologia WebService e como está tecnologia de comunicação entre sistemas teve profundos impactos no desenvolvimento e na integração sistemas embarcados.

Como fazer?

Na base de tudo está a Internet, sem ela seria impossível o surgimento da tecnologia WebService. Basicamente o WebService faz com que os recursos de uma determinada aplicação possam estar disponíveis sobre a rede de forma padronizada, desta forma uma aplicação pode invocar outra para executar tarefas que podem ser simples ou complexas, mesmo que as duas sejam escritas em linguagens diferentes.

O principal motivo que torna o WebService tão atraente é o fato que utiliza tecnologias padronizadas como o protocolo HTTP/HTTPS para transporte de dados, os quais são transferidos sobre XML encapsulados no protocolo SOAP (Simple Object Access Protocol). Também é muito comum a utilização do protocolo REST (Representational transfer protocol) como protocolo de transferência, neste caso os dados são encapsulados em notação JSON que é mais leve que o XML.

Na maioria dos casos, os grandes fabricantes de hardware embarcado já provem um WebService que abstrai todas as funções de baixo nível de comunicação, assim o desenvolvedor somente deve acessar uma url fornecida pelo fabricante com os métodos disponíveis para enviar e receber dados ao equipamento.

Uso de padrões facilita muito a vida

Além dos grandes fabricantes de hardware, também existem empresas especializadas em conectividade, que fornecem softwares com protocolos específicos para centenas de equipamentos de diferentes fabricantes. Estes sistemas normalmente são divididos em três camadas, conforme mostra a figura abaixo.

Figura 1

A primeira camada concentra os drivers proprietários de cada fabricante que efetivamente fazem a comunicação funcionar. Esta é a camada de mais baixo nível que é totalmente abstraída ao usuário final da informação.

A segunda camada é uma seríe de serviços que rodam em nível servidor e compreendem normalmente os padrões OPC-DA e IoT, ambos os padrões fornecem uma normatização de como a informação será coletada ,armazenada e disponibilizada para a camada superior.

A terceira e última camada fornece as interfaces para comunicação com aplicação de terceiros, normalmente uma API REST que o cliente pode consumir para transferir e receber dados dos sistemas embarcados.

Agora que entendemos um pouco mais sobre as bases sob as quais a tecnologia foi desenvolvida, podemos considerar que qualquer sistema embarcado que possua uma conexão  Ethernet é capaz de enviar e receber dados através de um WebService. Portanto, a construção de penosas rotinas proprietárias de difícil manutenção e atualização tornaram-se praticamente obsoleta nos dias atuais.

Autor: Alex Sandro Meireles Da Cruz

Links relacionados:

 http://mqtt.org

https://opcfoundation.org

https://www.kepware.com

O que é e quais os impactos da Computação Quântica

A Computação Quântica, sendo desenvolvida com base nos princípios da Mecânica Quântica, tem como seu principal objetivo o desenvolvimento do computador quântico, ferramenta que será utilizada no processamento de informações computacionais muito complexas, buscas de informações em bases de dados muito grandes, auxiliar no desenvolvimento de inteligência artificial, e outros processos computacionais aplicáveis. A necessidade do desenvolvimento desta tecnologia surgiu após a identificação de um limite no aprimoramento do desempenho de dispositivos computacionais no cenário da computação atual, o que poderia no futuro restringir o desenvolvimento de novas tecnologias que dependem de um poder de processamento significativo.

Principais diferenças entre Computação Tradicional e Computação Quântica

Na computação baseada na arquitetura de Von Neumann atualmente utilizada por computadores, dispositivos móveis, servidores, e diversos outros dispositivos, a unidade de informação básica é o bit, que pode ser ‘0’ ou ‘1’ a qualquer momento, isto é relacionado aos componentes transistores de um processador que podem estar ligados (‘1’) ou desligados (‘0’) e permite a comunicação do hardware e software. Desta forma na computação tradicional existem apenas duas possibilidades para um dado e qualquer informação produzida será uma combinação destes ‘0’ ou ‘1’.

Contudo na computação quântica a unidade de informação básica é o Bit Quântico ou qubit, que além de poder assumir o estado de ‘0’ ou ‘1’, pode assumir ambos estados ao mesmo tempo graças a propriedade quântica de sobreposição, não se trabalhando mais com transistores, e sim com partículas de átomos como fótons ou elétrons. Para entendimento deste artigo podemos considerar que a propriedade de sobreposição determina que: Até que seja observada ou interagida com o mundo real, uma partícula pode assumir dois estados ao mesmo tempo, ou seja, neste caso ela poderia ser tanto ‘0’ como ‘1’. Porém para entender um pouco mais sobre este assunto busque informações sobre o paradoxo Schrödinger’s cat, também conhecido como o gato de Schrödinger.

Esta habilidade do qubit possuir três valores distintos e o fato de se trabalhar com partículas de átomos, tornam a Computação Quântica muitas vezes mais rápida que a computação tradicional para o processamento de cálculos quânticos e tarefas extremamente complexas como a realização de simulações de moléculas.

Principais impactos da aplicação da Computação Quântica

Abaixo será listado o impacto da Computação Quântica em apenas algumas áreas, porém existem diversas outras áreas que serão afetadas. Adicionalmente especialistas acreditam que com a constante evolução da Computação Quântica, o tamanho do impacto em diferentes áreas dependentes de computação deve aumentar significativamente.

Saúde e Medicina

A Computação Quântica teoricamente facilitará a analise de informações genéticas de pacientes, fornecendo maiores informações para possíveis tratamentos, sendo possivelmente aplicada juntamente com uma Inteligência Artificial para melhorar a eficácia de diagnósticos. Possuindo possível aplicação também no uso de radioterapias para calcular a dose correta de radiação a ser utilizada.

Será possível aplicar a computação quântica em maior escala para o desenvolvimento de novos medicamentos e pesquisa de novos tratamentos, pois computadores tradicionais não são capazes de efetivamente simular completamente determinadas moléculas devido a quantidade de processamento necessária, porém computadores quânticos teoricamente cumprirão esta tarefa efetivamente, auxiliando pesquisadores no entendimento de compostos essenciais a vida, e outros conceitos extremamente importantes para o desenvolvimento de medicamentos como a compreensão do enovelamento de proteínas, bem como a simulação da reação de diversas moléculas em nível atômico.

Machine Learning e Inteligência Artificial

Um dos principais requisitos para o desenvolvimento de inteligência artificial é concentrado em Machine Learning, ou “Aprendizado de Máquina”, que em sua grande parte é utilizar algoritmos em grandes conjuntos de dados para efetuar o reconhecimento de padrões. Com o aumento de poder computacional oferecido pela Computação Quântica será possível comparar conjuntos ainda maiores de dados ainda mais efetivamente, acelerando o processo de Machine Learning e o desenvolvimento de inteligência artificial.

Criptografia

Com os recentes avanços em Computação Quântica, especialistas da área de segurança já estão pesquisando e desenvolvendo novos algoritmos de criptografia chamados de “quantum-proof, quantum-safe ou quantum-resistant”, pois existe um consenso nesta área que computadores quânticos suficientemente grandes poderão quebrar qualquer algoritmo de criptografia de chave pública utilizado atualmente utilizando o algoritmo de Shor.

Porem atualmente não há a necessidade de se preocupar com seus dados, pois os computadores quânticos atualmente construídos ainda não possuem o poder de processamento necessário para efetivamente efetuar esta quebra. Adicionalmente algoritmos de criptografia de chaves simétricas e funções de hash ainda são considerados relativamente seguros contra a computação quântica.

Principais desafios da Computação Quântica

Um dos principais desafios atuais da computação quântica é a preservação da informação quântica, ou seja, garantir que o estado desta informação seja preservado e que ela não sofra alterações indesejadas, como por exemplo possuir seu valor alterado. A empresa D-Wave, fabricante de uma linha de computadores quânticos, conseguiu obter sucesso neste requisito através de um sistema de refrigeração que mantém o processador em um ambiente de -273ºC, combinando isto com múltiplas camadas de blindagem magnética. Adicionalmente existe ainda uma certa dificuldade em trabalhar com Computação Quântica devido a sua inerente complexidade, fazendo-se necessário o uso de algoritmos específicos para computação quântica, o que no presente momento em grande parte dos casos ainda não oferece vantagens significativas em relação a computação tradicional.

Outro problema que vale destaque é o preço de desenvolvimento de computadores quânticos, pois são extremamente caros em sua construção. Contudo empresas como Google já estão experimentando trabalhar com esta tecnologia, e a IBM atualmente disponibiliza um serviço experimental de Computação Quântica na nuvem contando com um processador quântico de 20 qubits.

O fim da computação tradicional?

Um dos maiores mitos existentes sobre a computação quântica é que ela irá substituir completamente a computação tradicional, porém especialistas garantem que isto não é o caso em qualquer realidade próxima. O consenso atual de pesquisadores da computação quântica é que ela será utilizada principalmente em grandes aplicações em nuvem e em laboratórios de pesquisa onde suas grandes vantagens sobre a computação tradicional podem ser efetivamente aplicadas. Para o dia-a-dia de usuários a computação tradicional ainda será superior tanto em termos de custo, quanto em desempenho.

Autor: Marcos P. Garbin

IA aplicada a conhecer o perfil do usuário

A Inteligência Artificial está relacionada à capacidade das máquinas pensarem como seres humanos, de terem o poder de aprender, raciocinar, perceber, deliberar e decidir de forma racional e inteligente. Mas como funciona a inteligência artificial e como ela pode nos ajudar a conhecer o perfil de um usuário em uma aplicação.

Ao pegarmos o smartphone já é possível ver o que a IA pode fazer pelo usuário, no entanto por trás de cada recomendação personalizada, até resultados de pesquisa relevantes, existe uma combinação de tecnologias que fazem a inteligência artificial funcionar, e que estão, por consequência fazendo com que você tenha expectativas mais altas sobre todas as máquinas inteligentes e dispositivos que usa.

As tecnologias por trás da IA

Por trás da IA existem várias tecnologias e conceitos utilizados para realizar o processamento dos dados de forma que tragam o resultado esperado conforme as entradas informadas.

  • Machine Learning: A definição de aprendizado de máquina envolve utilizar-se o mínimo de programação usando dados para aprender. Em vez de programar regras para um máquina e esperar o resultado, com machine learning, conseguimos deixar que a máquina aprenda essas regras por conta própria a partir dos dados alimentados.
  • Deep Learning: Envolve algoritmos mais complexos para imitar nas máquinas a rede neural do cérebro humano e aprender uma área do conhecimento com pouco ou nenhuma supervisão.
  • Processamento de Linguagem Natural: O processamento de linguagem natural utiliza-se do machine learning para encontrar padrões em grandes conjuntos de dados puros e reconhecer a linguagem natural. Um dos exemplos de aplicação do PLN é a análise de sentimento, onde os algoritmos podem processar padrões em postagens de rede sociais para compreender como os clientes se sentem em relação a marcas e produtos específicos.
  • Análise Preditiva: A análise preditiva é uma área avançada em analytics que utiliza dados históricos e algoritmos de Machine Learning para fazer previsões sobre eventos futuros desconhecidos e identificar a probabilidade de resultado.
  • Big Data: Podemos entender como grande quantidades de informações, estruturadas ou não, que são a base para determinar padrões e fazer previsões. É o que alimenta a inteligência artificial e os processos de machine learning, deep learning e PLN.

Redes Neurais Artificiais

O cérebro humano possui cerca de 10 bilhões de neurônios. Um neurônio é capaz de criar até 10.000 sinapses com outros neurônios. Se cada ligação for considerada como um bit de informação binária, tem-se 100 trilhões de bits que corresponde a 11,37 Tb de capacidade máxima de memória.

A maior virtude das redes neurais é a capacidade de aprender a partir dos dados de entrada com ou sem um professor. Esta habilidade tem tornado o uso de algoritmos de redes neurais cada vez mais frequentes.

Figura 1 – Representação de um neurônio biológico

Os principais componentes dos neurônios biológicos são:

  • Os dendritos, que têm por função receber os estímulos transmitidos pelos outros neurônios;
  • O corpo do neurônio, também chamado de soma, que é responsável por coletar e combinar informações vindas de outros neurônios;
  • O axônio, que é constituído de uma fibra tubular que pode alcançar até alguns metros e é responsável por transmitir os estímulos para outras células.

No cérebro humano os sinais gerados caminham pelos axônios. Se esses sinais forem superiores a aproximadamente 50 mV (limiar do disparo), seguem pelo axônio. Caso contrário, são bloqueados e não prosseguem (são considerados irrelevantes). Estes sinais na forma de pulsos, caminham pelo axônio a uma velocidade média de 25 m/s. Não é uma corrente eletrônica, mas uma corrente de íons de sódio e potássio. Antes de um sinal entrar no próximo neurônio, deve passar por uma sinapse, que é o processo de ligação entre o axônio e o dendrito. Se este sinal for superior a certo limite, vai em frente, caso contrário é bloqueado e não segue.

Um neurônio recebe sinais através de inúmeros dendritos, os quais são ponderados e enviados para o axônio, podendo ou não seguir adiante. Na passagem por um neurônio, um sinal pode ser amplificado ou atenuado, dependendo do dendrito de origem, pois a cada condutor está associado um peso pelo qual o sinal é multiplicado, estes pesos são a memória.

Os valores dos pesos são estabelecidos por meio do treinamento recebido pelo cérebro durante sua vida útil, ou seja a memorização.

Figura 2 – Representação de um neurônio artificial.

O neurônio matemático, similar ao natural, recebe um ou mais sinais de entrada e devolve um único sinal de saída, que pode ser distribuído como sinal de saída da rede, ou como sinal de entrada para um ou vários outros neurônios da camada superior.

Uma rede neural aprende acerca de seu ambiente por meio de um processo iterativo de ajustes aplicados aos seus parâmetros livres (pesos sinápticos e níveis de bias). A este processo denomina-se de treinamento. Depois de treinada a rede pode ser utilizada em diversas áreas do conhecimento humano, ainda que na ausência de um especialista.

Treinamento

O algoritmo de aprendizagem é escolhido em função do tipo de rede utilizada e das características dos dados que serão a ajustados. Entretanto, o processo é basicamente empírico. Nesta fase, serão ajustados os pesos das conexões. A tarefa do projetista, então, será a determinação dos valores iniciais dos pesos sinápticos, qual o algoritmo de aprendizagem e qual o tempo de treinamento para o aprendizado da rede. O algoritmo de aprendizagem é escolhido em função do tipo de rede utilizada e das características do dados que serão ajustados. Entretanto, o processo é basicamente empírico.

Teste

Durante esta fase, o conjunto de validação é utilizado para determinar o desempenho da rede com dados que não foram apresentados à mesma. Esta fase é a que verifica se a rede não decorou os dados de entrada e válida a rede para a aplicação desejada.

Perceptron

O perceptron é a arquitetura mais simples, apresentando apenas um conjunto de neurônios de entrada e um conjunto de neurônios de saída, sem haver nenhuma camada de neurônios intermediária. Este tipo de rede neural, embora simples, apresenta problemas específicos, não podendo ser utilizada em aplicações mais avançadas. No entanto para exemplificar será utilizado esta arquitetura.

Cases

No entanto a ideia a ser passada aqui, é que a Inteligência Artificial não é um sistema pronto onde simplesmente solicitamos as saídas necessárias, e sim um sistema complexo onde existe a necessidade de coleta de informações e conhecimento, criação de uma base de dados, treinamento da inteligência artificial que será utilizada para retornar os resultados esperado.

A Inteligência Artificial pode ser aplicada para que seja possível o reconhecimento do perfil de usuários, desde que utilizado uma base de conhecimento, um algoritmo de rede neural onde pode-se efetuar o treinamento dos dados que correspondem a um perfil e a partir daí a rede neural poderia classificar e reconhecer os usuários com ou sem a supervisão de uma pessoa.

A Inteligência Artificial está presente em nosso dia a dia:

  • Aplicações como a Siri utilizam processamento de voz para atuar como assistente pessoal;
  • O Facebook utiliza o reconhecimento de imagem para recomendar marcações em fotos;
  • A Amazon faz recomendação personalizada de produtos utilizando algoritmos de aprendizado de máquina;
  • O Waze prevê as melhores rotas a partir da sua localização com apenas um clique, enquanto carros com piloto automático usam as técnicas de IA para evitar engarrafamentos e colisões;
  • O Google consegue preencher automaticamente as buscas utilizando recursos de inteligência artificial e também prever o que você quer pesquisar com grande precisão.

Outro exemplo interessante é o caso da Netflix que se preocupa bastante com o conteúdo que deve ser sugerido para os seus assinantes. A Netflix sempre manteve o olhar nos algoritmos para gerar conteúdos relevantes, baseados nas preferências de seus usuários e, sobretudo, em ambientes externos, como no caso das redes sociais. Outra métrica usada para direcionar as produções é o estudo do comportamento dos usuários. Ou seja, quantas vezes eles pausam o vídeo, voltam ou mesmo assistem a vários episódios sequencialmente, em um determinado período. E, o quanto este comportamento reflete nas menções nas redes sociais.

O Waze por exemplo, é utilizado por motoristas do mundo inteiro, que se conectam uns aos outros e trabalham juntos para aperfeiçoar sua experiências ao dirigir. Para que o Waze possa fornecer a você com precisão a rota ou mais rápida ou mais curta, de acordo com suas configurações, ele necessita de dados precisos de todos os segmentos e rotas vizinhas. O Waze coleta os dados de cada trecho dirigido com o aplicativo aberto. Na próxima vez que uma via específica for percorrida, o Waze saberá como comparar os dados entre cada rota e saberá sugerir a rota ideal, conforme suas preferências.

Autor: Ramon Barros <contato [@] ramon-barros.com>

Referências:

Livro Inteligência Artificial – Noções Gerais. – 3 imp. / Anita Maria da Rocha Fernandes. – Florianópolis: VisualBooks, 2005.

Livro Redes Neurais: Fundamentos e Aplicações com Programas em C. / Ludwig Jr., O. e Costa, Eduard Montgomery M. Rio de Janeiro: Editora Ciência Moderna Ltda. 2007.

https://www.salesforce.com/br/products/einstein/ai-deep-dive/

https://www.youtube.com/watch?v=kMFY_XOQTDg

https://tecnoblog.net/191786/netflix-algoritmo-recomendacoes/

http://revistagalileu.globo.com/Revista/Common/0,,EMI334328-17773,00-ELES+SABEM+O+QUE+VOCE+QUER+VER.html

https://www.techtudo.com.br/noticias/2017/08/como-a-netflix-usa-algoritmos-para-encontrar-a-sua-nova-serie-perfeita.ghtml

http://www.meioemensagem.com.br/home/midia/2016/08/02/stranger-things-e-o-uso-de-algoritmos-pela-netflix.html

https://www.infoescola.com/sistema-nervoso/neuronios/

http://www.gsigma.ufsc.br/~popov/aulas/rna/neuronio_artificial/index.html

Análise de dados: como priorizar as informações mais importantes?

Seja pelo escândalo do Facebook e Cambridge Analytica, pelo nosso mapa traçado detalhadamente pelo Google Maps, ou simples sugestões de compras relacionadas em um e-commerce. Nós temos nossos dados coletados e analisados diariamente usando para o bem, e inevitavelmente, para o mal.

Produzimos uma infinidade de dados, diariamente, deixando cliques e rastros de navegação em todo o universo online. Se observados isoladamente, esses dados podem parecer irrelevantes. Mas através de conceitos da Inteligência Artificial como Machine Learning e outros métodos para a análise de dados, eles já se tornaram um divisor de águas para o avanço do conhecimento em todas as áreas de nossa sociedade. Desde a medicina até à música, do Facebook ao mundo real.

BIG TRASH DATA:

Big data é lixo. Sim, é lixo como aquele pedaço de carne sobrado que vai pro lixo pois não sabemos como reutiliza-lo e fazer um delicioso carreteiro, por exemplo.
Sem metáforas, big data nada mais é do que toda a informação que recebemos mas que involuntariamente deixamos passar, pois não temos capacidade de processá-la e armazená-la no nosso cérebro. Mas a diferença, é que no mundo digital, toda essa informação que produzimos, fica armazenado, e se analisada com atenção, pode ser o estopim para uma revolução na inovação mundial. Desde a sugestão de publicações no Facebook até a descoberta de cura para diversas doenças.

ANALISAR. MAS O QUE ANALISAR?

Quem procura, acha. Mas precisamos saber o que procurar.
Na visão de Steven D. Levitt (Freaknomics), “a economia é uma ciência com instrumentos para chegar a respostas, mas sofre uma tremenda escassez de perguntas interessantes”. O grande sucesso para criarmos relevância em qualquer pesquisa é saber o que realmente queremos saber(!). E para saber, precisamos viver. Entender o contexto do que queremos fazer é essencial, precisamos vivenciar o universo que a pesquisa se baseará, entender o mecanismo e refletir, para então, criarmos as perguntas certeiras e respondê-las através de dados.
Economia de tempo nem sempre é gastar menos tempo.

AFINAL, O QUE É ECONOMIA?

Muitas vezes, pensamos em economia e logo nos vem à mente inflação, taxa de juros, cotação do dólar. Mas a verdade é que a economia vai muito além disso. Ela não se baseia apenas em números, mas sim em comportamento. Ela pode responder perguntas como: “o que mata mais, armas ou piscinas?”, “crianças que têm livros em casa têm desempenho melhor que as outras?”. Para isso, precisamos mergulhar no universo de nossas perguntas e conhecer o contexto.

CAUSALIDADE x CORRELAÇÃO:

Este é um ponto crucial na análise de dados. Precisamos tomar cuidado com nossas análises para não confundirmos causalidade com correlação.

Mas afinal, o que é causalidade e correlação? Correlação é a relação ou semelhança entre duas coisas. Apenas isso. Nem toda correlação acarreta em uma causalidade. Sabe por que? A causalidade requer que, por exemplo, a variável X seja causa da variável Y, e a variável Y é consequência da variável X. Ou vice-versa.

Temos o clássico exemplo da correlação de que “no verão, as mortes por afogamento crescem de acordo com a elevação no número de consumo de sorvete”. Quantos pais não se preocuparam e alertavam os filhos para nã tomarem sorvete na beira da piscina? Essa correlação existe, e realmente no verão, o número de mortes por afogamento aumenta e a venda de sorvetes também. Mas não existe causalidade. Uma coisa não causa a outra. No verão, as pessoas vão mais à piscinas e também tomam mais sorvete. Mas o que mata não é o sorvete, é o nado. A causalidade é o aumento da temperatura.

 

Portanto, a análise de dados é um processo tão simples de ser absorvido, porém complexos de se fazer. Não pelo domínio técnico nem nada, mas sim pela imersão no universo a ser analisado, a fim de obtermos as melhores perguntas e utilizar a análise como meio para obtermos as respostas.

Raphael Chieli Capellari.
Links relacionados: Freaknomics – Ed. Campus -12/04/2005

A importância do mapeamento de processos nas organizações

Somente no mapeamento de processos conseguimos definir visivelmente as falhas, pois assim fica muito mais fácil instituir a melhoria contínua e realizar os ajustes quando necessário. Podemos também identificar os gargalos, demilitar os responsáveis pelas etapas, atividade, processo, estimar os recursos necessários, mão de obra, insumos e estimar tempo de produção. Podemos também definir os padrões dos procedimentos da gestão e do operacional, checklists, definir e revisar funções, responsabilidades e autoridades, definir as atividades que necessitam registro criando formulários padrões, eliminar o re-trabalho para otimizar o tempo disposto. Continue lendo “A importância do mapeamento de processos nas organizações”