Saiba mais sobre a DigitanOcean: Adeus Amazon (AWS)… Olá DigitalOcean!

Uber migra do PostgreSQL para o MySQL

O Uber, como você deve saber, é uma empresa que trouxe para o mercado uma forma rápida, eficiente, e consideravelmente mais barata que os taxis conencionais para se locomover em várias cidades do planeta.

O que talvez não saiba é sobre a tecnologia por trás do serviço.

Aqui vou falar um pouquinho sobre a migração de bancos de dados realizada pelo Uber recentemente. O artigo original foi publicado em um blog do próprio Uber 20 dias antes de eu escrever esse post.

Minha intenção aqui não é traduzir nem fazer um comentário extenso sobre o texto, mas apenas pontuar as informações que achei mais interessantes. Vamos lá:

O Postgres tem um funcionamento que faz gerar várias linhas (fisicamente, no disco, chamada ctid) para uma mesma linha no banco de dados, ou seja, se você tem uma tabela que armazena os dados de uma pessoa, e você altera o telefone dela, uma nova linha física (ctid) é gerada.

Para a maioria dos sistemas, isso não chega a ser um problema. O Postgres tem um recurso chamado auto-vacuum que faz a limpeza das linhas antigas. A questão é que, de tempos em tempos, pode ser necessário parar o sistema por algumas horas e executar um vacuum full (limpeza geral), e para sistemas que não podem parar, isso pode ser um problema. Se muito tempo passa sem a execução de um vacuum full, o sistema começa a ficar lento.

Mas a grande questão para o Uber é que eles replicam os dados em diferentes data centers (costa leste e costa oeste dos Estados Unidos) para Recuperação de Desastres e, nesse caso, a replicação dessas linhas torna-se muito lenta e cara. Com frequência uma alteração estava sendo realizada e não sendo sincronizada corretamente.

O problema é agravado pelo fato de que no caso deles, muitas tabelas tinham muitos índices, e updates pequenos e frequentes eram executados.

Repare que é uma situação específica: replicação de dados em data centers diferentes, com updates frequentes e muitos índices.

Nem todo serviço funciona dessa forma, e obviamente, isso não quer dizer que o Postgres é um banco de dados ruim. Mas no caso específico do Uber, eles tiveram problemas.

Segundo o artigo, o MySQL (com engine InnoDB) cria uma camada a mais de abstração, o que normalmente é uma desvantagem pois deixa o sistema todo mais lento, mas é uma solução no caso da replicação, pois o MySQL replica o DML (update, insert, delete) propriamente dito, e não o registro físico da informação.

Outra questão é a atualização de versão. Usando a versão 9.2, eles tiveram problemas para atualizar para a 9.3, porque demorava tempo demais e o serviço não poderia ficar parado durante esse tempo. Para agravar a situação, todas as réplicas têm que usar a mesma versão, ou seja, eles não poderiam fazer a atualização primeiro em uma ráplica e depois no master, por exemplo. Acrescentam que isso foi resolvido na versão 9.4 em diante, usando o recurso pglogical, que adicona uma camada lógica para replicação.

No MySQL esse problema não existe. É possível, na maioria das situações operar com versões diferentes (já que o que é replicado é o DML em si).

Outro grande problema do Postgres é relativo ao número de conexões. Mesmo em sistemas com abundância de recursos, é bem difícil abrir mais que algumas centenas de conexões, porque o número de conexões é diretamente ligado ao número de processos (mais conexões, mais processos). No MySQL, o número de conexões é diretamente ligado ao número de threads.

Isso faz com que no MySQL seja possível abrir 10 mil conexões sem grandes problemas.

Veja o artigo original para obter mais informações:

Outro artigo comentando o artigo do Uber:


Minha mini-saga pelo reembolso do Windows

Você sabia que pode solicitar o reembolso do Windows que vem instalado em um notebook que você comprar, caso não deseje utlizá-lo? O Windows é um produto individual (já que pode ser comprado separadamente), e quando ele veio instalado no notebook que você comprou, é considerado venda casada, que é quando você é obrigado a levar um produto ao comprar o que lhe interessa (imagine que toda vez que você fosse na padaria comprar pão, fosse obrigado a levar junto um chocolate "de graça").

Muitos fornecedores dizem que é brinde, mas não é. Você está pagando por isso. Aqui vou fazer um breve relato de como consegui o reembolso, de uma forma um pouco diferente do que li em outros relatos na internet.

