terça-feira, 24 de março de 2015

Engenharia de Software - Debugging - Interpretando um editor hexadecimal

Interpretando informações básicas exibidas por um editor hexadecimal

Coluna 1 (esquerda) – Valor da posição representada em hexadecimal do primeiro byte da segunda coluna desta linha.
Coluna 2 (meio) - Contém bytes do arquivo aberto, em ordem, representados em hexadecimal por 2 numerais hexadecimais cada byte.
Coluna 3 (direita) - Contém caracteres ASCII, cada caractere está associado a um byte da coluna 2, muito útil para alterar textos, como pode ser observado na figura 1.a abaixo

Com o auxílio da figura 1.a abaixo e do texto abaixo, podemos ver exemplos que ajudam a entender:

- Linha 00000030 (marcada com retângulo verde), o valor 00000030 está em hexadecimal e é referente à posição do primeiro byte desta linha na segunda coluna (retângulo à direita, com valor “EE”) o valor EE está em hexadecimal, ele é um byte, porque 4 bits dao 16 possibilidades de valor, o que caracteriza um numeral hexadecimal, logo 2 numerais hexadecimais formam 8 bits, que é um byte.
- Linha 00000010, veja o primeiro byte (primeiro retângulo vermelho desta linha), mais adiante na mesma linha veja o caractere ASCII marcado com o segundo retângulo vermelho, ele é a representação do byte marcado pelo primeiro retângulo. Observe o mesmo na linha 00000020.
- Linha 00000120, veja os retângulos vermelhos dessa linha, e agora observe que o caractere “r” é formado pelos bits representados pelo valor hexadecimal “72” (lembrando mais uma vez 2 numeros hexadecimais são 8 bits, ou 1 byte e um caractere ASCII é um byte)





Figura 1.a 
Fonte: http://www.codeproject.com/KB/miscctrl/488296/partition_explain1.jpg

Sistemas de representação de dados computacionais


Numéricas

Decimal:

É o primeiro sistema numérico que aprendemos nas nossas vidas.
Aprendemos uma casa numérica pode possuir valores compreendidos entre 0 e 9 (10 valores possíveis)

Aprendemos que cada unidade da casa numérica adjacente à esquerda é 10 vezes maior pelo fato do sistema decimal possuir 10 possibilidades de números .
Então, por exemplo:
A primeira casa da direita para a esquerda contém seus valores.
A segunda casa da direita para a esquerda contém valores que são dez vezes maiores que a casa da direita (dois na segunda casa representa vinte, por exemplo).
A terceira casa da direita para a esquerda contém valores que são dez vezes maiores que a casa da direita, então se a segunda é 10 vezes maior que a primeira, e a terceira é 10 da segunda, a terceira é 10 vezes 10, é 100 vezes maior que a primeira.

O sistema em computação costuma ser representado com o número seguido da letra “d” (135d por exemplo), ou de letra nenhuma.

Binário:

A mesma lógica se aplica ao sistema binário.
Suas casas numéricas comportam no máximo até dois valores diferentes, zero e um (0 e 1).
Logo a segunda casa da direita para a esquerda é duas vezes superior à primeira.
Já percebemos então, que se a primeira casa da direita para a esquerda pode possuir no máximo uma unidade, logo a segunda da direita para a esquerda pode comportar no máximo uma unidade, duas vezes maior, intuitivamente fica fácil perceber que essa segunda casa com valor 1 contém o número dois do sistema decimal.

Concluindo, a terceira casa com valor 1 conteria o número quatro do sistema decimal.
As regras do “vai um” também valem para esse sistema, sim, a lógica é toda igual, só muda a quantidade de valores possíveis que cada casa pode assumir , ou seja, 01 + 01 = 10 por exemplo.
O número em  binário costuma ser representado pelo valor binário seguido da letra “b” (101011b) por exemplo.

Hexadecimal:

Também funciona como os outros dois sistemas supracitados,  mas possui numerais novos e cada casa pode ter até 16 valores diferentes, são esses em ordem crescente com incrementos de uma unidade:
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F

