Deprecated: Return type of HM\BackUpWordPress\CleanUpIterator::accept() should either be compatible with FilterIterator::accept(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/backupwordpress/classes/class-path.php on line 456

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/viniciusbig/viniciusarantes.com.br/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340
Vinicius Arantes https://www.viniciusarantes.com.br/ Anotações de um programador Wed, 14 Oct 2020 12:22:08 +0000 pt-BR hourly 1 https://wordpress.org/?v=6.4.4 https://www.viniciusarantes.com.br/wp-content/uploads/2018/01/cropped-Untitled-2-32x32.png Vinicius Arantes https://www.viniciusarantes.com.br/ 32 32 Mantenha as preferências dos seus programas seguros e sincronizados https://www.viniciusarantes.com.br/mantenha-as-preferencias-dos-seus-programas-seguros-e-sincronizados/ Mon, 08 Jan 2018 10:09:30 +0000 https://www.viniciusarantes.com.br/?p=527 Sabe quando você configura seu programa favorito com todas as suas preferências e depois precisa re-configurar tudo se formatar a máquina ou se for trabalhar em um segundo computador? Se você trabalha em mais de um computador, pode querer que suas configurações sejam automaticamente compatilhadas entre todas as máquinas. Além de garantir um backup das [...]

O post Mantenha as preferências dos seus programas seguros e sincronizados apareceu primeiro em Vinicius Arantes.

]]>
Sabe quando você configura seu programa favorito com todas as suas preferências e depois precisa re-configurar tudo se formatar a máquina ou se for trabalhar em um segundo computador?

Se você trabalha em mais de um computador, pode querer que suas configurações sejam automaticamente compatilhadas entre todas as máquinas. Além de garantir um backup das configurações em caso de formatação.

Existe um aplicativo chamado Mackup que faz justamente isso! Mantém as configurações de todos seus aplicativos (os chamados dot files) sincronizados entre as suas máquinas. Ele guarda suas configurações na nuvem e mantém os arquivos sincronizados.

Dica: Se você não sabe o que são os dotfiles, leia esse repositório do Github: Awesome Dotfiles.

 

Instalação

Se você tem o Dropbox instalado e quer usá-lo para salvar seus arquivos de configuração, o uso é bem simples.

No OS X é possível instalar o programa com o Homebrew:

<span class="pl-c"># Instala o Mackup</span>
brew install mackup

<span class="pl-c"># Executa e faz o backup dos seus arquivos de configuração</span>
mackup backup

A partir de agora, todos os seus arquivos de confugração serão automaticamente atualizados (porque o Dropbox mantém a pasta em sincronia).

depois, em uma outra máquina você pode recuperar as mesmas configurações:

<span class="pl-c"># Instala o Mackup</span>
brew install mackup

<span class="pl-c"># Executa e faz o restore dos seus arquivos de configuração</span>
mackup restore

Pronto!

Em resumo

Resumindo, o que o programa faz é:

  • Backup das suas configurações de programa em um lugar seguro (por exemplo, o Dropbox)
  • Sincroniza suas configurações entre todas as suas estações de trabalho
  • Restaura as configurações em qualquer máquina nova com uma linha de código

O que ele faz por baixo dos panos é mover seus arquivos de configuração para o diretório de backup e cria um link simbólico (symlink) na pasta original apontando para lá. Se um dia você desistalar o Mackup ele faz exatamente o oposto.

Você pode usar o comando mackup -h para obter mais ajuda.

Storages Suportados

Você não precisa usar o dropbox para criar seus backups, basta apenar mudar a configuração do programa antes de executá-lo.

Fonte

O post Mantenha as preferências dos seus programas seguros e sincronizados apareceu primeiro em Vinicius Arantes.

]]>
Download automático de legendas de séries https://www.viniciusarantes.com.br/download-automatico-de-legendas-de-series/ Thu, 04 Jan 2018 11:46:07 +0000 https://www.viniciusarantes.com.br/?p=524 Se você ja baixou legendas para um filme ou um seriado sabe que às vezes é chato encontrar a legenda certa para o seu release. E quando um programador se depara com uma tarefa chata, ele logo pensa em automatizar! Encontrei um programa de linha de comando, escrito em Python que faz o download automático [...]

O post Download automático de legendas de séries apareceu primeiro em Vinicius Arantes.

]]>
Se você ja baixou legendas para um filme ou um seriado sabe que às vezes é chato encontrar a legenda certa para o seu release. E quando um programador se depara com uma tarefa chata, ele logo pensa em automatizar!

