Como desbloquear a porta USB no Windows Xp/2000

É normal você usar seu computador, por exemplo na empresa, e as portas USB estarem bloqueadas. Praticamente todas essas funções de bloqueio estão localizadas dentro do registry do Windows e se você tem acesso nele, pode ter certeza que vai conseguir desbloquear o acesso na sua USB e a qualquer outra coisa.

Para fazer um teste, vá no iniciar e clique em executar. Digite o comando regedit e pressione enter. Se aparecer uma mensagem que você não tem acesso, ainda há uma saída. Achei na internet um script feito em vbscript que tenta desbloquear o acesso para você.

Eu li o código fonte inteiro para entender o que faz. Fique tranquilo que não tem nada de malware e não vai danificar seu micro. Basicamente ele faz uma consulta via Shell do WScript, para validar se o regedit está ativado, se não tiver, tenta ativar. Script que desbloqueia o regedit no windows.

Se não funcionar, pode parar o tutorial por aqui, pois seu usuário não tem permissão suficiente para fazer os desbloqueios. Se funcionar, continue lendo…

Com o regedit aberto, vá logo nos primeiros nós da esquerda selecionando:

  • HKEY_LOCAL_MACHINE;
  • System;
  • CurrentControlSet;
  • Services;
  • UsbStor;

Depois disso, haverá na sua direita uma chave chamada “Start”. Dê um duplo click e veja o valor que aparece – coloque 3 para desbloquear e 4 para bloquear. Anexei um print com o resultado que deve ficar.

Desbloqueando o regedit

Desbloqueando o regedit

Depois de feito isso, só desplugar e plugar o cabo que vai funcionar.

É isso :)

Gostou, tem dúvida ? Comente!

Robson

Bookmarksbookmark bookmark bookmark bookmark bookmark bookmark

Popularity: 1%

Semáforos e condições de corrida com memcache e python – lock em registros

No post anterior, falei de performance em aplicações web e coloquei um ponto importante em relação ao processo caro de ficar acessando o banco de dados constantemente.

Muitas empresas utilizam soluções de cache que são muito mais rápidas e eficientes, e entre as opções disponíveis, eu gostaria de destacar o memcached. Empresas como Facebook, Google, Wikipedia fazem uso bem intenso dessa ferramenta e ela é bem otimizada para uso em larga escala.

Apesar de ser projetado para Linux, há um port para windows no qual eu uso para testes ( nunca testado em ambiente de produção). Basicamente sua função é armazenar coleções em memória, servindo os dados via socket para os clientes que conectarem ao servidor.  Usa UDP como protocolo de comunicação e um mecanismo muito eficiente para gerenciamento de dados.

Um exemplo prático de como seria usado o mecanismo de cache:

  • Usuário A chama uma página e requisita cidades do estado de SP e a mesma não está em cache;
  • Aplicação chama consulta no banco de dados, adiciona a chave ao cache: cache.set(“cidades”,coleção);
  • Usuário B chama a aplicação e verifica que os dados estão no cache. Aplicação consulta cache e retorna os dados para serem tratados: cache.get(“cidades”);

Se não tenha ficado claro, um pseudo-código pode ajudar:

  • se existir cache.get(“cidade”) então:
    -> popular controles com essa coleção
  • caso contrário:
    -> buscar dados de cidade do banco;
    -> setar cache cache.set(“cidade”, dados_do_banco);
    -> popular controles com essa coleção;

Problemas de um cenário real:

Na teoria parece muito simples, certo ? Se você estiver pensando em um ambiente que não haja restrição por condições de corrida ( usuários simultâneos realizando a mesma operação ), então é realmente simples.

Mas imagine um momento em que você precisa incrementar um registro no cache, e esse registro só pode ser incrementado se ninguém mais estiver fazendo o processo. Como você resolveria essa questão ?

Pesquisando um pouco, acabei lembrando dos mecanismos de semáforo e de entrada em região crítica, o que me levou a criar um modelo que tenta fazer algo parecido. Só para lembrar o processo de região crítica (retirado do link acima da wikipedia):

Para entrar numa região crítica, uma linha de execução deve obter um semáforo, que será descartado na saída da região crítica. Cada recurso compartilhado, ou um conjunto de recursos compartilhados em comum, possui um semáforo próprio. Qualquer outra linha de execução deverá esperar para entrar numa região crítica em uso, mas poderá usar a CPU para executar qualquer outro código, incluindo regiões críticas protegidas por outro semáforo.

Logo abaixo, postei o exemplo criado em Python, porém estou escrevendo um pseudo-código que pode ser facilmente migrado para qualquer linguagem:

  1. Conectar no memcache;
  2. Tentar adicionar a chave(“lock”);
  3. Se adicionar, então não tem ninguém esperando – incremente o registro que você precisa, remova a chave lock;
  4. Caso tenha a chave, tente esperar alguns micro-segundos, e executar a operação “N” vezes. Se “N” for atingido, retornar erro, caso contrário, basta executar o procedimento anterior;
  5. Desconectar do memcache;
import memcache
import time

def lock_update(key):

    # parametrizacoes, todo passar para um cfg
    m = memcache.Client(['127.0.0.1:11211'], debug=0)
    lock = "lock_" + key
    max_tries = 5 #tenta 5 vezes
    tries = 0
    expiration = 60 #segundos
    got_lock = False
    number = -1
    wait_time_between_tries = 101 #microsegundos

    # teste inicial, apenas para colocar algo na chave, caso não tenha no cache
    if m.get(key) is None:
        m.set(key,0)

    if(m):
        # roda o numero de tentativas para adquirir o lock
        for tries in range(0, max_tries):
            # se conseguir adicionar, adquire o lock
            if(m.add(lock, 1, expiration)):
                got_lock = True
                break

            # se nao conseguiu, espera um pouco
            time.sleep(wait_time_between_tries / 1000000.0)

        # consegui adquirir o lock
        if(got_lock):
            number = m.incr(key)
            m.delete(lock, 0)

        # retorna o valor
        return number

# só para teste pela linha de comando
if __name__=="__main__":
    print lock_update("teste")

Simples, não ?

Espero que ajude :)

abs

Robson Dantas

Bookmarksbookmark bookmark bookmark bookmark bookmark bookmark

Popularity: 1%

Melhores práticas de performance para aplicações web – python, asp.net, java, etc

Falar em performance para aplicações web é algo muito complexo. Envolve diretamente uma série de variáveis, desde configurações de máquina (hardware), configuração do seu modelo de rede, até o desenvolvimento e tunning da sua aplicação. Vale ressaltar que uma aplicação performática é resultado de uma equação de tunning de software e hardware, e ao contrário que muitos desenvolvedores imaginam, uma aplicação bem desenvolvida requer muito menos recursos de infra-estrutura.

Alguns dos pontos listados aqui são resultados de longos anos de experiência, de pesquisa e de práticas que diversas equipes com que venho trabalhando aplicam. Além disso, vale a pena olhar iniciativas como YSlow (Yahoo) e PageSpeed (Google), ambas lideradas por um cara chamado Steve Souders, referência no assunto.

Para começar, imagine-se num cenário onde seu negócio depende exclusivamente de resultados de aplicações web, e que todos os esforços devem ser aplicados para que seu site esteja altamente disponível, com o menor custo possível. Quais seriam os pontos que você atacaria para que tenha sucesso na sua empreitada ?

Que tal começar por esses abaixo ?

  • Verificar toda a configuração de hardware do seu parque de máquinas;
  • Realizar testes de estresse e chegar em um modelo que determine o volume máximo de transações que sua aplicação aguenta;
  • Realizar um benchmark com outros aplicativos que tenham as mesmas características e determinar planos de ação;
  • Aplicar um guia de boas práticas – que estão descritas mais pra frente
  • Traçar um plano de melhoria para suas aplicações;

Guia de boas práticas para sua aplicação:

Carregue somente o necessário na página:

Lembre-se que mesmo que não estejam em uso, os recursos são carregados se tiverem referências no HTML. Javascripts são os vilões para liberar a renderização da página, por parte do browser.

Otimize os recursos:

Otimize imagens, javascripts, css. Técnicas como css sprites, “minificação” de javascripts e redução de paleta de cores são as mais utilizadas e diminuirão o uso de recursos de rede de forma drástica.

Lembre-se do item número um – os javascripts seguram a renderização da página até que sejam totalmente baixados. Existem técnicas que amenizam isso, e uma das mais utilizadas é manter os arquivos de javascript no final da página, antes da tag body.

Para os arquivos css, coloque-os na tag head da página, diferentemente do que foi feito com os Javascript. O time do YSlow descobriu, através de experimentos, que tal ação faz a página renderizar de forma mais rápida.

Diminua o acesso ao banco de dados, faça cache:

Cache é uma das técnicas mais aplicadas nas aplicações web. O número de opções é bem grande: Pode ser cache em disco, cache distribuído, cache em memória etc…

Acessos ao banco de dados podem ser considerados um dos recursos mais caros pela aplicação web. Apesar de existirem técnicas de pooling de conexões para redução do tempo de latência entre a conexão do servidor web com o banco de dados, mecanismos de SELECT, INSERT, UPDATE e DELETE podem ser muito complexos e causarem altíssimos atrasos nas respostas.

Imagine uma página que faz 10 requisições ao banco a cada atualização de página, sendo que seu conteúdo que muda somente cinco ou seis vezes por dia. O custo de requisições frequentes ao banco de dados é alto, portanto, vale a pena realizar um cache dessa página (guardando somente o html resultante em disco).

Vale a pena tentar reduzir o número de chamadas, ou tentar guardar em algum mecanismo de cache dados que sejam frequentemente chamados pela aplicação e que não são alterados com tanta frequência. Como exemplo, podemos imaginar uma lista de estados ou cidade.

Realize flush da página assim que possível:

Pode parecer excesso de zelo, mas não é! Praticamente todas as linguagens de programação implementam um mecanismo de buferização do html, antes de começar a liberar os dados. Algumas até esperam que todo o conteúdo da página seja processado, para liberar o HTML ao browser.

No asp.net , você pode user o Response.Flush , no PHP você pode usar a função flush(); e assim por diante …

Mova conteúdo estático para outros domínios:

Essa técnica serve para reduzir o envio desnecessário de cookies, além de possibilitar uma migração futura para um CDN (content delivery network). Misturar aplicações dinâmicas com conteúdo dinâmico pode gerar um overhead desnecessário para o servidor web, principalmente no que se diz respeito a cookies. Os cookies são salvos no browser e a cada request realizado, são retransmitidos ao servidor web, até que os mesmos expirem.

Para uma página dinâmica, como um aspx, php, faz todo sentido receber os cookies de volta, caso tenham sido gravados, ou até mesmo usados para implementação de session. Mas não faz sentido retransmití-lo ao chamar arquivos como imagens, css, etc.

Além disso, tal prática vai possibilitar que você sirva conteúdo através de CDN´s em um segundo momento, sem muita dor de cabeça. CDN´s são utilizados em larga escala por empresas grandes – como exemplo cito o Google e o Facebook. Esses mecanismos implementam um sistema distribuído de cacheamento e roteamento, servindo os dados de um servidor mais próximo ao usuário, com menor latência de rede.

Utilize ferramentas para análise de desempenho – conhecidas por profilers:

Em java é muito comum usar ferramentas para análise de código fonte, que identificam possíveis problemas de performance ou overhead.

Guia de boas práticas para infra-estrutura:

Apesar de muitas das práticas estarem baseadas no servidor Apache, com certeza você você poderá aproveitá-las para outros servidores web como IIS, por exemplo.

Faça uso de balanceadores de carga:

Balanceadores de carga representam uma forma fácil de aumentar os recursos de infra-estrutura. São feitos via hardware específico ou via software e os que mais utilizei são: Alteon, LVS ( linux ) e F5 BigIP.

O uso correto de tais aplicações melhoram e muito o desempenho, porém, vale lembrar que alguns pontos devem ser levados em consideração:

  • O uso de sticky session ( para aplicações autenticadas), diminui a capacidade de saída, uma vez que os mecanismos de balanceamento levam em consideração endereço ip do usuário;
  • Divida as configurações de domínio entre dinâmico e estático para garantir maior eficiência no balanceamento;
  • Evite balancear somente via DNS;

