sexta-feira, 5 de setembro de 2014

Como fazer um redirecionamento 301 – PHP, ASP, ASP.Net, Java, etc

Você sabia

para o Google, são sites diferentes? Por conta desse pequeno detalhe, o Google reconhece o mesmo conteúdo nos dois endereços e acaba considerando as páginas como conteúdo duplicado. E aí, as pesquisas vão lá pra baixo.
Mas e como isso pode acontecer? Bem... Se o seu site recebe muitas visitas de outros sites, você certamente não terá controle sobre como alguém colocará aquele link nas páginas. E essa pequena diferença do www fará com que a contagem dos links nunca seja a real. Talvez seja até por isso que o SEO no seu site não esteja atuando muito bem...
A solução para isso é programar um redirecionamento 301 do seu endereço principal. Com isso, toda vez que alguém criar um link sem www do seu site, o visitante será redirecionado para a página correta.

Quando você cria uma página ou um site, com o tempo ele pode ser muito compartilhado e ter uma alta Autoridade da Página, contribuindo assim para ficar bem posicionado no Google em uma ou algumas palavras-chave. Só que pode ser que você mudou o nome da empresa, fez alterações nas categorias do blog, mudou o conteúdo de algumas páginas para uma única página e diversas outras situações
Então o que fazer para não perder os backlinks, Autoridade da Página e não levar o visitante para uma chata página “Erro 404: Página não encontrada”? A resposta é usar o redirect 301. Ele é uma instrução que você dá para os robôs dos buscadores que uma página/site mudou permanente para outra página/site.


Você pode utilizar:
Quando desejamos trocar a URL atual para outra. Entretanto, não quer perder a indexação  nas páginas de busca.

Ou quando em algumas ocasiões o administrador do site que também cuida de seu SEO, precisa redirecionar o acesso do site a outra página, sem perder Ranking no Google ou outros sites de busca que trabalham com conceito de PageRank.

Como usar:
Redirect 301 PHP
O primeiro código da página deve ser:
<?php
Header( “HTTP/1.1 301 Moved Permanently” );
Header( “Location: http://www.seu-site-novo.com.br” );
exit(0);
?>

  

Redirect 301 ASP

O primeiro código da página deve ser:
<@ Language=VBScript %>
<%
Response.Status=”301 Moved Permanently” Response.AddHeader “Location”,
“http://www.seu-site-novo.com.br”
%>

 

Redirect 301 ASP.NET

O primeiro código da página deve ser:
<script>
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = “301 Moved Permanently”;
Response.AddHeader(“Location”,”http://www.seu-site-novo.com.br”);
}
</script>

 

Redirect 301 Perl (CGI)

O primeiro código da página deve ser:
$q = new CGI;
print$q->redirect(“http://www.seu-site-novo.com.br”);

 

Redirect 301 ColdFusion

O primeiro código da página deve ser:
<cfheader statuscode=”301″ statustext=”Moved permanently”>
<cfheader name=”Location” value=”http://www.seu-site-novo.com.br”>

 

Redirect 301 Java (JSP)

O primeiro código da página deve ser:
<%
response.setStatus(301);
response.setHeader( “Location”, “http://www.seu-site-novo.com.br” );
response.setHeader( “Connection”, “close” );
%>

 

Redirect 301 Ruby on Rails

O primeiro código da página deve ser:
def old_action
headers["Status"] = “301 Moved Permanently”
redirect_to “http://www.seu-site-novo.com.br”
end

 

Redirect 301 .htaccess (servidor Linux)

O arquivo .htaccess existe nos servidores Linux. O .htacess fica no diretório raiz dos arquivos do seu site, você pode inserir o código no fim do arquivo.
redirect 301 / http://www.seu-site-novo.com.br
Com redirect 301 também é possível fazer o redirecionamento de uma página determinada para outra página específica. Da página www.seusite.com.br/contato para www.seusite.com.br/novo-contato veja o exemplo de código abaixo:
redirect 301 /contato seusite.com.br/novo-contato

 

Redirect 301 Servidor Windows (IIS)

Para quem tem site hospedado em servidor Windows e não quer utilizar os códigos ASP e ASP.NET acima, veja esse link com detalhes sobre o redirecionamento em diferentes versões do servidor com IIS.

 

Não use redirect 302 para mudança permanente

Muitas pessoas mudam de página ou site permanentemente e utilizam o redirecionamento do serviço de hospedagem. Porém, muitas vezes as empresas de hospedagem utilizam o comando redirect 302 ao invés do comando redirect 301. Mas o único comando que transmite todo a relevância e PageRank é o comando 301, que é utilizado para uma mudança permanente. O redirect 302 é utilizado para uma mudança temporária, ou seja, de algumas horas ou dias, e por isso não transmite link juice.

http://www.techtudo.com.br/dicas-e-tutoriais/noticia/2010/12/como-criar-um-redirecionamento-301-permanente-dos-links-sem-www-do-seu-site-para-wordpress.html

http://imasters.com.br/analytics/redirecionamento-301-htaccess-php-java-asp-perl-ruby-on-rails-e-cold-fusion/





sábado, 28 de junho de 2014

O que é JavaScript, e qual é a diferença entre o Java e JavaScript?

É uma linguagem de programação baseada em script.

Inicialmente JavaScript inicialmente foi  desenvolvido por Brendan Eich da Netscape e surgiu em 1995 como linguagem de script client-side da página na web. Ele não faz parte da plataforma Java.

É uma linguagem dinâmica orientada a objetos e criada com sintaxe similar à linguagem C.

O JavaScript fica embutido nos documentos HTML e pode fornecer níveis de interatividade para páginas Web que não são acessíveis com um HTML simples.
Podemos usar JavaScript para escrever funções que são incluídas em páginas HTML e que interagem com o Modelo de Objeto de Documentos (DOM) da página.

Algumas diferenças-entre o Java e o JavaScript:

·         Java é uma linguagem de programação OOP, ao passo que Java Script é uma linguagem de scripts.
·         Java cria aplicações executadas em uma máquina virtual ou em um navegador, ao passo que o código JavaScript é executado apenas em um browser.
·         O código Java precisa ser compilado, ao passo que os códigos JavaScript estão totalmente em texto.

quarta-feira, 18 de junho de 2014

O que é C#

O C# (pronuncia-se "C sharp") é uma linguagem de programação criada para o desenvolvimento de uma variedade de aplicações que executam sobre o .NET Framework . C# é uma linguagem simples, poderosa, com tipagem segura e orientada a objetos. As várias inovações no C# permitem o desenvolvimento rápido de aplicações, mantendo a expressividade e a elegância do estilo de linguagens C.
Visual C# é uma implementação da linguagem C# pela Microsoft. Visual Studio oferece suporte a Visual C# com um editor de códigos completo, compilador, modelos de projeto, designers, assistentes de código, um depurador avançado e fácil de usar e outras ferramentas. A biblioteca de classes do .NET Framework fornece acesso a vários serviços do sistema operacional e outras classes úteis e bem estruturadas que aceleram significativamente o ciclo de desenvolvimento.

Mais informações: http://msdn.microsoft.com/pt-br/library/kx37x362.aspx

Algorítimo Dijkistra

Concebido pelo cientista da computação holandês Edsger Dijkstra em 1956 e publicado em 1959. Visa solucionar o problema do caminho mais curto num grafo dirigido ou não dirigido  com arestas de peso não negativo, em tempo computacional. 

Este algorítimo visa solucionar o problema do caminho mais curto num grafo dirigido ou não dirigido com arestas de peso não negativo, em tempo computacional O([m+n]log n) onde m é o número de arestas e n é o número de vértices. 

Esse algoritmo calcula o caminho de custo mínimo entre vértices de um grafo. Após, ter sido feita a escolhido de um vértice como raiz da busca, este algoritmo irá calcular o custo mínimo desta vértice para todos os demais vértices do grafo. 

Podemos utilizar o algoritmo de Dijkstra  para resolver problemas como o deslocamento de cidade para outra. Qual das várias estradas escolher? Qual oferece uma uma trajetória de menor caminho?

Algoritmo de Dijkstra toma uma decisão que parece ótima no momento. Se considerarmos P um menor caminho entre 2 vértices U e V, todo sub-caminho de P é um menor caminho entre 2 vértices pertencentes ao caminho P, desta forma construímos os melhores caminhos dos vértices alcançáveis pelo vértice inicial determinando todos os melhores caminhos intermediários.

Nota:'um menor caminho' caso existam 2 'menores caminhos' apenas um será descoberto.

Este algoritmo considera um conjunto S de menores caminhos, iniciado com um vértice inicial I. Neste algoritmo cada passo irá busca nas adjacências dos vértices pertencentes a S aquele vértice com menor distância relativa a I e irá adicioná-lo a S, isso é repetido até que todos os vértices alcançáveis por I estejam em S. As arestas que ligam os vértices já pertencentes a S são desconsideradas.

Podemos citar como exemplo prático as rotas da TAM. Então,como encontrar o melhor caminho entre dois pontos que estão interligados diretamente.


Como funciona o Algorítimo de Dijkstra

Este algoritmo funciona da seguinte maneira: parte de uma estimativa inicial para o custo mínimo e vai sucessivamente ajustando esta estimativa. Ele considera que um vértice estará fechado quando já tiver sido obtido um caminho de custo mínimo do vértice tomado como raiz da busca até ele. Caso contrário ele dito estar aberto.

Algoritmo: Seja G(V,A) um grafo orientado e s um vértice de G:

1.   Atribua valor zero à estimativa do custo mínimo do vértice s (a raiz da busca) e infinito às demais estimativas;
2.   Atribua um valor qualquer aos precedentes (o precedente de um vértice t é o vértice que precede t no caminho de custo mínimo de s para t);
3.   Enquanto houver vértice aberto:

seja k um vértice ainda aberto cuja estimativa seja a menor dentre todos os vértices abertos;

feche o vértice k

Para todo vértice j ainda aberto que seja sucessor de k faça:
some a estimativa do vértice k com o custo do arco que une k a j;
caso esta soma seja melhor que a estimativa anterior para o vértice j, substitua-a e anote k como precedente de j.

Vejamos um exemplo de seu funcionamento:



Neste caso, quando todos os vértices estiverem sido fechados, os valores obtidos serão os custos mínimos dos caminhos que partem do vértice tomado como raiz da busca até os demais vértices do grafo.
O caminho propriamente dito é obtido a partir dos vértices chamados acima de precedentes.

Podemos tomar como exemplo como o caminho de custo mínimo que vai de s até v, cujo custo mínimo é 9. O vértice precendente de v na última das tabelas acima é u. Sendo assim, o caminho é:

s ® ... ® u ® v

Por sua vez, o precedente de u é x. Portanto, o caminho é:

s ® ... ® x ® u ® v

Por último, o precedente de x é o próprio vértice s. Logo, o caminho de custo mínimo é:

s ® x ® u ® v

Então, o algoritmo de Dijkstra irá computar apenas um único caminho de custo mínimo entre um dado par de vértices. Para se obter todos os caminhos de custo mínimo entre dois vértices é necessário modificar a forma de anotação dos precedentes. A modificação no passo 3 indicada a seguir é suficiente para permitir o cômputo de todos os caminhos por um processo similar ao descrito acima.
...
Para todo vértice j ainda aberto que seja sucessor de k faça:
some a estimativa do vértice k com o custo do arco que une k a j;
caso esta soma seja melhor que a estimativa anterior para o vértice j, substitua-a e anote k como precedente único de j;
caso esta soma seja igual à estimativa anterior para o vértice j, adicione k ao conjunto dos precedentes de j;

Supondo que o peso do arco (y,v) no grafo acima fosse 2, haveriam dois caminhos de custo mínimo do vértice s para v. Esta duplicidade resulta em dois precedentes para o vértice v:
Vértices
s
u
v
x
y
Estimativas
0
8
9
5
7
Precedentes
s
x
u,y
s
x
Exemplo das vértices, estimativas e precedentes

Sendo assim, os dois caminhos são dados por: (s ® ... ® u ® v) e (s ® ... ® y ® v).
Seguindo as precedências para u e y nestes dois casos obtemos os dois caminhos: (s ® x ® u ® v) e (s ® x ® y ® v)

Algorítimo de Dijkstra Passo a Passo
1º passo: iniciamos os valores:

  
V[G] é o conjunto de vértices(v) que formam o Grafo G. d[v] é o vetor de distâncias de s até cada v. Admitindo-se a pior estimativa possível, o caminho infinito. π[v] identifica o vértice de onde se origina uma conexão até v de maneira a formar um caminho mínimo.

2º passo: usamos o conjunto Q, cujos vértices ainda não contém o custo do menor caminho d[v] determinado.



3º passo: realizamos uma série de relaxamentos das arestas, de acordo com o código:


w(u, v) é o peso(weight) da aresta que vai de u a v.
u e v são vértices quaisquer e s é o vértice inicial. ffd extrair-mín(Q), pode usar um heap de mínimo ou uma lista de vértices onde se extrai o elemento u com menor valor d[u].

No final do algoritmo teremos o menor caminho entre s e qualquer outro vértice de G. O algoritmo leva tempo O(m + n log n) caso seja usado um heap de Fibonacci, O(m log n) caso seja usado um heap binário e O(n²) caso seja usado um vetor para armazenar Q.

Pontos Negativos
O problema que encontramos neste a algoritmo de Dijkstra, é que ele não consegue encontrar o menor caminho em um grafo com pesos negativos. Neste caso teríamos que utilizar o algoritmo de Floyd-Warshall, que consegue descobrir a menor distância entre todos os pares de vértices de qualquer grafo sem ciclos com peso negativo em uma complexidade de tempo O(V³).

Ele não garante, a exatidão caso haja a presença de arcos com valores negativos.

Pontos Positivos
Esse algorítimo embora seja bem simples, possui um bom nível de performance.



























Como Obter o Número de Semanas entre um Intervalo de Semanas


Para este exemplo iremos utilizar a função DATEPART. Esta função retorna um inteiro que representa uma data específica.

Datepart - É a parte de date (um valor de data ou hora) para a qual um integer será retornado. A tabela a seguir lista todos os argumentos datepart válidos. Equivalentes de variável definidos pelo usuário não são válidos.

datepart 
Abreviações 
year 
yy , yyyy 
quarter 
qq , q 
month 
mm , m 
dayofyear 
dy , y 
day 
dd , d 
week 
wk , ww 
weekday 
dw 
hour 
hh 
minute 
mi, n 
second 
ss , s 
millisecond 
ms 
microsecond 
mcs 
nanosecond 
ns 
TZoffset 
tz 
ISO_WEEK 
isowk , isoww 


O exemplo abaixo irá retornar a quantidade de semanas que existem dentro de um intervalor de datas.

SELECT DATEPART( WK, DataCompra) AS NrSemana,
   NomeClineteDataCompra

FROM [Teste].[dbo].[Compra] 
WHERE DataCompra between '18/01/2014' and '15/02/2014'
ORDER BY DataCompra

Espero que tenham gostado, e até a próxima.
aspnetwf@gmail.com


Fonte: