SlideShare uma empresa Scribd logo
1 de 8
Criatividade na solução de
problemas: Um caso real.
Do mouse quebrado a um keylogger
escrito em Python
Considero a criatividade na solução
de problemas uma das mais interessantes
características psicológicas do ser
humano.
Não acho justo nomear a gambiarra
como um sinônimo de criatividade na
solução de problemas. A gambiarra
resolve o problema rapidamente, com
baixo custo e esforço, mas pode agravar
o problema ainda mais em um futuro
próximo.
A partir deste ponto, considere o
seguinte processo criativo na solução
de um problema relativamente simples:
O problema percebido: Devido a uma
grande utilização e por um longo
período, o botão esquerdo do mouse
parou de funcionar. O mouse dispara o
click por diversas vezes de forma não
padronizada. Ou seja, o funcionamento
esperado de apenas um click por
acionamento não está ocorrendo.
A solução imediata: Comprar um
mouse novo.
A solução não imediata: Enviar o
mouse para uma oficina especializada,
substituindo a peça defeituosa. A
solução pode não ser plausível por dois
motivos: a) devido a peça ser muito
específica e não ser encontrada
facilmente no mercado, b) o custo para
adquirir a peça ultrapassa o preço do
próprio dispositivo, inviabializando
financeiramente a solução.
A solução com criatividade:
Pessoalmente consertar o mouse,
substituindo a peça defeituosa por uma
do mesmo tipo que está sem função no
próprio aparelho. Sim, no aparelho há
três peçinhas. Botão esquerdo, meio e
direito. Eu não faço uso do botão do
meio, portanto, a peça que executa o
click do botão do meio está sem uso e
pode ser remanejada para o botão
esquerdo por meio de um soldador de
componentes eletrônicos de baixa
potência.
Descrição Imagem
Mouse
Imagem dos
componentes do
dispositivo.
Peças mecânicas
responsáveis pelo
processo do click
(press and release).
Imagem das soldas
refeitas referente as
peças mecânicas
que manejam o
processo do click
(press and release)
Diante desse problema surgiu a
seguinte pergunta: a) Quantos clicks a
peça mecânica do mouse é capaz de
executar antes de quebrar? Essa
pergunta levou a uma segunta pergunta:
b) Quantos clicks eu executo por dia em
cada um dos botões?
Devido esse mouse ser do tipo
genérico e sem especificações técnicas,
eu não tenho como responder a pergunta
“a”, porém, com criatividade eu
desenvolvi um programa Python keylogger
(github) com apoio da biblioteca
pynput, esse programa conta os clicks
executados e as teclas pressionadas.
Assim, passo a ter os meios e ser capaz
de responder a pergunta “b”.
Lembrando que cada click é composto
de dois movimentos: Press(pressionar) e
Release(liberar), então, dois registros
são considerados e adicionados no banco
de dados.
A quantidade de clicks executados
foram inseridos e consolidados no DB
PostgreSQL v. 10.10 com a seguinte
modelagem de dados da tabela abaixo que
já apresenta os dados reais respondendo
a questão “b” (Quantos clicks eu
executo por dia em cada um dos botões):
+---------------------------------------------+
| --AMOUNT OF BUTTON CLICKS-- |
| DATE(PK) LEFT MIDDLE RIGHT |
+---------------------------------------------+
| 2019/09/20 674 2 14 |
| 2019/09/21 3536 2 44 |
| 2019/09/22 2558 0 60 |
| 2019/09/23 1278 0 26 |
| 2019/09/24 2008 0 52 |
| 2019/09/25 2978 0 26 |
| 2019/09/26 1324 2 40 |
| 2019/09/27 960 0 34 |
| 2019/09/28 226 0 6 |
| 2019/09/29 918 0 34 |
| 2019/09/30 796 0 6 |
| 2019/10/01 1795 0 42 |
| 2019/10/02 776 0 8 |
| 2019/10/03 1066 2 6 |
| 2019/10/04 896 0 24 |
| 2019/10/05 98 0 6 |
+---------------------------------------------+
| AVERAGE 1367.9375 0.5 26.75 |
+---------------------------------------------+
*PK é Primary Key com data invertida
para naturalmente organizar os
registros e auxiliar na consolidação
dos dados.
O valor das teclas pressionadas
foram inseridas analiticamente no DB
NoSQL MongoDB v3.6 com a seguinte
modelagem de dados:
> db.keylogger_co.find().pretty().sort({date:-1})
{
"_id" : ObjectId("5d8cbd8fdfdd918ad3074e1e"),
"date" : "2019/09/26-10:30:55:991315",
"keypressed" : "Key.enter"
}
Conclusão:
Todos nós possuímos criatividade na
solução de problemas, todavia, a maior
importância está em reconhecer essa
característica psicológica e “alimentá-
la” com estudo formal e experimentação
empírica. Produzir novos produtos e
soluções, assim como foi demonstrado
neste documento, independentemente do
tamanho e da complexidade do problema.
O processo criativo possui uma
anatomia e é compartilhado por dois
grandes autores: Daniel Goleman em “O
Espírito Criativo” e John Howkins em
“Economia Criativa”. Consulte o link
abaixo para mais informações a respeito
da anatomia do processo criativo.
Fontes:
https://www.github.com/valoreio/keylogger
https://www.slideshare.net/MarcosAurelioBarranc/
criatividade-e-inovacao
Gostou? Dê um like! Fique a vontade em
compartilhar e usar no seu estudo de caso.
Apenas informe a fonte. Obrigado e sucesso!
Ahhh eu tenho uma lista de desejo na Amazon:
I have a wishlist at Amazon
https://www.amazon.com.br/hz/wishlist/ls/
2Y2J3ADYO50TH
Could you do me a kindness? :-)
Marcos Aurelio Barranco
SP/SP
14/Setembro/2019
Atualizado em: 29/Outubro/2019

