10 de dezembro de 2018

Lubuntu alterar as configurações do Display

Para quem usa a flavour Lubuntu, a alteração do display pode ser acessada através do seguinte comando:

lxrandr

esse é o comando para ajustar as configurações do display.


28 de fevereiro de 2016

Godot Engine: Visualizando o log do android com o Adb

A história é a seguinte: você está desenvolvendo um jogo utilizando a Engine Godot e precisa dar uma olhada no log do aplicativo que está rodando no celular. 

O log pode ser visualizado através do adb:

adb logcat [options] [filterspecs]

onde [options] são as opções do comando e [filterspecs] são os filtros a serem utilizados.

Para obter apenas o log do Godot deve-se silenciar a saída de log:

adb logcat -s

e filtrar pela Tag do godot

"godot"

O comando completo fica da seguinte forma:

adb logcat -s godot

O mesmo pode ser obtido pelo seguinte comando:

adb logcat *:S godot:V



PS: uma introdução à Engine Godot pode ser visualizada neste vídeo


25 de janeiro de 2016

Automatização do Navegador utilizando o IMacros - 2ª parte

Voltando ao exemplo do Imacros para preencher automaticamente um formulário. Vamos supor que você queira responder várias vezes o formulário, sendo que cada preenchimento vão ser colocadas informações ligeiramente diferentes no formulário (Figura 1). 



Figura 1: Minions - ligeiramente diferentes mas tudo igual 


A melhor forma de realizar esta tarefa é colocar as respostas em um arquivo csv, sendo cada linha do arquivo vai conter um preenchimento das respostas (colunas) do formulário. O arquivo contendo as respostas vai ter a seguinte estrutura (Figura 2).


Pergunta 1 Pergunta 2 Pergunta 3 Pergunta 4
Da Padoca da Esquina Por que eu quero Com açúcar Sou programador: por volta de 7 litros
Requentado Café de ontem é melhor Sem açúcar Duas
Feito na hora Não tem nada melhor do que o café feito na hora Filtrado com meia velha Uma

Figura 2: Formato do arquivo csv contendo os dados a serem utilizados

Após criar este arquivo csv basta fazer o IMacros obter as respostas deste arquivo. Portanto, a partir do script do artigo anterior:


TAB T=1
URL GOTO=https://docs.google.com/forms/d/1nXuAGqskiTm8vU1Gm8bEMUpe9NSTgrtHhqlcsQgzgis/viewform?fbzx=-5150429435447904810
TAG POS=1 TYPE=INPUT:RADIO FORM=ID:ss-form ATTR=NAME:entry.1925481785&&VALUE:Da<SP>padoca<SP>da<SP>esquina CONTENT=YES
TAG POS=1 TYPE=INPUT:TEXT FORM=ID:ss-form ATTR=ID:entry_1632006682 CONTENT=Por<SP>que<SP>sim
TAG POS=1 TYPE=INPUT:RADIO FORM=ID:ss-form ATTR=NAME:entry.1254744817&&VALUE:Com<SP>açúcar CONTENT=YES
TAG POS=1 TYPE=INPUT:RADIO FORM=ID:ss-form ATTR=NAME:entry.753234863&&VALUE:Sou<SP>programador:<SP>por<SP>volta<SP>de<SP>7<SP>litros CONTENT=YES
WAIT SECONDS=6
TAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:ss-form ATTR=ID:ss-submit


Vamos alterar o script para retirar os dados a serem preenchidos no formulário a partir do arquivo csv criado anteriormente. 

Inicialmente vamos indicar a localização do arquivo (exemplo.csv) contendo os dados a serem inseridos no formulário. Neste exemplo o arquivo se encontra na pasta
"C:/temp".

SET !DATASOURCE "C:/temp/exemplo.csv"

Agora indicamos para o IMacros ignorar a primeira linha do arquivo. Vamos utilizar esta linha como cabeçalho (header) do arquivo csv. 

SET !LOOP 2
SET !DATASOURCE_LINE {{!LOOP}}

Finalmente vamos utilizar as colunas do arquivo csv para preencher os campos do formulário.

Para a pergunta nº1 a resposta se encontra na 1ª coluna do arquivo csv (COL1).

TAG POS=1 TYPE=INPUT:RADIO FORM=ID:ss-form ATTR=NAME:entry.1925481785&&VALUE:{{!COL1}} CONTENT=YES

Para a pergunta nº2 a resposta se encontra na 2ª coluna do arquivo csv (COL2).

TAG POS=1 TYPE=INPUT:TEXT FORM=ID:ss-form ATTR=ID:entry_1632006682 CONTENT={{!COL2}}

Para a pergunta nº3 a resposta se encontra na 3ª coluna do arquivo csv (COL3).

TAG POS=1 TYPE=INPUT:RADIO FORM=ID:ss-form ATTR=NAME:entry.1254744817&&VALUE:{{!COL3}} CONTENT=YES

Para a pergunta nº4 a resposta se encontra na 4ª coluna do arquivo csv (COL4).

TAG POS=1 TYPE=INPUT:RADIO FORM=ID:ss-form ATTR=NAME:entry.753234863&&VALUE:{{!COL4}} CONTENT=YES

Apenas para visualização do funcionamento do script indicamos para o IMACROS esperar alguns segundos antes de submeter o formulário:

WAIT SECONDS=6

E na última etapa submetemos o formulário:

TAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:ss-form ATTR=ID:ss-submit


E o script completo fica da seguinte  forma:

TAB T=1
URL GOTO=https://docs.google.com/forms/d/1nXuAGqskiTm8vU1Gm8bEMUpe9NSTgrtHhqlcsQgzgis/viewform?fbzx=-5150429435447904810

SET !DATASOURCE "C:/temp/exemplo.csv"
SET !LOOP 2
SET !DATASOURCE_LINE {{!LOOP}}

TAG POS=1 TYPE=INPUT:RADIO FORM=ID:ss-form ATTR=NAME:entry.1925481785&&VALUE:{{!COL1}} CONTENT=YES
TAG POS=1 TYPE=INPUT:TEXT FORM=ID:ss-form ATTR=ID:entry_1632006682 CONTENT={{!COL2}}
TAG POS=1 TYPE=INPUT:RADIO FORM=ID:ss-form ATTR=NAME:entry.1254744817&&VALUE:{{!COL3}} CONTENT=YES
TAG POS=1 TYPE=INPUT:RADIO FORM=ID:ss-form ATTR=NAME:entry.753234863&&VALUE:{{!COL4}} CONTENT=YES
WAIT SECONDS=6
TAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:ss-form ATTR=ID:ss-submit

Para rodar o script basta utilizar a opção Play (Loop) do Imacros (Figura 3)



Figura 3: Print screen da tela do Imacros com a opção Play (Loop)

14 de janeiro de 2016

Automatização do Navegador utilizando o IMacros



A história é sempre a mesma. Todo dia você abre o navegador e realiza sempre o mesmo conjunto de atividades nele. Seja checar o site de notícias, dar uma olhada na cotação dos Títulos do Tesouro Direto, ou testar uma aplicação que você está desenvolvendo.

Nessas horas o IMacros cai como uma luva para realizar essas tarefas repetitivas. O IMacros é um gerador de macro, com ele você pode gravar/escrever uma macro para executar um conjunto de comandos no navegador (Figura 1). 


Figura 1: SkyNet - Um executor de macro: matar John Connor


Indo para a parte prática vamos imaginar a seguinte situação:

Você está desenvolvendo aquele sisteminha web porreta onde existe um formulário enorme para o usuário preencher. Você vai ter que testar a funcionalidade deste formulário, mas convenhamos, ficar preenchendo o formulário a cada teste é um pouco estressante (Figura 2).

Figura 2: Testando o formulário manualmente


Para o exemplo ficar mais didático, vamos reduzir o formulário do sistema para algo mais simples (Figura 3) e a partir disto vamos construir a macro para preencher os dados do formulário. 



Figura 3: formulário a ser preenchido

O formulário de exemplo é formado por 4 perguntas simples relacionadas com o café, sendo 3 delas de alternativas e 1 dissertativa. 


O primeiro comando do script a ser gerado é escolher a aba do navegador onde a macro irá rodar, no nosso caso vamos escolher a aba atual do usuário:

TAB T=1

Agora vamos indicar para o navegador qual a URL a ser visitada: 


Finalmente vamos preencher as respostas do formulário. Vamos colocar as seguintes respostas para as perguntas: 

1) Que tipo de café você gosta? 
Da padoca da esquina  

2) Qual o motivo da escolha anterior?
Por que sim

3) E como o café deve ser feito?
Com açúcar

4) Quantas xícaras de café você bebe por dia?
Sou programador, por volta de 7 litros


Os seguintes comandos devem ser adicionados no script: 

TAG POS=1 TYPE=INPUT:RADIO FORM=ID:ss-form ATTR=NAME:entry.1925481785&& VALUE:Da<SP>padoca<SP>da<SP>esquina CONTENT=YES

TAG POS=1 TYPE=INPUT:TEXT FORM=ID:ss-form ATTR=ID:entry_1632006682 CONTENT=Por<SP>que<SP>sim

TAG POS=1 TYPE=INPUT:RADIO FORM=ID:ss-form ATTR=NAME:entry.1254744817&&VALUE:Com<SP>açúcar CONTENT=YES

TAG POS=1 TYPE=INPUT:RADIO FORM=ID:ss-form ATTR=NAME:entry.753234863&&VALUE:Sou<SP>programador:<SP>por<SP>volta<SP>de<SP>7<SP>litros CONTENT=YES

onde: 

TAG POS=1 TYPE=INPUT:RADIO FORM=ID:ss-form 

busca um elemento do tipo radio no formulário de id ss-form

TAG POS=1 TYPE=INPUT:TEXT FORM=ID:ss-form

busca um elemento do tipo text no formulário de id ss-form

ATTR=NAME:entry.1925481785&&VALUE:Da<SP>padoca<SP>da<SP>esquina 

