Categoria: Business

Dúvida cruel, mas não é do Iberê.

Hoje escrevo sobre algo que me encomoda um pouco. O gerenciamento de memória do sistema operacional.
Não conheço a fundo isso não, então por favor não espere qualquer explicação a respeito disso nesse post.

É mais um desabafo junto com algumas dúvidas.

Imagine alguém que tem fome e um sanduiche delicioso em suas mãos. E que sempre termina passando fome pois vem os gulosos e abocanham seu sanduba.
É assim que me sinto quando abro o google-chrome, sublime, discord, e demais aplicativos de uso diário.
E a memória RAM é o meu sanduiche-iche.

Vejo que o consumo de memória em meu computador pessoal está meio alto, então fecho absolutamente todas as janelas, e meço:

vostrolab ~ # free -m
             total       used       free     shared    buffers     cached
Mem:          3942       1012       2929        276          4        345
-/+ buffers/cache:        663       3279
Swap:            0          0          0

Nada satisfeito, faço reboot do computador, e ao voltar, ainda sem nada aberto, meço a memória novamente:

vostrolab ~ # free -m
             total       used       free     shared    buffers     cached
Mem:          3942        808       3134        185          5        382
-/+ buffers/cache:        420       3522
Swap:            0          0          0

Ficam duas perguntas:

A Primeira: Por quê o sistema operacional ‘come’ tanta memória? Convenhamos que 808 mb não é brincadeira não.. mesmo sem ‘nada’ aberto. Dizemos ‘nada’ entre aspas simples pois é sabido que há uma vasta quantidade de sofwares sendo executados, dentre eles o servidor de exibição /usr/bin/X, também o gerenciador de login /usr/sbin/*dm bem como o gerenciador de janelas que escolhi usar, e a própria janela do terminal onde executei o ‘free -m‘.

A Segunda: Por quê dessa diferença de 1012 para 808? Sendo que, em ambos os casos, estou sem ‘nada’ aberto. Estamos falando de 204 mb. Lembra quando seu computador tinha apenas 256 mb de RAM? Isso não faz muito tempo, pouco mais de 10 anos. Então será que existe algum garbage collector que possa limpar essa memória que parece ser morta? Ou ao menos exibir quem está usando quanto e porque.

Enquanto isso, tenho tentado entender esse comportamento, usando e abusando de ferramentas tais como:

NAME
smem – Report memory usage with shared memory divided proportionally.

NAME
gmemusage – graphically display memory used by running processes.

Note também que, por motivos de disco lento, optei por não usar SWAP aqui nessa máquina.
Confesso também que tenho feito uso de comandos para limpeza de memória, cache, e buffer de sistema de arquivos, tais como:

Clear PageCache only. # sync; echo 1 > /proc/sys/vm/drop_caches
Clear dentries and inodes. # sync; echo 2 > /proc/sys/vm/drop_caches
Clear PageCache, dentries and inodes. # sync; echo 3 > /proc/sys/vm/drop_caches
Flush the file system buffer. # sync

Mesmo assim, tudo é muito obscuro e vago.
Sigo tentando compreender.

Se alguém tiver mais informações sobre como se pode entender mais a respeito disso, por favor me ensine.
É preciso ter mais controle sobre o que está sendo armazenado dentro dos pentes de memória.

Xeu pegar outro sanduíche.

Desempenho de Websites com Google PageSpeed Insights

Muitos se preocupam com boa pontuação no Pages Speed:
pagespeed_animation
Nesta semana foram corrigidas algumas configurações que ficaram erradas após migrações, e que estavam afetando performance.
Isso é muito importante e pode ajudar na performance de websites. Se precisar de algum apoio, conte conosco!

Ah, dica extra sobre Linux:

Se estiver se perguntando “Como fazer uma animação simples como essa aqui logo acima?“. Bom, é bem simples.

Bate duas fotos(a.k.a. screenshots) por exemplo como foi feito ali no pagespeed, uma na abinha mobile, outra na abinha desktop, e faz o seguinte comando numa pasta contendo apenas essas duas imagens:

$ convert -delay 100 -loop 0 *.png animation.gif

Isso vai gerar um gif com nome animation.gif, que fica passando as duas imagens.

Esse exemplo mostra como gerar um gif a partir de duas imagens png. Mas também é possível fazer com mais!! Quantas forem necessário para sua explicação.

Ótima ferramenta de ensino para tutoriais, blogs, manuais de instrução online(aqueles em html).

Lembrando sempre que o convert é uma ferramenta encontrada dentro do pacote do ImageMagick, então se não tens imagemagick:

$ sudo apt-get install imagemagick imagemagick-common

Por: Hudson Santos
Referência: https://unix.stackexchange.com/questions/24014/creating-a-gif-animation-from-png-files

letsencrypt: Certificado HTTPS gratuito, automatizado e aberto

Isso mesmo, Let’s Encrypt é uma nova Autoridade Certificadora patrocinada por gigantes como mozilla, facebook, cisco e google-chrome..

Qualquer pessoa que já trabalhou na criação de um site seguro(https) sabe a burocracia que era obter e manter um certificado. Let’s Encrypt automatiza e resolve este problema, permitindo que operadores de sites ativem e gerenciem seu HTTPS com comandos simples. Isso significa:

  • Nenhum e-mail de validação;
  • Sem edição de configuração complicada;
  • Sem certificados expirados quebrando seu site.

E, claro, uma vez que o Let’s Encrypt fornece certificados de graça, não há necessidade de providenciar o pagamento.

Este POST visa descrever como realizar as funções de gestão de certificados mais comuns usando o cliente Let’s Encrypt.

Se quiser aprofundar conhecimento e saber mais sobre como isso funciona nos bastidores, acesse os links nas referências ao final deste POST.

Primeiro passo é acessar seu servidor e fazer uma cópia do cliente letsencrypt:

$ git clone https://github.com/letsencrypt/letsencrypt
$ cd letsencrypt
$ ./letsencrypt-auto –help

Agora vamos gerar o certificado:

$ ./letsencrypt-auto certonly –webroot –webroot-path /var/www/seu_dominio.com.br –renew-by-default –email webmaster@seu_dominio.com.br –text –agree-tos -d seu_dominio.com.br -d www.seu_dominio.com.br

Logo após a geração, se tudo correr bem, você verá algumas informações importantes tais como essa a seguir. Guarde em local seguro.

IMPORTANT NOTES:
If you lose your account credentials, you can recover through
e-mails sent to webmaster@seu_dominio.com.br.

Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/seu_dominio.com.br/fullchain.pem. Your cert will
expire on 2016-05-26. To obtain a new version of the certificate in
the future, simply run Let’s Encrypt again.

Your account credentials have been saved in your Let’s Encrypt
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Let’s
Encrypt so making regular backups of this folder is ideal.

If you like Let’s Encrypt, please consider supporting our work by:

Donating to ISRG / Let’s Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

Agora habilite em seu webserver as configurações necessárias apontando para o certificado gerado. Segue as configurações para os webservers mais usados:

Nginx:

listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/seu_dominio.com.br/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/seu_dominio.com.br/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;

Apache:

Dê uma olhada se há alguma configuração no ports.conf.
Senão, crie um arquivo de configuração para seu domínio: /etc/apache2/sites-available/seu_dominio.com.br-ssl.conf

Com o seguinte conteúdo:

<VirtualHost *:443>
ServerAdmin webmaster@seu_dominio.com.br
ServerName www.seu_dominio.com.br
ServerAlias seu_dominio.com.br
DocumentRoot “/var/www/seu_dominio.com.br/”
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM

SSLCertificateFile /etc/letsencrypt/live/seu_dominio.com.br/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/seu_dominio.com.br/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/seu_dominio pf8melp.com.br/chain.pem
</VirtualHost>

…depois faça um link simbólico pra ele dentro de sites-enabled:

ln -s /etc/apache2/sites-available/seu_dominio.com.br-ssl.conf /etc/apache2/sites-enabled/seu_dominio.com.br-ssl.conf

Se quiser fazer o redirecionamento de todo o tráfego entrante de HTTP para HTTPS, use regra 301 do tipo:

server {
listen 80 default;
server_name seu_dominio.com.br www.seu_dominio.com.br;
return 301 https://www.seu_dominio.com.br$request_uri;
}

E se por acaso estiver configurando o certificado num proxy, não esqueça de configurar o proxy para adicionar os cabeçalhos:

    location / {
proxy_pass http://localhost:1234;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}

Desta forma, mesmo outros servidores ‘atrás’ do seu proxy terão condições de permanecer em HTTPS para o usuário, como na gravura a seguir:

Para re-validar seu certificado é simples: letsencrypt renew

Por exemplo, usuários nginx poderiam usar um script assim:

#!/bin/sh
if ! /caminho/para/seu/letsencrypt-auto renew > /var/log/letsencrypt/renew.log 2>&1 ; then
echo Automated renewal failed:
cat /var/log/letsencrypt/renew.log
exit 1
fi
nginx -s reload

Para apache:

#!/bin/sh
if ! /caminho/para/seu/letsencrypt-auto renew > /var/log/letsencrypt/renew.log 2>&1 ; then
echo Automated renewal failed:
cat /var/log/letsencrypt/renew.log
exit 1
fi
apachectl graceful

Agora basta fazer o teste pra saber se está tudo OK: https://cryptoreport.websecurity.symantec.com/checker/

Obrigado pela leitura e volte sempre.
Qualquer dúvida fique a vontade para postar nos comentários logo abaixo.

Referências:

Acordo de assinatura: https://letsencrypt.org/documents/LE-SA-v1.0.1-July-27-2015.pdf
https://letsencrypt.org/getting-started/
https://letsencrypt.org/howitworks/
https://support.cloudflare.com/hc/en-us/articles/214820528-How-to-Validate-a-Let-s-Encrypt-Certificate-on-a-Site-Already-Active-on-CloudFlare
https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-load-balancing-with-ssl-termination

Aproximação de clientes em potencial

Entrar em contato com um potencial cliente que nunca ouviu falar de você pode ser assustador. Seja através de uma ligação ou um email, é necessário dar atenção inicialmente justamente a essa maneira escolhida para contato.

Aos poucos torna-se fácil.

Segue formato de email usado para entrar em contato com clientes em potencial, e que já rendeu conversas que levam ao trabalho remunerado.

Assunto: Eu gostaria de ajudá-lo com X

Olá,

Meu nome é Eric Davis e eu gostaria de conversar com você sobre X.

Seu projeto chamou minha atenção pois X. Por gentileza, você poderia me contar um pouco sobre qual é sua principal necessidade atualmente?

Obrigado

Assinatura,

Perceba que única preocupação da abordagem é: iniciar uma conversa. Você não quer vender seu serviço logo de cara. Você não precisa contar-lhe toda sua história ou listar os nomes dos seus melhores clientes e provar 10 razões principais pelas quais você é o melhor freelancer para ele.

Você precisa apenas iniciar a conversa.

Levei algum tempo para entender isso. Eu tentava me vender ao máximo logo no email inicial para evitar ‘idas e vindas’ de informação, tipo uma conversa. Foi então que percebí que eu estava na verdade despejando uma parede de texto e sugestões de atividades a serem feitas pelo meu potencial cliente. Atividades estas que eu mesmo estava pedindo-lhes para realizar.

Como você se sentiria se alguém que você não conhece sugerisse um monte de atividades pra você fazer?

Comece pequeno, com um curto email inicial, e deixe a conversa progredir naturalmente.

Não tenha medo de abordagens frias. Emails, ligações telefônicas ou encontro pessoalmente: todos funcionam e todos tem suas vantagens e desvantagens. Mas é importante fazê-las de maneira apropriada.

Você perderá 100% dos clientes que não entrar em contato.

by Eric Davis (http://theadmin.org)