Ou seja, por exemplo, 3+3=6, 9+1=A, 9+2=B, A+2=C, e a regra do “vai um”? 0F+02=11 (a casa do F estourou porque ele é o maior valor possível, a compensação foi feita elevando uma unidade na segunda casa da direita para a esquerda).

O sistema é representado pela letra "h" á direita, exemplo: 4FE2h

Escrita - ASCII

Cada caractere ASCII é formado por um conjunto de bits, assim, como os caracteres não são numerais, devemos observar a tabela ASCII para descobrir qual sequência de bits corresponde à cada caractere, abaixo temos uma tabela com representação decimal dos caracteres:





sexta-feira, 27 de fevereiro de 2015

Digitalizando (escaneando) imagens no Windows 7


Nesse tutorial vou te ensinar como digitalizar (escanear) documentos no windows 7

Siga os passos nas imagens, indicados pelos números, círculos e setas.

Dicas importantes: Resoluções maiores e com maior quantidade de cores, exigem mais trabalho da impressora e do computador e ocupam mais espaço na máquina.

Passo 1

1-      Menu iniciar

2-      Escolher o menu dos dispositivos e impressoras

 
  

Passo 2 – Verifique se sua impressora está ligada ao computador, caso não esteja o ícone da mesma aparecerá meio transparente no painel de controle como mostra a figura abaixo:


Passo 3 – Quando a impressora estiver conectada, defina como padrão caso necessário:

1-      Clique com o botão direito no ícone da sua impressora

2-      Clique em Definir como padrão


Passo 4:

1-      Clicar com o botão direito no ícone da sua impressora

2-      Clicar em Iniciar verificação

 


 Passo 5- Escolher o formato de cor, o formato Colorido tem maior quantidade de cores, o Preto e Branco é o que tem menos cores (só tem as cores pretas e branca obviamente):
 

Passo 6:

1-      Escolher o tipo de arquivo (extensão) 

2-      escolher a resolução

3-      Visualizar prévia da digitalização (caso não considere necessário, pode pular essa parte)

4-      Executar a digitalização do documento
 


Passo 7 – Depois de digitalizado o documento escolha um nome para ele


Passo 8 – Verifique onde foi salvo o documento


Passo 9 – Parabéns, fim do tutorial, agora você pode verificar se a imagem digitalizada ficou boa.

segunda-feira, 23 de fevereiro de 2015

Computação Gráfica - Resolução de imagem - DPI




Você já deve ter ouvido falar no termo DPI, na hora de utilizar uma multifuncional, scanner, comprar um mouse, mas o que, enfim, significa essa coisa?

DPI significa Dots Per Inch, que traduzido para o português fica “pontos por polegada”. Como o próprio termo sugere, DPI é a quantidade de pontos (pixels) que cabem em uma dimensão com uma polegada de comprimento, uma polegada é mais ou menos o comprimento médio do dedo do polegar.

 

Exemplo do uso de DPI em um processo de digitalização de algo numa copiadora: Você possui uma mesa digitalizadora (scanner) que trabalha a 100 DPI, e quer digitalizar para seu computador um documento com as dimensões de 2 polegadas de largura por 3 polegadas de comprimento, qual será a resolução?

- 1 polegada = 100 pixels, logo

- 2 polegadas = 200 pixels e

- 3 polegadas = 300 pixels, então

- 2 polegadas de largura por 3 polegadas de comprimento = resolução de 200x300 pixels, totalizando em 60.000 pixels

Exemplo na hora de comprar um mouse:

Você quer comprar um mouse, e achou um belo mouse de 1.000 DPI, mas o que isso significa?

Ele é capaz de movimentar o ponteiro do mouse até 1.000 pontos na vertical da tela caso você mova ele uma polegada na vertical, caso o faça para cima,  o ponteiro do mouse será deslocaldo 1000 pontos para cima, caso o faça para baixo, a mesma lógica será aplicada, o mesmo acontece ao movimentar o mouse no eixo vertical.