é a restrição do radio a ser selecionado: deve possuir o nome entry.1925481785 e valor "Da padoca da esquina" (lembre-se que três radio's são identificados por este nome, mas apenas um deles possui o valor indicado)

CONTENT=YES 

indica que o radio vai ser selecionado

O mesmo ocorre para as outras duas questões envolvendo radio's: 

a restrição na seleção: 

ATTR=NAME:entry.1254744817&&VALUE:Com<SP>açúcar
ATTR=NAME:entry.753234863&&VALUE:Sou<SP>programador:<SP>por<SP>volta<SP>de<SP>7<SP>litros

e a seleção do radio:

CONTENT=YES 


ATTR=ID:entry_1632006682 

é a restrição do elemento de texto a ser selecionado: o que possui o ID igual a entry_1632006682 

CONTENT=Por<SP>que<SP>sim

Indica o valor que vai ser colocado no elemento de texto


Só para visualizarmos os campos preenchidos vamos colocar o IMacros para esperar durante uns segundos:

WAIT SECONDS=6

Por último vem o comando para submeter o formulário 

TAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:ss-form ATTR=ID:ss-submit


Com isto o preenchimento do formulário está automatizado e você pode tomar um cafézinho enquanto o IMacro realiza o preenchimento do formulário (Figura 5)



FIGURA 5: Você aceita uma xícara de café?



E o script fica da seguinte forma:

TAB T=1
URL GOTO=https://docs.google.com/forms/d/1nXuAGqskiTm8vU1Gm8bEMUpe9NSTgrtHhqlcsQgzgis/viewform?fbzx=-5150429435447904810
TAG POS=1 TYPE=INPUT:RADIO FORM=ID:ss-form ATTR=NAME:entry.1925481785&&VALUE:Da<SP>padoca<SP>da<SP>esquina CONTENT=YES
TAG POS=1 TYPE=INPUT:TEXT FORM=ID:ss-form ATTR=ID:entry_1632006682 CONTENT=Por<SP>que<SP>sim
TAG POS=1 TYPE=INPUT:RADIO FORM=ID:ss-form ATTR=NAME:entry.1254744817&&VALUE:Com<SP>açúcar CONTENT=YES
TAG POS=1 TYPE=INPUT:RADIO FORM=ID:ss-form ATTR=NAME:entry.753234863&&VALUE:Sou<SP>programador:<SP>por<SP>volta<SP>de<SP>7<SP>litros CONTENT=YES
WAIT SECONDS=6
TAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:ss-form ATTR=ID:ss-submit


17 de dezembro de 2015

Whatsapp fora do ar. Tô nem aí, uso o Telegram mesmo

E a justiça brasileira decide cortar o acesso ao Whatsapp no Brasil. Mas para quê chorar com isso, se existe um aplicativo bem melhor do que o whatsapp para usar. Vamos dar uma olhada na melhor alternativa ao whatsapp no momento. Estou falando do Telegram.  

Já pela sua história, o Telegram nasceu da ideia de um cara que teve que fugir às pressas da Rússia. Segundo relatado na The New York Times


When a SWAT team appeared at Pavel Durov’s door in St. Petersburg, he started thinking about his future in Russia.
He was home alone, and he peered at them through a monitor.
“They had guns and they looked very serious,” said Mr. Durov, once Russia’s biggest celebrity entrepreneur. “They seemed to want to break the door.”


Traduzindo de uma forma BR:

"A polícia tava lá na frente da minha casa querendo entrar na bicuda......"

E foi assim que surgiu o Telegram (depois que o Pavel Durov fugiu da Rússia).

O Telegram já é melhor que  o Whatsapp já pelo fato que não vai transbordar a memória do seu celular gravando todas as imagens de uma maneira bizarra no seu aparelho (deixa tudo espalhado e não adianta remover a conversa, as imagens ficam nele). 

Mas ele é melhor mesmo do que o Whatsapp pelos Stickers existentes: me fala de qual outro aplicativo desse tipo que você pode personalizar com os stickers do Mr. Bean ???





Ah!!! Mas eu não gosto do Mr. Bean. Sou um cara politizado e gosto de discutir sobre política. 

Seus problemas estão resolvidos meu camaradinha. Você pode utilizar os stickers dos políticos brasileiros. 

Não importa se você é mortadela 



coxinha



bolsonarense



marinense



ou tradicionalista



vai sempre ter um sticker que é a sua cara. 







15 de maio de 2013

Artigo Rápido: Como verificar o navegador que está sendo utilizado pelo usuário

Ou no meu caso: "Como verificar se estou utilizando o Internet Explorer (vulgo IE)"

Imagine a seguinte situação: 

"Você quer incluir um arquivo CSS (Cascading Style Sheets) na sua página ou rodar um determinado algoritmo apenas para um determinado tipo de navegador, como por exemplo o IE6."

Aqui neste artigo, vão ser apresentadas algumas opções para resolver este problema: a primeira utilizando, no Zend Framework, o método appendStylesheet do Head Link (já comentado neste artigo); a segunda utilizando diretamente Comentários Condicionais; a terceira utilizando Javascript e a última utilizando apenas PHP


Figura 1: Flash


1ª Utilizando Head Link(*)


Na view basta adicionar o código:


1
2
3
4
5
6
<?php 

// Exemplo de adição de um CSS apenas para o navegador Internet Explorer
$this->headLink()->appendStylesheet('caminho/do/arquivo', 'screen', 'IE');

?>

2ª Utilizando Comentários Condicionais(*)


Basta adicionar o código entre os comentários condicionais, por exemplo:

<!--[if IE]>
<link href="non-ie.css" rel="stylesheet">
<![endif]-->

3ª Utilizando javascript:


1
2
3
4
5

<script type="text/javascript">
   if($.browser.msie){
      alert('Estou utilizando alguma versão do IE. ');
   }
</script>

4ª Utilizando apenas PHP 



1
2
3
4
5
6
7
8
9
<?php 
if(preg_match('/(?i)msie [0-9]*/', $_SERVER['HTTP_USER_AGENT'])){
?>
   <script type="text/javascript">
      alert('Estou utilizando alguma versão do IE. ');
   </script>
<?php
}
?>



(*) Comentários condicionais não são mais reconhecidos no Internet Explorer 10