Encontrei um programa de linha de comando, escrito em Python que faz o download automático das legendas para filmes e seriados do site Legendas TV.

O programa também pode varrer um diretório procurando por arquivos de mídia ou procurar a legenda para um arquivo único.

A versão inicial desse programa não é meu, encontrei em um Google Code, depreciado e sem manutenção há muito tempo. Fiquei curioso pra saber como funcionava e acabei atualizando o código e disponibilizando no meu github. Aproveitei o processo pra aprender um pouco mais de Python e me divertir no processo!

Requisitos

Você vai precisar do Python (lógico) e algumas dependencias, mas tudo bem direto pra intalação.

 

  • Instale o Homebrew.
  • Instale o Python e o PIP
  • Instale o unrar
    brew install unrar
    .

E instale as bibliotecas do Python:

  • pip install mechanize
  • pip install pickle
  • pip install patool
  • pip install argparse

Se sua máquina precisar de algum outro pacote, o script vai avisar e você pode instalar com o pip.

Instalação

Faça um clone do projeto.

git clone https://github.com/viniciusbig/tvleg.git

Para ver instruções de como usar, navege até o diretório do script e digite:

python tvleg.py --help

Configuração

Antes de começar, abra o arquivo

data/config.json
 e configure suas credenciais do site legendas.tv.

Exemplos

python tvleg.py --file some_file.mkv
Resultado: busca legendas para o arquivo some_file.mkv
python tvleg.py --dir some_dir/
Resultado: Pesquisa recursivamente por arquivos de mídia no diretório informado. Depois disso, começa a pesquisar por legendas para cada filme ou episódio encontrado.
python tvleg.py --dir some_dir/ --ignore
Resultado: O mesmo que o exemplo acima, mas se um arquivo já possui legenda, o tvleg irá ignorar.
python tvleg.py --dir some_dir/ --ignore --automatic
Resultado: O mesmo que o exemplo acima, mas o tvleg não vai perguntar nada. Ele fará o melhor para conseguir o download da legenda que mais se aproxime do arquivo de mídia encontrado.

O post Download automático de legendas de séries apareceu primeiro em Vinicius Arantes.

]]>
Ambiente de desenvolvimento web no Mac OS sem dor https://www.viniciusarantes.com.br/ambiente-de-desenvolvimento-web-no-mac-os-sem-dor/ Tue, 02 Jan 2018 12:28:39 +0000 https://www.viniciusarantes.com.br/?p=513 Você já precisou configurar rapidamente um ambiente de desenvolvimento PHP? Nada é tão simples quando se está com pressa. Sempre que preciso formatar meu computador, a principal coisa que penso é no trabalho que vai dar configurar todo o ambiente de desenvolvimento novamente e subir os sites que estão locais na minha máquina. Configurar PHP, MySQL, [...]

O post Ambiente de desenvolvimento web no Mac OS sem dor apareceu primeiro em Vinicius Arantes.

]]>
Você já precisou configurar rapidamente um ambiente de desenvolvimento PHP? Nada é tão simples quando se está com pressa.

Sempre que preciso formatar meu computador, a principal coisa que penso é no trabalho que vai dar configurar todo o ambiente de desenvolvimento novamente e subir os sites que estão locais na minha máquina.

Configurar PHP, MySQL, e Apache ou o Ngix para que funcionem redondinho é uma delícia se você tem tempo e gosta da linha de comando. Mas no mundo corrido em que vivemos, nem sempre isso é possível.

Pra isso criaram uma ferramenta de instalação simples que deixa o ambiente configurado e pronto para ser utilizado.

O Valet é um ambiente de desenvolvimento para Mac criado pela equipe do Laravel, mas suporta não só o próprio Laravel, como uma série de outros frameworks nativamente. É possícel até compartilhar sites locais publicamente usando túneis (Achei essa parte incrível!). Você não precisa mexer em configurações de hosts para cada site que for desenvolver.

O Valet configura seu Mac pra sempre rodar o Nginx em segundo plano quando sua maquina ligar. Então, usando o DnsMasq, ele faz um proxy de todos os endereços com domínio

*.test
 para apontarem para os sites instalados localmente em sua máquina.

Instalação

A instalação do Valet depende do Homebrew. Eu já falei dele em outro post. Se você não conhece ou não usa o Homebrew, deveria!

