Neste post mostro como adicionar de forma útil um sitemap nos blogs feitos com o blogger.
Para estar bem posicionado nos resultados do Google, é muito importante ter um sitemap (mapa do site), mas como para isso você precisa enviar para o seu servidor o arquivo do sitemap isto se torna algo totalmente inviável nos blogs do blogger.com.
A primeira coisa a fazer é cadastrar o seu blog nas Ferramentas do Google para webmasters.
Depois de cadastrado, clique no menu do lado esquerdo "Configuração do site" e na aba "Sitemaps" que abrirá abaixo. Na página que aparecer, escolha "Enviar um Sitemap".
Vai abrir um campo com o endereço do blog que você cadastrou, exemplo "http://seublog.blogspot.com/", no campo em branco logo após o endereço digite :
atom.xml?redirect=false&start-index=1&max-results=200
Clique no botão "Enviar Sitemap" e pronto seu blog já tem um sitemap relacionado. Se você fez tudo corretamente, em alguns minutos os relatórios serão atualizados e o Google checará o arquivo regularmente para manter-se atualizado sobre seus posts.
Adicionar sitemap no blogger
Consulta no postgres com acentos
Vou mostrar neste post como utilizar uma função em pl sql que retira acentos, para os casos em que a codificação do seu banco for utf-8.
Um grande problema que encontrei quando comecei a desenvolver sistemas para web, foi o fato de ter que realizar consultas com palavras acentuadas em bancos de dados com codificação utf-8, e vi que isso era a dúvida e um grande problema para muitos outros desenvolvedores tambem.
Então segue abaixo uma função em pl sql para postgres que retira os acentos, para facilitar na hora da consulta.
Obs: Esta função foi achada em fóruns sobre postgres, por isso não creditei a ninguem, caso alguém conheça o criador do código, deixa como comentário que eu atualizo o post dando o devido crédito.
CREATE OR REPLACE FUNCTION sem_acento(text)
E depois de criado a função no postgres é só realizar as consultas como no exemplo abaixo:
RETURNS text AS
$BODY$
select
translate($1,'áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇ',
'aaaaaeeeeiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcC');
$BODY$
LANGUAGE 'sql' IMMUTABLE STRICT;
SELECT * FROM Tabela WHERE UPPER(sem_acento(campo_que_deseja_retirar_os_acentos))
LIKE UPPER(sem_acento('%cão%'));
-- Retorna CAO, CÃO, cao, etc.
Transactions com Cakephp e Mysql
A algum tempo precisei utilizar transactions em um projeto grande desenvolvido em Cakephp e Mysql, e depois de muito esforço e pesquisa em fórums e grupos de discussão consegui fazer funcionar, como mostro a seguir.
Primeiro o tipo das tabelas tem que ser "InnoDB".
ALTER TABLE table_name type=InnoDB;
Por padrão o MySQL é executado em modo autocommit. Isto significa que assim que você
executa uma instrução que atualiza (modifica) uma tabela, o MySQL armazena a atualização
no disco.
Se você estiver usando tabelas com segurança a transação (como InnoDB \ ou BDB), você pode colocar o MySQL em modo não autocommit com o seguinte comando:
$this->Model1->query('SET AUTOCOMMIT = 0');
Para iniciar uma transação usa-se o código abaixo:
(Note que só usaremos os códigos de transação apenas em um dos models).
$this->Model1->query('START TRANSACTION');
O código abaixo mostra dois Models(Model1 e Model2) que não tem relacionamento explicito, sendo gravados no banco unicamente quando os dois são validados e retornam como verdade.
Tentaremos salvar os Model1 e Model2 com os dados vindos de algum formulário e passaremos a ambos o parâmetro atomic com o valor false, para que o CakePHP entenda que ele não deve salvar os modelos relacionados a esses Models(Model1 e Model2) deixando isso a cargo do código que estamos inserindo.
E depois utilizamos duas variáveis(model1 e model2), para saber se podemos enviar um COMMIT ou um ROLLBACK nas alterações feitas no banco.
$this->Model1->saveAll($this->data['Model1'],array('atomic'=>false));
$model1=$this->Model1->getLastInsertId();
$this->Model2->saveAll($this->data['Model2'],array('atomic'=>false));
$model2=$this->Model2->getLastInsertId();
Por fim testamos as variáveis e se as duas não forem nulas, confirmamos no banco com o comando COMMIT e se por acaso acontecer algum problema com a inserção desses dados o ROLLBACK.
if($model1 != null && $model2 != null){
$this->Model1->query('commit');
echo "Inserção realizado com sucesso!";
}else{
$this->Model1->query('rollback');
echo "Operação não realizada!";
}
Espero ter ajuda aqueles que estiverem com as mesmas dificuldades que eu tive e gostaria de frisar que essa não é a melhor nem a pior maneira de se fazer transactions utilizando CakePHP e Mysql é só a forma que eu encontrei de fazê-las funcionar sem problemas.
Qualquer dúvida, reclamação ou sugestão sobre o código é só postar um comentário que eu responderei o mais breve possível.