quarta-feira, 30 de maio de 2012

Rotas Estáticas Sumarizadas

Resumindo rotas para reduzir o tamanho da tabela de roteamento

Criar tabelas de roteamento menores torna o processo de pesquisa na tabela de roteamento mais eficiente, porque há menos rotas a serem pesquisadas. Se uma rota estática puder ser usada em lugar de várias rotas estáticas, o tamanho da tabela de roteamento será reduzido. Em muitos casos, uma única rota estática pode ser usada para representar dúzias, centenas ou até mesmo milhares de rotas.

Podemos usar um único endereço de rede para representar várias sub-redes. Por exemplo, as redes 10.0.0.0/16, 10.1.0.0/16, 10.2.0.0/16, 10.3.0.0/16, 10.4.0.0/16, 10.5.0.0/16 até 10.255.0.0/16 podem ser representadas por um único endereço de rede: 10.0.0.0/8.

Sumarização de rota

Várias rotas estáticas podem ser sumarizadas em uma única rota estática caso:
  • As redes de destino possam ser sumarizadas em um único endereço de rede e 
  • As várias rotas estáticas usem a mesma interface de saída ou o endereço IP do próximo salto 
Isso é chamado de sumarização de rota.

Em nosso exemplo, R3 tem três rotas estáticas. Todas as três rotas estão encaminhando tráfego pela mesma interface Serial0/0/1. As três rotas estáticas em R3 são:

ip route 172.16.1.0 255.255.255.0 Serial0/0/1
ip route 172.16.2.0 255.255.255.0 Serial0/0/1
ip route 172.16.3.0 255.255.255.0 Serial0/0/1


Se possível, gostaríamos de sumarizar todas essas rotas em uma única rota estática. 172.16.1.0/24, 172.16.2.0/24 e 172.16.3.0/24 podem ser sumarizadas para a rede 172.16.0.0/22. Como todas as três rotas usam a mesma interface de saída, elas podem ser sumarizadas para a única rede 172.16.0.0 255.255.252.0, e podemos criar uma única rota de sumarização.


Calculando uma rota de sumarização
Aqui está o processo de criação da rota de sumarização 172.16.1.0/22, como mostrado na figura:

1. Escreva as redes que você deseja sumarizar em binário.
2. Para localizar a máscara de sub-rede para sumarização, inicie com o bit mais à esquerda.
3. Siga seu caminho para a direita, localizando todos os bits que correspondem consecutivamente.
4. Quando você localizar uma coluna de bits não correspondente, pare. Você está no limite de sumarização.
5. Agora, conte o número de bits mais à esquerda, que em nosso exemplo é 22. Este número se torna sua máscara de sub-rede para a rota de sumarização, /22 or 255.255.252.0
6. Para localizar o endereço de rede para sumarização, copie os 22 bits correspondentes e adicione todos os bits 0 ao final para formar 32 bits.

Seguindo essas etapas, podemos detectar que as três rotas estáticas em R3 podem ser sumarizadas em uma única rota estática, usando o endereço de rede de sumarização 172.16.0.0 255.255.252.0:

ip route 172.16.0.0 255.255.252.0 Serial0/0/1

Configurando uma Rota de sumarização

Para implementar a rota de sumarização, devemos excluir as três rotas estáticas atuais primeiro:

R3(config)#no ip route 172.16.1.0 255.255.255.0 serial0/0/1
R3(config)#no ip route 172.16.2.0 255.255.255.0 serial0/0/1
R3(config)#no ip route 172.16.3.0 255.255.255.0 serial0/0/1

Em seguida, nós configuraremos a rota estática de sumarização:

R3(config)#ip route 172.16.0.0 255.255.252.0 serial0/0/1

Erros do botão +1 Google

Se o botão +1 estiver indisponível ou parar de funcionar, você verá esta imagem:

Um erro com o botão +1 pode acontecer por vários motivos, entre eles:
  • Tempo limite do servidor esgotado: verifique a conexão com a Internet e tente atualizar a página. 
  • Perfil suspenso: se seu perfil foi suspenso, não é possível marcar conteúdo com +1. 
  • Usuário do Google Apps: se seu administrador não ativou o Google+ em seu domínio, não será possível se inscrever em uma conta do Google+ para usar o botão +1. 
  • Cookies bloqueados: se você desativou cookies de terceiros em seu navegador, não será possível usar o botão +1.

Modificando Rotas Estáticas

Há momentos em que uma rota estática configurada anteriormente precisa ser modificada:
  • A rede de destino não existe mais e, por isso, a rota estática deve ser excluída.
  • Há uma alteração na topologia, e o endereço intermediário ou a interface de saída deve ser alterada. 
Não há forma de modificar uma rota estática existente. A rota estática deve ser excluída, e uma nova é configurada.

Para excluir uma rota estática, adicione no na frente do comando ip route, seguido pelo resto da rota estática a ser removida.

Exemplo de uma rota estática:

ip route 192.168.2.0 255.255.255.0 172.16.2.2

Podemos excluir essa rota estática usando o comando no ip route:

no ip route 192.168.2.0 255.255.255.0 172.16.2.2

Excluímos a rota estática porque queríamos modificá-la para usar uma interface de saída, e não um endereço IP do próximo salto. Configuramos uma nova rota estática, usando a interface de saída:

R1(config)#ip route 192.168.2.0 255.255.255.0 serial 0/0/0

É mais eficiente para o processo de pesquisa da tabela de roteamento ter rotas estáticas com interfaces de saída – pelo menos para redes de saída ponto-a-ponto seriais.

O comando ip route


O comando para configurar uma rota estática é ip route. A sintaxe completa para configurar uma rota estática é:

Router(config)#ip route prefix mask {ip-address | interface-type interface-number [ip-address]} [distance] [name] [permanent] [tag tag]

A maioria desses parâmetros não é relevante para este capítulo ou para seus estudos CCNA. Como mostrado na figura, usaremos uma versão mais simples da sintaxe:

Router(config)#ip route network-address subnet-mask {ip-address | exit-interface }

Os seguintes parâmetros são usados:

  • network-address - Endereço da rede de destino da rede remota a ser adicionado à tabela de roteamento
  • subnet-mask - Máscara de sub-rede da rede remota a ser adicionada à tabela de roteamento. A máscara de sub-rede pode ser modificada para resumir um grupo de redes. 

Um ou dois dos seguintes parâmetros também devem ser usados:
  • ip-address - Normalmente conhecido como o endereço IP do roteador do próximo salto 
  • exit-interface - Interface de saída que seria usada no encaminhamento de pacotes para a rede de destino

Nota: O parâmetro ip-address costuma ser conhecido como o endereço IP do "próximo salto" do roteador. O endereço IP do próximo salto do roteador costuma ser usado nesse parâmetro. No entanto, o parâmetro ip-address pode ser qualquer endereço IP, desde que possa ser resolvido na tabela de roteamento. Isso está além do escopo desse curso, mas nós adicionamos esse ponto para manter a precisão técnica.

quarta-feira, 23 de maio de 2012

7-Zip

Eficiente e prática, enfim uma alternativa gratuita de qualidade para compactar e descompactar seus arquivos.

As pessoas compactam seus arquivos para torná-los mais leves durante as transferências e liberar mais espaço em seu disco. Então qual é o objetivo de se utilizar um compactador de arquivos grande e com licença limitada? Chegou a hora de você conhecer o 7-Zip, um compactador gratuito que tem ganhado cada vez mais espaço quando o assunto é compactar arquivos.

Por que ele é melhor?
  • Os principais compactadores de arquivos são pagos, mas o 7-Zip é completamente gratuito e pode ser utilizado por quanto tempo o usuário quiser, sem ser importunado com mensagens trial.
  • 7-Zip é muito mais leve que a maioria dos programas do gênero.
  • Sua eficiência também é superior a boa parte dos programas, capaz de comprimir mais os documentos e economizar ainda mais espaço.
  • Ótima compatibilidade, ele se adéqua perfeitamente à Área de trabalho do Windows e possui suporte para acesso rápido e arrasto de arquivos.
    Janela do programa.
Formato 7z
Não é coincidência que o programa leva o mesmo nome do formato, pois esta é a sua especialidade. Entre todas as vantagens do programa, certamente esta é a melhor de todas: um programa tão pequeno e leve utiliza como padrão um formato de compactação muito mais eficiente que os demais.
O Baixaki testou a compactação de três pastas diferentes (uma com imagens, outra com músicas e uma terceira com textos) nos formatos 7-ZIP, RAR e ZIP. compare suas eficiências abaixo.

Compare sua eficiência.

