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