terça-feira, 19 de março de 2013

Entendendo um pouco sobre virtualização



Para realizar uma abordagem mais explicita do que é a virtualização, é interessante fazer uma breve reflexão do que se entende por máquina e como ela atende as solicitações do usuário. É normal que um usuário comum enxergue a máquina como simplesmente um equipamento que atenda as suas solicitações, e não deveria ser diferente, o objetivo é fornecer o máximo possível de praticidade em sua utilização, sem que esse venha a ter a necessidade de conhecimentos técnicos e complexos sobre o funcionamento do hardware.
Segundo Lowe (2009), um computador compreende do trabalho em conjunto do hardware e software. Em outras palavras, o hardware e software não trabalham separadamente, pelo contrário, eles são ligados e dependentes um do outro. Como já é esperado, em nível de hardware um computador possui vários componentes, como Central Processing Unit (CPU), memória, disco rígido, entre outros elementos. Agora em se tratando de software o computador requer um sistema que tenha a capacidade de gerenciar todos os recursos que o mesmo tenha a sua disposição e o torne prático de utilizar.
Tanenbaum (2009) comenta que o sistema computacional é visto como uma série de camadas partindo da mais complexa (inferior) para a mais amigável (aplicativos). Nesse sistema hierárquico em camadas, quem se encontra na camada mais baixa é o hardware com todo o seu nível de complexidade a ser compreendido pelo sistema operacional que vem logo a acima, e mais adiante os programas de interação com o usuário e os softwares aplicativos como ilustrado na figura apresentada abaixo.

Sistema computacional em camadas

Ao lado esquerdo da figura são indicados dois modos de operação para os softwares, o primeiro equivale ao Modo Núcleo designado para o sistema operacional e para os demais softwares o Modo é Usuário. Tanenbaum (2009) diz ainda que no Modo Núcleo a CPU disponibiliza todas as instruções que pode executar, por outro lado no Modo Usuário são disponibilizados apenas um subconjunto das instruções que o mesmo pode executar. A diferenciação entre os modos de operação acontece porque o sistema operacional é um gerenciador de todos os recursos do hardware, funcionando como uma ligação entre os softwares do usuário e o hardware propriamente dito.
Quando o usuário solicita, por exemplo, salvar um arquivo, o software usuário por si só nada faz, apenas envia uma requisição ao sistema operacional o qual interage com o hardware solicitando que esse por fim atenda ao pedido. Mas enquanto o usuário continua a utilizar o computador, o mesmo usa muito pouco da capacidade dos recursos disponíveis nesse equipamento, principalmente nos dias de hoje em que dispomos de máquinas cada vez mais robustas até mesmo para uso doméstico.
Lowe (2009) explica que para compreender a ociosidade dos computadores é preciso saber os conceitos sobre Hertz (Hz). Um Hz é um cliclo de algo a cada segundo. O segundo ponteiro do relógio desloca-se na verdade de um tique por segundo. Cada movimento é um ciclo completo, portando o segundo ponteiro opera na velocidade de um ciclo por segundo ou 1 Hz.
Associando a abordagem de Lowe e a ociosidade dos computadores, suponhamos que um usuário digite um caractere por segundo o que corresponde a 8 bits, equivalendo a uma velocidade de 8 bits por segundo ou ainda 8 Hz.
Alegando que o processador do computador do usuário em questão tenha a capacidade de processar ao menos um bilhão (1.000.000.000) Hz, ou seja, 1 GHz, o mesmo estará usando apenas 0,000000008% dos seus recursos disponíveis.
Sabendo da ociosidade das máquinas e como ocorre à interação homem-máquina, é chegada a hora de questionar o que pode ser feito para melhorar ainda mais a interação, otimização e eficiência dos recursos computacionais?
Daí eis que surge o conceito de virtualização em meados de 1965 despertada pela ideia de compartilhamento de tempo entre os processos e mais ainda em 1972 quando a International Business Machines (IBM) produziu um Mainframe com capacidade de executar simultaneamente vários sistemas operacionais sendo esses controlados por um programa chamado de hypervisor.
Inicialmente a experiência em virtualização não obteve muita demanda diante dos custos exorbitantes dos equipamentos, sem falar que pouco mais adiante foi posta no mercado a Arquitetura Cliente/Servidoro que influenciou o consumo de equipamentos com menos capacidade de processamento, menor custo e podendo trabalhar interconectados independentes de sua localização geográfica por meio dos sistemas distribuídos e VPN.
O que trouxe a virtualização a ser retomada com tanto afinco nos dias de hoje, foi uma consequência da prática do padrão de utilização de máquina com apenas uma finalidade, esse procedimento é usado com o intuído de diminuir as possibilidades de falhas entre os softwares da mesma, o que pode comprometer os serviços disponíveis na rede. Lowe (2009) afirma que a prática de um serviço por máquina continuou porque ela limita os efeitos das falhas e as interrupções em um único aplicativo. Tendo por consequência a subutilização dos recursos computacionais, incentivando a indústria e retomar o foco em serviços direcionados a virtualização.
A virtualização consiste em separar o hardware do software, a Virtual Machine (VM) é constituída da combinação entre aplicativos e o sistema operacional, sendo levada a pensar que possui um hardware próprio, quando na verdade esse é compartilhado com outras máquinas.
Com a virtualização a máquina passa a usar melhor seus recursos computacionais, podendo serem executadas várias VMs e cada uma fornecendo um serviço diferente na rede. Caso uma VM venha a falhar, apenas o serviço disponibilizado por essa será paralisado e as demais permanecem funcional como se nada houvesse ocorrido, sem falar que a recuperação de problemas passa a ser resolvido em curto prazo.
Além de resolver drasticamente os problemas envolvendo ociosidade, redução de custo com hardware e tempo de recuperação de falhas, a virtualização traz outros benefícios como economia em contratos de manutenção, refrigeração e energia, além disso, diminui o espaço físico, pois uma mesma máquina pode virtualizar várias outras, ou seja, mesmo ocupando o espaço físico de uma única máquina ela poderá servir  como várias máquinas virtuais, ficando as desvantagens presa apenas ao hardware onde as VMs estão alocadas, caso não haja redundância e backups para as mesmas.