Os testes revelam que os três formatos conseguem uma eficiência similar com arquivos de imagens. Quanto aos arquivos de áudio, o 7z se manteve entre ambos os concorrentes, mas a eficiência do 7-Zip se destaca nos arquivos de texto. Seu resultado foi nitidamente superior aos formatos RAR e ZIP.
Funcionalidade

Quem já utilizou outros compactadores de arquivo vai se sentir bem à vontade com a interface do programa. Em sua área principal o usuário seleciona os arquivos e pastas com que deseja trabalhar e acima seleciona os ícones para compactar, descompactar ou ainda verificar se o arquivo está corrompido.

Dentro da opção “Ver”, é possível alterar diversas preferências na forma em que os arquivos são exibidos. Pode-se inclusive dividir esta área em dois painéis distintos, configurando-o como um prático gerenciador de arquivos.

Acesso rápido.

Para agilizar suas tarefas, arraste os arquivos com que deseja trabalhar para dentro da janela do programa. Outro atalho para as principais funções do programa é clicar com o botão direito do mouse sobre o arquivo e selecionar a opção 7-Zip.

7-Zip  suporta os seguintes formatos: 7z, ZIP, RAR, CAB, ARJ, LZH, CHM, GZIP, BZIP2, Z, TAR, CPIO, RPM e DEB.

Visite nossa sessão de downloads e baixe o programa:
http://diaadiaemti.blogspot.com.br/p/downloads.html

sábado, 19 de maio de 2012

Avast! Free Antivirus for Mac já está disponível

A AVAST Software, responsável pela aplicação antivírus mais popular do Mundo, lançou o "avast! Free Antivirus for Mac", a sua nova solução de segurança para sistemas OSX da Apple.

O novo avast! Free Antivirus for Mac é uma solução de segurança à prova de bala. Com esta aplicação, os utilizadores estão devidamente protegidos contra ameaças demalware, contra a receção e o envio de ficheiros infetados e podem facilmente fazer scans aos seus computadores, para encontrarem potenciais ameaças à segurança. É completamente gratuito para todos os utilizadores - para os que usam o computador em casa.

O avast! Free Antivirus for Mac chega ao Mercado numa altura em que os cibercriminosos estão a revelar as falências da ideia de invulnerabilidade do sistema OSX. Além da existência da botnet Flashback Trojan, com mais de 600 mil Macs infetados, o novo malware para OSX está a demonstrar a forma como estes computadores podem ser infetados através de uma simples visita a um website.


“Os utilizadores avast! têm estado bem protegidos de malware como o Flashback Trojan – mesmo enquanto usaram apenas a versão beta da nossa aplicação”, referiu Vince Steckler, CEO da AVAST Software. “A popularidade dos computadores Apple fez com que este universo se tornasse num alvo muito interessante – e vulnerável – para oscibercriminosos. Com o avast! Free Antivirus for Mac, estamos preparados para ajudar a eliminar esta janela de vulnerabilidades”.

O avast! Free Antivirus for Mac baseia-se no novo motor do avast! 7 antivirus, já utilizado por mais de 150 milhões de utilizadores ativos. A nova aplicação garante aos utilizadores de máquinas Apple três escudos defensivos diferentes: a proteção para a navegação na Net, para envio e receção de correio eletrónico e o motor de busca de ameaças nos ficheiros instalados no disco rígido do PC.

A AVAST Software conhece bem o cenário de ameaças no universo informático. A avast! CommunityIQ, a rede de sensores para a qual contribuem todos os utilizadores destas soluções, envia para o AVAST Virus Lab um stream contínuo de dados sobre malware encontrado. Por sua vez, os utilizadores recebem nas máquinas as atualizações necessárias para combaterem as novas ameaças.

O WebRep, o plugin de reputação anti-phishing/web da avast!, assegura aos adeptos de Mac todos os benefícios da comunidade avast!, combinando os comentários fornecidos pelos próprios utilizadores com as capacidades de deteção do Virus Lab e as garantias de bloqueio de sites de phishing.

Os utilizadores de Mac de famílias de “tecnologia mista” podem usar a funcionalidade da sua Avast! Account para vigiar a segurança dos seus computadores Mac e Windows. Esta funcionalidade gratuita permite que os utilizadores tenham sempre presente o estado operacional das soluções avast! instaladas em cada computador, independentemente do sistema operativo.

“Tal como fizemos com o Windows e Android, queremos que as pessoas compreendam que, mesmo que as ameaças sejam muito reais e perigosas, uma solução de segurança gratuita pode oferecer um excelente nível de proteção”, continuou Steckler.

O avast! Free Antivirus for Mac pode ser descarregado de avast.com e a partir dos mais conhecidos sites de downloads.


SOBRE A AVAST:

AVAST Software (www.avast.com) protege mais que 150 milhões de ativos e 211 milhões de utilizadores registrados com a segurança e aplicações de antivirus. O nosso portefolio inclui o novo avast! Free Mobile Security para Android, avast! Business Protection para redes empresariais, o premium avast! Internet Security com a SafeZoneTM virtualização de ambiente de trabalho, e avast! Free Antivirus, a aplicação gratuita para a segurança que é equiparada ou excede os produtos pagos da competição. Assente na rede dos sensores da CommunityIQ e suportada por inúmeros escudos de proteção, a performance da avast é certificada porVB100, ICSA Labs, e West Coast Labs.

Será que devo usar o Facebook como parte da estratégia digital?

Essa é uma das perguntas com bastante presença em salas de reuniões na hora de conversar sobre o que o cliente espera de uma estratégia digital e de como ele considera viável para seu mercado essa mesma estratégia. Afinal, ninguém melhor do que o próprio cliente para compreender o seu mercado.
Isso não quer dizer que o cliente irá guiar o projeto por completo, mas quer dizer que ele tem um valor extremo no processo de guia da compreensão maior do mercado para um profissional de marketing digital. Vale lembrar que se ele soubesse o que fazer nesse ambiente, ele não contrataria um profissional, portanto, é bom ressaltar que o profissional contratado passa a ter papel também decisivo no processo de desenvolvimento da marca no ambiente digital.
Voltando ao ponto principal, o Facebook. A resposta para a pergunta que deu título a esse post é: SIM!
O Facebook, apesar de ter atingido recentemente o número de 900 milhões de usuários, é uma rede em expansão. Crescendo aceleradamente e, por mais que alguns profissionais reclamem ou discordem, existem regras rígidas que estão mantendo o Facebook mais Clean - organizado ao máximo possível – e isso é ótimo para os negócios.
Mas não se engane, 900 milhões não quer dizer que realmente grande parte do seu público-alvo está por lá. Mas quer dizer que as possibilidades são imensas.
Nem só de Fãs vive uma FanPage…
Uma boa estratégia de Social Media aplicada em Facebook não está relacionada somente ao número de fãs que a página possui. Esqueça por alguns minutos aqueles cases de milhões de fãs que você tem visto aos montes, principalmente se você é uma micro ou média empresa. Normalmente investimentos necessários não são aprovados pelos diretores dessas empresas de menor porte. Algumas se quer tem rendimento para tanto…
Uma boa estratégia no início prepara possibilidades e faz testes de conteúdo na rede, posteriormente começa a publicar de acordo com o que foi possível relacionar de informações no primeiro período de testes, logo aplica algumas novas ou velhas estratégias e continua a mensuração de resultados – Sim, aqui também se faz presente a lógica de Web Analytics.
O que preciso para um estratégia ser eficiente?
Antes de tudo, disposição para permitir que o Analista de Social Media possa trabalhar com todo o conhecimento que tem adquirido durante seu tempo de trabalho, o que chamamos deexpertise.
Esteja aberto a negociação de uso do FacebookAds que, em resumo, é a maneira de anunciar conteúdo dentro do Facebook trazendo maior atenção para sua Fanpage ou links externos.
Esteja ciente que uma dobradinha muito eficiente é ter um Analista de Social Media e também um Gestor de Conteúdo. Um Analista de Social Media não necessariamente criará conteúdo, pois ele é responsável pela estratégia, por encontrar maneiras de criar interatividade, gerenciar a Fanpage e a publicidade no Facebook. Já um Gestor de Conteúdo pode muito bem usar os caminhos apontados pelo seu Analista de Social Media para o desenvolvimento de materiais de campanhas envolventes.
Outra dica importante é: Contrate ferramentas de apoio para facilitação do trabalho desses profissionais (pergunte a eles ou aceite as indicações que irão te fazer), além de maximizar o uso do tempo através dessas ferramentas, existe a redução de erros através de automatização de processos de muita interação humana.
Espero poder ter ajudado em algo. Um forte abraço e sucesso a todos.

MySql nos Campos de Pesquisa