Mais conteúdo relacionado

Mais de Marcos Aurelio Barranco

Impressoes apos 2 dias utilizando o ubuntu io t com raspberry pi
Impressoes apos 2 dias utilizando o ubuntu io t com raspberry piImpressoes apos 2 dias utilizando o ubuntu io t com raspberry pi
Impressoes apos 2 dias utilizando o ubuntu io t com raspberry piMarcos Aurelio Barranco
 
Group by and order by desc with python pandas
Group by and order by desc with python pandasGroup by and order by desc with python pandas
Group by and order by desc with python pandasMarcos Aurelio Barranco
 
Impressões após 5 dias utilizando o Raspberry Pi 3 B+ como um computador resi...
Impressões após 5 dias utilizando o Raspberry Pi 3 B+ como um computador resi...Impressões após 5 dias utilizando o Raspberry Pi 3 B+ como um computador resi...
Impressões após 5 dias utilizando o Raspberry Pi 3 B+ como um computador resi...Marcos Aurelio Barranco
 
Compile and install MongoDB v. 3.2.12 on Raspbian 32 bits with Raspberry PI 3 B+
Compile and install MongoDB v. 3.2.12 on Raspbian 32 bits with Raspberry PI 3 B+Compile and install MongoDB v. 3.2.12 on Raspbian 32 bits with Raspberry PI 3 B+
Compile and install MongoDB v. 3.2.12 on Raspbian 32 bits with Raspberry PI 3 B+Marcos Aurelio Barranco
 

Mais de Marcos Aurelio Barranco (12)

Python e Golang - Parte 2
Python e Golang - Parte 2Python e Golang - Parte 2
Python e Golang - Parte 2
 
Python e Golang - Parte 1
Python e Golang - Parte 1Python e Golang - Parte 1
Python e Golang - Parte 1
 
Impressoes apos 2 dias utilizando o ubuntu io t com raspberry pi
Impressoes apos 2 dias utilizando o ubuntu io t com raspberry piImpressoes apos 2 dias utilizando o ubuntu io t com raspberry pi
Impressoes apos 2 dias utilizando o ubuntu io t com raspberry pi
 
Group by and order by desc with python pandas
Group by and order by desc with python pandasGroup by and order by desc with python pandas
Group by and order by desc with python pandas
 
Impressões após 5 dias utilizando o Raspberry Pi 3 B+ como um computador resi...
Impressões após 5 dias utilizando o Raspberry Pi 3 B+ como um computador resi...Impressões após 5 dias utilizando o Raspberry Pi 3 B+ como um computador resi...
Impressões após 5 dias utilizando o Raspberry Pi 3 B+ como um computador resi...
 
O hábito saudável de correr
O hábito saudável de correrO hábito saudável de correr
O hábito saudável de correr
 
Como instalar o IRPF no Linux
Como instalar o IRPF no LinuxComo instalar o IRPF no Linux
Como instalar o IRPF no Linux
 
Python, CPython, Pythonico, Cython
Python, CPython, Pythonico, CythonPython, CPython, Pythonico, Cython
Python, CPython, Pythonico, Cython
 
Saindo da caixa para criar e inovar
Saindo da caixa para criar e inovarSaindo da caixa para criar e inovar
Saindo da caixa para criar e inovar
 
Coaching e a carruagem
Coaching e a carruagemCoaching e a carruagem
Coaching e a carruagem
 
Criatividade e inovacao
Criatividade e inovacaoCriatividade e inovacao
Criatividade e inovacao
 
Compile and install MongoDB v. 3.2.12 on Raspbian 32 bits with Raspberry PI 3 B+
Compile and install MongoDB v. 3.2.12 on Raspbian 32 bits with Raspberry PI 3 B+Compile and install MongoDB v. 3.2.12 on Raspbian 32 bits with Raspberry PI 3 B+
Compile and install MongoDB v. 3.2.12 on Raspbian 32 bits with Raspberry PI 3 B+
 

