Faaaaaaala galera!!
Depois de muito tempo sem postar nada, estou eu aqui mais uma vez e, dessa vez, com uma vídeo aula diferente. Não estou consertando nada, mas sim, mostrando como construir algo, dentro do Oracle.
Vamos construir um gerador de QRCODE!!!! Legal né?
E isso nem é o mais legal dessa história. O mais legal não é o resultado final, que é o nosso gerador de QRCODE, mas sim os caminhos para chegarmos até lá.
Por que digo isso? Por que vamos aprender um bom bocado com isso. Para gerar um simples gerador de QRCODE dentro do Oracle, utilizamos muitos recursos nem tão comuns, e nem tão utilizados por desenvolvedores Oracle em geral.
Estou falando de carregar Java para dentro do Banco de dados Oracle. E não só isso. Estou falando também em criar classes diretamente dentro de um banco de dados Oracle. E depois chamar essas classes através do nosso velho amigo, PL/SQL.
Parece divertido, não é mesmo?
Pois é, pesquisei muito na internet em busca de informações claras sobre como utilizar o loadjava, um utilitário (shell) da oracle que faz a carga de classes java (jar) para o banco de dados. Muito difícil de achar algo realmente compreensível. Quanto ao java compilado é mais fácil, mas mesmo assim, tem muitos detalhes difíceis de entender.
Pena que não tive tempo de escrever todo o código junto com vocês, ou o vídeo viraria uma novela com vários e intermináveis capítulos (exagerado hein), mas mesmo assim, mostro exatamente como pode ser desenvolvido tudinho.
Vou deixar também um exemplo de como utilizar esse gerador de QRCode com Oracle Reports, não sei se muita gente ainda usa, mas vale o exemplo.
Então vamos lá, prepara a pipoca pois o vídeo é meio longo, e chato, mas vale muito a pena!!
Se curtiu, achou útil, gostou, achou interessante, mais ou menos, não achou nada, ou sei lá o que você achou, ficarei feliz se você clicar em compartilhar e também clicar em curtir. 😀
Vamos ao vídeo:
Os códigos que utilizei eu posso enviar por e-mail para quem quiser, para isso, basta compartilhar esse post e colocar seu comentário aí em baixo pedindo os fontes, mas claro informando seu e-mail também.Para facilitar, resolvi colocar os fontes no github. Assim fica mais fácil para galera que deseja utilizar e entender o projeto bem como, caso alguém queira colaborar com alguma melhoria seria muito legal!
Link do projeto no github: https://github.com/genilto/qr-code-oracle
Grande abraço galera!
Espero muito poder ter ajudado vocês!
Genilto boa noite
Você pode me enviar o link pra downlod
Muito obrigado e parabéns pelo vídeo
Olá Vitor!
Enviei no seu e-mail!
Muito obrigado!
Olá Boa noite! Gostaria do envio dos seus fontes. Preciso exatamente da sua solução!
Olá Maurício.
Espero que ajude.
Enviei no seu e-mail!
Abraço
Olá, muito bom o artigo. Poderia me enviar por email os fontes? Obrigado
Olá Felipe.
Enviei no seu e-mail.
Abraço
Genilto, eu ainda não recebi, você poderia tentar enviar no outro email: [email protected]
Obrigado novamente!
Genilto,
parabéns pelo vídeo !!! Sensacional !!! Poderia me enviar esses arquivos para que eu teste aqui ? Desde já agradeço.
Olá Glauber!
Que bom que gostou.
Enviei o link para seu e-mail!
Abraço!
Boa tarde,
Muito legal o seu post,
Preciso gerar Qrcode no oracle e é exatamente o que eu estava procurando. Poderia enviar os fontes para eu realizar alguns testes?
Aguardo.
Abraço.
Olá Edmilson!
Mandei no seu e-mail.
Abraço!
Muito Obrigado.
Testei aqui e deu certo, era exatamente o que estávamos precisando.
Agora conseguimos imprimir QRcode no reports 6i.
Olá Genilto, estou realizando um trabalho de conclusão de curso de técnico de informática, estou tentando fazer um controle de alunos em Java com Qr, será que seria possível vc enviar o código desse trabalho seu por favor
Desde já agradeço
Enviei no seu e-mail!
Obrigado!
Olá Genilto, bom dia.
Muito bom seu trabalho e sua vídeo aula foi sensacional. A utilização de QRCode no Oracle veio caiu como uma luva para um trabalho que estou realizando.
Portanto, gostaria se possível, receber os fontes e/ou o pacote JAR utilizado na vídeo aula.
Desde já lhe agradeço e mais uma vez, parabéns pelo trabalho.
Att.
Márcio Costa
Olá Marcio!
Te enviei o arquivo por e-mail.
Muito Obrigado!
Olá Genilto, bom dia.
Muito bom seu trabalho e sua vídeo aula foi sensacional. A utilização de QRCode no Oracle veio caiu como uma luva para um trabalho que estou realizando.
Portanto, gostaria se possível, receber os fontes e/ou o pacote JAR utilizado na vídeo aula.
Desde já lhe agradeço e mais uma vez, parabéns pelo trabalho.
Att.
Márcio Costa
Olá Marcio!
Te enviei o arquivo por e-mail.
Muito Obrigado!
Oi, o video de como fazer o codigo QR é muito legal. Tenho um problema no momento de fazer o loadjava, não reconhece, aparece uma mensagem dizendo:
“ORA-00942: table or view does not exist”
mas eu vi que você não teve problema com isso, e com o que eu tenho problema é com esta mensagem:
Error while granting execute on META-INF/MANIFEST.MF to APPS
ORA-01749: you may not GRANT/REVOKE privileges to/from yourself”
que repete-se varias vezes
Que tipo de usario você utiliza pra executar? O so o sqlplus??
muito obrigado
Olá Miguel.
O erro “ORA-00942: table or view does not exist” pode acontecer caso você não crie a tabela tbl_qrcode_image. Você chegou a criá-la?
Referente aos outros erros, em que momento eles acontecem? Imagino que seja no momento que você executa o loadjava, certo?
Se analisarmos o comando, ele possui o grant para o usuário APPS, veja abaixo:
loadjava -verbose -synonym -resolve -user user/pass@base -grant APPS -fileout log.txt com.genilto.qrcode.jar
Eu utilizo o usuário APPS para fazer todos os procedimentos mostrados no vídeo.
Grande abraço!
El error de que la tabla no existe, vi que te salió tambien a ti, la tabla tbl_qrcode_image si la tengo creada y bajo el esquema APPS.
Los demás errores me aparecen en el archivo LOG, despues que termina de hacer el loadjava, pero no es solo con el MANIFEST (que es el error que pongo) sino tambien con mas archivos, unos ejemplos mas:
synonym : com/google/zxing/qrcode/decoder/Version$ECB
granting : execute on class com/google/zxing/qrcode/decoder/Version$ECBlocks to APPS
Error while granting execute on com/google/zxing/qrcode/decoder/Version$ECBlocks to APPS
ORA-01749: you may not GRANT/REVOKE privileges to/from yourself
synonym : com/google/zxing/qrcode/decoder/Version$ECBlocks
granting : execute on class com/google/zxing/qrcode/decoder/Version to APPS
Error while granting execute on com/google/zxing/qrcode/decoder/Version to APPS
ORA-01749: you may not GRANT/REVOKE privileges to/from yourself
synonym : com/google/zxing/qrcode/decoder/Version
granting : execute on class com/google/zxing/qrcode/detector/AlignmentPattern to APPS
Error while granting execute on com/google/zxing/qrcode/detector/AlignmentPattern to APPS
ORA-01749: you may not GRANT/REVOKE privileges to/from yourself
synonym : com/google/zxing/qrcode/detector/AlignmentPattern
granting : execute on class com/google/zxing/qrcode/detector/AlignmentPatternFinder to APPS
Error while granting execute on com/google/zxing/qrcode/detector/AlignmentPatternFinder to APPS
ORA-01749: you may not GRANT/REVOKE privileges to/from yourself
synonym : com/google/zxing/qrcode/detector/AlignmentPatternFinder
granting : execute on class com/google/zxing/qrcode/detector/Detector to APPS
Error while granting execute on com/google/zxing/qrcode/detector/Detector to APPS
ORA-01749: you may not GRANT/REVOKE privileges to/from yourself
son muchos mas los que aparecen.
Te preguntaba lo del usuario, si estabas solamente conectado a nivel sistema operativo (SO) y con qué tipo de usuario, si con un SYS, SYSADMIN.. con applmgr (no se si lo manejes), o si tenías alguna sesión de sqlPlus iniciada o si ya habias iniciado la conexion con el APPS y dentro de sí ejecutaste el comando.
Muchas gracias, tuve ayuda de una amiga para poner el primero comentario, comprendo lo que me escribes sin embargo no no sé como escribirte yo, puedo intentarlo en ingles sino te importa o seguir con español.
Olá.
Sem problema, se você escrever em espanhol eu entendo bem. Mas vou escrever em português, se não tiver problemas. 😀
A tabela pode ser criada sim abaixo do APPS, funcionou agora para você?
Esses erros de grant, eu imagino que acontecem pois foi o próprio APPS quem criou e ele está tentando dar o grant para ele mesmo. Em teoria não precisa. Talvez se você tirar o grant do comando, os erros não aconteçam mais, conforme abaixo:
loadjava -verbose -synonym -resolve -user user/pass@base -fileout log.txt com.genilto.qrcode.jar
Para conectar no Putty (SSH) eu uso um usuário próprio mesmo, não sei te dizer quais as permissões que ele tem.
Mas para conectar no banco de dados eu uso o APPS mesmo.
Para os testes com banco de dados, para rodar os programas que foram criados, eu uso o PL/SQL developer, como está no vídeo.
Não uso o SQLPLUS em nenhum momento.
Abraço
Sin problema, puedes seguir en portugués. 🙂
Ya quité los grants hacia APPS, lo intenté y cargó el java sin error.
ahora tengo problema con otro asunto ¬_¬” ejecuto el bloque anónimo desde Toad, y me arroja:
Error: ORA-29515: se ha llamado a una rutina desde el código Java con el estado 2
Creo que algo estoy haciendo mal, pero no alcanzo a identificar qué es.
Mis datos son correctos, sí me inserta en la tabla tbl_qrcode_image, aparece si id, la descripcion pero el BLOB se queda vacío.
creo que algo con el java me está causando problemas, supongo la instancia.
————–
(no habia mandado el mensaje)
probé en otra instancia con mas configuraciones y sin quitar el grant a APPS y ya corrió bien, no me marcó ningun error ni el de la rutina java con estado 2..
(o.O eso está raro)
Muchas gracias por tu ayuda!! 😀
mucho exito.
Me diz uma coisa, qual a versão do Oracle que você está tentando rodar isso?
Eu estou rodando no Oracle 11g.
Teve um caso em que um leitor do blog aqui estava testando no 10g, e não funcionou.
Ele (Elton Granado), descobriu que o java usa umas fontes TTF, e como o servidor é linux, ele deu falta dessas fontes na hora de gerar o QRCode.
Quando o Oracle 11g é instalado, ele já coloca na pasta de font algumas fontes a mais, e ai funciona, mas no 10g não tem essas fontes.
Veja ai qual a versão do Oracle que você está usando.
Hola, sin problemas, de hecho creo que hubiera comenzado por ahí desde un principio, la versión en donde pude instalar todo fue RDBMS: 11.2.0.3 y Oracle Applications 12.1.3 y la versión en la que falló fue RDBMS: 10.2.0.3 y Oracle Applications: 12.0.6, también cabe mencionar que la versión en la que no tuve éxito, tiene ip’s internas, me parece no tiene salida a Internet (creo que pudo haber afectado algo).
Fuera de eso, en la 12.1.3 ya pude generar el codigo y salió todo con exito., no tuve que instalarle fuentes ni archivos TTF 😀
Ah que bom que funcionou!! Fico muito feliz em poder ter ajudado!!
Boa sorte e sucesso aí! Pena que não funciona em todas as versões. 😀
Abraço
Oi, o video de como fazer o codigo QR é muito legal. Tenho um problema no momento de fazer o loadjava, não reconhece, aparece uma mensagem dizendo:
“ORA-00942: table or view does not exist”
mas eu vi que você não teve problema com isso, e com o que eu tenho problema é com esta mensagem:
Error while granting execute on META-INF/MANIFEST.MF to APPS
ORA-01749: you may not GRANT/REVOKE privileges to/from yourself”
que repete-se varias vezes
Que tipo de usario você utiliza pra executar? O so o sqlplus??
muito obrigado
Olá Miguel.
O erro “ORA-00942: table or view does not exist” pode acontecer caso você não crie a tabela tbl_qrcode_image. Você chegou a criá-la?
Referente aos outros erros, em que momento eles acontecem? Imagino que seja no momento que você executa o loadjava, certo?
Se analisarmos o comando, ele possui o grant para o usuário APPS, veja abaixo:
loadjava -verbose -synonym -resolve -user user/pass@base -grant APPS -fileout log.txt com.genilto.qrcode.jar
Eu utilizo o usuário APPS para fazer todos os procedimentos mostrados no vídeo.
Grande abraço!
El error de que la tabla no existe, vi que te salió tambien a ti, la tabla tbl_qrcode_image si la tengo creada y bajo el esquema APPS.
Los demás errores me aparecen en el archivo LOG, despues que termina de hacer el loadjava, pero no es solo con el MANIFEST (que es el error que pongo) sino tambien con mas archivos, unos ejemplos mas:
synonym : com/google/zxing/qrcode/decoder/Version$ECB
granting : execute on class com/google/zxing/qrcode/decoder/Version$ECBlocks to APPS
Error while granting execute on com/google/zxing/qrcode/decoder/Version$ECBlocks to APPS
ORA-01749: you may not GRANT/REVOKE privileges to/from yourself
synonym : com/google/zxing/qrcode/decoder/Version$ECBlocks
granting : execute on class com/google/zxing/qrcode/decoder/Version to APPS
Error while granting execute on com/google/zxing/qrcode/decoder/Version to APPS
ORA-01749: you may not GRANT/REVOKE privileges to/from yourself
synonym : com/google/zxing/qrcode/decoder/Version
granting : execute on class com/google/zxing/qrcode/detector/AlignmentPattern to APPS
Error while granting execute on com/google/zxing/qrcode/detector/AlignmentPattern to APPS
ORA-01749: you may not GRANT/REVOKE privileges to/from yourself
synonym : com/google/zxing/qrcode/detector/AlignmentPattern
granting : execute on class com/google/zxing/qrcode/detector/AlignmentPatternFinder to APPS
Error while granting execute on com/google/zxing/qrcode/detector/AlignmentPatternFinder to APPS
ORA-01749: you may not GRANT/REVOKE privileges to/from yourself
synonym : com/google/zxing/qrcode/detector/AlignmentPatternFinder
granting : execute on class com/google/zxing/qrcode/detector/Detector to APPS
Error while granting execute on com/google/zxing/qrcode/detector/Detector to APPS
ORA-01749: you may not GRANT/REVOKE privileges to/from yourself
son muchos mas los que aparecen.
Te preguntaba lo del usuario, si estabas solamente conectado a nivel sistema operativo (SO) y con qué tipo de usuario, si con un SYS, SYSADMIN.. con applmgr (no se si lo manejes), o si tenías alguna sesión de sqlPlus iniciada o si ya habias iniciado la conexion con el APPS y dentro de sí ejecutaste el comando.
Muchas gracias, tuve ayuda de una amiga para poner el primero comentario, comprendo lo que me escribes sin embargo no no sé como escribirte yo, puedo intentarlo en ingles sino te importa o seguir con español.
Olá.
Sem problema, se você escrever em espanhol eu entendo bem. Mas vou escrever em português, se não tiver problemas. 😀
A tabela pode ser criada sim abaixo do APPS, funcionou agora para você?
Esses erros de grant, eu imagino que acontecem pois foi o próprio APPS quem criou e ele está tentando dar o grant para ele mesmo. Em teoria não precisa. Talvez se você tirar o grant do comando, os erros não aconteçam mais, conforme abaixo:
loadjava -verbose -synonym -resolve -user user/pass@base -fileout log.txt com.genilto.qrcode.jar
Para conectar no Putty (SSH) eu uso um usuário próprio mesmo, não sei te dizer quais as permissões que ele tem.
Mas para conectar no banco de dados eu uso o APPS mesmo.
Para os testes com banco de dados, para rodar os programas que foram criados, eu uso o PL/SQL developer, como está no vídeo.
Não uso o SQLPLUS em nenhum momento.
Abraço
Sin problema, puedes seguir en portugués. 🙂
Ya quité los grants hacia APPS, lo intenté y cargó el java sin error.
ahora tengo problema con otro asunto ¬_¬” ejecuto el bloque anónimo desde Toad, y me arroja:
Error: ORA-29515: se ha llamado a una rutina desde el código Java con el estado 2
Creo que algo estoy haciendo mal, pero no alcanzo a identificar qué es.
Mis datos son correctos, sí me inserta en la tabla tbl_qrcode_image, aparece si id, la descripcion pero el BLOB se queda vacío.
creo que algo con el java me está causando problemas, supongo la instancia.
————–
(no habia mandado el mensaje)
probé en otra instancia con mas configuraciones y sin quitar el grant a APPS y ya corrió bien, no me marcó ningun error ni el de la rutina java con estado 2..
(o.O eso está raro)
Muchas gracias por tu ayuda!! 😀
mucho exito.
Me diz uma coisa, qual a versão do Oracle que você está tentando rodar isso?
Eu estou rodando no Oracle 11g.
Teve um caso em que um leitor do blog aqui estava testando no 10g, e não funcionou.
Ele (Elton Granado), descobriu que o java usa umas fontes TTF, e como o servidor é linux, ele deu falta dessas fontes na hora de gerar o QRCode.
Quando o Oracle 11g é instalado, ele já coloca na pasta de font algumas fontes a mais, e ai funciona, mas no 10g não tem essas fontes.
Veja ai qual a versão do Oracle que você está usando.
Hola, sin problemas, de hecho creo que hubiera comenzado por ahí desde un principio, la versión en donde pude instalar todo fue RDBMS: 11.2.0.3 y Oracle Applications 12.1.3 y la versión en la que falló fue RDBMS: 10.2.0.3 y Oracle Applications: 12.0.6, también cabe mencionar que la versión en la que no tuve éxito, tiene ip’s internas, me parece no tiene salida a Internet (creo que pudo haber afectado algo).
Fuera de eso, en la 12.1.3 ya pude generar el codigo y salió todo con exito., no tuve que instalarle fuentes ni archivos TTF 😀
Ah que bom que funcionou!! Fico muito feliz em poder ter ajudado!!
Boa sorte e sucesso aí! Pena que não funciona em todas as versões. 😀
Abraço
Genilto,
Excelente tutorial. Bem direto no objetivo. Se possível gostaria do código-fonte para realizar alguns testes aqui
Olá Jaime,
Obrigado pelo seu comentário, enviei para seu e-mail.
Abração.
Genilto,
Excelente tutorial. Bem direto no objetivo. Se possível gostaria do código-fonte para realizar alguns testes aqui
Olá Jaime,
Obrigado pelo seu comentário, enviei para seu e-mail.
Abração.
Excelente exemplo. Tem como você enviar os fontes em Java para que eu possa testar na minha solução? Desde já eu ti agradeço.
Olá Cláudio,
Enviado para seu e-mail.
Muito obrigado
Excelente exemplo. Tem como você enviar os fontes em Java para que eu possa testar na minha solução? Desde já eu ti agradeço.
Olá Cláudio,
Enviado para seu e-mail.
Muito obrigado
manda para mim o código…valeu
Olá Everton,
Enviei para seu e-mail. Abraço
manda para mim o código…valeu
Olá Everton,
Enviei para seu e-mail. Abraço
Tudo bem Genilto?
Gostei do artigo. Muito bom!
Realmente não encontramos citações detalhadas sobre o assunto.
Se possível favor me enviar os código para que eu possa testar.
Obrigado e um grande abraço.
Olá Reinaldo, enviei para seu e-mail.
Obrigado
Tudo bem Genilto?
Gostei do artigo. Muito bom!
Realmente não encontramos citações detalhadas sobre o assunto.
Se possível favor me enviar os código para que eu possa testar.
Obrigado e um grande abraço.
Olá Reinaldo, enviei para seu e-mail.
Obrigado
Olá Genilto, primeiramente parabéns pelo post. Realmente a muito pouco material sobre isso na internet. Eu estou com um problema com meu GENERATE_QRCODE, ele está dando um erro,
Note: Recompile with -Xlint:deprecation for details. Você tem ideia do que pode ser isso?
Desde já agradeço sua atenção.
Olá João!
Desculpa pela demora, vi seu comentário só agora.
Fiz o teste novamente aqui.
01 – Carreguei o arquivo com.genilto.qrcode.jar com o loadjava. – OK
02 – Criei a tabela 02.tabela_TB L_QRCODE_IMAGE.sql – OK
03 – Compilei o 03.java_source_GENERATE_QRCODE.jsp – OK
04 – Compilei a package 04.package_QRCODE_K.pck – OK
Tudo certo aqui.
Pelo erro que você me passou pode ser alguma diferença de versão do java. Faça o seguinte, vamos descobrir qual a versão do java que você está rodando dentro do banco, para isso:
Crie uma função que retorna AS propriedades do JAVA do banco de dados.
——————
CREATE OR REPLACE FUNCTION get_java_property(prop IN VARCHAR2)
RETURN VARCHAR2 IS
LANGUAGE JAVA name ‘java.lang.System.getProperty(java.lang.String) return java.lang.String’;
——————
Depois rode o seguinte comando para obter a versão do JAVA:
——————
SELECT get_java_property(‘java.version’) FROM dual;
——————
No meu caso ele retornou: 1.5.0_10
Logo, estou usando a versão 1.5 do Java.
Faz aí e veja qual a versão. Se for diferente, o que eu estou achando que é, dá uma conferida no código da rotina 03.java_source_GENERATE_QRCODE.jsp e veja se tem alguma função que é utilizada lá, que está Deprecada na sua versão. Talvez seja isso.
Qualquer coisa fala aí
Abraço
Olá Genilto, primeiramente parabéns pelo post. Realmente a muito pouco material sobre isso na internet. Eu estou com um problema com meu GENERATE_QRCODE, ele está dando um erro,
Note: Recompile with -Xlint:deprecation for details. Você tem ideia do que pode ser isso?
Desde já agradeço sua atenção.
Olá João!
Desculpa pela demora, vi seu comentário só agora.
Fiz o teste novamente aqui.
01 – Carreguei o arquivo com.genilto.qrcode.jar com o loadjava. – OK
02 – Criei a tabela 02.tabela_TB L_QRCODE_IMAGE.sql – OK
03 – Compilei o 03.java_source_GENERATE_QRCODE.jsp – OK
04 – Compilei a package 04.package_QRCODE_K.pck – OK
Tudo certo aqui.
Pelo erro que você me passou pode ser alguma diferença de versão do java. Faça o seguinte, vamos descobrir qual a versão do java que você está rodando dentro do banco, para isso:
Crie uma função que retorna AS propriedades do JAVA do banco de dados.
——————
CREATE OR REPLACE FUNCTION get_java_property(prop IN VARCHAR2)
RETURN VARCHAR2 IS
LANGUAGE JAVA name ‘java.lang.System.getProperty(java.lang.String) return java.lang.String’;
——————
Depois rode o seguinte comando para obter a versão do JAVA:
——————
SELECT get_java_property(‘java.version’) FROM dual;
——————
No meu caso ele retornou: 1.5.0_10
Logo, estou usando a versão 1.5 do Java.
Faz aí e veja qual a versão. Se for diferente, o que eu estou achando que é, dá uma conferida no código da rotina 03.java_source_GENERATE_QRCODE.jsp e veja se tem alguma função que é utilizada lá, que está Deprecada na sua versão. Talvez seja isso.
Qualquer coisa fala aí
Abraço
Muito interessante seu post amigo, é exatamente o que eu estava procurando para geração de QRCode. Poderia compartilhar os fontes para eu realizar alguns testes? Fico no aguardo. Grande abraço.
Olá, obrigado.
Mandei o link para download direto no seu e-mail.
Grande abraço.
Muito interessante seu post amigo, é exatamente o que eu estava procurando para geração de QRCode. Poderia compartilhar os fontes para eu realizar alguns testes? Fico no aguardo. Grande abraço.
Olá, obrigado.
Mandei o link para download direto no seu e-mail.
Grande abraço.
Obrigado Denilson, que bom que gostou, espero que seja útil.
Grande Abraço
Obrigado Denilson, que bom que gostou, espero que seja útil.
Grande Abraço
Grande Genilto!
Pronto para trabalhar com Java e Oracle agora? Isso é ótimo!
Parabéns pela matéria, bem interessante!
Abraços
Denilson
Grande Genilto!
Pronto para trabalhar com Java e Oracle agora? Isso é ótimo!
Parabéns pela matéria, bem interessante!
Abraços
Denilson