domingo, 12 de março de 2017


Fui convidado pra fazer uma Talk bacana no primeiro Python Campinas, da um salve no Meetup, lá no Superlógica Labs em Campinas. Um espaço bem bacana destinado a oferecer um espaço para as comunidades de Campinas. A Talk foi sobre como construir um Web Crawler utilizando Python e as possibilidades que isso nos abre em diferentes frentes, como SEO, Machine Learning, vendas, captação de Leads e etc. Depois teve um Coding Dojo bem foda com o pessoal que participou, onde nós construímos um Web Crawler para mapear o site do IBGE. Tá tudo no Git. Se inscreva no Meetup dos brothers e não perca o próximo encontro. 

Github com os exemplos + Resultado do Coding Dojo

Link: https://github.com/msfidelis/talk-webscraping

Slides no Slideshare: 


Link do Video no LabsTV



:)

TALK :: Python Campinas #1 - Web Scraping com Python

quarta-feira, 22 de fevereiro de 2017



O Registry é uma aplicação Server Site que guarda imagens Docker para distribuição entre aplicações, desenvolvedores, ambientes de CI e etc. O mais famoso deles é o Docker Hub, uma ferramenta fantástica para compartilhamento de imagens. Porém a mesma é pública... Caso exista a necessidade de migrar suas imagens para um servidor privado, podemos fazer o deploy de um registry pessoal muito rápido utilizando o próprio Docker.

Fazendo Deploy do seu servidor via Docker CLI

Para criar um servidor que hospedará suas imagens geradas pelo Docker, utilizaremos a imagem oficial do Registry disponibilizada pela própria Docker. Essa é a forma mais simplista de fazer o deploy.
 $ docker run -d -p 5000:5000 --restart=always --name registry registry:2  

Dados persistentes

Para mapear um volume externo para dentro do container para persistir os dados das nossas imagens, temos que mapear alguma pasta externa para o diretório /var/lib/registry dentro do container do Registry.
 $ docker run -d -p 5000:5000 --restart=always --name registry -v `pwd`/data:/var/lib/registry registry:2  

Enviando imagens para nosso Registry Privado

Essa é a maneira mais simplista de subir e enviar uma imagem buildada para nosso Registry.
Para isso, faremos o pull normal de uma imagem do MySQL na versão 5.7. Depois vamos gerar uma tag do nosso MySQL informando o novo nome, o ip do servidor do Registry e a porta do mesmo, que no caso, será 5000.

 $ docker pull mysql:5.7   
 $ docker tag mysql:5.7 ip-do-servidor:5000/meumysql  


Fazendo o Pull e Push das nossas imagens do Registry

 $ docker push ip-do-servidor:5000/meumysql  

e para fazer o Download das imagens...
 $ docker pull ip-do-servidor:5000/meumysql  


Fazendo Deploy pelo Composer


Criando uma Stack via Composer com imagens do servidor remoto


Para fazer download de um servidor privado a partir do docker-compose, basta dizer na imagem, qual vai ser o seudominioouip/imagem:versao


Fazendo um login autenticado no Docker Registry

Vamos subir um container somente para gerar um htpasswd no Registry. Vamos salvar o resultado dentro do arquivo auth/htpasswd. Isso irá gerar um usuário e senha no padrão Unix.

 $ mkdir auth  
 $ docker run --entrypoint htpasswd registry:2 -Bbn matheus senhadomatheus > auth/htpasswd  


Para subir o Registry pronto para utilizar o arquivo de autenticação que acabamos de criar, basta utilizar o mesmo comando que utilizamos anteriormente, porém adicionando mais algumas variáveis de ambiente que vão trabalhar com o arquivo htpasswd que acabamos de criar

 $ docker run -it -p 5000:5000 --restart=always -v `pwd`/data:/var/lib/registry -v `pwd`/auth:/auth -e "REGISTRY_AUTH=htpasswd" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" registry:2  

Ou você fazer o deploy via Compose passando as variáveis de ambiente que definem os parâmetros de usuário e senha do Registry

Agora é só efetuar o login
 $ docker login  



Espero ter ajudado :)

Docker :: Fazendo Deploy de um Docker Registry Privado