Os índices ou index não são apenas para as chaves primárias ou chaves únicas. Se não houver nenhuma coluna na tabela que você irá procurar por, você quase sempre deve posicioná-los.


Como você pode ver, esta regra aplica-se também em uma busca parcial de uma string como “last_name LIKE ‘a%‘”, por exemplo. Ao pesquisar a partir do início da seqüência de caracteres, o MySQL é capaz de utilizar o índice nessa coluna.

Você também deve compreender que tipos de pesquisas não podem usar os index regulares. Por exemplo, ao procurar por uma palavra (por exemplo, “WHERE post_content LIKE ‘%apple%‘”), você não ter nenhum benefício de um índice normal. Neste caso é melhor usar outras ferramentas, como a pesquisa de texto com mysql ou construir sua própria solução de indexação.

Compartilhe Mouse e Teclado entre Computadores com o Input Director


Vamos ilustrar um cenário, você tem seu computador desktop e um notebook e você está trabalhando nos dois. Pode ser meio incomodo você ficar alternando entre o teclado do seu desktop e do seu notebook, assim como o mouse e o touchpad. Se eles estivessem lado a lado, seria interessante usar o mesmo mouse e teclado para os dois.

Já pensou em compartilhar mouse e teclado entre computadores? É isso que o Input Director faz! Não se trata de Dual Screen ou qualquer outra coisa do gênero, mas sim o compartilhamento desses periféricos via rede.

Como usar o Input Director

Primeiramente faça o download do programa nas máquinas que você queira utilizar. Em algumas versões do Windows ele exige que você esteja logado como Administrador para instalar, para isso basta clicar com o botão direito do mouse e em executar como administrador.

A instalação bem é simples, sempre seguindo aquela ideia: “next, next, finish”.

Após instalado o aplicativo nos computadores, é hora de configurar. Primeiro vamos definir o computador “Slave” (aquele que será acessado). Para isso, com o aplicativo aberto na aba “Main”, clique em “Enable as Slave”.


É importante saber os IPs das máquinas.

Depois vá até a aba “Slave Configuration”, aqui você encontra as opções de acesso. Existem três opções de acesso: qualquer um pode acessar, computadores de uma determinada faixa de rede, ou um IP em específico.

Neste tutorial vamos usar a 3º opção.

Clique em “Add” e insira o IP do computador “Master”, o Master é o pricipal, aquele que vai acessar o Slave.


Agora é hora de configurar o computador principal. Abra o aplicativo clique em “Enable as Master”. Clique na aba “Master Configuration” e o IP do computador Slave. Pronto! já esta funcionado.


Você pode brincar com as opções extras, como a posição em que você acesso o mouse ao outro computador ou as opções das outras abas.

Conclusão

O aplicativo é bastante um útil e o melhor, ele é Freeware. Das coisas mais interessantes é que eu posso copiar do meu notebook e colar no meu desktop, por exemplo. Se você tem essas necessidade, não tem porque não usar.

quinta-feira, 17 de maio de 2012

Função do Roteador

Função do roteador

O roteador é um computador com uma finalidade especial que desempenha um papel fundamental no funcionamento de qualquer rede de dados. Os roteadores são os principais responsáveis por interconectar redes:
  • Determinando o melhor caminho para enviar pacotes 
  • Encaminhando pacotes para o destino
Os roteadores executam o encaminhamento de pacotes, aprendendo as redes remotas e mantendo informações de roteamento. O roteador é a junção ou a interseção que conecta várias redes IP. A decisão primária de encaminhamento dos roteadores se baseia nas informações de Camada 3, o endereço IP de destino.


A tabela de roteamento do roteador é usada para localizar a melhor correspondência entre o IP de destino de um pacote e um endereço de rede na tabela de roteamento. A tabela de roteamento acabará determinando a interface de saída que deve encaminhar o pacote, e o roteador encapsulará esse pacote no quadro de enlace de dados apropriado a essa interface de saída.

sábado, 12 de maio de 2012

Navegando em sites Bloqueados

Várias empresas precisam bloquear sites como Orkut e Facebook para evitar o abuso do vício por alguns usuários. Geralmente o administrador de redes bloqueia os sites por palavras chaves ou pelo IP, sendo por palavras mais abrangente.


















O que você deve fazer é procurar por sites que oferecem um serviço de mascarar o site, como Ninjaproxy ou Speedhide. Neses sites você só precisa colocar o site que quer entrar e ele carrega para você criptografado. Experimente:
Se você é administrador da rede, bloquei esses sites e procure por outros.

Infecção por Zeus Ronda Falso Patch Tuesday


O termo “Patch Tuesday” tornou-se bastante conhecido, e é tão intimamente ligado à Microsoft que não é de admirar que os fabricantes de malware estejam utilizando-o para adicionar uma aura de legitimidade a seus e-mails com spam. Como os patches mais recentes supostamente são liberados numa terça-feira, eles deram início a uma corrida sagaz e golpista, que contém um link para uma variante do Trojan Zeus, que vem disfarçado de atualização.

“O executável (fake patch) está sendo hospedado em um domínio comprometido, e na hora de escrever existe uma taxa de detecção de 11% no VirusTotal,” segundo um alerta dos pesquisadores da Websense.

A mensagem parece muito legítima – os cabeçalhos foram feitos para uma “percepção” de que ela está vindo da Microsoft Brasil, o texto da mensagem é escrita em Inglês e Francês (o país duas línguas oficiais) e não há erros de ortografia tão evidentes.

O que poderia servir como dica aos usuários para o fato de que esta é uma mensagem falsa, é exatamente a linha de assunto (“URGENTE: Critical Security Update”), com o qual os atacantes tentam gerar um senso de urgência com a intenção de fazer com que os usuários fiquem desatentos e não tomem os cuidados necessários.

Cinco Ferramentas Gratuitas para Proteger seu PC




Abaixo relaciono alguns programas úteis para o dia-a-dia.

Microsoft Security Essentials 2: Com proteção anti-vírus e anti-spyware e firewall integrado, o Security Essentials provê proteção sólida contra as ameaças mais comuns sem prejudicar o desempenho de seu PC ou incomodá-lo com lembretes de atualização.

Mantenha o software em dia: agora que quase qualquer aplicativo em um PC pode acessar a Internet, há dezenas de furos de segurança em potencial em nossos sistemas. O Secunia Personal Software Inspector (PSI) ajuda a reduzir os riscos procurando por atualizações de segurança em todos os programas instalados em seu computador. Quando o executei, o PSI encontrou sete programas desatualizados em minha máquina e me indicou onde baixar as atualizações necessárias. Me sinto muito mais seguro.

Exterminador de arquivos: quando você “apaga” um arquivo de seu computador, o sistema operacional apenas marca o espaço ocupado por ele como “vazio” e eventualmente o reutiliza. Mas há ferramentas que podem recuperar estes arquivos “apagados”, o que pode expor informações se seu computador cair nas mãos de pessoas mal-intencionadas. Para apagar realmente os arquivos use o Eraser, um utilitário que usa técnicas aprovadas pelo departamento de defesa dos EUA para se fazer a tarefa, sobrescrevendo os dados sucessivamente até que estejam irreconhecíveis e irrecuperáveis.

USB seguro: você confia naquele pendrive que seu amigo quer plugar no seu PC? Se você usa o Panda USB Vaccine, não precisa se preocupar: este utilitário neutraliza ameaças comuns que chegam através de pendrives e discos removíveis, e impede que o malware “pule” para seu HD.
Panda USB Vaccine: proteção contra malware distribuído em pendrives

Guardião das senhas: você quer usar seus sites favoritos sem ter de ficar lembrando uma dúzia de senhas diferentes por dia? Em vez de usar a mesma senha em todos eles (o que é um tremendo risco de segurança) experimente o LastPass, um utilitário que armazena as senhas de todos os seus sites favoritos protegidos por uma “senha mestra” de sua escolha.

Ele se integra ao Internet Explorer, Chrome, Firefox e Safari, pode preencher formulários de login para você e tem uma ferramenta para geração automática de senhas seguras. Usuários da versão Premium (que custa apenas US$ 1 por mês) também tem acesso a aplicativos para Android, iOS, Symbian, Windows Phone e Blackberry. É essencial.

quinta-feira, 10 de maio de 2012

Apresentando a Tabela de Roteamento

Apresentando a tabela de roteamento

A principal função de um roteador é encaminhar um pacote para sua rede de destino, que é o endereço IP de destino do pacote. Para isso, um roteador precisa pesquisar as informações de roteamento armazenadas em sua tabela de roteamento.

