segunda-feira, 5 de outubro de 2015

CONFIGURANDO AMBIENTE DE DESENVOLVIMENTO COM CONTROLE DE VERSÃO PARA PEQUENOS TIMES



Esse tutorial irá ajudar a configurar um ambiente de desenvolvimento com controle de versão para um pequeno time de desenvolvimento utilizando como repositorio central o Bitbucket (sistema web baseado em git para controle de versão), que ficará com uma pipeline tanto parecido com a imagem acima.

Para completar esse tutorial deverá ter instalado na maquina:
- ambiente de desenvolvimento local com base em Oracle VBOX (clique para ler o tutorial);
- conta no Bitbucket;
- aplicativo SourceTree (ajudará a controlar os commits e as diferenças dos arquivos);

Escolhi o Bitbucket para controlar a versão por ter seu funcionamento bem parecido com o GitHub, com a vantagem de ser gratuido e poder utilizar um repositório privado para pequenos times de desenvolvedores (até 5 desenvolvedores).

Esse tutorial foi feito para um ambiente de desenvolvimento em PHP, em que os desenvolvedores utilizam sistema operacional Windows. Para controlar as modificações dos arquivos desenvolvidos e enviar para o repositório no Bitbucket foi escolhida o aplicativo SourceTree por ter uma interface gráfica, de fácil aprendizado e que ajuda a comparar as modificações no código.

A ordem que eu utilizei para criar o ambiente de desenvolvimento (que funcionou para mim) foi:

1 – Criar um novo repositório vazio;
2 – Clonar o repositório vazio na pasta /var/www/html/ que estava mapeada da minha VM;
3 – Configurar o arquivo .gitignore (para não enviar arquivos de imagens e de configuração de banco e enviar de e-mails), esse arquivo fica localizado na pasta raiz do repositório e deve ser comitado para o Bitbucket;
4 – Copiar os arquivos do sistema para pasta aonde foi clonado o novo repositório;
5 – Commitar os sistemas copiados;
6 – No Bitbucket, inclui como contribuidores os demais desenvolvedores do projeto e clonei o repositório nas maquinas virtuais deles;
7 – Atualizei os sistemas locais dos desenvolvedores com os arquivos de configuração que eu coloquei no gitignore;
8 - Configurei no repositorio local deles os email cadastrados no projeto do Bitbucket, que poderá ser feito acessando o terminal no botão do SourceTree.
$ git config --global user.name "John Doe" $ git config --global user.email johndoe@example.com


exemplo .gitignore:

Agora é só usar o SourceTree para controlar as alterações no codigo e enviar para o repositório central do Bitbucket.

Utilizando o aplicativo, o desenvolvedor poderá utilizar as operações básicas do dia a dia:

- Commit – que irá elencar os arquivos para enviar para o repositório das alterações no código;
- Push – para enviar o Commit ( arquivos alterados elencados);
- Pull  caso haja alterações no repositório por outro desenvolvedor, antes de realizar o 'Push', deverá ser feita um 'Pull' para que o repositorio local do desenvolvedor receba a atualização do repositorio do Bitbucket;
- Merge – deverá ser utilizado caso hajam arquivos conflitantes após um 'Pull';


quarta-feira, 30 de setembro de 2015

TheDevConf 2015 Porto Alegre



Nos dias 24, 25 e 26 de setembro aconteceu o The Developers Conference 2015 de Porto Alegre. É um excelente evento para estimular ideias, discutir tecnologias e conhecer pessoas ligadas a TI.

Eu participei das trilhas de Agile, PHP (como espectador e palestrante) e Cloud & DevOps. Foram dias muito produtivos, onde pude trocar conhecimentos com colegas de profissão, inclusive, já estamos pondo em prática algumas coisas vistas aqui no trabalho.

Trilha Agile sempre ótima e deixando com algumas indagações na cabeça.

Da trilha de PHP, me despertou bastante interesse a utilização do PHING para automatização de tarefas e testes unitários, e de aprender mais sobre o potente PHP 7, com velocidade quase similar ao PHP hibrido utilizado pelo FACEBOOK (HHVM).

O que mais me marcou na trilha de DevOps foi o como foi frisado a importância da conteinerização, parafraseando Ruslan Synytsky, criador do Jelastic:
"if you are not working with containers you should start"

E as ótimas dicas do Bruno Souza (brjavaman) e Edson Yanaga:
- Automação
- Dashboards (indicadores)
- Testes
- Virtualização

http://anonovoprojetonovo.com/devops-dicas/

Palestrei sobre o Adianti Framework, ferramenta de desenvolvimento PHP com ORM:

http://pt.slideshare.net/gremmel/desenvolvimento-orientado-a-objetos-com-adianti-framework

Deixo no blog algumas fotos do evento. Aguardo o próximo...














terça-feira, 1 de setembro de 2015

Optimização do Redmi 2

Recentemente a empresa Xiaomi aportou no Brasil e trouxe consigo um novo celular para o mercado, o Redmi 2.
Eu já estava querendo comprar um celular 4g, e estava em duvida, se comprava um moto G ou investia nesse novo de linha. Então a Motorola apresentou o moto G 3ª geração que custa em torno de R$ 900,00 com 2gb de memória RAM e a Xiaomi já tinha apresentado o seu Redmi 2, com praticamente as mesmas especificações, com a exceção da memória RAM, tento o modelo da Xiaomi apenas um 1 GB, entretanto duas coisas me fizeram escolher o Redmi 2, a diferença de R$ 400 reais e as atualizações constantes na MUIU.
Entretanto logo nas primeiras semanas de uso eu percebi lentidão no aparelho quando usava Facebook, Whatsapp, Navegador do Chrome...
Então fui a internet e comecei a pesquisar como otimizar o aparelho e descobri algumas coisas que deixaram a performance muito melhor e vou compartilhar com vocês.
1 – Utilizar Facebook Lite:
Desinstalei tanto o app do Facebook, quanto o app do Messenger. Além de eles comerem muita memoria, tanto em espaço quanto memoria RAM. No lugar deles eu instalei o app Facebook Lite existente para Android, consigo ver o feed de noticias, usar o chat dentro do próprio aplicativo e é muito leve e consome pouquíssimo do meu pacote de dados. A parte ruim é que o app não toca vídeos, mas como sou um usuário de PC, isto não é problema para mim.
2 – Usar o UC Browser:
A navegação no Browser do Google Chrome é muito pesada no Redmi 2, inicialmente eu fiquei usando o navegador padrão da UI, que é bem mais rápido que o Chrome, mas não gostei muito dele. Então encontrei na internet vários posts falando bem do UC Browser, decidi instalar e ele já é o browser default de minhas aplicações.
3 – Manter poucos apps iniciando automaticamente:
Esta dica também li na internet. Quando fui conferir no meu celular, tinha uns 10 apps configurados para iniciar automaticamente, dedici diminuir para 3 e minha experiência tem sido muito boa. Para gerenciar os apps que iniciam automaticamente vá em:
Segurança >> Permissões >> Início automático
Dai será apresentada a lista de apps instalados no sistema e você pode ligar ou desligar o inicio automático.  Eu deixei ativos os seguintes apps: Gmail, Lite, WhatsApp .
4 – Limpar na tela de bloqueio:
Outro dia estava conversando com um colega de trabalho como era ruim ter que estar constantemente ter que limpar os apps abertos. Até disse pra ele, porque os desenvolvedores não fazem alguma coisa para configurar a limpeza de apps quando o celular entra em tela de bloqueio.
Então que mexendo na UI no programa da Segurança que descubro que existe essa opção. É só clicar na engrenagem do app segurança, como mostrado na foto abaixo que aparecerá uma lista de opções.



Na Listagem entre na opção Limpar na tela de bloqueio, e escolha após quanto de inatividade ele irá fechar e limpar os apps. Eu escolhi 5 minutos, porque 1 minuto eu acho pouco, pois pode fechar sem querer e 10 minutos pode ser tempo de mais pra mim.
Para quem gosta de escutar o app Spotify, pode bloquear a limpesa automática, acessando o botao esquerdo do celular e puxando o app para baixo, ele ficará da seguinte maneira:

Para desbloquear o app é só puxar para baixo novamente, que ele poderá ser limpo da memória.


CONCLUSÃO:
Estou muito satisfeito com o meu Redmi 2, acredito que o pessoal da MIUI pode e irá melhorar ainda mais a UI, que já é muito boa. Minha experiência tem sido muito boa, inclusive a alta qualidade da câmera muito tem a ver com o software que ela utiliza.

Com certeza eu iriei comprar também o próximo aporte da empresa no Brasil, que espero que venha com maior numero de memoria RAM, que na minha opinião, poderia ser 2GB.

terça-feira, 16 de junho de 2015

Backup diário de banco Postgres usando crontab

Recentemente precisei criar uma rotina no linux (ubuntu 14.04 LTS), usando o crontab, para fazer backup diário da base de dados de um sistema que desenvolvi em PHP utilizando banco de dados Postgresql 9.3.

Para fazer o backup decidi agendar 3 rotinas a serem executadas todo dia ao meio dia:

1 – Renomear o arquivo de backup existente;
2 – Criar um arquivo txt de backup;
3 – Apagar o arquivo de backup renomeado;

Então resolvi criar um arquivo .sh (bkp_postgres.sh) do linux que execute esses 3 comandos, o arquivo ficou como o exemplo abaixo:

#!/bin/bash
mv /var/www/html/sistema/bkp/backup.txt /var/www/html/sistema/bkp/backupold.txt
pg_dump nosso_banco_de_dados -i > /var/www/html/sistema/bkp/backup.txt
rm -rf /var/www/html/sistema/bkp/backupold.txt


Partindo do pressuposto que o banco está na mesma máquina que o sistema e, como por padrão, criamos o usuário postgres para gerenciar o banco deveremos acessar o crontab com o usuário postgres com os comandos abaixo:

$ sudo su postgres
$ crontab -e

