sábado, 28 de setembro de 2013

REST - Modelo de Maturidade de Richardson

Durante a sua apresentação Justice Will Take Us Millions Of Intricate Moves no QCon San Francisco 2008, Leonard Richardson propos uma classificação para os Web Services. O Modelo de Maturidade de Richardson (RMM - Richardson Maturity Model) propõe três níveis de maturidade com base no suporte deste serviço para URI, HTTP e Hipermídia.

Nível 0 - Service end point communication

É caracterizado pelos serviços que possuem uma única URI, e utiliza um método único HTTP (tipicamente POST). A maioria dos Web Services baseados em (WS-*) utilizam um único URI para identificar um ponto final, e o protocolo HTTP POST para transferir as cargas baseadas em SOAP, efetivamente ignorando o resto dos verbos HTTP.

Nível 1 - Resource based communication

O próximo nível de maturidade emprega muitas URI mas um simples verbo HTTP. A chave da fundamental da divisão entre estes tipos de serviços rudimentares e o Nível 0, é que o nível de um serviço pode expor inúmeros recursos lógicos, enquanto que o Nível 0 todas as interações são realizadas através de um único (grande, complexo) túnel de recursos. Neste nível as interações são através da inserção dos nomes da operação e os parâmetros em uma URI, em seguida, transmitir essa URI para um serviço remoto, normalmente via HTTP GET.

Nível 2 - HTTP verbs based communication

Este nível acolhe inúmeros recursos URI endereçáveis​​. Esse apoio aos serviços vários dos verbos HTTP em cada recurso é exposto. Incluído neste nível serviços como CRUD são realizados, onde o estado dos recursos, que representam tipicamente entidades empresariais, podem ser manipulados através da rede.

Nível 3 - Hypermedia communication

Este nível de serviço suporta a noção de hipermídia como motor do estado para um aplicativo. Ou seja, as representações podem conter links URI para outros recursos que possam ser de interesse para os consumidores. O serviço leva os consumidores através de uma trilha de recursos e obtém como resultado as transições de estado da aplicação.

Resumidamente, este modelo define três níveis para se trabalhar com a arquitetura Web, porém consideramos que apenas o Nível 3 trabalha com a arquitetura REST:
  • Nível 1 (Recursos) - Lida com a complexidade e utiliza o termo dividir e conquistar, quebra a extremidade de um serviço grande em vários recursos.
  • Nível 2 (Verbos HTTP) - Introduz um conjunto padrão de verbos HTTP de forma que possamos lidar com as situações semelhantes, da mesma forma, com a remoção de variação desnecessária.
  • Nível 3 (Controle Hipermídia) - Permite a descoberta, e proporciona uma forma de criar um protocolo mais auto-documentado.
Obrigado e até a próxima
Fernando Anselmo

PS. Um excelente artigo sobre este tema pode ser acessado aqui.

quinta-feira, 26 de setembro de 2013

REST - Fundamentos da Arquitetura RESTful

O termo REST se originou através de um trabalho de Doutorado chamado Architectural Styles and the Design of Network-based Software Architectures, nele o Dr. Roy Thomas Fielding escreve:
"A REST (Representational State Transfer) é pretendida como uma imagem do projeto da aplicação se comportará: uma rede de websites (um estado virtual), onde o usuário progride com uma aplicação selecionando as ligações (transições do estado), tendo como resultado a página seguinte (que representa o estado seguinte da aplicação) que está sendo transferida ao usuário e apresentada para seu uso."
Este trabalho pode ser facilmente encontrado na Web e sua leitura é bastante interessante. As ideias e termos que descrevem sistemas "RESTful" podem ser encontrados em sua essência neste documento, sem os formalismos propostos pelos interesses diversos que tentam deturpar no intuito de tentar vender algo. Seus conceitos são uma excelente demonstração que pode ser utilizado como referência para uma implementação de um sistema Web. Em linhas gerais uma URL (Uniforme Resource Locator) é utilizada para identificar e expor um serviço RESTful. Imaginemos isso um ponto de início a uma publicação de qualquer coisa que contenha um serviço REST. E possua como retorno algo como XML, JSON ou qualquer formato hipermídia.