Uma tabela de roteamento é um arquivo de dados na RAM usada para armazenar informações de rota sobre redes conectadas diretamente e remotas. A tabela de roteamento contém associações de rede/próximo salto. Essas associações informam a um roteador que, em termos ideais, um determinado destino pode ser alcançado enviando-se o pacote para um roteador específico que representa o "próximo salto" a caminho do destino final. A associação de próximo salto também pode ser a interface de saída para o destino final.

A associação rede/interface de saída também pode representar o endereço de rede de destino do pacote IP. Essa associação ocorre nas redes do roteador conectadas diretamente.

Uma rede conectada diretamente é uma rede acoplada diretamente a uma das interfaces do roteador. Quando a interface de um roteador é configurada com um endereço IP e uma máscara de sub-rede, a interface se torna um host na rede acoplada. O endereço de rede e a máscara de sub-rede da interface, além do tipo de interface e o número, são inseridos na tabela de roteamento como uma rede conectada diretamente. Quando um roteador encaminha um pacote para um host, como um servidor Web, o host está na mesma rede da rede conectada diretamente de um roteador.

Uma rede remota é uma rede que não está conectada diretamente ao roteador. Em outras palavras, uma rede remota é uma rede que só pode ser alcançada enviando-se o pacote para outro roteador. As redes remotas são adicionadas à tabela de roteamento usando um protocolo de roteamento dinâmico ou configurando rotas estáticas. Rotas dinâmicas são rotas para redes remotas que foram aprendidas automaticamente pelo roteador, usando um protocolo de roteamento dinâmico. Rotas estáticas são rotas para redes configuradas manualmente por um administrador de rede.

Nota: A tabela de roteamento com suas redes conectadas diretamente, as rotas estáticas e as rotas dinâmicas serão apresentadas nas seções a seguir e abordadas com mais detalhes ao longo deste curso.

As seguintes analogias podem ajudar a esclarecer o conceito de rotas conectadas, estáticas e dinâmicas:
  • Rotas conectadas diretamente – Para visitar um vizinho, você só precisa descer a rua onde mora. Esse caminho é semelhante a uma rota conectada diretamente porque o "destino" está disponível diretamente por meio da "interface conectada", a rua.
  • Rotas estáticos – Um trem usa a mesma ferrovia sempre para uma rota especificada. Esse caminho é semelhante a uma rota estática porque o caminho para o destino é sempre o mesmo.
  • Rotas dinâmicas – Ao dirigir um carro, você pode escolher um caminho diferente "dinamicamente" com base no tráfego, no tempo ou em outras condições. Esse caminho é semelhante a uma rota dinâmica porque você pode escolher um novo caminho em muitos pontos diferentes para o destino ao longo do caminho.
O comando show ip route

Como mostrado na figura, a tabela de roteamento é exibida com o comando show ip route. Neste momento, não houve nenhuma rota estática configurada nem qualquer protocolo de roteamento dinâmico habilitado. Portanto, a tabela de roteamento de R1 só mostra as redes do roteador conectadas diretamente. Para cada rede listada na tabela de roteamento, as seguintes informações são incluídas:
  • C - As informações nesta coluna denotam a origem das informações da rota, a rede conectada diretamente, a rota estática ou um protocolo de roteamento dinâmico. C representa uma rota conectada diretamente.
  • 192.168.1.0/24 - Este é o endereço de rede e a máscara de sub-rede da rede conectada diretamente ou remota. Nesse exemplo, ambas as entradas na tabela de roteamento, 192.168.1./24 e 192.168.2.0/24, são redes conectadas diretamente.
  • FastEthernet 0/0 - As informações ao término da entrada da rota representam a interface de saída e/ou o endereço IP do roteador de próximo salto. Nesse exemplo, FastEthernet 0/0 e Serial0/0/0 são as interfaces de saída usadas para alcançar essas redes.
Clique na imagem para ampliar

Quando a tabela de roteamento inclui uma entrada de rota para uma rede remota, informações adicionais são incluídas, como a métrica de roteamento e a distância administrativa. A métrica de roteamento, a distância administrativa e o comando show ip route são explicados com mais detalhes nos capítulos posteriores.

Os PCs também têm uma tabela de roteamento. Na figura, você pode ver a saída de comando route print. O comando revela o gateway padrão configurado ou adquirido, as redes conectadas, loopback, multicast e de broadcast. A saída de comando route print não será analisado durante este curso. Isso é mostrado aqui para enfatizar o ponto que todos os dispositivos IP configurados devem ter uma tabela de roteamento.

Configuração Básica do roteador

Configuração básica do roteador

Durante a configuração de um roteador, são executadas determinadas tarefas básicas, inclusive:
  • Nomeação do roteador
  • Definição de senhas
  • Configuração de interfaces
  • Configuração de um banner
  • Salvando as alterações em um roteador
  • Verificação da configuração básica e das operações do roteador
Você já deve estar familiarizado com estes comandos de configuração. No entanto, faremos uma breve revisão. Começamos nossa revisão pressupondo que o roteador não tenha um arquivo startup-config atual.

O primeiro prompt é exibido no modo de usuário. O modo de usuário permite exibir o estado do roteador, mas não modificar sua configuração. Não confunda o termo "usuário" como usado no modo de usuário com usuários da rede. O modo de usuário se destina aos técnicos de rede, operadores e engenheiros que têm a responsabilidade de configurar dispositivos de rede.

Router>

O comando enable é usado para acessar o modo EXEC privilegiado. Esse modo permite ao usuário fazer alterações na configuração do roteador. O prompt do roteador irá passar de ">" para "#" nesse modo.

Router>enable
Router#

Nomes de host e senhas

A figura mostra a sintaxe de comando de configuração básica do roteador usada para configurar R1 no exemplo a seguir. Você pode abrir a atividade do Packet Tracer 1.2.2 e acompanhar ou aguardar o término desta seção para abri-la.

Primeiro, acesse o modo de configuração global.

Router#config t

Em seguida, aplique um nome de host exclusivo ao roteador.

Router(config)#hostname R1
R1(config)#

Agora, configure uma senha a ser usada para acessar o modo EXEC privilegiado. Em nosso ambiente de laboratório, usaremos a senha class. No entanto, em ambientes de produção, os roteadores devem ter senhas fortes. Consulte os links ao término desta seção para obter mais informações sobre como criar e usar senhas fortes.

Router(config)#enable secret class

Em seguida, configure as linhas de console e Telnet usando a senha cisco. Mais uma vez, a senha cisco é usada exclusivamente em nosso ambiente de laboratório. O comando login habilita a verificação da senha na linha. Se você não inserir o comando login na linha de console, o usuário terá acesso à linha sem inserir uma senha.

R1(config)#line console 0
R1(config-line)#password cisco
R1(config-line)#login
R1(config-line)#exit
R1(config)#line vty 0 4
R1(config-line)#password cisco
R1(config-line)#login
R1(config-line)#exit

Configurando um banner

No modo de configuração global, configure o banner message-of-the-day (motd). Um caractere de delimitação, como "#", é usado no início e no fim da mensagem. O delimitador permite configurar um banner em várias linhas, como mostrado aqui.

R1(config)#banner motd #

Digite a mensagem TEXT. Fim com o caractere '#'.
******************************************
AVISO!! Acesso Não Autorizado Proibido!!
******************************************
#

Configurar um banner apropriado faz parte de um bom plano de segurança. Um banner deve, pelo menos, advertir contra o acesso não autorizado. Jamais configure um banner com "boas-vindas" para um usuário não autorizado.

Links

Para discussões sobre como usar senhas fortes, consulte:

"Resposta da Cisco aos ataques de dicionário no Cisco LEAP," em http://www.cisco.com/en/US/products/hw/wireless/ps430/prod_bulletin09186a00801cc901.html#wp1002291 (em inglês).

"Senhas fortes: Como criá-las e usá-las," em http://www.microsoft.com/athome/security/privacy/password.mspx (em inglês).

Clique na imagem para ampliar

Configuração da interface do roteador

Agora você irá configurar as interfaces de roteador individuais com endereços IP e outras informações. Primeiro, acesse o modo de configuração da interface, especificando o tipo de interface e o número. Em seguida, configure o endereço IP e a máscara de sub-rede:

R1(config)#interface Serial0/0/0
R1(config-if)#ip address 192.168.2.1 255.255.255.0

É uma prática recomendada configurar uma descrição em cada interface para ajudar a documentar as informações de rede. O texto da descrição está limitado a 240 caracteres. Em redes de produção, uma descrição pode ser útil na solução de problemas, fornecendo informações sobre o tipo de rede a que a interface está conectada e se há qualquer outro roteador nessa rede. Se a interface se conectar a um ISP ou a uma operadora de serviço, será útil inserir a conexão de terceiros e informações de contato; por exemplo:

Router(config-if)#description Ciruit#VBN32696-123 (help desk:1-800-555-1234)

