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

terça-feira, 23 de dezembro de 2014

JSON vs XML

Por muito tempo, XML foi a única opção para transferir dados via web. Como não existiam outras opções, XML era utilizado para todas as aplicações que necessitavam transferir dados. Este formato era utilizado para transferir dados de texto e numérico, e também utilizado para transferência de documentos, imagens, áudio, vídeo e muito mais. Agora que temos outras opções, o XML foi sobrepujado em diversas maneiras. Nos dias de hoje temos a opção de escolher entre JSON e XML quando criamos arquivos de dados.

Com o JSON, você estará limitado a enviar apenas dados do tipo texto e numérico, já o XML lhe dá a liberdade de enviar qualquer tipo de dado que você deseja. Esta habilidade permite o XML ser mais flexível que o JSON. Entretanto, isto dificulta a leitura do XML, deixando o arquivo mais extenso, para que possam ser trafegados arquivos de imagens, gráficos, e outros tipos de arquivos. Como a transferência de arquivos clássicos, que contem somente dados, não se torna necessária toda essa ‘extensabilidade’ podendo ser beneficiado da simplicidade do JSON, onde os arquivos são gravados na forma de array, utilizando de uma familiar a linguagem orientada a objetos. Esta formatação permite uma fácil importação de dados do JSON para as linguagens de programação.


Essa simplicidade com a qual o JSON cria os arquivos é o que deixa muito mais rápido o tráfego dos arquivos, pois o arquivo já vem no formato de dados, enquanto no XML você tem que transformar o arquivo no formato de dados antes de importar, o que faz o JSON ser um tipo de formato superior para web APIs.

fonte:
https://www.udemy.com/blog/json-vs-xml/