Então podemos pensar em REST em um conjunto de princípios que definem como os padrões Web, HTTP e URIs devem ser usados. A promessa é que ao aderir aos princípios REST e projetar uma aplicação, obteremos um sistema que explora a arquitetura da Web em toda sua potencialidade. A habilidade de poder obter uma informação em diferentes termos é possível por causa de uma separação do nome dos recursos advindos de um formulário.

REST é melhor utilizado para sistemas desacoplados de informação que devem produzir e consumir para várias fontes de tecnologias. Podemos definir suas propriedades como:

  • Alta performance
  • Escalável
  • Generalista
  • Simples
  • Fácil modificação
  • Extensível
Talvez já tenhamos ouvido falar dessa promessa em várias outras tecnologias, a pequena diferença é que REST nada tem a ver com linguagem, software e não é uma biblioteca (como ITIL) trata-se simplesmente de uma Arquitetura. Siga e tenha seus benefícios, não siga e estará fazendo qualquer outra coisa.

Obrigado e até a próxima
Fernando Anselmo

PS. Desculpe pela demora de artigos pois estava me aprofundando em duas tecnologias que me interessam Data Mining e REST. Então, me desculpe se daqui para frente serei meio tendencioso em manter esses dois assuntos sempre presentes neste blog. Seja bem vindo ao começo do futuro.

terça-feira, 10 de setembro de 2013

Apresentações - O Poder das Imagens

Um dos livros que mais amei ter escrito foi "O Guia para o Palestrante Empresarial", o criei como uma espécie de auto biografia na tentativa de poder expor o que aprendi nestes mais de 20 anos em que ministro apresentações e palestras.


Não pretendo lançar uma nova versão deste livro, não por ter esgotado o assunto, mas simplesmente por ter outros planos em mente. Só que vou aproveitar-me deste blog e publicar alguns "complementos" deste livro (não se preocupe, não terá de comprá-lo para entender o assunto).

Em 1970, a revista Scientif American publicou o resultado de um interessante experimento feito por Ralph Haber. Este experimento consistia em mostrar uma série de 2.560 slides de fotografias para uma pessoa a velocidade de uma a cada 10 segundos. Em cálculos simples em 7 horas todos os slides seriam vistos, porém foi mostrado em um período de vários dias. Após o último slide ter sido mostrado, foi realizado um teste que consistia em saber se a pessoa conseguiria reconhecê-los. Incrivelmente, a média atingida ficou entre 85% a 95% de reconhecimento.

Só que este experimento foi além, e, novamente, foram mostradas novas imagens só que agora a uma velocidade de uma por segundo. E por incrível que isso possa parecer o resultado final foi idêntico, ou seja, Haber demonstrou que o cérebro humano possui uma capacidade incrível para reter imagens.

Pensando de modo prático, qual a vantagem disso? Imagine a realização de uma apresentação para sua empresa, seja de um novo produto, seja de um novo sistema. Se deseja que as pessoas retenham as informações apresentadas se utilize de imagens ao invés de palavras. Deixe-me propor um teste simples, sem retornar seus olhos ao início deste texto quais foram as primeira palavras lidas (título não incluído)? Difícil não? Prova que dificilmente o cérebro armazena palavras. Obviamente que se lembra (em geral) do que leu até aqui (e poderia sem problemas fazer um resumo) pois é assim que nosso cérebro guarda as palavras, imagine isto como uma "Ficha Resumo". Agora feche os olhos e recorde da imagem colocada.

Resumidamente, ao ler um livro podemos fazer um resumo de um capítulo mas dificilmente lembraríamos de todas as palavras. Já o funcionamento é bem diferente para uma revista em quadrinhos, isto é, conseguiremos lembrar da maioria dos desenhos do primeiro ao último quadrinho, e muitas vezes até de determinados detalhes (faça um teste).

Então quando for estudar ou mostrar uma ideia pense em organizar sua apresentação em forma de imagem, seu cérebro recordará muito mais facilmente. Um site que vem conquistando muitos adeptos dia a dia chama-se Mural.ly e consiste em um organizador e apresentador de ideias totalmente visuais, tente e divirta-se.