Em ambientes de laboratório, insira uma descrição simples que irá ajudar a solucionar problemas em situações; por exemplo:

R1(config-if)#description Link to R2

Depois de configurar o endereço IP e a descrição, a interface deve ser ativada com o comando no shutdown. Isso é semelhante a ligar a interface. A interface também deve ser conectada a outro dispositivo (um hub, um switch, outro roteador etc.) para que a camada física permaneça ativa.

Router(config-if)#no shutdown

Nota: Durante o cabeamento de um enlace serial ponto-a-ponto em nosso ambiente de laboratório, uma extremidade do cabo é marcada como DTE e a outra, como DCE. O roteador com a extremidade DCE do cabo conectado à sua interface serial precisará do comando adicional clock rate configurado nessa interface serial. Essa etapa só é necessária em um ambiente de laboratório, sendo explicada com mais detalhes no Capítulo 2, "Roteamento estático".

R1(config-if)#clock rate 64000

Repita os comandos de configuração da interface em todas as demais interfaces a serem configuradas. Em nosso exemplo de topologia, a interface FastEthernet precisa ser configurada.

R1(config)#interface FastEthernet0/0
R1(config-if)#ip address 192.168.1.1 255.255.255.0
R1(config-if)#description R1 LAN
R1(config-if)#no shutdown

Cada interface pertence a uma rede diferente

Neste momento, observe que cada interface deve pertencer a uma rede diferente. Embora o IOS permita configurar um endereço IP da mesma rede em duas interfaces diferentes, o roteador não irá ativar a segunda interface. 

Por exemplo, e se você tentar configurar a interface FastEthernet 0/1 em R1 com um endereço IP na rede 192.168.1.0/24? FastEthernet 0/0 já recebeu um endereço nessa mesma rede. Se tentar configurar outra interface, FastEthernet 0/1, com um endereço IP que pertence à mesma rede, você irá obter a seguinte mensagem:

R1(config)#interface FastEthernet0/1
R1(config-if)#ip address 192.168.1.2 255.255.255.0
192.168.1.0 overlaps with FastEthernet0/0

Se houver uma tentativa de habilitar a interface com o comando no shutdown, a seguinte mensagem será exibida:

R1(config-if)#no shutdown
192.168.1.0 overlaps with FastEthernet0/0
FastEthernet0/1: incorrect IP address assignment

Observe que a saída de comando show ip interface brief mostra que a segunda interface configurada para a rede 192.168.1.0/24, FastEthernet 0/1, ainda está desativada. 

R1#show ip interface brief
<saída omitida>
FastEthernet0/1 192.168.1.2 YES manual administratively down down

Clique na imagem para ampliar

Verificando a Configuração básica do roteador

No exemplo atual, todos os comandos de configuração básica do roteador anteriores foram inseridos e armazenados imediatamente no arquivo de configuração em execução de R1. O arquivo running-config é armazenado na RAM, sendo o arquivo de configuração usado pelo IOS. A próxima etapa é verificar os comandos inseridos, exibindo a configuração em execução com o seguinte comando:

R1#show running-config

Agora que os comandos de configuração básica foram inseridos, é importante salvar o running-config na memória não volátil, a NVRAM do roteador. Dessa forma, no caso de uma queda de energia ou de uma recarga acidental, o roteador poderá ser inicializado com a configuração atual. Depois que a configuração do roteador foi concluída e testada, é importante salvar o running-config no startup-config como o arquivo de configuração permanente.

R1#copy running-config startup-config

Depois de aplicar e salvar a configuração básica, você poderá usar vários comandos para verificar se configurou corretamente o roteador. Clique no botão apropriado na figura para ver uma listagem da saída de cada comando. Todos esses comandos são abordados com mais detalhes em capítulos posteriores. Por ora, comece a se familiarizar com a saída.

R1#show running-config

Esse comando exibe a configuração em execução atual armazenada na RAM. Com algumas exceções, todos os comandos de configuração usados serão inseridos no running-config e implementados imediatamente pelo IOS. 

R1#show startup-config

Esse comando exibe o arquivo de configuração de inicialização armazenado na NVRAM. Essa é a configuração que o roteador irá usar na próxima reinicialização. Essa configuração não é alterada a menos que a configuração em execução atual seja salva na NVRAM com o comando copy running-config startup-config. Observe na figura que a configuração de inicialização e a configuração em execução são idênticas. Elas são idênticas porque a configuração em execução não foi alterada desde a última vez em que foi salva. Também observe que o comando show startup-config exibe quantos bytes de NVRAM a configuração salva está usando.

R1#show ip route

Esse comando exibe a tabela de roteamento que o IOS está usando atualmente para escolher o melhor caminho para suas redes de destino. Neste momento, R1 só tem rotas para suas redes conectadas diretamente por meio de suas próprias interfaces.

R1#show interfaces

Esse comando exibe todos os parâmetros de configuração da interface e as estatísticas. Algumas dessas informações são abordadas posteriormente no currículo e no CCNP. 

R1#show ip interface brief

Esse comando exibe informações sumarizadas de configuração da interface, inclusive endereço IP e status de interface. Esse comando é uma ferramenta útil para solucionar problemas, além de ser uma forma rápida de determinar o status de todas as demais interfaces do roteador.

terça-feira, 8 de maio de 2012

Processo de Inicialização do Roteador

Processo de inicialização

Há quatro fases principais no processo de inicialização:

1. Executando o POST
2. Carregando o programa de bootstrap
3. Localizando e carregando o software Cisco IOS
4. Localizando e carregando o arquivo de configuração de inicialização ou acessando o modo de configuração

Clique na imagem para ampliar

1. Executando o POST.

O Auto-teste de inicialização (POST, Power-On Self Test)é um processo comum que ocorre em quase todos os computadores durante a inicialização. O processo POST é usado para testar o hardware do roteador. Quando o roteador for ligado, um software no chip ROM irá executar o POST. Durante esse auto-teste, o roteador executa o diagnóstico a partir da ROM em vários componentes de hardware, inclusive CPU, RAM e NVRAM. Depois que o POST for concluído, o roteador irá executar o programa de bootstrap.

2. Carregando o programa de bootstrap

Depois do POST, o programa de bootstrap é copiado da ROM para a RAM. Uma vez na RAM, a CPU executa as instruções no programa de bootstrap. A tarefa principal do programa de bootstrap é localizar o Cisco IOS e carregá-lo na RAM.

Nota: A esta altura, se tiver uma conexão de console com o roteador, você irá começar a ver a saída na tela.

3. Localizando e carregando o IOS Cisco

Localizando o software IOS Cisco. O IOS costuma ser armazenado na memória flash, mas também pode ser armazenado em outros locais como um servidor de Protocolo de Transferência de Arquivos Trivial (TFTP, Trivial File Transfer Protocol).

Se uma imagem completa do IOS não puder ser localizada, uma versão dimensionada do IOS será copiada da ROM para a RAM. Essa versão do IOS é usada para ajudar a diagnosticar qualquer problema, podendo ser usada para carregar uma versão completa do IOS na RAM.

Nota: Um servidor TFTP costuma ser usado como um servidor de backup para o IOS, mas também pode ser usado como um ponto central para armazenar e carregar o IOS. O gerenciamento do IOS e o uso do servidor TFTP são abordados em um curso posterior.

Carregando o IOS. Alguns dos roteadores Cisco mais antigos executavam o IOS diretamente a partir da memória flash, mas os modelos atuais copiam o IOS para a RAM para execução pela CPU.