O Jenkins é um software muito maneiro de CI & CD. Eu gosto bastante de utilizar pois automatiza muita coisa na hora de gerar builds, rodar testes, criar pipelines de código e etc. Neste artigo eu mostrei como subir o Jenkins na máquina nativamente. Aqui nós vamos aproveitar a vibe de passar todo o meu repositório de Docker pro blog e vamos subir um container com dados persistentes do Jenkins. Sem segredo, o Jenkins tem um repositório de imagens oficiais direto do Dockerhub, a única customização que vamos fazer aqui é mapear algumas portas e mapear a pasta de conteúdo do Jenkins pra fora para manter persistência nas configurações do servidor.

Esse processo pode ser executado tanto localmente quanto em um servidor de produção real. O processo é o mesmo, vou mostrar duas opções, o deploy via Docker Compose que te dá uma maior flexibilidade de orquestração e o deploy via CLI. Ambos não fazem tanta diferença para o Jenkins, então vai da sua preferência.

Link para o repositório

Dockerfile


docker-compose.yml


Subindo o projeto

 docker-compose build   
 dccker-compose up -d  


Fazendo o deploy via CLI 

Caso queira fazer o deploy do Jenkins via Client, também é bem simples:
 $ docker run -d -p 8080:8080 -p 50000:50000 -v `pwd`/jenkins:/var/jenkins_home  


Após subir o container do Jenkins pela primeira vez, o processo de instalação dele continua sendo o mesmo. Ele via te dar uma chave administrativa para fazer a configuração inicial do servidor. Tendo ela em mãos, é só acessar http://ip-do-servidor:8080, inserir a mesma e terminar a configuração do Jenkins.





Espero ter ajudado :)

Docker :: Deploy do Jenkins Persistente com Docker

terça-feira, 21 de fevereiro de 2017


Você tem brio? 

Esse é o questionamento que se deve fazer antes de começar a assistir esse vídeo da lenda Clovis de Barros. Se você não sabe o que é brio e começou a ver o vídeo mesmo assim, talvez você sinta um desconforto logo ao começar o mesmo.

Esse é um vídeo que eu levo debaixo do meu peito que eu uso pra auto-crítica. Eu adotei esse aula em especial como um mantra sempre que eu me sinto meio medíocre, com preguiça, procrastinando e etc. Eu sei que não tem muita coisa a ver com a finalidade do Nanoshots de primeiro momento, mas eu espero ajudar vocês de alguma forma com ele durante seus estudos, projetos, trabalhos e etc. E depois que ele acabar, eu tenho absoluta certeza que você vai conseguir encaixar perfeitamente com nossa área de estudo/trabalho.




Espero ter ajudado :)

Vídeo :: Você tem brio? Esculacho pra começar a estudar (direito)

terça-feira, 31 de janeiro de 2017



Você sempre quis saber o quanto de carga seu servidor Web aguenta? Sempre quis testar, garantir ou refutar a capacidade do seu host ou VPS? Sempre quis saber qual configuração do seu Apache ou NGINX funciona melhor para o seu tipo de serviço? Continue lendo este post e veja X ferramentas que podem te auxiliar no teste de carga do seu Site ou API.

Sempre que eu preciso utlizar um teste de carga em alguma parte dos meus projetos, eu utilizo bastante essas ferramentas, principalmente o ab pela simplicidade. Eu recomendo bastante os itens a seguir:

Apache Benchmark - Ab



O Apache Benchmark (vulgo ab) é um um cli para benchmark de web services muito poderoso. Pode automatizar numeros muito altos de requests, simular concorrência, conexões Keep Alive além de possuir suporte para REST como POST/PUT/GET e uma autenticação via HTTP básica. Ele é da Apache, porém pode ser utilizado para testar qualquer tipo de Web Service ou API, seja em Apache, NGINX, Node, Django e etc. Ele é simples e muito performático, mas pra testes que requerem sessão, cookies e etc, seu uso pode ser um pouco problemático.

Site do projeto: http://httpd.apache.org/docs/2.4/programs/ab.html

A Instalação do ApacheBench é simples. Está disponível dos repositórios da maioria das distribuições como o pacote de ferramentas adicionais do Apache.
 # apt-get install apache2-utils  
 # ab -kc 1000 -t 60 http://minhaapi.com  
 # ab -n 10000 -c 100 http://minhaapi.com  

