Criando um site de notícias personalizado no WordPress

pensamento-comportamento
Padrão

Decidi criar uma página para o site que contivesse notícias atualizadas de forma que eu pudesse as ler de uma só fonte e de qualquer lugar ou dispositivo que estiver usando.

O melhor protocolo para receber as notícias é claro que é o RSS, sem sombras de dúvidas, já que a maioria utilização este padrão. No passado, havíam projetos opensource que faziam este trabalho bem, como o projeto do SourceForge Gregarius, mas infelizmente foi descontinuado em 2013.

Estudei alguns frameworks e optei pela versão gratuita do plugin WP RSS Aggregator para fazer o trabalho mais complicado de obter organizadamente as notícias e cadastrá-las no wordpress. O WP RSS Aggregator me poupou todo o trabalho de fazer a leitura e de gerar atividades para o gestor de tarefas da plataforma. Só que ao iniciar a utilização percebi que são necessários plugins adicionais para poder ter mais controle da camada de apresentação. Recorri ao site deles para melhorar a apresentação usando as classes CSS, que ajudaram muito, mas ainda não tinha as informações que eu queria: IMAGEM e DESCRIÇÃO, para ampliar a auto-interpretação da notícia e, decisão, se farei ou não a leitura, in loco, clicando no link. Normalmente os add-ons oferecidos no site resolvem a grande maioria dos casos.

Foi aí que veio o insight de obter tais informações diretamente das publicações através do Protocolo OpenGraph, que tanto tem ajudado nas otimizações SEO. Para usar o OpenGraph, sem ter que re-inventar a roda, usei a classe php do projeto github OpenGraph do Scott MacVicar.

Criei uma rotina em javascript acessando actions do wordpress, em php, por ajax, de forma que pudesse manipular a informação depois da página toda completa, causando um efeito de lazy-loading para as imagens e para a descrição da notícia, enquanto já posso ir lendo.

Para usar o protocolo OpenGraph no worpress é preciso, primeiramente, declarar a classe do Scott no arquivo functions.php do tema ativo:

require_once(‘/caminho-completo/opengraph-master/OpenGraph.php’);

Feito isso já pode ser criada a action no wordpress. Eu poderia (e deveria) ter feito uma action, mas por fins de depuração, separei as duas, como você pode ver abaixo.

A primeira action, obterImagemOpenGraph, obtém o link da imagem, a partir de uma URL:

add_action(‘wp_ajax_obterImagemOpenGraph’,’obterImagemOpenGraph’);
add_action(‘wp_ajax_nopriv_obterImagemOpenGraph’,’obterImagemOpenGraph’);
function obterImagemOpenGraph(){
$urlParam = $_POST[‘URL’];
$graph = OpenGraph::fetch($urlParam);
$retorno = ”;
foreach ($graph as $key => $value) {
if ($key == ‘image’) {
$retorno .= “$value”;
}
}
echo $retorno;
}

A segunda action, obterDescricaoOpenGraph, obtém a descrição, também usando a url como parâmetro.

add_action(‘wp_ajax_obterDescricaoOpenGraph’,’obterDescricaoOpenGraph’);
add_action(‘wp_ajax_nopriv_obterDescricaoOpenGraph’,’obterDescricaoOpenGraph’);
function obterDescricaoOpenGraph(){
$urlParam = $_POST[‘URL’];
$graph = OpenGraph::fetch($urlParam);
$retorno = ”;
foreach ($graph as $key => $value) {
if ($key == ‘description’) {
$retorno .= “$value”;
}
}
echo $retorno;
}

Por fim, o código javascript que realiza a leitura após a página estar toda carregada.

<?php
$script = ‘<script>’;
$script .= ‘var ajaxurl = “‘ . admin_url(‘admin-ajax.php’) . ‘”;’;
$script .= ‘</script>’;
echo $script;
?>

<script>
window.onload = function() {
var list = document.getElementsByClassName(“rss-aggregator”)[0];
Array.prototype.forEach.call(list.childNodes, function(el) {
var texto = el.innerHTML;
var urlNews = el.childNodes[0].href;
var img = urlNews;
jQuery.ajax({ url: ajaxurl, type: ‘POST’,
data: { ‘action’: ‘obterImagemOpenGraph’, ‘URL’: urlNews },
success: function( data ){
jQuery.ajax({ url: ajaxurl, type: ‘POST’,
data: { ‘action’: ‘obterDescricaoOpenGraph’, ‘URL’: urlNews },
success: function( data2 ){
var retorno = data2.substring(0,data2.length-1);
el.innerHTML = “<div class=’wprss-avm-img’><img class=’img-responsive’ src='”+ data +”‘></div>” + “<div class=’wprss-avm-text’>”+ retorno +”</div><br><span class=’wprss-avm-leiamais’>Leia Mais: </span>” + texto;
},
error: function (response){
console.log(response);
}
});
},
error: function (response){
console.log(response);
}
});
});
};
</script>

 

A integração completa por ser vista diretamente na página:

Notícias Atualizadas

Espero que esta pequena implementação e integração de códigos ajude.

 

 

 

 

 

A sua segurança depende de você

seguranca
Padrão

Me preocupo muito com segurança da informação. Você não?!

Muitos amigos costumam dizer:

Como você nunca pega vírus se não usa anti-virus?
Bom, a resposta é simples” – Eu preciso não ter o anti-vírus trabalhando comigo.”

Tá, mas e aí?

Eu tenho cuidados (e backup).

Alguma hora temos que aprender sobre segurança da informação.