Então a instalação é simples e direta:

  • Instale ou atualize o Homebrew para a ultima versão usando
    brew update
  • Instale o PHP 7.1 via Homebrew usando
    brew install php71
  • Instale o Valet globalmente via Composer com
    composer global require laravel/valet
  • Adicione o caminho
    ~/.composer/vendor/bin
      no seu PATH de sistema
  • Rode o comando
    valet install
     . Isso irá configurar e instalar o Valet e o DnsMasq, e registrar os serviços do Valer para serem iniciados com o sistema.

Depois de instalado, você pode pingar qualquer domínio

*.test
  no seu terminal e o Valet deverá responder corretamente no IP
127.0.0.1
 .

O Valet vai iniciar o serviço automaticamente no boot da máquina, então não é necessário rodar

valet start
  ou
valet install
  toda vez depois da primeira instalação.

Servindo sites

Depois que o Valet estiver instalado, você pode comerçar a rodar os sites localmente. Pra isso temos dois comandos:

park
  e o
link
.

Park

Se você tem uma pasta onde todos os seus sites estão organizados, você pode resgistrar esse diretório no Valet.

  • Abra o terminal e navegue até a pasta. Por exemplo cd
    ~/Sites
     . E rode o commando
    valet park
     . Esse comando vai registrar o diretório corrente como um caminho onde o Valet vai procurar por sites.
  • Crie uma pasta simples para teste chamada “blog” e coloque um arquivo HTML simples dentro.
  • Abra
    http://blog.test
     no seu browser.

Isso é tudo. Qualquer outra pasta que você criar nesse diretório estará disponível no browser no endereço:

http://nome-da-pasta.test
.

Link

Esse comando é útil para adicionar um único site e não um diretório inteiro com vários sites.

  • Para usar esse commando, abra o terminal e navegue até a pasta do seu projeto, e rode o comando:
    valet link app-name
      no seu terminal. Valet irá criar um link simbólico na pasta
    ~/.valet/Sites
     apontando para o diretório do seu projeto.
  • Depois de rodar o comando , abra seu browser no endereço
    http://app-name.test
     .

Para ver uma lista de todos os diretórios que você adicionou, use o comando 

valet links
 . Você pode remover os links simbólicos com o comando
valet unlink app-name
 .

Compartilhando sites

O Valet inclui um comando para compartilhar seu ambiente local de desenvolvimento sem a necessidade de instalar nenhum software adicional.

Navegue até a pasta do site desejado e execute o comando

valet share
.

Uma URL pública será adicionada no seu clipboard e está pronta para ser colada no seu browser. É só isso!

Para parar de compartilhar seu site, aperte

Control + C
 para cancelar o processo.

Outros comandos

Você encontra uma lista de todos os comandos disponíveis digitando

valet --help
.

Fonte

Você pode encontrar a documentação completa do Valet em: https://laravel.com/docs/5.5/valet

O post Ambiente de desenvolvimento web no Mac OS sem dor apareceu primeiro em Vinicius Arantes.

]]>
Black SEO WordPress Malware https://www.viniciusarantes.com.br/black-seo-wordpress-malware/ Mon, 24 Apr 2017 19:35:10 +0000 http://www.viniciusarantes.com.br/?p=461 Recentemente cruzei com o problema de um cliente com um código malicioso que apareceu em seu site e que, mesmo depois de removido, voltada depois de um tempo. Esse código é injetado nos arquivos functions.php de todos os temas do site (e não só no tema ativo) e se espalha por todos os sites wordpress [...]

O post Black SEO WordPress Malware apareceu primeiro em Vinicius Arantes.

]]>
Recentemente cruzei com o problema de um cliente com um código malicioso que apareceu em seu site e que, mesmo depois de removido, voltada depois de um tempo.

Esse código é injetado nos arquivos functions.php de todos os temas do site (e não só no tema ativo) e se espalha por todos os sites wordpress dentro do servidor. Isso mesmo, uma instalação wordpress comprometida vai infectar outros sites de outros clientes que estão instalados no mesmo servidor.

Ele é usado para fazer spam de SEO mas pode ser usado para outras coisas também uma vez que abre caminho para a criação de usuários administrativos diretamente no banco de dados.

Como esse malware é um tanto recente e não há muita informação disponível na internet. Então resolvi compilar um pouco do que encontrei, juntar com as minhas investigações e explicar como se livrar dele.

De onde vem?

Esse código malicioso aparece, vindo de plugins e temas instalados de fontes não confiáveis (conhecidos como “nulled plugins”). Sites que diponibilizam gratuitamente o download de plugins premiuns/pagos e que, geralmente, adicionam trechos de códigos maliciosos.