Ative a compressão de páginas:

Quando você vai transferir um arquivo grande você costuma zipá-lo, certo ? Para as páginas web você deveria fazer o mesmo. Browsers modernos como Firefox, Chrome e IE a partir da versão 8 suportam compressão, enviando um parâmetro no cabeçalho da requisição, para o servidor web.

Para os browsers que não suportam, o servidor web não vão comprimir os dados, portanto, não há efeitos colaterais para seu aplicativo. Essa técnica, apesar de aumentar um pouco o processamento, reduz drasticamente o tamanho dos arquivos, principalmente javascript, css e html´s.

Marque a data de expiração dos arquivos:

Arquivos como imagens dificilmente são modificados, portanto, marcar a data de expiração para uma data futura pelo servidor web, vai fazer com que o browser do usuário faça cache dos arquivos, não precisando enviar uma requisição novamente desse arquivo.

Compilação do servidor Apache:

Compile seu servidor para carregar somente os módulos que você precisa. Instalações padrão costumam vir carregadas de módulos opcionais que provavelmente você não vá usar e que estão lá ocupando memória de bobeira.

Além da compilação, escolha o melhor formato do Apache MPM (multi processing module). Existem dois formatos:

  • Worker MPM – que usa múltiplos processos filhos e threads para servir cada requisição. Tem um uso relativamente baixo de memória, porém seu nível de isolamento é menor. Se um processo filho é corrompido,  todas as threads pertencentes ao filho são afetadas. É melhor usado para máquinas com vários processadores;
  • Prefork MPM – usa multiplos processos filhos, porém, cada um deles é responsável por uma requisição http. É mais tolerante a falhas, pois cada processo filho é isolado. Porém esse nível de isolamento custa um maior uso de memória e quanto mais acesso, mais memória usada.

Utilize endereços IP ao invés de nomes nos arquivos de configuração:

Faça uso de endereços de IP, para prevenir chamadas desnecessárias de DNS. Normalmente essas entradas são usadas em diretivas Allow e Deny no Apache.

Não use AllowOverride None:

Essa diretiva no Apache gera chamadas desnecessárias no filesystem. Basicamente, para cada diretório/subdiretório de um determinado arquivo, o Apache fará chamadas para localizar arquivos .htaccess .

Configure o KeepAlive e o KeepAliveTimeout:

Para páginas com muitas imagens, uma única conexão TCP pode ser usada para trazer os dados, reduzindo latência de rede.

Divida o conteúdo dinâmico do estático em dois servidores:

Usando o mod_proxy você pode fazer com que um servidor tipo lighthttp ou apache sem nenhum módulo ativo, possa servir conteúdo estático e repassar para um Apache o conteúdo dinâmico.

Pelo fato dos segmentos de memória usados pelo servidor web não serem divididos e realocados até que os processos acabem (ou deixei de existir), o uso de conteúdo dinâmico mesclado com conteúdo estático pode gerar overheads desnecessários. Exemplo: uma página PHP pode carregar 20MB de memória ram, e após liberado, esse espaço de memória não será desalocado e pode dar espaço para servir um arquivo jpeg que não usará todo esse espaço de memória.

Evite o uso de CGI – use módulos para melhorar performance:

Módulos como FastCgi, mod_php, mod_perl, mod_python, melhoram e muito a performance dos aplicativos dinâmicos. Ao invés de configurá-los como CGI diferetamente, dê preferência ao uso desses módulos citados.

Adquira um CDN, caso possível:

Se grande parte de seu conteúdo é composto por arquivos de mídia – imagens, vídeos, áudio, etc, considere a hipótese de usar um CDN – content delivery network. Além de reduzirem a carga de rede da sua infra-estrutura, aumentam e muito a velocidade em que o conteúdo é servido, pois seus mecanismos de cache procuram um servidor que terá a menor latência para servir ao usuário final.

Ex: Se um usuário que está nos EUA solicitar o download de um vídeo, o CDN vai rotear o usuário para um servidor dos EUA, que terá uma latência muito menor do que vir até um servidor localizado no Brasil. Há um custo de roteamento alto nessa transação.