Eu uso exclusivamente Linux em casa há uns 6 anos. Meu penúltimo notebook veio com Windows instalado, e eu sequer iniciei ele a primeira vez. Na época sabia que poderia solicitar a devolução, mas acabei deixando pra lá.

No fim do ano passado comprei um notebook novo (Um Dell, no Submarino. O Submarino é da empresa B2W, que também é dona do Shoptime e das Americanas.com) no Black Friday. Não tinha a opção de comprar sem Windows, e no site da Dell, que dá essa opção, era mais caro. Resolvi comprar e tentar o reembolso depois.

O notebook chegou e segui a orientação que vi em vários relatos: não ative o Windows (ou seja, começar a usar pela primeira vez). Você até pode ligar ele, mas quando chegar na hora de clicar no botão para aceitar os termos, você não deve clicar. Se fizer isso, o produto é ativado e a devolução fica impossibilitada.


Você NÃO DEVE clicar no botão ACEITO!

Também foram feitas sugestões de fotografar quando você tiver desembalando o produto, bem como as etiquetas de entrega que estiverem na caixa, e fotografar também as telas dos termos do Windows (como essa acima). Eu fiz isso, mas não foi necessário. Em todo caso, não custa nada fazer, para o caso de solicitarem as imagens.

Depois é hora de ligar para o lojista e solicitar a devolução. Se negarem, informe que você está amparado pelo código de defesa do consumidor, que proíbe venda casada. Provavelmente vão dizer que é brinde, mas insista. Se não tiver êxito, diga que vai entrar no Procon. Lembre de anotar o protocolo da ligação, além da data, hora e nome do atendente. Se a loja não fornecer protocolo, envie a solicitação por e-mail para que fique registrado (e guarde o e-mail, claro!).

Recomendo que ligue também para a Microsoft e o fabricante (no caso, a Dell). Eu não fiz isso, mas se tivesse feito, talvez tivesse encurtado a história (no final você vai saber o motivo).

No meu caso, teve um facilitador. O submarino enviou, na nota fiscal, discriminado o valor do softwares. Então já ficou claro que se tratava de venda casada.

Nota fiscal discriminando o valor da licença do Windows

Nota fiscal discriminando o valor da licença do Windows

Não obtive êxito junto à loja. Mas é importantíssimo que você reclame com a loja antes de seguir adiante. E isso deve ser feito o quanto antes. De preferência, dentro de 7 dias. Depos de reclamar à loja e não conseguir resolver, você te duas opções:

  • Registrar uma reclamação contra a loja e a Microsoft (não esqueça da Microsoft!) no Procon.
  • Ir ao juduciário (juizado especial). Se não souber onde fica, ligue para o Tribunal de Justiça do seu estado (normalmente no rodapé do site tem o telefone).

As duas opções são gratuitas e não é necessário advogado. Sugiro ir ao Procon primeiro, pois tende a ser mais simples pra resolver. Se não resolver, e você for ao judiciário, o juiz provavelmente irá ver com bons olhos o fato e você ter tentado todas as opções antes de judicializar.

Fui ao Procon, e o acordo que me foi oferecido pela B2W (Submarino) foi a devolução do notebook, e obviamente eu não aceitei, já que comprei numa promoção e não conseguiria comprar novamente pelo mesmo preço. A Microsoft não compareceu.

Decidi ir ao juizado especial, porém demorei algumas semanas pra fazer isso. Mas antes que eu desse entrada, meu telefone tocou:

– Alô, Tiago? Aqui é Fulana, advogada da Microsoft do Brasil. Estou ligando para oferecer uma acordo para que seja retirada a queixa no Procon.

– Certo… qual o acordo?

– R$350 (trezentos e cinquenta reais). Você aceita?

– Precisa de quê?

– Só do nome do seu banco, agência e conta corrente. O dinheiro cai em 15 dias.

– Tá bom… aceito

Dois dias depois cai o dinheiro na minha conta.

Se quiser saber mais sobre o Windows, procure por "Reembolso Windows" no Google. Tem vários e vários relatos explicando como fazer 😉

 


Habilitando e desabilitando o Touchpad no Linux

Existe um comando para habilitar e desabilitar o Touchpad no Linux.

Abra o Terminal (CTRL + T).

Para habilitar:

synclient TouchpadOff=0

Para desabilitar:

synclient TouchpadOff=1