Adicionei na ultima linha do crontab o comando abaixo que representa o agendamento:
0 12 * * * sh /var/www/html/sistema/bkp/bkp_postgres.sh



Por fim, para testar o arquivo .txt de backup gerado, no terminal, logado com o usuário postgres utilizar os comandos abaixo, para, respectivamente, entrar no gerenciador do Postgresql, apagar o banco do sistema, criar um novo banco do sistema com o mesmo nome, conectar ao banco, restaurar as tabelas e valores das mesmas e por fim sair do gerenciador.

$ psql
DROP DATABASE nosso_banco_de_dados;
CREATE DATABASE nosso_banco_de_dados;
\c nosso_banco_de_dados; ** se conecta a base de dados criada
\i /tmp/backupatividade.txt ; ** restaura as tabelas e valores com base no arquivo
\q ** sai do psql


quarta-feira, 10 de junho de 2015

Testes automatizados com a SELENIUM IDE

Como estou desenvolvendo uma nova aplicação php, utilizando a Adianti Framework, resolvi também começar a criar testes automatizados com a Selenium IDE.

Selenium é uma ferramenta para testes funcionais de aplicações web desenvolvida pelo pessoal da ThoughtWorks, tem tudo a ver com agilidade e garantia de qualidade da aplicação a ser desenvolvida, e ainda ajuda um monte o desenvolvedor na hora de fazer mudanças no código.

Esta ferramenta é um plugin do Firefox (mas pode ser instalada no Google Chrome) que para instalar ela é só acessar o link abaixo:

Após a instalação, o Firefox irá reiniciar e a extensão já estará ativa. Ela deverá ser localizada próximo a barra de endereços do navegador, caso não há encontre procure na opção Ferramentas (Tools).

Abrirá uma janela que inicialmente terá um só teste, mas pode ser adicionado mais testes e posteriormente salvo uma suíte de testes (conjunto de testes).
Uma boa pratica é pra cada nova funcionalidade gravar um teste novo na suíte de testes.

Tenho inicialmente duas dicas para quem está começando a usar a ferramenta, sempre mande rodar os testes na velocidade baixa, caso de algum problema de lentidão, a ferramenta pode retornar erro por ainda não ter carregado a pagina.


Outra dica é que alguns campos, como select ou calendar, dependendo da framework utilizada, o Selenium não vai conseguir selecionar o valor, o que pode ser contornado mandando a ferramenta inserir um valor já determinado usando o comando ‘type’, como podem ver nas imagens abaixo.



  




quinta-feira, 23 de abril de 2015

Configurando VM para ambiente de Desenvolvimento linux PHP com banco Postgresql

Ao completar esse tutorial você terá configurado ambiente de desenvolvimento para PHP e banco de dados PostgreSQL em uma máquina virtual para trabalhar via Windows.

Baixar a ultima versão da VBOX:

Baixar a imagem da ultima versão do Ubuntu Server (14.04.02 LTS)

Instalar VBOX
Criar uma maquina virtual para ubuntu, nas configurações apontar a imagem da ultima distribuição utuntu na aba armazenamento. Tenha cuidado para baixar e utilizar uma distribuição ubuntu que tenha a mesma quantidade bits (32 ou 64) que a VM criada.




Ao iniciar a maquina virtual ele verificará que tem uma midia de ubuntu e começara a instalação, após a instalação seguir os passos abaixo.

Transformar em super usuario
# sudo su

Realizar update no ubuntu
# apt-get update

Instalar o apache, php, postgres e samba.
Para achar a ultima versão de cada pacote deve-se digitar o seguinte comando:
# apt-cache search php
# apt-cache search postgres

para instalar use os seguintes comandos:
# apt-get install apache2
# apt-get install php5 php5-cli php5-pgsql
# apt-get install postgresql-9.3
# apt-get install samba

Mudar as configurações de Rede para:
Conectado a: Placa em modo Bridge



Configurando o samba (para acessar a VM pelo windows)
Localização do arquivo: /etc/samba/smb.conf

# cd /etc/samba/
# vim smb.conf

Logo abaixo de [printers] adicionar o seguinte código:

[raiz]
path=/
user=seu_usuario
browseable=yes
writeable=yes

Devemos dar acesso ao usuario do sistema no samba, utilizando o seguinte comando:
smbpasswd -a seu_usuario
O sistema pedira para definir a senha e deverá ser 'restartado'
# service samba reload

Com o comando abaixo você descobrirá o seu endereço ip, que permitirá se conectar na sua pasta de arquivos da VM a partir do windows.
# ifconfig


Agora vamos configurar o Postgres:
as configurações abaixo permitiram o acesso via pgAdmin do windows

# sudo su postgres
# psql
# alter role postgres password '123456';

# vim /etc/postgresql/9.3/main/pg_hba.conf
abaixo do IPv6 local connection

host   all    all 0.0.0.0/0   md5

# vim /etc/postgresql/9.3/main/postgresql.conf
descomentar a linha
listen_addresses = 'localhost'
e substituir o localhost por *


# sudo /etc/init.d/postgresql restart