Isso, comigo, ocorreu em meados de 1999, quanto estava à um fim-de-semana da entrega de um sistema. Fui carregar um jogo em um disquete e fui contaminado pelo famigerado stoned e seu comparsa michelangelo que detonaram a trilha 0 e toda a FAT. Nesta época não havia softwares de recuperação e nem tínhamos tanto acesso à informação vinda dos EUA. Paguei caro a um profissional para recuperar o código-fonte para entregar ao cliente.

Esse dia me fez entender o real significado da segurança da informação.

Eu gostava muito dos aplicativos clientes de email. Por anos usei o Kauffman, que provavelmente nenhum leitor deve lembrar como alternativa ao Outlook Express ou Thunderbird. Mas precisamos nos adaptar.

Trabalhei em um provedor de Internet em que o gerente de rede me dizia que o tráfego de emails era o maior de todos.

Precisamos nos adaptar. Existem webmails fantásticos para gestão de correspondência eletrônica. Confie. Alguns já pré-classificam os suspeitos. Não traga para seu dispositivo o conteúdo que desconhece.

Se você não vai instalar e nem tem pretenção de armazenar, para que correr riscos? Os webmails avançaram tanto que até permitem a visualização de conteúdo.

Eu sou um dos felizardos clientes da Google que ganharam as primeiras contas do Google Apps de 100 usuários vitalícia.

Disco Virtual. Conhece? Arquivos importantes devem ser armazenados na nuvem, se possível em até dois repositórios diferentes.
Olha, não tem mais jeito. Os smartphones vão migrar para um óculos ou dispositivos ainda mais leves e práticos. Seus dados precisarão estar online e seguros.

Outra resposta simples muito boa para a segurança da informação é:

  • Proteja-se de sua curiosidade.

Essa é a causa mais comum dos problemas atuais. Ou porque abre um arquivo ou porque acessa um site que te induz a injetar um código para processamento no seu dispositivo.

Recuperando o Windows 10 de um ghost mal sucedido

gasparzinho
Padrão

Recuperando o Windows 10 depois de um ghost mal sucedido

Na última sexta-feira levei meu notebook para uma verificação no sistema de ventilação para diminuir o aquecimento com processamento excessivo, principalmente pelo processamento de vídeo. Aproveitei e solicitei ao técnico que migrasse meu HD para um SSD. Ledo engano! Quando fui pegar fiquei mais uma hora esperando que ele fizesse tentativas de recuperação. Ele chamou outros técnicos que condenaram o computador dizendo que só formatando. Técnico tem uma dificuldade em se comprometer com dados do cliente. Para eles, formatar é sempre a melhor solução.

Fui pra casa com note “morto”. Fazer tentativas no HD do cliente sem entender qual foi o problema que o afetou pode ser pior que o problema inicial. Depois de muita pesquisa para primeiro entender o problema, consegui resolver.

O Problema

Ao resolver clonar o HD, o técnico optou pelo famigerado Norton Ghost (pessoalmente seria minha última opção, mas…).   Para fazer isso, o ghost desmonta os volumes para fazer cópia segura. Como iria demorar muito, pedi para ele cancelar a clonagem. Ao invés de cancelar o processo, com ESC ou outra tentativa, o técnico optou por desligar o computador. Foi aí que o problema foi gerado. Se ele tivesse cancelado o ghost normalmente, pela opções do software, o ghost teria deixado o volume pronto para uso. Ao desligar, o sistema tornou-se inoperante.

Evidência

A principal evidência do problema é o erro que diz:

Falha em carregar o \windows\system32\winload.exe

Observe que não há indicação de qual unidade (C:, D:, E:) no caminho  do arquivo. Essa é a evidência! O Windows 10 usa uma partição inicial para dar o boot e depois se move para a partição onde está realmente o sistema operacional. O problema é que ele não conseguia atribuir letra para esta unidade e, consequentemente, o boot tornou-se impossível.

A maioria das fontes na internet atribuem 4 comandos para esta recuperação em modo administrador:

bootrec /fixboot
bootrec /scanos
bootrec /fixmbr
bootrec /rebuildbcd

Se mesmo depois disso não funcionar, aí você vai precisar de um pouco mais de perícia para executar o utilitário BCDBoot Utility.

  1. Digite diskpart e pressione Enter.
  2. Digite list volume e pressione Enter.
  3. Observe a tabela e localize a linha que estiver com indicação “Reservado para o Sistema” e anote o número do volume.
  4. Digite select Volume=N e pressione Enter, onde N é o número do volume anotado no passo anterior.
  5. Digite assign letter=w e pressione Enter.
  6. Digite exit e pressione Enter.
  7. Digite bcdboot c:\Windows /s w: /f uefi e pressione Enter.

Este processo fará uma nova verificação dos sistemas operacionais instalados e remontará a lista para que funcione. Onde está “c:\windows” você deverá substituir pela unidade que o windows 10 está. No fim, o que esse comando faz é encontrar seu windows e remontar na unidade W uma lista de sistemas operacionais disponíveis, permitindo que seu computador inicie.

Reinicie o computador e aguarde até que tudo volte como estava.

Para maiores detalhes, deixe seu comentário para que outras pessoas como você possam sanar dúvidas parecidas ou escreva diretamente ao Kevin Arrows no excelente artigo FIX: Steps to Fix Winload.EFI Error, que me ajudou muito no entendimento do problema e montagem da solução.

Ah, e se estiver procurando uma ótima opção para migrar seu HD para SSD, não deixe de visitar o Rene.E Laboratory e usar a ferramenta gratuita por 14 dias Renee Becca. A versão paga custa somente US$ 24,95. É simples, prático, intuitivo e barato para um recurso tão útil.

Grande abraço e até a próxima!