Postagens

SOUP e REST

Imagem
            A comunicação entre sistemas e a capacidade de oferecer serviços por meio da internet está se tornando cada vez mais comum. Muitas empresas de software oferecem serviços que podem ser acessados remotamente ou dentro de uma rede e que permitem a comunicação entre um ou mais dispositivos eletrônicos, tornando-os capazes de enviar e processar dados de acordo com sua funcionalidade. Para que essa comunicação ocorra é necessário que os sistemas envolvidos sigam um mesmo formato de transmissão de dados. Por causa disso os web services se tornaram populares, pois permitem que plataformas diferentes (Java, C#, C++, Python) se comuniquem sem grandes esforços.             Entre as abordagens existentes para a implementação de web services as opções mais comuns encontradas são SOAP e REST. Começaremos por definir o que são e o que significam essas siglas. Ambas definem a maneira como as APIs são criadas. API é uma ...

Estruturas físicas de um banco de dados Oracle

Imagem
     Um banco de dados deve ser capaz de armazenar informações de forma permanente, segura e acessível de forma rápida. O banco de dados Oracle é extremamente estável e pode ser usado em ambiente Unix ou Windows. Devido à sua robustez é indicado para trabalhar com grande volume de informações. Este banco de dados é composto por estruturas físicas e lógicas. Neste post falarei sobre as estruturas físicas. Estruturas físicas      Estas estruturas podem ser vistas dentro do HD por meio de consultas. Um datafile (arquivo .dbf ) é uma estrutura física de armazenamento. Os datafiles compõem as tablespaces e a soma dos seus tamanhos é o total de tamanho da tablespace . As unidades físicas são transparentes principalmente para os usuários, ou seja, o usuário geralmente não sabe em qual arquivo físico ( .dbf ) os dados estão alocados. Geralmente os datafiles armazenam os dados inseridos pelos usuários.       Outra estrutura física é o control...

Estruturas lógicas de um banco de dados Oracle

Imagem
     Photo by Christina @ wocintechchat.com on Unsplash      Iniciando meus estudos sobre bancos de dados Oracle, venho aqui compartilhar um pouco do que aprendi. Em linhas gerais, u m banco de dados deve ser capaz de armazenar informações de forma permanente, segura e acessível de forma rápida. O banco de dados Oracle é extremamente estável e pode ser usado em ambiente Unix ou Windows. Devido à sua robustez é indicado para trabalhar com grande volume de informações. Este banco de dados é composto por estruturas físicas e lógicas. Neste post falarei sobre as estruturas lógicas.  Estruturas lógicas      Segmentos são objetos dos bancos de dados Oracle. Trata-se de unidades lógicas. Todos abaixo são exemplos de segmentos: Tabelas Índices Views Procedures Functions Os segmentos são armazenados em  datablocks  (blocos de dados), que são as unidades mínimas de armazenamento. Estes blocos possuem os tamanhos padrão de...

Utilizando interfaces, inversão de controle e injeção de dependências em programação - Um exemplo em C#

Imagem
          A melhor forma que encontrei para entender e explicar os conceitos de interfaces, inversão de controle e injeção de dependências é através de exemplo. Este exemplo tirei de um curso que pode ser verificado nas referências desta postagem.           O exemplo trata do cálculo de impostos e do valor total cobrado do cliente em uma empresa fictícia de aluguel de veículos. O valor da taxa de imposto varia caso o aluguel seja por dia ou por hora. O valor calculado sempre é arredondado para mais. As entradas que damos ao sistemas são: - data e horário da retirada do veículo - data e horário da devolução do veículo - preço do aluguel por hora - preço do aluguel por dia           Executando a aplicação:             No github , dividi a solução em dois commits diferentes. Um para a solução sem uso de interfaces e outro com o uso da interface. Dado o código e o fun...

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...