Postagens

Refatorando códigos existentes

Imagem
          Dentre os termos frequentemente utilizados em desenvolvimento de software, “refatoração” é usado na maioria das vezes de forma flexível, sendo utilizado para se referir a qualquer tipo de limpeza no código. Recorrendo a um especialista, de acordo com a definição presente no livro “Refactoring” do Martin Fowler, percebemos que a definição de refatoração vai além, segue definição:   “Refatoração (substantivo): uma modificação feita na estrutura interna do software para deixa-lo mais fácil de compreender e menos custoso para alterar, sem que seu comportamento observável seja alterado.” (Fowler, 2020)                 A definição acima aponta para uma abordagem muito mais abrangente que uma limpeza, podendo ser vista como uma “reestruturação” e estando totalmente ligada à aplicação de pequenos passos que não modificam o comportamento observável da aplicação. E é a soma de...

Big O Notation

Imagem
              Imagine que esteja escrevendo uma nova função. Agora imagine que você existam várias formas de implementar uma mesma função. Como determinar qual a melhor forma? Por exemplo, para escrever uma função que recebe uma string e retorna uma cópia da mesma de trás para frente. Existem várias abordagens e soluções diferentes. Daí você pode pensar: “Quem se importa desde que funcione?” . Porém quando estamos falando de grandes quantidades de dados ou softwares para dispositivos IoT com menor poder de processamento, performance pode poupar tempo e melhorar a qualidade significativamente. Portanto, é importante possuirmos um vocabulário para comparar e falar sobre a performance de nossos códigos. Outro ponto é que quando o nosso código se torna lento ou quebra, saber identificar as partes do código que podem ser ineficientes nos ajudam a resolver o problema.              ...

Recursão

Imagem
A recursão é um método de resolução de problemas onde o dividimos em subproblemas menores até chegar a um problema pequeno suficiente para ser resolvido de forma trivial. Ocorre quando uma função ou um algoritmo se refere a si mesmo. Um exemplo seria por exemplo buscar uma palavra em um dicionário, no caso a palavra ‘casa’. Podemos escrever um algoritmo para realizar essa pesquisa: 1                     Pegue o dicionário 2                     Abra na página do meio do dicionário 3                     Olhe para a página 4                     Se ‘casa’ estiver na página 5     ...

O poder do JavaScript

Imagem
                Frequentemente abreviado como JS, o JavaScript é uma linguagem de programação que permite implementar funcionalidades complexas em páginas web. Quase todas as vezes que você leitor acessa uma página na web que não é estática e que mostra em tempo real conteúdos atualizados, animações, vídeos, mapas e outros está, muito provavelmente, visualizando um conteúdo que contém JavaScript. Originalmente a linguagem foi implementada como parte dos navegadores web para que os scripts que controlam os comportamentos das páginas HTML pudessem ser executados do lado do cliente, sendo atualmente a principal linguagem de programação client-side em navegadores web, mas não está restrita ao client-side. Com a criação e a propagação do NodeJS, o JavaScript têm sido bastante utilizado também do lado do servidor também. [1] De acordo com sua definição, o JavaScript é uma linguagem de programação leve, interpretada,  multi-paradigma e din...

TUTORIAL: Criando WinCC Tags a partir de documentos de texto utilizando script em Python

Imagem
Imagine que em um projeto no WinCC Professional você precise criar muitas tags para cada um dos componentes do seu sistema SCADA. Agora imagine que essas tags sejam, por exemplo, referentes a diferentes motores e que seguem uma estrutura padrão tal como cada motor possui uma tag de referência, uma tag de input, uma de output, uma referente ao painel onde o motor está ligado, uma tag de descrição e uma tag somando o tempo que o motor esteve ligado.   Dependendo da quantidade de motores, criar essas tags pode ser uma atividade repetitiva que demanda algumas horas. Imagine agora que possui as descrições de cada um dos motores em um documento Word em forma de pequenas tabelas. E se fosse possível apenas selecionar toda a tebela Word, apertar as teclas Ctrl + C aplicar um comando e todas as tags simplesmente aparecessem em uma tabela Excel pronta para ser importada no WinCC? Parece mágica, mas é perfeitamente possível, vai economizar tempo de desenvolvimento e vou mostrar uma forma ...

Do MES (Manufactoring Execution Systems) ao MOM

Imagem
           No início dos anos 90 as indústrias reconheceram a necessidade de uma camada que fosse capaz de integrar os níveis de negócios e de controle. Desde o início, o termo MES que corresponde à sigla em inglês “Manufactoring Execution Systems”, vem sendo utilizado para especificar os produtos e funções que satisfazem essa necessidade.                Neste contexto, o MES englobava uma área onde a grande maioria dos produtos não poderia ser identificada de forma clara às camadas de negócios ou de controle, sendo em sua maioria composta por aplicações desenvolvidas por um integrador de sistemas para um cliente em particular e geralmente focado em algo específico como agendamento, rastreamento ou qualidade. Isso tornava a integração difícil, demorada e cara. (Siemens, 2018)        Outros problemas eram as diferentes terminologias e linguagens técnicas, cul...

ESP8266, um forte aliado de projetos IoT

Imagem
            O ESP8266 é um microcontrolador produzido pela fabricante chinesa Espressif e possui a capacidade de comunicação por Wi-Fi. Trata-se de um módulo com placa de circuito impresso e antena na placa. Um dos principais motivos de seu sucesso é o preço, pode ser comprado em sites chineses por cerca de 3 dólares, pronto para uso. Isso o torna uma ótima escolha para aplicações de baixo custo sendo amplamente utilizado em aplicações IoT, podendo realizar comunicação MQTT (publish/subscribe), WebServer, comunicação com banco de dados, comunicação com a nuvem e muitas outras aplicações.             O módulo pode ser programado em três ambientes de desenvolvimento distintos: ambiente baseado em linguagem Lua, o ambiente de desenvolvimento do Arduino em que herda toda a base de conhecimento e aplicações ou ainda no ambiente baseado no sistema operacional de tempo real RTOS, capaz de criar aplicaç...