Se você preferir, crie scripts para facilitar a chamada a esses comandos.

Fonte: http://ubuntuforum-pt.org/index.php?topic=48778.0

Comente! mais...

Como criar script Linux

Esse é mais um daqueles artigos ultra diretos. É bem feijão com arroz. Só pra criar um script rapidinho para que você possa chamar uma lista de comandos a partir de qualquer lugar pela linha de comando.

Primeiro abra o Terminal (No Linux Mint, Ubuntu e Debian: CTRL + ALT + T).

Pegue as permissões de root:

sudo su

Crie o arquivo do script com o nano:

nano /usr/bin/meuscript

O comando acima vai criar o arquivo meuscript na pasta /usr/bin/. Essa é uma das pastas que você pode armazenar seu script para que ele seja chamado de qualquer lugar. Por exemplo: vocé só precisaria digitar meuscript e ele seria executado.

Comece seu script com a seguinte linha:

#!/bin/sh

A linha acima irá dizer qual interpretador será utilizado, evitando alguns problemas.

No exemplo, vou executar um script que salva a data atual em um arquivo de texto. Então seria algo assim:

#!/bin/sh

#Salva a data atual no arquivo /tmp/testemeuscript.txt
date > /tmp/testemeuscript.txt

Com exceção da primeira linha, tudo que começa com # é comentário, ou seja, não será executado. Quando você usa o símbolo de maior que (>), será enviada a saída desse comando ao arquivo definido. Nesse caso, a saída de date para /tmp/testemeuscript.txt.

Se você usar apenas um "maior que" (>), ele limpará o arquivo antes de salvar os dados. Se colocar dois "maior que" (>>).

Digite CTRL + O e em seguida Enter para salvar o arquivo, e em seguida CTRL + X para sair do nano e voltar ao terminal.

Por último, você precisa dar permissão de execução ao script:

chmod +x /usr/bin/meuscript

E agora você pode executá-lo:

meuscript

Aparentemente nada aconteceu, mas acredite: aconteceu! 😛

Vamos ver a data salva no arquivo de texto:

cat /tmp/testemeuscript.txt

Se deu tudo certo, a data apareceu pra você! Lembre-se que o diretório /tmp/ é apagado quando o sistema inicia, ou seja, é só pra coisas temporárias :P. O comando cat lê o arquivo e exibe na tela. Se precisar imprimir algo na tela, use o echo, como no exemplo:

echo date

É isso! Dùvidas? Pergunte nos comentários!

Comente! mais...

Testando a conexão do seu desktop ou servidor Linux por linha de comando com o Speedtest-cli

O Speedtest.net é uma ferramenta bem conhecida e confiável para realização de testes de velocidade. Ele tem diversos servidores de teste espalhandos pelo mundo, e vai escolher o mais próximo ao lugar onde você está, para um teste mais confiável.

Há alguns anos fiz esse artigo sobre teste de velocidade de internet, mas hoje em dia o que eu faço é criar um script que testa periodicamente a velocidade (coloco de hora em hora) e salva os resultados em um log.

Vou mostrar como fazer. Abra o Terminal (CTRL+ALT+T).

Primeiro você deve verificar a versão do python que você tem instalada. Deve ser superior à 2.4:

python -V

Os três comandos abaixo vão baixar, dar permissão de execução e mover para /usr/bin, assim ele poderá ser chamado a partir de qualquer lugar.

sudo wget https://raw.github.com/sivel/speedtest-cli/master/speedtest_cli.py
sudo chmod a+rx speedtest_cli.py
sudo mv speedtest_cli.py /usr/bin/speedtest-cli

Agora você pode rodar o comando abaixo:

speedtest-cli

E terá um resultado como esse:

Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from Global Village Telecom (177.158.236.209)...
Selecting best server based on latency...
Hosted by UAUBR (Simao Dias) [76.36 km]: 9.644 ms
Testing download speed........................................
Download: 14.33 Mbit/s
Testing upload speed..................................................
Upload: 5.22 Mbit/s
Share results: http://www.speedtest.net/result/5269792489.png

E assim será possível constatar que estou sendo roubado pela operadora, já que contratei 50 Mega e estou recebendo menos de 15 😛

Uma coisa bem interessante é o "Share results" onde ele disponibiliza um link para a imagem de resumo do teste realizado, assim dá pra deixar registrado e compartilhar com outras pessoas, da mesma forma que é feito pelo site do Speedtest.net.