Não vou linkar nenhum dos sites maliciosos justamente para não ajudar a espalhar a praga. Mas tenha em mente que, sites que prometem gratuitamente plugins e temas que são pagos, geralmente carregam esse tipo de código malicioso!

Pra ser sincero, não sei qual a necessidade de instalar um plugin “pirata” no sistema. Se você precisa tanto do tal plugin, porquê não apoiar seu desenvolvedor e COMPRAR A LICENÇA?! Desculpa o desabafo.

Ao ativar um plugin desses, um código malicioso é executado adicionando arquivos, injetando códigos, criando tabelas e abrindo a brecha para que o hacker (i)responsável tenha acesso ilimitado ao sistema.

Sinais do ataque

Os indícios de que seu site foi infectado com esse código são:

  1. Injeção de um bloco de código em todos os arquivos functions.php de todos os temas do site (em todos os temas, não apenas no tema ativo);
  2. Criação da tabela wp_datalist no banco de dados do sistema;
  3. Criação dos arquivos wp.class.php and wp-cd.php na pasta /wp-includes;
  4. Inclusão de código malicioso no arquivo wp-includes/post.php;
  5. Acessos de um usuário administrador que não é o seu. (Se você tem algum log de acessos ao site, fica mais fácil verificar isso. Recomento o: Sucuri Security Plugin).
O script deixa uma porta aberta para que o hacker adicione um usuário administrador e o remova a qualquer momento, sem que você perceba. Então ele tem acesso a todo seu site, e em todos os sites do seu servidor! 

 

Esse é o bloco de código adicionado (que pode variar um pouco dependendo do malware instalado):

[gist id=eb4946375575d20a4d21413184680a87]

Como se livrar disso?

Sempre faça um backup completo do seu sistema antes de fazer qualquer um dos procedimentos descritos aqui. Não faça nada sem ter a certeza do que está fazendo.

 

  1. Delete todos os arquivos core do WordPress;
  2. Faça upload de novos arquivos baixados de wordpress.org (na mesma versão do seu sistema);
  3. Delete o(s) plugin(s) que causaram o problema;
  4. Re-instale todos os plugins que sobraram;
  5. Limpe todos os arquivos function.php, de todos os temas (de preferência, apague e suba versões novas da fonte);
  6. Delete a tabela wp_datalist da sua base de dados;
  7. Rode uma verificação com o plugin Sucuri Security Plugin.

Curioso?

Se você ficou curioso pra saber mais sobre a estrutura desse malware, o usuário ecrider, criou um repositório no github com a engenharia reversa dos arquivos e seu código descompilado.

E, como ele mesmo avisa: Não tente rodar nenhum dos códigos a menos que você saiba exatamente o que está fazendo. Se possível, execute em um ambiente sandbox controlado para as suas pesquisas e use com cuidado.

Fonte

O post Black SEO WordPress Malware apareceu primeiro em Vinicius Arantes.

]]>
Snippets para o arquivo function.php https://www.viniciusarantes.com.br/snippets-para-o-arquivo-function-php/ Thu, 02 Feb 2017 10:26:37 +0000 http://www.viniciusarantes.com.br/?p=442 Pra quem trabalha com o WordPress, em diversos momentos é necessário adicionar um pouco mais de funcionalidade além do que o CMS oferece. Ou para adicionar uma nova funcionalidade, ou para alterar o comportamento padrão, esses pequenos trechos de código (chamados também de snippets) podem ser muito úteis para os seus projetos. Você já deve [...]

O post Snippets para o arquivo function.php apareceu primeiro em Vinicius Arantes.

]]>
Pra quem trabalha com o WordPress, em diversos momentos é necessário adicionar um pouco mais de funcionalidade além do que o CMS oferece. Ou para adicionar uma nova funcionalidade, ou para alterar o comportamento padrão, esses pequenos trechos de código (chamados também de snippets) podem ser muito úteis para os seus projetos.

Você já deve ter se deparado com o arquivo functions.php em seus temas e plugins. Ele é um arquivo PHP comum que é executado em todo request pro WordPress e portanto pode ser usado para adicionar ações (actions), filtros (filters), ativar recursos escondidos, ou desativados por padrão, alterar os menus, miniatura de posts, entre outras coisas. Esse é o lugar ideal para você criar seu próprio código customizado e alterar o seu tema.

Aqui tenho alguns snippets que costumo usar em meus projetos e algumas referências para outros snippets interessantes.

Nota: Alguns dos itens abaixo requerem um conhecimento básico de PHP.

 