Referências bibliográficas: 


LOWE, William J. VMware Infrastructure 3 para leigos. 1 ed. Rio de Janeiro: Alta Books, 2009.

TANENBAUM, Andrew S. Sistemas Operacionais Modernos. 3 ed. São Paulo: Pearson, 2009.


sábado, 16 de março de 2013

Fish the old Chico - Peixe no Forno

Chegando a Semana Santa... época de comer bacalhau caro pra carambolas e tomar muito vinho!! Ô coisa boaaaa! mas prefiro um belo tucunaré e ou tilápia pescada no velho chico (Eita saudade da peste!!!), lógico com o vinho e velhos amigos!
Então vamos lá:

Itensbacklog - Ingredientes:

  • 2 Peixes Grandes (Utilizei um Tucunaré e uma Tilápia)
  • 2 Batatas pequenas
  • 1 Limão
  • 300g ou o suficiente de Camarão para encher a barriga dos peixes
  • 4 cabeças de alho
  • 1/2 cebola
  • Cuminho e alecrin a gosto
  • Sal a gosto
  • Azeite
  • Oregano
  • Papel Aluminio

Modo de Preparo:
Sprint 1 - Tempero:

Mamífero! Esprema o limão em um copo, adicione o sal e cuminho e alecrim a gosto e as 2 cabeças de lho amassadas.

Sprint 2 - Arrumando espaço no peixe:

Trate e lave os peixes, e aprofunde a cavidade visceral fazendo um corte junto a espinha dorsal do peixe para preencher com o camarão e batatas!
Feito isso, faça alguns talhos transversais no corpo do peixe(nos dois lados) para que o tempero penetre na carne. Cuidado para não furar os peixes!!!
Agora peque o tempero que foi feito na Sprint 1, e espalhe sobre o peixe e também dentro do mesmo, e deixe descansar....

Sprint 3 - Camarão com batatas:

Com o azeite, frite o camarão com o alho e a cebola picada, (lembre-se do sal), depois coloque-os em uma vasilha e misture com as batatas cortadas em cubos e o Orégano.

Sprint 4 - Enchendo o bucho dos peixes:

Vá empurrando a mistura de batatas e camarão no bucho e no corte feito perto da espinha dos peixes... depois , pegue o liquido do tempo que escorreu e coloque dentro tbm, e utilize palitos de dente para fecha-los.
Agora embrulhe para presente com o papel alumínio, peça uma travessa que comporte os 2 peixes a sua esposa e leve ao forno.... 
Após alguns minutos Puta que pariu esqueci o tempo que precisa ficar no forno!! ... mede pelo cheiro... abra a embalagem de alumínio, e deixe dourar.

Sprint 5 - Enchendo o Nosso Bucho:

Já que estamos na Semana Santa, pegue um bom vinho e vá testar se a receita ficou boa!!!



terça-feira, 5 de março de 2013

JTable: Como adicionar mensagem de "Não existe registros"

Pessoal! vejam como é simples adicionar uma mensagem de "Não existe(m) Registro(s)" em uma JTable.

Nesse exemplo vamos precisar usar o velho @Override (setinha verde ao lado do numero de linhas no eclipse), para reescrever o metodo paintComponent da JTable.

package com.blogspot.receitastecnologicas;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.image.BufferedImage;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JFrame;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JViewport;
import javax.swing.table.DefaultTableModel;

public class EmptyMessage extends JFrame {

 /**
  * @receitas tecnologias
  */
 private static final long serialVersionUID = 1L;
 private JTable table;

 public EmptyMessage() {
  this.table = new JTable() {
   public boolean getScrollableTracksViewportHeight() {
    if (getParent() instanceof JViewport)
     return (((JViewport) getParent()).getHeight() > getPreferredSize().height);

    return super.getScrollableTracksViewportHeight();
   }

   /**
    * Metodo Reescrito.. quado a quantidade de linhas na tabela foir 0
    * , será pintado na JTable um icone eu um texto
    * */
   protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    if (getRowCount() == 0) {// Quando estiver usando o RowSorter
           // lembre-se do getViewRowCount()
     Graphics2D g2d = (Graphics2D) g;
     BufferedImage img = null;
     try {
      img = ImageIO.read(EmptyMessage.class
        .getResourceAsStream("icon.png"));
     } catch (IOException e) {
      System.out
        .println("Não foi possível carregar a imagem.");
     } catch (IllegalArgumentException e) {
      System.out.println("Imagem não encontrada!");
     }
     g.drawImage(img, 30, 30, 260, 160, null);
     g2d.setFont(new Font("Arial", Font.BOLD, 16));

     g2d.setColor(Color.BLACK);

     g2d.drawString("Nada por aqui!!!.", this.getWidth() / 3, 20);// Texto
                     // a
                     // ser
                     // exibido
    }
   }
  };
  this.table.setAutoCreateRowSorter(true);
  this.table.setFillsViewportHeight(true);
  // Quando for utilizar JTable Profissionalmente por favor use
  // AbstractTableModel
  this.table.setModel(new DefaultTableModel(new Object[][] { {
    "Receitas", "Tecnologicas" } }, new String[] { "Title 1",
    "Title 2" }));
  table.setComponentPopupMenu(new TablePopupMenu());
  this.add(new JScrollPane(table));
 }

 /**
  * Popup utilizado para add e remover linhas da table para mostrar o
  * funcionamento do metodo reescrito
  * */
 private class TablePopupMenu extends JPopupMenu {
  private final AbstractAction addAction = new AbstractAction("add") {
   @Override
   public void actionPerformed(ActionEvent e) {
    JTable table = (JTable) getInvoker();
    DefaultTableModel model = (DefaultTableModel) table.getModel();
    model.addRow(new Object[] { "Receitas",
      "Tecnologicas " + model.getRowCount() });
    Rectangle rect = table.getCellRect(model.getRowCount() - 1, 0,
      true);
    table.scrollRectToVisible(rect);
   }
  };
  /** Deleta linha selecionada */
  private final Action deleteAction = new AbstractAction("delete") {
   @Override
   public void actionPerformed(ActionEvent e) {
    JTable table = (JTable) getInvoker();
    DefaultTableModel model = (DefaultTableModel) table.getModel();
    int[] selection = table.getSelectedRows();
    if (selection == null || selection.length <= 0)
     return;
    for (int i = selection.length - 1; i >= 0; i--) {
     model.removeRow(table.convertRowIndexToModel(selection[i]));
    }
   }
  };

  public TablePopupMenu() {
   super();
   add(addAction);
   addSeparator();
   add(deleteAction);
  }

 }

 /**
  * @param args
  */
 public static void main(String[] args) {
  EmptyMessage emptyMessage = new EmptyMessage();
  emptyMessage.setTitle("JTable Empty Message");
  emptyMessage.setLocation(50, 50);
  emptyMessage.setSize(300, 300);
  emptyMessage.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  emptyMessage.setVisible(true);

 }

}