Utilizei duas soluções com muito sucesso em diversos aplicativos:

  • Akamai Edge Server – solução oferecida pela Exceda, no Brasil;
  • MaxCDN – Possui um custo barato, porém, ainda não existe cobertura de servidores no Brasil;

Acho que é isso. Tentei cobrir, na medida do possível, alguns pontos de forma genérica. Tentarei manter esse guia sempre atualizado, e é claro, sua opinião é fundamental. Se tiver algo para contribuir, deixe um comentário.

Não deixe de instalar as ferramentas YSlow e PageSpeed no seu Firefox. Dão dicas valiosas para aumentar o desempenho do seu aplicativo.

Um abraço,

Robson Dantas

Bookmarksbookmark bookmark bookmark bookmark bookmark bookmark

Popularity: 1%

Falha de segurança no IE – O buraco é mais fundo do que parece

Saiu em tudo que é site na internet, sobre a invasão ocorrida nos sistemas do Google, e que foram atribuídas para um grupo de hackers chineses, supostamente a serviço do seu governo.

Pois bem. Estava lendo agora pouco sobre o método que foi usado, e ficou claro que havia uma falha de segurança enorme no Internet Explorer, e diga-se de passagem que afeta praticamente todas as versões, que possibilitou o ataque.

Em poucas palavras, o ataque explorava uma falha no IE, instalando um malware no computador do usuário, permitindo controle total sobre a máquina infectada. Veja abaixo um pedaço do post do Mashable, que explica o que aconteceu:

As with most targeted attacks, the intruders gained access to an organization by sending a tailored attack to one or a few targeted individuals. We suspect these individuals were targeted because they likely had access to valuable intellectual property. These attacks will look like they come from a trusted source, leading the target to fall for the trap and clicking a link or file. That’s when the exploitation takes place, using the vulnerability in Microsoft’s Internet Explorer.

Once the malware is downloaded and installed, it opens a back door that allows the attacker to perform reconnaissance and gain complete control over the compromised system. The attacker can now identify high value targets and start to siphon off valuable data from the company.

Enfim, se você usa Internet Explorer, sugiro que atualize seu browser agora mesmo, já que a Microsoft publicou um fix para a falha explorada, ou faça algo realmente melhor: troque seu browser para algo decente, como o Firefox ou Chrome.

Não deixe de comentar.

Bookmarksbookmark bookmark bookmark bookmark bookmark bookmark

Popularity: 2%

Registros SPF e as configurações no Google Applications

Está ficando cada vez mais comum ver que os serviços de e-mail estão aplicando restrições para recebimento de mensagens, fazendo verificações de registros SPF.

Um pouco de história e testes …

SPF, do inglês Sender Policy Framework, trata-se basicamente de uma forma de validar que a pessoa (diga-se de passagem o IP do servidor) que está enviando um e-mail, realmente está permitida no domínio de origem, conforme exemplo:

  • robson@dominio.com.br envia uma mensagem para robson@outrodominio.com.br;
  • O servidor outrodominio.com.br , vai verificar se o IP usado pela transferência da mensagem, partindo de robson@dominio.com.br é válido nos registros de SPF;
  • Se não for válido, ele pode rejeitar a mensagem, ou permitir, dependendo da configuração do servidor, tal como as whitelists da vida;

Esse mecanismo é usado para garantir que pessoas não enviem mensagens em nome de outros, apenas trocando os cabeçalhos do e-mail. É totalmente possível enviar uma mensagem como origem “internet@bradesco.com.br” , usando um smtp fake. Ou até mesmo enviar mensagem no nome do seu chefe, ou de um colega por exemplo.

Se você tiver um smtp sem autenticação na sua rede, faça o seguinte teste: Abra o prompt do dos, ou o shell do Linux e vá digitando os seguintes comandos (não esqueça de trocar <<seu email>> pelo seu email de verdade):

telnet smtp.dominio.com.br 25
HELO dominio.com.br
MAIL FROM: hello@google.com
RCPT TO: <<seu email>>
DATA
From: “Google” <hello@google.com>
To: <<seu email>>
Subject: Hello from Google

