Recuperar contactos do Gmail

Dica: Recuperar contactos do Gmail

Criado por Pedro Simões em 21 de Dezembro de 2010 | 12 comentários

Há uns dias atrás recebi uma chamada urgente de um amigo que em desespero me tentava dizer que todos os seus contactos, que estavam alojados no Gmail tinham desaparecido de forma estranha. Depois de o conseguir acalmar lá consegui perceber que este infortúnio tinha sido obra de uma tentativa de sincronização com um qualquer serviço web de sincronismo e partilha de contactos.

O seu desespero era tal que ele já ponderava telefonar para os serviços da Google para que lhe fizessem o restauro de um qualquer backup antigo. Estava disposto a pagar por isso e muito. Eram “apenas” dois anos de contactos que tinham voado pela janela. Estava muito em jogo e eu, felizmente, tinha a solução!! Tudo passaria por uma função que a Google tinha lançado há poucos dias e que tinha sido pensada para estas situações. A recuperação de contactos chegou ao Google Contacts.

O processo de recuperação de contactos é uma das mais recentes novidades que a Google lançou para o seu serviço de email. Conseguem com ela recuperar para uma data anterior a vossa lista de contactos. Infelizmente, e por agora, todos os contactos que adicionaram depois da data da recuperação serão perdidos, mas nada que um simples backup não resolva. Pode ser que a Google num futuro próximo considere a hipótese de fundir os contactos existentes com os que forem recuperados.

Mas voltando ao problema do meu amigo e à forma como o conseguimos resolver… Tudo passa pela interface do Gmail. Acedam à vossa conta de Gamil e ai dentro escolham o acesso aos vossos contactos.

Na barra superior, mesmo junto à vossa lista de contactos vão achar um botão com o texto Mais acções. Escolham-no e vão ver disponível um conjunto de opções. Nelas estará a que vos interessa,Restaurar contactos.

Depois de seleccionarem essa opção será mostrada uma caixa onde podem escolher qual a data para que pretendem fazer a recuperação dos vossos contactos. As hipóteses são várias, desde os últimos 10 minutos até ao máximo de 30 dias. Este é o limite de dias que a Google guarda os vossos contactos.

Escolham então a data pretendida, dentro das possibilidades oferecidas e carreguem no botãoRestaurar.

No final do processo será mostrada uma mensagem a indicar que os vossos contactos foram recuperados para a data pretendida. Verifiquem se os contactos que queriam estão já lá e se não ficarem satisfeitos repitam o processo até que consigam recuperar os vossos contactos.

Espero que esta pequena dica e este novo serviço da Google vos seja tão útil como foi ao meu amigo. No final ficou bastante satisfeito pois todos os seus contactos foram facilmente recuperáveis e nenhum se perdeu, ao contrário do que ele estava à espera.

Nunca são vezes de mais todas as que vos indicamos, mas é importante fazerem com bastante regularidade um backup regular dos vossos dados importantes, mesmo os que estão alojados na Internet e, supostamente, protegidos contra todos os tipos de falhas e problemas.

Fica o alerta e a explicação de como fazerem o restauro dos vossos contactos no serviço de email da Google!

Homepage: Gmail
Homepage: Google Contacts

Extensão Chrome: Voice Search

Extensão Chrome: Voice Search

Criado por Pedro Simões em 20 de Dezembro de 2010 | 3 comentários

O Google Chrome caminha a passos largos para se tornar o browser mais utilizado por todos os Internautas. As suas capacidades estão a crescer a cada nova versão que é disponibilizada. Uma dessas capacidades, até agora pouco explorada, é a de interagir com o Chrome através da voz.

Com o surgimento da extensão Voice Search tudo muda de figura e passamos a poder usar a nossa voz para efectuar pesquisas directamente nos motores de pesquisa mais utilizados.

Com esta extensão vão alterar de forma radical a maneira como interagem com o vosso browser. Vão deixar de teclar os termos que pretendem pesquisar e passam a dita-los directamente para o browser, que se encarregará de todo o processo de pesquisa.

Após a instalação do Voice Search vai ser disponibilizado um novo ícone na Omnibar, com a forma de um microfone. Ao carregarem nele vai ser disponibilizada uma janela onde podem escolher o motor de pesquisa a ser usado. Depois só têm de carregar na image do microfone e falar o texto que pretendem pesquisa. Enquanto estiver a ser detectado som o microfone vai estar a vermelho.

O Voice Search permite que pesquisem numa vasta lista de motores de pesquisa já pré-definidos e integra também a possibilidade de ter um microfone em caixas de texto nas páginas que sejam construídas com HTML5.

Os motores de pesquisa que vêm configurados por omissão no Voice Serch são Google, Wikipedia, YouTube, Bing, Yahoo, DuckDuckGo e Wolfram|Alpha. Podem naturalmente adicionar os motores de pesquisa se pretenderem, bastando para isso seguir as instruções que estão na página de configurações.

Podem também ai definir se pretendem que seja mostrado microfone nas caixas de texto.

Se tiverem problemas em utilizar esta extensão podem ter de adicionar uma flag ao comando do Chrome. Adicionem então a flag:

--enable-speech-input

Apesar de ainda não ser perfeito na interpretação do texto que lhe é passado por voz, esta extensão vem abrir a porta a um vasto leque de possibilidades do que se poderá fazer no Chrome.

Usem esta extensão para aligeirar o processo de introdução de texto ou para agilizar as pesquisas que fazem nos vossos motores de busca que mais frequentemente usam. Aproveitem e adicionem o Pplware como motor de pesquisa e entretenham-se a pesquisar no vosso site preferido!

Veja aqui mais extensões Chrome

Leia mais informação sobre plugins Chrome no Forum Pplware: Google Extensions e Google Chrome

Download: Voice Search 1.0.2
Homepage: Voice Search

App Inventor

Nos últimos tempos, devido ao destaque que temos dado às aplicações desenvolvidas para Android, tenho recebido alguns e-mails de utilizadores que questionam qual a plataforma de programação que devem usar para começarem a programar para Android.

Pessoalmente tenho experimentado o Eclipse e o desenvolvimento de aplicações para Android é bastante acessível (basta ter alguns conhecimentos de Java e XML). Para quem não gostar do Eclipse, pode sempre optar pelo Netbeans.

No entanto, tal como anunciamos em Julho, a Google tem trabalhado arduamente no Google App Inventor, uma plataforma bastante simples para desenvolvimento de aplicações para Android. Actualmente essa plataforma de programação está disponível para todos os utilizadores que possuam uma conta no gmail.

android_00

A ferramenta Google App Inventor foi criada pela Google com o objectivo de ser simples e de dar a possibilidade a qualquer utilizador (mesmo sem conhecimentos de programação) de criar aplicações para o Android.

Como escrever aplicações para Android com o App Inventor?

O App Inventor baseia-se no drag and drog de blocos de código, que são representados através de imagens gráficas e que correspondem a funcionalidades do smartphone.

A programação das aplicações é bastante intuitiva, pois basta ao utilizadores ir juntando objectos , como se de um jogo de lego se tratasse. Actualmente existem já algumas aplicações modelo (ver aqui), que podemos analisar e tirar algumas ideias para a nossa aplicação.

Para mais fácil perceber o conceito, aconselhamos a que assistam ao vídeo seguinte:

Segundo Karen Parker (App Inventor Program Manager da Google), o motivo da disponibilização da plataforma Google App Inventor a todos os utilizadores com conta no gmail, deve-se ao enorme sucesso do sistema operativo Android. Karen Parker incentiva também todos os utilizadores que se iniciem no mundo da programação para dispositivos móveis, mais concretamente para Android, que permitem informação e boas práticas no fórum de discussão da plataforma.

O App Inventor é sem dúvida uma excelente, simples mas poderosa ferramenta que vem mudar a filosofia de programação de aplicações para dispositivos móveis, mais concretamente dispositivos com o sistema operativo Android. Do pouco que ainda experimentei, deu para perceber que a filosofia não foge da programação orientada a objectos e acredito que com breves noções um utilizador consegue desenvolver uma simples aplicação.

Nota final: Já que o Google App Inventor está agora disponível para todos os utilizadores, vamos tentar trazer até vós alguns tutoriais de como ensinar a programar aplicações para Android. O que acham da ideia?

Artigos relacionados

Homepage: App Inventor
Homepage: Forum de discussão – App Inventor for Android

Google Body Browser

Google Body Browser – O Atlas do Corpo Humano…

Criado por Pedro Simões em 18 de Dezembro de 2010 | 5 comentários

… acessível pelo browser

As experiências que a Google faz tendem a tornar-se ferramentas que muitos Internautas se habituam a usar e abusar. São ideias que são concebidas tendo em mente a facilitação d0 acesso a todos os tipos de informação e o adicionar desse mesmo conhecimento a todos os que usam a Internet.

Essas ideias tendem a nascer dentro da própria Google e posteriormente são passadas para o Google Labs, onde amadurecem e são testadas pelos utilizadores. O facto de estarem sobre a égide Labs permite que surjam alterações a esses serviços, que sejam descontinuados ou passem a serviços plenamente funcionais de um momento para o outro.

A última revelação do Google Labs foi o Body Browser, o altas do corpo humano, e promete tornar-se uma ferramenta extremamente útil para todos.

O Body Browser permite que qualquer pessoa explore o corpo humano, podendo ver com elevado grau de detalhe todos os órgãos que o compõem. Da mesma forma que se consegue fazer zoom num qualquer mapa do Google Maps, aqui é possível aumentar ou diminuir o zoom e navegar para dentro do corpo. Podem ver com detalhe todos os músculos que nos compõem ou todos os ossos que fazem parte do nosso esqueleto.

Toda a gestão do detalhe é feita do lado esquerdo, numa interface onde podem aumentar ou diminuir o tamanho do modelo onde as diferentes camadas são apresentadas ou escolher que tipo de sistemas pretendem ver. São seis “camadas” que estão disponíveis e estas podem ter diferentes graus de opacidade para permitir entender onde cada órgão ou músculo está e quais são os seus vizinhos.

Existe ainda a possibilidade de activar etiquetas onde podem ser vistos os nomes de cada zona que está a ser vista. Se seleccionarem uma dessas etiquetas apenas esse elemento estará visível e todos os restantes vão ter a sua opacidade aumentada.

Caso pretendam podem mover o corpo usando apenas o rato, da mesma forma que navegam num mapa do Google Maps.

Vejam no vídeo abaixo o Body Browser em todo o seu potencial:

Esta ferramenta tem um elevado potencial para ser transportado para uma sala de aula e para que todos os alunos possam ter um contacto mais detalhado e pormenorizado com o corpo humano. Será ainda uma solução muito interessante para complementar toda a informação que adquirirem num livro ou numa ferramenta similar.

A Google novamente consegue inovar e trazer para todos os utilizadores da Internet ferramentas que conseguem ser realmente úteis e com um sério potencial.

O Google Body Browser está já disponível no endereço que apresentamos abaixo, mas apenas pode ser visitado e usado em todo o seu potencial se usarem um browser com suporte para WebGL. Se o quiserem testar podem usar o Chrome (versão Beta ou Dev) ou o Firefox (versão 4.0b1 ou superior).

Reiniciem a exploração do corpo humano, mas desta vez com uma ferramenta moderna e disponível na Internet para todos!

Homepage: Google Body Browser

Endereços públicos e privados

Endereços Públicos e Privados

Criado por Pedro Pinto em 20 de Outubro de 2009 | 56 comentários

Ontem durante uma conversa, uns amigos fizeram-me as seguintes questões: “Qual a diferença entre um IP Privado e um IP Público?”  Quando é que se usa um e quando é que se usa outro?

Bem, isto em conversa é certamente muito mais fácil de explicar,  já escrever… vamos lá ver como sai!

IT Technician With Server Cables

Basicamente as máquina quando estão ligadas em rede possuem um endereço IP configurado (seja ele IPv4 (normalmente) ou IPv6), de forma a poderem ser alcançadas por outras máquinas.

Relativamente a endereços IP existem os endereços públicos e os endereços privados. A maioria dos endereços IP são públicos, permitindo assim que as nossas redes (ou pelo menos o nosso router que faz fronteira entre a nossa rede e a Internet) estejam acessíveis publicamente através da Internet, a partir de qualquer lado.

Quanto a endereços privados, estes  não nos permitem acesso directo à Internet, no entanto esse acesso é possível mas é necessário recorrer a mecanismos de NAT (Network Address Translation) que traduzem o nosso endereço privado num endereço público.

Os intervalos de endereços privados são:

  • de 10.0.0.0 a 10.255.255.255 (10.0.0.0 /8)
  • de 172.16.0.0 a 172.31.255.255 (172.16.0.0 /12)
  • de 192.168.0.0 a 192.168.255.255 (192.168.0.0 /16)

Daí os endereços que usamos com frequência 192.168.x.x

Fazendo uma analogia com o sistema telefónico podemos comparar um endereço público ao número de um telefone/telemóvel. Esse número é público, reservado, único e identifica de forma unívoca o vosso telefone.

Agora imaginem por exemplo uma empresa que possui uma central telefónica. Vocês atribuem as extensões (privadas ex: 101, 302, 45) que quiserem aos telefones mas quanto alguém dessas extensões quer ligar para o exterior ou liga para a telefonista para estabelecer a chamada para o exterior (a partir de um número público) ou marcam um prefixo para que a vossa central proceda ao mecanismo de NAT fazendo assim que a vossa chamada saia por um número público.

No entanto, imaginando que um amigo vos quer contactar do exterior, este não o poderá fazer directamente e nesse caso,  terá de ligar para a telefonista para esta reencaminhar a chamada. O endereçamento privado que eu tenho na minha central telefónica pode ser o mesmo de outras empresas. No entanto o(s) números(s) telefónicos públicos (ex:232234567) que identificam a minha empresa são únicos.

Passando novamente para as redes podemos dizer que máquinas em redes diferentes podem usar os mesmo endereços privados e não existe qualquer entidade reguladora para controlar a atribuição, isso é definido internamente.

Para permitir que vários computadores na rede doméstica ou de empresas comunicassem na Internet, cada computador devia ter assim o seu próprio endereço público. Esse requisito impõe grandes exigências sobre o pool de endereços públicos disponíveis tendo sido criados os mecanismos de NAT como referido anteriormente.

Os endereços públicos são geridos por uma entidade reguladora, muita das vezes são pagos e permitem identificar univocamente uma máquina (PC, routers,etc) na Internet. O organismo que gere o espaço de endereçamento público (endereços IP “encaminháveis”) é a Internet Assigned Number Authority (IANA).

image_2

Obviamente poderíamos ter explanado mais um assunto que por norma tem alguma complexidade. Mas, desta forma simples, perceberão também a utilidade do NAT, endereços públicos e privados e, caso precisem, podem ver no vosso router a área onde a magia acontece.

Caso precisem de mais esclarecimentos, poderão deixar nos comentários a vossa dúvida e caso a caso responderei tentando acrescentar detalhes ao assunto.

Modelo OSI

Redes – Sabe o que é o modelo OSI?

Criado por Pedro Pinto em 15 de Setembro de 2010 | 43 comentários

Recentemente, durante uma conversa de amigos, alguém me questionava no âmbito das redes informática, porque se dizia que um determinado equipamento funciona numa determinada camada (layer) do modelo OSI.

Nesse sentido, preparei um pequeno artigo (não muito técnico), que tenta explicar o modelo OSI.

osi_000

Há uns bons anos atrás, cada fabricante tinha as suas tecnologias, topologias, protocolos e então havia problemas na interoperabilidade entre equipamentos. Com o evoluir da tecnologia, os fabricantes de equipamentos chegaram a conclusão que o caminho a seguir se deveria basear em normas (standards).

Das muitas organizações ligadas a normalização  destacam-se o IEEE (Institution of Electrical and Electronics Engineers) , ISO (International Organization for Standardization) e ITU (International Telecommunication Union).

O Modelo OSI (criado em 1970 e formalizado em 1983) é um modelo de referência da ISO que tinha com principal objectivo ser um modelo standard, para protocolos de comunicação entre os mais diversos sistemas, e assim garantir a comunicação end-to-end.

O modelo é composto por 7 camadas, em que cada camada realizada funções específicas.

Camadas do modelo OSI
  • Aplicação (Application)
  • Apresentação (Presentation)
  • Sessão (Session)
  • Transporte (Transport)
  • Rede (Network)
  • Dados (Data Link)
  • Física (Physical)

osi_00

Principais funções de cada camada
  • Aplicação (Application)
    • Fornece serviços às aplicações do utilizador.
  • Apresentação (Presentation)
    • Encriptação e compressão de dados.
    • Assegura a compatibilidade entre camadas de aplicação de sistemas diferentes
  • Sessão (Session)
    • Controla (estabelece, faz a gestão e termina), as sessões entre aplicações.
  • Transporte (Transport)
    • Controle de fluxo de informação, segmentação e controle de erros
  • Rede (Network)
    • Encaminhamento (routing) de pacotes e fragmentação
    • Esquema de endereçamento lógico
  • Dados (Data Link)
    • Controla o acesso ao meio físico de transmissão.
    • Controlo de erros da camada física
  • Física (Physical)
    • Define as características do meio físico de transmissão da rede, conectores, interfaces, codificação ou modulação de sinais.
Modelo OSI – Protocolos

A seguinte figura, ilustra em que camada funciona um determinado protocolo. Por exemplo, quando falamos a nível de TCP/UDP estamos mais especificamente a falar da camada de transporte.

osi_01

Analogia do modelo OSI com a comunicação via carta

Osi_parallel_port

Vamos então a um exemplo, para ilustrar como tudo isto funciona. Para isso vamos exemplificar como funciona o acesso a uma página Web, através de um browser, e como tudo encaixa no modelo OSI. Vamos começar de cima para baixo (camada de aplicação para camada física)

  • Na camada de aplicação, o browser (aplicação) serve de interface para apresentação da informação ao utilizador. Para este pedido (cliente-> servidor), foi usado o protocolo HTTP
  • O formato dos dados é tratado na camada de apresentação. Os formatos tradicionais da Web incluem HTML, XML, PHP, GIF, JPG, etc. Adicionalmente são usados mecanismos de encriptação e compressão para a apresentação da informação.
  • Na camada de sessão é estabelecida a sessão entre o computador cliente (onde estamos a fazer pedido via browser) e o servidor web (que aloja a página requisitada).
  • O protocolo TCP  fornece garantia na entrega de todos os pacotes entre um PC emissor e um PC receptor (neste caso, a entrega de toda a informação da página web do servidor para o cliente). Isso é uma funcionalidade da camada de transporte.
  • Tanto o PC cliente como servidor possuem um endereço lógico (endereço IP neste caso). Isso é uma funcionalidade da camada de rede. Adicionalmente os routers determinam qual o melhor caminho para que os pacotes possam fluir (encaminhamento) entre cliente e servidor web.
  • O endereço IP (endereço lógico) é então “traduzido” para o endereço físico (endereço MAC da placa de rede. Isto é funcionalidade da camada da dados
  • Cabos de cobre, fibra óptica, placas de rede, hubs e outros dispositivos, ajudam na ligação física entre o cliente e o servidor que acontece na camada física.

Para finalizar, e respondendo a questão fundamental que me levou a escrever a este artigo, apenas referenciar as camadas onde operar os 3 equipamentos activos  tradicionais de uma rede:

  • HUB funciona a nível da camada 1 (camada física),
  • Switch na camada 2 (camada de dados). Há switchs capazes de funcionar também na camada 3.
  • Router na camada 3 (camada de rede)

Estejam atentos, pois brevemente teremos outros conteúdos da área das redes.

Endereços físicos e endereços lógicos

Redes – Sabe o que são endereços físicos e endereços lógicos ?

Criado por Pedro Pinto em 13 de Dezembro de 2010 | 18 comentários

No mundo das redes informáticas existem muitos termos e conceitos. Ao longo de alguns artigos que temos publicado no pplware, temos tentado explicar alguns desses termos/conceitos por forma a que os nossos leitores estejam mais contextualizados com a área das redes de dados.

Hoje o desafio é tentar explicar-vos o que são endereços físicos e o que são endereços lógicos.

mac_ip2

Relativamente à questão colocada neste artigo, a resposta é bastante simples. No âmbito das redes informáticas, quando falamos em endereço físico estamo-nos a referir ao endereço MAC (associado por exemplo a uma placa de rede) e quando falamos em endereço lógico é o endereço IP (configurado na placa de rede).

Endereços físicos

O endereço MAC (Media Access Control) é definido como sendo um endereço físico de uma placa de rede, e é composto por 48 bits (12 caracteres hexadecimais). Os primeiros seis caracteres identificam o fabricante (ex. Intel, surecom, broadcom, etc)  e os restantes seis identificam a placa em si. O endereço MAC é único no mundo para cada placa de rede (apesar de existirem ferramentas que possibilitam a alteração do mesmo), e é mantido na memória ROM , sendo posteriormente essa informação copiada para a memória RAM aquando da inicialização da placa. Há várias formas de representar um endereço MAC:

00-22-18-FB-7A-12
0022.18FB.7A12
00:22:18:FB:7A:12

Para poderem visualizar o MAC associado à vossa placa (no Windows) podem aceder às propriedades da mesma e conferirem o campo Physical Address

mac_00

Para quem pretender observar o MAC Address através da linha de comandos do Windows pode escrever:ipconfig /all ou getmac.

Endereços lógicos

Quando falamos em endereços na área das redes, é normal associarmos de imediato ao endereço IP configurado numa placa de rede. O endereço IP (versão 4)  é um endereço lógico definido por 32 bits (4 octetos) e identifica um dispositivo numa determinada rede. Os endereços lógicos IPv6 são constituídos por 128 bits, sendo apresentados em 8 grupos de 4 dígitos hexadecimais separados por ‘:’ (por ex. 1234:5678:90AB:CDEF:FEDC:BA09:8765:4321).

Relativamente a endereços IP existem os endereços públicos e os endereços privados. A maioria dos endereços IP são públicos, permitindo assim que as nossas redes (ou pelo menos o nosso router que faz fronteira entre a nossa rede e a Internet) estejam acessíveis publicamente através da Internet, a partir de qualquer lado.
Os endereços IP representam-se da seguinte forma:

192.168.10.1
2.83.6.2
10.10.10.1

Para poderem visualizar o IP associado à vossa placa (no Windows) podem aceder às propriedades da mesma e conferirem o campo IPv4 Address ou já na versão 6 do protocolo IP IPv6 Address.

ip_00

Para quem pretender observar o endereço IP através da linha de comandos do Windows pode escrever:ipconfig

O endereço IP funciona na camada 3 (camada de rede) no modelo OSI, enquanto o MacAddress funciona na camada 2 (camada de ligação), no modelo OSI. Para quem quiser saber mais sobre o modelo OSI pode dar uma vista de olhos no nosso artigo Sabe o que é o modelo OSI?

Em Resumo…

Aproveitando aquilo que já foi referido, quando falamos em endereços físicos estamo-nos a referir ao endereço MAC. Por outro lado, o endereço lógico é o endereço IP configurado numa placa de rede.

Há “relação” entre o endereço físico e o endereço lógico? Sim..vamos analisar essa questão num próximo artigo.

Aproveito para deixar um “repto” aos nossos leitores. Que mais temas gostariam de ver por aqui abordados no âmbito das redes informáticas?

Artigos relacionados

ASP.NET–State Management

ASP.NET – State Management

Criado por Henrique Graça em 14 de Dezembro de 2010 | 9 comentários

Estamos de volta com mais um tutorial sobre ASP.NET. Hoje iremos falar sobre State Management numa aplicação ASP.NET. Fiquem atentos e participem neste brainstorming de programação.

1. State Management

Nenhuma framework Web, por muito avançada que seja, pode alterar o facto de o protocolo HTTP ser stateless (não guarda o estado entre Requests). Depois de cada Request, o cliente desliga-se do servidor e o ASP.NET descarta os objectos que foram criados para a página. Esta arquitectura garante que as aplicações Web podem servir milhares de Requests simultaneos, sem que o servidor fique sem memória. A desvantagem é que precisamos de outras tecnicas para garantir que a informação das páginas se mantém entre Requests e possa ser utilizada quando necessário.
O ASP.NET, inclui uma grande variedade de opções no que toca a State Management. A opção correcta depende do tipo de dados que queremos guardar, onde queremos guardar, se está disponivel para um ou mais utilizadores, o nivel de segurança e performance que queremos obter.
Em baixo podem ver um quadro com as várias opções e qual o seu contexto de utilização.

Como podem ver existem muitas opções, felizmente, o ASP.NET fornece um modo de trabalhar semelhante para todas elas. Se estas formas de State Management não forem suficientes, podemos criar o nosso próprio mecanismo de State Management. Em baixo, veremos mais em pormenor estas ferramentas.

2. ViewState

Deve ser a nossa primeira escolha para guardar informação no contexto de uma única página. O View State é utilizado internamente pelo ASP.NET para guardar o estado dos controlos da página entre PostBacks.

O ViewState permite guardar todos os tipos de Objectos de .NET e as nossas próprias classes, desde que estajam marcadas com o atributo [Serializable].

O ViewState pode ser desactivado por controlo, por página ou por Site.

Para guardar dados no View State utilizamos a propriedade:

ViewState["NomeIdenfificativo"] = "Valor";

Para aceder ao View State:

string ValorViewState = ViewState["NomeIdenfificativo"].ToString();

Lembrar que o ViewState retorna um objecto, logo temos de fazer um “cast” para o tipo de objecto que queremos.

3. QueryString

Uma das desvantagens do ViewState, é o facto de só existir no contexto de uma página. Aqui entram as QueryStrings, permitem enviar informação entre páginas.

Este mecanismo é muito utilizado, por exemplo em motores de busca.

http://www.google.pt/search?q=pplware

A QueryString é o pedaço de texto a seguir ao “?”. Neste caso define uma única variável “q”, que contém o valor “pplware”.

A vantagem da QueryString é ser leve e não trazer nenhum fardo para o servidor. A desvantagem é os valores estarem visiveis para o utilizador e podem ser alterados.

Utilizar a QueryString:

string valor = "teste";   Response.Redirect("pagina.aspx?variavel=" + valor);

Receber valores de QueryString:

string valor = Request.QueryString["variavel"];
4. Cookies

São pequenos ficheiros que são criados no disco do cliente(ou na memória do Browser se forem temporários). As vantagens dos Cookies, podem ser utilizados por qualquer página do site e podem ser mantidos entre visitas. Estão limitados em termos de tamanho e de tipo de objectos que se pode guardar (string). Tem de se ter muita atenção, especialmente agora que estão cada vez mais a ser utilizados smartphones para aceder à internet, pois estes não permitem cookies.

Para utilizar os Cookies, usamos o Request para aceder e o Response para guardar.

HttpCookie cookie = new HttpCookie("Preferencias");   cookie["Lingua"] ="PT";   cookie["Pais"] ="PT";   Response.Cookies.Add(cookie);

Um cookie adicionado desta maneira, persiste até o browser ser encerrado. Para persistir tem de se definir a propriedade:

cookie.Expires = DateTime.Days.Add(1);

Para aceder a um cookie:

HttpCookie cookie = Reques.Cookie["Preferencias"];   string Pais = cookie["Pais"];

Para remover um cookie definimos a propriedade “Expires” com uma data que já passou.

5. Session

É o peso pesado do State Management. Permite que as informações persistam em todas as páginas do site. Cada utilizador que entra no site tem um SessionId diferente o que permite guardar informações por utilizador. A Session tem um peso grande para a memória do servidor.

Para guardar o SessionId entre Requests é utilizado um cookie chamado “ASP.NET_SESSIONID”. Se o browser não suportar cookies, é utilizado QueryString.

Este cookie só é criado quando guardamos algo na sessão, até lá, é sempre gerado um novo SessionId a cada Request.

Utilizar Session:

Session["Variavel"] ="valor";   string valor = Session["Variavel"].ToString();

É sempre necessário fazer “cast” para o tipo de objecto.

A sessão é global para toda a aplicação por utilizador. A sessão perde-se quando o utilizador fechar o browser, a aplicação fizer Restart ou terminar a sessão utilizando o método Session.Abandon();

Podemos configurar o comportamento da Sessão no Web.config. No atributo “SessionState”, podemos definir o timeout, o modo de guardar a sessão (memória do servidor, sql server, state server), se utiliza cookies, etc.

6. Application

Semelhante à Session mas, permite que os valores guardados sejam acedidos por qualquer utilizador da nossa aplicação. Esses valores perdem-se quando a aplicação fizer um Restart à pool.

Uma utilização corrente é contabilizar quantos utilizadores estão a utilizar a aplicação nesse momento, utilizando o global.asax.

Para utilizar a Application:

Application["Variavel"] = "valor";   string valor = Application["Variavel"].ToString();
7. Resumo

O State Management é a arte de reter informação entre Requests. Geralmente a informação é “user-specific” como por exemplo, items do carrinho de compras, username, nivel de acesso), mas por vezes pode ser global, como estatisticas que fazemos track no decorrer da aplicação. Como o ASP.NET utiliza uma arquitectura desconectada, é sempre preciso implicitamente indicar que queremos guardar/receber a informação a cada Request.

A ferramente que escolhemos para guardar estado pode ter um grande impacto na escalabilidade, performance e segurança da nossa aplicação.

Por hoje damos o tutorial por terminado. Para a semana vamos começar a desenhar a nossa aplicação. Caso tenham alguma questão já sabem, deixem um comentário em baixo.

Nomes de entradas Hardware

Pergunta que surge muitas vezes, são tantas as entradas que podem haver nos computadores que quando alguém nos tenta explicar sobre que entrada está a falar acaba por nunca o conseguir fazer pois existem variadíssimas entradas de diferentes tipos.

Para resolver esta questão, nada melhor que uma imagem com todas as entradas que podem existir num computador e respectivos nomes, tanto em computadores antigos como em recentes vai encontrar a tal entrada difícil de explicar.

ASP.NET–Anatomia de uma aplicação

ASP.NET – Anatomia de uma aplicação

Criado por Henrique Graça em 7 de Dezembro de 2010 | 9 comentários

Estamos de volta com mais um tutorial sobre ASP.NET. Hoje iremos falar sobre os componentes que fazem parte de uma aplicação ASP.NET. Fiquem atentos e participem neste brainstorming de programação.

1. Anatomia

Uma das funcionalidades mais notáveis do modelo de execução do ASP.NET, é o facto de ser possível  fazer update à aplicação, sem que seja preciso fazer restart ao Servidor e nem preocupar com um possível prejuízo aos utilizadores da aplicação. Isto significa que podemos adicionar, alterar e remover ficheiros na directoria virtual a qualquer momento, sem qualquer impacto.

Depois de fazer uma alteração, o processo de migração para uma nova “Application Domain” é executado. Este processo faz um restart seguro à aplicação e substitui os ficheiros da directoria temporária do ASP.NET. Até uma simples alteração ao WEB.CONFIG obriga a um restart seguro da aplicação.

Estrutura de directorias:

  • BIN – Esta directoria contém todas as DLL que a aplicação utiliza. Se criarmos um WebProject no Visual Studio, esta directoria irá também conter o código compilado da nossa aplicação.
  • APP_CODE – Nesta directoria ficam todas as classes compiladas dinamicamente. Se criarmos um WebProject no Visual Studio, esta directoria não será necessária.
  • APP_GLOBALRESOURCES – Esta directoria contém recursos globais que são utilizados por todas as páginas da aplicação.
  • APP_LOCALRESOURCES – Como a directoria GlobalResources, esta pasta guarda recursos mas, apenas para a página associada.
  • APP_WEBREFERENCES – Esta directoria guarda referências de WebServices que a aplicação utilize.
  • APP_DATA – Esta directoria está reservada para “Data Storage”, como bases de dados SQL Express ou ficheiros XML. Claro que, podemos colocá-los noutra directoria.
  • APP_BROWSERS – Esta directoria contém ficheiros XML com definições de Browsers, o que torna possível várias renderizações entre Browsers.
  • APP_THEMES – Esta directoria contém os Temas utilizados na aplicação.
2. Global.asax

O ficheiro Global.asax, permite escrever código que reage a eventos globais da aplicação. Não é possivel fazer o request directo ao Global.asax, ao invés o ficheiro Global.asax é executado automáticamente em responsta a diferentes eventos da aplicação.

O ficheiro Global.asax é opcional, só é possivel ter um por aplicação e tem de estar na root.

Lista de eventos da aplicação

  • Application_BeginRequest() – Este método é chamado a cada novo Request.
  • Application_EndRequest() – Este método é chamado no fim de cada Request
  • Application_Start() – Este método é invocado sempre que a aplicação é iniciada.
  • Session_Start() – Este método é invocado no inicio de cada nova sessão.
  • Application_Error() – Este método é invocada quando uma excepção não controlada acontece na aplicação
  • Session_End() – Este método é invocado quando uma sessão do utilizador termina. Uma sessão pode terminar, forçando a mesma ou por timeout, normalmente 20 minutos.
  • Application_End() – Este método é invocado quando uma aplicação termina.
3.  Configurações ASP.NET

As configurações de uma aplicação ASP.NET são efectuadas em ficheiros XML. As grande vantagens deste mecanismo são, os ficheiros nunca ficam bloqueados, são de fácil acesso, leitura, alteração e replicação.

As configurações começam num ficheiro chamado, machine.config. Este ficheiro encontra-se na directoria “c:\windows\microsoft.net\framework\[versão]\config”. Este é o primeiro ficheiro de configuração de ASP.NET e contém as configurações mais criticas da aplicação.

<MachineKey> – Esta elemento na configuração do ficheiro machine.config, é responsável pela encriptação das aplicações ASP.NET. Protege os cookies de sessão e pode proteger também o ViewState.

Na mesma pasta do ficheiro machine.config, existe outro ficheiro web.config, que contém mais configurações.

Apesar de existirem estes ficheiros de configuração globais (utilizados em todas as aplicações ASP.NET no servidor), normalmente as configurações são efecutadas por aplicação, com um ou mais, ficheiros Web.config.

No ficheiro de configuração podemos, guardar ligações a bases de dados e configurações particulares de cada aplicação.

Dentro do ficheiro Web.config, um dos atributos mais importantes é o <system.web>, dentro deste atributo existem muitas configurações que podemos costumizar.

  • authentication – este elemento configura a autenticação na aplicação.
  • compilation – este elemento identifica a versão da framework .NET. Também será aqui que indicamos se queremos ou não fazer debug na aplicação.
  • customErrors – este elemento permite definir URL para reencaminhar um pedido, quando um determinado erro ocorre.
  • membership – este elemento permite configurar a funcionaliade de gestão de utilizadores do ASP.NET
  • pages – este elemento define definições para as páginas
  • profile – este elemento permite configurar o mecanismo de profiles do ASP.NET
  • sessionState – este elemento permite alterar as configurações de como é guardada e gerida a Sessão.
  • trace – este elemento configura o tracing na aplicação.

Além de configurar tudo manualmente o ASP.NET fornece uma ferramenta visual para fazer alterações no Web.config. Através desta aplicação, podemos configurar utilizadores, settings, email.

Para aceder a esta aplicação carregamos no botão que podemos observar na imagem em baixo.

Depois de carregar no botão, entramos na aplicação e podemos alterar as configurações da nossa aplicação.

4. Page Class

Todas as páginas ASP.NET são derivadas do objecto Page. Este é dos objectos mais importante e com mais funcionalidades do ASP.NET.

Request: Este objecto representa os valores e propriedades do Request Http que causou o carregamento da nossa página. Contém todos os parâmetros de URL e todas as informações enviadas pelo cliente.

  • Cookies – contém uma colecção de Cookies enviados com o Request.
  • Headers e ServerVariables – providenciam uma colecção de HTTP Headers e variáveis de servidor. São informações Low-Level do Request.
  • IsAuthenticated – Verifica se o utilizador está autenticado.
  • IsLocal – Verifica se o Request foi feito do Servidor.
  • QueryString – Disponibiliza os parâmetros que foram passados no URL.

Response: Este objecto representa a resposta do Servidor a um Request do cliente.

  • Cookies – contém uma colecção de Cookies enviados com o Response. Podemos usar este objecto para criar Cookies.
  • Redirect() – este método dá instruções ao Browser para pedir um novo URL.
  • Write() – este método permite escrever no output stream.

Server: Este objecto é uma classe de utilidades, disponibiliza muitos métodos e propriedades.

  • MachineName – Nome da máquina em que a aplicação está ser executada.
  • GetLastError() – Método que permite obter o último, muito utilizado no global.asax no método Application_Error().
  • HtmlEncode() e HtmlDecode() – Altera o valor para HTML e vice-versa.
  • MapPath() – Devolve o caminho físico que corresponde a uma pasta virtual.
  • Transfer() – Redirecciona o pedido para outra página. Semelhante ao Response.Redirect mas mais rápido, pois o pedido é logo executado no servidor.

Neste tutorial incidimos sobre os componentes que fazem parte da anatomia de uma aplicação  ASP.NET. No próximo tutorial vamos falar sobre state management (View State, Cookies, Session, Application).

Caso tenham alguma questão, coloquem nos comentários, terei todo o gosto em responder.