quinta-feira, 28 de fevereiro de 2013

Gravar bootloader no Arduino Nano V3.0 via Duemilanove

Esses meninos e essas meninas! Após os correios ter me feito esperar 2 meses pelos meus arduinos, arrumei outra coisa pra esquentar a cabeça, a falta do bootloader no Arduino Nano V3... Pois é... após 2 noites de pesquisa achei uma solução para o erro:
avrdude: Yikes! Invalid device signature. Double check connections and try again, or use -F to override this check.

que surgia nas tentativas seguindo os post que achava na net. Não adiantou trocar o Signature, pois a ligação de pinos que eu achei quer era padrão no site http://arduino.cc/en/Tutorial/ArduinoISP para gravação ISP AVR não funciona para a NANO.

Chega de papo...

Para gravar o bootloader eu precisei transformar meu Arduino Duemilanove em um AVR em programador de sistema. Isso permitirá gravar bootloaders em novos chips ou programa AVRs sem um Gerenciador de inicialização.


Utilizei os seguintes materiais:

IDE Arduino 1.03
Arduino Duemilanove (Gravador)
Arduino Nano V3.0 (A ser gravado)
1 Capacitor eletrolitico 10 uF 
Breadboard
Jumpers

Instalação:

Instale o Exemplo>>ArduinoISP no Duemilanove, para usa-lo como um ISP do AVR.


Ligue os Jumpers da seguinte forma:


Dueluminove >>>  Nano V3
SS   10              >>>     RESET
MISO 12        >>>     MISO 12
MOSI 11        >>>     MOSI 11
SCK  13         >>>     SCK  13
5V vcc           >>>     5vc
Gnd               >>>     Gnd


E o Capacitor eletrolitico 10 uF  nos pinos Reset  , Gnd da Dueluminove. O capacitor precisa ser ligado para evitar o auto reset do Arduino, evitando a mensagem "avrdude: stk500_getsync(): not in sync: resp=0x15".

Selecione a Board Nano:
Depois, ainda no menu Tools, na opção programmer, selecione Arduino as ISP
Agora selecione Burn Bootloader, e aguarde a gravação que será feita na Nano (algo em torno de 1 min), e pronto!

 a Ide vai te Mostrar a Mensagem Done Burning bootloader!!  Você ja pode fazer upload do blink normalmente para sua Nano V3. Fim de papo! Perdi muito tempo com um coisa muito simples, agora vou tomar um café!!

sexta-feira, 15 de fevereiro de 2013

Lombo ao molho de Napalm

 Mais uma vez deixando o notebook e o eclipse (maldito seja o vicio de ter que abrir uma IDE ) de lado, resolvi fazer outro rango diferente, o Lombo ao molho de Napalm! Dei o nome molho de napalm, porque em algum momento lembrei de uma banda que gosto muito... o Napalm Death.


Itensbacklog - Ingredientes:
    •    1Kg de Lombo bonivo
    •    1 Xícara de Vinho
    •    1 Cebola
    •    4 Dentes de Alho
    •    1 Calabresa
    •    2 colheres de manteiga ou azeite
    •    Coentro
    •    Cebolinha
    •    3 Batatas
    •    Sal,  Pimenta do reino e orégano  agosto.
Modo de Preparo:
Sprint 1 - Preparando o Lombo:
Faça um furo no centro do Lombo, e o preencha com a calabresa (lembrando-se de corta o pedaço que ficar para fora do lombo), e faça alguns talhos no lombo da espessura desejada da fatia..


Sprint 2 - Preparando o Molho Napalm:
Mamífero! Corte a cebola e o pedaço que restou calabresa em alguns pedaço e bata no liquidificador junto com o vinho, a manteiga ou azeite, o alho, o coentro, a cebolinha, o orégano, e o sal e pimenta do reino.
Após bater a mistura do tempero, coloque o lombo em um recipiente e despeje toda a mistura pastosa sobre o lombo, deixando descansar por 2 ou 3 horas e de vez enquanto virando o lombo para distribuir bem o tempero.

Sprint 3 - Leve ao Forno:
Agora é a hora da tortura! Corte as batatas em rodelas de uns 1,5cm  e espalhe em uma travessa,  depois coloque o lombo sobre elas e despeje toda a mistura, cubra com papel alumínio e leve ao forno por 1h. Vai subir um cheiro que vai te deixar feito cachorro em porta de açougue.
Após isso retire o papel alumínio e deixe dourar, não se esquecendo de aguar algumas vezes a carne com o molho.



Enchendo o Bucho:
Agora sim! Depois de alguns minutos você já deve estar com algo parecido com isso:

ou então queimou e tu num viu.

domingo, 20 de janeiro de 2013

Instalando e criando laboratórios experimentais com o Dynamips / Dynagen

Essa postagem tem o objetivo de orientar no processo de instalação e criação de laboratórios experimentais com o emulador de roteadores Cisco Dynamips/ Daynagen. Com este é possível estudar e testar os recursos dos roteadores Cisco 1700, 2600, 3600, 3700, 7200 sem a necessidade de adquiri-los para essa finalidade.

Primeiro baixe o Dynagen, o e WinPcap, que constam neste link para download. A versão disponibilizada aqui é válida apenas para o Windows.


INSTALANDO


  • Primeiro execute o instalador do WinPcap e prossiga seu processo de instalação a qual é bastante prático e objetivo como exposto adiante.
Instalando WinPcap - passo 1

Instalando WinPcap - passo 2

Instalando WinPcap - passo 3

Instalando WinPcap - passo 4

Instalando WinPcap - passo 5

  • Depois execute o instalador do Dynagen e prossiga seu processo de instalação a qual é bastante prático e objetivo como exposto adiante.


Instalando Dynagen - passo 1

Instalando Dynagen - passo 2

Instalando Dynagen - passo 3

Instalando Dynagen - passo 4

Ao concluir a instalação do Dynagen será possível visualizar os seguintes atalhos: Dynamips Server, Network device list e Dynagen Sample Labs.
Instalando Dynagen - passo 5

Para o próximo passo é necessário que você possua o(s) IOS Cisco 1700, 2600, 3600, 3700 ou 7200, que corresponde ao sistema operacional do roteador. Assim que consegui-lo deve-se seguir os seguintes passos: acesse Meu Computador/Arquivos de programas/Dynamips/Images e cole o(s) IOS Cisco (se tiver mais de um IOS pode colocar também) neste local, assim como apresentado na figura.

Configurando Dynagen


CRIANDO LABORATÓRIO DE TESTE

Abra o atalho Dynagen Sample Labs e depois acesse simple1. Para facilitar crie um atalho desse laboratório na área de trabalho.

Configurando laboratório Dynagen - passo 1

Agora com o botão direito do mouse, abra o arquivo do laboratório como Bloco de Notas ou WordPad para que possamos edita-lo.

Configurando laboratório Dynagen - passo 2