Solução criativa para mouse quebrado usando Python

  • 1. Criatividade na solução de problemas: Um caso real. Do mouse quebrado a um keylogger escrito em Python Considero a criatividade na solução de problemas uma das mais interessantes características psicológicas do ser humano. Não acho justo nomear a gambiarra como um sinônimo de criatividade na solução de problemas. A gambiarra resolve o problema rapidamente, com baixo custo e esforço, mas pode agravar o problema ainda mais em um futuro próximo. A partir deste ponto, considere o seguinte processo criativo na solução de um problema relativamente simples: O problema percebido: Devido a uma grande utilização e por um longo período, o botão esquerdo do mouse parou de funcionar. O mouse dispara o click por diversas vezes de forma não padronizada. Ou seja, o funcionamento esperado de apenas um click por acionamento não está ocorrendo.
  • 2. A solução imediata: Comprar um mouse novo. A solução não imediata: Enviar o mouse para uma oficina especializada, substituindo a peça defeituosa. A solução pode não ser plausível por dois motivos: a) devido a peça ser muito específica e não ser encontrada facilmente no mercado, b) o custo para adquirir a peça ultrapassa o preço do próprio dispositivo, inviabializando financeiramente a solução. A solução com criatividade: Pessoalmente consertar o mouse, substituindo a peça defeituosa por uma do mesmo tipo que está sem função no próprio aparelho. Sim, no aparelho há três peçinhas. Botão esquerdo, meio e direito. Eu não faço uso do botão do meio, portanto, a peça que executa o click do botão do meio está sem uso e pode ser remanejada para o botão esquerdo por meio de um soldador de componentes eletrônicos de baixa potência.
  • 4. Peças mecânicas responsáveis pelo processo do click (press and release). Imagem das soldas refeitas referente as peças mecânicas que manejam o processo do click (press and release) Diante desse problema surgiu a seguinte pergunta: a) Quantos clicks a peça mecânica do mouse é capaz de
  • 5. executar antes de quebrar? Essa pergunta levou a uma segunta pergunta: b) Quantos clicks eu executo por dia em cada um dos botões? Devido esse mouse ser do tipo genérico e sem especificações técnicas, eu não tenho como responder a pergunta “a”, porém, com criatividade eu desenvolvi um programa Python keylogger (github) com apoio da biblioteca pynput, esse programa conta os clicks executados e as teclas pressionadas. Assim, passo a ter os meios e ser capaz de responder a pergunta “b”. Lembrando que cada click é composto de dois movimentos: Press(pressionar) e Release(liberar), então, dois registros são considerados e adicionados no banco de dados. A quantidade de clicks executados foram inseridos e consolidados no DB PostgreSQL v. 10.10 com a seguinte modelagem de dados da tabela abaixo que já apresenta os dados reais respondendo a questão “b” (Quantos clicks eu executo por dia em cada um dos botões):
  • 6. +---------------------------------------------+ | --AMOUNT OF BUTTON CLICKS-- | | DATE(PK) LEFT MIDDLE RIGHT | +---------------------------------------------+ | 2019/09/20 674 2 14 | | 2019/09/21 3536 2 44 | | 2019/09/22 2558 0 60 | | 2019/09/23 1278 0 26 | | 2019/09/24 2008 0 52 | | 2019/09/25 2978 0 26 | | 2019/09/26 1324 2 40 | | 2019/09/27 960 0 34 | | 2019/09/28 226 0 6 | | 2019/09/29 918 0 34 | | 2019/09/30 796 0 6 | | 2019/10/01 1795 0 42 | | 2019/10/02 776 0 8 | | 2019/10/03 1066 2 6 | | 2019/10/04 896 0 24 | | 2019/10/05 98 0 6 | +---------------------------------------------+ | AVERAGE 1367.9375 0.5 26.75 | +---------------------------------------------+ *PK é Primary Key com data invertida para naturalmente organizar os registros e auxiliar na consolidação dos dados. O valor das teclas pressionadas foram inseridas analiticamente no DB NoSQL MongoDB v3.6 com a seguinte modelagem de dados: > db.keylogger_co.find().pretty().sort({date:-1}) { "_id" : ObjectId("5d8cbd8fdfdd918ad3074e1e"), "date" : "2019/09/26-10:30:55:991315", "keypressed" : "Key.enter" }
  • 7. Conclusão: Todos nós possuímos criatividade na solução de problemas, todavia, a maior importância está em reconhecer essa característica psicológica e “alimentá- la” com estudo formal e experimentação empírica. Produzir novos produtos e soluções, assim como foi demonstrado neste documento, independentemente do tamanho e da complexidade do problema. O processo criativo possui uma anatomia e é compartilhado por dois grandes autores: Daniel Goleman em “O Espírito Criativo” e John Howkins em “Economia Criativa”. Consulte o link abaixo para mais informações a respeito da anatomia do processo criativo. Fontes: https://www.github.com/valoreio/keylogger https://www.slideshare.net/MarcosAurelioBarranc/ criatividade-e-inovacao Gostou? Dê um like! Fique a vontade em compartilhar e usar no seu estudo de caso. Apenas informe a fonte. Obrigado e sucesso! Ahhh eu tenho uma lista de desejo na Amazon:
  • 8. I have a wishlist at Amazon https://www.amazon.com.br/hz/wishlist/ls/ 2Y2J3ADYO50TH Could you do me a kindness? :-) Marcos Aurelio Barranco SP/SP 14/Setembro/2019 Atualizado em: 29/Outubro/2019