Também podemos criar um script que testa periodicamente e guarda o dados em um log.

Digite sudo nano /usr/bin/speedtest.sh (ou outro nome que desejar) e coloque o conteúdo abaixo:

#!/bin/bash

#Script que testa velocidade da internet utilizando o Speedtest.net
#Autor: Tiago Passos
#Fonte: http://blog.tiagopassos.com/2016/04/22/testando-a-conexao-do-seu-desktop-ou-servidor-linux-por-linha-de-comando-speedtest-cli/

echo "###" >> ~/speedtest.log
date >> ~/speedtest.log
speedtest-cli --share >> ~/speedtest.log
date >> ~/speedtest.log
echo "###" >> ~/speedtest.log
echo "" >> ~/speedtest.log

Não esqueça de dar permissão de execução:

sudo chmod +x /usr/bin/speedtest.sh

Nesse caso eu salvei o log na raiz do usuário logado (~/speedtest.log), mas você pode escolher outro lugar. Adicionei a data (date) porque o teste não, mostra na saída de texto, nenhuma data.

Pra completar, podemos colocar o teste no cron. Para executar de hora em hora. Digite:

crontab -e

E acrescente a linha:

0 * * * * speedtest.sh

Pronto! Deu certo? Deu errado? Teve que fazer diferente? Comente!

Fonte:


Compatibilidade do Notebook DELL I14-5448-C25 e do Wi-Fi Intel 7265

Comprei um Notebook Notebook DELL I14-5448-C25, que vem com a placa Wi-Fi Intel 7265, recentemente, e estou escrevendo esse post apenas para registrar que ele não é compatível com o Linux (especificamente o Linux Mint).

Com isso quero dizer que, se você instalar o Linux Mint 17 nele, nem tudo vai funcionar automaticamente, em especial a placa wi-fi e a placa de rede.

A placa wi-fi chega a conectar, mas fica totalmente instável, com conexão lenta e perda de pacotes após alguns minutos, até que eventualmente para de funcionar até que você reinicie a placa.

O que eu gostaria de escrever nesse post é como fazer pra que ela funcione corretamente. E para isso pesquisei em vários fóruns, que davam várias sugestões (links abaixo). Como tentei muitas coisas diferentes, é difícil dizer o que realmente funcionou, e para ter certeza do que funcionou, eu teria que reinstalar o Linux Mint (coisa que nesse momento exato não tenho tempo para fazer).

Como não queria que toda a pesquisa passasse em branco, resolvi fazer esse post para que sirva de guia pra quem tiver o mesmo problema.

O que consegui na verdade não foi a solução do problema, e sim uma solução de contorno.

As placas WI FI modernas vem com suporte a 3 padrões diferentes (B, G e N). Para fazer funcionar, tive que desativar o suporte ao padrão N, com conexões mais rápidas, porque supostamente é aí que reside o bug que faz a placa ficar instável. O efeito colateral disso é que a conexão máxima seria do padrão G (54Mbps). Mas como dificilmente me conecto em uma rede maior que isso, pra mim não faz tanta diferença.

Outra coisa que fiz e talvez ajude foi atualizar para o Kernel 4.5. Também desativei o modo de economia de energia, o que também deve ter ajudado.

Quando instalei o Kernel novo, o monitor, que antes ficava com um brilho bem baixo, também começou a funcionar corretamente.

O problema que realmente não consegui resolver ainda foi a placa de rede (Ethernet, cabeada) que não funciona.

Se alguém identificar a solução mais efetiva para o problema do WI-FI e da Ethernet, peço encarecidamente que compartilhe aqui nos comentários. Adicionarei ao artigo com os devidos créditos.

Segue abaixo todos os links que utilizei, para referência:


Instalando o Kernel 4.5 no Linux Mint, Ubuntu e Debian rapidamente

Essa é uma daquelas dicas rápidas. Então vamo lá:

Acesse o terminal (CTRL + ALT + T).

Para Kernel de 32 bits, digite o comando:

cd /tmp; wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.5-wily/linux-headers-4.5.0-040500-generic_4.5.0-040500.201603140130_i386.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.5-wily/linux-headers-4.5.0-040500_4.5.0-040500.201603140130_all.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.5-wily/linux-image-4.5.0-040500-generic_4.5.0-040500.201603140130_i386.deb; sudo dpkg -i *.deb

Para Kernel de 64 bits, digite o comando:

cd /tmp; wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.5-wily/linux-headers-4.5.0-040500-generic_4.5.0-040500.201603140130_amd64.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.5-wily/linux-headers-4.5.0-040500_4.5.0-040500.201603140130_all.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.5-wily/linux-image-4.5.0-040500-generic_4.5.0-040500.201603140130_amd64.deb; sudo dpkg -i *.deb

Depois você precisa atualizar o GRUB:

sudo update-grub

E reiniciar o computador:

sudo reboot

Pronto! Está tudo atualizado! 🙂

Informações adicionais:

Pra saber a versão atual do Kernel, digite:

uname -r

Caso queira remover o Kernel instalado:

sudo apt-get purge linux-image-4.5-*

E em seguida atualize o GRUB novamente

sudo update-grub

Você pode escolher usar uma das versões anteriores quando iniciar o sistema.

Esse tutorial foi testado no Linux Mint 17, mas a principio funciona no Debian e Ubuntu sem problemas.

Fonte: https://mintguide.org/system/584-install-linux-kernel-4-5-stable-on-linux-mint.html


Como instalar o mod_rewrite para PHP do Apache2 no Linux

Para instalar o mod_rewrite no Ubuntu ou Linux Mint, abra o terminal (CTRL + ALT + T) e digite:

sudo a2enmod rewrite
service apache2 restart

Pronto!

Se você executar o primeiro comando novamente, o sistema confirmará que o mod_rewrite já está ativo com a seguinte mensagem:

Module rewrite already enabled

Testado no Linux Mint 17, e deverá funcionar também no Ubuntu 14.04

Fonte: https://www.digitalocean.com/community/tutorials/how-to-set-up-mod_rewrite-for-apache-on-ubuntu-14-04


Como instalar a extensão intl para PHP do Apache2 no Linux

Para instalar a extensão intl para PHP no Ubuntu ou Linux Mint, abra o terminal (CTRL + ALT + T) e digite:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install php5-intl
sudo /etc/init.d/apache2 restart

Pronto! 🙂

Testado no Linux Mint 17, e deverá funcionar também no Ubuntu 14.04

Fonte: http://php.net/manual/pt_BR/intl.setup.php


Configurando Proxy pelo Terminal no Linux Mint e Ubuntu para utilizar o apt-get

Se você está em uma rede em que um proxy precisa ser configurado manualmente e não está conseguindo utilizar o apt (Exemplo: apt-get update) no Linux Mint ou Ubuntu, pode ser necessário configurar manualmente o Proxy. Sendo assim, execute os abaixo no Terminal (CTRL + ALT + T):

No Linux Mint:

sudo pluma /etc/apt/apt.conf

No Linux Ubuntu:

sudo gedit /etc/apt/apt.conf

Se o proxy POSSUI usuário e senha, coloque o seguinte conteúdo no arquivo:

Acquire::http::proxy "http://Usuario:Senha@Servidor:Porta/";
Acquire::https::proxy "https://Usuario:Senha@Servidor:Porta/";
Acquire::ftp::proxy "ftp://Usuario:Senha@Servidor:Porta/";
Acquire::socks::proxy "socks://Usuario:Senha@Servidor:Porta/";

Se o proxy NÃO POSSUI usuário e senha, coloque o seguinte conteúdo no arquivo:

Acquire::http::proxy "http://Servidor:Porta/";
Acquire::https::proxy "https://Servidor:Porta/";
Acquire::ftp::proxy "ftp://Servidor:Porta/";
Acquire::socks::proxy "socks://Servidor:Porta/";

Pronto. Agora seu proxy está funcionando! Dúvidas? Pergunte nos comentários!

O procedimento foi testado no Linux Mint 17

Fonte: http://community.linuxmint.com/tutorial/view/2002


  • Redes Sociais

    Facebook  Twitter
  • Projetos Paralelos

  • Estatísticas

    Page Views (desde março de 2010):

    Estatísticas detalhadas
  • Novidades por e-mail!

    Digite seu e-mail:


    Fique tranquilo. Seu e-mail não será usado para outros fins, e você poderá se descadastrar quando quizer.

    Eu!

    Tiago Passos
    Todo o conteúdo desse site esta licenciado sob a licença Creative Commons 3.0 (CC BY 3.0). Você pode copiar e modificar o conteúdo desde que cite o autor.
    iDream theme by Templates Next | Powered by WordPress