17 maio

Resolver problema de tela preta em conexão de área de trabalho remota

Hoje aconteceu comigo algo inusitado ao conectar no meu serviço através da conexão de área de trabalho remota, também conhecido por RDP e Remote Desktop: após o login, a tela ficou preta e não saía disso.

Achei que a máquina estava “pensando” ainda, pois ela tem pouca memória RAM, e aguardei, mas nada de aparecer a tela. Conseguia conectar também pelo SSH e já pensei em reiniciar a máquina, mas tinha vários arquivos abertos e todos no ponto que precisava olhar.

Foi então que busquei uma alternativa pra isso, e consegui encontrar: bastou entrar com as teclas Ctrl+Alt+End, que envia um Ctrl+Alt+Del na máquina remota, e apertar no botão “Cancelar”, simples assim.

27 abr

Logoff um usuário pela linha de comando

Aqui em casa, uso um computador para trabalhar e jogar, que fica no meu escritório, mas é comum minha esposa ou meu filho usar o PC uma hora ou outra.

Porém, normalmente eles não fazem logoff, e fica portanto com possíveis janelas de browser e jogos abertos.

Pesquisando uma solução para fazer logoff deles sem ter de ir em “Trocar usuário”, me deparei com uma postagem no site Superuser: Log off a disconnected user remotely, do usuário thePurpleMonkey.

Não é exatamente o que eu preciso, porém a resposta do usuário Luiz Angelo me deu o caminho das pedras.

Para verificar quais sessões estão rodando na máquina, no prompt de comando basta digitar o comando qwinsta:

Como pode ser observado, temos uma coluna “ID” ali, e é o valor dessa coluna que passamos para o comando logoff. Numa janela de comando com privilégios de admin, basta executar o comando:

E pronto, assim que o comando retorna, a sessão do usuário que você passou já não existe mais.

05 jan

Adicione uma linha com os número no teclado do Google do Android

Muitas vezes estou digitando no teclado e fico procurando os números, aí tenho que apertar a tecla que mostra os números e mais um monte de coisa que eu não precisava, por exemplo.

Costuma acontecer isso em diversas situações, como ao digitar senhas, ou quando você manda um zapzap dizendo que achou uma promoção muito boa no mercado e quer passar o preço.

Pensando nisso em outras coisas, o Google inclui no seu teclado, agora chamado de Gboard, uma opção exclusivamente para isso. Para encontrar e ativar a opção é muito simples.

  1. Abra o menu de configurações do GBoard, pelo teclado segure a tecla da vírgula até aparecer e selecione o ícone da engrenagem.
  2. Em seguida, escolha a opção Config. do teclado Gboard.
  3. Escolha a opção preferências
  4. Ative a opção “Linha de números”.

Fonte: How to Add a Persistent Number Row to Android’s Gboard Keyboard

 

05 jan

Adicionar rotas automaticamente com arquivo de lote ao conectar VPN usando o Agendador de Tarefas

Aqui no serviço, para podermos fazer os testes em desenvolvimento ou fazer nossos programas se comunicarem com o mainframe, precisamos realizar uma conexão VPN para acessar os servidores de nosso cliente.

Além de fazer isso, temos que executar como administrador um arquivo que adiciona as rotas ao nosso cliente. E a cada 10 conexões, em 11 eu esqueço de rodar esse arquivo.

Pesquisei então uma maneira de automatizar isso, e encontrei um modo de adicionar rotas automaticamente com arquivo de lote ao conectar VPN usando o Agendador de Tarefas do Windows.

Para isso, comece executando o prompt de comando como administrador: clique no botão iniciar, escreva cmd, no resultado da busca clique com o botão direito em cmd.exe e clique em “Executar como administrador”

Executar prompt de comando como administrador

Executar prompt de comando como administrador

Em seguida, é só executar o comando abaixo, substituindo o caminho informado para o caminho correto do seu arquivo batch e SUA_VPN pelo nome dado para sua conexão VPN.