É sabido que você usa no seu Windows a resolução de 800x600, com este mouse de 1.000DPI, utilizando apenas uma polegada da mesa, você é capaz de ir do canto esquerdo ao canto direito da tela movimentando ele por apenas 0,8 polegadas da mesa, pois 1 polegada = 1.000 pixels, logo 800 pixels = 0,8 polegadas.

Vamos supor que você possui um mousepad de 10x5 polegadas qual a resolução máxima que seu mouse de 1000DPI consegue alcançar com esse mousepad?

- 1 polegada = 1.000 pixels, logo

- 5 polegadas = 5.000 pixels e

- 10 polegadas = 10.000 pixels então

- 10 polegadas por 5 polegadas = 10.000x5.000 pixels de resolução, muito mais do que suficiente pra uma resolução de 800x600, veja a figura 1 abaixo:

Figura 1

Computação Gráfica - Resoluções de imagem - Introdução



Mas afinal de contas o que significam os termos “resolução de vídeo”, “resolução de tela”, “resolução de imagem”?

Resolução, em computação gráfica, em informática, significa a largura e o comprimento da tela respectivamente medidos em número de pontos.

Se seu Windows por exemplo, está utilizando a resolução de 1920x1080, isso significa 1920 pontos de largura  por 1080 pontos de altura, e a quantidade de pontos total seria o produto da largura pela altura, caberia uma foto de 1920x1080 pixels na tela, ou então 2 fotos de 960x1080 lado a lado.

Veja abaixo como fica a tela do computador com várias resoluções diferentes, 1920x1080, 1600x900, 1280x700 respectivamente, veja como a quantidade de imagens que cabem na tela vão diminuindo:








Você mesmo pode fazer uma experiência e alterar sua resolução de tela! Basta seguir os passos na ilustração abaixo:

 
Abaixo temos duas imagens, uma de resolução 40x30 e outra de resolução 80x60 respectivamente, a primeira tem 40x30 pontos, ou seja, 1200 pontos, a segunda tem 80x60 pontos, ou seja, 4800 pontos:




Vantagens e desvantagens do uso de resoluções de imagem maiores:

Vantagens:

Possibilitam uma quantidade maior de conteúdo gráfico na imagem, como visto no exemplo anterior, deixando ela com uma definição maior e mais riqueza em detalhes.

Desvantagens:

Imagens e vídeos (lembre que vídeos são sequências de imagens) com resoluções maiores demoram mais tempo para serem processados pelo computador e para serem transferidos pela internet e ocupam mais espaço nos dispositivos de armazenamento como HD (ver figura abaixo), pendrive, celular, memória RAM, cartão da câmera, afinal, se os pixels são conjuntos de bits, quanto maior a resolução, mais pixels teremos e mais bits teremos, finalizando, mais dados gráficos teremos.




Computação gráfica - bits de cores e pixels

O que significa o termo  “pixels” ou até mesmo “bits de cores”?

Pixel:

Pixel vem da palavra “pixie” que significa “fadinha” em inglês, o pixel recebe esse nome por que é bem pequeno, é o menor ponto de uma cor só que pode existir na tela.

Bits de cores:

Bits de cores (Se não sabe o que significa um bit, clique aqui) é a quantidade de bits utilizados para definir a cor de cada pixel, sabendo que o bit pode assumir apenas 2 valores, logo a quantidade de cores possíveis para um pixel é de 2 elevado a N (2^N), sendo que N é a quantidade de bits, nas ilustrações e tabelas abaixo você pode literalmente ver o que estou dizendo.


Paleta mostrando cores que o pixel pode assumir
Quantidade de bits (N)
Cores possíveis

1
2
(2^1)

2
4
(2^2)

4
16
(2^4)

8
256
(2^8)

16
65536
(2^16)


Windows 7 com 32 bits de cores:







Windows 7 com 16 bits de cores:




Windows 7 com 8 bits de cores:



Vantagens em se utilizar uma quantidade de bits maior:

- Aumento na nitidez da imagem em relação à variação de cores que é normal numa imagem (às vezes uma cor fica mais escura de uma parte para a outra da imagem por exemplo.
- A imagem fica mais realista, pois quanto mais bits de cores, mais cores, e portanto se aproxima da quantidade de cores que o ser humano consegue distinguir.

Desvantagens:

- Mais bits serão transferidos para o adaptador de vídeo para ele gerar a imagem na tela, o que toma tempo e recursos da CPU, da placa de vídeo e da sua memória. 
- Essa imagem demorará mais tempo para ser transferida pela internet 
- Mais spaço ela ocupará no HD, no cartão da sua câmera, no seu pendrive, veja imagem abaixo:




domingo, 15 de fevereiro de 2015

Camadas de rede (OSI/ISO)

As camadas de rede são divididas em vários níveis, quanto mais alto mais distante da linguagem de hardware uma camada é, elas são divididas de modo hierárquico, sendo que cada camada superior recebe dados de uma inferior em um download e cada camada inferior recebe dados de uma superior num upload. Apresento-lhes as camadas de rede no padrão OSI/ISO.

      1-  Camada física:

A camada física é responsável por administrar as grandezas físicas do sinal, principalmente a potência, amplitude e frequência e meio de transmissão.
Hoje em dia os exemplos mais comuns são os padrões  100Base-TX e 1000Base-TX para transmissão de sinal através de cabos UTP e 802.11g e 802.11n para transmissões wireless.

      2- Camada de enlace:

É a camada mais baixa a trabalhar com dados em forma digital, isso faz dela o principal portão e fiscal do fluxo de bits entre sua máquina e a rede local, supervisionando, manipulando  e descartando bits quando julga necessário.
O protocolo de camada de enlace mais conhecido hoje em dia é o Ethernet.

      3- Camada de rede:

Costuma ser a camada mais baixa a operar a nível de software, ou seja, computacional, fazendo com que máquinas inteligentes como PCs, Notebooks, celulares sejam capazes de implementar uma infinidade de protocolos nesse nível para todo tipo de finalidade, e conectividade (permite que computadores de redes diferentes se comuniquem).
Sendo uma camada implementada por software, ela é capaz de interpretar e manipular os bits recebidos através de processamento de dados, verificando se estes estão válidos ou corrompidos, consegue particionar a janela de transmissão de bits e estabelecer regras e rótulos para transferência.
Finalmente, possui a notável capacidade de fazer com que computadores de redes diferentes possam se comunicar. O protocolo de camada de rede IP (Internet Protocol) por exemplo, praticamente definiu o conceito de Internet.

      4- Camada de transporte:

Este nível logo acima da camada de rede introduz o conceito de “portas”, e orientação à conexão, as portas são implementadas pelo sistema operacional para que os programas abertos no sistema operacional possam utilizar o a camada de rede para se comunicar, e realmente funcionam como portas, são normalmente abertas por programas que pedem essa abertura ao sistema operacional, e funcionam como um endereço destinatário dentro do sistema operacional, o destino será o programa que está esperando chegar a correspondência de dados em forma de pacote de camada de rede. Os protocolos mais utilizados nessa camada são o TCP (Transfer Control Protocol) e o UDP (User Datagram Protocol).

      5- Camada de Sessão:

São as políticas de estabelecimento da sessão, implementadas pelo software aplicativo que está a se comunicar com a rede, eu particularmente não concordo em chamar isso de camada.

      6- Camada de Apresentação:

Acho preferível suprimir o conceito sobre essa camada.

      7- Camada de Aplicação:

É o protocolo utilizado pelo software aplicativo para receber e enviar dados e está em função do tipo de aplicação. Por exemplo, temos o protocolo HTTP para enviar e receber dados ao acessar um site na internet, FTP para realizar downloads e uploads em servidores FTP, POP3 para receber email no Outlook da Microsoft, o Skype tem seu próprio protocolo de aplicação para se comunicar com a rede Skype, assim como Whatsapp por exemplo.

Abaixo segue um exemplo prático ilustrado de um email transitando pelo cabo de rede até chegar ao navegador Google Chrome: