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.

BeatBoxing com o Google Translate

BeatBoxing com o Google Translate

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

O Google Translate é uma ferramenta que muitos de nós usamos para traduzir texto para outros idiomas, para entendemos o que nos escrevem noutras línguas ou, e esta eu admito que já o fiz por diversas vezes, para vermos como soam as asneiras noutras línguas que não a de Camões ou para as traduzir.

Mas esta ferramenta tem outras funcionalidades para as quais não foi construída e que pouco tem a ver com a sua função original. Foi descoberto há dias que pode ser usada como um Beat Box e gerar os sons característicos desta arte musical.

O BeatBoxing, para quem não conhece é uma forma de fazer música, tipicamente HipHop e que recorre à voz para imitar ritmos, instrumentos ou efeitos sonoros.

O termo beatbox (que, em inglês, significa literalmente caixa de batida) refere-se à percussão vocal do hip-hop. Consiste na arte em reproduzir sons de bateria com a voz, boca e cavidade nasal. Também envolve o canto, imitação vocal de efeitos de DJs, simulação de cornetas, cordas e outros instrumentos musicais, além de outros efeitos sonoros.

Pois foi agora descoberto que se colocarem um determinado texto e o traduzirem para alemão o som que é produzido dessa tradução é muito semelhante ao produzido pelos BeatBoxers em plena performance.

Nos vamos explicar como podem gerar estes sons, para que oiçam por vós mesmo. Em primeiro lugar devem aceder à página do Google Translate e no campo Para (o idioma a ser usado para tradução) escolha a opção Alemão.

Depois de terem estes dois passos feitos devem copiar um dos dois textos apresentados abaixo e colocarem-no no campo destinado ao texto a ser traduzido.

Existem dois textos que podem usar, um mais curto e outro mais longo, escolham por isso um de cada vez pois os dois são interessantes e engraçados. Podem naturalmente alterar esses textos e fazer as vossas combinações e composições:

Curto:

pv zk bschk pv zk pv bschk zk pv zk bschk pv zk pv bschk zk

Longo:

pv zk bschk pv zk pv bschk zk pv zk bschk pv zk pv bschk zk bschk pv bschk bschk pv kkkkkkkkkk bschk

Depois de colocarem o texto só têm de carregar no botão Traduzir. Imediatamente abaixo vai ser mostrado um botão que podem usar para ouvir o som da tradução. Carreguem e oiçam o que produziram.

Curioso no mínimo. A Google quando desenvolveu esta ferramenta de certeza que não teve intenção de que tivesse esta característica. É provavelmente resultado dos sons que usaram.

Testem e divirtam-se. Façam as vossas produções e coloquem nos comentários para que possamos todos ouvir o que fizeram. Soltem a vossa veia musical e entretenham-se. Partilhem as vossas criações!!

Homepage: Google Translate

ASP.NET–Introdução e Conceitos

ASP.NET – Introdução e conceitos

Criado por Henrique Graça em 30 de Novembro de 2010 | 40 comentários

Estamos de volta com mais uma temporada de guia práticos sobre ASP.NET, conforme a escolha dos nossos visitantes. Hoje começo com uma overview à tecnologia ASP.NET. Fiquem atentos e participem neste brainstorming de programação.

1. O que é ASP.NET?

ASP.NET é uma tecnologia de scripting do lado do servidor, esta tecnologia permite colocar numa página web, scripts que irão ser executados por um servidor.

ASP.NET é uma tecnologia de scripting do lado do servidor, esta tecnologia permite colocar numa página web, scripts que irão ser executados por um servidor.

  • ASP, significa Active Server Pages
  • ASP.NET, corre no servidor de IIS
  • IIS (Internet Information Services), é um servidor de internet da Microsoft
  • IIS vem instalado e é gratuito nos servidores Windows ( inclui Windows 2000 e Windows XP Professional)

ASP.NET é compilado não é interpretado:

ASP.NET bem como todas as aplicações .NET, são compiladas. É impossivel correr código C# ou VB sem que esteja compilado.
Felizmente as aplicações ASP.NET não precisam de ser compiladas todas as vezes que são executadas, em vez disso o código “IL” é criado uma vez e actualizado apenas quando o source code é alterado.
Os ficheiros ficam em cache no servidor na directoria “c:\windows\microsoft.net\framework\[versão]\temporary asp.net files”.

Esta afirmação depende do tipo de projecto que escolhemos. Se optarmos por um Web Project o código é todo compilado quando compilamos o projecto. Caso a opção seja um simples Web Site, cada página é compilada assim que for feito o “Request”.

2. Web Forms

As páginas ASP.NET ( conhecidas como Web Forms) são uma parte vital de uma aplicação ASP.NET, pois providenciam o output para o browser depois de o cliente ter feito o “Request”.

Este conceito foi criado para facilitar a migração de programadores das tecnologias de cliente (Windows Forms) para a Web, usando as mesmas facilidades do interface windows, como arrastar botões.

Uma página ASP.NET é:

  • Ígual a uma página HTML
  • Pode conter HTML, XML e scripts
  • Os scripts são executados no Servidor
  • Tem a extensão “aspx”
  • Todos os controlos têm de estar contidos dentro de um “<form>”
  • A “<form>” tem de conter uma tag “runat=server”
  • O atributo “runat=server”, este atributo significa que a form deve ser processada no lado do servidor. Também indica que os controlos incluidos nesta form estão assecíveis do lado do script.
3.  Como funciona?

Recordar que:

  • As aplicações são executadas no servidor: Imagine que tem uma página em que possibilita que os clientes gravem comentários. O utilizador faz estas operações no browser, mas para gravar o comentário precisamos de fazer um update na base de dados, para isso o nosso código tem de correr no servidor. O ASP.NET trata destes eventos com uma técnica chamada PostBack, que envia a página (Form) quando certas acções são executadas. Quando o ASP.NET recebe a página, pode executar os eventos correspondentes do lado do servidor.
  • As aplicações Web são “stateless” (não guardam estado): Por outras palavras, assim que uma página é renderizada em HTML, os objectos são destruidos e todas as informações do cliente são descartadas. Este modelo é muito bom para aumentar a escalabilidade e o tráfego das aplicações, mas causa alguns problemas para oferecer uma experiência semelhante a uma aplicação Windows. Para colmatar esta lacuna o ASP.NET oferece várias ferramentas, a mais notável é o mecanismo chamado View State, que automáticamente coloca informação na página num “hidden field”, falaremos melhor desta e outras ferramentas.

ASP.NET utiliza um modelo de eventos, neste modelo, adicionamos controlos à página e escolhemos que eventos queremos responder. Cada “event handler” é um método discreto que mantêm o código limpo e arrumado.

Como funcionam os eventos?

  1. A nossa página corre pela primeira vez. ASP.NET cria a página e controlos associados, o código de inicialização é executado, a página é renderizada em HTML e retornada para o cliente. Os objectos são também libertados da memória do servidor.
  2. Numa determinada altura o utilizador executa uma acção que origina um PostBack, como clicar num botão. Toda a informação da página é enviada para o servidor.
  3. O ASP.NET intercepta a página e cria de novo os objectos no servidor, colocando-os no estado em que estavam a ultima vez que foram enviados para o cliente.
  4. Depois o ASP.NET verifica qual foi o evento causador do PostBack e dispara o evento correspondente. Nesta altura executamos o código associado ao evento e actualizamos a informação referente aos objectos.
  5. A página modificada é renderizada em HTML e devolvida ao cliente com os novos dados. Os objectos são retirados da memória do servidor.
4. Page Lifecycle

Existem dois tipos de eventos que originam um PostBack:

  1. Immediate Response Events : Executados sempre que carregamos num botão ou utilizamos a função Javascript “__DoPostBack()”
  2. Change Events: Sempre que seja alterado o estado de um controlo, como alterar o valor de uma checkbox ou textbox. Se a propriedade AutoPostBack estiver activa o evento é executado imediatamente, caso contrário é executado no próximo PostBack da página.

Imaginemos que temos um página com um botão de submit e uma textbox sem a propriedade AutoPostBack activa. Alteramos o texto e carregamos no botão. O que acontece?

O ASP.NET executa estes eventos, por ordem:

  1. Page.Init
  2. Page.Load
  3. TextBox.TexChanged
  4. Button.Click
  5. Page.PreRender
  6. Page.Unload

Existem mais eventos, mas para já apenas precisamos de saber estes.

Exercicio: Testar os eventos.

Vamos criar um novo projecto, uma aplicação ASP.NET vazia.

Adicionamos uma nova WebForm:

Adicionamos um botão e uma label. A label tem a propriedade “EnableViewState = False”, para não incrementar o valor sempre que é feito um novo PostBack. Por defeito esta propriedade está activa, é uma das formas mencionadas para guardar o estado dos controlos entre cada PostBack.

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">   <html xmlns="http://www.w3.org/1999/xhtml">   <head runat="server">   <title></title>   </head>   <body>   <form id="form1" runat="server">   
     
     
   </form>   </body>   </html>

Carregamos na nova página com o botão direito do rato e escolhemos “View Code”

Adicionamos os eventos que queremos “tratar”. Os eventos da página têm o prefixo “page”, desta forma o ASP.NET sabe que são metodos especificos que tem de executar. Esta associação é feita pelo atributo “AutoEventWireup=true” na página. Para adicionar um evento ao botão podemos ir ao design da página e clicar duas vezes no botão.

using System;   using System.Collections.Generic;   using System.Linq;   using System.Web;   using System.Web.UI;   using System.Web.UI.WebControls;   namespace WebApplication1   {   public partial class WebForm1 : System.Web.UI.Page   {   protected void Page_Load(object sender, EventArgs e)   {   Label1.Text += "Evento Page_Load <br/>";   if (Page.IsPostBack) // Metodo utilizado para saber se é a primeira vez que a página é processada   {                    // ou se é um PostBack   Label1.Text += "Não é a primeira vez que executamos a página <br/>";   }   }   protected void Page_Init(object sender, EventArgs e)   {   Label1.Text += "Evento Page_Init <br/>";   }   protected void Page_PreRender(object sender, EventArgs e)   {   Label1.Text += "Evento Page_PreRender <br/>";   }    protected void Page_Unload(object sender, EventArgs e)   {   //Este texto nunca aparece pois o HTML nesta altura já foi renderizado   Label1.Text += "Evento Page_Unload <br/>";   }   protected void Button1_Click(object sender, EventArgs e)   {   Label1.Text += "Evento do botão <br/>";   }   }   }

De seguida executamos o projecto ( F5 ou ctrl + F5). Este será o resultado.

Primeira execução:

Como podemos observar os eventos são executados pela ordem que já referimos.

Segunda execução:

Depois de clicar no botão, é executado o PostBack. Como podemos ver a propriedade Page.IsPostBack é verdadeira, logo sabemos que não é a primeira execução da página. Depois do evento Page_Load são executados os eventos do controlo que originou o PostBack.

Por hoje terminámos. Neste tutorial incidimos sobre alguns dos conceitos de ASP.NET. No próximo tutorial vamos falar sobre os objectos Request, Response e sobre state management (View State, Cookies, Session, Application).

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

Criar uma loja online com o Vendder

Crie a sua loja online com o Vendder

Criado por Pedro Simões em 4 de Dezembro de 2010 | 26 comentários

Pequenos comerciantes sentem muitas vezes que o seu mercado local se encontra saturado ou tem capacidade insuficiente para absorver todas as suas ofertas. Apostar na Internet viabiliza a descoberta de novos mercados e permite atingir um novo público alvo.

No entanto, o comércio electrónico continua a custar muito às empresas. Os gastos incluem a contratação de uma empresa para o desenvolvimento, configuração e manutenção de servidor, instalação de um pacote de software, design, entre outros. Isso faz com que qualquer novo comerciante online pense duas vezes antes de começar a vender na Internet. Foi para suprir essas necessidades que o Vendder foi criado.

O Vendder permite a criação de uma loja online instantaneamente. Basta configurar o catálogo de produtos, métodos e taxas de envio, bem como processamento de pagamentos. De uma forma fácil e intuitiva, o comércio electrónico fica acessível a qualquer pequeno comerciante que queira vender pela Internet.

A seguir, as principais funcionalidades do Vendder:

Software como serviço

Configurar servidores é caro e gera constante dor de cabeça. O Vendder garante o cuidado com a infra-estrutura para que os comerciantes se concentrem em promover seu negócio.

Integração com outros websites

Se já tem um site pode facilmente incorporar a loja virtual e melhor aproveitar o esforço feito no seu website actual.

Gestão de Catálogo

Controle de todos os produtos no mesmo lugar. Divisão dos produtos por várias categorias e gestão do inventário.

Tradução para outras línguas

Tradução do conteúdo pode ser feita manualmente ou automaticamente.

Integração com Sistemas de Pagamento

Pode receber pagamentos com Paypal, cartões de crédito ou outro método manual, como transferência bancária ou vale postal.

Portes de Envio

É possível definir portes de envio e impostos para todos os países e regiões.

Dashboard

Controle de todas as actividades da sua loja num único local. Se isso não for suficiente, o Vendder está integrado com o Google Analytics para controlar melhor a actividades dos seus clientes e referências.

Gestor de Conteúdos

Crie conteúdo para melhor informar os seus clientes e melhorar sua visibilidade nos motores de pesquisa.

A última novidade do Vendder é a possibilidade de customização completa do aspecto da loja. Se o utilizador tiver conhecimentos de HTML/CSS ou se quiser contractar um designer pode facilmente modificar a aparência da loja para se adaptar ao seu gosto.

O Vendder conta com 3 planos diferentes: um grátis até 30 produtos, um plano Plus por 19€ mês e um plano Bundle que inclui 1 ano do plano Plus e um tema feito à medida.

Homepage: Vendder