Isso é tudo em uma linha só, ok? Como eu precisei adicionar rotas, precisei usar o prompt de comando elevado e passar os parâmetros /RL HIGHEST, caso não tenha necessidade e for fazer algo que não precise disso, como abrir um site de algum IP dessa rede que conectou ou coisa do tipo, pode fazer em um prompt de comando normal e retire a parte /RL HIGHEST do comando.

Fontes

30 ago

Woocommerce – Verificando a assinatura no Webhook

Nos últimos tempos, tenho trabalhado bastante com PHP e em alguns projetos escolhi usar o WordPress, que já uso aqui no blog, estou habituado e é relativamente fácil conseguir material sobre ele na internet.

Desses projetos, um deles é uma loja virtual, e comecei a conhecer e utilizar o famoso plugin do WooCommerce, que transforma seu WordPress em uma loja virtual totalmente funcional.

Nesse projeto, surgiu a necessidade de quando ocorrer determinados eventos na loja, como a criação do pedido, comunicar o evento para um outro sistema. Foi aí que descobri a existência dos Webhooks do WooCommerce.

O que é Webhook

Segundo a Wikipedia, Webhooks são callbacks HTTP definidos pelo utilizador, e isso realmente resume muito bem.

Quem está acostumado já em trabalhar com eventos no Javascript por exemplo, entenderá fácil. No WooCommerce, algumas ações como criar ou atualizar um produto e criar um pedido, geram eventos. Nesses eventos, o motor do WooCommerce pode chamar páginas na Web passando algum conteúdo, semelhante no jQuery que quando algo acontece em determinado seletor você chama uma função definida por você. Assim, basta criar uma página que receberá este conteúdo e processar de alguma maneira.

Porém, como toda página, ela é aberta publicamente, e alguém com a URL pode tentar enviar dados falsos para ele, por exemplo para dar um desconto de 99% no próprio pedido. Para evitar isso, um dos cabeçalhos enviados para a página contém uma assinatura, que deve ser verificada para confirmar a identidade de quem enviou aquele conteúdo. E é para isso que estamos aqui!

Na rede, não consegui encontrar nenhum exemplo prático em PHP, além da documentação atual nessa parte não ajudar muito, e tive um pouco de dificuldade em entender como isso poderia ser feito, então vou compartilhar com vocês o meu método, que é extremamente simples e fácil.

Verificando o X-WC-Webhook-Signature

O cabeçalho que contém a assinatura se chama X-WC-Webhook-Signature. Para calcularmos o nosso valor para comparar com ele, vamos precisar dos dados do conteúdo e do valor do campo “Segredo” quando cadastramos o Webhook, em Woocommerce > Configurações > API dentro do painel do WordPress.

Webhook do WooCommerce

Webhook do WooCommerce

Com esse valor e o conteúdo, precisamos utilizar a função do PHP hash_hmac e codificar o retorno para base64. Para isso, criei esta função abaixo que faz tudo isso já:

Bem simples e direta, apenas uma linha pra fazer tudo que precisamos. Com isso, já sabemos se podemos confiar no conteúdo enviado ou não.

Abaixo, um exemplo bem simples de script, que apenas escreve as informações recebidas e a checagem de assinatura em arquivo:

 

15 maio

Adicionar Vhost no XAMPP

Recentemente eu precisei adicionar um Vhost para minha instalação do Xampp. Tenho trabalhado bastante com PHP no último ano e minha pasta htdocs já estava um caos, então para me organizar melhor resolvi procurar informações sobre eles.

Minha instalação do Xampp não é recente (5.6.3 e hoje já temos a 5.6.21), mas mesmo assim só encontrei informações muito antigas e que não funcionam mais, portanto estou escrevendo este post para o pessoal que também passar por isso, e pra mim também quando me esquecer como faz.

Primeiro criei uma pasta para armazenar os arquivos do trabalho, e dentro dela criei outra onde será apontado o Vhost propriamente dito. Dentro também crie uma pasta para os logs:

Em seguida, altere o seu arquivo hosts, no Windows 10 64 bits ele se encontra em C:\Windows\System32\drivers\etc, adicionando uma linha no final. Será necessário permissão de administrador para salvar, caso não queira abrir o documento num editor de textos como administrador, pode copiar o arquivo hosts para a área de trabalho, editar normalmente e copiar e colar de volta para a pasta C:\Windows\System32\drivers\etc que neste momento o Windows irá perguntar pela permissão de administador:

Caso queira adicionar mais de um endereço apontando para o mesmo IP, no nosso caso o computador local, só precisa dar um espaço e adicionar outros domínios na mesma linha, como por exemplo:

Feito isso, só falta a configuração do Apache, que deve ser feita no arquivo D:\xampp\apache\conf\extra\httpd-vhosts.conf. Note que a primeira configuração é para manter o atual conteúdo do Apache no mesmo local (http://localhost), caso contrário não será possível acessar a pasta antiga novamente:

Pronto, agora reinicie o Apache, caso ele esteja rodando, coloque algum index.html na sua pasta htdocs de trabalho e tente acessar http://trabalho.localhost para verificar se tudo está certo.

Obrigado por ler até aqui, e aproveite e deixe seu comentário ou alguma sugestão nos comentários.

01 dez

Fone de ouvido com som saindo só de um lado

Um problema muito comum nos fones de ouvido é quando só sai som de um lado. Esse problema acontece muito comigo, não sei se sou descuidado ou se os fones que comprei são todos descartáveis mesmo.

O grande problema que isso dá é não poder ouvir nada de um dos lados, e isso prejudica muito em músicas ou vídeos que queira assistir.

Para remediar isso, no Windows 10 (mas acho que a partir do 7 já é assim) você pode clicar com o botão direito no ícone do alto-falante, selecionar dispositivos de reprodução. Na tela seguinte, dê dois cliques para abrir as propriedades do alto-falante, vá na aba aperfeiçoamentos, deixe desmarcado “Desativar todos os efeitos sonoros” e na lista abaixo dele marque “Virtualização de fone de ouvido”.

Não é talvez tão bom como colocar ele em Mono, ou melhor ainda como consertar ou comprar um fone novo, mas já quebra um galho.

10 ago

Servidor Apache não inicia após a atualização para Windows 10

Se você trabalha em uma máquina com Windows e usa o Apache para desenvolver seus sites localmente, muito provavelmente você vai se deparar com este problema ao iniciar o Windows 10 depois de atualizar seu sistema operacional.

O problema acontece porque o Windows instala um servidor IIS pra você, se nem perguntar se você quer ou não.

Enfim, para voltar ao normal, você pode desativar o serviço chamado “World Wide Web Publishing Service”, ou em Português “Serviço de Publicação da World Wide Web”. Para isso siga os passos a seguir:

  1. Clique no iniciar, ou abra a janela Executar (Windows+R) e escreva “services.msc”, e dê ENTER.
  2. Procure o nome do serviço na lista e dê duplo clique nele.
  3. Em tipo de inicialização, deixe em Desativado.
  4. Pressione o botão Parar, e clique no OK.
Desabilitando o serviço do IIS no Windows 10

Desabilitando o serviço do IIS no Windows 10

Tudo pronto, agora você terá seu Apache rodando novamente e pode trabalhar em paz, até o próximo bug do Windows 10 aparecer, como ele parar de responder os cliques no botão iniciar.

03 jun

Enviar formulário de contato com anexo em PHP

Recentemente precisei montar um formulário de contato em PHP com a possibilidade de enviar um arquivo anexado, e percebi que o PHP não suporta isso nativamente pela função mail(). Como eu não quis usar nenhuma biblioteca de terceiros pronta, vi que seria necessário alterar o header do e-mail e acrescentar nele o anexo.

Para alcançar esse resultado, primeiramente precisei alterar o meu formulário. Este abaixo serve como exemplo, note o atributo enctype="multipart/form-data", sem ele não vai funcionar.

No script que vai receber os dados para envio, verifico a existência do anexo, já que ele é opcional, e codifico ele no header do e-mail. Aproveito e também dou uma limpada nos textos enviados, para evitar o chamado Email injection, já que não devemos confiar em textos enviados pelo usuário.

Pronto, com isso agora o formulário é capaz de enviar os anexos corretamente.

Fontes