Esta é uma mensagem fake, demonstrando como fazer spoofing de endereço de email, enviando uma mensagem como se estivesse pelo Google.

.

QUIT

Fazendo o que está descrito acima, poderá funcionar ou não no seu smtp, dependendo da configuração. Se funcionar, você receberá uma mensagem como se fosse enviada por hello@google.com . De fato, em um ambiente seguro isso nunca deveria acontecer, certo ? :)

Quem está usando verificação por SPF ?

A maioria dos provedores usam, e eu tenho certeza que UOL, Terra e Locaweb aplicaram. IG não usa SPF diretamente, já que as contas estão no Gmail e a checkagem do Gmail utiliza outras formas para detectar mensagens.

Apenas para ilustrar um exemplo, desabilitei o SPF no meu servidor DNS para mostrar a validação de SPF. Se você usa GMAIL, pode ver isso clicando na seta azul na direita, e na opção “Mostrar original”.

Mensagem de teste, com registro SPF OK

Mensagem de teste, com registro SPF OK

Mensagem de teste, com registro SPF neutro - Não aprovada

Mensagem de teste, com registro SPF neutro - Não aprovada

Para finalizar, como configurar o SPF no seu provedor se você é usuário de Google Applications ?

Basta editar o DNS do seu domínio, e incluir no registro TXT, a seguinte linha:

v=spf1 include:aspmx.googlemail.com ~all

Mais detalhes no artigo “Set SPF Records” – em inglês, no site do Google.

Bookmarksbookmark bookmark bookmark bookmark bookmark bookmark

Popularity: 3%

Avatar, o filme: My two cents

Depois de ver uma avalanche de posts no twitter falando sobre o filme Avatar, resolvi ir assistir e realmente fiquei impressionado.

O filme é simplesmente incrível em todos os aspectos:

  • Qualidade e detalhes das imagens;
  • Som;
  • Cenário;
  • Efeitos especiais;

A história se passa em um outro planeta, chamado de Pandora e o “Avatar” é um boneco azul, enorme, controlado por seres humanos. Um grupo de seres humanos quer conseguir um metal precioso, que fica debaixo da árvore da tribo dos Na’vi e por causa desse metal (que custa bilhões), iniciam uma guerra.

O cenário é todo baseado em uma mistura de vida e realidade virtual, alternando os dois cenários. No final do filme, uma enorme guerra é desencadeada, tornando todos os efeitos especiais muito legais.

Além de todo esse arsenal do filme, um professor doutor em linguística, chamado Paul Frommer, criou uma língua própria Na’vi que é usada no filme. Há um website na internet dedicado para aqueles que desejam aprender Na’vi.

Eu sugiro que você vá assistir, mas que assista em 3d. Essa é a grande sacada do filme, e a qualidade das cores realmente é fascinante. Se tiver um pouquinho mais de paciência, compre o ingresso antecipadamente e vá no Imax do Shopping Bourbon. Os ingressos podem ser comprados online e clientes Unibanco/Itaú têm 50% de desconto.

Fica aí a dica para o final de semana :)

Boa diversão e não deixe de comentar.

Robson

Bookmarksbookmark bookmark bookmark bookmark bookmark bookmark

Popularity: 3%

Aumentar o sinal do 3g com uma panela, ou mini parabólica

Mais uma vez estou por aqui na tentativa de fazer com que os modem 3g tenham uma melhor qualidade de sinal. Embora ache insano ter que procurar por alternativas para melhorar algo que deveria ser bom (já que pagamos por isso), no fim acaba sendo útil brincar com tudo isso.

Escrevi um post há alguns meses, falando de como melhorar a qualidade de navegação com os 3g da tim, claro e vivo, apenas trocando o DNS e apontando para o OpenDns. Mas após alguns meses de uso, indo de um lado para o outro na cidade de São Paulo, concluí claramente que algumas regiões além do 3g estar sobrecarregado, o sinal fica muito fraco, deixando a qualidade da conexão daquele jeito que você já conhece: Downloads menores que 10kbps.

Para esse pequeno tutorial, tudo o que você vai precisar é de um pequeno extensor USB que conecte a saída de seu laptop (ou PC), através da USB e consiga garantir 1 metro pelo menos de distância. Além do extensor, uma panela de inox redonda (não estranhe, uma panela mesmo).

Não tirei foto da minha montagem, mas achei na internet uma que demonstra o cabo do 3G. Achei também no mercado livre o extensor USB que custa menos que R$ 10,00.

Modem 3g

Modem 3g

Montado o extensor, basta conectado no laptop (ou PC), manter uma distância razoável do mesmo e colocar o modem dentro da panela, bem no centro da mesma. Parece loucura mais funciona! Veja o vídeo abaixo em inglês do processo em funcionamento:

Caso queira, pode ver também os detalhes para construção de uma pequena antena parabólica, porém, em inglês. Estou montando uma, em breve posto os detalhes.

Boa diversão :)

Não deixe de comentar.

Robson

Bookmarksbookmark bookmark bookmark bookmark bookmark bookmark

Popularity: 5%

Escrevendo mensagens 404 customizadas com php e mod_rewrite

Essa dica é simples e rápida, surgiu a partir de um teste que eu precisava fazer e acabei extraindo a idéia do Wordpress.

Com o avanço das práticas de SEO nos aplicativos, cada fez fica mais comum você precisar usar técnicas de rewrite para tornar seus aplicativos “URL-friendly” – url amigáveis. Uma das técnicas é usar mod_rewrite do apache, mandando todas as requisições para um único aplicativo php que faz todo o processo para você.

Exemplo de um arquivo .htaccess que faz isso por você – lembrando de ativar o AllowOverride Authconfig:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

.

Basicamente, essa configuração fala o seguinte:

  • Se o que você chamou no não foi um arquivo encontrado no disco E;
  • Se o arquivo também não é um diretório;
  • Envie a requisição para o index.php;

Crie um index.php no servidor e chame a url qualquer que você vai ver que ele será acionado, sem dúvida alguma. Mas se em alguns dos casos você quiser mandar um erro 404 para que o buscador saiba que não existe e ao mesmo tempo mandar algo decente para o usuário ?

Simples, basta seguir o simples exemplo (apenas demonstração)

<?php
switch($_SERVER["REQUEST_URI"])
{
	case "index2.php":
		require_once("xpto.php");
		break;
	case "teste.gif":
		header("Content-type: image/gif");
		echo file_get_contents("imagem.gif");
		break;
	default:
		ob_start();
		header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
		require("404.html");

}
?>

Simples, não ? Basta escrever um pequeno parser para tratar as url´s que você quer e seguir a lógica que eu criei. Embora esteja em um modelo bem básico, basta evoluir e criar algo mais elaborado.

abs

Robson

Bookmarksbookmark bookmark bookmark bookmark bookmark bookmark

Popularity: 4%

OWLNext now supporting all Microsoft Visual C++ versions

Jogy (from Owlnext) sent a message here on my blog, about a new tool for compiling OWLNext called OWLMaker.

I´ve written few months ago, my adventure in owlnext´s world to compile it sucessfully under Visual C++ 2008. Fortunately, you dont need it anymore :)

Check it out: Owlmaker for OwlNext

As Jogy said,  it should make building OWLNext 6.30 much easier.

Have fun.

Robson

Bookmarksbookmark bookmark bookmark bookmark bookmark bookmark

Popularity: 5%

Dia 27 – Campanha nacional de doação de órgãos e tecidos

Hoje não vou postar algo relacionado a tecnologia. Vou postar sobre a campanha nacional de doação de órgãos e tecidos, que ajudamos a montar na agência. A idéia é que o post escrito por outra pessoa, “seja transplantado” para outros blogs.

Eu sou transplantado há pouco mais de 3 anos, quando descobri um problema sério na visão e tive que “trocar de córnea”. Tenho uma vida normal, graças a uma alma caridosa que realizou a doação. Saiba mais sobre a campanha no site da ABTO.

Bookmarksbookmark bookmark bookmark bookmark bookmark bookmark

Popularity: 5%

Página Seguinte »