Nota: Quando o IOS começar a ser carregado, você talvez veja uma cadeia de caracteres de sustenidos (#), como os mostrados na figura, enquanto a imagem é descompactada.

4. Localizando e carregando o arquivo de configuração

Localizando o arquivo de configuração de inicialização Depois que o IOS for carregado, o programa de bootstrap irá pesquisar o arquivo de configuração de inicialização, conhecido como startup-config, na NVRAM. Esse arquivo tem os comandos de configuração e os parâmetros já salvos, inclusive:
endereços de interface
informações de roteamento
senhas
qualquer outra configuração salva pelo administrador de rede

Se o arquivo de configuração de inicialização, startup-config, estiver localizado na NVRAM, ele será copiado para a RAM como o arquivo de configuração em execução, running-config.

Nota: Se não houver o arquivo de configuração de inicialização na NVRAM, o roteador talvez procure um servidor TFTP. Se o roteador detectar a existência de um enlace ativo para outro roteador configurado, ele irá enviar um broadcast à procura de um arquivo de configuração no enlace ativo. Essa condição fará com que o roteador pause, mas você acabará vendo uma mensagem de console como a seguinte:

<o roteador pára aqui ao difundir para um arquivo de configuração em um enlace ativo>

%Error opening tftp://255.255.255.255/network-confg (Timed out)
%Error opening tftp://255.255.255.255/cisconet.cfg (Timed out)

Executando o arquivo de configuração. Se um arquivo de configuração de inicialização estiver localizado na NVRAM, o IOS irá carregá-lo na RAM como running-config e executar os comandos no arquivo, uma linha por vez. O arquivo running-config contém endereços de interface, inicia processos de roteamento, configura senhas de roteador e define outras características do roteador.

Acesse o modo de configuração, Setup Mode, (opcional). Se o arquivo de configuração de inicialização não puder ser localizado, o roteador irá solicitar ao usuário o acesso ao modo de configuração (setup mode). Modo de configuração é uma série de perguntas que solicita ao usuário informações de configuração básicas. O modo de configuração não deve ser usado para inserir configurações de roteador complexas, normalmente não sendo usado por administradores de rede.

Ao inicializar um roteador que não contenha um arquivo de configuração de inicialização, você verá a seguinte pergunta após o carregamento do IOS:

Would you like to enter the initial configuration dialog? [yes/no]: no

O modo de configuração não será usado neste curso para configurar o roteador. Quando solicitado a acessar o modo de configuração (setup mode), sempre responda não. Se responder sim e acessar o modo de configuração (setup mode), você poderá pressionar Ctrl-C a qualquer momento para encerrar o processo de configuração.

Quando o modo de configuração não é usado, o IOS cria um running-config padrão. O running-config padrão é um arquivo de configuração básico que inclui as interfaces do roteador, as interfaces de gerenciamento e determinadas informações padrão. O running-config padrão não contém nenhum endereço de interface, nenhuma informação de roteamento, senhas ou outras informações de configuração específicas.

Interface da linha de comando

Dependendo da plataforma e do IOS, o roteador pode fazer a seguinte pergunta antes de exibir o prompt:

Would you like to terminate autoinstall? [yes]: <Enter>
Press the Enter key to accept the default answer.
Router>

Nota: Se um arquivo de configuração de inicialização for localizado, o running-config talvez contenha um nome de host e o prompt irá exibir o nome de host do roteador.

Quando o prompt é exibido, o roteador já está executando o IOS com o arquivo de configuração em execução atual. Agora o administrador de rede pode começar a usar comandos do IOS no roteador.

Nota: O processo de inicialização é abordado com mais detalhes em um curso posterior.

Introdução a Roteadores

As redes atuais têm um impacto significativo em nossas vidas – alterando a forma como nós vivemos, trabalhamos e nos divertimos. As redes de computadores – e, em um contexto mais amplo, a Internet – permitem às pessoas se comunicar, colaborar e interagir de maneira que elas jamais viram. Nós usamos a rede de várias formas, inclusive aplicativos Web, telefonia IP, videoconferência, jogos interativos, comércio eletrônico, educação e muito mais.


No centro da rede está o roteador. Resumidamente, um roteador conecta uma rede a outra. Por isso, o roteador é responsável pela entrega de pacotes em redes diferentes. O destino do pacote IP pode ser um servidor Web em outro país ou um servidor de email na rede local. É a responsabilidade dos roteadores entregar esses pacotes em tempo hábil. A efetividade da comunicação de redes interconectadas depende, amplamente, da capacidade dos roteadores de encaminhar pacotes da maneira mais eficiente possível.

Agora os roteadores estão sendo adicionados a satélites no espaço. Esses roteadores terão a capacidade de rotear tráfego IP entre satélites no espaço de maneira muito semelhante à forma como esses pacotes são movidos na Terra, o que reduz atrasos e oferece maior flexibilidade de networking.

Além do encaminhamento de pacotes, um roteador também presta outros serviços. Para atender às demandas das redes atuais, os roteadores também são usados para:
Assegurar uma disponibilidade 24x7 (24 horas por dia, 7 dias por semana). Para ajudar a garantir o alcanço da rede, os roteadores usam caminhos alternativos, caso haja falha no caminho primário.
Fornecer serviços integrados de dados, vídeo e voz em redes com e sem fio. Os roteadores usam a priorização de Qualidade de Serviço (QoS, Quality of Service) dos pacotes IP para assegurar que o tráfego em tempo real, como voz, vídeo e dados críticos não sejam descartados ou atrasados.
Atenuar o impacto de worms, vírus e outros ataques na rede, permitindo ou negando o encaminhamento de pacotes.

Todos esses serviços são criados de acordo com o roteador e sua responsabilidade primária de encaminhar pacotes de uma rede para a próxima. Isso só acontece por causa da capacidade do roteador de rotear pacotes entre redes nas quais os dispositivos em redes diferentes podem se comunicar.

segunda-feira, 7 de maio de 2012

Como construir um Widget para o Twitter com ASP.NET

Neste tutorial, você vai aprender a desenvolver um widget Twitter para ASP.NET sob a forma de um controle de servidor reutilizáveis, como transformar automaticamente URLs em links, e cache para acelerar o carregamento da página.

Passo 1 Introdução

Para seguir este tutorial, tudo que você precisa é o Visual Studio (Você pode usar MonoDevelop , projeto Mono, se você não estiver no Windows, embora não haja garantias e nem suporte pela Microsoft, mas você pode tentar.) ou ainda utilizar a versão Web Developer Express Edition.

Você também vai precisar de conhecimento de C# 3.0, como este tutorial faz uso de algumas das novas funcionalidades da linguagem, como a utilização da palavra reservada var.

Passo 2 Criando o Controle

O ASP.NET inclui um recurso útil conhecido como Server Controls. Estas são marcas personalizadas que visam ajudar os desenvolvedores com a estrutura de seu código. Quando uma página usando um controle de servidor é solicitado, o ASP.NET runtime executa o método Render (), e inclui a saída na página final.

Clique na imagem para ampliar

Depois de criar uma nova Web Application no Visual Studio, clique com o botão direito no Solution Explorer e adicione um novo item para a aplicação. Selecione ASP.NET Server Control, e dê um nome. Aqui, eu chamei de Twidget.cs, mas fique à vontade para chamá-lo com quiser. Cole o seguinte código, e não se preocupe se tudo parece um pouco estranho.

using System;
using System.Collections.Generic;
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.Script.Serialization; 
using System.Net;

namespace WebApplication1 
{
     public class Twidget : Control 
     { 
            public string Account { get; set; }
            public int Tweets { get; set; } 

            protected override void Render(HtmlTextWriter writer) 
           {
                    writer.Write("<ul>"); 

                    foreach (var t in GetTweets().Take(Tweets)) 
                            writer.Write("<li>{0}</li>", HttpUtility.HtmlEncode(t)); 

                   writer.Write("</ul>");
           }

           public List<string> GetTweets()
           { 
                    var ls = new List<string>();

                    var jss = new JavaScriptSerializer();
                    var d = jss.Deserialize<List<Dictionary<string, object>>>(
                            new WebClient()
                            .DownloadString("http://api.twitter.com/1/statuses/user_timeline.json?screen_name=" + Account)
                            );

                    foreach (var x in d)
                            ls.Add((string)x["text"]);

                    return ls; 
           } 
     } 
}

Passo 3 usando o controle

Agora temos o código para o nosso widget Twitter. Abra a página Default.aspx e coloque o seguinte código após o :

<%@ Register TagPrefix="widgets" Namespace="WebApplication1" Assembly="WebApplication1" %>

Sinta-se livre para mudar o TagPrefix para o que quiser, mas certifique-se que o atributo namespace esta definido corretamente para qualquer espaço que você colocou o código dentro do widget , e veja também se o atributoAssembly está definido para o nome do seu aplicativo web (no nosso caso , WebApplication1).

Uma vez que você registrou o prefixo, você pode começar a usá-lo. Cole o seguinte código em algum lugar na sua página, e mais uma vez, sinta-se livre para alterar os atributos que desejar.

<widgets:Twidget runat="server" Account="Sua-conta-no-Twitter" Tweets="10" />

Se você tiver feito tudo corretamente, você deve ver uma página semelhante a esta quando você executar o aplicativo Web:

Clique na imagem para ampliar

Etapa 4 Melhorando Algumas Coisas …

O controle que nós temos no momento é bastante rudimentar. Para dar uma melhorada vamos tornar os links clicáveis.

Encontre o loop foreach no método Render () e desfazer-se completamente. Substitua-a por isso:
// Você precisa importar o uso de expressões regulares, cole isso junto com os outro using using System.Text.RegularExpressions;

//Substitua esse foreach pelo que já havia no código anterior foreach (var t in GetTweets().Take(Tweets))
        string s = Regex.Replace( 
                HttpUtility.HtmlEncode(t),
               @"[a-z]+://[^\s]+",
               x =&gt; "<a href="&quot; + x.Value.Replace(&quot;">" + x.Value + "</a>",
               RegexOptions.Compiled | RegexOptions.IgnoreCase
                );
        writer.Write("<li>{0}</li>", s); 
}

Vamos entender o Regex.Replace () na linha 6.

O primeiro parâmetro é a entrada do Regex. Neste caso, é apenas o texto do tweet após a passagem através HttpUtility.HtmlEncode (). A entrada é então comparado com o segundo parâmetro que é uma expressão regular concebido para corresponder a uma URL.

Ao final, deve aparece algo parecido com isso:

Clique na imagem para ampliar

Etapa 5 Caching

Há um grande problema com o código acima, e que é que ele não armazena em cache a resposta da API do Twitter. Isto significa que toda vez que alguém carrega sua página, o servidor tem que fazer uma solicitação para a API do Twitter e esperar por uma resposta. Isso pode diminuir seu tempo de carregamento da página e também pode deixar você mais vulnerável a um ataque de negação de serviço. Podemos resolver tudo isso implementando um cache.

Embora a estrutura básica do código do controle permanece após a implementação de cache, há muitas pequenas alterações. Observe:

using System;
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.Script.Serialization; 
using System.Net; 
using System.Threading; 
using System.Text.RegularExpressions; 

namespace WebApplication1 
      public class Twidget : Control 
     { 
            public string Account { get; set; }
            public int Tweets { get; set; } 
            public int CacheTTL { get; set; } 

            static Dictionary<string, CachedData<List<string>>> Cache = new Dictionary<string, CachedData<List<string>>>(); 

            protected override void Render(HtmlTextWriter writer) 
            { 
                   writer.Write("<ul>");
            
                   foreach (var t in GetTweets().Take(Tweets)) 
                  {
                        string s = Regex.Replace(
                               HttpUtility.HtmlEncode(t),
                               @"[a-z]+://[^\s]+",
                                x => "<a href='" + x.Value.Replace("'", "&quot;") + "'>" + x.Value + "</a>",
                                RegexOptions.Compiled | RegexOptions.IgnoreCase 
                                );

                        writer.Write("<li>{0}</li>", s);
                  }

                  writer.Write("</ul>");
            }

            public List<string> GetTweets() 
            { 
                  if (!Cache.Keys.Contains(Account) 
                        || (DateTime.Now - Cache[Account].Time).TotalSeconds > CacheTTL 
                        ) 
                        new Thread(Update).Start(Account);
                     
                  if (!Cache.Keys.Contains(Account)) 
                        return new List<string>();

                  return Cache[Account].Data;
            } 
 
             public static void Update(object acc)
            { 
                  try
                  { 
                        string Account = (string)acc;

                        var ls = new List<string>();

                        var jss = new JavaScriptSerializer();
                        var d = jss.Deserialize<List<Dictionary<string, object>>>(
                                new WebClient()
                                .DownloadString("http://api.twitter.com/1/statuses/user_timeline.json?screen_name=" + Account) 
                                );

                        foreach (var x in d) 
                                ls.Add((string)x["text"]);

                        if (!Cache.Keys.Contains(Account)) 
                                Cache.Add(Account, new CachedData<List<string>>());

                        Cache[Account].Data = ls;
                  } 
                  catch (Exception) { }
            }
     }

     class CachedData<T>
     { 
            public DateTime Time { get; private set; }

            T data;
            public T Data {
                  get { 
                        return data; 
                  } 
                  set          
                  { 
                        Time = DateTime.Now;
                        data = value; 
                  } 
            } 
     } 
}

O método Render () permanece inalterado, mas há algumas mudanças bastante drásticas em algumas partes. Nós mudamos o GetTweets () método, adicionou uma nova propriedade (CacheTTL), acrescentou um campo particular estático (Cache), e há ainda toda uma nova classe – CachedData.

O método GetTweets() não é mais responsável por falar com a API. Em vez disso, ele só retorna os dados no cache. Se detectar que a conta Twitter solicitado não tenha sido ainda colocado em cachê, ele irá gerar um segmento separado de forma assíncrona para atualizar o cache do tweet. Note que todo o corpo do método Update () é encerrado em um bloco try / catch, pois embora uma exceção no segmento página apenas exibe uma mensagem de erro para o usuário, se ocorrer uma exceção em outro segmento, ele irá desenrolar de todos os caminho de volta até a pilha e eventualmente travar o processo de trabalho responsável por atender toda a sua aplicação web.

O cache tweet é implementado como uma string <Dictionary, CachedData <string>>, onde o nome do usuário da conta do Twitter que está sendo armazenado em cache é a chave, e uma instância da classe CachedData <T> é o valor. A classe CachedData <T> é uma classe genérica e pode ser usado com qualquer tipo. Ela tem duas propriedades públicas, Data , que é alimentado pelo valor da resposta do tweet e Time, que é atualizada sempre que o tempo atual da propiedade Data estiver setado.

Você pode usar o seguinte código na sua página para usar esta versão em cache do widget. Note que o atributo CacheTTL é demostrado em segundos.

<widgets:Twidget runat="server" Account="twitter" Tweets="10" CacheTTL="600" />


Então é isso… Espero que tenham gostado! Vejam o artigo original. Até a próxima!


Artigo postado em: ASP.NET

domingo, 6 de maio de 2012

Por que o Facebook comprou o Instagram?


Você talvez já tenha ouvido falar que o Facebook adquiriu o Instagram por aproximadamente um bilhão de dólares em dinheiro e ações. Incrível, não? Tenho recebido mensagens de admiração e choque de muitas pessoas do Vale do Silício, por ninguém estar esperando o acontecimento.
Alguns dias atrás havia um rumor dizendo que a startup estaria avaliada em 500 milhões de dólares. Alguns meses atrás eram 300 milhões. Na última rodada de investimentos – apenas a um ano atrás (em inglês) – era avaliado em 100 milhões. O aumento de valor da empresa foi reflexão do crescimento da audiência, apesar de estar apenas no iPhone. Chegou a 30 milhões de usuários registrados antes do lançamento de um app para o Android, um evento que turbinou a vida da companhia.


Então a pergunta é: Porque Mark Zuckerberg comprou a empresa pelo dobro do valor de mercado levantado por investidores de risco? A resposta é encontrada na própria declaração publicada por Zuckerberg:

"Este é um importante marco para o Facebook, porque é a primeira vez que adquirimos um produto e companhia com tantos usuários. Nós não planejamos fazer mais desses, talvez mais nenhum. Porém, prover a melhor experiência de compartilhamento de fotos é uma das razões do porque tantas pessoas amam o Facebook, e nós sabíamos que valeria a pena juntar as duas empresas."
Minha tradução: Facebook estava tão assustado e sabia que pela primeira vez na sua vida tinha um competidor razoável que poderia não só comer uma fatia de sua parte no mercado, mas também destruir prospecções futuras. Porque? Porque o Facebook é essencialmente fotos, e o Instagram estava atacado o calcanhar de Aquiles da empresa de Mark – o compartilhamento de fotos através de dispositivos móveis.
Aqui está o que escrevi quando o Instagram lançou o app para Android (em inglês).

"Está bem claro que o efeito turbo dado pelo Android vai fazer com que a base de usuários do Instagram passe de 50 milhões em apenas algumas semanas. Logo depois da companhia ter lançado o app em outubro do ano passado apontei que haveria uma plataforma social mobile orientada a fotos que desafiaria os gigantes sociais. Será um tempo para lembrar desta pequena empresa."
Aqui está um pouco do que escrevi em uma das newsletters:

"A companhia anunciou uma API em fevereiro, e desde então uma avalanche de novos aplicativos vieram para capitalizar o Intagram. Enquanto alguns fizeram vistas grossas para o Instagram, a companhia, que já tem 4 milhões de usuários, tem o foco no seu valor principal – interações sociais e em comunidades sobre experiências visuais.

Espero que o Instagram permita a mais apps a exportação para as suas redes. Ao se abrir para outros apps e serviços terá o potencial para pouco a pouco se tornar o ponto principal do compartilhamento de experiências de foto. E, no final, é isso que fará o Instagram tão mais valioso no processo de se tornar o Flickr das fotos mobile."
Em outras palavras, se existia algum competidor que pudesse ameaçar Zuckerberg seria Systrom (fundador do Instagram). Eles estão crescendo rapidamente em mobiles e a plataforma móvel do Facebook é medíocre. Porque? O Facebook não é a primeira empresa em mobilidade e não tem essa perspectiva como foco. A ideologia interna do Facebook é de uma empresa centrada em desktops.
Instagram fez exatamente o contrário. Criou uma plataforma baseada em emoção. Em vez de ter criado uma rede social, criou uma bela plataforma social de compartilhamento de experiências. Facebook e Instagram são duas companhias distintas com duas personalidades distintas. O Instagram tem o que o Facebook almeja – uma comunidade apaixonada. As pessoas gostam do Facebook. As pessoas usam o Facebook. As pessoas amam o Instagram. É o meu app mais usado. Eu passo uma hora por dia no Instagram. Tenho feito amizades baseadas em fotos que foram compartilhadas. Eu sei como se sentem e como veem o mundo. No Facebook falta alma. O Instagram é todo alma e emoção.