Pra quem não tem conhecimento ou não tem acesso ao arquivo functions.php no seu servidor, há plugins disponíveis que se dispõe a incluir os trechos de código PHP no seu site, através da área administrativa. Um deles é o Code Snippets

 

Meus Snippets

Os snippets que mais uso estão no gist abaixo. O que cada um faz, está descrito no comentário.

[gist id=810109e8e1b5bf96eee6d6673e54f642]

Outras fontes de Snippets

Esses são apenas alguns dos snippets interessantes que tem por aí. É bem legal você começar a reunir os snippets que você mais acha útil e deixá-los sempre à mão. Existem muitas outras fontes de consulta pela internet! Aqui tem algumas delas:

 

O post Snippets para o arquivo function.php apareceu primeiro em Vinicius Arantes.

]]>
Homebrew https://www.viniciusarantes.com.br/homebrew/ Mon, 30 Jan 2017 16:07:01 +0000 http://www.viniciusarantes.com.br/?p=411 Uma das coisas que eu sentia falta quando usava o Mac OS como sistema para desenvolvimento é um gerenciador de pacotes como no mundo Linux. Lá, o npm dá conta disso tudo. O Homebrew é a versão desse gerenciador de pacotes para o mundo Apple. Como o próprio site deles diz, o Homebrew instala as coisas [...]

O post Homebrew apareceu primeiro em Vinicius Arantes.

]]>
Uma das coisas que eu sentia falta quando usava o Mac OS como sistema para desenvolvimento é um gerenciador de pacotes como no mundo Linux. Lá, o npm dá conta disso tudo.

O Homebrew é a versão desse gerenciador de pacotes para o mundo Apple. Como o próprio site deles diz, o Homebrew instala as coisas que você precisa que a Apple não forneceu para você.

É gratuito e de código aberto e foi criado para simplificar a instalação de softwares no Mac OS. Totalmente integrado na linha de comando, com alguns passos simples, é possível instalar pacotes completos, com as dependências e deixar tudo configurado e pronto para usar.

O Homebrew tira a repetição de baixar e instalar pacotes de softwares Unix no OS X. Se você digita bastante

./configure && make && make install
 , homebrew pode ajudar.

Você pode, por exemplo, instalar todas as dependências do Apache, as versões do PHP que desejar e deixar seu ambiente de desenvolvimento local sempre atualizado com poucos comandos do Homebrew.

Instalação

Abra seu Terminal (/Applications/Utilities/Terminal) e cole o seguinte comando:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Siga as instruções no terminal e digite sua senha se usuário se for requisitado. Isso vai instalar o Homebrew e todas as suas dependências (como o XCode Commanda Line Tools se você não tem o XCode instalado). O processo pode levar alguns minutos mas, depois de pronto, você pode rapidamente verificar a correta instalação com o comando brew. No terminal, digite:

brew --version
Homebrew 1.0.6
Homebrew/homebrew-core (git revision 1b10; last commit 2016-10-04)

Outro comando que pode te ajudar se alguma coisa não estiver certa é:

brew doctor

Ele vai te dizer como corrigir os problemas se alguma coisa aparecer.

Como usar

Para instalar um pacote, você pode simplesmente digitar:

brew install php56

Isso irá instalar (e deixar pronto) o PHP 5.6 e todas as suas dependências.

Se você não sabe exatamente o nome do pacote, experimente realizar uma busca com:

brew search php

Você verá uma lista com todas as opções de php disponíveis para instalação. Escolha a versão que preferir!

Como eu atualizo os pacotes instalados?

Primeiro, atualize o próprio Homebrew com o comando:

brew update
Agora você pode encontrar os pacotes que estão desatualizados com o comando:
brew outdated
Atualizar tudo com:
brew upgrade
Ou atualizar algum pacote específico, informando o nome dele:
brew upgrade $FORMULA

Como impedir que um pacote seja atualizado?

Se você quer impedir um pacote de ser atualizado e manter em uma determinada versão, use o comando:

brew pin $FORMULA
Para permitir novamente, esse outro comando:
brew unpin $FORMULA

Como desinstalar versões antigas de um pacote?

Por padrão, o Homebrew não desinstala versões antigas, então com o passar do tempo, as versões se acumulam. Para remover versões velhas, digite:

brew cleanup $FORMULA
Ou limpe todas as versões velhas de uma vez com:
brew cleanup
E para ver o que será apagado, digite:
brew cleanup -n

Fontes:

O post Homebrew apareceu primeiro em Vinicius Arantes.

]]>