Obrigado e até a próxima
Fernando Anselmo

quinta-feira, 5 de setembro de 2013

Gimp - Degradês e Transparências

Uma dos detalhes que mais me fascinam em trabalhar com o Gimp é a facilidade quanto a criação de efeitos de Degradês e a realização de Transparências. Vejamos duas pequenas lições:

Obter Fundo Degradê

  1. Vamos partir de uma imagem com fundo branco.
  2. Escolher para Foreground Color uma cor qualquer (primeiro dos quadrinhos nas cores na Toolbox).
  3. Selecionar a ferramenta Bucket Fill (Shift+B) e clicar na imagem.
  4. Selecionar a ferramenta Blend (L) e clicar na imagem o ponto de origem, arrastar e soltar em outra posição (é possível conseguir diversos tipos de degradê).
Dica: Com a ferramenta Bucket Fill selecionada, podemos usar:
  • Ctrl+, para preencher com Foreground Color
  • Ctrl+. para preencher com Background Color
  • Ctrl+: para preencher com Pattern selecionado

Criar Transparências

  1. Abrir uma imagem qualquer
  2. Verificar se o canal Alfa está definido (Layer | Transparency | Add Alpha Channel).
  3. Com as ferramentas de seleção, definir a área que não ficará transparente.
  4. Pressionar Ctrl+I para inverter a seleção.
  5. Pressionar Ctrl+X para cortar a imagem.
  6. Salvar em formato gif ou png (jpg não aceita transparência).
Em aulas passadas vimos como usar degradês em imagens, o interessante de dominarmos essas técnicas é que podemos combiná-las para criar colagens de fotos, então como exercício busque na Internet 5 ou 6 imagens de seu artista favorito, ou pegue fotos de sua família e realize uma montagem. Garanto que será um belo presente.

Obrigado e até a próxima
Fernando Anselmo


terça-feira, 3 de setembro de 2013

Finanças - Médias e a HP-12C

A HP-12C é uma calculadora sensacional tratando em se tirar médias aritméticas, e extremamente simples também, vamos imaginar que ganhamos os seguintes benefícios realizando serviços de consultoria: 1. R$ 538,00, 2. R$ 490,00, 3. R$ 348,00, 4. R$ 670,00 e 5. R$ 480,00. Para fazer esses cálculos proceda da seguinte forma:
f SST   -> Limpar a memória de média
538     -> Digite o primeiro valor
E+      -> Aparece 1,00 no visor
490     -> Digite o segundo valor
E+      -> Aparece 2,00 no visor
348     -> Digite o terceiro valor
E+      -> Aparece 3,00 no visor
670     -> Digite o quarto valor
E+      -> Aparece 4,00 no visor
480     -> Digite o quinto valor
E+      -> Aparece 5,00 no visor
g 0     -> Aparece 505,20
Então a média do valor é R$ 505,20. Tome cuidado pois esta é a Média Aritmética Simples, ou seja, a soma de todos os valores (R$ 2.526,00) e a divisão pela quantidade total (5 serviços). Também podemos obter o valor do Desvio Padrão usando a seguinte função:
g .     -> Aparece 115,99
Sabemos que em trabalhos de consultoria existe uma outra variável extremamente importante que é as horas. Vamos imaginar que ocorreram as seguintes durações para as respectivas consultorias: 1. 3 horas, 2. 2 horas, 3. 1 hora, 4. 3 horas e 5. 2 horas. Podemos dizer que isso são os pesos de cada serviço, dessa vez precisamos da Média Aritmética Ponderada e resolvemos da seguinte maneira:
f SST       -> Limpar a memória de média
538 ENTER 3 -> Digite o primeiro valor, pressione a tecla ENTER e seu peso
E+          -> Aparece 1,00 no visor
490 ENTER 2 -> Digite o segundo valor, pressione a tecla ENTER e seu peso
E+          -> Aparece 2,00 no visor
348 ENTER 1 -> Digite o terceiro valor, pressione a tecla ENTER e seu peso
E+          -> Aparece 3,00 no visor
670 ENTER 3 -> Digite o quarto valor, pressione a tecla ENTER e seu peso
E+          -> Aparece 4,00 no visor
480 ENTER 2 -> Digite o quinto valor, pressione a tecla ENTER e seu peso
E+          -> Aparece 5,00 no visor
g 6         -> Aparece 537,45
Ou seja, podemos dizer que ganhamos em média R$ 537,45/hora de consultoria realizada. Desta forma tome cuidado para não perder dinheiro em seus próximos serviços. Sei que nosso assunto acabaria aqui, mas como sou chato ainda existem mais duas médias.