Onde:
 - kc (Keep Connected) Simula uma conexão persistente  
 - t  Seta um tempo de timeout de Keep Alive da requisição  
 - n Um numero de conexões simultâneas   
 - c  Simula um numero de usuários concorrentes na aplicação   


HTTPerf

O HTTPerf é uma alternativa bacana ao Client do Apachebench. Igualmente poderosos e possui opções bem bacanas para customizar o load test do sistema. É um pouco mais verboso que o AB, mas atende igual.

Git do projeto: https://github.com/httperf/httperf

 # sudo apt-get install httperf  
 # httperf --server minhaapi.com --port 80 --num-conns 1000 --rate 1  
 # httperf --client=0/1 --server=minhaapi.com --port=2206 --uri=/login --send-buffer=4096 --recv-buffer=16384 --num-conns=8000 --num-calls=10  

Onde:
 -- server : Servidor requisitado   
 -- port: porta do servidor a ser requisitada   
 -- num-conns: numero de conexões no teste  
 -- rate: numero de conexões por segundo  
 -- uri: metodo requisitado da API  


Outras opções: 

CURL - Loader



Site: http://curl-loader.sourceforge.net/

JMeter


Site: http://jmeter.apache.org/







Toolbox Benchmark :: Ferramentas de Teste de Performance de Web Servers no Linux

sexta-feira, 27 de janeiro de 2017


O Gitlab é um gerenciador de Git como o Github, Bitbucket e vários outros, porém você pode instalá-lo e gerenciá-lo de um servidor próprio. Basicamente, você pode criar seu próprio servidor de Git privado em uma versão feita para a comunidade.
A documentação da ferramenta é bem completa, e existem várias opções de instalação. Você pode ter uma abordagem muito mais detalhada lá.

Site do projeto: https://about.gitlab.com/
Documentação do Gitlab: https://docs.gitlab.com/

Ubuntu 16.04:

Instalando as dependências:
 sudo apt-get install curl openssh-server ca-certificates postfix  

Instalando o Gitlab:
 curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash  
 sudo apt-get install gitlab-ce  


Debian 8:

Instalando as dependências:
 sudo apt-get install curl openssh-server ca-certificates postfix  

Instalando o Gitlab:
 curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash  
 sudo apt-get install gitlab-ce  


CentOS:

Instalando as dependências:
 sudo yum install curl policycoreutils openssh-server openssh-clients  
 sudo systemctl enable sshd  
 sudo systemctl start sshd  
 sudo yum install postfix  
 sudo systemctl enable postfix  
 sudo systemctl start postfix  
 sudo firewall-cmd --permanent --add-service=http  
 sudo systemctl reload firewalld  

Instalando o Gitlab:
 curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash  
 sudo yum install gitlab-ce  


Configurando e Startando o servidor do Gitlab


Agora temos que editar o arquivo de configuração do gitlab para definir a URL de acesso ao sistema. Se você tiver um domínio apontado, utilize o mesmo. Ou pode testar com localhost, 0.0.0.0 ou o IP cru da máquina em caso de um servidor restrito internamente. O parâmetro que precisa ser alterado é o external_url
 vim /etc/gitlab/gitlab.rb  



Após a instalação, o próprio instalador vai te dar os próximos passos a serem seguidos. Basicamente você vai ter que rodar a primeira configuração do projeto que vai alinhas as dependências do PostgreSQL, Redis e etc. 


 sudo gitlab-ctl reconfigure  


Você pode acessar o Gitlab via URL. O Servidor ficará disponível na porta 80 do host. Ou seja, basta acessar http://ip.do.host/

Durante o primeiro acesso você deverá informar uma senha de administrador e o usuário padrão é o root. Você pode alterar isso quando quiser.



Troubleshoot : ruby_block[supervise_redis_sleep] action run (travado) 

Caso sua instalação fique travada na action supervise_redis_sleep, segue o troubleshoot
Link da Issue: https://gitlab.com/gitlab-org/omnibus-gitlab/issues/430
 /opt/gitlab/embedded/bin/runsvdir-start &   
 gitlab-ctl reconfigure  


Espero ter ajudado :)

Gitlab :: Criando seu próprio servidor de Git privado

 
Nanoshots | Open Source Security, Linux e Tutoriais © 2015 - Designed by Templateism.com