Mercado de Software: você é uma pessoa legal?


Muito se fala em primeiro computador e inclusão digital. O Brasil segue firme e forte como um dos principais mercados de tecnologia do mundo, vendendo milhões de computadores. Mas será que o brasileiro pensa no software?


Essa é uma questão vital e que gera imensas discussões. O brasileiro compra o produto bonitinho em sua loja preferida, leva para casa, liga tudo e aí faz o quê? Instala o software pirata que um amigo lhe emprestou, que comprou em um mercado ilegal qualquer ou mesmo baixou da internet. Essa é a triste realidade de um mercado que sofre muito por várias causas. Vamos começar por elas.
Primeiramente, softwares são os famosos programas: aplicativos feitos para o usuário instalar e realizar alguma tarefa em específico. Temos exemplos famosos, como PHOTOSHOP, COREL DRAW, EXCEL, WORD e por aí vai. Quando você pensa no computador, dificilmente pensa na máquina apenas (seja ele um desktop convencional ou um notebook).
Você compra o PC para realizar algo com ele e nisso está incluso o software. Mas esse é um aspecto que, na maioria das vezes, você consegue encontrar uma versão “genérica” (leia-se pirata) que vai sair muito mais baratinha. Imagine só pagar uma fortuna por um programa. Isso é um absurdo! Neste momento crítico está o maior absurdo de todos: você comprando algo ilegal.
Entende-se por ilegal tudo que é contrário à lei, ilícito, ilegítimo. Ou seja, você está (mesmo sem querer) matando o mercado de software e, com isso, fazendo com que as pessoas que ficam horas pensando em programas para agilizar a sua vida ganhem menos e parem de dedicar horas de trabalho a algo benéfico para você. Adquirindo software ilegal, você contribui para aumento de criminalidade, redução da arrecadação de impostos, além do aumento considerável do risco para o usuário. Lembre-se de que computadores com programas piratas têm riscos de segurança muito maiores.
Em um exemplo prático: em caso de roubo de informações em uma transação bancária ou compra qualquer, você perde automaticamente qualquer chance de apelo, pois está usando um software ilegal. SIM! Os bancos não se responsabilizam nesses casos. Claro que você não tem acesso aos principais recursos e documentação, nem qualquer garantia ou opções de atualização.
Não estou defendendo ou acusando quaisquer partes: fabricantes, revendedores ou consumidores. A questão aqui é que comercializar ou usar tais produtos é completamente contra a lei. Será que você usaria ou compraria um computador roubado ou de origem ilícita? Então, por que usaria um software? Pense nisso. Esta é uma questão em que nós, brasileiros, devemos pensar muito, pois essa conduta errada está se perpetuando como correta.
E você, é uma pessoa legal?

Seja legal, diga não à distribuição ilegal de softwares


Sem dúvida muitos usuários utilizam ou ao menos já utilizaram versões não-oficiais de softwares proprietários, popularmente conhecidas como versões “crackeadas” ou “piratas” e distribuídas principalmente em redes P2P, torrents e blogs de downloads.
Na internet é possível encontrar um grande acerto de aplicativos relacionados a diferentes finalidades, desde o uso pessoal até o profissional. O grande obstáculo para os usuários é que geralmente esses softwares são proprietários, ou seja, o usuário precisa de uma licença para contemplar a liberdade de usá-lo ou ter acesso a todas as suas funções. Neste ponto, vale revisar brevemente os tipos de distribuição mais comuns encontrados na internet:


Shareware – versões com esse tipo de distribuição permitem que o usuário baixe o software gratuitamente mas o use por um determinado prazo, normalmente até 30 dias. O objetivo dos desenvolvedores em criar esse tipo de versão é submetê-lo a uma avaliação dos usuários. Caso ele se interesse pelo programa e queira estender o prazo de uso, terá que pagar pela licença do software.
Demo – como o próprio nome sugere, essa distribuição é uma “demonstração” do software, e limita suas funções para que este seja apenas testado pelo usuário. Diferente do Shareware, as versões Demo não possuem um prazo de validade de uso, porém, apenas as funções básicas do software ficam disponíveis. Para ter acesso a todas as opções e funcionalidades, é necessário comprar a licença do aplicativo.
Trial – esse tipo de versão possui um outro tipo de limite: não é permitido salvar o trabalho ou o arquivo criado pelo programa. No caso de jogos, o usuário não consegue salvar o progresso atual para continuar posteriormente. Os desenvolvedores aplicam esse tipo de distribuição em softwares para funções importantes, como recuperação de dados, reparador de arquivos corrompidos ou restauração de banco de dados. Normalmente o usuário fica livre para visualizar os resultados, mas não tem permissão para salvá-los. Para isso, o usuário precisa comprar o programa.
Freeware – versão livre para download e utilização, sem restrições. Algumas empresas (de antivírus, por exemplo), utilizam a estratégia de criar duas versões do mesmo software: uma grátis e outra que exija compra, muitas vezes entitulada como “Professional”. Essa versão, é claro, possui muito mais recursos e funcionalidades quando comparada com a versão gratuita.
Dentro de todo esse contexto de distribuição, alguns profissionais mal-intencionados começaram a abrir o código-fonte dos softwares para burlar o sistema de limitação. Através de técnicas e programas específicos, estes profissionais, conhecidos como crackers, tornaram-se capazes de decodificar o arquivo executável do software e descobrir qual o tipo de algoritmo utilizado para verificar se há uma licença válida para utilização. Mesmo as funções de criptografia são expostas aos crackers, que se prontificam a criar aplicativos para quebrar a limitação do software, chamados cracks.
Para alguns softwares, a inserção de um número de licença (Serial), já é o suficiente para liberar todas as funções do programa. Sendo assim, os crackers desenvolvem executáveis conhecidos como keygen (da abreviação Key Generator – Gerador de Chaves), capazes de gerar vários números de licenças válidos. Para tentar evitar esse problema, os desenvolvedores passaram a programar os algoritmos de verificação em arquivos DLL externos (biblioteca de funções). A princípio foi funcional, mas não demorou para que oscrackers encontrassem um modo para se livrarem dessa limitação. Logo conseguiram quebrar o arquivo e criar outra versão da DLL, acompanhada com o crack. Em mais uma tentativa, os desenvolvedores passaram a integrar um código de ativação ao número de licença. Dessa forma, era necessário que o usuário adquirisse a licença, enviasse ao site da empresa e recebesse em retorno um código de ativação. Em pouco tempo, os crackerscriaram versões de keygens com a capacidade de gerar números de licença e ativação simultaneamente. Em certos casos, eles modificam o próprio executável do programa para substituir o arquivo original após a instalação do software, ou criam pequenos executáveis chamados patch, capazes de executar instruções automaticamente para liberar a licença.
Atualmente o sistema de validação de licenças está mais rígido, principalmente em virtude desse tipo de ação dos crackers. Muitos softwares estão exigindo ativações online, diretamente com o site do desenvolvedor. Assim a empresa mantém controle da duplicidade de licenças e evita que o sistema de ativação seja burlado.
Porém, à medida que cresce a procura por versões piratas de programas proprietários, alguns crackers criam vírus e os espalham na internet como supostos cracks. Ao tentar “crackear” o programa, na verdade o usuário instalava um vírus no computador, responsável por abrir brechas de segurança, roubar informações ou causar danos ao sistema operacional. Entretanto, devido ao sistema de virtualização de processos encontrado na maioria dos antivírus atuais, muitos destes executáveis são bloqueados antes que realizem alguma alteração no computador.
Com base nas informações deste artigo, a recomendação é optar por comprar a licença do software, mesmo que o preço seja relativamente caro. Essa atitude colabora tanto para a segurança do usuário quanto pela ética de privilegiar os verdadeiros desenvolvedores do software. Em muitos casos, quando o usuário compra a licença do software, o desenvolvedor proporciona um pacote de vantagens, como atualização automática, suporte técnico, e a liberdade de avaliar outros aplicativos da mesma empresa.
Além disso, o usuário (ou empresa) fica isento diante de uma possível fiscalização de softwares.