Perceba que ao abrir o arquivo do laboratório é possível visualizar alguns comandos para a execução do mesmo. O fato é que esse emulador não trabalha com interfaces gráficas, nem mesmo na elaboração da topologia. Então para prosseguir é preciso elaborar uma topologia da rede que se pretende simular.

Configurando laboratório Dynagen - passo 3

Na figura abaixo é apresentada a topologia proposta para configuração do laboratório baseado nela. Composto por dois roteadores conectados a rede 172.16.0.0/24.

Configurando laboratório Dynagen - passo 4

Agora iremos adaptar o laboratório simple1 que já encontra-se aberto para executar como conforme topologia proposta. As modificações constam na figura abaixo:

Configurando laboratório Dynagen - passo 5



EXECUTANDO LABORATÓRIO

Execute primeiro o Dynamips Server e depois o laboratório simple1. No console do Dynagen digite list e depois enter, e visualizará os dois roteadores propostos na topologia. Para acessar um deles digite telnet seguido do nome atribuído ao roteador no arquivo da topologia, exemplo: telnet R1 e depois enter (ele é case sensitive, ou seja, faz diferença entre letras maiúsculas e minusculas) e será aberta uma nova janela para que se possa fazer as configurações nesse equipamento.

Executando laboratório Dynagen - passo 1

Executando laboratório Dynagen - passo 2

Agora em se tratando das configurações entre os roteadores será mostrado em outra postagem. Nessa postagem você aprendeu a instalar e configurar a topologia de um laboratório simples no dynagen exceto configurações entre equipamentos.


POSSÍVEIS PROBLEMAS

Caso esteja trabalhando com o sistema operacional Windows XP basta seguir as orientações apresentadas nessa postagem, porém, caso esteja realizando a instalação no Vista ou 7 siga as seguintes orientações propostas nesse link que diz respeito a permissões de acesso a pasta.

Problemas também podem ser encontrados em relação ao consumo de memória, para solucioná-los sugiro as seguintes links: blog ccna e tutorial dynagen.


REFERÊNCIAS BIBLIOGRÁFICAS

Filippetti, Marco. Instalação do Dynamips / Dynagen no Windows Vista. Disponível em: <http://blog.ccna.com.br/2009/07/06/instalacao-do-dynamips-dynagen-no-windows-vista/>.

Filippetti, Marco. Dynagen - Tutorial básico. Disponível em: <http://blog.ccna.com.br/2007/10/05/dynagen-tutorial-basico/>.

Anuzelli, Greg. Dynamips / Dynagen Tutorial. Disponível em: <http://dynagen.org/tutorial.htm>.

quarta-feira, 16 de janeiro de 2013

Strogonoff de Almôndegas Monsters !

Deixando o notebook e o eclipse (maldito seja o vicio de ter que abrir uma IDE ) de lado nessas férias resolvi fazer um rango diferente, o Strogonoff de Almôndegas Monsters do tamanho de uma bola de sinuca !
Itensbacklog - Ingredientes:
  • 1/2 kg Carne Moída 
  • 250g Farinha de Rosca (+ ou -)
  • 1 Ovo
  • 100g queijo mussarela 
  • Tempero e Sal a gosto
  • 1 lt Creme de Leite 
  • Molho de Tomate 
Modo de Preparo:
Sprint 1 - Fazendo a massa de carne:
Mamífero! Tempere a carne e misture com o ovo e a farinha de rosca até deixar a massa uniforme e no ponto para fazer as bolinhas.

Agora corte o queijo em cubos e o envolva com a massa fazendo um bola! No meu caso da pra ver que as bolas são gigantescas!



Sprint 2 - Assando ou Fritando:
Depois de fazer as bolotas, você pode assar ou fritar... No meu caso de gordura em excesso, eu resolvi assar no forno, mas acho que fritas, também deve ficar bom.


Deixe-as no forno até dourar...


Sprint 3 - Preparando o Molho:
Ferva o molho de tomate, e acrescente o creme de leite. Após ferver um pouco, derrame o molho sobre as almôndegas na travessa e leve ao forno por uns 5min.
Enchendo o Bucho:
Mô véi! Agora é a melhor parte!


Isso aí nem cachorro come!!