Cálculo da Média Harmônica


Essa média equivale ao inverso da média aritmética dos inversos de n valores. Para simplificar vamos usar 3 número: 1. 87, 2. 42 e 3. 53, realizamos o cálculo da seguinte forma:
3 ENTER   -> Quantidade total de números
87        -> Primeiro valor
1/x ENTER -> Obtemos seu inverso
42        -> Segundo valor
1/x +     -> Obtemos seu inverso e adicionamos ao valor anterior
53        -> Terceiro valor
1/x +     -> Obtemos seu inverso e adicionamos ao valor anterior
÷         -> Dividimos para obter o resultado 55,38

Cálculo da Média Geométrica


Essa média é calculada com a multiplicação de todos os valores e a extração da raiz do índice n deste produto. Usaremos os mesmos números anteriores e realizamos o cálculo da seguinte forma:
87 ENTER -> Primeiro valor
42 x     -> Segundo valor e multiplicamos pelo anterior
53 x     -> Terceiro valor e multiplicamos pelo anterior
3 1/x    -> Total de valores e obtemos o inverso
yx       -> Elevamos pelo valor anterior para obter o resultado de 57,86
Obrigado e até a próxima
Fernando Anselmo


domingo, 1 de setembro de 2013

Mineração de Dados - Técnicas de Integração de Dados

Em curto espaço de tempo, os resultados da mineração de dados podem ser rentáveis. Com centenas de gigabytes de dados a Integração de Dados pode fornecer uma visão unificada dos dados de negócios que poderiam estar espalhados por toda a organização. Este ponto de vista unificado pode ser construído com a utilização de uma variedade de técnicas e ferramentas.

As técnicas mais comuns de integração de dados são:

  • Consolidação de Dados - consiste na captura dos dados de vários fontes de origem e sua integração em um único repositório de dados persistente. Esse armazenamento pode ser utilizado para análise ou geração de relatórios, ou pode servir como uma nova fonte de dados para outras aplicações (por exemplo, nas ferramentas de ECM - Enterprise Content Management).
  • Federação de Dados - fornece uma visão virtual única de um ou mais arquivos de dados de origem. Relacionado a problemas de aplicativos de negócios para uma determina consulta, neste caso devemos recuperar os dados de repositórios adequados, integrá-los para coincidir com o ponto de vista virtual e definir as consultas para enviar os resultados para o aplicativo de negócios solicitante. Por definição, Federação de Dados obtém os dados dos sistemas de origem por demanda. Qualquer transformação de dados necessária é realizada como os dados são recuperados a partir da origem (por exemplo, nas ferramentas de EII - Enterprise Information Integration).
  • Propagação de Dados - cópia dados de um local para outro. Este modelo de aplicações trabalham com dados on-line, ou seja, são orientados a eventos. Atualizações são realizadas para o sistema de origem podem ser propagadas de forma assíncrona ou síncrona no sistema destino (por exemplo, nas ferramentas de EAI - Enterprise Application Integration e EDR - Enterprise Data Replication).
Segundo alguns modelos de Integração de dados, existe uma quarta técnica:
  • Abordagem Híbrida. As técnicas utilizadas por aplicações de integração de dados dependem tanto requisitos de negócios quanto da tecnologia. É comum um aplicativo de integração de dados usar uma abordagem híbrida, que envolve diversas técnicas de integração de dados (por exemplo, nas ferramentas de CDI - Customer Data Integration).
Em artigos posteriores voltaremos a tratar mais sobre o assunto de Data Mining, pois as ferramentas de mineração de dados podem responder perguntas de negócios que tradicionalmente eram muito complicadas para resolver.

Obrigado e até a próxima
Fernando Anselmo